all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe7f:51e9
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 21d33835-6028-40fa-ade6-7d5f21b3b1fc
        host_id: 82101243836454d7401d5893feae9e2c5df7cc291646d8a99b33b53b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe7f:51e9
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.59
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.235
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe7f:51e9
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job ansible-lint explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#7>'
      - '<Job ansible-lint explicit: None implied: None source: osism/container-image-kolla-ansible/.zuul.yaml@main#138>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: a8bb53ce6c0e46f79b516cbdecd6ed3c
      build_refs:
      - branch: main
        change: '794'
        change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)
          | stage | minor | `0.7.20` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
          (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
          Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
          the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
          for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc`
          target for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
          Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
          Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
          Bug fixes\n\n- Reject already-installed wheels built with outdated settings
          ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
          Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
          Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
          Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
          Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
          Fix reference documentation recommendation to use `uv cache clean` instead
          of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
          [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
          Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
          Enhancements\n\n- Allow Python requests with missing segments, e.g., just
          `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
          Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
          [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
          Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
          Bug fixes\n\n- Include build settings in cache key for registry source distribution
          lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
          Avoid creating bin links on `uv python upgrade` if they don't already exist
          ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
          Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
          Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
          [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
          Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
          [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
          Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
          shared objects, which fixes matplotlib's `tkagg` backend (the default on
          Linux), Pillow's `PIL.ImageTk` library, and other extension modules that
          need to use libtcl/libtk directly.\n- Tix is no longer provided on Linux.
          This is a deprecated Tk extension that appears to have been previously broken.\n\nSee
          the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
          for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
          `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
          Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
          Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
          Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
          Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
          Preview features\n\n- Add support for `package`-level conflicts in workspaces
          ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
          Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
          `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
          Bug fixes\n\n- Fix regression where `--require-hashes` applied to build
          dependencies in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
          Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
          Include all site packages directories in ephemeral environment overlays
          ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
          Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
          Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
          docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
          [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
          release contains hardening measures to address differentials in behavior
          between uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
          to this release, attackers could construct ZIP files that would be extracted
          differently by pip, uv, and other tools. As a result, ZIPs could be constructed
          that would be considered harmless by (e.g.) scanners, but contain a malicious
          payload when extracted by uv. As of v0.8.6, uv now applies additional checks
          to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
          Response Team](https://devguide.python.org/developer-workflow/psrt/) and
          PyPI maintainers, we were able to determine that these differentials **were
          not exploited** via PyPI during the time they were present. The PyPI team
          has also implemented similar checks and now guards against these parsing
          differentials on upload.\n\nAlthough the practical risk of exploitation
          is low, we take the *hypothetical* risk of parser differentials very seriously.
          Out of an abundance of caution, we have assigned this advisory a CVE identifier
          and have given it a \"moderate\" severity suggestion.\n\nThese changes have
          been validated against the top 15,000 PyPI packages; however, it's plausible
          that a non-malicious ZIP could be falsely rejected with this additional
          hardening. As an escape hatch, users who do encounter breaking changes can
          enable `UV_INSECURE_NO_ZIP_VALIDATION` to restore the previous behavior.
          If you encounter such a rejection, please file an issue in uv and to the
          upstream package.\n\nFor additional information, please refer to the following
          blog posts:\n\n- [Astral: uv security advisory: ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
          [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
          Security\n\n- Harden ZIP streaming to reject repeated entries and other
          malformed ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
          Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
          per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
          Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
          Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
          Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
          Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
          Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
          Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
          Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n###
          [`v0.8.5`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#085)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.4...0.8.5)\n\n#####
          Enhancements\n\n- Enable `uv run` with a GitHub Gist ([#&#8203;15058](https://redirect.github.com/astral-sh/uv/pull/15058))\n-
          Improve HTTP response caching log messages ([#&#8203;15067](https://redirect.github.com/astral-sh/uv/pull/15067))\n-
          Show wheel tag hints in install plan ([#&#8203;15066](https://redirect.github.com/astral-sh/uv/pull/15066))\n-
          Support installing additional executables in `uv tool install` ([#&#8203;14014](https://redirect.github.com/astral-sh/uv/pull/14014))\n\n#####
          Preview features\n\n- Enable extra build dependencies to 'match runtime'
          versions ([#&#8203;15036](https://redirect.github.com/astral-sh/uv/pull/15036))\n-
          Remove duplicate `extra-build-dependencies` warnings for `uv pip` ([#&#8203;15088](https://redirect.github.com/astral-sh/uv/pull/15088))\n-
          Use \"option\" instead of \"setting\" in `pylock` warning ([#&#8203;15089](https://redirect.github.com/astral-sh/uv/pull/15089))\n-
          Respect extra build requires when reading from wheel cache ([#&#8203;15030](https://redirect.github.com/astral-sh/uv/pull/15030))\n-
          Preserve lowered extra build dependencies ([#&#8203;15038](https://redirect.github.com/astral-sh/uv/pull/15038))\n\n#####
          Bug fixes\n\n- Add Python versions to markers implied from wheels ([#&#8203;14913](https://redirect.github.com/astral-sh/uv/pull/14913))\n-
          Ensure consistent indentation when adding dependencies ([#&#8203;14991](https://redirect.github.com/astral-sh/uv/pull/14991))\n-
          Fix handling of `python-preference = system` when managed interpreters are
          on the PATH ([#&#8203;15059](https://redirect.github.com/astral-sh/uv/pull/15059))\n-
          Fix symlink preservation in virtual environment creation ([#&#8203;14933](https://redirect.github.com/astral-sh/uv/pull/14933))\n-
          Gracefully handle entrypoint permission errors ([#&#8203;15026](https://redirect.github.com/astral-sh/uv/pull/15026))\n-
          Include wheel hashes from local Simple indexes ([#&#8203;14993](https://redirect.github.com/astral-sh/uv/pull/14993))\n-
          Prefer system Python installations over managed ones when `--system` is
          used ([#&#8203;15061](https://redirect.github.com/astral-sh/uv/pull/15061))\n-
          Remove retry wrapper when matching on error kind ([#&#8203;14996](https://redirect.github.com/astral-sh/uv/pull/14996))\n-
          Revert `h2` upgrade ([#&#8203;15079](https://redirect.github.com/astral-sh/uv/pull/15079))\n\n#####
          Documentation\n\n- Improve visibility of copy and line separator in dark
          mode ([#&#8203;14987](https://redirect.github.com/astral-sh/uv/pull/14987))\n\n###
          [`v0.8.4`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#084)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.3...0.8.4)\n\n#####
          Enhancements\n\n- Improve styling of warning cause chains  ([#&#8203;14934](https://redirect.github.com/astral-sh/uv/pull/14934))\n-
          Extend wheel filtering to Android tags ([#&#8203;14977](https://redirect.github.com/astral-sh/uv/pull/14977))\n-
          Perform wheel lockfile filtering based on platform and OS intersection ([#&#8203;14976](https://redirect.github.com/astral-sh/uv/pull/14976))\n-
          Clarify messaging when a new resolution needs to be performed ([#&#8203;14938](https://redirect.github.com/astral-sh/uv/pull/14938))\n\n#####
          Preview features\n\n- Add support for extending package's build dependencies
          with `extra-build-dependencies` ([#&#8203;14735](https://redirect.github.com/astral-sh/uv/pull/14735))\n-
          Split preview mode into separate feature flags ([#&#8203;14823](https://redirect.github.com/astral-sh/uv/pull/14823))\n\n#####
          Configuration\n\n- Add support for package specific `exclude-newer` dates
          via `exclude-newer-package` ([#&#8203;14489](https://redirect.github.com/astral-sh/uv/pull/14489))\n\n#####
          Bug fixes\n\n- Avoid invalidating lockfile when path or workspace dependencies
          define explicit indexes ([#&#8203;14876](https://redirect.github.com/astral-sh/uv/pull/14876))\n-
          Copy entrypoints that have a shebang that differs in `python` vs `python3`
          ([#&#8203;14970](https://redirect.github.com/astral-sh/uv/pull/14970))\n-
          Fix incorrect file permissions in wheel packages ([#&#8203;14930](https://redirect.github.com/astral-sh/uv/pull/14930))\n-
          Update validation for `environments` and `required-environments` in `uv.toml`
          ([#&#8203;14905](https://redirect.github.com/astral-sh/uv/pull/14905))\n\n#####
          Documentation\n\n- Show `uv_build` in projects documentation ([#&#8203;14968](https://redirect.github.com/astral-sh/uv/pull/14968))\n-
          Add `UV_` prefix to installer environment variables ([#&#8203;14964](https://redirect.github.com/astral-sh/uv/pull/14964))\n-
          Un-hide `uv` from `--build-backend` options ([#&#8203;14939](https://redirect.github.com/astral-sh/uv/pull/14939))\n-
          Update documentation for preview flags ([#&#8203;14902](https://redirect.github.com/astral-sh/uv/pull/14902))\n\n###
          [`v0.8.3`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#083)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.2...0.8.3)\n\n#####
          Python\n\n- Add CPython 3.14.0rc1\n\nSee the [`python-build-standalone`
          release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250723)
          for more details.\n\n##### Enhancements\n\n- Allow non-standard entrypoint
          names in `uv_build` ([#&#8203;14867](https://redirect.github.com/astral-sh/uv/pull/14867))\n-
          Publish riscv64 wheels to PyPI ([#&#8203;14852](https://redirect.github.com/astral-sh/uv/pull/14852))\n\n#####
          Bug fixes\n\n- Avoid writing redacted credentials to tool receipt ([#&#8203;14855](https://redirect.github.com/astral-sh/uv/pull/14855))\n-
          Respect `--with` versions over base environment versions ([#&#8203;14863](https://redirect.github.com/astral-sh/uv/pull/14863))\n-
          Respect credentials from all defined indexes ([#&#8203;14858](https://redirect.github.com/astral-sh/uv/pull/14858))\n-
          Fix missed stabilization of removal of registry entry during Python uninstall
          ([#&#8203;14859](https://redirect.github.com/astral-sh/uv/pull/14859))\n-
          Improve concurrency safety of Python downloads into cache ([#&#8203;14846](https://redirect.github.com/astral-sh/uv/pull/14846))\n\n#####
          Documentation\n\n- Fix typos in `uv_build` reference documentation ([#&#8203;14853](https://redirect.github.com/astral-sh/uv/pull/14853))\n-
          Move the \"Cargo\" install method further down in docs ([#&#8203;14842](https://redirect.github.com/astral-sh/uv/pull/14842))\n\n###
          [`v0.8.2`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#082)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.1...0.8.2)\n\n#####
          Enhancements\n\n- Add derivation chains for dependency errors ([#&#8203;14824](https://redirect.github.com/astral-sh/uv/pull/14824))\n\n#####
          Configuration\n\n- Add `UV_INIT_BUILD_BACKEND` ([#&#8203;14821](https://redirect.github.com/astral-sh/uv/pull/14821))\n\n#####
          Bug fixes\n\n- Avoid reading files in the environment bin that are not entrypoints
          ([#&#8203;14830](https://redirect.github.com/astral-sh/uv/pull/14830))\n-
          Avoid removing empty directories when constructing virtual environments
          ([#&#8203;14822](https://redirect.github.com/astral-sh/uv/pull/14822))\n-
          Preserve index URL priority order when writing to pyproject.toml ([#&#8203;14831](https://redirect.github.com/astral-sh/uv/pull/14831))\n\n#####
          Rust API\n\n- Expose `tls_built_in_root_certs` for client ([#&#8203;14816](https://redirect.github.com/astral-sh/uv/pull/14816))\n\n#####
          Documentation\n\n- Archive the 0.7.x changelog ([#&#8203;14819](https://redirect.github.com/astral-sh/uv/pull/14819))\n\n###
          [`v0.8.1`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.0...0.8.1)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.0`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#080)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.22...0.8.0)\n\nSince
          we released uv [0.7.0](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.0)
          in April, we've accumulated various changes that improve correctness and
          user experience, but could break some workflows. This release contains those
          changes; many have been marked as breaking out of an abundance of caution.
          We expect most users to be able to upgrade without making changes.\n\nThis
          release also includes the stabilization of a couple `uv python install`
          features, which have been available under preview since late last year.\n\n#####
          Breaking changes\n\n- **Install Python executables into a directory on the
          `PATH` ([#&#8203;14626](https://redirect.github.com/astral-sh/uv/pull/14626))**\n\n
          \ `uv python install` now installs a versioned Python executable (e.g.,
          `python3.13`) into a directory on the `PATH` (e.g., `~/.local/bin`) by default.
          This behavior has been available under the `--preview` flag since [Oct 2024](https://redirect.github.com/astral-sh/uv/pull/8458).
          This change should not be breaking unless it shadows a Python executable
          elsewhere on the `PATH`.\n\n  To install unversioned executables, i.e.,
          `python3` and `python`, use the `--default` flag. The `--default` flag has
          also been in preview, but is not stabilized in this release.\n\n  Note that
          these executables point to the base Python installation and only include
          the standard library. That means they will not include dependencies from
          your current project (use `uv run python` instead) and you cannot install
          packages into their environment (use `uvx --with <package> python` instead).\n\n
          \ As with tool installation, the target directory respects common variables
          like `XDG_BIN_HOME` and can be overridden with a `UV_PYTHON_BIN_DIR` variable.\n\n
          \ You can opt out of this behavior with `uv python install --no-bin` or
          `UV_PYTHON_INSTALL_BIN=0`.\n\n  See the [documentation on installing Python
          executables](https://docs.astral.sh/uv/concepts/python-versions/#installing-python-executables)
          for more details.\n- **Register Python versions with the Windows Registry
          ([#&#8203;14625](https://redirect.github.com/astral-sh/uv/pull/14625))**\n\n
          \ `uv python install` now registers the installed Python version with the
          Windows Registry as specified by [PEP 514](https://peps.python.org/pep-0514/).
          This allows using uv installed Python versions via the `py` launcher. This
          behavior has been available under the `--preview` flag since [Jan 2025](https://redirect.github.com/astral-sh/uv/pull/10634).
          This change should not be breaking, as using the uv Python versions with
          `py` requires explicit opt in.\n\n  You can opt out of this behavior with
          `uv python install --no-registry` or `UV_PYTHON_INSTALL_REGISTRY=0`.\n-
          **Prompt before removing an existing directory in `uv venv` ([#&#8203;14309](https://redirect.github.com/astral-sh/uv/pull/14309))**\n\n
          \ Previously, `uv venv` would remove an existing virtual environment without
          confirmation. While this is consistent with the behavior of project commands
          (e.g., `uv sync`), it's surprising to users that are using imperative workflows
          (i.e., `uv pip`). Now, `uv venv` will prompt for confirmation before removing
          an existing virtual environment. **If not in an interactive context, uv
          will still remove the virtual environment for backwards compatibility. However,
          this behavior is likely to change in a future release.**\n\n  The behavior
          for other commands (e.g., `uv sync`) is unchanged.\n\n  You can opt out
          of this behavior by setting `UV_VENV_CLEAR=1` or passing the `--clear` flag.\n-
          **Validate that discovered interpreters meet the Python preference ([#&#8203;7934](https://redirect.github.com/astral-sh/uv/pull/7934))**\n\n
          \ uv allows opting out of its managed Python versions with the `--no-managed-python`
          and `python-preference` options.\n\n  Previously, uv would not enforce this
          option for Python interpreters discovered on the `PATH`. For example, if
          a symlink to a managed Python interpreter was created, uv would allow it
          to be used even if `--no-managed-python` was provided. Now, uv ignores Python
          interpreters that do not match the Python preference *unless* they are in
          an active virtual environment or are explicitly requested, e.g., with `--python
          /path/to/python3.13`.\n\n  Similarly, uv would previously not invalidate
          existing project environments if they did not match the Python preference.
          Now, uv will invalidate and recreate project environments when the Python
          preference changes.\n\n  You can opt out of this behavior by providing the
          explicit path to the Python interpreter providing `--managed-python` / `--no-managed-python`
          matching the interpreter you want.\n- **Install dependencies without build
          systems when they are `path` sources ([#&#8203;14413](https://redirect.github.com/astral-sh/uv/pull/14413))**\n\n
          \ When working on a project, uv uses the [presence of a build system](https://docs.astral.sh/uv/concepts/projects/config/#build-systems)
          to determine if it should be built and installed into the environment. However,
          when a project is a dependency of another project, it can be surprising
          for the dependency to be missing from the environment.\n\n  Previously,
          uv would not build and install dependencies with [`path` sources](https://docs.astral.sh/uv/concepts/projects/dependencies/#path)
          unless they declared a build system or set `tool.uv.package = true`. Now,
          dependencies with `path` sources are built and installed regardless of the
          presence of a build system. If a build system is not present, the `setuptools.build_meta:__legacy__
          ` backend will be used (per [PEP 517](https://peps.python.org/pep-0517/#source-trees)).\n\n
          \ You can opt out of this behavior by setting `package = false` in the source
          declaration, e.g.:\n\n  ```toml\n  [tool.uv.sources]\n  foo = { path = \"./foo\",
          package = false }\n  ```\n\n  Or, by setting `tool.uv.package = false` in
          the dependent `pyproject.toml`.\n\n  See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
          for details.\n- **Install dependencies without build systems when they are
          workspace members ([#&#8203;14663](https://redirect.github.com/astral-sh/uv/pull/14663))**\n\n
          \ As described above for dependencies with `path` sources, uv previously
          would not build and install workspace members that did not declare a build
          system. Now, uv will build and install workspace members that are a dependency
          of *another* workspace member regardless of the presence of a build system.
          The behavior is unchanged for workspace members that are not included in
          the `project.dependencies`, `project.optional-dependencies`, or `dependency-groups`
          tables of another workspace member.\n\n  You can opt out of this behavior
          by setting `tool.uv.package = false` in the workspace member's `pyproject.toml`.\n\n
          \ See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
          for details.\n- **Bump `--python-platform linux` to `manylinux_2_28` ([#&#8203;14300](https://redirect.github.com/astral-sh/uv/pull/14300))**\n\n
          \ uv allows performing [platform-specific resolution](https://docs.astral.sh/uv/concepts/resolution/#platform-specific-resolution)
          for explicit targets and provides short aliases, e.g., `linux`, for common
          targets.\n\n  Previously, the default target for `--python-platform linux`
          was `manylinux_2_17`, which is compatible with most Linux distributions
          from 2014 or newer. We now default to `manylinux_2_28`, which is compatible
          with most Linux distributions from 2019 or newer.  This change follows the
          lead of other tools, such as `cibuildwheel`, which changed their default
          to `manylinux_2_28` in [Mar 2025](https://redirect.github.com/pypa/cibuildwheel/pull/2330).\n\n
          \ This change only affects users requesting a specific target platform.
          Otherwise, uv detects the `manylinux` target from your local glibc version.\n\n
          \ You can opt out of this behavior by using `--python-platform x86_64-manylinux_2_17`
          instead.\n- **Remove `uv version` fallback ([#&#8203;14161](https://redirect.github.com/astral-sh/uv/pull/14161))**\n\n
          \ In [Apr 2025](https://redirect.github.com/astral-sh/uv/pull/12349), uv
          changed the `uv version` command to an interface for viewing and updating
          the version of the current project. However, when outside a project, `uv
          version` would continue to display uv's version for backwards compatibility.
          Now, when used outside of a project, `uv version` will fail.\n\n  You cannot
          opt out of this behavior. Use `uv self version` instead.\n- **Require `--global`
          for removal of the global Python pin ([#&#8203;14169](https://redirect.github.com/astral-sh/uv/pull/14169))**\n\n
          \ Previously, `uv python pin --rm` would allow you to remove the global
          Python pin without opt in. Now, uv requires the `--global` flag to remove
          the global Python pin.\n\n  You cannot opt out of this behavior. Use the
          `--global` flag instead.\n- **Support conflicting editable settings across
          groups ([#&#8203;14197](https://redirect.github.com/astral-sh/uv/pull/14197))**\n\n
          \ Previously, uv would always treat a package as editable if any requirement
          requested it as editable. However, this prevented users from declaring `path`
          sources that toggled the `editable` setting across dependency groups. Now,
          uv allows declaring different `editable` values for conflicting groups.
          However, if a project includes a path dependency twice, once with `editable
          = true` and once without any editable annotation, those are now considered
          conflicting, and uv will exit with an error.\n\n  You cannot opt out of
          this behavior. Use consistent `editable` settings or [mark groups as conflicting](https://docs.astral.sh/uv/concepts/projects/config/#conflicting-dependencies).\n-
          **Make `uv_build` the default build backend in `uv init` ([#&#8203;14661](https://redirect.github.com/astral-sh/uv/pull/14661))**\n\n
          \ The uv build backend (`uv_build`) was [stabilized in uv 0.7.19](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.19).
          Now, it is the default build backend for `uv init --package` and `uv init
          --lib`. Previously, `hatchling` was the default build backend. A build backend
          is still not used without opt-in in `uv init`, but we expect to change this
          in a future release.\n\n  You can opt out of this behavior with `uv init
          --build-backend hatchling`.\n- **Set default `UV_TOOL_BIN_DIR` on Docker
          images ([#&#8203;13391](https://redirect.github.com/astral-sh/uv/pull/13391))**\n\n
          \ Previously, `UV_TOOL_BIN_DIR` was not set in Docker images which meant
          that `uv tool install` did not install tools into a directory on the `PATH`
          without additional configuration. Now, `UV_TOOL_BIN_DIR` is set to `/usr/local/bin`
          in all Docker derived images.\n\n  When the default image user is overridden
          (e.g. `USER <UID>`) with a less privileged user, this may cause `uv tool
          install` to fail.\n\n  You can opt out of this behavior by setting an alternative
          `UV_TOOL_BIN_DIR`.\n- **Update `--check` to return an exit code of 1 ([#&#8203;14167](https://redirect.github.com/astral-sh/uv/pull/14167))**\n\n
          \ uv uses an exit code of 1 to indicate a \"successful failure\" and an
          exit code of 2 to indicate an \"error\".\n\n  Previously, `uv lock --check`
          and `uv sync --check` would exit with a code of 2 when the lockfile or environment
          were outdated. Now, uv will exit with a code of 1.\n\n  You cannot opt out
          of this behavior.\n- **Use an ephemeral environment for `uv run --with`
          invocations ([#&#8203;14447](https://redirect.github.com/astral-sh/uv/pull/14447))**\n\n
          \ When using `uv run --with`, uv layers the requirements requested using
          `--with` into another virtual environment and caches it. Previously, uv
          would invoke the Python interpreter in this layered environment. However,
          this allows poisoning the cached environment and introduces race conditions
          for concurrent invocations. Now, uv will layer *another* empty virtual environment
          on top of the cached environment and invoke the Python interpreter there.
          This should only cause breakage in cases where the environment is being
          inspected at runtime.\n\n  You cannot opt out of this behavior.\n- **Restructure
          the `uv venv` command output and exit codes ([#&#8203;14546](https://redirect.github.com/astral-sh/uv/pull/14546))**\n\n
          \ Previously, uv used `miette` to format the `uv venv` output. However,
          this was inconsistent with most of the uv CLI. Now, the output is a little
          different and the exit code has switched from 1 to 2 for some error cases.\n\n
          \ You cannot opt out of this behavior.\n- **Default to `--workspace` when
          adding subdirectories ([#&#8203;14529](https://redirect.github.com/astral-sh/uv/pull/14529))**\n\n
          \ When using `uv add` to add a subdirectory in a workspace, uv now defaults
          to adding the target as a workspace member.\n\n  You can opt out of this
          behavior by providing `--no-workspace`.\n- **Add missing validations for
          disallowed `uv.toml` fields ([#&#8203;14322](https://redirect.github.com/astral-sh/uv/pull/14322))**\n\n
          \ uv does not allow some settings in the `uv.toml`. Previously, some settings
          were silently ignored when present in the `uv.toml`. Now, uv will error.\n\n
          \ You cannot opt out of this behavior. Use `--no-config` or remove the invalid
          settings.\n\n##### Configuration\n\n- Add support for toggling Python bin
          and registry install options via env vars ([#&#8203;14662](https://redirect.github.com/astral-sh/uv/pull/14662))\n\n###
          [`v0.7.22`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.22)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.21...0.7.22)\n\n####
          Release Notes\n\n##### Python\n\n- Upgrade GraalPy to 24.2.2\n\nSee the
          [GraalPy release notes](https://redirect.github.com/oracle/graalpython/releases/tag/graal-24.2.2)
          for more details.\n\n##### Configuration\n\n- Add `UV_COMPILE_BYTECODE_TIMEOUT`
          environment variable ([#&#8203;14369](https://redirect.github.com/astral-sh/uv/pull/14369))\n-
          Allow users to override index `cache-control` headers ([#&#8203;14620](https://redirect.github.com/astral-sh/uv/pull/14620))\n-
          Add `UV_LIBC` to override libc selection in multi-libc environment ([#&#8203;14646](https://redirect.github.com/astral-sh/uv/pull/14646))\n\n#####
          Bug fixes\n\n- Fix `--all-arches` when paired with `--only-downloads` ([#&#8203;14629](https://redirect.github.com/astral-sh/uv/pull/14629))\n-
          Skip Windows Python interpreters that return a broken MSIX package code
          ([#&#8203;14636](https://redirect.github.com/astral-sh/uv/pull/14636))\n-
          Warn on invalid `uv.toml` when provided via direct path ([#&#8203;14653](https://redirect.github.com/astral-sh/uv/pull/14653))\n-
          Improve async signal safety in Windows exception handler ([#&#8203;14619](https://redirect.github.com/astral-sh/uv/pull/14619))\n\n#####
          Documentation\n\n- Mention the `revision` in the lockfile versioning doc
          ([#&#8203;14634](https://redirect.github.com/astral-sh/uv/pull/14634))\n-
          Move \"Conflicting dependencies\" to the \"Resolution\" page ([#&#8203;14633](https://redirect.github.com/astral-sh/uv/pull/14633))\n-
          Rename \"Dependency specifiers\" section to exclude PEP 508 reference ([#&#8203;14631](https://redirect.github.com/astral-sh/uv/pull/14631))\n-
          Suggest `uv cache clean` prior to `--reinstall` ([#&#8203;14659](https://redirect.github.com/astral-sh/uv/pull/14659))\n\n#####
          Preview features\n\n- Make preview Python registration on Windows non-fatal
          ([#&#8203;14614](https://redirect.github.com/astral-sh/uv/pull/14614))\n-
          Update preview installation of Python executables to be non-fatal ([#&#8203;14612](https://redirect.github.com/astral-sh/uv/pull/14612))\n-
          Add `uv python update-shell` ([#&#8203;14627](https://redirect.github.com/astral-sh/uv/pull/14627))\n\n####
          Install uv 0.7.22\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
          --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.sh
          | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
          -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.ps1
          | iex\"\n```\n\n#### Download uv 0.7.22\n\n|  File  | Platform | Checksum
          |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz)
          | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz.sha256)
          |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz)
          | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz.sha256)
          |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip)
          | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip.sha256)
          |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip)
          | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip.sha256)
          |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip)
          | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip.sha256)
          |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz)
          | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz)
          | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz)
          | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz)
          | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz)
          | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz)
          | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz)
          | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz)
          | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
          |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz)
          | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz)
          | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz)
          | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz)
          | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz)
          | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
          |\n\n### [`v0.7.21`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.21)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.20...0.7.21)\n\n####
          Release Notes\n\n##### Python\n\n- Restore the SQLite `fts4`, `fts5`, `rtree`,
          and `geopoly` extensions on macOS and Linux\n\nSee the [`python-build-standalone`
          release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250712)
          for more details.\n\n##### Enhancements\n\n- Add `--python-platform` to
          `uv sync` ([#&#8203;14320](https://redirect.github.com/astral-sh/uv/pull/14320))\n-
          Support pre-releases in `uv version --bump` ([#&#8203;13578](https://redirect.github.com/astral-sh/uv/pull/13578))\n-
          Add `-w` shorthand for `--with` ([#&#8203;14530](https://redirect.github.com/astral-sh/uv/pull/14530))\n-
          Add an exception handler on Windows to display information on crash ([#&#8203;14582](https://redirect.github.com/astral-sh/uv/pull/14582))\n-
          Add hint when Python downloads are disabled ([#&#8203;14522](https://redirect.github.com/astral-sh/uv/pull/14522))\n-
          Add `UV_HTTP_RETRIES` to customize retry counts ([#&#8203;14544](https://redirect.github.com/astral-sh/uv/pull/14544))\n-
          Follow leaf symlinks matched by globs in `cache-key` ([#&#8203;13438](https://redirect.github.com/astral-sh/uv/pull/13438))\n-
          Support parent path components (`..`) in globs in `cache-key` ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n-
          Improve `cache-key` performance ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n\n#####
          Preview features\n\n- Add `uv sync --output-format json` ([#&#8203;13689](https://redirect.github.com/astral-sh/uv/pull/13689))\n\n#####
          Bug fixes\n\n- Do not re-resolve with a new Python version in `uv tool`
          if it is incompatible with `--python` ([#&#8203;14606](https://redirect.github.com/astral-sh/uv/pull/14606))\n\n#####
          Documentation\n\n- Document how to nest dependency groups with `include-group`
          ([#&#8203;14539](https://redirect.github.com/astral-sh/uv/pull/14539))\n-
          Fix repeated word in Pyodide doc ([#&#8203;14554](https://redirect.github.com/astral-sh/uv/pull/14554))\n-
          Update CONTRIBUTING.md with instructions to format Markdown files via Docker
          ([#&#8203;14246](https://redirect.github.com/astral-sh/uv/pull/14246))\n-
          Fix version number for `setup-python` ([#&#8203;14533](https://redirect.github.com/astral-sh/uv/pull/14533))\n\n####
          Install uv 0.7.21\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
          --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.sh
          | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
          -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.ps1
          | iex\"\n```\n\n#### Download uv 0.7.21\n\n|  File  | Platform | Checksum
          |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz)
          | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz.sha256)
          |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz)
          | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz.sha256)
          |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip)
          | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip.sha256)
          |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip)
          | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip.sha256)
          |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip)
          | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip.sha256)
          |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz)
          | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz)
          | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz)
          | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz)
          | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz)
          | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz)
          | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz)
          | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz)
          | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
          |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz)
          | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz)
          | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz)
          | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz)
          | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz)
          | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
          |\n\n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**:
          Branch creation - At any time (no schedule defined), Automerge - At any
          time (no schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config.
          Please merge this manually once you are satisfied.\n\n\u267B **Rebasing**:
          Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/osism/container-image-kolla-ansible).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/container-image-kolla-ansible/pull/794
        commit_id: 3e64c91ab0abc2808facf7c7559d152fd023aa26
        patchset: 3e64c91ab0abc2808facf7c7559d152fd023aa26
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-kolla-ansible
          name: osism/container-image-kolla-ansible
          short_name: container-image-kolla-ansible
        src_dir: src/github.com/osism/container-image-kolla-ansible
        topic: null
      buildset: 4cf48a781b1e4fbabfcb622a1cc6045b
      buildset_refs:
      - branch: main
        change: '794'
        change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)
          | stage | minor | `0.7.20` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
          (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
          Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
          the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
          for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc`
          target for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
          Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
          Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
          Bug fixes\n\n- Reject already-installed wheels built with outdated settings
          ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
          Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
          Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
          Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
          Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
          Fix reference documentation recommendation to use `uv cache clean` instead
          of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
          [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
          Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
          Enhancements\n\n- Allow Python requests with missing segments, e.g., just
          `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
          Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
          [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
          Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
          Bug fixes\n\n- Include build settings in cache key for registry source distribution
          lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
          Avoid creating bin links on `uv python upgrade` if they don't already exist
          ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
          Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
          Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
          [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
          Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
          [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
          Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
          shared objects, which fixes matplotlib's `tkagg` backend (the default on
          Linux), Pillow's `PIL.ImageTk` library, and other extension modules that
          need to use libtcl/libtk directly.\n- Tix is no longer provided on Linux.
          This is a deprecated Tk extension that appears to have been previously broken.\n\nSee
          the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
          for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
          `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
          Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
          Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
          Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
          Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
          Preview features\n\n- Add support for `package`-level conflicts in workspaces
          ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
          Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
          `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
          Bug fixes\n\n- Fix regression where `--require-hashes` applied to build
          dependencies in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
          Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
          Include all site packages directories in ephemeral environment overlays
          ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
          Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
          Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
          docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
          [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
          release contains hardening measures to address differentials in behavior
          between uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
          to this release, attackers could construct ZIP files that would be extracted
          differently by pip, uv, and other tools. As a result, ZIPs could be constructed
          that would be considered harmless by (e.g.) scanners, but contain a malicious
          payload when extracted by uv. As of v0.8.6, uv now applies additional checks
          to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
          Response Team](https://devguide.python.org/developer-workflow/psrt/) and
          PyPI maintainers, we were able to determine that these differentials **were
          not exploited** via PyPI during the time they were present. The PyPI team
          has also implemented similar checks and now guards against these parsing
          differentials on upload.\n\nAlthough the practical risk of exploitation
          is low, we take the *hypothetical* risk of parser differentials very seriously.
          Out of an abundance of caution, we have assigned this advisory a CVE identifier
          and have given it a \"moderate\" severity suggestion.\n\nThese changes have
          been validated against the top 15,000 PyPI packages; however, it's plausible
          that a non-malicious ZIP could be falsely rejected with this additional
          hardening. As an escape hatch, users who do encounter breaking changes can
          enable `UV_INSECURE_NO_ZIP_VALIDATION` to restore the previous behavior.
          If you encounter such a rejection, please file an issue in uv and to the
          upstream package.\n\nFor additional information, please refer to the following
          blog posts:\n\n- [Astral: uv security advisory: ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
          [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
          Security\n\n- Harden ZIP streaming to reject repeated entries and other
          malformed ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
          Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
          per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
          Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
          Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
          Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
          Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
          Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
          Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
          Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n###
          [`v0.8.5`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#085)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.4...0.8.5)\n\n#####
          Enhancements\n\n- Enable `uv run` with a GitHub Gist ([#&#8203;15058](https://redirect.github.com/astral-sh/uv/pull/15058))\n-
          Improve HTTP response caching log messages ([#&#8203;15067](https://redirect.github.com/astral-sh/uv/pull/15067))\n-
          Show wheel tag hints in install plan ([#&#8203;15066](https://redirect.github.com/astral-sh/uv/pull/15066))\n-
          Support installing additional executables in `uv tool install` ([#&#8203;14014](https://redirect.github.com/astral-sh/uv/pull/14014))\n\n#####
          Preview features\n\n- Enable extra build dependencies to 'match runtime'
          versions ([#&#8203;15036](https://redirect.github.com/astral-sh/uv/pull/15036))\n-
          Remove duplicate `extra-build-dependencies` warnings for `uv pip` ([#&#8203;15088](https://redirect.github.com/astral-sh/uv/pull/15088))\n-
          Use \"option\" instead of \"setting\" in `pylock` warning ([#&#8203;15089](https://redirect.github.com/astral-sh/uv/pull/15089))\n-
          Respect extra build requires when reading from wheel cache ([#&#8203;15030](https://redirect.github.com/astral-sh/uv/pull/15030))\n-
          Preserve lowered extra build dependencies ([#&#8203;15038](https://redirect.github.com/astral-sh/uv/pull/15038))\n\n#####
          Bug fixes\n\n- Add Python versions to markers implied from wheels ([#&#8203;14913](https://redirect.github.com/astral-sh/uv/pull/14913))\n-
          Ensure consistent indentation when adding dependencies ([#&#8203;14991](https://redirect.github.com/astral-sh/uv/pull/14991))\n-
          Fix handling of `python-preference = system` when managed interpreters are
          on the PATH ([#&#8203;15059](https://redirect.github.com/astral-sh/uv/pull/15059))\n-
          Fix symlink preservation in virtual environment creation ([#&#8203;14933](https://redirect.github.com/astral-sh/uv/pull/14933))\n-
          Gracefully handle entrypoint permission errors ([#&#8203;15026](https://redirect.github.com/astral-sh/uv/pull/15026))\n-
          Include wheel hashes from local Simple indexes ([#&#8203;14993](https://redirect.github.com/astral-sh/uv/pull/14993))\n-
          Prefer system Python installations over managed ones when `--system` is
          used ([#&#8203;15061](https://redirect.github.com/astral-sh/uv/pull/15061))\n-
          Remove retry wrapper when matching on error kind ([#&#8203;14996](https://redirect.github.com/astral-sh/uv/pull/14996))\n-
          Revert `h2` upgrade ([#&#8203;15079](https://redirect.github.com/astral-sh/uv/pull/15079))\n\n#####
          Documentation\n\n- Improve visibility of copy and line separator in dark
          mode ([#&#8203;14987](https://redirect.github.com/astral-sh/uv/pull/14987))\n\n###
          [`v0.8.4`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#084)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.3...0.8.4)\n\n#####
          Enhancements\n\n- Improve styling of warning cause chains  ([#&#8203;14934](https://redirect.github.com/astral-sh/uv/pull/14934))\n-
          Extend wheel filtering to Android tags ([#&#8203;14977](https://redirect.github.com/astral-sh/uv/pull/14977))\n-
          Perform wheel lockfile filtering based on platform and OS intersection ([#&#8203;14976](https://redirect.github.com/astral-sh/uv/pull/14976))\n-
          Clarify messaging when a new resolution needs to be performed ([#&#8203;14938](https://redirect.github.com/astral-sh/uv/pull/14938))\n\n#####
          Preview features\n\n- Add support for extending package's build dependencies
          with `extra-build-dependencies` ([#&#8203;14735](https://redirect.github.com/astral-sh/uv/pull/14735))\n-
          Split preview mode into separate feature flags ([#&#8203;14823](https://redirect.github.com/astral-sh/uv/pull/14823))\n\n#####
          Configuration\n\n- Add support for package specific `exclude-newer` dates
          via `exclude-newer-package` ([#&#8203;14489](https://redirect.github.com/astral-sh/uv/pull/14489))\n\n#####
          Bug fixes\n\n- Avoid invalidating lockfile when path or workspace dependencies
          define explicit indexes ([#&#8203;14876](https://redirect.github.com/astral-sh/uv/pull/14876))\n-
          Copy entrypoints that have a shebang that differs in `python` vs `python3`
          ([#&#8203;14970](https://redirect.github.com/astral-sh/uv/pull/14970))\n-
          Fix incorrect file permissions in wheel packages ([#&#8203;14930](https://redirect.github.com/astral-sh/uv/pull/14930))\n-
          Update validation for `environments` and `required-environments` in `uv.toml`
          ([#&#8203;14905](https://redirect.github.com/astral-sh/uv/pull/14905))\n\n#####
          Documentation\n\n- Show `uv_build` in projects documentation ([#&#8203;14968](https://redirect.github.com/astral-sh/uv/pull/14968))\n-
          Add `UV_` prefix to installer environment variables ([#&#8203;14964](https://redirect.github.com/astral-sh/uv/pull/14964))\n-
          Un-hide `uv` from `--build-backend` options ([#&#8203;14939](https://redirect.github.com/astral-sh/uv/pull/14939))\n-
          Update documentation for preview flags ([#&#8203;14902](https://redirect.github.com/astral-sh/uv/pull/14902))\n\n###
          [`v0.8.3`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#083)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.2...0.8.3)\n\n#####
          Python\n\n- Add CPython 3.14.0rc1\n\nSee the [`python-build-standalone`
          release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250723)
          for more details.\n\n##### Enhancements\n\n- Allow non-standard entrypoint
          names in `uv_build` ([#&#8203;14867](https://redirect.github.com/astral-sh/uv/pull/14867))\n-
          Publish riscv64 wheels to PyPI ([#&#8203;14852](https://redirect.github.com/astral-sh/uv/pull/14852))\n\n#####
          Bug fixes\n\n- Avoid writing redacted credentials to tool receipt ([#&#8203;14855](https://redirect.github.com/astral-sh/uv/pull/14855))\n-
          Respect `--with` versions over base environment versions ([#&#8203;14863](https://redirect.github.com/astral-sh/uv/pull/14863))\n-
          Respect credentials from all defined indexes ([#&#8203;14858](https://redirect.github.com/astral-sh/uv/pull/14858))\n-
          Fix missed stabilization of removal of registry entry during Python uninstall
          ([#&#8203;14859](https://redirect.github.com/astral-sh/uv/pull/14859))\n-
          Improve concurrency safety of Python downloads into cache ([#&#8203;14846](https://redirect.github.com/astral-sh/uv/pull/14846))\n\n#####
          Documentation\n\n- Fix typos in `uv_build` reference documentation ([#&#8203;14853](https://redirect.github.com/astral-sh/uv/pull/14853))\n-
          Move the \"Cargo\" install method further down in docs ([#&#8203;14842](https://redirect.github.com/astral-sh/uv/pull/14842))\n\n###
          [`v0.8.2`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#082)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.1...0.8.2)\n\n#####
          Enhancements\n\n- Add derivation chains for dependency errors ([#&#8203;14824](https://redirect.github.com/astral-sh/uv/pull/14824))\n\n#####
          Configuration\n\n- Add `UV_INIT_BUILD_BACKEND` ([#&#8203;14821](https://redirect.github.com/astral-sh/uv/pull/14821))\n\n#####
          Bug fixes\n\n- Avoid reading files in the environment bin that are not entrypoints
          ([#&#8203;14830](https://redirect.github.com/astral-sh/uv/pull/14830))\n-
          Avoid removing empty directories when constructing virtual environments
          ([#&#8203;14822](https://redirect.github.com/astral-sh/uv/pull/14822))\n-
          Preserve index URL priority order when writing to pyproject.toml ([#&#8203;14831](https://redirect.github.com/astral-sh/uv/pull/14831))\n\n#####
          Rust API\n\n- Expose `tls_built_in_root_certs` for client ([#&#8203;14816](https://redirect.github.com/astral-sh/uv/pull/14816))\n\n#####
          Documentation\n\n- Archive the 0.7.x changelog ([#&#8203;14819](https://redirect.github.com/astral-sh/uv/pull/14819))\n\n###
          [`v0.8.1`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.0...0.8.1)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.0`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#080)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.22...0.8.0)\n\nSince
          we released uv [0.7.0](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.0)
          in April, we've accumulated various changes that improve correctness and
          user experience, but could break some workflows. This release contains those
          changes; many have been marked as breaking out of an abundance of caution.
          We expect most users to be able to upgrade without making changes.\n\nThis
          release also includes the stabilization of a couple `uv python install`
          features, which have been available under preview since late last year.\n\n#####
          Breaking changes\n\n- **Install Python executables into a directory on the
          `PATH` ([#&#8203;14626](https://redirect.github.com/astral-sh/uv/pull/14626))**\n\n
          \ `uv python install` now installs a versioned Python executable (e.g.,
          `python3.13`) into a directory on the `PATH` (e.g., `~/.local/bin`) by default.
          This behavior has been available under the `--preview` flag since [Oct 2024](https://redirect.github.com/astral-sh/uv/pull/8458).
          This change should not be breaking unless it shadows a Python executable
          elsewhere on the `PATH`.\n\n  To install unversioned executables, i.e.,
          `python3` and `python`, use the `--default` flag. The `--default` flag has
          also been in preview, but is not stabilized in this release.\n\n  Note that
          these executables point to the base Python installation and only include
          the standard library. That means they will not include dependencies from
          your current project (use `uv run python` instead) and you cannot install
          packages into their environment (use `uvx --with <package> python` instead).\n\n
          \ As with tool installation, the target directory respects common variables
          like `XDG_BIN_HOME` and can be overridden with a `UV_PYTHON_BIN_DIR` variable.\n\n
          \ You can opt out of this behavior with `uv python install --no-bin` or
          `UV_PYTHON_INSTALL_BIN=0`.\n\n  See the [documentation on installing Python
          executables](https://docs.astral.sh/uv/concepts/python-versions/#installing-python-executables)
          for more details.\n- **Register Python versions with the Windows Registry
          ([#&#8203;14625](https://redirect.github.com/astral-sh/uv/pull/14625))**\n\n
          \ `uv python install` now registers the installed Python version with the
          Windows Registry as specified by [PEP 514](https://peps.python.org/pep-0514/).
          This allows using uv installed Python versions via the `py` launcher. This
          behavior has been available under the `--preview` flag since [Jan 2025](https://redirect.github.com/astral-sh/uv/pull/10634).
          This change should not be breaking, as using the uv Python versions with
          `py` requires explicit opt in.\n\n  You can opt out of this behavior with
          `uv python install --no-registry` or `UV_PYTHON_INSTALL_REGISTRY=0`.\n-
          **Prompt before removing an existing directory in `uv venv` ([#&#8203;14309](https://redirect.github.com/astral-sh/uv/pull/14309))**\n\n
          \ Previously, `uv venv` would remove an existing virtual environment without
          confirmation. While this is consistent with the behavior of project commands
          (e.g., `uv sync`), it's surprising to users that are using imperative workflows
          (i.e., `uv pip`). Now, `uv venv` will prompt for confirmation before removing
          an existing virtual environment. **If not in an interactive context, uv
          will still remove the virtual environment for backwards compatibility. However,
          this behavior is likely to change in a future release.**\n\n  The behavior
          for other commands (e.g., `uv sync`) is unchanged.\n\n  You can opt out
          of this behavior by setting `UV_VENV_CLEAR=1` or passing the `--clear` flag.\n-
          **Validate that discovered interpreters meet the Python preference ([#&#8203;7934](https://redirect.github.com/astral-sh/uv/pull/7934))**\n\n
          \ uv allows opting out of its managed Python versions with the `--no-managed-python`
          and `python-preference` options.\n\n  Previously, uv would not enforce this
          option for Python interpreters discovered on the `PATH`. For example, if
          a symlink to a managed Python interpreter was created, uv would allow it
          to be used even if `--no-managed-python` was provided. Now, uv ignores Python
          interpreters that do not match the Python preference *unless* they are in
          an active virtual environment or are explicitly requested, e.g., with `--python
          /path/to/python3.13`.\n\n  Similarly, uv would previously not invalidate
          existing project environments if they did not match the Python preference.
          Now, uv will invalidate and recreate project environments when the Python
          preference changes.\n\n  You can opt out of this behavior by providing the
          explicit path to the Python interpreter providing `--managed-python` / `--no-managed-python`
          matching the interpreter you want.\n- **Install dependencies without build
          systems when they are `path` sources ([#&#8203;14413](https://redirect.github.com/astral-sh/uv/pull/14413))**\n\n
          \ When working on a project, uv uses the [presence of a build system](https://docs.astral.sh/uv/concepts/projects/config/#build-systems)
          to determine if it should be built and installed into the environment. However,
          when a project is a dependency of another project, it can be surprising
          for the dependency to be missing from the environment.\n\n  Previously,
          uv would not build and install dependencies with [`path` sources](https://docs.astral.sh/uv/concepts/projects/dependencies/#path)
          unless they declared a build system or set `tool.uv.package = true`. Now,
          dependencies with `path` sources are built and installed regardless of the
          presence of a build system. If a build system is not present, the `setuptools.build_meta:__legacy__
          ` backend will be used (per [PEP 517](https://peps.python.org/pep-0517/#source-trees)).\n\n
          \ You can opt out of this behavior by setting `package = false` in the source
          declaration, e.g.:\n\n  ```toml\n  [tool.uv.sources]\n  foo = { path = \"./foo\",
          package = false }\n  ```\n\n  Or, by setting `tool.uv.package = false` in
          the dependent `pyproject.toml`.\n\n  See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
          for details.\n- **Install dependencies without build systems when they are
          workspace members ([#&#8203;14663](https://redirect.github.com/astral-sh/uv/pull/14663))**\n\n
          \ As described above for dependencies with `path` sources, uv previously
          would not build and install workspace members that did not declare a build
          system. Now, uv will build and install workspace members that are a dependency
          of *another* workspace member regardless of the presence of a build system.
          The behavior is unchanged for workspace members that are not included in
          the `project.dependencies`, `project.optional-dependencies`, or `dependency-groups`
          tables of another workspace member.\n\n  You can opt out of this behavior
          by setting `tool.uv.package = false` in the workspace member's `pyproject.toml`.\n\n
          \ See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
          for details.\n- **Bump `--python-platform linux` to `manylinux_2_28` ([#&#8203;14300](https://redirect.github.com/astral-sh/uv/pull/14300))**\n\n
          \ uv allows performing [platform-specific resolution](https://docs.astral.sh/uv/concepts/resolution/#platform-specific-resolution)
          for explicit targets and provides short aliases, e.g., `linux`, for common
          targets.\n\n  Previously, the default target for `--python-platform linux`
          was `manylinux_2_17`, which is compatible with most Linux distributions
          from 2014 or newer. We now default to `manylinux_2_28`, which is compatible
          with most Linux distributions from 2019 or newer.  This change follows the
          lead of other tools, such as `cibuildwheel`, which changed their default
          to `manylinux_2_28` in [Mar 2025](https://redirect.github.com/pypa/cibuildwheel/pull/2330).\n\n
          \ This change only affects users requesting a specific target platform.
          Otherwise, uv detects the `manylinux` target from your local glibc version.\n\n
          \ You can opt out of this behavior by using `--python-platform x86_64-manylinux_2_17`
          instead.\n- **Remove `uv version` fallback ([#&#8203;14161](https://redirect.github.com/astral-sh/uv/pull/14161))**\n\n
          \ In [Apr 2025](https://redirect.github.com/astral-sh/uv/pull/12349), uv
          changed the `uv version` command to an interface for viewing and updating
          the version of the current project. However, when outside a project, `uv
          version` would continue to display uv's version for backwards compatibility.
          Now, when used outside of a project, `uv version` will fail.\n\n  You cannot
          opt out of this behavior. Use `uv self version` instead.\n- **Require `--global`
          for removal of the global Python pin ([#&#8203;14169](https://redirect.github.com/astral-sh/uv/pull/14169))**\n\n
          \ Previously, `uv python pin --rm` would allow you to remove the global
          Python pin without opt in. Now, uv requires the `--global` flag to remove
          the global Python pin.\n\n  You cannot opt out of this behavior. Use the
          `--global` flag instead.\n- **Support conflicting editable settings across
          groups ([#&#8203;14197](https://redirect.github.com/astral-sh/uv/pull/14197))**\n\n
          \ Previously, uv would always treat a package as editable if any requirement
          requested it as editable. However, this prevented users from declaring `path`
          sources that toggled the `editable` setting across dependency groups. Now,
          uv allows declaring different `editable` values for conflicting groups.
          However, if a project includes a path dependency twice, once with `editable
          = true` and once without any editable annotation, those are now considered
          conflicting, and uv will exit with an error.\n\n  You cannot opt out of
          this behavior. Use consistent `editable` settings or [mark groups as conflicting](https://docs.astral.sh/uv/concepts/projects/config/#conflicting-dependencies).\n-
          **Make `uv_build` the default build backend in `uv init` ([#&#8203;14661](https://redirect.github.com/astral-sh/uv/pull/14661))**\n\n
          \ The uv build backend (`uv_build`) was [stabilized in uv 0.7.19](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.19).
          Now, it is the default build backend for `uv init --package` and `uv init
          --lib`. Previously, `hatchling` was the default build backend. A build backend
          is still not used without opt-in in `uv init`, but we expect to change this
          in a future release.\n\n  You can opt out of this behavior with `uv init
          --build-backend hatchling`.\n- **Set default `UV_TOOL_BIN_DIR` on Docker
          images ([#&#8203;13391](https://redirect.github.com/astral-sh/uv/pull/13391))**\n\n
          \ Previously, `UV_TOOL_BIN_DIR` was not set in Docker images which meant
          that `uv tool install` did not install tools into a directory on the `PATH`
          without additional configuration. Now, `UV_TOOL_BIN_DIR` is set to `/usr/local/bin`
          in all Docker derived images.\n\n  When the default image user is overridden
          (e.g. `USER <UID>`) with a less privileged user, this may cause `uv tool
          install` to fail.\n\n  You can opt out of this behavior by setting an alternative
          `UV_TOOL_BIN_DIR`.\n- **Update `--check` to return an exit code of 1 ([#&#8203;14167](https://redirect.github.com/astral-sh/uv/pull/14167))**\n\n
          \ uv uses an exit code of 1 to indicate a \"successful failure\" and an
          exit code of 2 to indicate an \"error\".\n\n  Previously, `uv lock --check`
          and `uv sync --check` would exit with a code of 2 when the lockfile or environment
          were outdated. Now, uv will exit with a code of 1.\n\n  You cannot opt out
          of this behavior.\n- **Use an ephemeral environment for `uv run --with`
          invocations ([#&#8203;14447](https://redirect.github.com/astral-sh/uv/pull/14447))**\n\n
          \ When using `uv run --with`, uv layers the requirements requested using
          `--with` into another virtual environment and caches it. Previously, uv
          would invoke the Python interpreter in this layered environment. However,
          this allows poisoning the cached environment and introduces race conditions
          for concurrent invocations. Now, uv will layer *another* empty virtual environment
          on top of the cached environment and invoke the Python interpreter there.
          This should only cause breakage in cases where the environment is being
          inspected at runtime.\n\n  You cannot opt out of this behavior.\n- **Restructure
          the `uv venv` command output and exit codes ([#&#8203;14546](https://redirect.github.com/astral-sh/uv/pull/14546))**\n\n
          \ Previously, uv used `miette` to format the `uv venv` output. However,
          this was inconsistent with most of the uv CLI. Now, the output is a little
          different and the exit code has switched from 1 to 2 for some error cases.\n\n
          \ You cannot opt out of this behavior.\n- **Default to `--workspace` when
          adding subdirectories ([#&#8203;14529](https://redirect.github.com/astral-sh/uv/pull/14529))**\n\n
          \ When using `uv add` to add a subdirectory in a workspace, uv now defaults
          to adding the target as a workspace member.\n\n  You can opt out of this
          behavior by providing `--no-workspace`.\n- **Add missing validations for
          disallowed `uv.toml` fields ([#&#8203;14322](https://redirect.github.com/astral-sh/uv/pull/14322))**\n\n
          \ uv does not allow some settings in the `uv.toml`. Previously, some settings
          were silently ignored when present in the `uv.toml`. Now, uv will error.\n\n
          \ You cannot opt out of this behavior. Use `--no-config` or remove the invalid
          settings.\n\n##### Configuration\n\n- Add support for toggling Python bin
          and registry install options via env vars ([#&#8203;14662](https://redirect.github.com/astral-sh/uv/pull/14662))\n\n###
          [`v0.7.22`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.22)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.21...0.7.22)\n\n####
          Release Notes\n\n##### Python\n\n- Upgrade GraalPy to 24.2.2\n\nSee the
          [GraalPy release notes](https://redirect.github.com/oracle/graalpython/releases/tag/graal-24.2.2)
          for more details.\n\n##### Configuration\n\n- Add `UV_COMPILE_BYTECODE_TIMEOUT`
          environment variable ([#&#8203;14369](https://redirect.github.com/astral-sh/uv/pull/14369))\n-
          Allow users to override index `cache-control` headers ([#&#8203;14620](https://redirect.github.com/astral-sh/uv/pull/14620))\n-
          Add `UV_LIBC` to override libc selection in multi-libc environment ([#&#8203;14646](https://redirect.github.com/astral-sh/uv/pull/14646))\n\n#####
          Bug fixes\n\n- Fix `--all-arches` when paired with `--only-downloads` ([#&#8203;14629](https://redirect.github.com/astral-sh/uv/pull/14629))\n-
          Skip Windows Python interpreters that return a broken MSIX package code
          ([#&#8203;14636](https://redirect.github.com/astral-sh/uv/pull/14636))\n-
          Warn on invalid `uv.toml` when provided via direct path ([#&#8203;14653](https://redirect.github.com/astral-sh/uv/pull/14653))\n-
          Improve async signal safety in Windows exception handler ([#&#8203;14619](https://redirect.github.com/astral-sh/uv/pull/14619))\n\n#####
          Documentation\n\n- Mention the `revision` in the lockfile versioning doc
          ([#&#8203;14634](https://redirect.github.com/astral-sh/uv/pull/14634))\n-
          Move \"Conflicting dependencies\" to the \"Resolution\" page ([#&#8203;14633](https://redirect.github.com/astral-sh/uv/pull/14633))\n-
          Rename \"Dependency specifiers\" section to exclude PEP 508 reference ([#&#8203;14631](https://redirect.github.com/astral-sh/uv/pull/14631))\n-
          Suggest `uv cache clean` prior to `--reinstall` ([#&#8203;14659](https://redirect.github.com/astral-sh/uv/pull/14659))\n\n#####
          Preview features\n\n- Make preview Python registration on Windows non-fatal
          ([#&#8203;14614](https://redirect.github.com/astral-sh/uv/pull/14614))\n-
          Update preview installation of Python executables to be non-fatal ([#&#8203;14612](https://redirect.github.com/astral-sh/uv/pull/14612))\n-
          Add `uv python update-shell` ([#&#8203;14627](https://redirect.github.com/astral-sh/uv/pull/14627))\n\n####
          Install uv 0.7.22\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
          --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.sh
          | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
          -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.ps1
          | iex\"\n```\n\n#### Download uv 0.7.22\n\n|  File  | Platform | Checksum
          |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz)
          | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz.sha256)
          |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz)
          | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz.sha256)
          |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip)
          | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip.sha256)
          |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip)
          | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip.sha256)
          |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip)
          | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip.sha256)
          |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz)
          | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz)
          | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz)
          | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz)
          | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz)
          | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz)
          | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz)
          | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz)
          | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
          |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz)
          | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz)
          | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz)
          | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz)
          | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz)
          | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
          |\n\n### [`v0.7.21`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.21)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.20...0.7.21)\n\n####
          Release Notes\n\n##### Python\n\n- Restore the SQLite `fts4`, `fts5`, `rtree`,
          and `geopoly` extensions on macOS and Linux\n\nSee the [`python-build-standalone`
          release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250712)
          for more details.\n\n##### Enhancements\n\n- Add `--python-platform` to
          `uv sync` ([#&#8203;14320](https://redirect.github.com/astral-sh/uv/pull/14320))\n-
          Support pre-releases in `uv version --bump` ([#&#8203;13578](https://redirect.github.com/astral-sh/uv/pull/13578))\n-
          Add `-w` shorthand for `--with` ([#&#8203;14530](https://redirect.github.com/astral-sh/uv/pull/14530))\n-
          Add an exception handler on Windows to display information on crash ([#&#8203;14582](https://redirect.github.com/astral-sh/uv/pull/14582))\n-
          Add hint when Python downloads are disabled ([#&#8203;14522](https://redirect.github.com/astral-sh/uv/pull/14522))\n-
          Add `UV_HTTP_RETRIES` to customize retry counts ([#&#8203;14544](https://redirect.github.com/astral-sh/uv/pull/14544))\n-
          Follow leaf symlinks matched by globs in `cache-key` ([#&#8203;13438](https://redirect.github.com/astral-sh/uv/pull/13438))\n-
          Support parent path components (`..`) in globs in `cache-key` ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n-
          Improve `cache-key` performance ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n\n#####
          Preview features\n\n- Add `uv sync --output-format json` ([#&#8203;13689](https://redirect.github.com/astral-sh/uv/pull/13689))\n\n#####
          Bug fixes\n\n- Do not re-resolve with a new Python version in `uv tool`
          if it is incompatible with `--python` ([#&#8203;14606](https://redirect.github.com/astral-sh/uv/pull/14606))\n\n#####
          Documentation\n\n- Document how to nest dependency groups with `include-group`
          ([#&#8203;14539](https://redirect.github.com/astral-sh/uv/pull/14539))\n-
          Fix repeated word in Pyodide doc ([#&#8203;14554](https://redirect.github.com/astral-sh/uv/pull/14554))\n-
          Update CONTRIBUTING.md with instructions to format Markdown files via Docker
          ([#&#8203;14246](https://redirect.github.com/astral-sh/uv/pull/14246))\n-
          Fix version number for `setup-python` ([#&#8203;14533](https://redirect.github.com/astral-sh/uv/pull/14533))\n\n####
          Install uv 0.7.21\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
          --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.sh
          | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
          -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.ps1
          | iex\"\n```\n\n#### Download uv 0.7.21\n\n|  File  | Platform | Checksum
          |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz)
          | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz.sha256)
          |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz)
          | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz.sha256)
          |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip)
          | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip.sha256)
          |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip)
          | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip.sha256)
          |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip)
          | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip.sha256)
          |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz)
          | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz)
          | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz)
          | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz)
          | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz)
          | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz)
          | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz)
          | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz)
          | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
          |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz)
          | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz)
          | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz)
          | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz)
          | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz)
          | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
          |\n\n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**:
          Branch creation - At any time (no schedule defined), Automerge - At any
          time (no schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config.
          Please merge this manually once you are satisfied.\n\n\u267B **Rebasing**:
          Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/osism/container-image-kolla-ansible).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/container-image-kolla-ansible/pull/794
        commit_id: 3e64c91ab0abc2808facf7c7559d152fd023aa26
        patchset: 3e64c91ab0abc2808facf7c7559d152fd023aa26
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-kolla-ansible
          name: osism/container-image-kolla-ansible
          short_name: container-image-kolla-ansible
        src_dir: src/github.com/osism/container-image-kolla-ansible
        topic: null
      change: '794'
      change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
        PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n|
        [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv) | stage |
        minor | `0.7.20` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
        (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
        Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
        the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
        for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc` target
        for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
        Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
        Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
        Bug fixes\n\n- Reject already-installed wheels built with outdated settings
        ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
        Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
        Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
        Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
        Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
        Fix reference documentation recommendation to use `uv cache clean` instead
        of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
        [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
        Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
        Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
        Add `extra-build-dependencies` hint for any missing module on build failure
        ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
        Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
        Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
        Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
        Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient` ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
        [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
        Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
        Enhancements\n\n- Allow Python requests with missing segments, e.g., just
        `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
        Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
        [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
        Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
        Bug fixes\n\n- Include build settings in cache key for registry source distribution
        lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
        Avoid creating bin links on `uv python upgrade` if they don't already exist
        ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
        Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
        Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
        [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
        Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
        [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
        Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
        shared objects, which fixes matplotlib's `tkagg` backend (the default on Linux),
        Pillow's `PIL.ImageTk` library, and other extension modules that need to use
        libtcl/libtk directly.\n- Tix is no longer provided on Linux. This is a deprecated
        Tk extension that appears to have been previously broken.\n\nSee the [`python-build-standalone`
        release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
        for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
        `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
        Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
        Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
        Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
        Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
        Preview features\n\n- Add support for `package`-level conflicts in workspaces
        ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
        Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
        `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
        Bug fixes\n\n- Fix regression where `--require-hashes` applied to build dependencies
        in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
        Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
        Include all site packages directories in ephemeral environment overlays ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
        Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
        Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
        docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
        [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
        release contains hardening measures to address differentials in behavior between
        uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
        to this release, attackers could construct ZIP files that would be extracted
        differently by pip, uv, and other tools. As a result, ZIPs could be constructed
        that would be considered harmless by (e.g.) scanners, but contain a malicious
        payload when extracted by uv. As of v0.8.6, uv now applies additional checks
        to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
        Response Team](https://devguide.python.org/developer-workflow/psrt/) and PyPI
        maintainers, we were able to determine that these differentials **were not
        exploited** via PyPI during the time they were present. The PyPI team has
        also implemented similar checks and now guards against these parsing differentials
        on upload.\n\nAlthough the practical risk of exploitation is low, we take
        the *hypothetical* risk of parser differentials very seriously. Out of an
        abundance of caution, we have assigned this advisory a CVE identifier and
        have given it a \"moderate\" severity suggestion.\n\nThese changes have been
        validated against the top 15,000 PyPI packages; however, it's plausible that
        a non-malicious ZIP could be falsely rejected with this additional hardening.
        As an escape hatch, users who do encounter breaking changes can enable `UV_INSECURE_NO_ZIP_VALIDATION`
        to restore the previous behavior. If you encounter such a rejection, please
        file an issue in uv and to the upstream package.\n\nFor additional information,
        please refer to the following blog posts:\n\n- [Astral: uv security advisory:
        ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
        [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
        Security\n\n- Harden ZIP streaming to reject repeated entries and other malformed
        ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
        Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
        per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
        Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
        Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
        Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
        Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
        Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
        Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
        Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n###
        [`v0.8.5`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#085)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.4...0.8.5)\n\n#####
        Enhancements\n\n- Enable `uv run` with a GitHub Gist ([#&#8203;15058](https://redirect.github.com/astral-sh/uv/pull/15058))\n-
        Improve HTTP response caching log messages ([#&#8203;15067](https://redirect.github.com/astral-sh/uv/pull/15067))\n-
        Show wheel tag hints in install plan ([#&#8203;15066](https://redirect.github.com/astral-sh/uv/pull/15066))\n-
        Support installing additional executables in `uv tool install` ([#&#8203;14014](https://redirect.github.com/astral-sh/uv/pull/14014))\n\n#####
        Preview features\n\n- Enable extra build dependencies to 'match runtime' versions
        ([#&#8203;15036](https://redirect.github.com/astral-sh/uv/pull/15036))\n-
        Remove duplicate `extra-build-dependencies` warnings for `uv pip` ([#&#8203;15088](https://redirect.github.com/astral-sh/uv/pull/15088))\n-
        Use \"option\" instead of \"setting\" in `pylock` warning ([#&#8203;15089](https://redirect.github.com/astral-sh/uv/pull/15089))\n-
        Respect extra build requires when reading from wheel cache ([#&#8203;15030](https://redirect.github.com/astral-sh/uv/pull/15030))\n-
        Preserve lowered extra build dependencies ([#&#8203;15038](https://redirect.github.com/astral-sh/uv/pull/15038))\n\n#####
        Bug fixes\n\n- Add Python versions to markers implied from wheels ([#&#8203;14913](https://redirect.github.com/astral-sh/uv/pull/14913))\n-
        Ensure consistent indentation when adding dependencies ([#&#8203;14991](https://redirect.github.com/astral-sh/uv/pull/14991))\n-
        Fix handling of `python-preference = system` when managed interpreters are
        on the PATH ([#&#8203;15059](https://redirect.github.com/astral-sh/uv/pull/15059))\n-
        Fix symlink preservation in virtual environment creation ([#&#8203;14933](https://redirect.github.com/astral-sh/uv/pull/14933))\n-
        Gracefully handle entrypoint permission errors ([#&#8203;15026](https://redirect.github.com/astral-sh/uv/pull/15026))\n-
        Include wheel hashes from local Simple indexes ([#&#8203;14993](https://redirect.github.com/astral-sh/uv/pull/14993))\n-
        Prefer system Python installations over managed ones when `--system` is used
        ([#&#8203;15061](https://redirect.github.com/astral-sh/uv/pull/15061))\n-
        Remove retry wrapper when matching on error kind ([#&#8203;14996](https://redirect.github.com/astral-sh/uv/pull/14996))\n-
        Revert `h2` upgrade ([#&#8203;15079](https://redirect.github.com/astral-sh/uv/pull/15079))\n\n#####
        Documentation\n\n- Improve visibility of copy and line separator in dark mode
        ([#&#8203;14987](https://redirect.github.com/astral-sh/uv/pull/14987))\n\n###
        [`v0.8.4`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#084)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.3...0.8.4)\n\n#####
        Enhancements\n\n- Improve styling of warning cause chains  ([#&#8203;14934](https://redirect.github.com/astral-sh/uv/pull/14934))\n-
        Extend wheel filtering to Android tags ([#&#8203;14977](https://redirect.github.com/astral-sh/uv/pull/14977))\n-
        Perform wheel lockfile filtering based on platform and OS intersection ([#&#8203;14976](https://redirect.github.com/astral-sh/uv/pull/14976))\n-
        Clarify messaging when a new resolution needs to be performed ([#&#8203;14938](https://redirect.github.com/astral-sh/uv/pull/14938))\n\n#####
        Preview features\n\n- Add support for extending package's build dependencies
        with `extra-build-dependencies` ([#&#8203;14735](https://redirect.github.com/astral-sh/uv/pull/14735))\n-
        Split preview mode into separate feature flags ([#&#8203;14823](https://redirect.github.com/astral-sh/uv/pull/14823))\n\n#####
        Configuration\n\n- Add support for package specific `exclude-newer` dates
        via `exclude-newer-package` ([#&#8203;14489](https://redirect.github.com/astral-sh/uv/pull/14489))\n\n#####
        Bug fixes\n\n- Avoid invalidating lockfile when path or workspace dependencies
        define explicit indexes ([#&#8203;14876](https://redirect.github.com/astral-sh/uv/pull/14876))\n-
        Copy entrypoints that have a shebang that differs in `python` vs `python3`
        ([#&#8203;14970](https://redirect.github.com/astral-sh/uv/pull/14970))\n-
        Fix incorrect file permissions in wheel packages ([#&#8203;14930](https://redirect.github.com/astral-sh/uv/pull/14930))\n-
        Update validation for `environments` and `required-environments` in `uv.toml`
        ([#&#8203;14905](https://redirect.github.com/astral-sh/uv/pull/14905))\n\n#####
        Documentation\n\n- Show `uv_build` in projects documentation ([#&#8203;14968](https://redirect.github.com/astral-sh/uv/pull/14968))\n-
        Add `UV_` prefix to installer environment variables ([#&#8203;14964](https://redirect.github.com/astral-sh/uv/pull/14964))\n-
        Un-hide `uv` from `--build-backend` options ([#&#8203;14939](https://redirect.github.com/astral-sh/uv/pull/14939))\n-
        Update documentation for preview flags ([#&#8203;14902](https://redirect.github.com/astral-sh/uv/pull/14902))\n\n###
        [`v0.8.3`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#083)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.2...0.8.3)\n\n#####
        Python\n\n- Add CPython 3.14.0rc1\n\nSee the [`python-build-standalone` release
        notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250723)
        for more details.\n\n##### Enhancements\n\n- Allow non-standard entrypoint
        names in `uv_build` ([#&#8203;14867](https://redirect.github.com/astral-sh/uv/pull/14867))\n-
        Publish riscv64 wheels to PyPI ([#&#8203;14852](https://redirect.github.com/astral-sh/uv/pull/14852))\n\n#####
        Bug fixes\n\n- Avoid writing redacted credentials to tool receipt ([#&#8203;14855](https://redirect.github.com/astral-sh/uv/pull/14855))\n-
        Respect `--with` versions over base environment versions ([#&#8203;14863](https://redirect.github.com/astral-sh/uv/pull/14863))\n-
        Respect credentials from all defined indexes ([#&#8203;14858](https://redirect.github.com/astral-sh/uv/pull/14858))\n-
        Fix missed stabilization of removal of registry entry during Python uninstall
        ([#&#8203;14859](https://redirect.github.com/astral-sh/uv/pull/14859))\n-
        Improve concurrency safety of Python downloads into cache ([#&#8203;14846](https://redirect.github.com/astral-sh/uv/pull/14846))\n\n#####
        Documentation\n\n- Fix typos in `uv_build` reference documentation ([#&#8203;14853](https://redirect.github.com/astral-sh/uv/pull/14853))\n-
        Move the \"Cargo\" install method further down in docs ([#&#8203;14842](https://redirect.github.com/astral-sh/uv/pull/14842))\n\n###
        [`v0.8.2`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#082)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.1...0.8.2)\n\n#####
        Enhancements\n\n- Add derivation chains for dependency errors ([#&#8203;14824](https://redirect.github.com/astral-sh/uv/pull/14824))\n\n#####
        Configuration\n\n- Add `UV_INIT_BUILD_BACKEND` ([#&#8203;14821](https://redirect.github.com/astral-sh/uv/pull/14821))\n\n#####
        Bug fixes\n\n- Avoid reading files in the environment bin that are not entrypoints
        ([#&#8203;14830](https://redirect.github.com/astral-sh/uv/pull/14830))\n-
        Avoid removing empty directories when constructing virtual environments ([#&#8203;14822](https://redirect.github.com/astral-sh/uv/pull/14822))\n-
        Preserve index URL priority order when writing to pyproject.toml ([#&#8203;14831](https://redirect.github.com/astral-sh/uv/pull/14831))\n\n#####
        Rust API\n\n- Expose `tls_built_in_root_certs` for client ([#&#8203;14816](https://redirect.github.com/astral-sh/uv/pull/14816))\n\n#####
        Documentation\n\n- Archive the 0.7.x changelog ([#&#8203;14819](https://redirect.github.com/astral-sh/uv/pull/14819))\n\n###
        [`v0.8.1`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.0...0.8.1)\n\n#####
        Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
        Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
        Add `extra-build-dependencies` hint for any missing module on build failure
        ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
        Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
        Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
        Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
        Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient` ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
        [`v0.8.0`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#080)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.7.22...0.8.0)\n\nSince
        we released uv [0.7.0](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.0)
        in April, we've accumulated various changes that improve correctness and user
        experience, but could break some workflows. This release contains those changes;
        many have been marked as breaking out of an abundance of caution. We expect
        most users to be able to upgrade without making changes.\n\nThis release also
        includes the stabilization of a couple `uv python install` features, which
        have been available under preview since late last year.\n\n##### Breaking
        changes\n\n- **Install Python executables into a directory on the `PATH` ([#&#8203;14626](https://redirect.github.com/astral-sh/uv/pull/14626))**\n\n
        \ `uv python install` now installs a versioned Python executable (e.g., `python3.13`)
        into a directory on the `PATH` (e.g., `~/.local/bin`) by default. This behavior
        has been available under the `--preview` flag since [Oct 2024](https://redirect.github.com/astral-sh/uv/pull/8458).
        This change should not be breaking unless it shadows a Python executable elsewhere
        on the `PATH`.\n\n  To install unversioned executables, i.e., `python3` and
        `python`, use the `--default` flag. The `--default` flag has also been in
        preview, but is not stabilized in this release.\n\n  Note that these executables
        point to the base Python installation and only include the standard library.
        That means they will not include dependencies from your current project (use
        `uv run python` instead) and you cannot install packages into their environment
        (use `uvx --with <package> python` instead).\n\n  As with tool installation,
        the target directory respects common variables like `XDG_BIN_HOME` and can
        be overridden with a `UV_PYTHON_BIN_DIR` variable.\n\n  You can opt out of
        this behavior with `uv python install --no-bin` or `UV_PYTHON_INSTALL_BIN=0`.\n\n
        \ See the [documentation on installing Python executables](https://docs.astral.sh/uv/concepts/python-versions/#installing-python-executables)
        for more details.\n- **Register Python versions with the Windows Registry
        ([#&#8203;14625](https://redirect.github.com/astral-sh/uv/pull/14625))**\n\n
        \ `uv python install` now registers the installed Python version with the
        Windows Registry as specified by [PEP 514](https://peps.python.org/pep-0514/).
        This allows using uv installed Python versions via the `py` launcher. This
        behavior has been available under the `--preview` flag since [Jan 2025](https://redirect.github.com/astral-sh/uv/pull/10634).
        This change should not be breaking, as using the uv Python versions with `py`
        requires explicit opt in.\n\n  You can opt out of this behavior with `uv python
        install --no-registry` or `UV_PYTHON_INSTALL_REGISTRY=0`.\n- **Prompt before
        removing an existing directory in `uv venv` ([#&#8203;14309](https://redirect.github.com/astral-sh/uv/pull/14309))**\n\n
        \ Previously, `uv venv` would remove an existing virtual environment without
        confirmation. While this is consistent with the behavior of project commands
        (e.g., `uv sync`), it's surprising to users that are using imperative workflows
        (i.e., `uv pip`). Now, `uv venv` will prompt for confirmation before removing
        an existing virtual environment. **If not in an interactive context, uv will
        still remove the virtual environment for backwards compatibility. However,
        this behavior is likely to change in a future release.**\n\n  The behavior
        for other commands (e.g., `uv sync`) is unchanged.\n\n  You can opt out of
        this behavior by setting `UV_VENV_CLEAR=1` or passing the `--clear` flag.\n-
        **Validate that discovered interpreters meet the Python preference ([#&#8203;7934](https://redirect.github.com/astral-sh/uv/pull/7934))**\n\n
        \ uv allows opting out of its managed Python versions with the `--no-managed-python`
        and `python-preference` options.\n\n  Previously, uv would not enforce this
        option for Python interpreters discovered on the `PATH`. For example, if a
        symlink to a managed Python interpreter was created, uv would allow it to
        be used even if `--no-managed-python` was provided. Now, uv ignores Python
        interpreters that do not match the Python preference *unless* they are in
        an active virtual environment or are explicitly requested, e.g., with `--python
        /path/to/python3.13`.\n\n  Similarly, uv would previously not invalidate existing
        project environments if they did not match the Python preference. Now, uv
        will invalidate and recreate project environments when the Python preference
        changes.\n\n  You can opt out of this behavior by providing the explicit path
        to the Python interpreter providing `--managed-python` / `--no-managed-python`
        matching the interpreter you want.\n- **Install dependencies without build
        systems when they are `path` sources ([#&#8203;14413](https://redirect.github.com/astral-sh/uv/pull/14413))**\n\n
        \ When working on a project, uv uses the [presence of a build system](https://docs.astral.sh/uv/concepts/projects/config/#build-systems)
        to determine if it should be built and installed into the environment. However,
        when a project is a dependency of another project, it can be surprising for
        the dependency to be missing from the environment.\n\n  Previously, uv would
        not build and install dependencies with [`path` sources](https://docs.astral.sh/uv/concepts/projects/dependencies/#path)
        unless they declared a build system or set `tool.uv.package = true`. Now,
        dependencies with `path` sources are built and installed regardless of the
        presence of a build system. If a build system is not present, the `setuptools.build_meta:__legacy__
        ` backend will be used (per [PEP 517](https://peps.python.org/pep-0517/#source-trees)).\n\n
        \ You can opt out of this behavior by setting `package = false` in the source
        declaration, e.g.:\n\n  ```toml\n  [tool.uv.sources]\n  foo = { path = \"./foo\",
        package = false }\n  ```\n\n  Or, by setting `tool.uv.package = false` in
        the dependent `pyproject.toml`.\n\n  See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
        for details.\n- **Install dependencies without build systems when they are
        workspace members ([#&#8203;14663](https://redirect.github.com/astral-sh/uv/pull/14663))**\n\n
        \ As described above for dependencies with `path` sources, uv previously would
        not build and install workspace members that did not declare a build system.
        Now, uv will build and install workspace members that are a dependency of
        *another* workspace member regardless of the presence of a build system. The
        behavior is unchanged for workspace members that are not included in the `project.dependencies`,
        `project.optional-dependencies`, or `dependency-groups` tables of another
        workspace member.\n\n  You can opt out of this behavior by setting `tool.uv.package
        = false` in the workspace member's `pyproject.toml`.\n\n  See the documentation
        on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
        for details.\n- **Bump `--python-platform linux` to `manylinux_2_28` ([#&#8203;14300](https://redirect.github.com/astral-sh/uv/pull/14300))**\n\n
        \ uv allows performing [platform-specific resolution](https://docs.astral.sh/uv/concepts/resolution/#platform-specific-resolution)
        for explicit targets and provides short aliases, e.g., `linux`, for common
        targets.\n\n  Previously, the default target for `--python-platform linux`
        was `manylinux_2_17`, which is compatible with most Linux distributions from
        2014 or newer. We now default to `manylinux_2_28`, which is compatible with
        most Linux distributions from 2019 or newer.  This change follows the lead
        of other tools, such as `cibuildwheel`, which changed their default to `manylinux_2_28`
        in [Mar 2025](https://redirect.github.com/pypa/cibuildwheel/pull/2330).\n\n
        \ This change only affects users requesting a specific target platform. Otherwise,
        uv detects the `manylinux` target from your local glibc version.\n\n  You
        can opt out of this behavior by using `--python-platform x86_64-manylinux_2_17`
        instead.\n- **Remove `uv version` fallback ([#&#8203;14161](https://redirect.github.com/astral-sh/uv/pull/14161))**\n\n
        \ In [Apr 2025](https://redirect.github.com/astral-sh/uv/pull/12349), uv changed
        the `uv version` command to an interface for viewing and updating the version
        of the current project. However, when outside a project, `uv version` would
        continue to display uv's version for backwards compatibility. Now, when used
        outside of a project, `uv version` will fail.\n\n  You cannot opt out of this
        behavior. Use `uv self version` instead.\n- **Require `--global` for removal
        of the global Python pin ([#&#8203;14169](https://redirect.github.com/astral-sh/uv/pull/14169))**\n\n
        \ Previously, `uv python pin --rm` would allow you to remove the global Python
        pin without opt in. Now, uv requires the `--global` flag to remove the global
        Python pin.\n\n  You cannot opt out of this behavior. Use the `--global` flag
        instead.\n- **Support conflicting editable settings across groups ([#&#8203;14197](https://redirect.github.com/astral-sh/uv/pull/14197))**\n\n
        \ Previously, uv would always treat a package as editable if any requirement
        requested it as editable. However, this prevented users from declaring `path`
        sources that toggled the `editable` setting across dependency groups. Now,
        uv allows declaring different `editable` values for conflicting groups. However,
        if a project includes a path dependency twice, once with `editable = true`
        and once without any editable annotation, those are now considered conflicting,
        and uv will exit with an error.\n\n  You cannot opt out of this behavior.
        Use consistent `editable` settings or [mark groups as conflicting](https://docs.astral.sh/uv/concepts/projects/config/#conflicting-dependencies).\n-
        **Make `uv_build` the default build backend in `uv init` ([#&#8203;14661](https://redirect.github.com/astral-sh/uv/pull/14661))**\n\n
        \ The uv build backend (`uv_build`) was [stabilized in uv 0.7.19](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.19).
        Now, it is the default build backend for `uv init --package` and `uv init
        --lib`. Previously, `hatchling` was the default build backend. A build backend
        is still not used without opt-in in `uv init`, but we expect to change this
        in a future release.\n\n  You can opt out of this behavior with `uv init --build-backend
        hatchling`.\n- **Set default `UV_TOOL_BIN_DIR` on Docker images ([#&#8203;13391](https://redirect.github.com/astral-sh/uv/pull/13391))**\n\n
        \ Previously, `UV_TOOL_BIN_DIR` was not set in Docker images which meant that
        `uv tool install` did not install tools into a directory on the `PATH` without
        additional configuration. Now, `UV_TOOL_BIN_DIR` is set to `/usr/local/bin`
        in all Docker derived images.\n\n  When the default image user is overridden
        (e.g. `USER <UID>`) with a less privileged user, this may cause `uv tool install`
        to fail.\n\n  You can opt out of this behavior by setting an alternative `UV_TOOL_BIN_DIR`.\n-
        **Update `--check` to return an exit code of 1 ([#&#8203;14167](https://redirect.github.com/astral-sh/uv/pull/14167))**\n\n
        \ uv uses an exit code of 1 to indicate a \"successful failure\" and an exit
        code of 2 to indicate an \"error\".\n\n  Previously, `uv lock --check` and
        `uv sync --check` would exit with a code of 2 when the lockfile or environment
        were outdated. Now, uv will exit with a code of 1.\n\n  You cannot opt out
        of this behavior.\n- **Use an ephemeral environment for `uv run --with` invocations
        ([#&#8203;14447](https://redirect.github.com/astral-sh/uv/pull/14447))**\n\n
        \ When using `uv run --with`, uv layers the requirements requested using `--with`
        into another virtual environment and caches it. Previously, uv would invoke
        the Python interpreter in this layered environment. However, this allows poisoning
        the cached environment and introduces race conditions for concurrent invocations.
        Now, uv will layer *another* empty virtual environment on top of the cached
        environment and invoke the Python interpreter there. This should only cause
        breakage in cases where the environment is being inspected at runtime.\n\n
        \ You cannot opt out of this behavior.\n- **Restructure the `uv venv` command
        output and exit codes ([#&#8203;14546](https://redirect.github.com/astral-sh/uv/pull/14546))**\n\n
        \ Previously, uv used `miette` to format the `uv venv` output. However, this
        was inconsistent with most of the uv CLI. Now, the output is a little different
        and the exit code has switched from 1 to 2 for some error cases.\n\n  You
        cannot opt out of this behavior.\n- **Default to `--workspace` when adding
        subdirectories ([#&#8203;14529](https://redirect.github.com/astral-sh/uv/pull/14529))**\n\n
        \ When using `uv add` to add a subdirectory in a workspace, uv now defaults
        to adding the target as a workspace member.\n\n  You can opt out of this behavior
        by providing `--no-workspace`.\n- **Add missing validations for disallowed
        `uv.toml` fields ([#&#8203;14322](https://redirect.github.com/astral-sh/uv/pull/14322))**\n\n
        \ uv does not allow some settings in the `uv.toml`. Previously, some settings
        were silently ignored when present in the `uv.toml`. Now, uv will error.\n\n
        \ You cannot opt out of this behavior. Use `--no-config` or remove the invalid
        settings.\n\n##### Configuration\n\n- Add support for toggling Python bin
        and registry install options via env vars ([#&#8203;14662](https://redirect.github.com/astral-sh/uv/pull/14662))\n\n###
        [`v0.7.22`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.22)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.7.21...0.7.22)\n\n####
        Release Notes\n\n##### Python\n\n- Upgrade GraalPy to 24.2.2\n\nSee the [GraalPy
        release notes](https://redirect.github.com/oracle/graalpython/releases/tag/graal-24.2.2)
        for more details.\n\n##### Configuration\n\n- Add `UV_COMPILE_BYTECODE_TIMEOUT`
        environment variable ([#&#8203;14369](https://redirect.github.com/astral-sh/uv/pull/14369))\n-
        Allow users to override index `cache-control` headers ([#&#8203;14620](https://redirect.github.com/astral-sh/uv/pull/14620))\n-
        Add `UV_LIBC` to override libc selection in multi-libc environment ([#&#8203;14646](https://redirect.github.com/astral-sh/uv/pull/14646))\n\n#####
        Bug fixes\n\n- Fix `--all-arches` when paired with `--only-downloads` ([#&#8203;14629](https://redirect.github.com/astral-sh/uv/pull/14629))\n-
        Skip Windows Python interpreters that return a broken MSIX package code ([#&#8203;14636](https://redirect.github.com/astral-sh/uv/pull/14636))\n-
        Warn on invalid `uv.toml` when provided via direct path ([#&#8203;14653](https://redirect.github.com/astral-sh/uv/pull/14653))\n-
        Improve async signal safety in Windows exception handler ([#&#8203;14619](https://redirect.github.com/astral-sh/uv/pull/14619))\n\n#####
        Documentation\n\n- Mention the `revision` in the lockfile versioning doc ([#&#8203;14634](https://redirect.github.com/astral-sh/uv/pull/14634))\n-
        Move \"Conflicting dependencies\" to the \"Resolution\" page ([#&#8203;14633](https://redirect.github.com/astral-sh/uv/pull/14633))\n-
        Rename \"Dependency specifiers\" section to exclude PEP 508 reference ([#&#8203;14631](https://redirect.github.com/astral-sh/uv/pull/14631))\n-
        Suggest `uv cache clean` prior to `--reinstall` ([#&#8203;14659](https://redirect.github.com/astral-sh/uv/pull/14659))\n\n#####
        Preview features\n\n- Make preview Python registration on Windows non-fatal
        ([#&#8203;14614](https://redirect.github.com/astral-sh/uv/pull/14614))\n-
        Update preview installation of Python executables to be non-fatal ([#&#8203;14612](https://redirect.github.com/astral-sh/uv/pull/14612))\n-
        Add `uv python update-shell` ([#&#8203;14627](https://redirect.github.com/astral-sh/uv/pull/14627))\n\n####
        Install uv 0.7.22\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
        --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.sh
        | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
        -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.ps1
        | iex\"\n```\n\n#### Download uv 0.7.22\n\n|  File  | Platform | Checksum
        |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz)
        | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz.sha256)
        |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz)
        | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz.sha256)
        |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip)
        | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip.sha256)
        |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip)
        | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip.sha256)
        |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip)
        | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip.sha256)
        |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz)
        | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz)
        | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz)
        | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz)
        | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz)
        | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz)
        | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz)
        | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz)
        | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
        |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz)
        | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
        |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz)
        | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz.sha256)
        |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz)
        | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
        |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz)
        | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
        |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz)
        | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
        |\n\n### [`v0.7.21`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.21)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.7.20...0.7.21)\n\n####
        Release Notes\n\n##### Python\n\n- Restore the SQLite `fts4`, `fts5`, `rtree`,
        and `geopoly` extensions on macOS and Linux\n\nSee the [`python-build-standalone`
        release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250712)
        for more details.\n\n##### Enhancements\n\n- Add `--python-platform` to `uv
        sync` ([#&#8203;14320](https://redirect.github.com/astral-sh/uv/pull/14320))\n-
        Support pre-releases in `uv version --bump` ([#&#8203;13578](https://redirect.github.com/astral-sh/uv/pull/13578))\n-
        Add `-w` shorthand for `--with` ([#&#8203;14530](https://redirect.github.com/astral-sh/uv/pull/14530))\n-
        Add an exception handler on Windows to display information on crash ([#&#8203;14582](https://redirect.github.com/astral-sh/uv/pull/14582))\n-
        Add hint when Python downloads are disabled ([#&#8203;14522](https://redirect.github.com/astral-sh/uv/pull/14522))\n-
        Add `UV_HTTP_RETRIES` to customize retry counts ([#&#8203;14544](https://redirect.github.com/astral-sh/uv/pull/14544))\n-
        Follow leaf symlinks matched by globs in `cache-key` ([#&#8203;13438](https://redirect.github.com/astral-sh/uv/pull/13438))\n-
        Support parent path components (`..`) in globs in `cache-key` ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n-
        Improve `cache-key` performance ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n\n#####
        Preview features\n\n- Add `uv sync --output-format json` ([#&#8203;13689](https://redirect.github.com/astral-sh/uv/pull/13689))\n\n#####
        Bug fixes\n\n- Do not re-resolve with a new Python version in `uv tool` if
        it is incompatible with `--python` ([#&#8203;14606](https://redirect.github.com/astral-sh/uv/pull/14606))\n\n#####
        Documentation\n\n- Document how to nest dependency groups with `include-group`
        ([#&#8203;14539](https://redirect.github.com/astral-sh/uv/pull/14539))\n-
        Fix repeated word in Pyodide doc ([#&#8203;14554](https://redirect.github.com/astral-sh/uv/pull/14554))\n-
        Update CONTRIBUTING.md with instructions to format Markdown files via Docker
        ([#&#8203;14246](https://redirect.github.com/astral-sh/uv/pull/14246))\n-
        Fix version number for `setup-python` ([#&#8203;14533](https://redirect.github.com/astral-sh/uv/pull/14533))\n\n####
        Install uv 0.7.21\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
        --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.sh
        | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
        -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.ps1
        | iex\"\n```\n\n#### Download uv 0.7.21\n\n|  File  | Platform | Checksum
        |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz)
        | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz.sha256)
        |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz)
        | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz.sha256)
        |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip)
        | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip.sha256)
        |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip)
        | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip.sha256)
        |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip)
        | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip.sha256)
        |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz)
        | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz)
        | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz)
        | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz)
        | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz)
        | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz)
        | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz)
        | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
        |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz)
        | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
        |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz)
        | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
        |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz)
        | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz.sha256)
        |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz)
        | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
        |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz)
        | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
        |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz)
        | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
        |\n\n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**: Branch
        creation - At any time (no schedule defined), Automerge - At any time (no
        schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config. Please
        merge this manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever
        PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515
        **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
        - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
        box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
        View the [repository job log](https://developer.mend.io/github/osism/container-image-kolla-ansible).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
      change_url: https://github.com/osism/container-image-kolla-ansible/pull/794
      child_jobs: []
      commit_id: 3e64c91ab0abc2808facf7c7559d152fd023aa26
      event_id: 95e1f760-7c99-11f0-8d8b-3e556af819b1
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/a8bb53ce6c0e46f79b516cbdecd6ed3c/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/a8bb53ce6c0e46f79b516cbdecd6ed3c/work/logs
        result_data_file: /var/lib/zuul/builds/a8bb53ce6c0e46f79b516cbdecd6ed3c/work/results.json
        src_root: /var/lib/zuul/builds/a8bb53ce6c0e46f79b516cbdecd6ed3c/work/src
        work_root: /var/lib/zuul/builds/a8bb53ce6c0e46f79b516cbdecd6ed3c/work
      include_vars: []
      items:
      - branch: main
        change: '794'
        change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)
          | stage | minor | `0.7.20` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
          (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
          Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
          the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
          for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc`
          target for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
          Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
          Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
          Bug fixes\n\n- Reject already-installed wheels built with outdated settings
          ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
          Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
          Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
          Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
          Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
          Fix reference documentation recommendation to use `uv cache clean` instead
          of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
          [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
          Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
          Enhancements\n\n- Allow Python requests with missing segments, e.g., just
          `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
          Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
          [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
          Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
          Bug fixes\n\n- Include build settings in cache key for registry source distribution
          lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
          Avoid creating bin links on `uv python upgrade` if they don't already exist
          ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
          Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
          Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
          [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
          Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
          [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
          Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
          shared objects, which fixes matplotlib's `tkagg` backend (the default on
          Linux), Pillow's `PIL.ImageTk` library, and other extension modules that
          need to use libtcl/libtk directly.\n- Tix is no longer provided on Linux.
          This is a deprecated Tk extension that appears to have been previously broken.\n\nSee
          the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
          for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
          `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
          Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
          Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
          Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
          Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
          Preview features\n\n- Add support for `package`-level conflicts in workspaces
          ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
          Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
          `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
          Bug fixes\n\n- Fix regression where `--require-hashes` applied to build
          dependencies in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
          Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
          Include all site packages directories in ephemeral environment overlays
          ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
          Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
          Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
          docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
          [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
          release contains hardening measures to address differentials in behavior
          between uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
          to this release, attackers could construct ZIP files that would be extracted
          differently by pip, uv, and other tools. As a result, ZIPs could be constructed
          that would be considered harmless by (e.g.) scanners, but contain a malicious
          payload when extracted by uv. As of v0.8.6, uv now applies additional checks
          to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
          Response Team](https://devguide.python.org/developer-workflow/psrt/) and
          PyPI maintainers, we were able to determine that these differentials **were
          not exploited** via PyPI during the time they were present. The PyPI team
          has also implemented similar checks and now guards against these parsing
          differentials on upload.\n\nAlthough the practical risk of exploitation
          is low, we take the *hypothetical* risk of parser differentials very seriously.
          Out of an abundance of caution, we have assigned this advisory a CVE identifier
          and have given it a \"moderate\" severity suggestion.\n\nThese changes have
          been validated against the top 15,000 PyPI packages; however, it's plausible
          that a non-malicious ZIP could be falsely rejected with this additional
          hardening. As an escape hatch, users who do encounter breaking changes can
          enable `UV_INSECURE_NO_ZIP_VALIDATION` to restore the previous behavior.
          If you encounter such a rejection, please file an issue in uv and to the
          upstream package.\n\nFor additional information, please refer to the following
          blog posts:\n\n- [Astral: uv security advisory: ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
          [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
          Security\n\n- Harden ZIP streaming to reject repeated entries and other
          malformed ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
          Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
          per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
          Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
          Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
          Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
          Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
          Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
          Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
          Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n###
          [`v0.8.5`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#085)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.4...0.8.5)\n\n#####
          Enhancements\n\n- Enable `uv run` with a GitHub Gist ([#&#8203;15058](https://redirect.github.com/astral-sh/uv/pull/15058))\n-
          Improve HTTP response caching log messages ([#&#8203;15067](https://redirect.github.com/astral-sh/uv/pull/15067))\n-
          Show wheel tag hints in install plan ([#&#8203;15066](https://redirect.github.com/astral-sh/uv/pull/15066))\n-
          Support installing additional executables in `uv tool install` ([#&#8203;14014](https://redirect.github.com/astral-sh/uv/pull/14014))\n\n#####
          Preview features\n\n- Enable extra build dependencies to 'match runtime'
          versions ([#&#8203;15036](https://redirect.github.com/astral-sh/uv/pull/15036))\n-
          Remove duplicate `extra-build-dependencies` warnings for `uv pip` ([#&#8203;15088](https://redirect.github.com/astral-sh/uv/pull/15088))\n-
          Use \"option\" instead of \"setting\" in `pylock` warning ([#&#8203;15089](https://redirect.github.com/astral-sh/uv/pull/15089))\n-
          Respect extra build requires when reading from wheel cache ([#&#8203;15030](https://redirect.github.com/astral-sh/uv/pull/15030))\n-
          Preserve lowered extra build dependencies ([#&#8203;15038](https://redirect.github.com/astral-sh/uv/pull/15038))\n\n#####
          Bug fixes\n\n- Add Python versions to markers implied from wheels ([#&#8203;14913](https://redirect.github.com/astral-sh/uv/pull/14913))\n-
          Ensure consistent indentation when adding dependencies ([#&#8203;14991](https://redirect.github.com/astral-sh/uv/pull/14991))\n-
          Fix handling of `python-preference = system` when managed interpreters are
          on the PATH ([#&#8203;15059](https://redirect.github.com/astral-sh/uv/pull/15059))\n-
          Fix symlink preservation in virtual environment creation ([#&#8203;14933](https://redirect.github.com/astral-sh/uv/pull/14933))\n-
          Gracefully handle entrypoint permission errors ([#&#8203;15026](https://redirect.github.com/astral-sh/uv/pull/15026))\n-
          Include wheel hashes from local Simple indexes ([#&#8203;14993](https://redirect.github.com/astral-sh/uv/pull/14993))\n-
          Prefer system Python installations over managed ones when `--system` is
          used ([#&#8203;15061](https://redirect.github.com/astral-sh/uv/pull/15061))\n-
          Remove retry wrapper when matching on error kind ([#&#8203;14996](https://redirect.github.com/astral-sh/uv/pull/14996))\n-
          Revert `h2` upgrade ([#&#8203;15079](https://redirect.github.com/astral-sh/uv/pull/15079))\n\n#####
          Documentation\n\n- Improve visibility of copy and line separator in dark
          mode ([#&#8203;14987](https://redirect.github.com/astral-sh/uv/pull/14987))\n\n###
          [`v0.8.4`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#084)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.3...0.8.4)\n\n#####
          Enhancements\n\n- Improve styling of warning cause chains  ([#&#8203;14934](https://redirect.github.com/astral-sh/uv/pull/14934))\n-
          Extend wheel filtering to Android tags ([#&#8203;14977](https://redirect.github.com/astral-sh/uv/pull/14977))\n-
          Perform wheel lockfile filtering based on platform and OS intersection ([#&#8203;14976](https://redirect.github.com/astral-sh/uv/pull/14976))\n-
          Clarify messaging when a new resolution needs to be performed ([#&#8203;14938](https://redirect.github.com/astral-sh/uv/pull/14938))\n\n#####
          Preview features\n\n- Add support for extending package's build dependencies
          with `extra-build-dependencies` ([#&#8203;14735](https://redirect.github.com/astral-sh/uv/pull/14735))\n-
          Split preview mode into separate feature flags ([#&#8203;14823](https://redirect.github.com/astral-sh/uv/pull/14823))\n\n#####
          Configuration\n\n- Add support for package specific `exclude-newer` dates
          via `exclude-newer-package` ([#&#8203;14489](https://redirect.github.com/astral-sh/uv/pull/14489))\n\n#####
          Bug fixes\n\n- Avoid invalidating lockfile when path or workspace dependencies
          define explicit indexes ([#&#8203;14876](https://redirect.github.com/astral-sh/uv/pull/14876))\n-
          Copy entrypoints that have a shebang that differs in `python` vs `python3`
          ([#&#8203;14970](https://redirect.github.com/astral-sh/uv/pull/14970))\n-
          Fix incorrect file permissions in wheel packages ([#&#8203;14930](https://redirect.github.com/astral-sh/uv/pull/14930))\n-
          Update validation for `environments` and `required-environments` in `uv.toml`
          ([#&#8203;14905](https://redirect.github.com/astral-sh/uv/pull/14905))\n\n#####
          Documentation\n\n- Show `uv_build` in projects documentation ([#&#8203;14968](https://redirect.github.com/astral-sh/uv/pull/14968))\n-
          Add `UV_` prefix to installer environment variables ([#&#8203;14964](https://redirect.github.com/astral-sh/uv/pull/14964))\n-
          Un-hide `uv` from `--build-backend` options ([#&#8203;14939](https://redirect.github.com/astral-sh/uv/pull/14939))\n-
          Update documentation for preview flags ([#&#8203;14902](https://redirect.github.com/astral-sh/uv/pull/14902))\n\n###
          [`v0.8.3`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#083)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.2...0.8.3)\n\n#####
          Python\n\n- Add CPython 3.14.0rc1\n\nSee the [`python-build-standalone`
          release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250723)
          for more details.\n\n##### Enhancements\n\n- Allow non-standard entrypoint
          names in `uv_build` ([#&#8203;14867](https://redirect.github.com/astral-sh/uv/pull/14867))\n-
          Publish riscv64 wheels to PyPI ([#&#8203;14852](https://redirect.github.com/astral-sh/uv/pull/14852))\n\n#####
          Bug fixes\n\n- Avoid writing redacted credentials to tool receipt ([#&#8203;14855](https://redirect.github.com/astral-sh/uv/pull/14855))\n-
          Respect `--with` versions over base environment versions ([#&#8203;14863](https://redirect.github.com/astral-sh/uv/pull/14863))\n-
          Respect credentials from all defined indexes ([#&#8203;14858](https://redirect.github.com/astral-sh/uv/pull/14858))\n-
          Fix missed stabilization of removal of registry entry during Python uninstall
          ([#&#8203;14859](https://redirect.github.com/astral-sh/uv/pull/14859))\n-
          Improve concurrency safety of Python downloads into cache ([#&#8203;14846](https://redirect.github.com/astral-sh/uv/pull/14846))\n\n#####
          Documentation\n\n- Fix typos in `uv_build` reference documentation ([#&#8203;14853](https://redirect.github.com/astral-sh/uv/pull/14853))\n-
          Move the \"Cargo\" install method further down in docs ([#&#8203;14842](https://redirect.github.com/astral-sh/uv/pull/14842))\n\n###
          [`v0.8.2`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#082)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.1...0.8.2)\n\n#####
          Enhancements\n\n- Add derivation chains for dependency errors ([#&#8203;14824](https://redirect.github.com/astral-sh/uv/pull/14824))\n\n#####
          Configuration\n\n- Add `UV_INIT_BUILD_BACKEND` ([#&#8203;14821](https://redirect.github.com/astral-sh/uv/pull/14821))\n\n#####
          Bug fixes\n\n- Avoid reading files in the environment bin that are not entrypoints
          ([#&#8203;14830](https://redirect.github.com/astral-sh/uv/pull/14830))\n-
          Avoid removing empty directories when constructing virtual environments
          ([#&#8203;14822](https://redirect.github.com/astral-sh/uv/pull/14822))\n-
          Preserve index URL priority order when writing to pyproject.toml ([#&#8203;14831](https://redirect.github.com/astral-sh/uv/pull/14831))\n\n#####
          Rust API\n\n- Expose `tls_built_in_root_certs` for client ([#&#8203;14816](https://redirect.github.com/astral-sh/uv/pull/14816))\n\n#####
          Documentation\n\n- Archive the 0.7.x changelog ([#&#8203;14819](https://redirect.github.com/astral-sh/uv/pull/14819))\n\n###
          [`v0.8.1`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.0...0.8.1)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.0`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#080)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.22...0.8.0)\n\nSince
          we released uv [0.7.0](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.0)
          in April, we've accumulated various changes that improve correctness and
          user experience, but could break some workflows. This release contains those
          changes; many have been marked as breaking out of an abundance of caution.
          We expect most users to be able to upgrade without making changes.\n\nThis
          release also includes the stabilization of a couple `uv python install`
          features, which have been available under preview since late last year.\n\n#####
          Breaking changes\n\n- **Install Python executables into a directory on the
          `PATH` ([#&#8203;14626](https://redirect.github.com/astral-sh/uv/pull/14626))**\n\n
          \ `uv python install` now installs a versioned Python executable (e.g.,
          `python3.13`) into a directory on the `PATH` (e.g., `~/.local/bin`) by default.
          This behavior has been available under the `--preview` flag since [Oct 2024](https://redirect.github.com/astral-sh/uv/pull/8458).
          This change should not be breaking unless it shadows a Python executable
          elsewhere on the `PATH`.\n\n  To install unversioned executables, i.e.,
          `python3` and `python`, use the `--default` flag. The `--default` flag has
          also been in preview, but is not stabilized in this release.\n\n  Note that
          these executables point to the base Python installation and only include
          the standard library. That means they will not include dependencies from
          your current project (use `uv run python` instead) and you cannot install
          packages into their environment (use `uvx --with <package> python` instead).\n\n
          \ As with tool installation, the target directory respects common variables
          like `XDG_BIN_HOME` and can be overridden with a `UV_PYTHON_BIN_DIR` variable.\n\n
          \ You can opt out of this behavior with `uv python install --no-bin` or
          `UV_PYTHON_INSTALL_BIN=0`.\n\n  See the [documentation on installing Python
          executables](https://docs.astral.sh/uv/concepts/python-versions/#installing-python-executables)
          for more details.\n- **Register Python versions with the Windows Registry
          ([#&#8203;14625](https://redirect.github.com/astral-sh/uv/pull/14625))**\n\n
          \ `uv python install` now registers the installed Python version with the
          Windows Registry as specified by [PEP 514](https://peps.python.org/pep-0514/).
          This allows using uv installed Python versions via the `py` launcher. This
          behavior has been available under the `--preview` flag since [Jan 2025](https://redirect.github.com/astral-sh/uv/pull/10634).
          This change should not be breaking, as using the uv Python versions with
          `py` requires explicit opt in.\n\n  You can opt out of this behavior with
          `uv python install --no-registry` or `UV_PYTHON_INSTALL_REGISTRY=0`.\n-
          **Prompt before removing an existing directory in `uv venv` ([#&#8203;14309](https://redirect.github.com/astral-sh/uv/pull/14309))**\n\n
          \ Previously, `uv venv` would remove an existing virtual environment without
          confirmation. While this is consistent with the behavior of project commands
          (e.g., `uv sync`), it's surprising to users that are using imperative workflows
          (i.e., `uv pip`). Now, `uv venv` will prompt for confirmation before removing
          an existing virtual environment. **If not in an interactive context, uv
          will still remove the virtual environment for backwards compatibility. However,
          this behavior is likely to change in a future release.**\n\n  The behavior
          for other commands (e.g., `uv sync`) is unchanged.\n\n  You can opt out
          of this behavior by setting `UV_VENV_CLEAR=1` or passing the `--clear` flag.\n-
          **Validate that discovered interpreters meet the Python preference ([#&#8203;7934](https://redirect.github.com/astral-sh/uv/pull/7934))**\n\n
          \ uv allows opting out of its managed Python versions with the `--no-managed-python`
          and `python-preference` options.\n\n  Previously, uv would not enforce this
          option for Python interpreters discovered on the `PATH`. For example, if
          a symlink to a managed Python interpreter was created, uv would allow it
          to be used even if `--no-managed-python` was provided. Now, uv ignores Python
          interpreters that do not match the Python preference *unless* they are in
          an active virtual environment or are explicitly requested, e.g., with `--python
          /path/to/python3.13`.\n\n  Similarly, uv would previously not invalidate
          existing project environments if they did not match the Python preference.
          Now, uv will invalidate and recreate project environments when the Python
          preference changes.\n\n  You can opt out of this behavior by providing the
          explicit path to the Python interpreter providing `--managed-python` / `--no-managed-python`
          matching the interpreter you want.\n- **Install dependencies without build
          systems when they are `path` sources ([#&#8203;14413](https://redirect.github.com/astral-sh/uv/pull/14413))**\n\n
          \ When working on a project, uv uses the [presence of a build system](https://docs.astral.sh/uv/concepts/projects/config/#build-systems)
          to determine if it should be built and installed into the environment. However,
          when a project is a dependency of another project, it can be surprising
          for the dependency to be missing from the environment.\n\n  Previously,
          uv would not build and install dependencies with [`path` sources](https://docs.astral.sh/uv/concepts/projects/dependencies/#path)
          unless they declared a build system or set `tool.uv.package = true`. Now,
          dependencies with `path` sources are built and installed regardless of the
          presence of a build system. If a build system is not present, the `setuptools.build_meta:__legacy__
          ` backend will be used (per [PEP 517](https://peps.python.org/pep-0517/#source-trees)).\n\n
          \ You can opt out of this behavior by setting `package = false` in the source
          declaration, e.g.:\n\n  ```toml\n  [tool.uv.sources]\n  foo = { path = \"./foo\",
          package = false }\n  ```\n\n  Or, by setting `tool.uv.package = false` in
          the dependent `pyproject.toml`.\n\n  See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
          for details.\n- **Install dependencies without build systems when they are
          workspace members ([#&#8203;14663](https://redirect.github.com/astral-sh/uv/pull/14663))**\n\n
          \ As described above for dependencies with `path` sources, uv previously
          would not build and install workspace members that did not declare a build
          system. Now, uv will build and install workspace members that are a dependency
          of *another* workspace member regardless of the presence of a build system.
          The behavior is unchanged for workspace members that are not included in
          the `project.dependencies`, `project.optional-dependencies`, or `dependency-groups`
          tables of another workspace member.\n\n  You can opt out of this behavior
          by setting `tool.uv.package = false` in the workspace member's `pyproject.toml`.\n\n
          \ See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies)
          for details.\n- **Bump `--python-platform linux` to `manylinux_2_28` ([#&#8203;14300](https://redirect.github.com/astral-sh/uv/pull/14300))**\n\n
          \ uv allows performing [platform-specific resolution](https://docs.astral.sh/uv/concepts/resolution/#platform-specific-resolution)
          for explicit targets and provides short aliases, e.g., `linux`, for common
          targets.\n\n  Previously, the default target for `--python-platform linux`
          was `manylinux_2_17`, which is compatible with most Linux distributions
          from 2014 or newer. We now default to `manylinux_2_28`, which is compatible
          with most Linux distributions from 2019 or newer.  This change follows the
          lead of other tools, such as `cibuildwheel`, which changed their default
          to `manylinux_2_28` in [Mar 2025](https://redirect.github.com/pypa/cibuildwheel/pull/2330).\n\n
          \ This change only affects users requesting a specific target platform.
          Otherwise, uv detects the `manylinux` target from your local glibc version.\n\n
          \ You can opt out of this behavior by using `--python-platform x86_64-manylinux_2_17`
          instead.\n- **Remove `uv version` fallback ([#&#8203;14161](https://redirect.github.com/astral-sh/uv/pull/14161))**\n\n
          \ In [Apr 2025](https://redirect.github.com/astral-sh/uv/pull/12349), uv
          changed the `uv version` command to an interface for viewing and updating
          the version of the current project. However, when outside a project, `uv
          version` would continue to display uv's version for backwards compatibility.
          Now, when used outside of a project, `uv version` will fail.\n\n  You cannot
          opt out of this behavior. Use `uv self version` instead.\n- **Require `--global`
          for removal of the global Python pin ([#&#8203;14169](https://redirect.github.com/astral-sh/uv/pull/14169))**\n\n
          \ Previously, `uv python pin --rm` would allow you to remove the global
          Python pin without opt in. Now, uv requires the `--global` flag to remove
          the global Python pin.\n\n  You cannot opt out of this behavior. Use the
          `--global` flag instead.\n- **Support conflicting editable settings across
          groups ([#&#8203;14197](https://redirect.github.com/astral-sh/uv/pull/14197))**\n\n
          \ Previously, uv would always treat a package as editable if any requirement
          requested it as editable. However, this prevented users from declaring `path`
          sources that toggled the `editable` setting across dependency groups. Now,
          uv allows declaring different `editable` values for conflicting groups.
          However, if a project includes a path dependency twice, once with `editable
          = true` and once without any editable annotation, those are now considered
          conflicting, and uv will exit with an error.\n\n  You cannot opt out of
          this behavior. Use consistent `editable` settings or [mark groups as conflicting](https://docs.astral.sh/uv/concepts/projects/config/#conflicting-dependencies).\n-
          **Make `uv_build` the default build backend in `uv init` ([#&#8203;14661](https://redirect.github.com/astral-sh/uv/pull/14661))**\n\n
          \ The uv build backend (`uv_build`) was [stabilized in uv 0.7.19](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.19).
          Now, it is the default build backend for `uv init --package` and `uv init
          --lib`. Previously, `hatchling` was the default build backend. A build backend
          is still not used without opt-in in `uv init`, but we expect to change this
          in a future release.\n\n  You can opt out of this behavior with `uv init
          --build-backend hatchling`.\n- **Set default `UV_TOOL_BIN_DIR` on Docker
          images ([#&#8203;13391](https://redirect.github.com/astral-sh/uv/pull/13391))**\n\n
          \ Previously, `UV_TOOL_BIN_DIR` was not set in Docker images which meant
          that `uv tool install` did not install tools into a directory on the `PATH`
          without additional configuration. Now, `UV_TOOL_BIN_DIR` is set to `/usr/local/bin`
          in all Docker derived images.\n\n  When the default image user is overridden
          (e.g. `USER <UID>`) with a less privileged user, this may cause `uv tool
          install` to fail.\n\n  You can opt out of this behavior by setting an alternative
          `UV_TOOL_BIN_DIR`.\n- **Update `--check` to return an exit code of 1 ([#&#8203;14167](https://redirect.github.com/astral-sh/uv/pull/14167))**\n\n
          \ uv uses an exit code of 1 to indicate a \"successful failure\" and an
          exit code of 2 to indicate an \"error\".\n\n  Previously, `uv lock --check`
          and `uv sync --check` would exit with a code of 2 when the lockfile or environment
          were outdated. Now, uv will exit with a code of 1.\n\n  You cannot opt out
          of this behavior.\n- **Use an ephemeral environment for `uv run --with`
          invocations ([#&#8203;14447](https://redirect.github.com/astral-sh/uv/pull/14447))**\n\n
          \ When using `uv run --with`, uv layers the requirements requested using
          `--with` into another virtual environment and caches it. Previously, uv
          would invoke the Python interpreter in this layered environment. However,
          this allows poisoning the cached environment and introduces race conditions
          for concurrent invocations. Now, uv will layer *another* empty virtual environment
          on top of the cached environment and invoke the Python interpreter there.
          This should only cause breakage in cases where the environment is being
          inspected at runtime.\n\n  You cannot opt out of this behavior.\n- **Restructure
          the `uv venv` command output and exit codes ([#&#8203;14546](https://redirect.github.com/astral-sh/uv/pull/14546))**\n\n
          \ Previously, uv used `miette` to format the `uv venv` output. However,
          this was inconsistent with most of the uv CLI. Now, the output is a little
          different and the exit code has switched from 1 to 2 for some error cases.\n\n
          \ You cannot opt out of this behavior.\n- **Default to `--workspace` when
          adding subdirectories ([#&#8203;14529](https://redirect.github.com/astral-sh/uv/pull/14529))**\n\n
          \ When using `uv add` to add a subdirectory in a workspace, uv now defaults
          to adding the target as a workspace member.\n\n  You can opt out of this
          behavior by providing `--no-workspace`.\n- **Add missing validations for
          disallowed `uv.toml` fields ([#&#8203;14322](https://redirect.github.com/astral-sh/uv/pull/14322))**\n\n
          \ uv does not allow some settings in the `uv.toml`. Previously, some settings
          were silently ignored when present in the `uv.toml`. Now, uv will error.\n\n
          \ You cannot opt out of this behavior. Use `--no-config` or remove the invalid
          settings.\n\n##### Configuration\n\n- Add support for toggling Python bin
          and registry install options via env vars ([#&#8203;14662](https://redirect.github.com/astral-sh/uv/pull/14662))\n\n###
          [`v0.7.22`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.22)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.21...0.7.22)\n\n####
          Release Notes\n\n##### Python\n\n- Upgrade GraalPy to 24.2.2\n\nSee the
          [GraalPy release notes](https://redirect.github.com/oracle/graalpython/releases/tag/graal-24.2.2)
          for more details.\n\n##### Configuration\n\n- Add `UV_COMPILE_BYTECODE_TIMEOUT`
          environment variable ([#&#8203;14369](https://redirect.github.com/astral-sh/uv/pull/14369))\n-
          Allow users to override index `cache-control` headers ([#&#8203;14620](https://redirect.github.com/astral-sh/uv/pull/14620))\n-
          Add `UV_LIBC` to override libc selection in multi-libc environment ([#&#8203;14646](https://redirect.github.com/astral-sh/uv/pull/14646))\n\n#####
          Bug fixes\n\n- Fix `--all-arches` when paired with `--only-downloads` ([#&#8203;14629](https://redirect.github.com/astral-sh/uv/pull/14629))\n-
          Skip Windows Python interpreters that return a broken MSIX package code
          ([#&#8203;14636](https://redirect.github.com/astral-sh/uv/pull/14636))\n-
          Warn on invalid `uv.toml` when provided via direct path ([#&#8203;14653](https://redirect.github.com/astral-sh/uv/pull/14653))\n-
          Improve async signal safety in Windows exception handler ([#&#8203;14619](https://redirect.github.com/astral-sh/uv/pull/14619))\n\n#####
          Documentation\n\n- Mention the `revision` in the lockfile versioning doc
          ([#&#8203;14634](https://redirect.github.com/astral-sh/uv/pull/14634))\n-
          Move \"Conflicting dependencies\" to the \"Resolution\" page ([#&#8203;14633](https://redirect.github.com/astral-sh/uv/pull/14633))\n-
          Rename \"Dependency specifiers\" section to exclude PEP 508 reference ([#&#8203;14631](https://redirect.github.com/astral-sh/uv/pull/14631))\n-
          Suggest `uv cache clean` prior to `--reinstall` ([#&#8203;14659](https://redirect.github.com/astral-sh/uv/pull/14659))\n\n#####
          Preview features\n\n- Make preview Python registration on Windows non-fatal
          ([#&#8203;14614](https://redirect.github.com/astral-sh/uv/pull/14614))\n-
          Update preview installation of Python executables to be non-fatal ([#&#8203;14612](https://redirect.github.com/astral-sh/uv/pull/14612))\n-
          Add `uv python update-shell` ([#&#8203;14627](https://redirect.github.com/astral-sh/uv/pull/14627))\n\n####
          Install uv 0.7.22\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
          --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.sh
          | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
          -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.22/uv-installer.ps1
          | iex\"\n```\n\n#### Download uv 0.7.22\n\n|  File  | Platform | Checksum
          |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz)
          | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-apple-darwin.tar.gz.sha256)
          |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz)
          | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-apple-darwin.tar.gz.sha256)
          |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip)
          | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-pc-windows-msvc.zip.sha256)
          |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip)
          | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-pc-windows-msvc.zip.sha256)
          |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip)
          | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-pc-windows-msvc.zip.sha256)
          |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz)
          | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz)
          | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz)
          | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz)
          | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz)
          | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz)
          | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz)
          | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz)
          | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
          |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz)
          | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz)
          | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-i686-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz)
          | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz)
          | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz)
          | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.22/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
          |\n\n### [`v0.7.21`](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.21)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.7.20...0.7.21)\n\n####
          Release Notes\n\n##### Python\n\n- Restore the SQLite `fts4`, `fts5`, `rtree`,
          and `geopoly` extensions on macOS and Linux\n\nSee the [`python-build-standalone`
          release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250712)
          for more details.\n\n##### Enhancements\n\n- Add `--python-platform` to
          `uv sync` ([#&#8203;14320](https://redirect.github.com/astral-sh/uv/pull/14320))\n-
          Support pre-releases in `uv version --bump` ([#&#8203;13578](https://redirect.github.com/astral-sh/uv/pull/13578))\n-
          Add `-w` shorthand for `--with` ([#&#8203;14530](https://redirect.github.com/astral-sh/uv/pull/14530))\n-
          Add an exception handler on Windows to display information on crash ([#&#8203;14582](https://redirect.github.com/astral-sh/uv/pull/14582))\n-
          Add hint when Python downloads are disabled ([#&#8203;14522](https://redirect.github.com/astral-sh/uv/pull/14522))\n-
          Add `UV_HTTP_RETRIES` to customize retry counts ([#&#8203;14544](https://redirect.github.com/astral-sh/uv/pull/14544))\n-
          Follow leaf symlinks matched by globs in `cache-key` ([#&#8203;13438](https://redirect.github.com/astral-sh/uv/pull/13438))\n-
          Support parent path components (`..`) in globs in `cache-key` ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n-
          Improve `cache-key` performance ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469))\n\n#####
          Preview features\n\n- Add `uv sync --output-format json` ([#&#8203;13689](https://redirect.github.com/astral-sh/uv/pull/13689))\n\n#####
          Bug fixes\n\n- Do not re-resolve with a new Python version in `uv tool`
          if it is incompatible with `--python` ([#&#8203;14606](https://redirect.github.com/astral-sh/uv/pull/14606))\n\n#####
          Documentation\n\n- Document how to nest dependency groups with `include-group`
          ([#&#8203;14539](https://redirect.github.com/astral-sh/uv/pull/14539))\n-
          Fix repeated word in Pyodide doc ([#&#8203;14554](https://redirect.github.com/astral-sh/uv/pull/14554))\n-
          Update CONTRIBUTING.md with instructions to format Markdown files via Docker
          ([#&#8203;14246](https://redirect.github.com/astral-sh/uv/pull/14246))\n-
          Fix version number for `setup-python` ([#&#8203;14533](https://redirect.github.com/astral-sh/uv/pull/14533))\n\n####
          Install uv 0.7.21\n\n##### Install prebuilt binaries via shell script\n\n```sh\ncurl
          --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.sh
          | sh\n```\n\n##### Install prebuilt binaries via powershell script\n\n```sh\npowershell
          -ExecutionPolicy Bypass -c \"irm https://github.com/astral-sh/uv/releases/download/0.7.21/uv-installer.ps1
          | iex\"\n```\n\n#### Download uv 0.7.21\n\n|  File  | Platform | Checksum
          |\n|--------|----------|----------|\n| [uv-aarch64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz)
          | Apple Silicon macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-apple-darwin.tar.gz.sha256)
          |\n| [uv-x86\\_64-apple-darwin.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz)
          | Intel macOS | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-apple-darwin.tar.gz.sha256)
          |\n| [uv-aarch64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip)
          | ARM64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-pc-windows-msvc.zip.sha256)
          |\n| [uv-i686-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip)
          | x86 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-pc-windows-msvc.zip.sha256)
          |\n| [uv-x86\\_64-pc-windows-msvc.zip](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip)
          | x64 Windows | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-pc-windows-msvc.zip.sha256)
          |\n| [uv-aarch64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz)
          | ARM64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz)
          | x86 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz)
          | PPC64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz)
          | PPC64LE Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz)
          | RISCV Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-s390x-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz)
          | S390x Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-s390x-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-gnu.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz)
          | x64 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-gnu.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz)
          | ARMv7 Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256)
          |\n| [uv-aarch64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz)
          | ARM64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-aarch64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-i686-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz)
          | x86 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-i686-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-x86\\_64-unknown-linux-musl.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz)
          | x64 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-x86_64-unknown-linux-musl.tar.gz.sha256)
          |\n| [uv-arm-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz)
          | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-arm-unknown-linux-musleabihf.tar.gz.sha256)
          |\n| [uv-armv7-unknown-linux-musleabihf.tar.gz](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz)
          | ARMv7 MUSL Linux | [checksum](https://redirect.github.com/astral-sh/uv/releases/download/0.7.21/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256)
          |\n\n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**:
          Branch creation - At any time (no schedule defined), Automerge - At any
          time (no schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config.
          Please merge this manually once you are satisfied.\n\n\u267B **Rebasing**:
          Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/osism/container-image-kolla-ansible).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/container-image-kolla-ansible/pull/794
        commit_id: 3e64c91ab0abc2808facf7c7559d152fd023aa26
        patchset: 3e64c91ab0abc2808facf7c7559d152fd023aa26
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-kolla-ansible
          name: osism/container-image-kolla-ansible
          short_name: container-image-kolla-ansible
          src_dir: src/github.com/osism/container-image-kolla-ansible
        topic: null
      job: ansible-lint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBnaGNyLmlvL2FzdHJhbC1zaC91diBkb2NrZXIgdGFnIHRvIHYwLjguMTIKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVHlwZSB8IFVwZGF0ZSB8IENoYW5nZSB8CnwtLS18LS0tfC0tLXwtLS18CnwgW2doY3IuaW8vYXN0cmFsLXNoL3V2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2KSB8IHN0YWdlIHwgbWlub3IgfCBgMC43LjIwYCAtPiBgMC44LjEyYCB8CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+YXN0cmFsLXNoL3V2IChnaGNyLmlvL2FzdHJhbC1zaC91dik8L3N1bW1hcnk+CgojIyMgW2B2MC44LjEyYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4MTIpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguMTEuLi4wLjguMTIpCgojIyMjIyBQeXRob24KCi0gQWRkIDMuMTMuNwotIEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgenN0ZCBpbiBQeXRob24gMy4xNAoKU2VlIHRoZSBbcHl0aG9uLWJ1aWxkLXN0YW5kYWxvbmUgcmVsZWFzZSBub3Rlc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC9weXRob24tYnVpbGQtc3RhbmRhbG9uZS9yZWxlYXNlcy90YWcvMjAyNTA4MTgpIGZvciBkZXRhaWxzLgoKIyMjIyMgRW5oYW5jZW1lbnRzCgotIEFkZCBhbiBgYWFyY2g2NC1wYy13aW5kb3dzLW1zdmNgIHRhcmdldCBmb3IgYHB5dGhvbi1wbGF0Zm9ybWAgKFsjJiM4MjAzOzE1MzQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUzNDcpKQotIEFkZCBmYWxsYmFjayBwYXJlbnQgcHJvY2VzcyBkZXRlY3Rpb24gdG8gYHV2IHRvb2wgdXBkYXRlLXNoZWxsYCAoWyMmIzgyMDM7MTUzNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTM1NikpCi0gSW5zdGFsbCBub24tYnVpbGQtaXNvbGF0aW9uIHBhY2thZ2VzIGluIGEgc2Vjb25kIHBoYXNlIChbIyYjODIwMzsxNTMwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MzA2KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSBSZWplY3QgYWxyZWFkeS1pbnN0YWxsZWQgd2hlZWxzIGJ1aWx0IHdpdGggb3V0ZGF0ZWQgc2V0dGluZ3MgKFsjJiM4MjAzOzE1Mjg5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyODkpKQotIFNraXAgaW50ZXJwcmV0ZXJzIHRoYXQgYXJlIG5vdCBmb3VuZCBvbiBxdWVyeSAoWyMmIzgyMDM7MTUzMTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTMxNSkpCi0gSGFuZGxlIGRvdHRlZCBwYWNrYWdlIG5hbWVzIGluIHNjcmlwdCBwYXRoIHJlc29sdXRpb24gKFsjJiM4MjAzOzE1MzAwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUzMDApKQotIFJlamVjdCBgbWF0Y2gtcnVudGltZSA9IHRydWVgIGZvciBkeW5hbWljIHBhY2thZ2VzIChbIyYjODIwMzsxNTI5Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MjkyKSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gRG9jdW1lbnQgaW1wcm92ZW1lbnRzIHRvIGJ1aWxkLWlzb2xhdGlvbiBzZXR1cHMgKFsjJiM4MjAzOzE1MzI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUzMjYpKQotIEZpeCByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiByZWNvbW1lbmRhdGlvbiB0byB1c2UgYHV2IGNhY2hlIGNsZWFuYCBpbnN0ZWFkIG9mIGBjbGVhcmAgKFsjJiM4MjAzOzE1MzEzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUzMTMpKQoKIyMjIFtgdjAuOC4xMWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwODExKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC44LjEwLi4uMC44LjExKQoKIyMjIyMgUHl0aG9uCgotIEFkZCBQeXRob24gMy4xNC4wcmMyCi0gVXBkYXRlIFB5b2RpZGUgdG8gMC4yOC4xCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gQWRkIERlYmlhbiAxMyB0cml4aWUgdG8gcHVibGlzaGVkIERvY2tlciBpbWFnZXMgKFsjJiM4MjAzOzE1MjY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyNjkpKQotIEFkZCBgZXh0cmEtYnVpbGQtZGVwZW5kZW5jaWVzYCBoaW50IGZvciBhbnkgbWlzc2luZyBtb2R1bGUgb24gYnVpbGQgZmFpbHVyZSAoWyMmIzgyMDM7MTUyNTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI1MikpCi0gTWFrZSAndicgcHJlZml4IGN5YW4gaW4gb3ZlcmxhcCB3YXJuaW5ncyAoWyMmIzgyMDM7MTUyNTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI1OSkpCgojIyMjIyBCdWcgZml4ZXMKCi0gRml4IG1pc3NpbmcgdXYgdmVyc2lvbiBpbiBleHRlbmRlZCBEb2NrZXIgaW1hZ2UgdGFncyAoWyMmIzgyMDM7MTUyNjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI2MykpCi0gUGVyc2lzdCBjYWNoZSBpbmZvIHdoZW4gcmUtaW5zdGFsbGluZyBjYWNoZWQgd2hlZWxzIChbIyYjODIwMzsxNTI3NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1Mjc0KSkKCiMjIyMjIFJ1c3QgQVBJCgotIEFsbG93IHBhc3NpbmcgY3VzdG9tIGByZXF3ZXN0YCBjbGllbnRzIHRvIGBSZWdpc3RyeUNsaWVudGAgKFsjJiM4MjAzOzE1MjgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyODEpKQoKIyMjIFtgdjAuOC4xMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwODEwKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC44LjkuLi4wLjguMTApCgojIyMjIyBQeXRob24KCi0gQWRkIHN1cHBvcnQgZm9yIGluc3RhbGxpbmcgUHlvZGlkZSB2ZXJzaW9ucyAoWyMmIzgyMDM7MTQ1MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDUxOCkpCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gQWxsb3cgUHl0aG9uIHJlcXVlc3RzIHdpdGggbWlzc2luZyBzZWdtZW50cywgZS5nLiwganVzdCBgYWFyY2g2NGAgKFsjJiM4MjAzOzE0Mzk5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQzOTkpKQoKIyMjIyMgUHJldmlldwoKLSBNb3ZlIHdhcm5pbmdzIGZvciBjb25mbGljdGluZyBtb2R1bGVzIGludG8gcHJldmlldyAoWyMmIzgyMDM7MTUyNTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI1MykpCgojIyMgW2B2MC44LjlgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDg5KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC44LjguLi4wLjguOSkKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSBBZGQgYC0tcmVpbnN0YWxsYCBmbGFnIHRvIGB1diBweXRob24gdXBncmFkZWAgKFsjJiM4MjAzOzE1MTk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxOTQpKQoKIyMjIyMgQnVnIGZpeGVzCgotIEluY2x1ZGUgYnVpbGQgc2V0dGluZ3MgaW4gY2FjaGUga2V5IGZvciByZWdpc3RyeSBzb3VyY2UgZGlzdHJpYnV0aW9uIGxvb2t1cHMgKFsjJiM4MjAzOzE1MjI1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyMjUpKQotIEF2b2lkIGNyZWF0aW5nIGJpbiBsaW5rcyBvbiBgdXYgcHl0aG9uIHVwZ3JhZGVgIGlmIHRoZXkgZG9uJ3QgYWxyZWFkeSBleGlzdCAoWyMmIzgyMDM7MTUxOTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTE5MikpCi0gUmVzcGVjdCBzeXN0ZW0gcHJveGllcyBvbiBtYWNPUyBhbmQgV2luZG93cyAoWyMmIzgyMDM7MTUyMjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTIyMSkpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotIEFkZCB0aGUgMy4xNCBjbGFzc2lmaWVyIChbIyYjODIwMzsxNTE4N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTg3KSkKCiMjIyBbYHYwLjguOGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwODgpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguNy4uLjAuOC44KQoKIyMjIyMgQnVnIGZpeGVzCgotIEZpeCBgZmluZF91dl9iaW5gIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gPDMuMTAgKFsjJiM4MjAzOzE1MTc3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxNzcpKQoKIyMjIFtgdjAuOC43YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4NykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuOC42Li4uMC44LjcpCgojIyMjIyBQeXRob24KCi0gT24gTWFjL0xpbnV4LCBsaWJ0Y2wsIGxpYnRrLCBhbmQgXF90a2ludGVyIGFyZSBidWlsdCBhcyBzZXBhcmF0ZSBzaGFyZWQgb2JqZWN0cywgd2hpY2ggZml4ZXMgbWF0cGxvdGxpYidzIGB0a2FnZ2AgYmFja2VuZCAodGhlIGRlZmF1bHQgb24gTGludXgpLCBQaWxsb3cncyBgUElMLkltYWdlVGtgIGxpYnJhcnksIGFuZCBvdGhlciBleHRlbnNpb24gbW9kdWxlcyB0aGF0IG5lZWQgdG8gdXNlIGxpYnRjbC9saWJ0ayBkaXJlY3RseS4KLSBUaXggaXMgbm8gbG9uZ2VyIHByb3ZpZGVkIG9uIExpbnV4LiBUaGlzIGlzIGEgZGVwcmVjYXRlZCBUayBleHRlbnNpb24gdGhhdCBhcHBlYXJzIHRvIGhhdmUgYmVlbiBwcmV2aW91c2x5IGJyb2tlbi4KClNlZSB0aGUgW2BweXRob24tYnVpbGQtc3RhbmRhbG9uZWAgcmVsZWFzZSBub3Rlc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC9weXRob24tYnVpbGQtc3RhbmRhbG9uZS9yZWxlYXNlcy90YWcvMjAyNTA4MDgpIGZvciBkZXRhaWxzLgoKIyMjIyMgRW5oYW5jZW1lbnRzCgotIERvIG5vdCB1cGRhdGUgYHV2LmxvY2tgIHdoZW4gdXNpbmcgYC0taXNvbGF0ZWRgIChbIyYjODIwMzsxNTE1NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTU0KSkKLSBBZGQgc3VwcG9ydCBmb3IgYC0tcHJlZml4YCBhbmQgYC0td2l0aGAgaW5zdGFsbGF0aW9ucyBpbiBgZmluZF91dl9iaW5gIChbIyYjODIwMzsxNDE4NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0MTg0KSkKLSBBZGQgc3VwcG9ydCBmb3IgZGlzY292ZXJpbmcgYmFzZSBwcmVmaXggaW5zdGFsbGF0aW9ucyBpbiBgZmluZF91dl9iaW5gIChbIyYjODIwMzsxNDE4MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0MTgxKSkKLSBJbXByb3ZlIGVycm9yIG1lc3NhZ2VzIGluIGBmaW5kX3V2X2JpbmAgKFsjJiM4MjAzOzE0MTgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQxODIpKQotIFdhcm4gd2hlbiB0d28gcGFja2FnZXMgd3JpdGUgdG8gdGhlIHNhbWUgbW9kdWxlIChbIyYjODIwMzsxMzQzN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzNDM3KSkKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gQWRkIHN1cHBvcnQgZm9yIGBwYWNrYWdlYC1sZXZlbCBjb25mbGljdHMgaW4gd29ya3NwYWNlcyAoWyMmIzgyMDM7MTQ5MDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDkwNikpCgojIyMjIyBDb25maWd1cmF0aW9uCgotIEFkZCBgVVZfREVWYCBhbmQgYFVWX05PX0RFVmAgZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgYC0tZGV2YCBhbmQgYC0tbm8tZGV2YCkgKFsjJiM4MjAzOzE1MDEwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwMTApKQoKIyMjIyMgQnVnIGZpeGVzCgotIEZpeCByZWdyZXNzaW9uIHdoZXJlIGAtLXJlcXVpcmUtaGFzaGVzYCBhcHBsaWVkIHRvIGJ1aWxkIGRlcGVuZGVuY2llcyBpbiBgdXYgcGlwIGluc3RhbGxgIChbIyYjODIwMzsxNTE1M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTUzKSkKLSBJZ25vcmUgR3JhYWxQeSBkZXZ0YWdzIChbIyYjODIwMzsxNTAxM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDEzKSkKLSBJbmNsdWRlIGFsbCBzaXRlIHBhY2thZ2VzIGRpcmVjdG9yaWVzIGluIGVwaGVtZXJhbCBlbnZpcm9ubWVudCBvdmVybGF5cyAoWyMmIzgyMDM7MTUxMjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTEyMSkpCi0gU2VhcmNoIGluIHRoZSB1c2VyIHNjaGVtZSBzY3JpcHRzIGRpcmVjdG9yeSBsYXN0IGluIGBmaW5kX3V2X2JpbmAgKFsjJiM4MjAzOzE0MTkxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQxOTEpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSBBZGQgbWlzc2luZyBwZXJpb2RzIChgLmApIHRvIGxpc3QgZWxlbWVudHMgaW4gYEZlYXR1cmVzYCBkb2NzIHBhZ2UgKFsjJiM4MjAzOzE1MTM4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxMzgpKQoKIyMjIFtgdjAuOC42YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4NikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuOC41Li4uMC44LjYpCgpUaGlzIHJlbGVhc2UgY29udGFpbnMgaGFyZGVuaW5nIG1lYXN1cmVzIHRvIGFkZHJlc3MgZGlmZmVyZW50aWFscyBpbiBiZWhhdmlvciBiZXR3ZWVuIHV2IGFuZCBQeXRob24ncyBidWlsdC1pbiBaSVAgcGFyc2VyIChbQ1ZFLTIwMjUtNTQzNjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLThxZjMteDh2NS0ycGo4KSkuCgpQcmlvciB0byB0aGlzIHJlbGVhc2UsIGF0dGFja2VycyBjb3VsZCBjb25zdHJ1Y3QgWklQIGZpbGVzIHRoYXQgd291bGQgYmUgZXh0cmFjdGVkIGRpZmZlcmVudGx5IGJ5IHBpcCwgdXYsIGFuZCBvdGhlciB0b29scy4gQXMgYSByZXN1bHQsIFpJUHMgY291bGQgYmUgY29uc3RydWN0ZWQgdGhhdCB3b3VsZCBiZSBjb25zaWRlcmVkIGhhcm1sZXNzIGJ5IChlLmcuKSBzY2FubmVycywgYnV0IGNvbnRhaW4gYSBtYWxpY2lvdXMgcGF5bG9hZCB3aGVuIGV4dHJhY3RlZCBieSB1di4gQXMgb2YgdjAuOC42LCB1diBub3cgYXBwbGllcyBhZGRpdGlvbmFsIGNoZWNrcyB0byByZWplY3Qgc3VjaCBaSVBzLgoKVGhhbmtzIHRvIGEgdHJpYWdlIGVmZm9ydCB3aXRoIHRoZSBbUHl0aG9uIFNlY3VyaXR5IFJlc3BvbnNlIFRlYW1dKGh0dHBzOi8vZGV2Z3VpZGUucHl0aG9uLm9yZy9kZXZlbG9wZXItd29ya2Zsb3cvcHNydC8pIGFuZCBQeVBJIG1haW50YWluZXJzLCB3ZSB3ZXJlIGFibGUgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlc2UgZGlmZmVyZW50aWFscyAqKndlcmUgbm90IGV4cGxvaXRlZCoqIHZpYSBQeVBJIGR1cmluZyB0aGUgdGltZSB0aGV5IHdlcmUgcHJlc2VudC4gVGhlIFB5UEkgdGVhbSBoYXMgYWxzbyBpbXBsZW1lbnRlZCBzaW1pbGFyIGNoZWNrcyBhbmQgbm93IGd1YXJkcyBhZ2FpbnN0IHRoZXNlIHBhcnNpbmcgZGlmZmVyZW50aWFscyBvbiB1cGxvYWQuCgpBbHRob3VnaCB0aGUgcHJhY3RpY2FsIHJpc2sgb2YgZXhwbG9pdGF0aW9uIGlzIGxvdywgd2UgdGFrZSB0aGUgKmh5cG90aGV0aWNhbCogcmlzayBvZiBwYXJzZXIgZGlmZmVyZW50aWFscyB2ZXJ5IHNlcmlvdXNseS4gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCB3ZSBoYXZlIGFzc2lnbmVkIHRoaXMgYWR2aXNvcnkgYSBDVkUgaWRlbnRpZmllciBhbmQgaGF2ZSBnaXZlbiBpdCBhICJtb2RlcmF0ZSIgc2V2ZXJpdHkgc3VnZ2VzdGlvbi4KClRoZXNlIGNoYW5nZXMgaGF2ZSBiZWVuIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSB0b3AgMTUsMDAwIFB5UEkgcGFja2FnZXM7IGhvd2V2ZXIsIGl0J3MgcGxhdXNpYmxlIHRoYXQgYSBub24tbWFsaWNpb3VzIFpJUCBjb3VsZCBiZSBmYWxzZWx5IHJlamVjdGVkIHdpdGggdGhpcyBhZGRpdGlvbmFsIGhhcmRlbmluZy4gQXMgYW4gZXNjYXBlIGhhdGNoLCB1c2VycyB3aG8gZG8gZW5jb3VudGVyIGJyZWFraW5nIGNoYW5nZXMgY2FuIGVuYWJsZSBgVVZfSU5TRUNVUkVfTk9fWklQX1ZBTElEQVRJT05gIHRvIHJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW9yLiBJZiB5b3UgZW5jb3VudGVyIHN1Y2ggYSByZWplY3Rpb24sIHBsZWFzZSBmaWxlIGFuIGlzc3VlIGluIHV2IGFuZCB0byB0aGUgdXBzdHJlYW0gcGFja2FnZS4KCkZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGZvbGxvd2luZyBibG9nIHBvc3RzOgoKLSBbQXN0cmFsOiB1diBzZWN1cml0eSBhZHZpc29yeTogWklQIHBheWxvYWQgb2JmdXNjYXRpb25dKGh0dHBzOi8vYXN0cmFsLnNoL2Jsb2cvdXYtc2VjdXJpdHktYWR2aXNvcnktY3ZlLTIwMjUtNTQzNjgpCi0gW1B5UEk6IFByZXZlbnRpbmcgWklQIHBhcnNlciBjb25mdXNpb24gYXR0YWNrcyBvbiBQeXRob24gcGFja2FnZSBpbnN0YWxsZXJzXShodHRwczovL2Jsb2cucHlwaS5vcmcvcG9zdHMvMjAyNS0wOC0wNy13aGVlbC1hcmNoaXZlLWNvbmZ1c2lvbi1hdHRhY2tzLykKCiMjIyMjIFNlY3VyaXR5CgotIEhhcmRlbiBaSVAgc3RyZWFtaW5nIHRvIHJlamVjdCByZXBlYXRlZCBlbnRyaWVzIGFuZCBvdGhlciBtYWxmb3JtZWQgWklQIGZpbGVzIChbIyYjODIwMzsxNTEzNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTM2KSkKCiMjIyMjIFB5dGhvbgoKLSBBZGQgQ1B5dGhvbiAzLjEzLjYKCiMjIyMjIENvbmZpZ3VyYXRpb24KCi0gQWRkIHN1cHBvcnQgZm9yIHBlci1wcm9qZWN0IGJ1aWxkLXRpbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzIChbIyYjODIwMzsxNTA5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDk1KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSBBdm9pZCBpbnZhbGlkIHNpbXBsaWZpY2F0aW9uIHdpdGggY29uZmxpY3QgbWFya2VycyAgKFsjJiM4MjAzOzE1MDQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwNDEpKQotIFJlc3BlY3QgYFVWX0hUVFBfUkVUUklFU2AgaW4gYHV2IHB1Ymxpc2hgIChbIyYjODIwMzsxNTEwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTA2KSkKLSBTdXBwb3J0IGBVVl9OT19FRElUQUJMRWAgd2hlcmUgYC0tbm8tZWRpdGFibGVgIGlzIHN1cHBvcnRlZCAoWyMmIzgyMDM7MTUxMDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTEwNykpCi0gVXBncmFkZSBgY2FyZ28tZGlzdGAgdG8gYWRkIGBVVl9JTlNUQUxMRVJfVVJMYCB0byBQb3dlclNoZWxsIGluc3RhbGxlciAoWyMmIzgyMDM7MTUxMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTExNCkpCi0gVXBncmFkZSBgaDJgIGFnYWluIHRvIGF2b2lkIGB0b29fbWFueV9pbnRlcm5hbF9yZXNldHNgIGVycm9ycyAoWyMmIzgyMDM7MTUxMTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTExMSkpCi0gQ29uc2lkZXIgYHB5dGhvbndgIHdoZW4gY29weWluZyBlbnRyeSBwb2ludHMgaW4gdXYgcnVuIChbIyYjODIwMzsxNTEzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTM0KSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gRW5zdXJlIHN5bWxpbmsgd2FybmluZyBpcyBzaG93biAoWyMmIzgyMDM7MTUxMjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTEyNikpCgojIyMgW2B2MC44LjVgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDg1KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC44LjQuLi4wLjguNSkKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSBFbmFibGUgYHV2IHJ1bmAgd2l0aCBhIEdpdEh1YiBHaXN0IChbIyYjODIwMzsxNTA1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDU4KSkKLSBJbXByb3ZlIEhUVFAgcmVzcG9uc2UgY2FjaGluZyBsb2cgbWVzc2FnZXMgKFsjJiM4MjAzOzE1MDY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwNjcpKQotIFNob3cgd2hlZWwgdGFnIGhpbnRzIGluIGluc3RhbGwgcGxhbiAoWyMmIzgyMDM7MTUwNjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTA2NikpCi0gU3VwcG9ydCBpbnN0YWxsaW5nIGFkZGl0aW9uYWwgZXhlY3V0YWJsZXMgaW4gYHV2IHRvb2wgaW5zdGFsbGAgKFsjJiM4MjAzOzE0MDE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQwMTQpKQoKIyMjIyMgUHJldmlldyBmZWF0dXJlcwoKLSBFbmFibGUgZXh0cmEgYnVpbGQgZGVwZW5kZW5jaWVzIHRvICdtYXRjaCBydW50aW1lJyB2ZXJzaW9ucyAoWyMmIzgyMDM7MTUwMzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTAzNikpCi0gUmVtb3ZlIGR1cGxpY2F0ZSBgZXh0cmEtYnVpbGQtZGVwZW5kZW5jaWVzYCB3YXJuaW5ncyBmb3IgYHV2IHBpcGAgKFsjJiM4MjAzOzE1MDg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwODgpKQotIFVzZSAib3B0aW9uIiBpbnN0ZWFkIG9mICJzZXR0aW5nIiBpbiBgcHlsb2NrYCB3YXJuaW5nIChbIyYjODIwMzsxNTA4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDg5KSkKLSBSZXNwZWN0IGV4dHJhIGJ1aWxkIHJlcXVpcmVzIHdoZW4gcmVhZGluZyBmcm9tIHdoZWVsIGNhY2hlIChbIyYjODIwMzsxNTAzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDMwKSkKLSBQcmVzZXJ2ZSBsb3dlcmVkIGV4dHJhIGJ1aWxkIGRlcGVuZGVuY2llcyAoWyMmIzgyMDM7MTUwMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTAzOCkpCgojIyMjIyBCdWcgZml4ZXMKCi0gQWRkIFB5dGhvbiB2ZXJzaW9ucyB0byBtYXJrZXJzIGltcGxpZWQgZnJvbSB3aGVlbHMgKFsjJiM4MjAzOzE0OTEzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ5MTMpKQotIEVuc3VyZSBjb25zaXN0ZW50IGluZGVudGF0aW9uIHdoZW4gYWRkaW5nIGRlcGVuZGVuY2llcyAoWyMmIzgyMDM7MTQ5OTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDk5MSkpCi0gRml4IGhhbmRsaW5nIG9mIGBweXRob24tcHJlZmVyZW5jZSA9IHN5c3RlbWAgd2hlbiBtYW5hZ2VkIGludGVycHJldGVycyBhcmUgb24gdGhlIFBBVEggKFsjJiM4MjAzOzE1MDU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwNTkpKQotIEZpeCBzeW1saW5rIHByZXNlcnZhdGlvbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50IGNyZWF0aW9uIChbIyYjODIwMzsxNDkzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTMzKSkKLSBHcmFjZWZ1bGx5IGhhbmRsZSBlbnRyeXBvaW50IHBlcm1pc3Npb24gZXJyb3JzIChbIyYjODIwMzsxNTAyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDI2KSkKLSBJbmNsdWRlIHdoZWVsIGhhc2hlcyBmcm9tIGxvY2FsIFNpbXBsZSBpbmRleGVzIChbIyYjODIwMzsxNDk5M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTkzKSkKLSBQcmVmZXIgc3lzdGVtIFB5dGhvbiBpbnN0YWxsYXRpb25zIG92ZXIgbWFuYWdlZCBvbmVzIHdoZW4gYC0tc3lzdGVtYCBpcyB1c2VkIChbIyYjODIwMzsxNTA2MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MDYxKSkKLSBSZW1vdmUgcmV0cnkgd3JhcHBlciB3aGVuIG1hdGNoaW5nIG9uIGVycm9yIGtpbmQgKFsjJiM4MjAzOzE0OTk2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ5OTYpKQotIFJldmVydCBgaDJgIHVwZ3JhZGUgKFsjJiM4MjAzOzE1MDc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwNzkpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSBJbXByb3ZlIHZpc2liaWxpdHkgb2YgY29weSBhbmQgbGluZSBzZXBhcmF0b3IgaW4gZGFyayBtb2RlIChbIyYjODIwMzsxNDk4N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTg3KSkKCiMjIyBbYHYwLjguNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwODQpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguMy4uLjAuOC40KQoKIyMjIyMgRW5oYW5jZW1lbnRzCgotIEltcHJvdmUgc3R5bGluZyBvZiB3YXJuaW5nIGNhdXNlIGNoYWlucyAgKFsjJiM4MjAzOzE0OTM0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ5MzQpKQotIEV4dGVuZCB3aGVlbCBmaWx0ZXJpbmcgdG8gQW5kcm9pZCB0YWdzIChbIyYjODIwMzsxNDk3N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTc3KSkKLSBQZXJmb3JtIHdoZWVsIGxvY2tmaWxlIGZpbHRlcmluZyBiYXNlZCBvbiBwbGF0Zm9ybSBhbmQgT1MgaW50ZXJzZWN0aW9uIChbIyYjODIwMzsxNDk3Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTc2KSkKLSBDbGFyaWZ5IG1lc3NhZ2luZyB3aGVuIGEgbmV3IHJlc29sdXRpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkIChbIyYjODIwMzsxNDkzOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTM4KSkKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gQWRkIHN1cHBvcnQgZm9yIGV4dGVuZGluZyBwYWNrYWdlJ3MgYnVpbGQgZGVwZW5kZW5jaWVzIHdpdGggYGV4dHJhLWJ1aWxkLWRlcGVuZGVuY2llc2AgKFsjJiM4MjAzOzE0NzM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ3MzUpKQotIFNwbGl0IHByZXZpZXcgbW9kZSBpbnRvIHNlcGFyYXRlIGZlYXR1cmUgZmxhZ3MgKFsjJiM4MjAzOzE0ODIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4MjMpKQoKIyMjIyMgQ29uZmlndXJhdGlvbgoKLSBBZGQgc3VwcG9ydCBmb3IgcGFja2FnZSBzcGVjaWZpYyBgZXhjbHVkZS1uZXdlcmAgZGF0ZXMgdmlhIGBleGNsdWRlLW5ld2VyLXBhY2thZ2VgIChbIyYjODIwMzsxNDQ4OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NDg5KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSBBdm9pZCBpbnZhbGlkYXRpbmcgbG9ja2ZpbGUgd2hlbiBwYXRoIG9yIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgZGVmaW5lIGV4cGxpY2l0IGluZGV4ZXMgKFsjJiM4MjAzOzE0ODc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4NzYpKQotIENvcHkgZW50cnlwb2ludHMgdGhhdCBoYXZlIGEgc2hlYmFuZyB0aGF0IGRpZmZlcnMgaW4gYHB5dGhvbmAgdnMgYHB5dGhvbjNgIChbIyYjODIwMzsxNDk3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTcwKSkKLSBGaXggaW5jb3JyZWN0IGZpbGUgcGVybWlzc2lvbnMgaW4gd2hlZWwgcGFja2FnZXMgKFsjJiM4MjAzOzE0OTMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ5MzApKQotIFVwZGF0ZSB2YWxpZGF0aW9uIGZvciBgZW52aXJvbm1lbnRzYCBhbmQgYHJlcXVpcmVkLWVudmlyb25tZW50c2AgaW4gYHV2LnRvbWxgIChbIyYjODIwMzsxNDkwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTA1KSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gU2hvdyBgdXZfYnVpbGRgIGluIHByb2plY3RzIGRvY3VtZW50YXRpb24gKFsjJiM4MjAzOzE0OTY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ5NjgpKQotIEFkZCBgVVZfYCBwcmVmaXggdG8gaW5zdGFsbGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyAoWyMmIzgyMDM7MTQ5NjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDk2NCkpCi0gVW4taGlkZSBgdXZgIGZyb20gYC0tYnVpbGQtYmFja2VuZGAgb3B0aW9ucyAoWyMmIzgyMDM7MTQ5MzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDkzOSkpCi0gVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIHByZXZpZXcgZmxhZ3MgKFsjJiM4MjAzOzE0OTAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ5MDIpKQoKIyMjIFtgdjAuOC4zYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4MykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuOC4yLi4uMC44LjMpCgojIyMjIyBQeXRob24KCi0gQWRkIENQeXRob24gMy4xNC4wcmMxCgpTZWUgdGhlIFtgcHl0aG9uLWJ1aWxkLXN0YW5kYWxvbmVgIHJlbGVhc2Ugbm90ZXNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvcHl0aG9uLWJ1aWxkLXN0YW5kYWxvbmUvcmVsZWFzZXMvdGFnLzIwMjUwNzIzKSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMjIyMgRW5oYW5jZW1lbnRzCgotIEFsbG93IG5vbi1zdGFuZGFyZCBlbnRyeXBvaW50IG5hbWVzIGluIGB1dl9idWlsZGAgKFsjJiM4MjAzOzE0ODY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4NjcpKQotIFB1Ymxpc2ggcmlzY3Y2NCB3aGVlbHMgdG8gUHlQSSAoWyMmIzgyMDM7MTQ4NTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDg1MikpCgojIyMjIyBCdWcgZml4ZXMKCi0gQXZvaWQgd3JpdGluZyByZWRhY3RlZCBjcmVkZW50aWFscyB0byB0b29sIHJlY2VpcHQgKFsjJiM4MjAzOzE0ODU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4NTUpKQotIFJlc3BlY3QgYC0td2l0aGAgdmVyc2lvbnMgb3ZlciBiYXNlIGVudmlyb25tZW50IHZlcnNpb25zIChbIyYjODIwMzsxNDg2M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0ODYzKSkKLSBSZXNwZWN0IGNyZWRlbnRpYWxzIGZyb20gYWxsIGRlZmluZWQgaW5kZXhlcyAoWyMmIzgyMDM7MTQ4NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDg1OCkpCi0gRml4IG1pc3NlZCBzdGFiaWxpemF0aW9uIG9mIHJlbW92YWwgb2YgcmVnaXN0cnkgZW50cnkgZHVyaW5nIFB5dGhvbiB1bmluc3RhbGwgKFsjJiM4MjAzOzE0ODU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4NTkpKQotIEltcHJvdmUgY29uY3VycmVuY3kgc2FmZXR5IG9mIFB5dGhvbiBkb3dubG9hZHMgaW50byBjYWNoZSAoWyMmIzgyMDM7MTQ4NDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDg0NikpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotIEZpeCB0eXBvcyBpbiBgdXZfYnVpbGRgIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIChbIyYjODIwMzsxNDg1M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0ODUzKSkKLSBNb3ZlIHRoZSAiQ2FyZ28iIGluc3RhbGwgbWV0aG9kIGZ1cnRoZXIgZG93biBpbiBkb2NzIChbIyYjODIwMzsxNDg0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0ODQyKSkKCiMjIyBbYHYwLjguMmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwODIpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguMS4uLjAuOC4yKQoKIyMjIyMgRW5oYW5jZW1lbnRzCgotIEFkZCBkZXJpdmF0aW9uIGNoYWlucyBmb3IgZGVwZW5kZW5jeSBlcnJvcnMgKFsjJiM4MjAzOzE0ODI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4MjQpKQoKIyMjIyMgQ29uZmlndXJhdGlvbgoKLSBBZGQgYFVWX0lOSVRfQlVJTERfQkFDS0VORGAgKFsjJiM4MjAzOzE0ODIxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4MjEpKQoKIyMjIyMgQnVnIGZpeGVzCgotIEF2b2lkIHJlYWRpbmcgZmlsZXMgaW4gdGhlIGVudmlyb25tZW50IGJpbiB0aGF0IGFyZSBub3QgZW50cnlwb2ludHMgKFsjJiM4MjAzOzE0ODMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4MzApKQotIEF2b2lkIHJlbW92aW5nIGVtcHR5IGRpcmVjdG9yaWVzIHdoZW4gY29uc3RydWN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIChbIyYjODIwMzsxNDgyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0ODIyKSkKLSBQcmVzZXJ2ZSBpbmRleCBVUkwgcHJpb3JpdHkgb3JkZXIgd2hlbiB3cml0aW5nIHRvIHB5cHJvamVjdC50b21sIChbIyYjODIwMzsxNDgzMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0ODMxKSkKCiMjIyMjIFJ1c3QgQVBJCgotIEV4cG9zZSBgdGxzX2J1aWx0X2luX3Jvb3RfY2VydHNgIGZvciBjbGllbnQgKFsjJiM4MjAzOzE0ODE2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4MTYpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSBBcmNoaXZlIHRoZSAwLjcueCBjaGFuZ2Vsb2cgKFsjJiM4MjAzOzE0ODE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ4MTkpKQoKIyMjIFtgdjAuOC4xYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4MTEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguMC4uLjAuOC4xKQoKIyMjIyMgUHl0aG9uCgotIEFkZCBQeXRob24gMy4xNC4wcmMyCi0gVXBkYXRlIFB5b2RpZGUgdG8gMC4yOC4xCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gQWRkIERlYmlhbiAxMyB0cml4aWUgdG8gcHVibGlzaGVkIERvY2tlciBpbWFnZXMgKFsjJiM4MjAzOzE1MjY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyNjkpKQotIEFkZCBgZXh0cmEtYnVpbGQtZGVwZW5kZW5jaWVzYCBoaW50IGZvciBhbnkgbWlzc2luZyBtb2R1bGUgb24gYnVpbGQgZmFpbHVyZSAoWyMmIzgyMDM7MTUyNTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI1MikpCi0gTWFrZSAndicgcHJlZml4IGN5YW4gaW4gb3ZlcmxhcCB3YXJuaW5ncyAoWyMmIzgyMDM7MTUyNTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI1OSkpCgojIyMjIyBCdWcgZml4ZXMKCi0gRml4IG1pc3NpbmcgdXYgdmVyc2lvbiBpbiBleHRlbmRlZCBEb2NrZXIgaW1hZ2UgdGFncyAoWyMmIzgyMDM7MTUyNjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI2MykpCi0gUGVyc2lzdCBjYWNoZSBpbmZvIHdoZW4gcmUtaW5zdGFsbGluZyBjYWNoZWQgd2hlZWxzIChbIyYjODIwMzsxNTI3NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1Mjc0KSkKCiMjIyMjIFJ1c3QgQVBJCgotIEFsbG93IHBhc3NpbmcgY3VzdG9tIGByZXF3ZXN0YCBjbGllbnRzIHRvIGBSZWdpc3RyeUNsaWVudGAgKFsjJiM4MjAzOzE1MjgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyODEpKQoKIyMjIFtgdjAuOC4wYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4MCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNy4yMi4uLjAuOC4wKQoKU2luY2Ugd2UgcmVsZWFzZWQgdXYgWzAuNy4wXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL3RhZy8wLjcuMCkgaW4gQXByaWwsIHdlJ3ZlIGFjY3VtdWxhdGVkIHZhcmlvdXMgY2hhbmdlcyB0aGF0IGltcHJvdmUgY29ycmVjdG5lc3MgYW5kIHVzZXIgZXhwZXJpZW5jZSwgYnV0IGNvdWxkIGJyZWFrIHNvbWUgd29ya2Zsb3dzLiBUaGlzIHJlbGVhc2UgY29udGFpbnMgdGhvc2UgY2hhbmdlczsgbWFueSBoYXZlIGJlZW4gbWFya2VkIGFzIGJyZWFraW5nIG91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbi4gV2UgZXhwZWN0IG1vc3QgdXNlcnMgdG8gYmUgYWJsZSB0byB1cGdyYWRlIHdpdGhvdXQgbWFraW5nIGNoYW5nZXMuCgpUaGlzIHJlbGVhc2UgYWxzbyBpbmNsdWRlcyB0aGUgc3RhYmlsaXphdGlvbiBvZiBhIGNvdXBsZSBgdXYgcHl0aG9uIGluc3RhbGxgIGZlYXR1cmVzLCB3aGljaCBoYXZlIGJlZW4gYXZhaWxhYmxlIHVuZGVyIHByZXZpZXcgc2luY2UgbGF0ZSBsYXN0IHllYXIuCgojIyMjIyBCcmVha2luZyBjaGFuZ2VzCgotICoqSW5zdGFsbCBQeXRob24gZXhlY3V0YWJsZXMgaW50byBhIGRpcmVjdG9yeSBvbiB0aGUgYFBBVEhgIChbIyYjODIwMzsxNDYyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NjI2KSkqKgoKICBgdXYgcHl0aG9uIGluc3RhbGxgIG5vdyBpbnN0YWxscyBhIHZlcnNpb25lZCBQeXRob24gZXhlY3V0YWJsZSAoZS5nLiwgYHB5dGhvbjMuMTNgKSBpbnRvIGEgZGlyZWN0b3J5IG9uIHRoZSBgUEFUSGAgKGUuZy4sIGB+Ly5sb2NhbC9iaW5gKSBieSBkZWZhdWx0LiBUaGlzIGJlaGF2aW9yIGhhcyBiZWVuIGF2YWlsYWJsZSB1bmRlciB0aGUgYC0tcHJldmlld2AgZmxhZyBzaW5jZSBbT2N0IDIwMjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC84NDU4KS4gVGhpcyBjaGFuZ2Ugc2hvdWxkIG5vdCBiZSBicmVha2luZyB1bmxlc3MgaXQgc2hhZG93cyBhIFB5dGhvbiBleGVjdXRhYmxlIGVsc2V3aGVyZSBvbiB0aGUgYFBBVEhgLgoKICBUbyBpbnN0YWxsIHVudmVyc2lvbmVkIGV4ZWN1dGFibGVzLCBpLmUuLCBgcHl0aG9uM2AgYW5kIGBweXRob25gLCB1c2UgdGhlIGAtLWRlZmF1bHRgIGZsYWcuIFRoZSBgLS1kZWZhdWx0YCBmbGFnIGhhcyBhbHNvIGJlZW4gaW4gcHJldmlldywgYnV0IGlzIG5vdCBzdGFiaWxpemVkIGluIHRoaXMgcmVsZWFzZS4KCiAgTm90ZSB0aGF0IHRoZXNlIGV4ZWN1dGFibGVzIHBvaW50IHRvIHRoZSBiYXNlIFB5dGhvbiBpbnN0YWxsYXRpb24gYW5kIG9ubHkgaW5jbHVkZSB0aGUgc3RhbmRhcmQgbGlicmFyeS4gVGhhdCBtZWFucyB0aGV5IHdpbGwgbm90IGluY2x1ZGUgZGVwZW5kZW5jaWVzIGZyb20geW91ciBjdXJyZW50IHByb2plY3QgKHVzZSBgdXYgcnVuIHB5dGhvbmAgaW5zdGVhZCkgYW5kIHlvdSBjYW5ub3QgaW5zdGFsbCBwYWNrYWdlcyBpbnRvIHRoZWlyIGVudmlyb25tZW50ICh1c2UgYHV2eCAtLXdpdGggPHBhY2thZ2U+IHB5dGhvbmAgaW5zdGVhZCkuCgogIEFzIHdpdGggdG9vbCBpbnN0YWxsYXRpb24sIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHJlc3BlY3RzIGNvbW1vbiB2YXJpYWJsZXMgbGlrZSBgWERHX0JJTl9IT01FYCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhIGBVVl9QWVRIT05fQklOX0RJUmAgdmFyaWFibGUuCgogIFlvdSBjYW4gb3B0IG91dCBvZiB0aGlzIGJlaGF2aW9yIHdpdGggYHV2IHB5dGhvbiBpbnN0YWxsIC0tbm8tYmluYCBvciBgVVZfUFlUSE9OX0lOU1RBTExfQklOPTBgLgoKICBTZWUgdGhlIFtkb2N1bWVudGF0aW9uIG9uIGluc3RhbGxpbmcgUHl0aG9uIGV4ZWN1dGFibGVzXShodHRwczovL2RvY3MuYXN0cmFsLnNoL3V2L2NvbmNlcHRzL3B5dGhvbi12ZXJzaW9ucy8jaW5zdGFsbGluZy1weXRob24tZXhlY3V0YWJsZXMpIGZvciBtb3JlIGRldGFpbHMuCi0gKipSZWdpc3RlciBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgV2luZG93cyBSZWdpc3RyeSAoWyMmIzgyMDM7MTQ2MjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYyNSkpKioKCiAgYHV2IHB5dGhvbiBpbnN0YWxsYCBub3cgcmVnaXN0ZXJzIHRoZSBpbnN0YWxsZWQgUHl0aG9uIHZlcnNpb24gd2l0aCB0aGUgV2luZG93cyBSZWdpc3RyeSBhcyBzcGVjaWZpZWQgYnkgW1BFUCA1MTRdKGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNTE0LykuIFRoaXMgYWxsb3dzIHVzaW5nIHV2IGluc3RhbGxlZCBQeXRob24gdmVyc2lvbnMgdmlhIHRoZSBgcHlgIGxhdW5jaGVyLiBUaGlzIGJlaGF2aW9yIGhhcyBiZWVuIGF2YWlsYWJsZSB1bmRlciB0aGUgYC0tcHJldmlld2AgZmxhZyBzaW5jZSBbSmFuIDIwMjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMDYzNCkuIFRoaXMgY2hhbmdlIHNob3VsZCBub3QgYmUgYnJlYWtpbmcsIGFzIHVzaW5nIHRoZSB1diBQeXRob24gdmVyc2lvbnMgd2l0aCBgcHlgIHJlcXVpcmVzIGV4cGxpY2l0IG9wdCBpbi4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3Igd2l0aCBgdXYgcHl0aG9uIGluc3RhbGwgLS1uby1yZWdpc3RyeWAgb3IgYFVWX1BZVEhPTl9JTlNUQUxMX1JFR0lTVFJZPTBgLgotICoqUHJvbXB0IGJlZm9yZSByZW1vdmluZyBhbiBleGlzdGluZyBkaXJlY3RvcnkgaW4gYHV2IHZlbnZgIChbIyYjODIwMzsxNDMwOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0MzA5KSkqKgoKICBQcmV2aW91c2x5LCBgdXYgdmVudmAgd291bGQgcmVtb3ZlIGFuIGV4aXN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aG91dCBjb25maXJtYXRpb24uIFdoaWxlIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvciBvZiBwcm9qZWN0IGNvbW1hbmRzIChlLmcuLCBgdXYgc3luY2ApLCBpdCdzIHN1cnByaXNpbmcgdG8gdXNlcnMgdGhhdCBhcmUgdXNpbmcgaW1wZXJhdGl2ZSB3b3JrZmxvd3MgKGkuZS4sIGB1diBwaXBgKS4gTm93LCBgdXYgdmVudmAgd2lsbCBwcm9tcHQgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgcmVtb3ZpbmcgYW4gZXhpc3RpbmcgdmlydHVhbCBlbnZpcm9ubWVudC4gKipJZiBub3QgaW4gYW4gaW50ZXJhY3RpdmUgY29udGV4dCwgdXYgd2lsbCBzdGlsbCByZW1vdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBIb3dldmVyLCB0aGlzIGJlaGF2aW9yIGlzIGxpa2VseSB0byBjaGFuZ2UgaW4gYSBmdXR1cmUgcmVsZWFzZS4qKgoKICBUaGUgYmVoYXZpb3IgZm9yIG90aGVyIGNvbW1hbmRzIChlLmcuLCBgdXYgc3luY2ApIGlzIHVuY2hhbmdlZC4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3IgYnkgc2V0dGluZyBgVVZfVkVOVl9DTEVBUj0xYCBvciBwYXNzaW5nIHRoZSBgLS1jbGVhcmAgZmxhZy4KLSAqKlZhbGlkYXRlIHRoYXQgZGlzY292ZXJlZCBpbnRlcnByZXRlcnMgbWVldCB0aGUgUHl0aG9uIHByZWZlcmVuY2UgKFsjJiM4MjAzOzc5MzRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC83OTM0KSkqKgoKICB1diBhbGxvd3Mgb3B0aW5nIG91dCBvZiBpdHMgbWFuYWdlZCBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgYC0tbm8tbWFuYWdlZC1weXRob25gIGFuZCBgcHl0aG9uLXByZWZlcmVuY2VgIG9wdGlvbnMuCgogIFByZXZpb3VzbHksIHV2IHdvdWxkIG5vdCBlbmZvcmNlIHRoaXMgb3B0aW9uIGZvciBQeXRob24gaW50ZXJwcmV0ZXJzIGRpc2NvdmVyZWQgb24gdGhlIGBQQVRIYC4gRm9yIGV4YW1wbGUsIGlmIGEgc3ltbGluayB0byBhIG1hbmFnZWQgUHl0aG9uIGludGVycHJldGVyIHdhcyBjcmVhdGVkLCB1diB3b3VsZCBhbGxvdyBpdCB0byBiZSB1c2VkIGV2ZW4gaWYgYC0tbm8tbWFuYWdlZC1weXRob25gIHdhcyBwcm92aWRlZC4gTm93LCB1diBpZ25vcmVzIFB5dGhvbiBpbnRlcnByZXRlcnMgdGhhdCBkbyBub3QgbWF0Y2ggdGhlIFB5dGhvbiBwcmVmZXJlbmNlICp1bmxlc3MqIHRoZXkgYXJlIGluIGFuIGFjdGl2ZSB2aXJ0dWFsIGVudmlyb25tZW50IG9yIGFyZSBleHBsaWNpdGx5IHJlcXVlc3RlZCwgZS5nLiwgd2l0aCBgLS1weXRob24gL3BhdGgvdG8vcHl0aG9uMy4xM2AuCgogIFNpbWlsYXJseSwgdXYgd291bGQgcHJldmlvdXNseSBub3QgaW52YWxpZGF0ZSBleGlzdGluZyBwcm9qZWN0IGVudmlyb25tZW50cyBpZiB0aGV5IGRpZCBub3QgbWF0Y2ggdGhlIFB5dGhvbiBwcmVmZXJlbmNlLiBOb3csIHV2IHdpbGwgaW52YWxpZGF0ZSBhbmQgcmVjcmVhdGUgcHJvamVjdCBlbnZpcm9ubWVudHMgd2hlbiB0aGUgUHl0aG9uIHByZWZlcmVuY2UgY2hhbmdlcy4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3IgYnkgcHJvdmlkaW5nIHRoZSBleHBsaWNpdCBwYXRoIHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgcHJvdmlkaW5nIGAtLW1hbmFnZWQtcHl0aG9uYCAvIGAtLW5vLW1hbmFnZWQtcHl0aG9uYCBtYXRjaGluZyB0aGUgaW50ZXJwcmV0ZXIgeW91IHdhbnQuCi0gKipJbnN0YWxsIGRlcGVuZGVuY2llcyB3aXRob3V0IGJ1aWxkIHN5c3RlbXMgd2hlbiB0aGV5IGFyZSBgcGF0aGAgc291cmNlcyAoWyMmIzgyMDM7MTQ0MTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDQxMykpKioKCiAgV2hlbiB3b3JraW5nIG9uIGEgcHJvamVjdCwgdXYgdXNlcyB0aGUgW3ByZXNlbmNlIG9mIGEgYnVpbGQgc3lzdGVtXShodHRwczovL2RvY3MuYXN0cmFsLnNoL3V2L2NvbmNlcHRzL3Byb2plY3RzL2NvbmZpZy8jYnVpbGQtc3lzdGVtcykgdG8gZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCBiZSBidWlsdCBhbmQgaW5zdGFsbGVkIGludG8gdGhlIGVudmlyb25tZW50LiBIb3dldmVyLCB3aGVuIGEgcHJvamVjdCBpcyBhIGRlcGVuZGVuY3kgb2YgYW5vdGhlciBwcm9qZWN0LCBpdCBjYW4gYmUgc3VycHJpc2luZyBmb3IgdGhlIGRlcGVuZGVuY3kgdG8gYmUgbWlzc2luZyBmcm9tIHRoZSBlbnZpcm9ubWVudC4KCiAgUHJldmlvdXNseSwgdXYgd291bGQgbm90IGJ1aWxkIGFuZCBpbnN0YWxsIGRlcGVuZGVuY2llcyB3aXRoIFtgcGF0aGAgc291cmNlc10oaHR0cHM6Ly9kb2NzLmFzdHJhbC5zaC91di9jb25jZXB0cy9wcm9qZWN0cy9kZXBlbmRlbmNpZXMvI3BhdGgpIHVubGVzcyB0aGV5IGRlY2xhcmVkIGEgYnVpbGQgc3lzdGVtIG9yIHNldCBgdG9vbC51di5wYWNrYWdlID0gdHJ1ZWAuIE5vdywgZGVwZW5kZW5jaWVzIHdpdGggYHBhdGhgIHNvdXJjZXMgYXJlIGJ1aWx0IGFuZCBpbnN0YWxsZWQgcmVnYXJkbGVzcyBvZiB0aGUgcHJlc2VuY2Ugb2YgYSBidWlsZCBzeXN0ZW0uIElmIGEgYnVpbGQgc3lzdGVtIGlzIG5vdCBwcmVzZW50LCB0aGUgYHNldHVwdG9vbHMuYnVpbGRfbWV0YTpfX2xlZ2FjeV9fIGAgYmFja2VuZCB3aWxsIGJlIHVzZWQgKHBlciBbUEVQIDUxN10oaHR0cHM6Ly9wZXBzLnB5dGhvbi5vcmcvcGVwLTA1MTcvI3NvdXJjZS10cmVlcykpLgoKICBZb3UgY2FuIG9wdCBvdXQgb2YgdGhpcyBiZWhhdmlvciBieSBzZXR0aW5nIGBwYWNrYWdlID0gZmFsc2VgIGluIHRoZSBzb3VyY2UgZGVjbGFyYXRpb24sIGUuZy46CgogIGBgYHRvbWwKICBbdG9vbC51di5zb3VyY2VzXQogIGZvbyA9IHsgcGF0aCA9ICIuL2ZvbyIsIHBhY2thZ2UgPSBmYWxzZSB9CiAgYGBgCgogIE9yLCBieSBzZXR0aW5nIGB0b29sLnV2LnBhY2thZ2UgPSBmYWxzZWAgaW4gdGhlIGRlcGVuZGVudCBgcHlwcm9qZWN0LnRvbWxgLgoKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb24gW3ZpcnR1YWwgZGVwZW5kZW5jaWVzXShodHRwczovL2RvY3MuYXN0cmFsLnNoL3V2L2NvbmNlcHRzL3Byb2plY3RzL2RlcGVuZGVuY2llcy8jdmlydHVhbC1kZXBlbmRlbmNpZXMpIGZvciBkZXRhaWxzLgotICoqSW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aG91dCBidWlsZCBzeXN0ZW1zIHdoZW4gdGhleSBhcmUgd29ya3NwYWNlIG1lbWJlcnMgKFsjJiM4MjAzOzE0NjYzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ2NjMpKSoqCgogIEFzIGRlc2NyaWJlZCBhYm92ZSBmb3IgZGVwZW5kZW5jaWVzIHdpdGggYHBhdGhgIHNvdXJjZXMsIHV2IHByZXZpb3VzbHkgd291bGQgbm90IGJ1aWxkIGFuZCBpbnN0YWxsIHdvcmtzcGFjZSBtZW1iZXJzIHRoYXQgZGlkIG5vdCBkZWNsYXJlIGEgYnVpbGQgc3lzdGVtLiBOb3csIHV2IHdpbGwgYnVpbGQgYW5kIGluc3RhbGwgd29ya3NwYWNlIG1lbWJlcnMgdGhhdCBhcmUgYSBkZXBlbmRlbmN5IG9mICphbm90aGVyKiB3b3Jrc3BhY2UgbWVtYmVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZXNlbmNlIG9mIGEgYnVpbGQgc3lzdGVtLiBUaGUgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZvciB3b3Jrc3BhY2UgbWVtYmVycyB0aGF0IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGBwcm9qZWN0LmRlcGVuZGVuY2llc2AsIGBwcm9qZWN0Lm9wdGlvbmFsLWRlcGVuZGVuY2llc2AsIG9yIGBkZXBlbmRlbmN5LWdyb3Vwc2AgdGFibGVzIG9mIGFub3RoZXIgd29ya3NwYWNlIG1lbWJlci4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3IgYnkgc2V0dGluZyBgdG9vbC51di5wYWNrYWdlID0gZmFsc2VgIGluIHRoZSB3b3Jrc3BhY2UgbWVtYmVyJ3MgYHB5cHJvamVjdC50b21sYC4KCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9uIFt2aXJ0dWFsIGRlcGVuZGVuY2llc10oaHR0cHM6Ly9kb2NzLmFzdHJhbC5zaC91di9jb25jZXB0cy9wcm9qZWN0cy9kZXBlbmRlbmNpZXMvI3ZpcnR1YWwtZGVwZW5kZW5jaWVzKSBmb3IgZGV0YWlscy4KLSAqKkJ1bXAgYC0tcHl0aG9uLXBsYXRmb3JtIGxpbnV4YCB0byBgbWFueWxpbnV4XzJfMjhgIChbIyYjODIwMzsxNDMwMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0MzAwKSkqKgoKICB1diBhbGxvd3MgcGVyZm9ybWluZyBbcGxhdGZvcm0tc3BlY2lmaWMgcmVzb2x1dGlvbl0oaHR0cHM6Ly9kb2NzLmFzdHJhbC5zaC91di9jb25jZXB0cy9yZXNvbHV0aW9uLyNwbGF0Zm9ybS1zcGVjaWZpYy1yZXNvbHV0aW9uKSBmb3IgZXhwbGljaXQgdGFyZ2V0cyBhbmQgcHJvdmlkZXMgc2hvcnQgYWxpYXNlcywgZS5nLiwgYGxpbnV4YCwgZm9yIGNvbW1vbiB0YXJnZXRzLgoKICBQcmV2aW91c2x5LCB0aGUgZGVmYXVsdCB0YXJnZXQgZm9yIGAtLXB5dGhvbi1wbGF0Zm9ybSBsaW51eGAgd2FzIGBtYW55bGludXhfMl8xN2AsIHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCBtb3N0IExpbnV4IGRpc3RyaWJ1dGlvbnMgZnJvbSAyMDE0IG9yIG5ld2VyLiBXZSBub3cgZGVmYXVsdCB0byBgbWFueWxpbnV4XzJfMjhgLCB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggbW9zdCBMaW51eCBkaXN0cmlidXRpb25zIGZyb20gMjAxOSBvciBuZXdlci4gIFRoaXMgY2hhbmdlIGZvbGxvd3MgdGhlIGxlYWQgb2Ygb3RoZXIgdG9vbHMsIHN1Y2ggYXMgYGNpYnVpbGR3aGVlbGAsIHdoaWNoIGNoYW5nZWQgdGhlaXIgZGVmYXVsdCB0byBgbWFueWxpbnV4XzJfMjhgIGluIFtNYXIgMjAyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3B5cGEvY2lidWlsZHdoZWVsL3B1bGwvMjMzMCkuCgogIFRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyB1c2VycyByZXF1ZXN0aW5nIGEgc3BlY2lmaWMgdGFyZ2V0IHBsYXRmb3JtLiBPdGhlcndpc2UsIHV2IGRldGVjdHMgdGhlIGBtYW55bGludXhgIHRhcmdldCBmcm9tIHlvdXIgbG9jYWwgZ2xpYmMgdmVyc2lvbi4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3IgYnkgdXNpbmcgYC0tcHl0aG9uLXBsYXRmb3JtIHg4Nl82NC1tYW55bGludXhfMl8xN2AgaW5zdGVhZC4KLSAqKlJlbW92ZSBgdXYgdmVyc2lvbmAgZmFsbGJhY2sgKFsjJiM4MjAzOzE0MTYxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQxNjEpKSoqCgogIEluIFtBcHIgMjAyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMzQ5KSwgdXYgY2hhbmdlZCB0aGUgYHV2IHZlcnNpb25gIGNvbW1hbmQgdG8gYW4gaW50ZXJmYWNlIGZvciB2aWV3aW5nIGFuZCB1cGRhdGluZyB0aGUgdmVyc2lvbiBvZiB0aGUgY3VycmVudCBwcm9qZWN0LiBIb3dldmVyLCB3aGVuIG91dHNpZGUgYSBwcm9qZWN0LCBgdXYgdmVyc2lvbmAgd291bGQgY29udGludWUgdG8gZGlzcGxheSB1didzIHZlcnNpb24gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBOb3csIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCwgYHV2IHZlcnNpb25gIHdpbGwgZmFpbC4KCiAgWW91IGNhbm5vdCBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3IuIFVzZSBgdXYgc2VsZiB2ZXJzaW9uYCBpbnN0ZWFkLgotICoqUmVxdWlyZSBgLS1nbG9iYWxgIGZvciByZW1vdmFsIG9mIHRoZSBnbG9iYWwgUHl0aG9uIHBpbiAoWyMmIzgyMDM7MTQxNjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDE2OSkpKioKCiAgUHJldmlvdXNseSwgYHV2IHB5dGhvbiBwaW4gLS1ybWAgd291bGQgYWxsb3cgeW91IHRvIHJlbW92ZSB0aGUgZ2xvYmFsIFB5dGhvbiBwaW4gd2l0aG91dCBvcHQgaW4uIE5vdywgdXYgcmVxdWlyZXMgdGhlIGAtLWdsb2JhbGAgZmxhZyB0byByZW1vdmUgdGhlIGdsb2JhbCBQeXRob24gcGluLgoKICBZb3UgY2Fubm90IG9wdCBvdXQgb2YgdGhpcyBiZWhhdmlvci4gVXNlIHRoZSBgLS1nbG9iYWxgIGZsYWcgaW5zdGVhZC4KLSAqKlN1cHBvcnQgY29uZmxpY3RpbmcgZWRpdGFibGUgc2V0dGluZ3MgYWNyb3NzIGdyb3VwcyAoWyMmIzgyMDM7MTQxOTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDE5NykpKioKCiAgUHJldmlvdXNseSwgdXYgd291bGQgYWx3YXlzIHRyZWF0IGEgcGFja2FnZSBhcyBlZGl0YWJsZSBpZiBhbnkgcmVxdWlyZW1lbnQgcmVxdWVzdGVkIGl0IGFzIGVkaXRhYmxlLiBIb3dldmVyLCB0aGlzIHByZXZlbnRlZCB1c2VycyBmcm9tIGRlY2xhcmluZyBgcGF0aGAgc291cmNlcyB0aGF0IHRvZ2dsZWQgdGhlIGBlZGl0YWJsZWAgc2V0dGluZyBhY3Jvc3MgZGVwZW5kZW5jeSBncm91cHMuIE5vdywgdXYgYWxsb3dzIGRlY2xhcmluZyBkaWZmZXJlbnQgYGVkaXRhYmxlYCB2YWx1ZXMgZm9yIGNvbmZsaWN0aW5nIGdyb3Vwcy4gSG93ZXZlciwgaWYgYSBwcm9qZWN0IGluY2x1ZGVzIGEgcGF0aCBkZXBlbmRlbmN5IHR3aWNlLCBvbmNlIHdpdGggYGVkaXRhYmxlID0gdHJ1ZWAgYW5kIG9uY2Ugd2l0aG91dCBhbnkgZWRpdGFibGUgYW5ub3RhdGlvbiwgdGhvc2UgYXJlIG5vdyBjb25zaWRlcmVkIGNvbmZsaWN0aW5nLCBhbmQgdXYgd2lsbCBleGl0IHdpdGggYW4gZXJyb3IuCgogIFlvdSBjYW5ub3Qgb3B0IG91dCBvZiB0aGlzIGJlaGF2aW9yLiBVc2UgY29uc2lzdGVudCBgZWRpdGFibGVgIHNldHRpbmdzIG9yIFttYXJrIGdyb3VwcyBhcyBjb25mbGljdGluZ10oaHR0cHM6Ly9kb2NzLmFzdHJhbC5zaC91di9jb25jZXB0cy9wcm9qZWN0cy9jb25maWcvI2NvbmZsaWN0aW5nLWRlcGVuZGVuY2llcykuCi0gKipNYWtlIGB1dl9idWlsZGAgdGhlIGRlZmF1bHQgYnVpbGQgYmFja2VuZCBpbiBgdXYgaW5pdGAgKFsjJiM4MjAzOzE0NjYxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ2NjEpKSoqCgogIFRoZSB1diBidWlsZCBiYWNrZW5kIChgdXZfYnVpbGRgKSB3YXMgW3N0YWJpbGl6ZWQgaW4gdXYgMC43LjE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL3RhZy8wLjcuMTkpLiBOb3csIGl0IGlzIHRoZSBkZWZhdWx0IGJ1aWxkIGJhY2tlbmQgZm9yIGB1diBpbml0IC0tcGFja2FnZWAgYW5kIGB1diBpbml0IC0tbGliYC4gUHJldmlvdXNseSwgYGhhdGNobGluZ2Agd2FzIHRoZSBkZWZhdWx0IGJ1aWxkIGJhY2tlbmQuIEEgYnVpbGQgYmFja2VuZCBpcyBzdGlsbCBub3QgdXNlZCB3aXRob3V0IG9wdC1pbiBpbiBgdXYgaW5pdGAsIGJ1dCB3ZSBleHBlY3QgdG8gY2hhbmdlIHRoaXMgaW4gYSBmdXR1cmUgcmVsZWFzZS4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3Igd2l0aCBgdXYgaW5pdCAtLWJ1aWxkLWJhY2tlbmQgaGF0Y2hsaW5nYC4KLSAqKlNldCBkZWZhdWx0IGBVVl9UT09MX0JJTl9ESVJgIG9uIERvY2tlciBpbWFnZXMgKFsjJiM4MjAzOzEzMzkxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMzOTEpKSoqCgogIFByZXZpb3VzbHksIGBVVl9UT09MX0JJTl9ESVJgIHdhcyBub3Qgc2V0IGluIERvY2tlciBpbWFnZXMgd2hpY2ggbWVhbnQgdGhhdCBgdXYgdG9vbCBpbnN0YWxsYCBkaWQgbm90IGluc3RhbGwgdG9vbHMgaW50byBhIGRpcmVjdG9yeSBvbiB0aGUgYFBBVEhgIHdpdGhvdXQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLiBOb3csIGBVVl9UT09MX0JJTl9ESVJgIGlzIHNldCB0byBgL3Vzci9sb2NhbC9iaW5gIGluIGFsbCBEb2NrZXIgZGVyaXZlZCBpbWFnZXMuCgogIFdoZW4gdGhlIGRlZmF1bHQgaW1hZ2UgdXNlciBpcyBvdmVycmlkZGVuIChlLmcuIGBVU0VSIDxVSUQ+YCkgd2l0aCBhIGxlc3MgcHJpdmlsZWdlZCB1c2VyLCB0aGlzIG1heSBjYXVzZSBgdXYgdG9vbCBpbnN0YWxsYCB0byBmYWlsLgoKICBZb3UgY2FuIG9wdCBvdXQgb2YgdGhpcyBiZWhhdmlvciBieSBzZXR0aW5nIGFuIGFsdGVybmF0aXZlIGBVVl9UT09MX0JJTl9ESVJgLgotICoqVXBkYXRlIGAtLWNoZWNrYCB0byByZXR1cm4gYW4gZXhpdCBjb2RlIG9mIDEgKFsjJiM4MjAzOzE0MTY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQxNjcpKSoqCgogIHV2IHVzZXMgYW4gZXhpdCBjb2RlIG9mIDEgdG8gaW5kaWNhdGUgYSAic3VjY2Vzc2Z1bCBmYWlsdXJlIiBhbmQgYW4gZXhpdCBjb2RlIG9mIDIgdG8gaW5kaWNhdGUgYW4gImVycm9yIi4KCiAgUHJldmlvdXNseSwgYHV2IGxvY2sgLS1jaGVja2AgYW5kIGB1diBzeW5jIC0tY2hlY2tgIHdvdWxkIGV4aXQgd2l0aCBhIGNvZGUgb2YgMiB3aGVuIHRoZSBsb2NrZmlsZSBvciBlbnZpcm9ubWVudCB3ZXJlIG91dGRhdGVkLiBOb3csIHV2IHdpbGwgZXhpdCB3aXRoIGEgY29kZSBvZiAxLgoKICBZb3UgY2Fubm90IG9wdCBvdXQgb2YgdGhpcyBiZWhhdmlvci4KLSAqKlVzZSBhbiBlcGhlbWVyYWwgZW52aXJvbm1lbnQgZm9yIGB1diBydW4gLS13aXRoYCBpbnZvY2F0aW9ucyAoWyMmIzgyMDM7MTQ0NDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDQ0NykpKioKCiAgV2hlbiB1c2luZyBgdXYgcnVuIC0td2l0aGAsIHV2IGxheWVycyB0aGUgcmVxdWlyZW1lbnRzIHJlcXVlc3RlZCB1c2luZyBgLS13aXRoYCBpbnRvIGFub3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudCBhbmQgY2FjaGVzIGl0LiBQcmV2aW91c2x5LCB1diB3b3VsZCBpbnZva2UgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBpbiB0aGlzIGxheWVyZWQgZW52aXJvbm1lbnQuIEhvd2V2ZXIsIHRoaXMgYWxsb3dzIHBvaXNvbmluZyB0aGUgY2FjaGVkIGVudmlyb25tZW50IGFuZCBpbnRyb2R1Y2VzIHJhY2UgY29uZGl0aW9ucyBmb3IgY29uY3VycmVudCBpbnZvY2F0aW9ucy4gTm93LCB1diB3aWxsIGxheWVyICphbm90aGVyKiBlbXB0eSB2aXJ0dWFsIGVudmlyb25tZW50IG9uIHRvcCBvZiB0aGUgY2FjaGVkIGVudmlyb25tZW50IGFuZCBpbnZva2UgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0aGVyZS4gVGhpcyBzaG91bGQgb25seSBjYXVzZSBicmVha2FnZSBpbiBjYXNlcyB3aGVyZSB0aGUgZW52aXJvbm1lbnQgaXMgYmVpbmcgaW5zcGVjdGVkIGF0IHJ1bnRpbWUuCgogIFlvdSBjYW5ub3Qgb3B0IG91dCBvZiB0aGlzIGJlaGF2aW9yLgotICoqUmVzdHJ1Y3R1cmUgdGhlIGB1diB2ZW52YCBjb21tYW5kIG91dHB1dCBhbmQgZXhpdCBjb2RlcyAoWyMmIzgyMDM7MTQ1NDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDU0NikpKioKCiAgUHJldmlvdXNseSwgdXYgdXNlZCBgbWlldHRlYCB0byBmb3JtYXQgdGhlIGB1diB2ZW52YCBvdXRwdXQuIEhvd2V2ZXIsIHRoaXMgd2FzIGluY29uc2lzdGVudCB3aXRoIG1vc3Qgb2YgdGhlIHV2IENMSS4gTm93LCB0aGUgb3V0cHV0IGlzIGEgbGl0dGxlIGRpZmZlcmVudCBhbmQgdGhlIGV4aXQgY29kZSBoYXMgc3dpdGNoZWQgZnJvbSAxIHRvIDIgZm9yIHNvbWUgZXJyb3IgY2FzZXMuCgogIFlvdSBjYW5ub3Qgb3B0IG91dCBvZiB0aGlzIGJlaGF2aW9yLgotICoqRGVmYXVsdCB0byBgLS13b3Jrc3BhY2VgIHdoZW4gYWRkaW5nIHN1YmRpcmVjdG9yaWVzIChbIyYjODIwMzsxNDUyOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NTI5KSkqKgoKICBXaGVuIHVzaW5nIGB1diBhZGRgIHRvIGFkZCBhIHN1YmRpcmVjdG9yeSBpbiBhIHdvcmtzcGFjZSwgdXYgbm93IGRlZmF1bHRzIHRvIGFkZGluZyB0aGUgdGFyZ2V0IGFzIGEgd29ya3NwYWNlIG1lbWJlci4KCiAgWW91IGNhbiBvcHQgb3V0IG9mIHRoaXMgYmVoYXZpb3IgYnkgcHJvdmlkaW5nIGAtLW5vLXdvcmtzcGFjZWAuCi0gKipBZGQgbWlzc2luZyB2YWxpZGF0aW9ucyBmb3IgZGlzYWxsb3dlZCBgdXYudG9tbGAgZmllbGRzIChbIyYjODIwMzsxNDMyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0MzIyKSkqKgoKICB1diBkb2VzIG5vdCBhbGxvdyBzb21lIHNldHRpbmdzIGluIHRoZSBgdXYudG9tbGAuIFByZXZpb3VzbHksIHNvbWUgc2V0dGluZ3Mgd2VyZSBzaWxlbnRseSBpZ25vcmVkIHdoZW4gcHJlc2VudCBpbiB0aGUgYHV2LnRvbWxgLiBOb3csIHV2IHdpbGwgZXJyb3IuCgogIFlvdSBjYW5ub3Qgb3B0IG91dCBvZiB0aGlzIGJlaGF2aW9yLiBVc2UgYC0tbm8tY29uZmlnYCBvciByZW1vdmUgdGhlIGludmFsaWQgc2V0dGluZ3MuCgojIyMjIyBDb25maWd1cmF0aW9uCgotIEFkZCBzdXBwb3J0IGZvciB0b2dnbGluZyBQeXRob24gYmluIGFuZCByZWdpc3RyeSBpbnN0YWxsIG9wdGlvbnMgdmlhIGVudiB2YXJzIChbIyYjODIwMzsxNDY2Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NjYyKSkKCiMjIyBbYHYwLjcuMjJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL3RhZy8wLjcuMjIpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjcuMjEuLi4wLjcuMjIpCgojIyMjIFJlbGVhc2UgTm90ZXMKCiMjIyMjIFB5dGhvbgoKLSBVcGdyYWRlIEdyYWFsUHkgdG8gMjQuMi4yCgpTZWUgdGhlIFtHcmFhbFB5IHJlbGVhc2Ugbm90ZXNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9vcmFjbGUvZ3JhYWxweXRob24vcmVsZWFzZXMvdGFnL2dyYWFsLTI0LjIuMikgZm9yIG1vcmUgZGV0YWlscy4KCiMjIyMjIENvbmZpZ3VyYXRpb24KCi0gQWRkIGBVVl9DT01QSUxFX0JZVEVDT0RFX1RJTUVPVVRgIGVudmlyb25tZW50IHZhcmlhYmxlIChbIyYjODIwMzsxNDM2OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0MzY5KSkKLSBBbGxvdyB1c2VycyB0byBvdmVycmlkZSBpbmRleCBgY2FjaGUtY29udHJvbGAgaGVhZGVycyAoWyMmIzgyMDM7MTQ2MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYyMCkpCi0gQWRkIGBVVl9MSUJDYCB0byBvdmVycmlkZSBsaWJjIHNlbGVjdGlvbiBpbiBtdWx0aS1saWJjIGVudmlyb25tZW50IChbIyYjODIwMzsxNDY0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NjQ2KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSBGaXggYC0tYWxsLWFyY2hlc2Agd2hlbiBwYWlyZWQgd2l0aCBgLS1vbmx5LWRvd25sb2Fkc2AgKFsjJiM4MjAzOzE0NjI5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ2MjkpKQotIFNraXAgV2luZG93cyBQeXRob24gaW50ZXJwcmV0ZXJzIHRoYXQgcmV0dXJuIGEgYnJva2VuIE1TSVggcGFja2FnZSBjb2RlIChbIyYjODIwMzsxNDYzNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NjM2KSkKLSBXYXJuIG9uIGludmFsaWQgYHV2LnRvbWxgIHdoZW4gcHJvdmlkZWQgdmlhIGRpcmVjdCBwYXRoIChbIyYjODIwMzsxNDY1M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NjUzKSkKLSBJbXByb3ZlIGFzeW5jIHNpZ25hbCBzYWZldHkgaW4gV2luZG93cyBleGNlcHRpb24gaGFuZGxlciAoWyMmIzgyMDM7MTQ2MTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYxOSkpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotIE1lbnRpb24gdGhlIGByZXZpc2lvbmAgaW4gdGhlIGxvY2tmaWxlIHZlcnNpb25pbmcgZG9jIChbIyYjODIwMzsxNDYzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NjM0KSkKLSBNb3ZlICJDb25mbGljdGluZyBkZXBlbmRlbmNpZXMiIHRvIHRoZSAiUmVzb2x1dGlvbiIgcGFnZSAoWyMmIzgyMDM7MTQ2MzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYzMykpCi0gUmVuYW1lICJEZXBlbmRlbmN5IHNwZWNpZmllcnMiIHNlY3Rpb24gdG8gZXhjbHVkZSBQRVAgNTA4IHJlZmVyZW5jZSAoWyMmIzgyMDM7MTQ2MzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYzMSkpCi0gU3VnZ2VzdCBgdXYgY2FjaGUgY2xlYW5gIHByaW9yIHRvIGAtLXJlaW5zdGFsbGAgKFsjJiM4MjAzOzE0NjU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ2NTkpKQoKIyMjIyMgUHJldmlldyBmZWF0dXJlcwoKLSBNYWtlIHByZXZpZXcgUHl0aG9uIHJlZ2lzdHJhdGlvbiBvbiBXaW5kb3dzIG5vbi1mYXRhbCAoWyMmIzgyMDM7MTQ2MTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYxNCkpCi0gVXBkYXRlIHByZXZpZXcgaW5zdGFsbGF0aW9uIG9mIFB5dGhvbiBleGVjdXRhYmxlcyB0byBiZSBub24tZmF0YWwgKFsjJiM4MjAzOzE0NjEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ2MTIpKQotIEFkZCBgdXYgcHl0aG9uIHVwZGF0ZS1zaGVsbGAgKFsjJiM4MjAzOzE0NjI3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ2MjcpKQoKIyMjIyBJbnN0YWxsIHV2IDAuNy4yMgoKIyMjIyMgSW5zdGFsbCBwcmVidWlsdCBiaW5hcmllcyB2aWEgc2hlbGwgc2NyaXB0CgpgYGBzaApjdXJsIC0tcHJvdG8gJz1odHRwcycgLS10bHN2MS4yIC1Mc1NmIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LWluc3RhbGxlci5zaCB8IHNoCmBgYAoKIyMjIyMgSW5zdGFsbCBwcmVidWlsdCBiaW5hcmllcyB2aWEgcG93ZXJzaGVsbCBzY3JpcHQKCmBgYHNoCnBvd2Vyc2hlbGwgLUV4ZWN1dGlvblBvbGljeSBCeXBhc3MgLWMgImlybSBodHRwczovL2dpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1pbnN0YWxsZXIucHMxIHwgaWV4IgpgYGAKCiMjIyMgRG93bmxvYWQgdXYgMC43LjIyCgp8ICBGaWxlICB8IFBsYXRmb3JtIHwgQ2hlY2tzdW0gfAp8LS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IFt1di1hYXJjaDY0LWFwcGxlLWRhcndpbi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5neikgfCBBcHBsZSBTaWxpY29uIG1hY09TIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1hYXJjaDY0LWFwcGxlLWRhcndpbi50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtYXBwbGUtZGFyd2luLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYteDg2XzY0LWFwcGxlLWRhcndpbi50YXIuZ3opIHwgSW50ZWwgbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LXg4Nl82NC1hcHBsZS1kYXJ3aW4udGFyLmd6LnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LWFhcmNoNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCBBUk02NCBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1hYXJjaDY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwKSB8IHg4NiBXaW5kb3dzIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYteDg2XzY0LXBjLXdpbmRvd3MtbXN2Yy56aXApIHwgeDY0IFdpbmRvd3MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LXg4Nl82NC1wYy13aW5kb3dzLW1zdmMuemlwLnNoYTI1NikgfAp8IFt1di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgQVJNNjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtaTY4Ni11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgeDg2IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgUFBDNjRMRSBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1yaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1yaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFJJU0NWIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1yaXNjdjY0Z2MtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBTMzkweCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYteDg2XzY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4NjQgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LXg4Nl82NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6KSB8IEFSTXY3IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6KSB8IEFSTTY0IE1VU0wgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3opIHwgeDg2IE1VU0wgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIyL3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5nei5zaGEyNTYpIHwKfCBbdXYteDg2XF82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di14ODZfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4NjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYteDg2XzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFybS11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5neikgfCBBUk12NiBNVVNMIExpbnV4IChIYXJkZmxvYXQpIHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1hcm0tdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjIvdXYtYXJtdjctdW5rbm93bi1saW51eC1tdXNsZWFiaWhmLnRhci5neikgfCBBUk12NyBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMi91di1hcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6LnNoYTI1NikgfAoKIyMjIFtgdjAuNy4yMWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvdGFnLzAuNy4yMSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNy4yMC4uLjAuNy4yMSkKCiMjIyMgUmVsZWFzZSBOb3RlcwoKIyMjIyMgUHl0aG9uCgotIFJlc3RvcmUgdGhlIFNRTGl0ZSBgZnRzNGAsIGBmdHM1YCwgYHJ0cmVlYCwgYW5kIGBnZW9wb2x5YCBleHRlbnNpb25zIG9uIG1hY09TIGFuZCBMaW51eAoKU2VlIHRoZSBbYHB5dGhvbi1idWlsZC1zdGFuZGFsb25lYCByZWxlYXNlIG5vdGVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3B5dGhvbi1idWlsZC1zdGFuZGFsb25lL3JlbGVhc2VzL3RhZy8yMDI1MDcxMikgZm9yIG1vcmUgZGV0YWlscy4KCiMjIyMjIEVuaGFuY2VtZW50cwoKLSBBZGQgYC0tcHl0aG9uLXBsYXRmb3JtYCB0byBgdXYgc3luY2AgKFsjJiM4MjAzOzE0MzIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQzMjApKQotIFN1cHBvcnQgcHJlLXJlbGVhc2VzIGluIGB1diB2ZXJzaW9uIC0tYnVtcGAgKFsjJiM4MjAzOzEzNTc4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTM1NzgpKQotIEFkZCBgLXdgIHNob3J0aGFuZCBmb3IgYC0td2l0aGAgKFsjJiM4MjAzOzE0NTMwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ1MzApKQotIEFkZCBhbiBleGNlcHRpb24gaGFuZGxlciBvbiBXaW5kb3dzIHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gb24gY3Jhc2ggKFsjJiM4MjAzOzE0NTgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ1ODIpKQotIEFkZCBoaW50IHdoZW4gUHl0aG9uIGRvd25sb2FkcyBhcmUgZGlzYWJsZWQgKFsjJiM4MjAzOzE0NTIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQ1MjIpKQotIEFkZCBgVVZfSFRUUF9SRVRSSUVTYCB0byBjdXN0b21pemUgcmV0cnkgY291bnRzIChbIyYjODIwMzsxNDU0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NTQ0KSkKLSBGb2xsb3cgbGVhZiBzeW1saW5rcyBtYXRjaGVkIGJ5IGdsb2JzIGluIGBjYWNoZS1rZXlgIChbIyYjODIwMzsxMzQzOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzNDM4KSkKLSBTdXBwb3J0IHBhcmVudCBwYXRoIGNvbXBvbmVudHMgKGAuLmApIGluIGdsb2JzIGluIGBjYWNoZS1rZXlgIChbIyYjODIwMzsxMzQ2OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzNDY5KSkKLSBJbXByb3ZlIGBjYWNoZS1rZXlgIHBlcmZvcm1hbmNlIChbIyYjODIwMzsxMzQ2OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzNDY5KSkKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gQWRkIGB1diBzeW5jIC0tb3V0cHV0LWZvcm1hdCBqc29uYCAoWyMmIzgyMDM7MTM2ODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzY4OSkpCgojIyMjIyBCdWcgZml4ZXMKCi0gRG8gbm90IHJlLXJlc29sdmUgd2l0aCBhIG5ldyBQeXRob24gdmVyc2lvbiBpbiBgdXYgdG9vbGAgaWYgaXQgaXMgaW5jb21wYXRpYmxlIHdpdGggYC0tcHl0aG9uYCAoWyMmIzgyMDM7MTQ2MDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDYwNikpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotIERvY3VtZW50IGhvdyB0byBuZXN0IGRlcGVuZGVuY3kgZ3JvdXBzIHdpdGggYGluY2x1ZGUtZ3JvdXBgIChbIyYjODIwMzsxNDUzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NTM5KSkKLSBGaXggcmVwZWF0ZWQgd29yZCBpbiBQeW9kaWRlIGRvYyAoWyMmIzgyMDM7MTQ1NTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDU1NCkpCi0gVXBkYXRlIENPTlRSSUJVVElORy5tZCB3aXRoIGluc3RydWN0aW9ucyB0byBmb3JtYXQgTWFya2Rvd24gZmlsZXMgdmlhIERvY2tlciAoWyMmIzgyMDM7MTQyNDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDI0NikpCi0gRml4IHZlcnNpb24gbnVtYmVyIGZvciBgc2V0dXAtcHl0aG9uYCAoWyMmIzgyMDM7MTQ1MzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDUzMykpCgojIyMjIEluc3RhbGwgdXYgMC43LjIxCgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBzaGVsbCBzY3JpcHQKCmBgYHNoCmN1cmwgLS1wcm90byAnPWh0dHBzJyAtLXRsc3YxLjIgLUxzU2YgaHR0cHM6Ly9naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtaW5zdGFsbGVyLnNoIHwgc2gKYGBgCgojIyMjIyBJbnN0YWxsIHByZWJ1aWx0IGJpbmFyaWVzIHZpYSBwb3dlcnNoZWxsIHNjcmlwdAoKYGBgc2gKcG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtYyAiaXJtIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWluc3RhbGxlci5wczEgfCBpZXgiCmBgYAoKIyMjIyBEb3dubG9hZCB1diAwLjcuMjEKCnwgIEZpbGUgIHwgUGxhdGZvcm0gfCBDaGVja3N1bSB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgW3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtYWFyY2g2NC1hcHBsZS1kYXJ3aW4udGFyLmd6KSB8IEFwcGxlIFNpbGljb24gbWFjT1MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWFhcmNoNjQtYXBwbGUtZGFyd2luLnRhci5nei5zaGEyNTYpIHwKfCBbdXYteDg2XF82NC1hcHBsZS1kYXJ3aW4udGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di14ODZfNjQtYXBwbGUtZGFyd2luLnRhci5neikgfCBJbnRlbCBtYWNPUyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYteDg2XzY0LWFwcGxlLWRhcndpbi50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWFhcmNoNjQtcGMtd2luZG93cy1tc3ZjLnppcF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtYWFyY2g2NC1wYy13aW5kb3dzLW1zdmMuemlwKSB8IEFSTTY0IFdpbmRvd3MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWFhcmNoNjQtcGMtd2luZG93cy1tc3ZjLnppcC5zaGEyNTYpIHwKfCBbdXYtaTY4Ni1wYy13aW5kb3dzLW1zdmMuemlwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1pNjg2LXBjLXdpbmRvd3MtbXN2Yy56aXApIHwgeDg2IFdpbmRvd3MgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWk2ODYtcGMtd2luZG93cy1tc3ZjLnppcC5zaGEyNTYpIHwKfCBbdXYteDg2XF82NC1wYy13aW5kb3dzLW1zdmMuemlwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di14ODZfNjQtcGMtd2luZG93cy1tc3ZjLnppcCkgfCB4NjQgV2luZG93cyB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYteDg2XzY0LXBjLXdpbmRvd3MtbXN2Yy56aXAuc2hhMjU2KSB8CnwgW3V2LWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1hYXJjaDY0LXVua25vd24tbGludXgtZ251LnRhci5neikgfCBBUk02NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1pNjg2LXVua25vd24tbGludXgtZ251LnRhci5neikgfCB4ODYgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWk2ODYtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFBQQzY0IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6LnNoYTI1NikgfAp8IFt1di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251LnRhci5neikgfCBQUEM2NExFIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXJpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudS50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LXJpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudS50YXIuZ3opIHwgUklTQ1YgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LXJpc2N2NjRnYy11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXMzOTB4LXVua25vd24tbGludXgtZ251LnRhci5nel0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtczM5MHgtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IFMzOTB4IExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1zMzkweC11bmtub3duLWxpbnV4LWdudS50YXIuZ3ouc2hhMjU2KSB8CnwgW3V2LXg4NlxfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di14ODZfNjQtdW5rbm93bi1saW51eC1nbnUudGFyLmd6KSB8IHg2NCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYteDg2XzY0LXVua25vd24tbGludXgtZ251LnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtdjctdW5rbm93bi1saW51eC1nbnVlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1hcm12Ny11bmtub3duLWxpbnV4LWdudWVhYmloZi50YXIuZ3opIHwgQVJNdjcgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWFybXY3LXVua25vd24tbGludXgtZ251ZWFiaWhmLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1hYXJjaDY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3opIHwgQVJNNjQgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtYWFyY2g2NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di1pNjg2LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWk2ODYtdW5rbm93bi1saW51eC1tdXNsLnRhci5neikgfCB4ODYgTVVTTCBMaW51eCB8IFtjaGVja3N1bV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9yZWxlYXNlcy9kb3dubG9hZC8wLjcuMjEvdXYtaTY4Ni11bmtub3duLWxpbnV4LW11c2wudGFyLmd6LnNoYTI1NikgfAp8IFt1di14ODZcXzY0LXVua25vd24tbGludXgtbXVzbC50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LXg4Nl82NC11bmtub3duLWxpbnV4LW11c2wudGFyLmd6KSB8IHg2NCBNVVNMIExpbnV4IHwgW2NoZWNrc3VtXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di14ODZfNjQtdW5rbm93bi1saW51eC1tdXNsLnRhci5nei5zaGEyNTYpIHwKfCBbdXYtYXJtLXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWFybS11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6KSB8IEFSTXY2IE1VU0wgTGludXggKEhhcmRmbG9hdCkgfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWFybS11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6LnNoYTI1NikgfAp8IFt1di1hcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3JlbGVhc2VzL2Rvd25sb2FkLzAuNy4yMS91di1hcm12Ny11bmtub3duLWxpbnV4LW11c2xlYWJpaGYudGFyLmd6KSB8IEFSTXY3IE1VU0wgTGludXggfCBbY2hlY2tzdW1dKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcmVsZWFzZXMvZG93bmxvYWQvMC43LjIxL3V2LWFybXY3LXVua25vd24tbGludXgtbXVzbGVhYmloZi50YXIuZ3ouc2hhMjU2KSB8Cgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogQnJhbmNoIGNyZWF0aW9uIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLCBBdXRvbWVyZ2UgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkuCgrwn5qmICoqQXV0b21lcmdlKio6IERpc2FibGVkIGJ5IGNvbmZpZy4gUGxlYXNlIG1lcmdlIHRoaXMgbWFudWFsbHkgb25jZSB5b3UgYXJlIHNhdGlzZmllZC4KCuKZuyAqKlJlYmFzaW5nKio6IFdoZW5ldmVyIFBSIGJlY29tZXMgY29uZmxpY3RlZCwgb3IgeW91IHRpY2sgdGhlIHJlYmFzZS9yZXRyeSBjaGVja2JveC4KCvCflJUgKipJZ25vcmUqKjogQ2xvc2UgdGhpcyBQUiBhbmQgeW91IHdvbid0IGJlIHJlbWluZGVkIGFib3V0IHRoaXMgdXBkYXRlIGFnYWluLgoKLS0tCgogLSBbIF0gPCEtLSByZWJhc2UtY2hlY2sgLS0+SWYgeW91IHdhbnQgdG8gcmViYXNlL3JldHJ5IHRoaXMgUFIsIGNoZWNrIHRoaXMgYm94CgotLS0KClRoaXMgUFIgd2FzIGdlbmVyYXRlZCBieSBbTWVuZCBSZW5vdmF0ZV0oaHR0cHM6Ly9tZW5kLmlvL3Jlbm92YXRlLykuIFZpZXcgdGhlIFtyZXBvc2l0b3J5IGpvYiBsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vZ2l0aHViL29zaXNtL2NvbnRhaW5lci1pbWFnZS1rb2xsYS1hbnNpYmxlKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJME1TNHlNeTR5SWl3aWRYQmtZWFJsWkVsdVZtVnlJam9pTkRFdU56RXVNU0lzSW5SaGNtZGxkRUp5WVc1amFDSTZJbTFoYVc0aUxDSnNZV0psYkhNaU9sc2ljbVZ1YjNaaGRHVWlYWDA9LS0+Cg==
      patchset: 3e64c91ab0abc2808facf7c7559d152fd023aa26
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: caa0df55ed55158f32903d317317ac95db4da6ce
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 9b966b7c4a2bfb253652691d791f76f825145a9c
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: caa0df55ed55158f32903d317317ac95db4da6ce
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/ansible-lint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_2/openinfra-zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-image-kolla-ansible
        name: osism/container-image-kolla-ansible
        short_name: container-image-kolla-ansible
        src_dir: src/github.com/osism/container-image-kolla-ansible
      projects:
        github.com/osism/container-image-kolla-ansible:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-kolla-ansible
          checkout: main
          checkout_description: zuul branch
          commit: 077e38bdf8918f4df88151665e5e1a3075079b09
          name: osism/container-image-kolla-ansible
          required: false
          short_name: container-image-kolla-ansible
          src_dir: src/github.com/osism/container-image-kolla-ansible
      ref: refs/pull/794/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
