all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.192.179
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 85e2f94d-13c8-414c-95f1-e4c2c3b530f6
        host_id: df70f2a3f3d0c26428f22685cfc722ebc48099d99e7332c39e017195
        interface_ip: 81.163.192.179
        label: ubuntu-noble
        private_ipv4: 10.128.0.110
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.179
        public_ipv6: ''
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job hadolint branches: None source: osism/zuul-jobs/.zuul.yaml@main#37>'
      - '<Job hadolint branches: None source: osism/container-images/.zuul.yaml@main#2>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: f3828c29119d4c1a94a079ed405c8b1e
      buildset: feb05d7d3a2645eab39a617759b25ae1
      change: '709'
      change_message: "chore(deps): update netbox\n\nThis PR contains the following\
        \ updates:\n\n| Package | Type | Update | Change | Age | Adoption | Passing\
        \ | Confidence |\n|---|---|---|---|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)\
        \ | final | patch | `0.6.11` -> `0.6.16` | [![age](https://developer.mend.io/api/mc/badges/age/docker/ghcr.io%2fastral-sh%2fuv/0.6.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/ghcr.io%2fastral-sh%2fuv/0.6.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.6.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.6.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [netbox-plugin-dns](https://redirect.github.com/peteeckel/netbox-plugin-dns)\
        \ |  | patch | `==1.2.6` -> `==1.2.9` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/netbox-plugin-dns/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/netbox-plugin-dns/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/netbox-plugin-dns/1.2.6/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/netbox-plugin-dns/1.2.6/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ |  | patch | `v4.2.2` -> `v4.2.8` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ | stage | patch | `v4.2.2` -> `v4.2.8` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary>\n\
        \n### [`v0.6.16`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0616)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.15...0.6.16)\n\
        \n##### Bug fixes\n\n-   Revert \"Properly handle authentication for 302 redirect\
        \ URLs\" ([#&#8203;13041](https://redirect.github.com/astral-sh/uv/pull/13041))\n\
        \n### [`v0.6.15`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0615)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.14...0.6.15)\n\
        \nThis release includes preliminary support for the `pylock.toml` file format,\
        \ as standardized in [PEP 751](https://peps.python.org/pep-0751/). `pylock.toml`\
        \ is an alternative resolution output format intended to replace `requirements.txt`\
        \ (e.g., in the context of `uv pip compile`, whereby a \"locked\" `requirements.txt`\
        \ file is generated from a set of input requirements). `pylock.toml` is standardized\
        \ and tool-agnostic, such that in the future, `pylock.toml` files generated\
        \ by uv could be installed by other tools, and vice versa.\n\nAs of this release,\
        \ `pylock.toml` is supported in the following commands:\n\n-   To export a\
        \ `uv.lock` to the `pylock.toml` format, run: `uv export -o pylock.toml`\n\
        -   To generate a `pylock.toml` file from a set of requirements, run: `uv\
        \ pip compile -o pylock.toml -r requirements.in`\n-   To install from a `pylock.toml`\
        \ file, run: `uv pip sync pylock.toml` or `uv pip install -r pylock.toml`\n\
        \n##### Enhancements\n\n-   Add PEP 751 support to `uv pip compile` ([#&#8203;13019](https://redirect.github.com/astral-sh/uv/pull/13019))\n\
        -   Add `uv export` support for PEP 751 ([#&#8203;12955](https://redirect.github.com/astral-sh/uv/pull/12955))\n\
        -   Accept `requirements.txt` (verbatim) as a format on the CLI ([#&#8203;12957](https://redirect.github.com/astral-sh/uv/pull/12957))\n\
        -   Add `UV_NO_EDITABLE` environment variable to set `--no-editable` on all\
        \ invocations ([#&#8203;12773](https://redirect.github.com/astral-sh/uv/pull/12773))\n\
        -   Add `pylock.toml` to `uv pip install` and `uv pip sync` ([#&#8203;12992](https://redirect.github.com/astral-sh/uv/pull/12992))\n\
        -   Add a brief sleep before sending `SIGINT` to child processes ([#&#8203;13018](https://redirect.github.com/astral-sh/uv/pull/13018))\n\
        -   Add upload time to `uv.lock` ([#&#8203;12968](https://redirect.github.com/astral-sh/uv/pull/12968))\n\
        -   Allow updating Git sources by name ([#&#8203;12897](https://redirect.github.com/astral-sh/uv/pull/12897))\n\
        -   Cache `which git` in `uv init` ([#&#8203;12893](https://redirect.github.com/astral-sh/uv/pull/12893))\n\
        -   Enable `--dry-run` with `--locked` / `--frozen` for `uv sync` ([#&#8203;12778](https://redirect.github.com/astral-sh/uv/pull/12778))\n\
        -   Infer output type in `uv export` ([#&#8203;12958](https://redirect.github.com/astral-sh/uv/pull/12958))\n\
        -   Make `uv init` resilient against broken git ([#&#8203;12895](https://redirect.github.com/astral-sh/uv/pull/12895))\n\
        -   Respect build constraints for `uv run --with` dependencies ([#&#8203;12882](https://redirect.github.com/astral-sh/uv/pull/12882))\n\
        -   Split UV_INDEX on all whitespace ([#&#8203;12820](https://redirect.github.com/astral-sh/uv/pull/12820))\n\
        -   Support build constraints in `uv tool` and PEP723 scripts. ([#&#8203;12842](https://redirect.github.com/astral-sh/uv/pull/12842))\n\
        -   Use suffix from `uvx` binary when searching for uv binary ([#&#8203;12923](https://redirect.github.com/astral-sh/uv/pull/12923))\n\
        -   Update version formatting to use cyan color ([#&#8203;12943](https://redirect.github.com/astral-sh/uv/pull/12943))\n\
        -   Add debug logs for version file search ([#&#8203;12951](https://redirect.github.com/astral-sh/uv/pull/12951))\n\
        -   Fix `SourceNotAllowed` error message during Python discovery ([#&#8203;13012](https://redirect.github.com/astral-sh/uv/pull/13012))\n\
        -   Obfuscate password in credentials debug messages ([#&#8203;12944](https://redirect.github.com/astral-sh/uv/pull/12944))\n\
        -   Obfuscate possible tokens in URL logs ([#&#8203;12969](https://redirect.github.com/astral-sh/uv/pull/12969))\n\
        -   Validate that PEP 751 entries don't include multiple sources ([#&#8203;12993](https://redirect.github.com/astral-sh/uv/pull/12993))\n\
        \n##### Preview features\n\n-   Build backend: Add reference docs and schema\
        \ ([#&#8203;12803](https://redirect.github.com/astral-sh/uv/pull/12803))\n\
        \n##### Bug fixes\n\n-   Align supported `config-settings` with example in\
        \ docs ([#&#8203;12947](https://redirect.github.com/astral-sh/uv/pull/12947))\n\
        -   Ensure virtual environment is compatible with interpreter on sync ([#&#8203;12884](https://redirect.github.com/astral-sh/uv/pull/12884))\n\
        -   Fix `PythonDownloadRequest` parsing for partial keys ([#&#8203;12925](https://redirect.github.com/astral-sh/uv/pull/12925))\n\
        -   Fix pre-release exclusive comparison operator in `uv-pep440` ([#&#8203;12836](https://redirect.github.com/astral-sh/uv/pull/12836))\n\
        -   Forward additional signals to the child process in `uv run` ([#&#8203;13017](https://redirect.github.com/astral-sh/uv/pull/13017))\n\
        -   Omit PEP 751 version for source trees ([#&#8203;13030](https://redirect.github.com/astral-sh/uv/pull/13030))\n\
        -   Patch `CC` and `CCX` entries in sysconfig for cross-compiled `aarch64`\
        \ Python distributions ([#&#8203;12239](https://redirect.github.com/astral-sh/uv/pull/12239))\n\
        -   Properly handle authentication for HTTP 302 redirect URLs ([#&#8203;12920](https://redirect.github.com/astral-sh/uv/pull/12920))\n\
        -   Set 4MB stack size for all threads, introduce `UV_STACK_SIZE` ([#&#8203;12839](https://redirect.github.com/astral-sh/uv/pull/12839))\n\
        -   Show PyPy downloads during `uv python list` ([#&#8203;12915](https://redirect.github.com/astral-sh/uv/pull/12915))\n\
        -   Add `subdirectory` to Direct URL for local directories ([#&#8203;12971](https://redirect.github.com/astral-sh/uv/pull/12971))\n\
        -   Prefer stable releases over pre-releases in `uv python install` ([#&#8203;12194](https://redirect.github.com/astral-sh/uv/pull/12194))\n\
        -   Write requested Python variant to pin file in `uv init` ([#&#8203;12870](https://redirect.github.com/astral-sh/uv/pull/12870))\n\
        \n##### Documentation\n\n-   Fix CLI reference with code block ([#&#8203;12807](https://redirect.github.com/astral-sh/uv/pull/12807))\n\
        -   Fix lockfile note ([#&#8203;12793](https://redirect.github.com/astral-sh/uv/pull/12793))\n\
        -   Fix typo in a reference ([#&#8203;12858](https://redirect.github.com/astral-sh/uv/pull/12858))\n\
        -   Improve docs for `uv python list --only-downloads` and `--only-installed`\
        \ ([#&#8203;12916](https://redirect.github.com/astral-sh/uv/pull/12916))\n\
        -   Update not on lack of musl distributions to ARM-only ([#&#8203;12825](https://redirect.github.com/astral-sh/uv/pull/12825))\n\
        -   Add section on shebangs for scripts ([#&#8203;11553](https://redirect.github.com/astral-sh/uv/pull/11553))\n\
        -   Display aliases for long and short args in the CLI reference ([#&#8203;12824](https://redirect.github.com/astral-sh/uv/pull/12824))\n\
        -   Fix highlight line in explicit index documentation ([#&#8203;12887](https://redirect.github.com/astral-sh/uv/pull/12887))\n\
        -   Add explicit source (matching PyTorch guide) ([#&#8203;12844](https://redirect.github.com/astral-sh/uv/pull/12844))\n\
        -   Fix link to issue ([#&#8203;12823](https://redirect.github.com/astral-sh/uv/pull/12823))\n\
        -   Fix grammatical error in FastAPI guide ([#&#8203;12908](https://redirect.github.com/astral-sh/uv/pull/12908))\n\
        -   Add `--locked` to `uv sync` in GitHub Actions guide ([#&#8203;12819](https://redirect.github.com/astral-sh/uv/pull/12819))\n\
        -   Improve formatting for `\"all\"` `default-groups` setting documentation\
        \ ([#&#8203;12963](https://redirect.github.com/astral-sh/uv/pull/12963))\n\
        -   Replace `--frozen` with `--locked` in Docker integration guide ([#&#8203;12818](https://redirect.github.com/astral-sh/uv/pull/12818))\n\
        \n### [`v0.6.14`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0614)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.13...0.6.14)\n\
        \n##### Python versions\n\nThe following Python versions have been added:\n\
        \n-   CPython 3.13.3\n-   CPython 3.12.10\n-   CPython 3.11.12\n-   CPython\
        \ 3.10.17\n-   CPython 3.9.22\n\nSee the [`python-build-standalone` release\
        \ notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250409)\
        \ for more details.\n\n##### Enhancements\n\n-   Add `uv-build` and `uv_build`\
        \ aliases to `uv init --build-backend` ([#&#8203;12776](https://redirect.github.com/astral-sh/uv/pull/12776))\n\
        -   Emit dedicated error message for Conda `environment.yml` files ([#&#8203;12669](https://redirect.github.com/astral-sh/uv/pull/12669))\n\
        \n##### Preview features\n\n-   Build backend: Check module dir exists for\
        \ sdist build ([#&#8203;12779](https://redirect.github.com/astral-sh/uv/pull/12779))\n\
        -   Build backend: Fix sdist with long directories ([#&#8203;12764](https://redirect.github.com/astral-sh/uv/pull/12764))\n\
        \n##### Performance\n\n-   Avoid querying GitHub on repeated install invocations\
        \ ([#&#8203;12767](https://redirect.github.com/astral-sh/uv/pull/12767))\n\
        \n##### Bug fixes\n\n-   Error when `tool.uv.sources` is set in system-level\
        \ configuration file ([#&#8203;12757](https://redirect.github.com/astral-sh/uv/pull/12757))\n\
        -   Split workspace members onto their own lines in `uv init` ([#&#8203;12756](https://redirect.github.com/astral-sh/uv/pull/12756))\n\
        \n##### Documentation\n\n-   Add lockfile note about PEP 751 ([#&#8203;12732](https://redirect.github.com/astral-sh/uv/pull/12732))\n\
        -   Extend the reference documentation for `uv pip sync` ([#&#8203;12683](https://redirect.github.com/astral-sh/uv/pull/12683))\n\
        -   Fix mismatched pip interface header / nav titles ([#&#8203;12640](https://redirect.github.com/astral-sh/uv/pull/12640))\n\
        \n### [`v0.6.13`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0613)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.12...0.6.13)\n\
        \n##### Enhancements\n\n-   Add `--show-version` to `uv python find` ([#&#8203;12376](https://redirect.github.com/astral-sh/uv/pull/12376))\n\
        -   Remove `--no-config` warning from `uv pip compile` and `uv pip sync` ([#&#8203;12642](https://redirect.github.com/astral-sh/uv/pull/12642))\n\
        -   Skip repeated directories in `PATH` when searching for Python interpreters\
        \ ([#&#8203;12367](https://redirect.github.com/astral-sh/uv/pull/12367))\n\
        -   Unset `SCRIPT_PATH` in relocatable activation script ([#&#8203;12672](https://redirect.github.com/astral-sh/uv/pull/12672))\n\
        -   Add `UV_PYTHON_DOWNLOADS_JSON_URL` to set custom managed python sources\
        \ ([#&#8203;10939](https://redirect.github.com/astral-sh/uv/pull/10939))\n\
        -   Reject `pyproject.toml` files in `uv pip compile -o` ([#&#8203;12673](https://redirect.github.com/astral-sh/uv/pull/12673))\n\
        -   Respect the `--offline` flag for Git operations ([#&#8203;12619](https://redirect.github.com/astral-sh/uv/pull/12619))\n\
        \n##### Bug fixes\n\n-   Warn instead of error if CRC appears to be missing\
        \ ([#&#8203;12722](https://redirect.github.com/astral-sh/uv/pull/12722))\n\
        -   Avoid infinite loop in `uv export` with conflicts ([#&#8203;12726](https://redirect.github.com/astral-sh/uv/pull/12726))\n\
        \n##### Rust API\n\n-   Update MSRV to 1.84 ([#&#8203;12670](https://redirect.github.com/astral-sh/uv/pull/12670))\n\
        \n### [`v0.6.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0612)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.11...0.6.12)\n\
        \n##### Enhancements\n\n-   Report the queried executable path in `uv python\
        \ list` ([#&#8203;12628](https://redirect.github.com/astral-sh/uv/pull/12628))\n\
        -   Improve archive unpack error messages ([#&#8203;12627](https://redirect.github.com/astral-sh/uv/pull/12627))\n\
        \n##### Bug fixes\n\n-   Respect `authenticate` when using `explicit = true`\
        \ ([#&#8203;12631](https://redirect.github.com/astral-sh/uv/pull/12631))\n\
        -   Normalize extra and group names in `uv add` and `uv remove` ([#&#8203;12586](https://redirect.github.com/astral-sh/uv/pull/12586))\n\
        -   Enforce CRC-32 checks when unpacking archives ([#&#8203;12623](https://redirect.github.com/astral-sh/uv/pull/12623))\n\
        -   Fix parsing of `python-platform` in settings files ([#&#8203;12592](https://redirect.github.com/astral-sh/uv/pull/12592))\n\
        \n##### Documentation\n\n-   Add note about `uv build` to `package = false`\
        \ ([#&#8203;12608](https://redirect.github.com/astral-sh/uv/pull/12608))\n\
        -   Add index fallback note to `authenticate = always` documentation ([#&#8203;12498](https://redirect.github.com/astral-sh/uv/pull/12498))\n\
        -   Fix invalid 'kind' reference in flat index docs ([#&#8203;12583](https://redirect.github.com/astral-sh/uv/pull/12583))\n\
        \n</details>\n\n<details>\n<summary>peteeckel/netbox-plugin-dns (netbox-plugin-dns)</summary>\n\
        \n### [`v1.2.9`](https://redirect.github.com/peteeckel/netbox-plugin-dns/releases/tag/1.2.9):\
        \ Feature release 1.2.9\n\n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.8...1.2.9)\n\
        \n#### What's Changed\n\n-   Redesigned the record ChoiceSets and created\
        \ the `custom_record_types` option by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/599](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/599)\n\
        -   Provide a default list of filtered RRTYPEs by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/601](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/601)\n\
        -   slight change of wording by [@&#8203;jpmens](https://redirect.github.com/jpmens)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/602](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/602)\n\
        -   Added the option to remove specific record types from the filter list\
        \ by [@&#8203;peteeckel](https://redirect.github.com/peteeckel) in [https://github.com/peteeckel/netbox-plugin-dns/pull/604](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/604)\n\
        -   Introduced check for SOA-safe fields and added tests by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/606](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/606)\n\
        -   Added the parental_agents field to DNSSECPolicy by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/607](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/607)\n\
        -   Moved the parental_agents field from DNSSECPolicy to Zone by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/609](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/609)\n\
        \n**Full Changelog**: https://github.com/peteeckel/netbox-plugin-dns/compare/1.2.7...1.2.9\n\
        \n### [`v1.2.8`](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.7...1.2.8)\n\
        \n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.7...1.2.8)\n\
        \n### [`v1.2.7`](https://redirect.github.com/peteeckel/netbox-plugin-dns/releases/tag/1.2.7):\
        \ Feature/Bugfix Release 1.2.7\n\n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.6...1.2.7)\n\
        \n#### DNSSEC\n\nThis is release adds DNSSEC support for NetBox DNS.\n\nNetBox\
        \ DNS supports the management of DNSSEC in as much as DNSSEC Key Templates\
        \ and DNSSEC Policies can be stored in NetBox DNS and assigned to zones. It\
        \ does not, however, support zone signing nor storing cryptographic material\
        \ in the NetBox database. There are two main reasons for this concept:\n\n\
        1.  Storing cryptographic material in a data source for automation is generally\
        \ problematic. While there is the NetBox Secrets plugin, it is better practice\
        \ to store confidential data in vault systems specifically created for this\
        \ purpose. (In some cases the keys are stored in HSMs as an added method of\
        \ protection.)\n2.  In typical modern scenarios, signing servers maintain\
        \ keys and sign records, so such configurations do not even require having\
        \ NetBox DNS provide keys or create the signatures from within NetBox DNS.\n\
        \nAdditionally, there is no direct integration between NetBox and any given\
        \ name server implementation, so an interface for providing signed zones to\
        \ a name server is generally out of scope for NetBox DNS, just as it is the\
        \ case for serving plain DNS. This should be implemented using specific solutions\
        \ adapted to the use case and the name server implementation used.\n\nAs noted\
        \ earlier there are two data models for DNSSEC in NetBox DNS: DNSSEC Key Templates\
        \ and DNSSEC Policies. The former are used for storing parameters for DNSSEC\
        \ Keys such as the type, algorithm and lifetime, and the latter to define\
        \ policies that determine how often signatures are regenerated, DS records\
        \ are propagated etc.\n\nWhile the implementation is oriented largely towards\
        \ options BIND 9 provides, this is mainly because that software has a huge\
        \ set of configuration options and other products are usually not very different,\
        \ in most cases more limited than BIND 9. Given the large installed base of\
        \ BIND 9, this is considered a good basis. (There is, however, no reason why\
        \ NetBox DNS cannot be used to maintain data for, say, Knot-DNS or PowerDNS.)\n\
        \nFor a summary of the new functionality, see [this blogpost](https://jpmens.net/2025/03/16/dnssec-policy-and-key-template-support-in-netbox-dns/)\
        \ by [@&#8203;jpmens](https://redirect.github.com/jpmens).\n\n#### What's\
        \ Changed\n\n-   SOA MNAME must be checked in zone forms if zone template\
        \ is not set by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/589](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/589)\n\
        -   complete fr translation by [@&#8203;jean1](https://redirect.github.com/jean1)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/592](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/592)\n\
        -   Check whether zone was passed via dict before resolving templates by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/594](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/594)\n\
        -   Add DNSSEC support by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/563](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/563)\n\
        -   Add domain registration expiration date and EPP status fields by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/590](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/590)\n\
        -   Add tests for NetBox DNS objects as custom field targets by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/595](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/595)\n\
        -   Initialise views in `urls.py` instead of `ready()` by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/596](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/596)\n\
        \n**Full Changelog**: https://github.com/peteeckel/netbox-plugin-dns/compare/1.2.6...1.2.7\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\U0001F47B\
        \ **Immortal**: This PR will be recreated if closed unmerged. Get [config\
        \ help](https://redirect.github.com/renovatebot/renovate/discussions) if that's\
        \ undesired.\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-images).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/container-images/pull/709
      child_jobs: []
      commit_id: 3d9c5b0de96426594851cfef506bf8451a2961d1
      event_id: d08731a0-2032-11f0-987e-28c5ad8a5ac7
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/f3828c29119d4c1a94a079ed405c8b1e/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/f3828c29119d4c1a94a079ed405c8b1e/work/logs
        result_data_file: /var/lib/zuul/builds/f3828c29119d4c1a94a079ed405c8b1e/work/results.json
        src_root: /var/lib/zuul/builds/f3828c29119d4c1a94a079ed405c8b1e/work/src
        work_root: /var/lib/zuul/builds/f3828c29119d4c1a94a079ed405c8b1e/work
      items:
      - branch: main
        change: '709'
        change_url: https://github.com/osism/container-images/pull/709
        patchset: 3d9c5b0de96426594851cfef506bf8451a2961d1
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      job: hadolint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBuZXRib3gKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVHlwZSB8IFVwZGF0ZSB8IENoYW5nZSB8IEFnZSB8IEFkb3B0aW9uIHwgUGFzc2luZyB8IENvbmZpZGVuY2UgfAp8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwKfCBbZ2hjci5pby9hc3RyYWwtc2gvdXZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYpIHwgZmluYWwgfCBwYXRjaCB8IGAwLjYuMTFgIC0+IGAwLjYuMTZgIHwgWyFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjE2P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9kb2NrZXIvZ2hjci5pbyUyZmFzdHJhbC1zaCUyZnV2LzAuNi4xNj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNi4xNj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNi4xNj9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8CnwgW25ldGJveC1wbHVnaW4tZG5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zKSB8ICB8IHBhdGNoIHwgYD09MS4yLjZgIC0+IGA9PTEuMi45YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi45P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi45P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbcGFzc2luZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbXBhdGliaWxpdHkvcHlwaS9uZXRib3gtcGx1Z2luLWRucy8xLjIuNi8xLjIuOT9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL3B5cGkvbmV0Ym94LXBsdWdpbi1kbnMvMS4yLjYvMS4yLjk/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAp8IFtxdWF5LmlvL25ldGJveGNvbW11bml0eS9uZXRib3hdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9uZXRib3gtY29tbXVuaXR5L25ldGJveC1kb2NrZXIpIHwgIHwgcGF0Y2ggfCBgdjQuMi4yYCAtPiBgdjQuMi44YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVthZG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2Fkb3B0aW9uL2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuOD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuMi92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMi44P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKfCBbcXVheS5pby9uZXRib3hjb21tdW5pdHkvbmV0Ym94XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbmV0Ym94LWNvbW11bml0eS9uZXRib3gtZG9ja2VyKSB8IHN0YWdlIHwgcGF0Y2ggfCBgdjQuMi4yYCAtPiBgdjQuMi44YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVthZG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2Fkb3B0aW9uL2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuOD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuMi92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMi44P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5hc3RyYWwtc2gvdXYgKGdoY3IuaW8vYXN0cmFsLXNoL3V2KTwvc3VtbWFyeT4KCiMjIyBbYHYwLjYuMTZgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDYxNikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xNS4uLjAuNi4xNikKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIFJldmVydCAiUHJvcGVybHkgaGFuZGxlIGF1dGhlbnRpY2F0aW9uIGZvciAzMDIgcmVkaXJlY3QgVVJMcyIgKFsjJiM4MjAzOzEzMDQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwNDEpKQoKIyMjIFtgdjAuNi4xNWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwNjE1KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC42LjE0Li4uMC42LjE1KQoKVGhpcyByZWxlYXNlIGluY2x1ZGVzIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHRoZSBgcHlsb2NrLnRvbWxgIGZpbGUgZm9ybWF0LCBhcyBzdGFuZGFyZGl6ZWQgaW4gW1BFUCA3NTFdKGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNzUxLykuIGBweWxvY2sudG9tbGAgaXMgYW4gYWx0ZXJuYXRpdmUgcmVzb2x1dGlvbiBvdXRwdXQgZm9ybWF0IGludGVuZGVkIHRvIHJlcGxhY2UgYHJlcXVpcmVtZW50cy50eHRgIChlLmcuLCBpbiB0aGUgY29udGV4dCBvZiBgdXYgcGlwIGNvbXBpbGVgLCB3aGVyZWJ5IGEgImxvY2tlZCIgYHJlcXVpcmVtZW50cy50eHRgIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20gYSBzZXQgb2YgaW5wdXQgcmVxdWlyZW1lbnRzKS4gYHB5bG9jay50b21sYCBpcyBzdGFuZGFyZGl6ZWQgYW5kIHRvb2wtYWdub3N0aWMsIHN1Y2ggdGhhdCBpbiB0aGUgZnV0dXJlLCBgcHlsb2NrLnRvbWxgIGZpbGVzIGdlbmVyYXRlZCBieSB1diBjb3VsZCBiZSBpbnN0YWxsZWQgYnkgb3RoZXIgdG9vbHMsIGFuZCB2aWNlIHZlcnNhLgoKQXMgb2YgdGhpcyByZWxlYXNlLCBgcHlsb2NrLnRvbWxgIGlzIHN1cHBvcnRlZCBpbiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgoKLSAgIFRvIGV4cG9ydCBhIGB1di5sb2NrYCB0byB0aGUgYHB5bG9jay50b21sYCBmb3JtYXQsIHJ1bjogYHV2IGV4cG9ydCAtbyBweWxvY2sudG9tbGAKLSAgIFRvIGdlbmVyYXRlIGEgYHB5bG9jay50b21sYCBmaWxlIGZyb20gYSBzZXQgb2YgcmVxdWlyZW1lbnRzLCBydW46IGB1diBwaXAgY29tcGlsZSAtbyBweWxvY2sudG9tbCAtciByZXF1aXJlbWVudHMuaW5gCi0gICBUbyBpbnN0YWxsIGZyb20gYSBgcHlsb2NrLnRvbWxgIGZpbGUsIHJ1bjogYHV2IHBpcCBzeW5jIHB5bG9jay50b21sYCBvciBgdXYgcGlwIGluc3RhbGwgLXIgcHlsb2NrLnRvbWxgCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gICBBZGQgUEVQIDc1MSBzdXBwb3J0IHRvIGB1diBwaXAgY29tcGlsZWAgKFsjJiM4MjAzOzEzMDE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMTkpKQotICAgQWRkIGB1diBleHBvcnRgIHN1cHBvcnQgZm9yIFBFUCA3NTEgKFsjJiM4MjAzOzEyOTU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NTUpKQotICAgQWNjZXB0IGByZXF1aXJlbWVudHMudHh0YCAodmVyYmF0aW0pIGFzIGEgZm9ybWF0IG9uIHRoZSBDTEkgKFsjJiM4MjAzOzEyOTU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NTcpKQotICAgQWRkIGBVVl9OT19FRElUQUJMRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2V0IGAtLW5vLWVkaXRhYmxlYCBvbiBhbGwgaW52b2NhdGlvbnMgKFsjJiM4MjAzOzEyNzczXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NzMpKQotICAgQWRkIGBweWxvY2sudG9tbGAgdG8gYHV2IHBpcCBpbnN0YWxsYCBhbmQgYHV2IHBpcCBzeW5jYCAoWyMmIzgyMDM7MTI5OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk5MikpCi0gICBBZGQgYSBicmllZiBzbGVlcCBiZWZvcmUgc2VuZGluZyBgU0lHSU5UYCB0byBjaGlsZCBwcm9jZXNzZXMgKFsjJiM4MjAzOzEzMDE4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMTgpKQotICAgQWRkIHVwbG9hZCB0aW1lIHRvIGB1di5sb2NrYCAoWyMmIzgyMDM7MTI5NjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk2OCkpCi0gICBBbGxvdyB1cGRhdGluZyBHaXQgc291cmNlcyBieSBuYW1lIChbIyYjODIwMzsxMjg5N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODk3KSkKLSAgIENhY2hlIGB3aGljaCBnaXRgIGluIGB1diBpbml0YCAoWyMmIzgyMDM7MTI4OTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg5MykpCi0gICBFbmFibGUgYC0tZHJ5LXJ1bmAgd2l0aCBgLS1sb2NrZWRgIC8gYC0tZnJvemVuYCBmb3IgYHV2IHN5bmNgIChbIyYjODIwMzsxMjc3OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzc4KSkKLSAgIEluZmVyIG91dHB1dCB0eXBlIGluIGB1diBleHBvcnRgIChbIyYjODIwMzsxMjk1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTU4KSkKLSAgIE1ha2UgYHV2IGluaXRgIHJlc2lsaWVudCBhZ2FpbnN0IGJyb2tlbiBnaXQgKFsjJiM4MjAzOzEyODk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4OTUpKQotICAgUmVzcGVjdCBidWlsZCBjb25zdHJhaW50cyBmb3IgYHV2IHJ1biAtLXdpdGhgIGRlcGVuZGVuY2llcyAoWyMmIzgyMDM7MTI4ODJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg4MikpCi0gICBTcGxpdCBVVl9JTkRFWCBvbiBhbGwgd2hpdGVzcGFjZSAoWyMmIzgyMDM7MTI4MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgyMCkpCi0gICBTdXBwb3J0IGJ1aWxkIGNvbnN0cmFpbnRzIGluIGB1diB0b29sYCBhbmQgUEVQNzIzIHNjcmlwdHMuIChbIyYjODIwMzsxMjg0Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODQyKSkKLSAgIFVzZSBzdWZmaXggZnJvbSBgdXZ4YCBiaW5hcnkgd2hlbiBzZWFyY2hpbmcgZm9yIHV2IGJpbmFyeSAoWyMmIzgyMDM7MTI5MjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkyMykpCi0gICBVcGRhdGUgdmVyc2lvbiBmb3JtYXR0aW5nIHRvIHVzZSBjeWFuIGNvbG9yIChbIyYjODIwMzsxMjk0M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTQzKSkKLSAgIEFkZCBkZWJ1ZyBsb2dzIGZvciB2ZXJzaW9uIGZpbGUgc2VhcmNoIChbIyYjODIwMzsxMjk1MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTUxKSkKLSAgIEZpeCBgU291cmNlTm90QWxsb3dlZGAgZXJyb3IgbWVzc2FnZSBkdXJpbmcgUHl0aG9uIGRpc2NvdmVyeSAoWyMmIzgyMDM7MTMwMTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzAxMikpCi0gICBPYmZ1c2NhdGUgcGFzc3dvcmQgaW4gY3JlZGVudGlhbHMgZGVidWcgbWVzc2FnZXMgKFsjJiM4MjAzOzEyOTQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NDQpKQotICAgT2JmdXNjYXRlIHBvc3NpYmxlIHRva2VucyBpbiBVUkwgbG9ncyAoWyMmIzgyMDM7MTI5NjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk2OSkpCi0gICBWYWxpZGF0ZSB0aGF0IFBFUCA3NTEgZW50cmllcyBkb24ndCBpbmNsdWRlIG11bHRpcGxlIHNvdXJjZXMgKFsjJiM4MjAzOzEyOTkzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5OTMpKQoKIyMjIyMgUHJldmlldyBmZWF0dXJlcwoKLSAgIEJ1aWxkIGJhY2tlbmQ6IEFkZCByZWZlcmVuY2UgZG9jcyBhbmQgc2NoZW1hIChbIyYjODIwMzsxMjgwM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODAzKSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIEFsaWduIHN1cHBvcnRlZCBgY29uZmlnLXNldHRpbmdzYCB3aXRoIGV4YW1wbGUgaW4gZG9jcyAoWyMmIzgyMDM7MTI5NDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk0NykpCi0gICBFbnN1cmUgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBjb21wYXRpYmxlIHdpdGggaW50ZXJwcmV0ZXIgb24gc3luYyAoWyMmIzgyMDM7MTI4ODRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg4NCkpCi0gICBGaXggYFB5dGhvbkRvd25sb2FkUmVxdWVzdGAgcGFyc2luZyBmb3IgcGFydGlhbCBrZXlzIChbIyYjODIwMzsxMjkyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTI1KSkKLSAgIEZpeCBwcmUtcmVsZWFzZSBleGNsdXNpdmUgY29tcGFyaXNvbiBvcGVyYXRvciBpbiBgdXYtcGVwNDQwYCAoWyMmIzgyMDM7MTI4MzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgzNikpCi0gICBGb3J3YXJkIGFkZGl0aW9uYWwgc2lnbmFscyB0byB0aGUgY2hpbGQgcHJvY2VzcyBpbiBgdXYgcnVuYCAoWyMmIzgyMDM7MTMwMTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzAxNykpCi0gICBPbWl0IFBFUCA3NTEgdmVyc2lvbiBmb3Igc291cmNlIHRyZWVzIChbIyYjODIwMzsxMzAzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDMwKSkKLSAgIFBhdGNoIGBDQ2AgYW5kIGBDQ1hgIGVudHJpZXMgaW4gc3lzY29uZmlnIGZvciBjcm9zcy1jb21waWxlZCBgYWFyY2g2NGAgUHl0aG9uIGRpc3RyaWJ1dGlvbnMgKFsjJiM4MjAzOzEyMjM5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTIyMzkpKQotICAgUHJvcGVybHkgaGFuZGxlIGF1dGhlbnRpY2F0aW9uIGZvciBIVFRQIDMwMiByZWRpcmVjdCBVUkxzIChbIyYjODIwMzsxMjkyMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTIwKSkKLSAgIFNldCA0TUIgc3RhY2sgc2l6ZSBmb3IgYWxsIHRocmVhZHMsIGludHJvZHVjZSBgVVZfU1RBQ0tfU0laRWAgKFsjJiM4MjAzOzEyODM5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MzkpKQotICAgU2hvdyBQeVB5IGRvd25sb2FkcyBkdXJpbmcgYHV2IHB5dGhvbiBsaXN0YCAoWyMmIzgyMDM7MTI5MTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkxNSkpCi0gICBBZGQgYHN1YmRpcmVjdG9yeWAgdG8gRGlyZWN0IFVSTCBmb3IgbG9jYWwgZGlyZWN0b3JpZXMgKFsjJiM4MjAzOzEyOTcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NzEpKQotICAgUHJlZmVyIHN0YWJsZSByZWxlYXNlcyBvdmVyIHByZS1yZWxlYXNlcyBpbiBgdXYgcHl0aG9uIGluc3RhbGxgIChbIyYjODIwMzsxMjE5NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMTk0KSkKLSAgIFdyaXRlIHJlcXVlc3RlZCBQeXRob24gdmFyaWFudCB0byBwaW4gZmlsZSBpbiBgdXYgaW5pdGAgKFsjJiM4MjAzOzEyODcwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4NzApKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSAgIEZpeCBDTEkgcmVmZXJlbmNlIHdpdGggY29kZSBibG9jayAoWyMmIzgyMDM7MTI4MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgwNykpCi0gICBGaXggbG9ja2ZpbGUgbm90ZSAoWyMmIzgyMDM7MTI3OTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc5MykpCi0gICBGaXggdHlwbyBpbiBhIHJlZmVyZW5jZSAoWyMmIzgyMDM7MTI4NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg1OCkpCi0gICBJbXByb3ZlIGRvY3MgZm9yIGB1diBweXRob24gbGlzdCAtLW9ubHktZG93bmxvYWRzYCBhbmQgYC0tb25seS1pbnN0YWxsZWRgIChbIyYjODIwMzsxMjkxNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTE2KSkKLSAgIFVwZGF0ZSBub3Qgb24gbGFjayBvZiBtdXNsIGRpc3RyaWJ1dGlvbnMgdG8gQVJNLW9ubHkgKFsjJiM4MjAzOzEyODI1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjUpKQotICAgQWRkIHNlY3Rpb24gb24gc2hlYmFuZ3MgZm9yIHNjcmlwdHMgKFsjJiM4MjAzOzExNTUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTE1NTMpKQotICAgRGlzcGxheSBhbGlhc2VzIGZvciBsb25nIGFuZCBzaG9ydCBhcmdzIGluIHRoZSBDTEkgcmVmZXJlbmNlIChbIyYjODIwMzsxMjgyNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODI0KSkKLSAgIEZpeCBoaWdobGlnaHQgbGluZSBpbiBleHBsaWNpdCBpbmRleCBkb2N1bWVudGF0aW9uIChbIyYjODIwMzsxMjg4N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODg3KSkKLSAgIEFkZCBleHBsaWNpdCBzb3VyY2UgKG1hdGNoaW5nIFB5VG9yY2ggZ3VpZGUpIChbIyYjODIwMzsxMjg0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODQ0KSkKLSAgIEZpeCBsaW5rIHRvIGlzc3VlIChbIyYjODIwMzsxMjgyM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODIzKSkKLSAgIEZpeCBncmFtbWF0aWNhbCBlcnJvciBpbiBGYXN0QVBJIGd1aWRlIChbIyYjODIwMzsxMjkwOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTA4KSkKLSAgIEFkZCBgLS1sb2NrZWRgIHRvIGB1diBzeW5jYCBpbiBHaXRIdWIgQWN0aW9ucyBndWlkZSAoWyMmIzgyMDM7MTI4MTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgxOSkpCi0gICBJbXByb3ZlIGZvcm1hdHRpbmcgZm9yIGAiYWxsImAgYGRlZmF1bHQtZ3JvdXBzYCBzZXR0aW5nIGRvY3VtZW50YXRpb24gKFsjJiM4MjAzOzEyOTYzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NjMpKQotICAgUmVwbGFjZSBgLS1mcm96ZW5gIHdpdGggYC0tbG9ja2VkYCBpbiBEb2NrZXIgaW50ZWdyYXRpb24gZ3VpZGUgKFsjJiM4MjAzOzEyODE4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MTgpKQoKIyMjIFtgdjAuNi4xNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwNjE0KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC42LjEzLi4uMC42LjE0KQoKIyMjIyMgUHl0aG9uIHZlcnNpb25zCgpUaGUgZm9sbG93aW5nIFB5dGhvbiB2ZXJzaW9ucyBoYXZlIGJlZW4gYWRkZWQ6CgotICAgQ1B5dGhvbiAzLjEzLjMKLSAgIENQeXRob24gMy4xMi4xMAotICAgQ1B5dGhvbiAzLjExLjEyCi0gICBDUHl0aG9uIDMuMTAuMTcKLSAgIENQeXRob24gMy45LjIyCgpTZWUgdGhlIFtgcHl0aG9uLWJ1aWxkLXN0YW5kYWxvbmVgIHJlbGVhc2Ugbm90ZXNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvcHl0aG9uLWJ1aWxkLXN0YW5kYWxvbmUvcmVsZWFzZXMvdGFnLzIwMjUwNDA5KSBmb3IgbW9yZSBkZXRhaWxzLgoKIyMjIyMgRW5oYW5jZW1lbnRzCgotICAgQWRkIGB1di1idWlsZGAgYW5kIGB1dl9idWlsZGAgYWxpYXNlcyB0byBgdXYgaW5pdCAtLWJ1aWxkLWJhY2tlbmRgIChbIyYjODIwMzsxMjc3Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzc2KSkKLSAgIEVtaXQgZGVkaWNhdGVkIGVycm9yIG1lc3NhZ2UgZm9yIENvbmRhIGBlbnZpcm9ubWVudC55bWxgIGZpbGVzIChbIyYjODIwMzsxMjY2OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjY5KSkKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gICBCdWlsZCBiYWNrZW5kOiBDaGVjayBtb2R1bGUgZGlyIGV4aXN0cyBmb3Igc2Rpc3QgYnVpbGQgKFsjJiM4MjAzOzEyNzc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NzkpKQotICAgQnVpbGQgYmFja2VuZDogRml4IHNkaXN0IHdpdGggbG9uZyBkaXJlY3RvcmllcyAoWyMmIzgyMDM7MTI3NjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc2NCkpCgojIyMjIyBQZXJmb3JtYW5jZQoKLSAgIEF2b2lkIHF1ZXJ5aW5nIEdpdEh1YiBvbiByZXBlYXRlZCBpbnN0YWxsIGludm9jYXRpb25zIChbIyYjODIwMzsxMjc2N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzY3KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIEVycm9yIHdoZW4gYHRvb2wudXYuc291cmNlc2AgaXMgc2V0IGluIHN5c3RlbS1sZXZlbCBjb25maWd1cmF0aW9uIGZpbGUgKFsjJiM4MjAzOzEyNzU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NTcpKQotICAgU3BsaXQgd29ya3NwYWNlIG1lbWJlcnMgb250byB0aGVpciBvd24gbGluZXMgaW4gYHV2IGluaXRgIChbIyYjODIwMzsxMjc1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzU2KSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gICBBZGQgbG9ja2ZpbGUgbm90ZSBhYm91dCBQRVAgNzUxIChbIyYjODIwMzsxMjczMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzMyKSkKLSAgIEV4dGVuZCB0aGUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gZm9yIGB1diBwaXAgc3luY2AgKFsjJiM4MjAzOzEyNjgzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2ODMpKQotICAgRml4IG1pc21hdGNoZWQgcGlwIGludGVyZmFjZSBoZWFkZXIgLyBuYXYgdGl0bGVzIChbIyYjODIwMzsxMjY0MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjQwKSkKCiMjIyBbYHYwLjYuMTNgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDYxMykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xMi4uLjAuNi4xMykKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSAgIEFkZCBgLS1zaG93LXZlcnNpb25gIHRvIGB1diBweXRob24gZmluZGAgKFsjJiM4MjAzOzEyMzc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTIzNzYpKQotICAgUmVtb3ZlIGAtLW5vLWNvbmZpZ2Agd2FybmluZyBmcm9tIGB1diBwaXAgY29tcGlsZWAgYW5kIGB1diBwaXAgc3luY2AgKFsjJiM4MjAzOzEyNjQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NDIpKQotICAgU2tpcCByZXBlYXRlZCBkaXJlY3RvcmllcyBpbiBgUEFUSGAgd2hlbiBzZWFyY2hpbmcgZm9yIFB5dGhvbiBpbnRlcnByZXRlcnMgKFsjJiM4MjAzOzEyMzY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTIzNjcpKQotICAgVW5zZXQgYFNDUklQVF9QQVRIYCBpbiByZWxvY2F0YWJsZSBhY3RpdmF0aW9uIHNjcmlwdCAoWyMmIzgyMDM7MTI2NzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY3MikpCi0gICBBZGQgYFVWX1BZVEhPTl9ET1dOTE9BRFNfSlNPTl9VUkxgIHRvIHNldCBjdXN0b20gbWFuYWdlZCBweXRob24gc291cmNlcyAoWyMmIzgyMDM7MTA5MzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMDkzOSkpCi0gICBSZWplY3QgYHB5cHJvamVjdC50b21sYCBmaWxlcyBpbiBgdXYgcGlwIGNvbXBpbGUgLW9gIChbIyYjODIwMzsxMjY3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjczKSkKLSAgIFJlc3BlY3QgdGhlIGAtLW9mZmxpbmVgIGZsYWcgZm9yIEdpdCBvcGVyYXRpb25zIChbIyYjODIwMzsxMjYxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjE5KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIFdhcm4gaW5zdGVhZCBvZiBlcnJvciBpZiBDUkMgYXBwZWFycyB0byBiZSBtaXNzaW5nIChbIyYjODIwMzsxMjcyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzIyKSkKLSAgIEF2b2lkIGluZmluaXRlIGxvb3AgaW4gYHV2IGV4cG9ydGAgd2l0aCBjb25mbGljdHMgKFsjJiM4MjAzOzEyNzI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3MjYpKQoKIyMjIyMgUnVzdCBBUEkKCi0gICBVcGRhdGUgTVNSViB0byAxLjg0IChbIyYjODIwMzsxMjY3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjcwKSkKCiMjIyBbYHYwLjYuMTJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDYxMikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xMS4uLjAuNi4xMikKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSAgIFJlcG9ydCB0aGUgcXVlcmllZCBleGVjdXRhYmxlIHBhdGggaW4gYHV2IHB5dGhvbiBsaXN0YCAoWyMmIzgyMDM7MTI2MjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYyOCkpCi0gICBJbXByb3ZlIGFyY2hpdmUgdW5wYWNrIGVycm9yIG1lc3NhZ2VzIChbIyYjODIwMzsxMjYyN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjI3KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSAgIFJlc3BlY3QgYGF1dGhlbnRpY2F0ZWAgd2hlbiB1c2luZyBgZXhwbGljaXQgPSB0cnVlYCAoWyMmIzgyMDM7MTI2MzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYzMSkpCi0gICBOb3JtYWxpemUgZXh0cmEgYW5kIGdyb3VwIG5hbWVzIGluIGB1diBhZGRgIGFuZCBgdXYgcmVtb3ZlYCAoWyMmIzgyMDM7MTI1ODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjU4NikpCi0gICBFbmZvcmNlIENSQy0zMiBjaGVja3Mgd2hlbiB1bnBhY2tpbmcgYXJjaGl2ZXMgKFsjJiM4MjAzOzEyNjIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MjMpKQotICAgRml4IHBhcnNpbmcgb2YgYHB5dGhvbi1wbGF0Zm9ybWAgaW4gc2V0dGluZ3MgZmlsZXMgKFsjJiM4MjAzOzEyNTkyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI1OTIpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSAgIEFkZCBub3RlIGFib3V0IGB1diBidWlsZGAgdG8gYHBhY2thZ2UgPSBmYWxzZWAgKFsjJiM4MjAzOzEyNjA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MDgpKQotICAgQWRkIGluZGV4IGZhbGxiYWNrIG5vdGUgdG8gYGF1dGhlbnRpY2F0ZSA9IGFsd2F5c2AgZG9jdW1lbnRhdGlvbiAoWyMmIzgyMDM7MTI0OThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjQ5OCkpCi0gICBGaXggaW52YWxpZCAna2luZCcgcmVmZXJlbmNlIGluIGZsYXQgaW5kZXggZG9jcyAoWyMmIzgyMDM7MTI1ODNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjU4MykpCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnk+cGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zIChuZXRib3gtcGx1Z2luLWRucyk8L3N1bW1hcnk+CgojIyMgW2B2MS4yLjlgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3JlbGVhc2VzL3RhZy8xLjIuOSk6IEZlYXR1cmUgcmVsZWFzZSAxLjIuOQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL2NvbXBhcmUvMS4yLjguLi4xLjIuOSkKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBSZWRlc2lnbmVkIHRoZSByZWNvcmQgQ2hvaWNlU2V0cyBhbmQgY3JlYXRlZCB0aGUgYGN1c3RvbV9yZWNvcmRfdHlwZXNgIG9wdGlvbiBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk5KQotICAgUHJvdmlkZSBhIGRlZmF1bHQgbGlzdCBvZiBmaWx0ZXJlZCBSUlRZUEVzIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDEpCi0gICBzbGlnaHQgY2hhbmdlIG9mIHdvcmRpbmcgYnkgW0AmIzgyMDM7anBtZW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vanBtZW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzYwMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzYwMikKLSAgIEFkZGVkIHRoZSBvcHRpb24gdG8gcmVtb3ZlIHNwZWNpZmljIHJlY29yZCB0eXBlcyBmcm9tIHRoZSBmaWx0ZXIgbGlzdCBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA0KQotICAgSW50cm9kdWNlZCBjaGVjayBmb3IgU09BLXNhZmUgZmllbGRzIGFuZCBhZGRlZCB0ZXN0cyBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA2KQotICAgQWRkZWQgdGhlIHBhcmVudGFsX2FnZW50cyBmaWVsZCB0byBETlNTRUNQb2xpY3kgYnkgW0AmIzgyMDM7cGV0ZWVja2VsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzYwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzYwNykKLSAgIE1vdmVkIHRoZSBwYXJlbnRhbF9hZ2VudHMgZmllbGQgZnJvbSBETlNTRUNQb2xpY3kgdG8gWm9uZSBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA5KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL2NvbXBhcmUvMS4yLjcuLi4xLjIuOQoKIyMjIFtgdjEuMi44YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9jb21wYXJlLzEuMi43Li4uMS4yLjgpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvY29tcGFyZS8xLjIuNy4uLjEuMi44KQoKIyMjIFtgdjEuMi43YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9yZWxlYXNlcy90YWcvMS4yLjcpOiBGZWF0dXJlL0J1Z2ZpeCBSZWxlYXNlIDEuMi43CgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvY29tcGFyZS8xLjIuNi4uLjEuMi43KQoKIyMjIyBETlNTRUMKClRoaXMgaXMgcmVsZWFzZSBhZGRzIEROU1NFQyBzdXBwb3J0IGZvciBOZXRCb3ggRE5TLgoKTmV0Qm94IEROUyBzdXBwb3J0cyB0aGUgbWFuYWdlbWVudCBvZiBETlNTRUMgaW4gYXMgbXVjaCBhcyBETlNTRUMgS2V5IFRlbXBsYXRlcyBhbmQgRE5TU0VDIFBvbGljaWVzIGNhbiBiZSBzdG9yZWQgaW4gTmV0Qm94IEROUyBhbmQgYXNzaWduZWQgdG8gem9uZXMuIEl0IGRvZXMgbm90LCBob3dldmVyLCBzdXBwb3J0IHpvbmUgc2lnbmluZyBub3Igc3RvcmluZyBjcnlwdG9ncmFwaGljIG1hdGVyaWFsIGluIHRoZSBOZXRCb3ggZGF0YWJhc2UuIFRoZXJlIGFyZSB0d28gbWFpbiByZWFzb25zIGZvciB0aGlzIGNvbmNlcHQ6CgoxLiAgU3RvcmluZyBjcnlwdG9ncmFwaGljIG1hdGVyaWFsIGluIGEgZGF0YSBzb3VyY2UgZm9yIGF1dG9tYXRpb24gaXMgZ2VuZXJhbGx5IHByb2JsZW1hdGljLiBXaGlsZSB0aGVyZSBpcyB0aGUgTmV0Qm94IFNlY3JldHMgcGx1Z2luLCBpdCBpcyBiZXR0ZXIgcHJhY3RpY2UgdG8gc3RvcmUgY29uZmlkZW50aWFsIGRhdGEgaW4gdmF1bHQgc3lzdGVtcyBzcGVjaWZpY2FsbHkgY3JlYXRlZCBmb3IgdGhpcyBwdXJwb3NlLiAoSW4gc29tZSBjYXNlcyB0aGUga2V5cyBhcmUgc3RvcmVkIGluIEhTTXMgYXMgYW4gYWRkZWQgbWV0aG9kIG9mIHByb3RlY3Rpb24uKQoyLiAgSW4gdHlwaWNhbCBtb2Rlcm4gc2NlbmFyaW9zLCBzaWduaW5nIHNlcnZlcnMgbWFpbnRhaW4ga2V5cyBhbmQgc2lnbiByZWNvcmRzLCBzbyBzdWNoIGNvbmZpZ3VyYXRpb25zIGRvIG5vdCBldmVuIHJlcXVpcmUgaGF2aW5nIE5ldEJveCBETlMgcHJvdmlkZSBrZXlzIG9yIGNyZWF0ZSB0aGUgc2lnbmF0dXJlcyBmcm9tIHdpdGhpbiBOZXRCb3ggRE5TLgoKQWRkaXRpb25hbGx5LCB0aGVyZSBpcyBubyBkaXJlY3QgaW50ZWdyYXRpb24gYmV0d2VlbiBOZXRCb3ggYW5kIGFueSBnaXZlbiBuYW1lIHNlcnZlciBpbXBsZW1lbnRhdGlvbiwgc28gYW4gaW50ZXJmYWNlIGZvciBwcm92aWRpbmcgc2lnbmVkIHpvbmVzIHRvIGEgbmFtZSBzZXJ2ZXIgaXMgZ2VuZXJhbGx5IG91dCBvZiBzY29wZSBmb3IgTmV0Qm94IEROUywganVzdCBhcyBpdCBpcyB0aGUgY2FzZSBmb3Igc2VydmluZyBwbGFpbiBETlMuIFRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIHNwZWNpZmljIHNvbHV0aW9ucyBhZGFwdGVkIHRvIHRoZSB1c2UgY2FzZSBhbmQgdGhlIG5hbWUgc2VydmVyIGltcGxlbWVudGF0aW9uIHVzZWQuCgpBcyBub3RlZCBlYXJsaWVyIHRoZXJlIGFyZSB0d28gZGF0YSBtb2RlbHMgZm9yIEROU1NFQyBpbiBOZXRCb3ggRE5TOiBETlNTRUMgS2V5IFRlbXBsYXRlcyBhbmQgRE5TU0VDIFBvbGljaWVzLiBUaGUgZm9ybWVyIGFyZSB1c2VkIGZvciBzdG9yaW5nIHBhcmFtZXRlcnMgZm9yIEROU1NFQyBLZXlzIHN1Y2ggYXMgdGhlIHR5cGUsIGFsZ29yaXRobSBhbmQgbGlmZXRpbWUsIGFuZCB0aGUgbGF0dGVyIHRvIGRlZmluZSBwb2xpY2llcyB0aGF0IGRldGVybWluZSBob3cgb2Z0ZW4gc2lnbmF0dXJlcyBhcmUgcmVnZW5lcmF0ZWQsIERTIHJlY29yZHMgYXJlIHByb3BhZ2F0ZWQgZXRjLgoKV2hpbGUgdGhlIGltcGxlbWVudGF0aW9uIGlzIG9yaWVudGVkIGxhcmdlbHkgdG93YXJkcyBvcHRpb25zIEJJTkQgOSBwcm92aWRlcywgdGhpcyBpcyBtYWlubHkgYmVjYXVzZSB0aGF0IHNvZnR3YXJlIGhhcyBhIGh1Z2Ugc2V0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgb3RoZXIgcHJvZHVjdHMgYXJlIHVzdWFsbHkgbm90IHZlcnkgZGlmZmVyZW50LCBpbiBtb3N0IGNhc2VzIG1vcmUgbGltaXRlZCB0aGFuIEJJTkQgOS4gR2l2ZW4gdGhlIGxhcmdlIGluc3RhbGxlZCBiYXNlIG9mIEJJTkQgOSwgdGhpcyBpcyBjb25zaWRlcmVkIGEgZ29vZCBiYXNpcy4gKFRoZXJlIGlzLCBob3dldmVyLCBubyByZWFzb24gd2h5IE5ldEJveCBETlMgY2Fubm90IGJlIHVzZWQgdG8gbWFpbnRhaW4gZGF0YSBmb3IsIHNheSwgS25vdC1ETlMgb3IgUG93ZXJETlMuKQoKRm9yIGEgc3VtbWFyeSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHksIHNlZSBbdGhpcyBibG9ncG9zdF0oaHR0cHM6Ly9qcG1lbnMubmV0LzIwMjUvMDMvMTYvZG5zc2VjLXBvbGljeS1hbmQta2V5LXRlbXBsYXRlLXN1cHBvcnQtaW4tbmV0Ym94LWRucy8pIGJ5IFtAJiM4MjAzO2pwbWVuc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2pwbWVucykuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgU09BIE1OQU1FIG11c3QgYmUgY2hlY2tlZCBpbiB6b25lIGZvcm1zIGlmIHpvbmUgdGVtcGxhdGUgaXMgbm90IHNldCBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTg5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTg5KQotICAgY29tcGxldGUgZnIgdHJhbnNsYXRpb24gYnkgW0AmIzgyMDM7amVhbjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9qZWFuMSkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTIpCi0gICBDaGVjayB3aGV0aGVyIHpvbmUgd2FzIHBhc3NlZCB2aWEgZGljdCBiZWZvcmUgcmVzb2x2aW5nIHRlbXBsYXRlcyBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk0KQotICAgQWRkIEROU1NFQyBzdXBwb3J0IGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81NjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81NjMpCi0gICBBZGQgZG9tYWluIHJlZ2lzdHJhdGlvbiBleHBpcmF0aW9uIGRhdGUgYW5kIEVQUCBzdGF0dXMgZmllbGRzIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTApCi0gICBBZGQgdGVzdHMgZm9yIE5ldEJveCBETlMgb2JqZWN0cyBhcyBjdXN0b20gZmllbGQgdGFyZ2V0cyBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk1KQotICAgSW5pdGlhbGlzZSB2aWV3cyBpbiBgdXJscy5weWAgaW5zdGVhZCBvZiBgcmVhZHkoKWAgYnkgW0AmIzgyMDM7cGV0ZWVja2VsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5NikKCioqRnVsbCBDaGFuZ2Vsb2cqKjogaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9jb21wYXJlLzEuMi42Li4uMS4yLjcKCjwvZGV0YWlscz4KCi0tLQoKIyMjIENvbmZpZ3VyYXRpb24KCvCfk4UgKipTY2hlZHVsZSoqOiBCcmFuY2ggY3JlYXRpb24gLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCksIEF1dG9tZXJnZSAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKS4KCvCfmqYgKipBdXRvbWVyZ2UqKjogRGlzYWJsZWQgYnkgY29uZmlnLiBQbGVhc2UgbWVyZ2UgdGhpcyBtYW51YWxseSBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkLgoK4pm7ICoqUmViYXNpbmcqKjogV2hlbmV2ZXIgUFIgYmVjb21lcyBjb25mbGljdGVkLCBvciB5b3UgdGljayB0aGUgcmViYXNlL3JldHJ5IGNoZWNrYm94LgoK8J+RuyAqKkltbW9ydGFsKio6IFRoaXMgUFIgd2lsbCBiZSByZWNyZWF0ZWQgaWYgY2xvc2VkIHVubWVyZ2VkLiBHZXQgW2NvbmZpZyBoZWxwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcmVub3ZhdGVib3QvcmVub3ZhdGUvZGlzY3Vzc2lvbnMpIGlmIHRoYXQncyB1bmRlc2lyZWQuCgotLS0KCiAtIFsgXSA8IS0tIHJlYmFzZS1jaGVjayAtLT5JZiB5b3Ugd2FudCB0byByZWJhc2UvcmV0cnkgdGhpcyBQUiwgY2hlY2sgdGhpcyBib3gKCi0tLQoKVGhpcyBQUiB3YXMgZ2VuZXJhdGVkIGJ5IFtNZW5kIFJlbm92YXRlXShodHRwczovL21lbmQuaW8vcmVub3ZhdGUvKS4gVmlldyB0aGUgW3JlcG9zaXRvcnkgam9iIGxvZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9naXRodWIvb3Npc20vY29udGFpbmVyLWltYWdlcykuCjwhLS1yZW5vdmF0ZS1kZWJ1ZzpleUpqY21WaGRHVmtTVzVXWlhJaU9pSXpPUzR5TURjdU1TSXNJblZ3WkdGMFpXUkpibFpsY2lJNklqTTVMakkwT0M0MElpd2lkR0Z5WjJWMFFuSmhibU5vSWpvaWJXRnBiaUlzSW14aFltVnNjeUk2V3lKeVpXNXZkbUYwWlNKZGZRPT0tLT4K
      patchset: 3d9c5b0de96426594851cfef506bf8451a2961d1
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: e4e91ee5c425b9c22060484c5410162ce4a3896b
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: c212ef9fff456ceede260bdfaaf903f6e2d2313a
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: e4e91ee5c425b9c22060484c5410162ce4a3896b
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/hadolint/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/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-images
        name: osism/container-images
        short_name: container-images
        src_dir: src/github.com/osism/container-images
      projects:
        github.com/osism/container-images:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          checkout: main
          checkout_description: zuul branch
          commit: 01c433541424f4c31d62d2cfb394eaa340dd1a29
          name: osism/container-images
          required: false
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      ref: refs/pull/709/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
