Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSeC1-003Ncz-1M for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 17:06:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSeBz-00D5u2-0H for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 17:06:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSeBy-00D5tr-0x for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 17:06:47 +0000 Received: from mail-dy1-x132c.google.com ([2607:f8b0:4864:20::132c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSeBo-00000001DDJ-40v7 for pgsql-hackers@postgresql.org; Thu, 28 May 2026 17:06:40 +0000 Received: by mail-dy1-x132c.google.com with SMTP id 5a478bee46e88-3044857f09aso9113825eec.1 for ; Thu, 28 May 2026 10:06:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779987996; cv=none; d=google.com; s=arc-20240605; b=A9rUG2ep3HsHZ9HwxKcF5sHSmw/L4mtT/BtTcBEYPFEwYvEuDya9WIV/CfOjbH3Mge sLYbZ016aBS9sQGESMCMVsyBR/mYO1jtjSuh8rTAx0zbNAkBH7NPOtdk8K8L+Ab1hNcl YX+6unTiTEF/v14D4q1LsJEV02fAQQ7QAxeaOgMNIo77J8nde0I7pynjkwwmhANPz9Nq Ak8yfQhYyFzksfja9SxQxzjqRoqVW6xkI017Ba7BtLLiSamSD0LOFdDU5F3smu9aCEvD dIVrfedq8UOr9OO99Itfe7ShI0mzYgz/c2tNLvxtg6/D8XENB8edckm1KhHt4ONdX538 nsYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=EA1yGivEWdfiK5HUoPkYGOgL4EEuge+Y0AQ1YWMvhic=; fh=hx+X9eryhAUiYxFSTxmwvIn53MvVE3plOYvGAJM2i/8=; b=QacN4S2mqRcSArgpCEe2UYNmHYq8fkLCtZNUd7Kl6WuxBykPztQtE3+VBeznujzCEU ICQnUdhCRq8d6SzvL+aQAMNuTeYoQ/hhGOdsGeSrGVrZe5857rUv5bD15/Vzcc0EeUSZ RfqZ+I8l2NGGuLrl99ohbVXwZY3vCcwAqBXeC5y2K7p8rekJ4XRllzmUM1foWc8dCdkq gLp0q1aFlTxAatSMLszrfRpGF+3+pV0YK0y7SMTqfRXo/08J9bfJjEpPhfBklYx0AuNg Frr7CddQe+6G2epDZdcVPL04HpAlf0m+SAYj8dWrVOI9S3IwT9hLneMN0A0X7uj4W4hw qKhw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779987996; x=1780592796; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=EA1yGivEWdfiK5HUoPkYGOgL4EEuge+Y0AQ1YWMvhic=; b=OfJoWleqhZlTe2oKYbtgjsqdVrIsDCqYMdzt02McsKnA2e7TyzKOJ9Y0iWRwaApW8p x8aUsaUAkiOhizQ1Tm1JoSsJS8dQ/sIO0GMMij0k4k65znDScY8FNd5C1cOOZRpy0WTa is5Adm7OmlVQBU2IIabAve8AaiSKDcdAbVy4iWZCPMsL6AW4HRHYlmt8BxIMdV3owjTz WvToDgWoJ6IEeE73wHSCq8vLUFI1LkH2grEjNOiFuO5j27OHSJgothWK2wLu+S8lL7pa hxiLmQw7e8CvQCMVDBAWlp1N6vUuptbTzQ40vtY7iLzdHy+D4AZCbbMggtbTWgVqkfxy 72LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779987996; x=1780592796; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EA1yGivEWdfiK5HUoPkYGOgL4EEuge+Y0AQ1YWMvhic=; b=kDkBEzLOUPttBT/flQcXMqgRMfUEzsqnWF6TSd+i3LlpbhH3K/r1bOouoOc0YZW1G/ KL5UxaA1OMmEf2pipygxCdw0VwIrzSQkHRwZOXAErh3hIuP+6Sz24rX9Vc8w6UFB/cuS zDgHSM8l8whI9vHRbTA8lsj/FM1OMFEoE91XTD/7Zn55ibs3HwFC8C9fMWaQCH2UVsR4 0DUQjiIs97/G3RbDbBHgHWQvKji2E1vS2mvZc4JGvmelzEFAsUYzEtyR2kyHzPZCVyQj OQ7+/NsnFpZoicRRffLWzwvaox528nBdGHI3PYQS/PARtWwR4HJWhy0SN4UPxVpaL66U mFNA== X-Forwarded-Encrypted: i=1; AFNElJ8YqOHX0IxBvvlgHQxr5fYHyuUIOSGckSI48PmVNOnqNuVrIiiKYtq8EoPgjdPTmexVxECSUmm75pb+XvcC@postgresql.org X-Gm-Message-State: AOJu0Yyr3ymHwgJHnpZ5q5WlUQ4ZiJMawvdM3ldAe2ijjlAdW1sN6rXg +3bXswV9N4/TUKg63jKp+XxOUh5LmEXb/988TYFgBY6osZJ1dWRfkOW9ISzs2ZDGc/xbBkaNHhH uHzSLDv110CdKM1fmca5Ka1aEWVLFEKA= X-Gm-Gg: Acq92OHoA2fpt/NkYVzds1ksOijfSt7KRbgzPBTWwGfDUNcfdo9Oirk3M7NFjE3I6re DR3yDLSqmFDthxBVnSQXGevOmltvQo5Z1BjjEYtEUeEaVcgqPzLRCu1Re6W9Rz1gLGDdS9oIX54 V121/cM0BtStRJXoa52KshUpTSQ/aEjcny8LtHcyAcf1Ecsc+q+lFr6phNt1C/OinAkstmmwFqA sk1b4iYuz+gH1DG8ot/ddRNxLKE3mLWcq+eHR20gJbKHflr5DAntfpybW1iqNmDhNRI8p9eymvA KKnsr2d7UHpbwv94aQ== X-Received: by 2002:a05:7300:6417:b0:304:29dd:70b6 with SMTP id 5a478bee46e88-30448f5173amr12183174eec.13.1779987995483; Thu, 28 May 2026 10:06:35 -0700 (PDT) MIME-Version: 1.0 References: <3ydjipcr7kbss57nvi67noplncqhesl5eyb6wgol4ccjxynspv@yatlykpribmm> In-Reply-To: From: Nazir Bilal Yavuz Date: Thu, 28 May 2026 20:06:22 +0300 X-Gm-Features: AVHnY4IcGUoKPD_wqGSkcRD3-6zkO91TMVv1Zynr3gUVMWL2gdBjZiT7u7iwBX0 Message-ID: Subject: Re: Heads Up: cirrus-ci is shutting down June 1st To: Andres Freund Cc: Jelte Fennema-Nio , Thomas Munro , pgsql-hackers@postgresql.org, Zsolt Parragi , Peter Eisentraut Content-Type: multipart/mixed; boundary="0000000000002d72c40652e3c049" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002d72c40652e3c049 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Thank you for looking into this! On Wed, 27 May 2026 at 21:10, Andres Freund wrote: > > > Here is the v2, I took Jelte's patch and reviewed & merged it with my > > patch. Updates and questions are: > > > > 1- I continued to use Jelte's container method (Linux tasks only for > > now, BSD tasks will be included in the future) because I think that is > > the future-proof way since we might want to generate our container > > images in the future. Also, up-to-date Debian images can be tested > > with this way; otherwise we would need to use Ubuntu 24.04. > > Good. > > > > 2- io_uring tests work on the Linux Meson task. > > Is there a reason to not just do that for all the tasks? I might word it incorrectly. I meant that Linux meson tests use: PG_TEST_INITDB_EXTRA_OPTS: >- -c io_method=3Dio_uring and that wasn't working before, now it works. I guess we have this only on Linux because we wanted to test io_method=3Dworker in the other tasks. > > 3- I didn't put commands to helper scripts for now. I think it is a > > good thing to have a helper script but it would be better to have this > > helper script after the first version is committed since it can extend > > the timeline. Also, I found that having all commands in one file makes > > debugging easier. > > Hm. I'm a bit worried about this getting pretty unmaintainable, due to th= e > repetition. I think at least we need to use yaml anchors to deduplicate = some > steps. Github Actions added support of yaml anchors last year but unfortunately they don't support merge keys. Related information: [1]. > > 4- FreeBSD task has these options: > > > > PG_TEST_INITDB_EXTRA_OPTS: >- > > -c debug_copy_parse_plan_trees=3Don > > -c debug_write_read_parse_plan_trees=3Don > > -c debug_raw_expression_coverage_test=3Don > > -c debug_parallel_query=3Dregress > > > > Since we won't have FreeBSD for the first version. I put these options > > to the MacOS task but I couldn't decide where to put > > 'PG_TEST_PG_UPGRADE_MODE: --link'. > > Makes sense. > > > > Also, I am planning to work on back patches when we agree on the > > upstream one. Does that sound good? > > Yep. > > > > > diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml > > new file mode 100644 > > index 00000000000..6d20068727c > > --- /dev/null > > +++ b/.github/workflows/ci.yml > > @@ -0,0 +1,1125 @@ > > +# GitHub Actions CI configuration for PostgreSQL > > + > > +name: Github Actions CI > > + > > +on: > > + push: > > + branches: [ "*" ] > > + > > +# Default to the minimum privilege the jobs need (just reading the rep= o > > +# contents during checkout). Individual jobs override this when they n= eed > > +# more, e.g. `cancel-previous` needs `actions: write` to cancel runs. > > +permissions: > > + contents: read > > I'm not sure I like that we ever need more than that. I'd expect that > postgresql-cfbot will explicitly disable write permissions for runs. Done. Updated the comment and removed the 'Cancel previous runs' step. > > +# NB: intentionally NO workflow-level `concurrency:` block. The native > > +# concurrency mechanism makes a new run wait for the previous one to f= ully > > +# cancel before it starts =E2=80=94 which can take a while. Instead th= e > > +# `cancel-previous` job below fires a cancel API call asynchronously, > > +# so the new run gets going immediately. On master the cancel job is s= kipped, > > +# so every push runs to completion. > > Is this really worth having our own code? Seems like it'd not be that fre= quent > to push if there are already running runs? What kind of delays are we ta= lking > about? Jelte already answered this in [2]. 'Cancel previous runs' step is removed and concurrency is used instead. > > + # To avoid unnecessarily spinning up a lot of VMs / containers for e= ntirely > > + # broken commits, have a minimal task that all others depend on. > > + # > > + # SPECIAL: > > + # - Builds with --auto-features=3Ddisabled and thus almost no enable= d > > + # dependencies > > + sanity-check: > > + name: SanityCheck > > + needs: setup > > + if: needs.setup.outputs.sanitycheck =3D=3D 'true' > > + runs-on: ubuntu-latest > > + timeout-minutes: 15 > > + container: > > + image: ${{ needs.setup.outputs.linux_ci_image }} > > + env: > > + BUILD_JOBS: 8 > > + TEST_JOBS: 8 > > + CCACHE_DIR: ${{ github.workspace }}/ccache_dir > > + # no options enabled, should be small > > + CCACHE_MAXSIZE: "150M" > > + steps: > > + - uses: actions/checkout@v6 > > + with: > > + fetch-depth: ${{ env.CLONE_DEPTH }} > > + > > + - name: Restore ccache > > + uses: actions/cache@v5 > > Seems like this is used by every task. Can we move this into a yaml ancho= r or > such, by using a variable representing the job name? Github Actions doesn't support merge keys. So we can't really duplicate them. I used yaml anchors for the checkout step since it is exactly for all jobs. > > + with: > > + path: ${{ env.CCACHE_DIR }} > > + key: ccache-sanitycheck-${{ github.run_id }} > > + restore-keys: ccache-sanitycheck- > > Why is the key here the run id? Doesn't that mean that we will never have= a > precise cache match and that we will keep multiple versions of the cache > around? That seems like a waste of cache space? > > For efficiency, particularly on cfbot, it seems like it could be useful t= o > populate the cache of branches with the cache of the master branch. For t= hat > we'd need the branch name in the key. Which I think would also good for > postgres/postgres, as we currently have a lot of interference between run= s on > the main and the REL_XY_STABLE branches. I think that is the default way. If the cache has the exact hit, it doesn't refresh the cache. So, having ${{ github.run_id }} makes sure we won't have exact hits and the cache will always be refreshed. This sounds bad but that is what I understood :( I can implement something like this: - name: Restore ccache uses: actions/cache/restore@v5 with: path: ${{ env.CCACHE_DIR }} key: ccache-sanitycheck-master restore-keys: | ccache-sanitycheck-${{ github.ref_name }} ccache-sanitycheck- - name: Save ccache if: always() uses: actions/cache/save@v5 with: path: ${{ env.CCACHE_DIR }} key: ccache-sanitycheck-${{ github.ref_name }}-${{ github.run_id = }} So, it will first look for master's cache, then current branch's cache and lastly whatever cache is available. Do you prefer that? > > + - name: Prepare workspace > > + run: | > > + whoami > > + useradd -m postgres > > + chown -R postgres:postgres . > > + mkdir -p "$CCACHE_DIR" > > + chown -R postgres:postgres "$CCACHE_DIR" > > + # Can't change the container's kernel.core_pattern; the post= gres > > + # user can't write to / normally. Make / writable. > > + chown root:postgres / > > + chmod g+rwx / > > Why not just always use a privileged container? Done. > > + - name: Configure > > + run: | > > + su postgres <<-'EOF' > > + set -e > > + meson setup \ > > + --buildtype=3Ddebug \ > > + --auto-features=3Ddisabled \ > > + -Ddefault_library=3Dshared \ > > + -Dtap_tests=3Denabled \ > > + build > > + EOF > > + > > + - name: Build > > + run: | > > + su postgres < > + set -e > > + ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET} > > + EOF > > Should we have an explicit cache upload step here? Or are upload steps ru= n > unconditionally? Like I explained above, that is done by having ${{ github.run_id }} in the cache key. > > + # Run a minimal set of tests. The main regression tests take too= long > > + # for this purpose. For now this is a random quick pg_regress st= yle > > + # test, and a tap test that exercises both a frontend binary and= the > > + # backend. > > + - name: Test > > + run: | > > + su postgres < > + set -e > > + ulimit -c unlimited > > + meson test ${MTEST_ARGS} --suite setup > > + meson test ${MTEST_ARGS} --num-processes ${TEST_JOBS} \ > > + cube/regress pg_ctl/001_start_stop > > + EOF > > + > > + - name: Core backtraces > > + if: failure() > > + run: | > > + mkdir -m 770 /tmp/cores > > + find / -maxdepth 1 -type f -name 'core*' -exec mv '{}' /tmp/= cores/ \; > > + src/tools/ci/cores_backtrace.sh linux /tmp/cores > > + > > + - name: Upload logs > > + if: failure() > > + uses: actions/upload-artifact@v7 > > + with: > > + name: sanitycheck-logs-${{ github.run_id }} > > + path: | > > + build*/testrun/**/*.log > > + build*/testrun/**/*.diffs > > + build*/testrun/**/regress_log_* > > + build*/meson-logs/*.txt > > + if-no-files-found: ignore > > I think this really should be in a yaml anchor, we have a few somewhat > different versions of this now. Same thing, we can't have yaml anchors because merge keys are not supported. I created this variable: _LOG_PATHS: &log_paths | build*/testrun/**/*.log build*/testrun/**/*.diffs build*/testrun/**/regress_log_* build*/meson-logs/*.txt and used it in the Upload logs' path. > It's pretty annoying that the output of the failures isn't visible in the= UI. > Maybe we ought to print a few of the failures out or something? We already have '--print-errorlogs', do you mean something different? > > + > > + # SPECIAL: > > + # - Uses address sanitizer (sanitizer failures are typically printed= in > > + # the server log) > > + # - Configures postgres with a small segment size > > + # > > + # Enable a reasonable set of sanitizers. Use the linux task for that= , as > > + # it's one of the fastest tasks (without sanitizers). Also several o= f the > > + # sanitizers work best on linux. > > + # > > + # The overhead of alignment sanitizer is low, undefined behaviour ha= s > > + # moderate overhead. Test alignment sanitizer in the meson task, as = it > > + # does both 32 and 64 bit builds and is thus more likely to expose > > + # alignment bugs. > > + # > > + # Address sanitizer in contrast is somewhat expensive. Enable it in = the > > + # autoconf task, as the meson task tests both 32 and 64bit. > > I wonder if we should split the meson task into two, one for 32bit and on= e for > 64bit. The concurrency limits for public repos are high enough for that t= o > seem like a reasonable tradeoff? There's no work, other than the repo > checkout, shared between them. Done. > > + # disable_coredump=3D0, abort_on_error=3D1: for useful backtraces in= case of crashes > > + # print_stacktraces=3D1,verbosity=3D2, duh > > + # detect_leaks=3D0: too many uninteresting leak errors in short-live= d binaries > > + linux-autoconf: > > + name: Linux - Debian Trixie - Autoconf > > + needs: [setup, sanity-check] > > + if: | > > + !cancelled() && > > + needs.setup.outputs.linux =3D=3D 'true' && > > + needs.sanity-check.result !=3D 'failure' > > + runs-on: ubuntu-latest > > + timeout-minutes: 60 > > + container: > > + image: ${{ needs.setup.outputs.linux_ci_image }} > > + # Share the host PID + IPC namespaces. 017_shm.pl rapidly create= s, > > + # kill9's, and restarts postgres; with the container's small PID > > + # space a new postgres can recycle the dead postmaster's PID bef= ore > > + # pg_ctl's postmaster.pid check notices, producing spurious "nod= e X > > + # is already running" failures. SysV shm in the test also relies= on > > + # host-like IPC behavior. > > + # > > + # --ulimit raises memlock and core dump size. Memlock is needed = for > > + # running the AIO tests. > > + # > > + # --privileged is needed so the prepare step can write to sysctl= s > > + # under /proc/sys (it's mounted read-only without it). We use it= to > > + # set kernel.core_pattern. > > + options: --pid=3Dhost --ipc=3Dhost --ulimit memlock=3D-1:-1 --pr= ivileged > > + env: > > + BUILD_JOBS: 4 > > + TEST_JOBS: 8 > > + CCACHE_DIR: /tmp/ccache_dir > > + DEBUGINFOD_URLS: "https://debuginfod.debian.net" > > + > > + SANITIZER_FLAGS: -fsanitize=3Daddress > > + UBSAN_OPTIONS: print_stacktrace=3D1:disable_coredump=3D0:abort_o= n_error=3D1:verbosity=3D2 > > + ASAN_OPTIONS: print_stacktrace=3D1:disable_coredump=3D0:abort_on= _error=3D1:detect_leaks=3D0:detect_stack_use_after_return=3D0 > > + CFLAGS: -Og -ggdb -fno-sanitize-recover=3Dall -fsanitize=3Daddre= ss > > + CXXFLAGS: -Og -ggdb -fno-sanitize-recover=3Dall -fsanitize=3Dadd= ress > > + LDFLAGS: -fsanitize=3Daddress > > + CC: ccache gcc > > + CXX: ccache g++ > > There's a fair bit of stuff shared between the meson/autoconf linux > tasks. Previously they used a matrix to reduce that a *bit*. But now it's > entirely duplicated, including stuff that doesn't apply to the current jo= b > (e.g. UBSAN_OPTIONS/ASAN_OPTIONS). And blocks like the following: > > > > + - name: Prepare workspace > > + run: | > > + useradd -m postgres > > + chown -R postgres:postgres . > > + mkdir -p "$CCACHE_DIR" > > + chown -R postgres:postgres "$CCACHE_DIR" > > + mkdir -m 770 /tmp/cores > > + chown root:postgres /tmp/cores > > + sysctl kernel.core_pattern=3D'/tmp/cores/%e-%s-%p.core' > > + > > + # Hosts for the load balance test > > + cat >> /etc/hosts <<-EOF > > + 127.0.0.1 pg-loadbalancetest > > + 127.0.0.2 pg-loadbalancetest > > + 127.0.0.3 pg-loadbalancetest > > + EOF I found we can use matrices and merged all linux tasks. I am not sure that is better since it is a bit harder to read now. > > + # Install dependencies via Homebrew rather than Macports. On sto= ck > > + # GH runners macports requires a heavy bootstrap, and the releva= nt > > + # Postgres deps are all available in brew. > > What does "heavy bootstrap" mean? I used MacPorts on my first version. It took ~10 minutes to download MacPorts. I think that if we could use caching like we did in the Cirrus, it makes sense to use MacPorts. I will spend some time on that. And after spending some time, I am able to make it work. Now the first run's dependencies install takes ~10 minutes since there is no MacPorts cache but subsequent runs' install only take ~5 seconds. > > + - name: Install dependencies > > + run: | > > + brew update > > + brew install \ > > + ccache meson openldap python@3.12 tcl-tk > > + # IPC::Run via cpanm (system perl) > > + sudo cpan -T -i IPC::Run IO::Tty > > We do spend ~95s on this every run, that's not nothing. And it puts a bun= ch of > load onto the brew's mirrors to do that every run. You are right. MacPorts is used now. > > + - name: Test world > > + run: | > > + ulimit -c unlimited > > + ulimit -n 1024 > > + meson test ${MTEST_ARGS} --num-processes ${TEST_JOBS} > > I'd re-add the comments that were in .cirrus.yml about this. Done. > > + windows-vs: > > + name: Windows - Server 2022, VS 2022 - Meson & ninja > > + needs: [setup, sanity-check] > > + if: | > > + !cancelled() && > > + needs.setup.outputs.windows =3D=3D 'true' && > > + needs.sanity-check.result !=3D 'failure' > > + runs-on: windows-2022 > > + timeout-minutes: 60 > > + env: > > + TEST_JOBS: 8 > > + # Avoid port conflicts between concurrent tap tests > > + PG_TEST_USE_UNIX_SOCKETS: 1 > > + PG_REGRESS_SOCK_DIR: 'c:\pgsock\' > > At least my editor gets confused by the \', thinking it's escaping the '.= As > everything just works without the trailing \, I'd go that way. Done. > > + # The TAP tests build an initdb template under build/tmp_install= and > > + # then `robocopy` it into per-test data directories. Robocopy wi= th the > > + # default /COPY:DAT flag doesn't copy ACLs =E2=80=94 destination= s inherit from > > + # their parent dir. On GitHub-hosted Windows runners the workspa= ce's > > + # inherited ACL grants Administrators:(F) and Users:(RX) but doe= s NOT > > + # grant the runner user (runneradmin) directly. That matters bec= ause > > + # pg_ctl on Windows uses CreateRestrictedProcess to drop admin > > + # privileges from postmaster, so the postmaster process has the = user > > + # SID in its token but no longer the Administrators group =E2=80= =94 leaving it > > + # with only "Users:(RX)" on pg_control and friends, which causes > > + # "PANIC: could not open file global/pg_control: Permission deni= ed". > > + # > > + # Fix it once on the workspace dir with (OI)(CI) inheritance fla= gs so > > + # every file/dir created underneath gets an explicit grant for t= he > > + # current user. > > + - name: Grant workspace ACL to runner user > > + shell: pwsh > > + run: | > > + icacls "${{ github.workspace }}" /grant "${env:USERNAME}:(OI= )(CI)F" /Q | Out-Null > > + Write-Host "Granted Full Control to $env:USERNAME on ${{ git= hub.workspace }}" > > Perhaps this would be better to fix by changing the robocopy flags? I couldn't fix this by using robocopy flags. I used /COPYALL and /SECFIX together but they didn't work. > > + # postgres' plpython3u loads python3.dll (the stable-ABI forward= er) > > + # which in turn loads whichever python3NN.dll the Windows loader= finds > > + # first on PATH. On windows-2022 `C:\Program Files\Mercurial\` s= hips > > + # its own python3.dll + python39.dll and appears on PATH *before= * the > > + # hostedtoolcache Python 3.12 =E2=80=94 so without intervention = the backend > > + # ends up running Python 3.9 while postgres' stdlib search uses = 3.12, > > + # producing `ImportError: cannot import name 'text_encoding' fro= m > > + # 'io'` (the 3.12 `io.py` calling into 3.9's `_io`). > > + # > > + # Pin PYTHONHOME to the Python 3.12 prefix, and prepend that pre= fix > > + # to PATH so its python3.dll wins the DLL search. > > + - name: Pin Python prefix on PATH and PYTHONHOME > > + shell: pwsh > > + run: | > > + $prefix =3D (python -c "import sys; print(sys.prefix)").Trim= () > > + Add-Content $env:GITHUB_ENV "PYTHONHOME=3D$prefix" > > + Add-Content $env:GITHUB_PATH $prefix > > + Write-Host "PYTHONHOME=3D$prefix" > > + Write-Host "Prepended $prefix to PATH" > > GRJGJKLJKJDFJKDF. I re-checked this since Jelte wasn't completely sure about this [2] but this is unfortunately correct :( > > + - name: Install dependencies > > + shell: pwsh > > + run: | > > + choco install -y --no-progress --limitoutput diffutils winfl= exbison > > + # meson + ninja aren't preinstalled on windows-2022. Install= via pip > > + python -m pip install --upgrade meson ninja > > + > > + # OpenSSL 1.1 via the slproweb installer (pinned to match th= e > > + # version used elsewhere in postgres CI). > > + curl.exe -fsSL -o openssl-setup.exe https://slproweb.com/dow= nload/Win64OpenSSL-1_1_1w.exe > > + Start-Process -Wait -FilePath ./openssl-setup.exe ` > > + -ArgumentList '/DIR=3Dc:\openssl\1.1\ /VERYSILENT /SP- /SU= PPRESSMSGBOXES' > > + # The slproweb installer puts libcrypto-1_1-x64.dll / libssl= -1_1-x64.dll > > + # in c:\openssl\1.1\bin\ and updates the system PATH. GH Act= ions > > + # snapshots PATH at job start though, so the running job won= 't > > + # see those DLLs and initdb.exe would crash silently at runt= ime. > > + # Push the bin dir onto GITHUB_PATH so it persists for later= steps. > > + Add-Content $env:GITHUB_PATH "c:\openssl\1.1\bin" > > I don't like that much, but I'm not sure we have a better alternative > short-term. Making chocolatey would be a nice alternative. You already said sometimes chocolatey takes too much time. I am planning to spend time on it unless we are planning to use our own Windows containers. > > + windows-mingw: > > + name: Windows - Server 2022, MinGW64 - Meson > > + needs: [setup, sanity-check] > > + if: | > > + !cancelled() && > > + needs.setup.outputs.mingw =3D=3D 'true' && > > + needs.sanity-check.result !=3D 'failure' > > + runs-on: windows-2022 > > + timeout-minutes: 60 > > + env: > > + TEST_JOBS: 4 # higher concurrency causes occasional failures > > + PG_TEST_USE_UNIX_SOCKETS: 1 > > + PG_REGRESS_SOCK_DIR: 'c:\pgsock\' > > + TAR: "c:/windows/system32/tar.exe" > > + # for mingw plpython to find its installation > > + PYTHONHOME: D:/a/_temp/msys64/ucrt64 > > + > > + MSYS: winjitdebug > > + CHERE_INVOKING: 1 > > + MESON_FEATURES: >- > > + -Dnls=3Ddisabled > > Missing comments from .cirrus.tasks.yml Done. v3 is attached. Just a quick note, v3 includes Zsolt [3] And Peter's [4] reviews & feedback too. I will reply to them after sending this. GA run after v3 is applied: https://github.com/nbyavuz/postgres/actions/runs/26587973538 [1] https://github.com/actions/runner/issues/1182 https://github.com/orgs/community/discussions/185877 [2] https://postgr.es/m/CAGECzQQBCF%3DHSk4eCc1fEYTpCt59rgpcwWp47%2B6M-CDMYE= aM2A%40mail.gmail.com [3] https://postgr.es/m/CAN4CZFO4usEzFQoYzEywvOgoagW%3DU4yhpB4Oq-a7bUCR53dj= HA%40mail.gmail.com [4] https://postgr.es/m/3daa29a4-6a08-41c1-8a6a-53ba8cd3c7fb%40eisentraut.o= rg -- Regards, Nazir Bilal Yavuz Microsoft --0000000000002d72c40652e3c049 Content-Type: text/x-patch; charset="UTF-8"; name="v3-0001-Add-GitHub-Actions-yaml-file.patch" Content-Disposition: attachment; filename="v3-0001-Add-GitHub-Actions-yaml-file.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mppqv14q0 RnJvbSBiNmIwYzBiNmIwYjM4NDZjODFjZjVmYTU5OWQzMjE2N2YxYmViNGI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXppciBCaWxhbCBZYXZ1eiA8YnlhdnV6ODFAZ21haWwuY29t PgpEYXRlOiBUaHUsIDI4IE1heSAyMDI2IDE5OjMxOjM0ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2 M10gQWRkIEdpdEh1YiBBY3Rpb25zIHlhbWwgZmlsZQoKQ2lycnVzIENJIGlzIHNodXR0aW5nIGRv d24uIFRoaXMgaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGdldCBhIEdpdEh1YgpBY3Rpb25zIENJ IHdvcmtpbmcuCi0tLQogLmdpdGh1Yi93b3JrZmxvd3MvcG9zdGdyZXNxbC1jaS55bWwgIHwgMTAx MyArKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL2NpL2NpX21hY3BvcnRzX3Bh Y2thZ2VzLnNoIHwgICAxOSArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMDI5IGluc2VydGlvbnMoKyks IDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgLmdpdGh1Yi93b3JrZmxvd3MvcG9z dGdyZXNxbC1jaS55bWwKCmRpZmYgLS1naXQgYS8uZ2l0aHViL3dvcmtmbG93cy9wb3N0Z3Jlc3Fs LWNpLnltbCBiLy5naXRodWIvd29ya2Zsb3dzL3Bvc3RncmVzcWwtY2kueW1sCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMDEzMGU4NjhhYwotLS0gL2Rldi9udWxsCisr KyBiLy5naXRodWIvd29ya2Zsb3dzL3Bvc3RncmVzcWwtY2kueW1sCkBAIC0wLDAgKzEsMTAxMyBA QAorIyBHaXRIdWIgQWN0aW9ucyBDSSBjb25maWd1cmF0aW9uIGZvciBQb3N0Z3JlU1FMCisKK25h bWU6IEdpdGh1YiBBY3Rpb25zIENJCisKK29uOgorICBwdXNoOgorCisjIFJlc3RyaWN0IEdJVEhV Ql9UT0tFTiB0byB0aGUgbWluaW11bSB0aGUgam9icyBuZWVkOiByZWFkaW5nIHJlcG8KKyMgY29u dGVudHMgZHVyaW5nIGNoZWNrb3V0LgorcGVybWlzc2lvbnM6CisgIGNvbnRlbnRzOiByZWFkCisK K2NvbmN1cnJlbmN5OgorICBncm91cDogJHt7IGdpdGh1Yi53b3JrZmxvdyB9fS0ke3sgZ2l0aHVi LnJlZiB9fQorICAjIE5ldmVyIGNhbmNlbCBpbi1wcm9ncmVzcyBydW5zIG9uIG1hc3RlciB0byBl bnN1cmUgYWxsIGNvbW1pdHMgYXJlIHRlc3RlZC4KKyAgY2FuY2VsLWluLXByb2dyZXNzOiAke3sg Z2l0aHViLnJlZiAhPSAncmVmcy9oZWFkcy9tYXN0ZXInIH19CisKK2VudjoKKyAgIyBUaGUgbG93 ZXIgZGVwdGggYWNjZWxlcmF0ZXMgZ2l0IGNsb25lLiBVc2UgYSBiaXQgb2YgZGVwdGggc28gdGhh dAorICAjIGNvbmN1cnJlbnQgam9icyBhbmQgcmV0cnlpbmcgb2xkZXIgcnVucyBoYXZlIGEgY2hh bmNlIG9mIHdvcmtpbmcuCisgIENMT05FX0RFUFRIOiA1MDAKKworICBDQ0FDSEVfTUFYU0laRTog IjI1ME0iCisKKyAgIyBjaGVjayB0YXJnZXQgZm9yIHRoZSBhdXRvY29uZiBidWlsZHMKKyAgQ0hF Q0s6IGNoZWNrLXdvcmxkIFBST1ZFX0ZMQUdTPS0tdGltZXIKKyAgQ0hFQ0tGTEFHUzogLU90YXJn ZXQKKworICAjIEJ1aWxkIHRlc3QgZGVwZW5kZW5jaWVzIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIHN0 ZXAsIHRvIHNlZSBjb21waWxlcgorICAjIGVycm9ycy93YXJuaW5ncyBpbiBvbmUgcGxhY2UuCisg IE1CVUlMRF9UQVJHRVQ6IGFsbCB0ZXN0cHJlcAorICBNVEVTVF9BUkdTOiAtLXByaW50LWVycm9y bG9ncyAtLW5vLXJlYnVpbGQgLUMgYnVpbGQKKyAgUEdDVExUSU1FT1VUOiAxMjAgICMgYXZvaWRz IHNwdXJpb3VzIGZhaWx1cmVzIGR1cmluZyBwYXJhbGxlbCB0ZXN0cworICBURU1QX0NPTkZJRzog JHt7IGdpdGh1Yi53b3Jrc3BhY2UgfX0vc3JjL3Rvb2xzL2NpL3BnX2NpX2Jhc2UuY29uZgorICBQ R19URVNUX0VYVFJBOiBrZXJiZXJvcyBsZGFwIHNzbCBsaWJwcV9lbmNyeXB0aW9uIGxvYWRfYmFs YW5jZSBvYXV0aAorCisgICMgUG9zdGdyZXMgY29uZmlnIGFyZ3MgZm9yIHRoZSBtZXNvbiBidWls ZHMsIHNoYXJlZCBiZXR3ZWVuIGFsbCBtZXNvbiB0YXNrcworICAjIGV4Y2VwdCB0aGUgJ1Nhbml0 eUNoZWNrJyB0YXNrCisgIE1FU09OX0NPTU1PTl9QR19DT05GSUdfQVJHUzogLURjYXNzZXJ0PXRy dWUgLURpbmplY3Rpb25fcG9pbnRzPXRydWUKKworICAjIE1lc29uIGZlYXR1cmUgZmxhZ3Mgc2hh cmVkIGJ5IGFsbCBtZXNvbiB0YXNrcywgZXhjZXB0OgorICAjIFNhbml0eUNoZWNrOiB1c2VzIGFs bW9zdCBubyBkZXBlbmRlbmNpZXMuCisgICMgV2luZG93cyAtIFZTOiBoYXMgZmV3ZXIgZGVwZW5k ZW5jaWVzIHRoYW4gbGlzdGVkIGhlcmUsIHNvIGRlZmluZXMgaXRzIG93bi4KKyAgIyBMaW51eDog dXNlcyB0aGUgJ2F1dG8nIGZlYXR1cmUgb3B0aW9uIHRvIHRlc3QgbWVzb24gZmVhdHVyZSBhdXRv ZGV0ZWN0aW9uLgorICBNRVNPTl9DT01NT05fRkVBVFVSRVM6ID4tCisgICAgLURhdXRvX2ZlYXR1 cmVzPWRpc2FibGVkCisgICAgLURsZGFwPWVuYWJsZWQKKyAgICAtRHNzbD1vcGVuc3NsCisgICAg LUR0YXBfdGVzdHM9ZW5hYmxlZAorICAgIC1EcGxwZXJsPWVuYWJsZWQKKyAgICAtRHBscHl0aG9u PWVuYWJsZWQKKyAgICAtRGRvY3M9ZW5hYmxlZAorICAgIC1EaWN1PWVuYWJsZWQKKyAgICAtRGxp YnhtbD1lbmFibGVkCisgICAgLURsaWJ4c2x0PWVuYWJsZWQKKyAgICAtRGx6ND1lbmFibGVkCisg ICAgLURwbHRjbD1lbmFibGVkCisgICAgLURyZWFkbGluZT1lbmFibGVkCisgICAgLUR6bGliPWVu YWJsZWQKKyAgICAtRHpzdGQ9ZW5hYmxlZAorCisgICMgU2hhcmVkIGJldHdlZW4gdGhlIExpbnV4 IGF1dG9jb25mIGpvYiBhbmQgdGhlIENvbXBpbGVyV2FybmluZ3Mgam9icworICBMSU5VWF9DT05G SUdVUkVfRkVBVFVSRVM6ID4tCisgICAgLS13aXRoLWdzc2FwaQorICAgIC0td2l0aC1pY3UKKyAg ICAtLXdpdGgtbGRhcAorICAgIC0td2l0aC1saWJjdXJsCisgICAgLS13aXRoLWxpYnhtbAorICAg IC0td2l0aC1saWJ4c2x0CisgICAgLS13aXRoLWxsdm0KKyAgICAtLXdpdGgtbHo0CisgICAgLS13 aXRoLXBhbQorICAgIC0td2l0aC1wZXJsCisgICAgLS13aXRoLXB5dGhvbgorICAgIC0td2l0aC1z ZWxpbnV4CisgICAgLS13aXRoLXNzbD1vcGVuc3NsCisgICAgLS13aXRoLXN5c3RlbWQKKyAgICAt LXdpdGgtdGNsIC0td2l0aC10Y2xjb25maWc9L3Vzci9saWIvdGNsOC42LworICAgIC0td2l0aC11 dWlkPW9zc3AKKyAgICAtLXdpdGgtenN0ZAorCisgICMgRGViaWFuIFRyaXhpZSBjb250YWluZXIg aW1hZ2UgdXNlZCBieSBhbGwgTGludXggam9icy4gQnVpbHQgYnkKKyAgIyAnaHR0cHM6Ly9naXRo dWIuY29tL2FuYXJhemVsL3BnLXZtLWltYWdlcy8nLgorICBMSU5VWF9DSV9JTUFHRTogdXMtZG9j a2VyLnBrZy5kZXYvcGctY2ktaW1hZ2VzL2NpL2xpbnV4X2RlYmlhbl90cml4aWVfY2k6bGF0ZXN0 CisKKyAgIyBUaGUgZnVsbCBzZXQgb2YgT1MgLyBqb2Igc2VsZWN0b3JzIHJlY29nbml6ZWQgYnkg dGhlIGBjaS1vcy1vbmx5OmAKKyAgIyBjb21taXQtbWVzc2FnZSBkaXJlY3RpdmUgcGFyc2VkIGlu IHRoZSBgc2V0dXBgIGpvYiBiZWxvdy4KKyAgQ0lfT1NfT05MWV9KT0JTOiAibGludXggbWFjb3Mg d2luZG93cyBtaW5ndyBjb21waWxlcndhcm5pbmdzIHNhbml0eWNoZWNrIgorCisgIF9MT0dfUEFU SFM6ICZsb2dfcGF0aHMgfAorICAgIGJ1aWxkKi90ZXN0cnVuLyoqLyoubG9nCisgICAgYnVpbGQq L3Rlc3RydW4vKiovKi5kaWZmcworICAgIGJ1aWxkKi90ZXN0cnVuLyoqL3JlZ3Jlc3NfbG9nXyoK KyAgICBidWlsZCovbWVzb24tbG9ncy8qLnR4dAorCisKK2pvYnM6CisgICMgUGFyc2UgImNpLW9z LW9ubHk6IC4uLiIgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2UgYW5kIGV4cG9zZSBmbGFncworICAj IGNvbnN1bWVkIGJ5IHRoZSBqb2JzJyBgaWY6YCBjb25kaXRpb25zLgorICBzZXR1cDoKKyAgICBu YW1lOiBEZXRlcm1pbmUgZW5hYmxlZCBqb2JzCisgICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAor ICAgIHRpbWVvdXQtbWludXRlczogMQorICAgIG91dHB1dHM6CisgICAgICBsaW51eDogJHt7IHN0 ZXBzLm9zLm91dHB1dHMubGludXggfX0KKyAgICAgIG1hY29zOiAke3sgc3RlcHMub3Mub3V0cHV0 cy5tYWNvcyB9fQorICAgICAgd2luZG93czogJHt7IHN0ZXBzLm9zLm91dHB1dHMud2luZG93cyB9 fQorICAgICAgbWluZ3c6ICR7eyBzdGVwcy5vcy5vdXRwdXRzLm1pbmd3IH19CisgICAgICBjb21w aWxlcndhcm5pbmdzOiAke3sgc3RlcHMub3Mub3V0cHV0cy5jb21waWxlcndhcm5pbmdzIH19Cisg ICAgICBzYW5pdHljaGVjazogJHt7IHN0ZXBzLm9zLm91dHB1dHMuc2FuaXR5Y2hlY2sgfX0KKyAg ICAgICMgUmUtZXhwb3J0IHdvcmtmbG93LWxldmVsIGVudiB2YXJzIHRoYXQgb3RoZXIgam9icyBu ZWVkIHRvIHJlZmVyZW5jZQorICAgICAgIyBmcm9tIGNvbnRleHRzIChlLmcuIGBqb2JzLjxpZD4u Y29udGFpbmVyLmltYWdlYCkgd2hlcmUgdGhlIGBlbnZgCisgICAgICAjIGNvbnRleHQgaXMgbm90 IGF2YWlsYWJsZS4KKyAgICAgIGxpbnV4X2NpX2ltYWdlOiAke3sgZW52LkxJTlVYX0NJX0lNQUdF IH19CisgICAgc3RlcHM6CisgICAgICAtIGlkOiBvcworICAgICAgICBlbnY6CisgICAgICAgICAg TVNHOiAke3sgZ2l0aHViLmV2ZW50LmhlYWRfY29tbWl0Lm1lc3NhZ2UgfX0KKyAgICAgICAgc2hl bGw6IGJhc2gKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgc2V0IC1lCisgICAgICAgICAgYWxs X29zPSIke0NJX09TX09OTFlfSk9CU30iCisgICAgICAgICAgaWYgcHJpbnRmICclc1xuJyAiJE1T RyIgfCBncmVwIC1xRSAnXmNpLW9zLW9ubHk6ICc7IHRoZW4KKyAgICAgICAgICAgIHNlbD0kKHBy aW50ZiAnJXNcbicgIiRNU0ciIHwgZ3JlcCAtRSAnXmNpLW9zLW9ubHk6ICcgfCBoZWFkIC0xIHwg c2VkICdzL15jaS1vcy1vbmx5OiAvLycpCisgICAgICAgICAgICBlY2hvICJjaS1vcy1vbmx5IHNl bGVjdGlvbjogJHNlbCIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWw9IiRhbGxfb3Mi CisgICAgICAgICAgZmkKKyAgICAgICAgICBmb3IgbyBpbiAkYWxsX29zOyBkbworICAgICAgICAg ICAgaWYgZWNobyAiICRzZWwgIiB8IGdyZXAgLXFFICJbICxdJG9bICxdIjsgdGhlbgorICAgICAg ICAgICAgICBlY2hvICIkbz10cnVlIiA+PiAiJEdJVEhVQl9PVVRQVVQiCisgICAgICAgICAgICBl bHNlCisgICAgICAgICAgICAgIGVjaG8gIiRvPWZhbHNlIiA+PiAiJEdJVEhVQl9PVVRQVVQiCisg ICAgICAgICAgICBmaQorICAgICAgICAgIGRvbmUKKyAgICAgICAgICBjYXQgIiRHSVRIVUJfT1VU UFVUIgorCisKKyAgIyBUbyBhdm9pZCB1bm5lY2Vzc2FyaWx5IHNwaW5uaW5nIHVwIGEgbG90IG9m IFZNcyAvIGNvbnRhaW5lcnMgZm9yIGVudGlyZWx5CisgICMgYnJva2VuIGNvbW1pdHMsIGhhdmUg YSBtaW5pbWFsIHRhc2sgdGhhdCBhbGwgb3RoZXJzIGRlcGVuZCBvbi4KKyAgIworICAjIFNQRUNJ QUw6CisgICMgLSBCdWlsZHMgd2l0aCAtLWF1dG8tZmVhdHVyZXM9ZGlzYWJsZWQgYW5kIHRodXMg YWxtb3N0IG5vIGVuYWJsZWQKKyAgIyAgIGRlcGVuZGVuY2llcworICBzYW5pdHktY2hlY2s6Cisg ICAgbmFtZTogU2FuaXR5Q2hlY2sKKyAgICBuZWVkczogc2V0dXAKKyAgICBpZjogbmVlZHMuc2V0 dXAub3V0cHV0cy5zYW5pdHljaGVjayA9PSAndHJ1ZScKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0 ZXN0CisgICAgdGltZW91dC1taW51dGVzOiAxNQorICAgIGNvbnRhaW5lcjoKKyAgICAgIGltYWdl OiAke3sgbmVlZHMuc2V0dXAub3V0cHV0cy5saW51eF9jaV9pbWFnZSB9fQorICAgICAgIyAtLXBy aXZpbGVnZWQgaXMgbmVlZGVkIHNvIHRoZSBwcmVwYXJlIHN0ZXAgY2FuIHdyaXRlIHRvIHN5c2N0 bHMKKyAgICAgICMgdW5kZXIgL3Byb2Mvc3lzIChpdCdzIG1vdW50ZWQgcmVhZC1vbmx5IHdpdGhv dXQgaXQpLiBXZSB1c2UgaXQgdG8KKyAgICAgICMgc2V0IGtlcm5lbC5jb3JlX3BhdHRlcm4uCisg ICAgICBvcHRpb25zOiAtLXByaXZpbGVnZWQKKyAgICBlbnY6CisgICAgICBCVUlMRF9KT0JTOiA4 CisgICAgICBURVNUX0pPQlM6IDgKKyAgICAgIENDQUNIRV9ESVI6ICR7eyBnaXRodWIud29ya3Nw YWNlIH19L2NjYWNoZV9kaXIKKyAgICAgICMgbm8gb3B0aW9ucyBlbmFibGVkLCBzaG91bGQgYmUg c21hbGwKKyAgICAgIENDQUNIRV9NQVhTSVpFOiAiMTUwTSIKKyAgICBzdGVwczoKKyAgICAgICMg QW5jaG9yIHJldXNlZCBieSBvdGhlciBqb2JzIGZ1cnRoZXIgZG93bi4gR2l0SHViIEFjdGlvbnMg c3VwcG9ydHMKKyAgICAgICMgWUFNTCBhbmNob3JzL2FsaWFzZXMgIGJ1dCBub3QgbWVyZ2Uga2V5 cywgc28gdGhlICBhbGlhcyBjb3BpZXMgdGhlCisgICAgICAjIHdob2xlIHN0ZXAgdmVyYmF0aW0u IFRoZSBhbmNob3IgaXMgcmVzb2x2ZWQgYXQgWUFNTCBwYXJzZSB0aW1lLCBzbyB0aGUKKyAgICAg ICMgYWxpYXMga2VlcHMgd29ya2luZyBldmVuIGlmIHRoaXMgam9iIGlzIHNraXBwZWQgYXQgcnVu dGltZS4KKyAgICAgIC0gJmNoZWNrb3V0X3N0ZXAKKyAgICAgICAgdXNlczogYWN0aW9ucy9jaGVj a291dEB2NgorICAgICAgICB3aXRoOgorICAgICAgICAgIGZldGNoLWRlcHRoOiAke3sgZW52LkNM T05FX0RFUFRIIH19CisKKyAgICAgIC0gbmFtZTogUmVzdG9yZSBjY2FjaGUKKyAgICAgICAgdXNl czogYWN0aW9ucy9jYWNoZUB2NQorICAgICAgICB3aXRoOgorICAgICAgICAgIHBhdGg6ICR7eyBl bnYuQ0NBQ0hFX0RJUiB9fQorICAgICAgICAgIGtleTogY2NhY2hlLXNhbml0eWNoZWNrLSR7eyBn aXRodWIucmVmX25hbWUgfX0tJHt7IGdpdGh1Yi5ydW5faWQgfX0KKyAgICAgICAgICByZXN0b3Jl LWtleXM6IHwKKyAgICAgICAgICAgIGNjYWNoZS1zYW5pdHljaGVjay0ke3sgZ2l0aHViLnJlZl9u YW1lIH19LQorICAgICAgICAgICAgY2NhY2hlLXNhbml0eWNoZWNrLQorCisgICAgICAtIG5hbWU6 IFByZXBhcmUgd29ya3NwYWNlCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHdob2FtaQorICAg ICAgICAgIHVzZXJhZGQgLW0gcG9zdGdyZXMKKyAgICAgICAgICBjaG93biAtUiBwb3N0Z3Jlczpw b3N0Z3JlcyAuCisgICAgICAgICAgbWtkaXIgLXAgIiRDQ0FDSEVfRElSIgorICAgICAgICAgIGNo b3duIC1SIHBvc3RncmVzOnBvc3RncmVzICIkQ0NBQ0hFX0RJUiIKKworICAgICAgLSBuYW1lOiBD b25maWd1cmUKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgc3UgcG9zdGdyZXMgPDwtJ0VPRicK KyAgICAgICAgICAgIHNldCAtZQorICAgICAgICAgICAgbWVzb24gc2V0dXAgXAorICAgICAgICAg ICAgICAtLWJ1aWxkdHlwZT1kZWJ1ZyBcCisgICAgICAgICAgICAgIC0tYXV0by1mZWF0dXJlcz1k aXNhYmxlZCBcCisgICAgICAgICAgICAgIC1EZGVmYXVsdF9saWJyYXJ5PXNoYXJlZCBcCisgICAg ICAgICAgICAgIC1EdGFwX3Rlc3RzPWVuYWJsZWQgXAorICAgICAgICAgICAgICBidWlsZAorICAg ICAgICAgIEVPRgorCisgICAgICAtIG5hbWU6IEJ1aWxkCisgICAgICAgIHJ1bjogfAorICAgICAg ICAgIHN1IHBvc3RncmVzIDw8RU9GCisgICAgICAgICAgICBzZXQgLWUKKyAgICAgICAgICAgIG5p bmphIC1DIGJ1aWxkIC1qJHtCVUlMRF9KT0JTfSAke01CVUlMRF9UQVJHRVR9CisgICAgICAgICAg RU9GCisKKyAgICAgICMgUnVuIGEgbWluaW1hbCBzZXQgb2YgdGVzdHMuIFRoZSBtYWluIHJlZ3Jl c3Npb24gdGVzdHMgdGFrZSB0b28gbG9uZworICAgICAgIyBmb3IgdGhpcyBwdXJwb3NlLiBGb3Ig bm93IHRoaXMgaXMgYSByYW5kb20gcXVpY2sgcGdfcmVncmVzcyBzdHlsZQorICAgICAgIyB0ZXN0 LCBhbmQgYSB0YXAgdGVzdCB0aGF0IGV4ZXJjaXNlcyBib3RoIGEgZnJvbnRlbmQgYmluYXJ5IGFu ZCB0aGUKKyAgICAgICMgYmFja2VuZC4KKyAgICAgIC0gbmFtZTogVGVzdAorICAgICAgICBydW46 IHwKKyAgICAgICAgICBzdSBwb3N0Z3JlcyA8PEVPRgorICAgICAgICAgICAgc2V0IC1lCisgICAg ICAgICAgICB1bGltaXQgLWMgdW5saW1pdGVkCisgICAgICAgICAgICBtZXNvbiB0ZXN0ICR7TVRF U1RfQVJHU30gLS1zdWl0ZSBzZXR1cAorICAgICAgICAgICAgbWVzb24gdGVzdCAke01URVNUX0FS R1N9IC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30gXAorICAgICAgICAgICAgICBjdWJlL3Jl Z3Jlc3MgcGdfY3RsLzAwMV9zdGFydF9zdG9wCisgICAgICAgICAgRU9GCisKKyAgICAgIC0gbmFt ZTogQ29yZSBiYWNrdHJhY2VzCisgICAgICAgIGlmOiBmYWlsdXJlKCkKKyAgICAgICAgcnVuOiB8 CisgICAgICAgICAgbWtkaXIgLW0gNzcwIC90bXAvY29yZXMKKyAgICAgICAgICBmaW5kIC8gLW1h eGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAnY29yZSonIC1leGVjIG12ICd7fScgL3RtcC9jb3Jlcy8g XDsKKyAgICAgICAgICBzcmMvdG9vbHMvY2kvY29yZXNfYmFja3RyYWNlLnNoIGxpbnV4IC90bXAv Y29yZXMKKworICAgICAgLSBuYW1lOiBVcGxvYWQgbG9ncworICAgICAgICBpZjogZmFpbHVyZSgp CisgICAgICAgIHVzZXM6IGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QHY3CisgICAgICAgIHdpdGg6 CisgICAgICAgICAgbmFtZTogc2FuaXR5Y2hlY2stbG9ncy0ke3sgZ2l0aHViLnJ1bl9pZCB9fQor ICAgICAgICAgIHBhdGg6ICpsb2dfcGF0aHMKKyAgICAgICAgICBpZi1uby1maWxlcy1mb3VuZDog aWdub3JlCisKKworICAjIEJ1aWxkICYgdGVzdCBwb3N0Z3JlcyBvbiBMaW51eCBpbiB0aHJlZSBj b25maWd1cmF0aW9ucy4KKyAgIworICAjIEF1dG9jb25mOgorICAjIC0gVXNlcyBhZGRyZXNzIHNh bml0aXplciAoc2FuaXRpemVyIGZhaWx1cmVzIGFyZSB0eXBpY2FsbHkgcHJpbnRlZCBpbgorICAj ICAgdGhlIHNlcnZlciBsb2cpCisgICMgLSBDb25maWd1cmVzIHBvc3RncmVzIHdpdGggYSBzbWFs bCBzZWdtZW50IHNpemUKKyAgIyAtIFVzZXMgUEdfVEVTVF9QR19DT01CSU5FQkFDS1VQX01PREU9 LS1jb3B5LWZpbGUtcmFuZ2UKKyAgIworICAjIE1lc29uOgorICAjIC0gVGVzdCBib3RoIDY0IGFu ZCAzMiBiaXQgYnVpbGRzCisgICMgLSBVc2VzIHVuZGVmaW5lZCBiZWhhdmlvdXIgYW5kIGFsaWdu bWVudCBzYW5pdGl6ZXJzLCAoc2FuaXRpemVyIGZhaWx1cmVzCisgICMgICBhcmUgdHlwaWNhbGx5 IHByaW50ZWQgaW4gdGhlIHNlcnZlciBsb2cpCisgICMgLSBVc2VzIGlvX21ldGhvZD1pb191cmlu ZworICAjIC0gVXNlcyBtZXNvbiBmZWF0dXJlIGF1dG9kZXRlY3Rpb24KKyAgIyAtIDMyIGJpdCBi dWlsZCB0ZXN0cyB3aXRoIExBTkc9QyB0byBnaXZlIElDVSBzb21lIGJ1aWxkZmFybS11bmNvdmVy ZWQKKyAgIyAgIGNvdmVyYWdlLiBBbHNvLCBuZXdlciBQeXRob24gaW5zaXN0cyBvbiBjaGFuZ2lu ZyBMQ19DVFlQRSBhd2F5IGZyb20gQywKKyAgIyAgIHByZXZlbnQgdGhhdCB3aXRoIFBZVEhPTkNP RVJDRUNMT0NBTEUuCisgICMKKyAgIyBkaXNhYmxlX2NvcmVkdW1wPTAsIGFib3J0X29uX2Vycm9y PTE6IGZvciB1c2VmdWwgYmFja3RyYWNlcyBpbiBjYXNlIG9mIGNyYXNoZXMKKyAgIyBwcmludF9z dGFja3RyYWNlcz0xLHZlcmJvc2l0eT0yLCBkdWgKKyAgIyBkZXRlY3RfbGVha3M9MDogdG9vIG1h bnkgdW5pbnRlcmVzdGluZyBsZWFrIGVycm9ycyBpbiBzaG9ydC1saXZlZCBiaW5hcmllcworICBs aW51eDoKKyAgICBuYW1lOiBMaW51eCAtICR7eyBtYXRyaXgubmFtZSB9fQorICAgIG5lZWRzOiBb c2V0dXAsIHNhbml0eS1jaGVja10KKyAgICBpZjogfAorICAgICAgIWNhbmNlbGxlZCgpICYmCisg ICAgICBuZWVkcy5zZXR1cC5vdXRwdXRzLmxpbnV4ID09ICd0cnVlJyAmJgorICAgICAgbmVlZHMu c2FuaXR5LWNoZWNrLnJlc3VsdCAhPSAnZmFpbHVyZScKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0 ZXN0CisgICAgdGltZW91dC1taW51dGVzOiA2MAorICAgIHN0cmF0ZWd5OgorICAgICAgZmFpbC1m YXN0OiBmYWxzZQorICAgICAgbWF0cml4OgorICAgICAgICBpbmNsdWRlOgorICAgICAgICAgIC0g bmFtZTogQXV0b2NvbmYKKyAgICAgICAgICAgIHNsdWc6IGF1dG9jb25mCisgICAgICAgICAgICBj YzogY2NhY2hlIGdjYworICAgICAgICAgICAgY3h4OiBjY2FjaGUgZysrCisgICAgICAgICAgICBz YW5pdGl6ZXJfZmxhZ3M6IC1mc2FuaXRpemU9YWRkcmVzcworICAgICAgICAgICAgcGdfdGVzdF9w Z19jb21iaW5lYmFja3VwX21vZGU6ICctLWNvcHktZmlsZS1yYW5nZScKKyAgICAgICAgICAgIGNv bmZpZ3VyZTogfAorICAgICAgICAgICAgICAuL2NvbmZpZ3VyZSBcCisgICAgICAgICAgICAgICAg LS1lbmFibGUtY2Fzc2VydCAtLWVuYWJsZS1pbmplY3Rpb24tcG9pbnRzIC0tZW5hYmxlLWRlYnVn IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS10YXAtdGVzdHMgLS1lbmFibGUtbmxzIFwKKyAg ICAgICAgICAgICAgICAtLXdpdGgtc2Vnc2l6ZS1ibG9ja3M9NiBcCisgICAgICAgICAgICAgICAg LS13aXRoLWxpYm51bWEgXAorICAgICAgICAgICAgICAgIC0td2l0aC1saWJ1cmluZyBcCisgICAg ICAgICAgICAgICAgJHtMSU5VWF9DT05GSUdVUkVfRkVBVFVSRVN9IFwKKyAgICAgICAgICAgICAg ICBDTEFORz0iY2NhY2hlIGNsYW5nIgorICAgICAgICAgICAgYnVpbGQ6IHwKKyAgICAgICAgICAg ICAgbWFrZSAtcyAtaiR7QlVJTERfSk9CU30gd29ybGQtYmluCisgICAgICAgICAgICB0ZXN0OiB8 CisgICAgICAgICAgICAgIG1ha2UgLXMgJHtDSEVDS30gJHtDSEVDS0ZMQUdTfSAtaiR7VEVTVF9K T0JTfQorICAgICAgICAgICAgbG9nc19wYXRoczogfAorICAgICAgICAgICAgICAqKi8qLmxvZwor ICAgICAgICAgICAgICAqKi8qLmRpZmZzCisgICAgICAgICAgICAgICoqL3JlZ3Jlc3NfbG9nXyoK KworICAgICAgICAgIC0gbmFtZTogTWVzb24gKDY0Yml0KQorICAgICAgICAgICAgc2x1ZzogbWVz b24tNjQKKyAgICAgICAgICAgIGNjOiBjY2FjaGUgZ2NjCisgICAgICAgICAgICBjeHg6IGNjYWNo ZSBnKysKKyAgICAgICAgICAgIHNhbml0aXplcl9mbGFnczogLWZzYW5pdGl6ZT1hbGlnbm1lbnQs dW5kZWZpbmVkCisgICAgICAgICAgICBwZ190ZXN0X2luaXRkYl9leHRyYV9vcHRzOiAnLWMgaW9f bWV0aG9kPWlvX3VyaW5nJworICAgICAgICAgICAgY29uZmlndXJlOiB8CisgICAgICAgICAgICAg IG1lc29uIHNldHVwIFwKKyAgICAgICAgICAgICAgICAke01FU09OX0NPTU1PTl9QR19DT05GSUdf QVJHU30gXAorICAgICAgICAgICAgICAgIC1EdXVpZD1lMmZzIFwKKyAgICAgICAgICAgICAgICAt LWJ1aWxkdHlwZT1kZWJ1ZyBcCisgICAgICAgICAgICAgICAgLURsbHZtPWVuYWJsZWQgXAorICAg ICAgICAgICAgICAgIGJ1aWxkCisgICAgICAgICAgICBidWlsZDogfAorICAgICAgICAgICAgICBu aW5qYSAtQyBidWlsZCAtaiR7QlVJTERfSk9CU30gJHtNQlVJTERfVEFSR0VUfQorICAgICAgICAg ICAgICBuaW5qYSAtQyBidWlsZCAtdCBtaXNzaW5nZGVwcworICAgICAgICAgICAgdGVzdDogfAor ICAgICAgICAgICAgICBtZXNvbiB0ZXN0ICR7TVRFU1RfQVJHU30gLUMgYnVpbGQgLS1udW0tcHJv Y2Vzc2VzICR7VEVTVF9KT0JTfQorICAgICAgICAgICAgbG9nc19wYXRoczogKmxvZ19wYXRocwor CisgICAgICAgICAgLSBuYW1lOiBNZXNvbiAoMzJiaXQpCisgICAgICAgICAgICBzbHVnOiBtZXNv bi0zMgorICAgICAgICAgICAgY2M6IGNjYWNoZSBnY2MgLW0zMgorICAgICAgICAgICAgY3h4OiBj Y2FjaGUgZysrIC1tMzIKKyAgICAgICAgICAgIHNhbml0aXplcl9mbGFnczogLWZzYW5pdGl6ZT1h bGlnbm1lbnQsdW5kZWZpbmVkCisgICAgICAgICAgICBwZ190ZXN0X2luaXRkYl9leHRyYV9vcHRz OiAnLWMgaW9fbWV0aG9kPWlvX3VyaW5nJworICAgICAgICAgICAgY29uZmlndXJlOiB8CisgICAg ICAgICAgICAgIG1lc29uIHNldHVwIFwKKyAgICAgICAgICAgICAgICAke01FU09OX0NPTU1PTl9Q R19DT05GSUdfQVJHU30gXAorICAgICAgICAgICAgICAgIC1EdXVpZD1lMmZzIFwKKyAgICAgICAg ICAgICAgICAtLWJ1aWxkdHlwZT1kZWJ1ZyBcCisgICAgICAgICAgICAgICAgLS1wa2ctY29uZmln LXBhdGggL3Vzci9saWIvaTM4Ni1saW51eC1nbnUvcGtnY29uZmlnLyBcCisgICAgICAgICAgICAg ICAgLURQRVJMPXBlcmw1LjQwLWkzODYtbGludXgtZ251IFwKKyAgICAgICAgICAgICAgICAtRGxp Ym51bWE9ZGlzYWJsZWQgXAorICAgICAgICAgICAgICAgIGJ1aWxkCisgICAgICAgICAgICBidWls ZDogfAorICAgICAgICAgICAgICBuaW5qYSAtQyBidWlsZCAtaiR7QlVJTERfSk9CU30gJHtNQlVJ TERfVEFSR0VUfQorICAgICAgICAgICAgICBuaW5qYSAtQyBidWlsZCAtdCBtaXNzaW5nZGVwcwor ICAgICAgICAgICAgdGVzdDogfAorICAgICAgICAgICAgICBQWVRIT05DT0VSQ0VDTE9DQUxFPTAg TEFORz1DIFwKKyAgICAgICAgICAgICAgICBtZXNvbiB0ZXN0ICR7TVRFU1RfQVJHU30gLUMgYnVp bGQgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfQorICAgICAgICAgICAgbG9nc19wYXRoczog KmxvZ19wYXRocworICAgIGNvbnRhaW5lcjoKKyAgICAgIGltYWdlOiAke3sgbmVlZHMuc2V0dXAu b3V0cHV0cy5saW51eF9jaV9pbWFnZSB9fQorICAgICAgIyBTaGFyZSB0aGUgaG9zdCBQSUQgKyBJ UEMgbmFtZXNwYWNlcy4gMDE3X3NobS5wbCByYXBpZGx5IGNyZWF0ZXMsCisgICAgICAjIGtpbGw5 J3MsIGFuZCByZXN0YXJ0cyBwb3N0Z3Jlczsgd2l0aCB0aGUgY29udGFpbmVyJ3Mgc21hbGwgUElE CisgICAgICAjIHNwYWNlIGEgbmV3IHBvc3RncmVzIGNhbiByZWN5Y2xlIHRoZSBkZWFkIHBvc3Rt YXN0ZXIncyBQSUQgYmVmb3JlCisgICAgICAjIHBnX2N0bCdzIHBvc3RtYXN0ZXIucGlkIGNoZWNr IG5vdGljZXMsIHByb2R1Y2luZyBzcHVyaW91cyAibm9kZSBYCisgICAgICAjIGlzIGFscmVhZHkg cnVubmluZyIgZmFpbHVyZXMuIFN5c1Ygc2htIGluIHRoZSB0ZXN0IGFsc28gcmVsaWVzIG9uCisg ICAgICAjIGhvc3QtbGlrZSBJUEMgYmVoYXZpb3IuCisgICAgICAjCisgICAgICAjIC0tdWxpbWl0 IHJhaXNlcyBtZW1sb2NrIGFuZCBjb3JlIGR1bXAgc2l6ZS4gTWVtbG9jayBpcyBuZWVkZWQgZm9y CisgICAgICAjIHJ1bm5pbmcgdGhlIEFJTyB0ZXN0cy4KKyAgICAgICMKKyAgICAgICMgLS1wcml2 aWxlZ2VkIGlzIG5lZWRlZCBzbyB0aGUgcHJlcGFyZSBzdGVwIGNhbiB3cml0ZSB0byBzeXNjdGxz CisgICAgICAjIHVuZGVyIC9wcm9jL3N5cyAoaXQncyBtb3VudGVkIHJlYWQtb25seSB3aXRob3V0 IGl0KS4gV2UgdXNlIGl0IHRvCisgICAgICAjIHNldCBrZXJuZWwuY29yZV9wYXR0ZXJuIGFuZCAo Zm9yIHRoZSBtZXNvbiBlbnRyaWVzKSB0byBmbGlwCisgICAgICAjIGtlcm5lbC5pb191cmluZ19k aXNhYmxlZCAoZGVmYXVsdCAyIG9uIHJlY2VudCBHSCBydW5uZXIga2VybmVscykuCisgICAgICBv cHRpb25zOiAtLXBpZD1ob3N0IC0taXBjPWhvc3QgLS11bGltaXQgbWVtbG9jaz0tMTotMSAtLXBy aXZpbGVnZWQKKyAgICBlbnY6CisgICAgICBCVUlMRF9KT0JTOiA0CisgICAgICBURVNUX0pPQlM6 IDgKKyAgICAgIENDQUNIRV9ESVI6IC90bXAvY2NhY2hlX2RpcgorICAgICAgREVCVUdJTkZPRF9V UkxTOiAiaHR0cHM6Ly9kZWJ1Z2luZm9kLmRlYmlhbi5uZXQiCisKKyAgICAgIFVCU0FOX09QVElP TlM6IHByaW50X3N0YWNrdHJhY2U9MTpkaXNhYmxlX2NvcmVkdW1wPTA6YWJvcnRfb25fZXJyb3I9 MTp2ZXJib3NpdHk9MgorICAgICAgQVNBTl9PUFRJT05TOiBwcmludF9zdGFja3RyYWNlPTE6ZGlz YWJsZV9jb3JlZHVtcD0wOmFib3J0X29uX2Vycm9yPTE6ZGV0ZWN0X2xlYWtzPTA6ZGV0ZWN0X3N0 YWNrX3VzZV9hZnRlcl9yZXR1cm49MAorICAgICAgQ0ZMQUdTOiAtT2cgLWdnZGIgLWZuby1zYW5p dGl6ZS1yZWNvdmVyPWFsbCAke3sgbWF0cml4LnNhbml0aXplcl9mbGFncyB9fQorICAgICAgQ1hY RkxBR1M6IC1PZyAtZ2dkYiAtZm5vLXNhbml0aXplLXJlY292ZXI9YWxsICR7eyBtYXRyaXguc2Fu aXRpemVyX2ZsYWdzIH19CisgICAgICBMREZMQUdTOiAke3sgbWF0cml4LnNhbml0aXplcl9mbGFn cyB9fQorICAgICAgQ0M6ICR7eyBtYXRyaXguY2MgfX0KKyAgICAgIENYWDogJHt7IG1hdHJpeC5j eHggfX0KKworICAgICAgUEdfVEVTVF9JTklUREJfRVhUUkFfT1BUUzogJHt7IG1hdHJpeC5wZ190 ZXN0X2luaXRkYl9leHRyYV9vcHRzIH19CisgICAgICBQR19URVNUX1BHX0NPTUJJTkVCQUNLVVBf TU9ERTogJHt7IG1hdHJpeC5wZ190ZXN0X3BnX2NvbWJpbmViYWNrdXBfbW9kZSB9fQorICAgIHN0 ZXBzOgorICAgICAgLSAqY2hlY2tvdXRfc3RlcAorCisgICAgICAtIG5hbWU6IFJlc3RvcmUgY2Nh Y2hlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvY2FjaGVAdjUKKyAgICAgICAgd2l0aDoKKyAgICAg ICAgICBwYXRoOiAke3sgZW52LkNDQUNIRV9ESVIgfX0KKyAgICAgICAgICBrZXk6IGNjYWNoZS1s aW51eC0ke3sgbWF0cml4LnNsdWcgfX0tJHt7IGdpdGh1Yi5yZWZfbmFtZSB9fS0ke3sgZ2l0aHVi LnJ1bl9pZCB9fQorICAgICAgICAgIHJlc3RvcmUta2V5czogfAorICAgICAgICAgICAgY2NhY2hl LWxpbnV4LSR7eyBtYXRyaXguc2x1ZyB9fS0ke3sgZ2l0aHViLnJlZl9uYW1lIH19LQorICAgICAg ICAgICAgY2NhY2hlLWxpbnV4LSR7eyBtYXRyaXguc2x1ZyB9fS0KKworICAgICAgLSBuYW1lOiBQ cmVwYXJlIHdvcmtzcGFjZQorICAgICAgICBydW46IHwKKyAgICAgICAgICB1c2VyYWRkIC1tIHBv c3RncmVzCisgICAgICAgICAgY2hvd24gLVIgcG9zdGdyZXM6cG9zdGdyZXMgLgorICAgICAgICAg IG1rZGlyIC1wICIkQ0NBQ0hFX0RJUiIKKyAgICAgICAgICBjaG93biAtUiBwb3N0Z3Jlczpwb3N0 Z3JlcyAiJENDQUNIRV9ESVIiCisgICAgICAgICAgbWtkaXIgLW0gNzcwIC90bXAvY29yZXMKKyAg ICAgICAgICBjaG93biByb290OnBvc3RncmVzIC90bXAvY29yZXMKKyAgICAgICAgICBzeXNjdGwg a2VybmVsLmNvcmVfcGF0dGVybj0nL3RtcC9jb3Jlcy8lZS0lcy0lcC5jb3JlJworICAgICAgICAg ICMgVGhpcyBpcyBvbmx5IG5lZWRlZCBvbiBMaW51eCBNZXNvbiBidXQgaXQgZG9lc24ndCBoYXJt IHRvIGhhdmUKKyAgICAgICAgICAjIHRoaXMgZW5hYmxlZC4KKyAgICAgICAgICBzeXNjdGwgLXcg a2VybmVsLmlvX3VyaW5nX2Rpc2FibGVkPTAKKworICAgICAgICAgIGNhdCA+PiAvZXRjL2hvc3Rz IDw8LUVPRgorICAgICAgICAgICAgMTI3LjAuMC4xIHBnLWxvYWRiYWxhbmNldGVzdAorICAgICAg ICAgICAgMTI3LjAuMC4yIHBnLWxvYWRiYWxhbmNldGVzdAorICAgICAgICAgICAgMTI3LjAuMC4z IHBnLWxvYWRiYWxhbmNldGVzdAorICAgICAgICAgIEVPRgorCisgICAgICAtIG5hbWU6IENvbmZp Z3VyZQorICAgICAgICBydW46IHwKKyAgICAgICAgICBzdSBwb3N0Z3JlcyA8PEVPRgorICAgICAg ICAgICAgc2V0IC1lCisgICAgICAgICAgICAke3sgbWF0cml4LmNvbmZpZ3VyZSB9fQorICAgICAg ICAgIEVPRgorCisgICAgICAtIG5hbWU6IEJ1aWxkCisgICAgICAgIHJ1bjogfAorICAgICAgICAg IHN1IHBvc3RncmVzIDw8RU9GCisgICAgICAgICAgICBzZXQgLWUKKyAgICAgICAgICAgICR7eyBt YXRyaXguYnVpbGQgfX0KKyAgICAgICAgICBFT0YKKworICAgICAgLSBuYW1lOiBUZXN0IHdvcmxk CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIHN1IHBvc3RncmVzIDw8RU9GCisgICAgICAgICAg ICBzZXQgLWUKKyAgICAgICAgICAgIHVsaW1pdCAtYyB1bmxpbWl0ZWQKKyAgICAgICAgICAgICR7 eyBtYXRyaXgudGVzdCB9fQorICAgICAgICAgIEVPRgorCisgICAgICAtIG5hbWU6IENvcmUgYmFj a3RyYWNlcworICAgICAgICBpZjogZmFpbHVyZSgpCisgICAgICAgIHJ1bjogc3JjL3Rvb2xzL2Np L2NvcmVzX2JhY2t0cmFjZS5zaCBsaW51eCAvdG1wL2NvcmVzCisKKyAgICAgIC0gbmFtZTogVXBs b2FkIGxvZ3MKKyAgICAgICAgaWY6IGZhaWx1cmUoKQorICAgICAgICB1c2VzOiBhY3Rpb25zL3Vw bG9hZC1hcnRpZmFjdEB2NworICAgICAgICB3aXRoOgorICAgICAgICAgIG5hbWU6IGxpbnV4LSR7 eyBtYXRyaXguc2x1ZyB9fS1sb2dzLSR7eyBnaXRodWIucnVuX2lkIH19CisgICAgICAgICAgcGF0 aDogJHt7IG1hdHJpeC5sb2dzX3BhdGhzIH19CisgICAgICAgICAgaWYtbm8tZmlsZXMtZm91bmQ6 IGlnbm9yZQorCisKKyAgIyBTUEVDSUFMOgorICAjIC0gRW5hYmxlcyAtLWNsb25lIGZvciBwZ191 cGdyYWRlIGFuZCBwZ19jb21iaW5lYmFja3VwCisgICMgLSBTcGVjaWZpZXMgY29uZmlndXJhdGlv biBvcHRpb25zIHRoYXQgdGVzdCByZWFkaW5nL3dyaXRpbmcvY29weWluZyBvZiBub2RlIHRyZWVz CisgICMgLSBTcGVjaWZpZXMgZGVidWdfcGFyYWxsZWxfcXVlcnk9cmVncmVzcywgdG8gY2F0Y2gg cmVsYXRlZCBpc3N1ZXMgZHVyaW5nIENJCisgIG1hY29zOgorICAgIG5hbWU6IG1hY09TIC0gTWVz b24KKyAgICBuZWVkczogW3NldHVwLCBzYW5pdHktY2hlY2tdCisgICAgaWY6IHwKKyAgICAgICFj YW5jZWxsZWQoKSAmJgorICAgICAgbmVlZHMuc2V0dXAub3V0cHV0cy5tYWNvcyA9PSAndHJ1ZScg JiYKKyAgICAgIG5lZWRzLnNhbml0eS1jaGVjay5yZXN1bHQgIT0gJ2ZhaWx1cmUnCisgICAgcnVu cy1vbjogbWFjb3MtMTUKKyAgICB0aW1lb3V0LW1pbnV0ZXM6IDYwCisgICAgZW52OgorICAgICAg QlVJTERfSk9CUzogNAorICAgICAgIyBUZXN0IHBlcmZvcm1hbmNlIHJlZ3Jlc3NlcyBub3RpY2Vh Ymx5IHdoZW4gdXNpbmcgYWxsIGNvcmVzLiA4IHdvcmtzIE9LLgorICAgICAgIyBodHRwczovL3Bv c3Rnci5lcy9tLzIwMjIwOTI3MDQwMjA4Lmwzc2hmY2lkb3ZwenF4ZmglNDBhd29yazMuYW5hcmF6 ZWwuZGUKKyAgICAgICMgRml4OiBOZWVkcyB0byBiZSByZS10ZXN0ZWQgZm9yIEdpdGh1YiBBY3Rp b25zLgorICAgICAgVEVTVF9KT0JTOiA4CisKKyAgICAgIENDQUNIRV9ESVI6ICR7eyBnaXRodWIu d29ya3NwYWNlIH19L2NjYWNoZV9kaXIKKyAgICAgIE1BQ1BPUlRTX0NBQ0hFOiAke3sgZ2l0aHVi LndvcmtzcGFjZSB9fS9tYWNwb3J0cy1jYWNoZQorCisgICAgICBNRVNPTl9GRUFUVVJFUzogPi0K KyAgICAgICAgLURib25qb3VyPWVuYWJsZWQKKyAgICAgICAgLURkdHJhY2U9ZW5hYmxlZAorICAg ICAgICAtRGdzc2FwaT1lbmFibGVkCisgICAgICAgIC1EbGliY3VybD1lbmFibGVkCisgICAgICAg IC1EbmxzPWVuYWJsZWQKKyAgICAgICAgLUR1dWlkPWUyZnMKKworICAgICAgTUFDT1NfUEFDS0FH RV9MSVNUOiA+LQorICAgICAgICBjY2FjaGUKKyAgICAgICAgaWN1CisgICAgICAgIGtlcmJlcm9z NQorICAgICAgICBsejQKKyAgICAgICAgbWVzb24KKyAgICAgICAgb3BlbmxkYXAKKyAgICAgICAg b3BlbnNzbAorICAgICAgICBwNS4zNC1pby10dHkKKyAgICAgICAgcDUuMzQtaXBjLXJ1bgorICAg ICAgICBweXRob24zMTIKKyAgICAgICAgdGNsCisgICAgICAgIHpzdGQKKworICAgICAgQ0M6IGNj YWNoZSBjYworICAgICAgQ1hYOiBjY2FjaGUgYysrCisgICAgICBDRkxBR1M6IC1PZyAtZ2dkYgor ICAgICAgQ1hYRkxBR1M6IC1PZyAtZ2dkYgorICAgICAgUEdfVEVTVF9QR19VUEdSQURFX01PREU6 IC0tY2xvbmUKKyAgICAgIFBHX1RFU1RfUEdfQ09NQklORUJBQ0tVUF9NT0RFOiAtLWNsb25lCisK KyAgICAgICMgU2V2ZXJhbCBidWlsZGZhcm0gYW5pbWFscyBlbmFibGUgdGhlc2Ugb3B0aW9ucy4g V2l0aG91dCB0ZXN0aW5nIHRoZW0KKyAgICAgICMgZHVyaW5nIENJLCBpdCB3b3VsZCBiZSBlYXN5 IHRvIGNhdXNlIGJyZWFrYWdlIG9uIHRoZSBidWlsZGZhcm0gd2l0aCBDSQorICAgICAgIyBwYXNz aW5nLgorICAgICAgUEdfVEVTVF9JTklUREJfRVhUUkFfT1BUUzogPi0KKyAgICAgICAgLWMgZGVi dWdfY29weV9wYXJzZV9wbGFuX3RyZWVzPW9uCisgICAgICAgIC1jIGRlYnVnX3dyaXRlX3JlYWRf cGFyc2VfcGxhbl90cmVlcz1vbgorICAgICAgICAtYyBkZWJ1Z19yYXdfZXhwcmVzc2lvbl9jb3Zl cmFnZV90ZXN0PW9uCisgICAgICAgIC1jIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5PXJlZ3Jlc3MKKwor ICAgIHN0ZXBzOgorICAgICAgLSAqY2hlY2tvdXRfc3RlcAorCisgICAgICAtIG5hbWU6IFN5c2lu Zm8KKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgaWQKKyAgICAgICAgICB1bmFtZSAtYQorICAg ICAgICAgIHVsaW1pdCAtYSAtSCAmJiB1bGltaXQgLWEgLVMKKyAgICAgICAgICBlbnYKKworICAg ICAgLSBuYW1lOiBTZXR1cCBjb3JlIGZpbGVzCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIG1r ZGlyIC1wICRIT01FL2NvcmVzCisgICAgICAgICAgc3VkbyBzeXNjdGwga2Vybi5jb3JlZmlsZT0i JEhPTUUvY29yZXMvY29yZS4lUCIKKworICAgICAgLSBuYW1lOiBSZXN0b3JlIGNjYWNoZQorICAg ICAgICB1c2VzOiBhY3Rpb25zL2NhY2hlQHY1CisgICAgICAgIHdpdGg6CisgICAgICAgICAgcGF0 aDogJHt7IGVudi5DQ0FDSEVfRElSIH19CisgICAgICAgICAga2V5OiBjY2FjaGUtbWFjb3MtJHt7 IGdpdGh1Yi5yZWZfbmFtZSB9fS0ke3sgZ2l0aHViLnJ1bl9pZCB9fQorICAgICAgICAgIHJlc3Rv cmUta2V5czogfAorICAgICAgICAgICAgY2NhY2hlLW1hY29zLSR7eyBnaXRodWIucmVmX25hbWUg fX0tCisgICAgICAgICAgICBjY2FjaGUtbWFjb3MtCisKKyAgICAgIC0gbmFtZTogQ29tcHV0ZSBN YWNQb3J0cyBjYWNoZSBrZXkKKyAgICAgICAgaWQ6IG1wa2V5CisgICAgICAgIHJ1bjogfAorICAg ICAgICAgIG1hY29zX21ham9yPSQoc3dfdmVycyAtcHJvZHVjdFZlcnNpb24gfCBzZWQgJ3MvXC4u Ki8vJykKKyAgICAgICAgICBwa2dsaXN0X2hhc2g9JChwcmludGYgJyVzJyAiJE1BQ09TX1BBQ0tB R0VfTElTVCIgfCBtZDUgLXEpCisgICAgICAgICAgc2NyaXB0X2hhc2g9JChtZDUgLXEgc3JjL3Rv b2xzL2NpL2NpX21hY3BvcnRzX3BhY2thZ2VzLnNoKQorICAgICAgICAgIGVjaG8gImtleT1tYWNw b3J0cy0ke21hY29zX21ham9yfS0ke3BrZ2xpc3RfaGFzaH0tJHtzY3JpcHRfaGFzaH0tJHtHSVRI VUJfUlVOX0lEfSIgPj4gIiRHSVRIVUJfT1VUUFVUIgorICAgICAgICAgIGVjaG8gInJlc3RvcmUt a2V5PW1hY3BvcnRzLSR7bWFjb3NfbWFqb3J9LSR7cGtnbGlzdF9oYXNofS0ke3NjcmlwdF9oYXNo fS0iID4+ICIkR0lUSFVCX09VVFBVVCIKKworICAgICAgLSBuYW1lOiBSZXN0b3JlIE1hY1BvcnRz IGNhY2hlCisgICAgICAgIHVzZXM6IGFjdGlvbnMvY2FjaGVAdjUKKyAgICAgICAgd2l0aDoKKyAg ICAgICAgICBwYXRoOiAke3sgZW52Lk1BQ1BPUlRTX0NBQ0hFIH19CisgICAgICAgICAga2V5OiAk e3sgc3RlcHMubXBrZXkub3V0cHV0cy5rZXkgfX0KKyAgICAgICAgICByZXN0b3JlLWtleXM6ICR7 eyBzdGVwcy5tcGtleS5vdXRwdXRzLnJlc3RvcmUta2V5IH19CisKKyAgICAgICMgVXNlIG1hY3Bv cnRzLCBldmVuIHRob3VnaCBob21lYnJldyBpcyBpbnN0YWxsZWQuIFRoZSBpbnN0YWxsYXRpb24K KyAgICAgICMgb2YgdGhlIGFkZGl0aW9uYWwgcGFja2FnZXMgd2UgbmVlZCB3b3VsZCB0YWtlIHF1 aXRlIGEgd2hpbGUgd2l0aAorICAgICAgIyBob21lYnJldywgZXZlbiBpZiB3ZSBjYWNoZSB0aGUg ZG93bmxvYWRzLiBXZSBjYW4ndCBjYWNoZSBhbGwgb2YKKyAgICAgICMgaG9tZWJyZXcsIGJlY2F1 c2UgaXQncyBhbHJlYWR5IGxhcmdlLiBTbyB3ZSB1c2UgbWFjcG9ydHMuIFRvIGNhY2hlCisgICAg ICAjIHRoZSBpbnN0YWxsYXRpb24gd2UgY3JlYXRlIGEgLmRtZyBmaWxlIHRoYXQgd2UgbW91bnQg aWYgaXQgYWxyZWFkeQorICAgICAgIyBleGlzdHMuCisgICAgICAjIFhYWDogVGhlIHJlYXNvbiBm b3IgdGhlIGRpcmVjdCBwNS4zNCogcmVmZXJlbmNlcyBpcyB0aGF0IHdlJ2QgbmVlZAorICAgICAg IyB0aGUgbGFyZ2UgbWFjcG9ydCB0cmVlIGFyb3VuZCB0byBmaWd1cmUgb3V0IHRoYXQgcDUtaW8t dHR5IGlzCisgICAgICAjIGFjdHVhbGx5IHA1LjM0LWlvLXR0eS4gVXNpbmcgdGhlIHVudmVyc2lv bmVkIG5hbWUgd29ya3MsIGJ1dAorICAgICAgIyB1cGRhdGVzIG1hY3BvcnRzIGV2ZXJ5IHRpbWUu CisgICAgICAtIG5hbWU6IEluc3RhbGwgZGVwZW5kZW5jaWVzIChNYWNQb3J0cykKKyAgICAgICAg ZW52OgorICAgICAgICAgICMgUGFzcyB0b2tlbiBzbyB0aGUgc2NyaXB0J3MgR2l0SHViIEFQSSBj YWxsIHRvIGxpc3QgTWFjUG9ydHMKKyAgICAgICAgICAjIHJlbGVhc2VzIGlzbid0IHN1YmplY3Qg dG8gdGhlIDYwL2hyL0lQIHVuYXV0aGVudGljYXRlZCByYXRlCisgICAgICAgICAgIyBsaW1pdCAo c2hhcmVkIGFjcm9zcyBhbGwgam9icyBvbiB0aGUgcnVubmVyJ3MgSVApLgorICAgICAgICAgIEdJ VEhVQl9UT0tFTjogJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19CisgICAgICAgIHJ1bjogfAor ICAgICAgICAgIHNoIHNyYy90b29scy9jaS9jaV9tYWNwb3J0c19wYWNrYWdlcy5zaCAkTUFDT1Nf UEFDS0FHRV9MSVNUCisgICAgICAgICAgIyBzeXN0ZW0gcHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBo ZWFkZXJzCisgICAgICAgICAgc3VkbyAvb3B0L2xvY2FsL2Jpbi9wb3J0IHNlbGVjdCBweXRob24z IHB5dGhvbjMxMgorICAgICAgICAgICMgTWFrZSBtYWNwb3J0cyBpbnN0YWxsIHZpc2libGUgdG8g c3Vic2VxdWVudCBzdGVwcworICAgICAgICAgIGVjaG8gL29wdC9sb2NhbC9zYmluID4+ICIkR0lU SFVCX1BBVEgiCisgICAgICAgICAgZWNobyAvb3B0L2xvY2FsL2JpbiA+PiAiJEdJVEhVQl9QQVRI IgorCisgICAgICAtIG5hbWU6IENvbmZpZ3VyZQorICAgICAgICBydW46IHwKKyAgICAgICAgICBl eHBvcnQgUEtHX0NPTkZJR19QQVRIPSIvb3B0L2xvY2FsL2xpYi9wa2djb25maWcvIgorICAgICAg ICAgIG1lc29uIHNldHVwIFwKKyAgICAgICAgICAgICR7TUVTT05fQ09NTU9OX1BHX0NPTkZJR19B UkdTfSBcCisgICAgICAgICAgICAtLWJ1aWxkdHlwZT1kZWJ1ZyBcCisgICAgICAgICAgICAtRGV4 dHJhX2luY2x1ZGVfZGlycz0vb3B0L2xvY2FsL2luY2x1ZGUgXAorICAgICAgICAgICAgLURleHRy YV9saWJfZGlycz0vb3B0L2xvY2FsL2xpYiBcCisgICAgICAgICAgICAtRGRhcndpbl9zeXNyb290 PW5vbmUgXAorICAgICAgICAgICAgJHtNRVNPTl9DT01NT05fRkVBVFVSRVN9IFwKKyAgICAgICAg ICAgICR7TUVTT05fRkVBVFVSRVN9IFwKKyAgICAgICAgICAgIGJ1aWxkCisKKyAgICAgIC0gbmFt ZTogQnVpbGQKKyAgICAgICAgcnVuOiBuaW5qYSAtQyBidWlsZCAtaiR7QlVJTERfSk9CU30gJHtN QlVJTERfVEFSR0VUfQorCisgICAgICAtIG5hbWU6IFRlc3Qgd29ybGQKKyAgICAgICAgcnVuOiB8 CisgICAgICAgICAgdWxpbWl0IC1jIHVubGltaXRlZCAgIyBkZWZhdWx0IGlzIDAKKyAgICAgICAg ICB1bGltaXQgLW4gMTAyNCAjIGRlZmF1bHQgaXMgMjU2LCBwcmV0dHkgbG93CisgICAgICAgICAg bWVzb24gdGVzdCAke01URVNUX0FSR1N9IC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30KKwor ICAgICAgLSBuYW1lOiBDb3JlIGJhY2t0cmFjZXMKKyAgICAgICAgaWY6IGZhaWx1cmUoKQorICAg ICAgICBydW46IHNyYy90b29scy9jaS9jb3Jlc19iYWNrdHJhY2Uuc2ggbWFjb3MgIiRIT01FL2Nv cmVzIgorCisgICAgICAtIG5hbWU6IFVwbG9hZCBsb2dzCisgICAgICAgIGlmOiBmYWlsdXJlKCkK KyAgICAgICAgdXNlczogYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjcKKyAgICAgICAgd2l0aDoK KyAgICAgICAgICBuYW1lOiBtYWNvcy1sb2dzLSR7eyBnaXRodWIucnVuX2lkIH19CisgICAgICAg ICAgcGF0aDogKmxvZ19wYXRocworICAgICAgICAgIGlmLW5vLWZpbGVzLWZvdW5kOiBpZ25vcmUK KworCisgIHdpbmRvd3MtdnM6CisgICAgbmFtZTogV2luZG93cyAtIFZTIC0gTWVzb24gJiBuaW5q YQorICAgIG5lZWRzOiBbc2V0dXAsIHNhbml0eS1jaGVja10KKyAgICBpZjogfAorICAgICAgIWNh bmNlbGxlZCgpICYmCisgICAgICBuZWVkcy5zZXR1cC5vdXRwdXRzLndpbmRvd3MgPT0gJ3RydWUn ICYmCisgICAgICBuZWVkcy5zYW5pdHktY2hlY2sucmVzdWx0ICE9ICdmYWlsdXJlJworICAgIHJ1 bnMtb246IHdpbmRvd3MtMjAyMgorICAgIHRpbWVvdXQtbWludXRlczogNjAKKyAgICBlbnY6Cisg ICAgICBURVNUX0pPQlM6IDgKKyAgICAgICMgQXZvaWQgcG9ydCBjb25mbGljdHMgYmV0d2VlbiBj b25jdXJyZW50IHRhcCB0ZXN0cworICAgICAgUEdfVEVTVF9VU0VfVU5JWF9TT0NLRVRTOiAxCisg ICAgICBQR19SRUdSRVNTX1NPQ0tfRElSOiAnYzpccGdzb2NrJworCisgICAgICBNRVNPTl9GRUFU VVJFUzogPi0KKyAgICAgICAgLURjcHBfYXJncz0vc3RkOmMrKzIwCisgICAgICAgIC1EYXV0b19m ZWF0dXJlcz1kaXNhYmxlZAorICAgICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAgICAgIC1E bGRhcD1lbmFibGVkCisgICAgICAgIC1Ec3NsPW9wZW5zc2wKKyAgICAgICAgLURwbHBlcmw9ZW5h YmxlZAorICAgICAgICAtRHBscHl0aG9uPWVuYWJsZWQKKyAgICAgIFRBUjogImM6L3dpbmRvd3Mv c3lzdGVtMzIvdGFyLmV4ZSIKKworICAgIGRlZmF1bHRzOgorICAgICAgcnVuOgorICAgICAgICBz aGVsbDogY21kCisgICAgc3RlcHM6CisgICAgICAtIG5hbWU6IERpc2FibGUgV2luZG93cyBEZWZl bmRlcgorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgICBydW46IHwKKyAgICAgICAg ICBTZXQtTXBQcmVmZXJlbmNlIC1EaXNhYmxlUmVhbHRpbWVNb25pdG9yaW5nICR0cnVlIC1TdWJt aXRTYW1wbGVzQ29uc2VudCBOZXZlclNlbmQgLU1BUFNSZXBvcnRpbmcgRGlzYWJsZQorICAgICAg ICAgICMgVmVyaWZ5IERlZmVuZGVyIHN0YXR1cworICAgICAgICAgICRzdGF0dXMgPSBHZXQtTXBD b21wdXRlclN0YXR1cyAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQorICAgICAgICAgIGlm ICgkc3RhdHVzKSB7CisgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIlJlYWxUaW1lUHJvdGVjdGlv bkVuYWJsZWQ6ICQoJHN0YXR1cy5SZWFsVGltZVByb3RlY3Rpb25FbmFibGVkKSIKKyAgICAgICAg ICAgICAgV3JpdGUtSG9zdCAiQW50aXZpcnVzRW5hYmxlZDogJCgkc3RhdHVzLkFudGl2aXJ1c0Vu YWJsZWQpIgorICAgICAgICAgIH0KKworICAgICAgLSAqY2hlY2tvdXRfc3RlcAorCisgICAgICAt IG5hbWU6IFN5c2luZm8KKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgY2hjcAorICAgICAgICAg IHN5c3RlbWluZm8KKyAgICAgICAgICBzZXQKKworICAgICAgIyBUaGUgVEFQIHRlc3RzIGJ1aWxk IGFuIGluaXRkYiB0ZW1wbGF0ZSB1bmRlciBidWlsZC90bXBfaW5zdGFsbCBhbmQKKyAgICAgICMg dGhlbiBgcm9ib2NvcHlgIGl0IGludG8gcGVyLXRlc3QgZGF0YSBkaXJlY3Rvcmllcy4gUm9ib2Nv cHkgd2l0aCB0aGUKKyAgICAgICMgZGVmYXVsdCAvQ09QWTpEQVQgZmxhZyBkb2Vzbid0IGNvcHkg QUNMcyDigJQgZGVzdGluYXRpb25zIGluaGVyaXQgZnJvbQorICAgICAgIyB0aGVpciBwYXJlbnQg ZGlyLiBPbiBHaXRIdWItaG9zdGVkIFdpbmRvd3MgcnVubmVycyB0aGUgd29ya3NwYWNlJ3MKKyAg ICAgICMgaW5oZXJpdGVkIEFDTCBncmFudHMgQWRtaW5pc3RyYXRvcnM6KEYpIGFuZCBVc2Vyczoo UlgpIGJ1dCBkb2VzIE5PVAorICAgICAgIyBncmFudCB0aGUgcnVubmVyIHVzZXIgKHJ1bm5lcmFk bWluKSBkaXJlY3RseS4gVGhhdCBtYXR0ZXJzIGJlY2F1c2UKKyAgICAgICMgcGdfY3RsIG9uIFdp bmRvd3MgdXNlcyBDcmVhdGVSZXN0cmljdGVkUHJvY2VzcyB0byBkcm9wIGFkbWluCisgICAgICAj IHByaXZpbGVnZXMgZnJvbSBwb3N0bWFzdGVyLCBzbyB0aGUgcG9zdG1hc3RlciBwcm9jZXNzIGhh cyB0aGUgdXNlcgorICAgICAgIyBTSUQgaW4gaXRzIHRva2VuIGJ1dCBubyBsb25nZXIgdGhlIEFk bWluaXN0cmF0b3JzIGdyb3VwIOKAlCBsZWF2aW5nIGl0CisgICAgICAjIHdpdGggb25seSAiVXNl cnM6KFJYKSIgb24gcGdfY29udHJvbCBhbmQgZnJpZW5kcywgd2hpY2ggY2F1c2VzCisgICAgICAj ICJQQU5JQzogY291bGQgbm90IG9wZW4gZmlsZSBnbG9iYWwvcGdfY29udHJvbDogUGVybWlzc2lv biBkZW5pZWQiLgorICAgICAgIworICAgICAgIyBGaXggaXQgb25jZSBvbiB0aGUgd29ya3NwYWNl IGRpciB3aXRoIChPSSkoQ0kpIGluaGVyaXRhbmNlIGZsYWdzIHNvCisgICAgICAjIGV2ZXJ5IGZp bGUvZGlyIGNyZWF0ZWQgdW5kZXJuZWF0aCBnZXRzIGFuIGV4cGxpY2l0IGdyYW50IGZvciB0aGUK KyAgICAgICMgY3VycmVudCB1c2VyLgorICAgICAgLSBuYW1lOiBHcmFudCB3b3Jrc3BhY2UgQUNM IHRvIHJ1bm5lciB1c2VyCisgICAgICAgIHNoZWxsOiBwd3NoCisgICAgICAgIHJ1bjogfAorICAg ICAgICAgIGljYWNscyAiJHt7IGdpdGh1Yi53b3Jrc3BhY2UgfX0iIC9ncmFudCAiJHtlbnY6VVNF Uk5BTUV9OihPSSkoQ0kpRiIgL1EgfCBPdXQtTnVsbAorICAgICAgICAgIFdyaXRlLUhvc3QgIkdy YW50ZWQgRnVsbCBDb250cm9sIHRvICRlbnY6VVNFUk5BTUUgb24gJHt7IGdpdGh1Yi53b3Jrc3Bh Y2UgfX0iCisKKyAgICAgICMgcG9zdGdyZXMnIHBscHl0aG9uM3UgbG9hZHMgcHl0aG9uMy5kbGwg KHRoZSBzdGFibGUtQUJJIGZvcndhcmRlcikKKyAgICAgICMgd2hpY2ggaW4gdHVybiBsb2FkcyB3 aGljaGV2ZXIgcHl0aG9uM05OLmRsbCB0aGUgV2luZG93cyBsb2FkZXIgZmluZHMKKyAgICAgICMg Zmlyc3Qgb24gUEFUSC4gT24gd2luZG93cy0yMDIyIGBDOlxQcm9ncmFtIEZpbGVzXE1lcmN1cmlh bFxgIHNoaXBzCisgICAgICAjIGl0cyBvd24gcHl0aG9uMy5kbGwgKyBweXRob24zOS5kbGwgYW5k IGFwcGVhcnMgb24gUEFUSCAqYmVmb3JlKiB0aGUKKyAgICAgICMgaG9zdGVkdG9vbGNhY2hlIFB5 dGhvbiAzLjEyIOKAlCBzbyB3aXRob3V0IGludGVydmVudGlvbiB0aGUgYmFja2VuZAorICAgICAg IyBlbmRzIHVwIHJ1bm5pbmcgUHl0aG9uIDMuOSB3aGlsZSBwb3N0Z3Jlcycgc3RkbGliIHNlYXJj aCB1c2VzIDMuMTIsCisgICAgICAjIHByb2R1Y2luZyBgSW1wb3J0RXJyb3I6IGNhbm5vdCBpbXBv cnQgbmFtZSAndGV4dF9lbmNvZGluZycgZnJvbQorICAgICAgIyAnaW8nYCAodGhlIDMuMTIgYGlv LnB5YCBjYWxsaW5nIGludG8gMy45J3MgYF9pb2ApLgorICAgICAgIworICAgICAgIyBQaW4gUFlU SE9OSE9NRSB0byB0aGUgUHl0aG9uIDMuMTIgcHJlZml4LCBhbmQgcHJlcGVuZCB0aGF0IHByZWZp eAorICAgICAgIyB0byBQQVRIIHNvIGl0cyBweXRob24zLmRsbCB3aW5zIHRoZSBETEwgc2VhcmNo LgorICAgICAgLSBuYW1lOiBQaW4gUHl0aG9uIHByZWZpeCBvbiBQQVRIIGFuZCBQWVRIT05IT01F CisgICAgICAgIHNoZWxsOiBwd3NoCisgICAgICAgIHJ1bjogfAorICAgICAgICAgICRwcmVmaXgg PSAocHl0aG9uIC1jICJpbXBvcnQgc3lzOyBwcmludChzeXMucHJlZml4KSIpLlRyaW0oKQorICAg ICAgICAgIEFkZC1Db250ZW50ICRlbnY6R0lUSFVCX0VOViAiUFlUSE9OSE9NRT0kcHJlZml4Igor ICAgICAgICAgIEFkZC1Db250ZW50ICRlbnY6R0lUSFVCX1BBVEggJHByZWZpeAorICAgICAgICAg IFdyaXRlLUhvc3QgIlBZVEhPTkhPTUU9JHByZWZpeCIKKyAgICAgICAgICBXcml0ZS1Ib3N0ICJQ cmVwZW5kZWQgJHByZWZpeCB0byBQQVRIIgorCisgICAgICAtIG5hbWU6IEluc3RhbGwgZGVwZW5k ZW5jaWVzCisgICAgICAgIHNoZWxsOiBwd3NoCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNo b2NvIGluc3RhbGwgLXkgLS1uby1wcm9ncmVzcyAtLWxpbWl0b3V0cHV0IGRpZmZ1dGlscyB3aW5m bGV4Ymlzb24zCisgICAgICAgICAgIyBtZXNvbiArIG5pbmphIGFyZW4ndCBwcmVpbnN0YWxsZWQg b24gd2luZG93cy0yMDIyLiBJbnN0YWxsIHZpYSBwaXAKKyAgICAgICAgICBweXRob24gLW0gcGlw IGluc3RhbGwgLS11cGdyYWRlIG1lc29uIG5pbmphCisKKyAgICAgICAgICAjIE9wZW5TU0wgMS4x IHZpYSB0aGUgc2xwcm93ZWIgaW5zdGFsbGVyIChwaW5uZWQgdG8gbWF0Y2ggdGhlCisgICAgICAg ICAgIyB2ZXJzaW9uIHVzZWQgZWxzZXdoZXJlIGluIHBvc3RncmVzIENJKS4KKyAgICAgICAgICBj dXJsLmV4ZSAtZnNTTCAtbyBvcGVuc3NsLXNldHVwLmV4ZSBodHRwczovL3NscHJvd2ViLmNvbS9k b3dubG9hZC9XaW42NE9wZW5TU0wtMV8xXzF3LmV4ZQorICAgICAgICAgIFN0YXJ0LVByb2Nlc3Mg LVdhaXQgLUZpbGVQYXRoIC4vb3BlbnNzbC1zZXR1cC5leGUgYAorICAgICAgICAgICAgLUFyZ3Vt ZW50TGlzdCAnL0RJUj1jOlxvcGVuc3NsXDEuMVwgL1ZFUllTSUxFTlQgL1NQLSAvU1VQUFJFU1NN U0dCT1hFUycKKyAgICAgICAgICAjIFRoZSBzbHByb3dlYiBpbnN0YWxsZXIgcHV0cyBsaWJjcnlw dG8tMV8xLXg2NC5kbGwgLyBsaWJzc2wtMV8xLXg2NC5kbGwKKyAgICAgICAgICAjIGluIGM6XG9w ZW5zc2xcMS4xXGJpblwgYW5kIHVwZGF0ZXMgdGhlIHN5c3RlbSBQQVRILiBHSCBBY3Rpb25zCisg ICAgICAgICAgIyBzbmFwc2hvdHMgUEFUSCBhdCBqb2Igc3RhcnQgdGhvdWdoLCBzbyB0aGUgcnVu bmluZyBqb2Igd29uJ3QKKyAgICAgICAgICAjIHNlZSB0aG9zZSBETExzIGFuZCBpbml0ZGIuZXhl IHdvdWxkIGNyYXNoIHNpbGVudGx5IGF0IHJ1bnRpbWUuCisgICAgICAgICAgIyBQdXNoIHRoZSBi aW4gZGlyIG9udG8gR0lUSFVCX1BBVEggc28gaXQgcGVyc2lzdHMgZm9yIGxhdGVyIHN0ZXBzLgor ICAgICAgICAgIEFkZC1Db250ZW50ICRlbnY6R0lUSFVCX1BBVEggImM6XG9wZW5zc2xcMS4xXGJp biIKKworICAgICAgICAgICMgSW5zdGFsbCBJUEM6OlJ1bi4KKyAgICAgICAgICAjIC0gcmVjb21t ZW5kc19wb2xpY3k9MCBrZWVwcyBjcGFuIGZyb20gcHVsbGluZyBpbiBJTzo6VHR5IC8gSU86OlB0 eSwKKyAgICAgICAgICAjICAgd2hpY2ggZG9uJ3QgYnVpbGQgb24gV2luZG93cyAoIlRoaXMgbW9k dWxlIHJlcXVpcmVzIGEgUE9TSVgKKyAgICAgICAgICAjICAgY29tcGxpYW50IHN5c3RlbSB0byB3 b3JrIikuCisgICAgICAgICAgIyAtIFBpbiB0byBOSk0vSVBDLVJ1bi0yMDI1MDgwOS4wIGJlY2F1 c2UgVE9ERFIvSVBDLVJ1bi0yMDI2MDMyMi4wCisgICAgICAgICAgIyAgIGJyb2tlIHBvc3RncmVz IHRhcCB0ZXN0cyBvbiBXaW5kb3dzIChjaGFuZ2VkIHBpcGUgc3RkaW8KKyAgICAgICAgICAjICAg aGFuZGxpbmcpLiBTZWUgdXBzdHJlYW0gcGctdm0taW1hZ2VzIGNvbW1pdCBmZjUyMzhhZmEzIGFu ZAorICAgICAgICAgICMgICB0aGUgdGhyZWFkIGF0CisgICAgICAgICAgIyAgIGh0dHBzOi8vcG9z dGdyLmVzL20vQ0FONTVGWjA2eGFuU2JKZEhlLUN1cmpYX3FOdUJXWkRFdlMxa0FrMzZMMzhZQ3Ra WG53JTQwbWFpbC5nbWFpbC5jb20KKyAgICAgICAgICAibyBjb25mIHJlY29tbWVuZHNfcG9saWN5 IDBgbm8gY29uZiBjb21taXRgbm5vdGVzdCBpbnN0YWxsIE5KTS9JUEMtUnVuLTIwMjUwODA5LjAu dGFyLmd6IiB8IGNwYW4KKyAgICAgICAgICBwZXJsIC1tSVBDOjpSdW4gLWUgMQorCisgICAgICAt IG5hbWU6IFNldHVwIGhvc3RzIGZpbGUKKyAgICAgICAgc2hlbGw6IHB3c2gKKyAgICAgICAgcnVu OiB8CisgICAgICAgICAgQWRkLUNvbnRlbnQgYzpcV2luZG93c1xTeXN0ZW0zMlxEcml2ZXJzXGV0 Y1xob3N0cyAiMTI3LjAuMC4xIHBnLWxvYWRiYWxhbmNldGVzdCIKKyAgICAgICAgICBBZGQtQ29u dGVudCBjOlxXaW5kb3dzXFN5c3RlbTMyXERyaXZlcnNcZXRjXGhvc3RzICIxMjcuMC4wLjIgcGct bG9hZGJhbGFuY2V0ZXN0IgorICAgICAgICAgIEFkZC1Db250ZW50IGM6XFdpbmRvd3NcU3lzdGVt MzJcRHJpdmVyc1xldGNcaG9zdHMgIjEyNy4wLjAuMyBwZy1sb2FkYmFsYW5jZXRlc3QiCisKKyAg ICAgIC0gbmFtZTogU2V0dXAgc29ja2V0IGRpcmVjdG9yeQorICAgICAgICBzaGVsbDogY21kCisg ICAgICAgIHJ1bjogbWtkaXIgJVBHX1JFR1JFU1NfU09DS19ESVIlCisKKyAgICAgIC0gbmFtZTog Q29uZmlndXJlCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIGNhbGwgIkM6XFByb2dyYW0gRmls ZXNcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAyMlxFbnRlcnByaXNlXFZDXEF1eGlsaWFyeVxC dWlsZFx2Y3ZhcnNhbGwuYmF0IiB4NjQKKyAgICAgICAgICBtZXNvbiBzZXR1cCAtLWJhY2tlbmQg bmluamEgJU1FU09OX0NPTU1PTl9QR19DT05GSUdfQVJHUyUgJU1FU09OX0ZFQVRVUkVTJSAtLWJ1 aWxkdHlwZSBkZWJ1ZyAtRGJfcGNoPXRydWUgLURleHRyYV9saWJfZGlycz1jOlxvcGVuc3NsXDEu MVxsaWIgLURleHRyYV9pbmNsdWRlX2RpcnM9Yzpcb3BlbnNzbFwxLjFcaW5jbHVkZSAtRFRBUj0l VEFSJSBidWlsZAorCisgICAgICAtIG5hbWU6IEJ1aWxkCisgICAgICAgIHJ1bjogfAorICAgICAg ICAgIGNhbGwgIkM6XFByb2dyYW0gRmlsZXNcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW9cMjAyMlxF bnRlcnByaXNlXFZDXEF1eGlsaWFyeVxCdWlsZFx2Y3ZhcnNhbGwuYmF0IiB4NjQKKyAgICAgICAg ICBuaW5qYSAtQyBidWlsZCAlTUJVSUxEX1RBUkdFVCUKKyAgICAgICAgICBuaW5qYSAtQyBidWls ZCAtdCBtaXNzaW5nZGVwcworCisgICAgICAtIG5hbWU6IFRlc3Qgd29ybGQKKyAgICAgICAgcnVu OiB8CisgICAgICAgICAgY2FsbCAiQzpcUHJvZ3JhbSBGaWxlc1xNaWNyb3NvZnQgVmlzdWFsIFN0 dWRpb1wyMDIyXEVudGVycHJpc2VcVkNcQXV4aWxpYXJ5XEJ1aWxkXHZjdmFyc2FsbC5iYXQiIHg2 NAorICAgICAgICAgIG1lc29uIHRlc3QgJU1URVNUX0FSR1MlIC0tbnVtLXByb2Nlc3NlcyAlVEVT VF9KT0JTJQorCisgICAgICAtIG5hbWU6IFVwbG9hZCBsb2dzCisgICAgICAgIGlmOiBmYWlsdXJl KCkKKyAgICAgICAgdXNlczogYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjcKKyAgICAgICAgd2l0 aDoKKyAgICAgICAgICBuYW1lOiB3aW5kb3dzLXZzLWxvZ3MtJHt7IGdpdGh1Yi5ydW5faWQgfX0K KyAgICAgICAgICBwYXRoOiB8CisgICAgICAgICAgICAke3sgZW52Ll9MT0dfUEFUSFMgfX0KKyAg ICAgICAgICAgIGNyYXNobG9nLSoudHh0CisgICAgICAgICAgaWYtbm8tZmlsZXMtZm91bmQ6IGln bm9yZQorCisKKyAgd2luZG93cy1taW5ndzoKKyAgICBuYW1lOiBXaW5kb3dzIC0gTWluR1cgLSBN ZXNvbgorICAgIG5lZWRzOiBbc2V0dXAsIHNhbml0eS1jaGVja10KKyAgICBpZjogfAorICAgICAg IWNhbmNlbGxlZCgpICYmCisgICAgICBuZWVkcy5zZXR1cC5vdXRwdXRzLm1pbmd3ID09ICd0cnVl JyAmJgorICAgICAgbmVlZHMuc2FuaXR5LWNoZWNrLnJlc3VsdCAhPSAnZmFpbHVyZScKKyAgICBy dW5zLW9uOiB3aW5kb3dzLTIwMjIKKyAgICB0aW1lb3V0LW1pbnV0ZXM6IDYwCisgICAgZW52Ogor ICAgICAgVEVTVF9KT0JTOiA0ICAjIGhpZ2hlciBjb25jdXJyZW5jeSBjYXVzZXMgb2NjYXNpb25h bCBmYWlsdXJlcworICAgICAgUEdfVEVTVF9VU0VfVU5JWF9TT0NLRVRTOiAxCisgICAgICBQR19S RUdSRVNTX1NPQ0tfRElSOiAnYzpccGdzb2NrXCcKKyAgICAgIFRBUjogImM6L3dpbmRvd3Mvc3lz dGVtMzIvdGFyLmV4ZSIKKyAgICAgICMgZm9yIG1pbmd3IHBscHl0aG9uIHRvIGZpbmQgaXRzIGlu c3RhbGxhdGlvbgorICAgICAgUFlUSE9OSE9NRTogRDovYS9fdGVtcC9tc3lzNjQvdWNydDY0CisK KyAgICAgIE1TWVM6IHdpbmppdGRlYnVnCisgICAgICBDSEVSRV9JTlZPS0lORzogMQorCisgICAg ICAjIEtlZXAgLURubHMgZXhwbGljaXRseSBkaXNhYmxlZCwgYXMgdGhlIG51bWJlciBvZiBmaWxl cyBpdCBjcmVhdGVzCisgICAgICAjIGNhdXNlcyBhIG5vdGljZWFibGUgc2xvd2Rvd24uCisgICAg ICBNRVNPTl9GRUFUVVJFUzogPi0KKyAgICAgICAgLURubHM9ZGlzYWJsZWQKKworICAgICAgQ0NB Q0hFX0RJUjogRDovYS9jY2FjaGUKKyAgICAgIENDQUNIRV9NQVhTSVpFOiAiNTAwTSIKKyAgICAg IENDQUNIRV9TTE9QUElORVNTOiBwY2hfZGVmaW5lcyx0aW1lX21hY3JvcworICAgICAgQ0NBQ0hF X0RFUEVORDogMQorCisgICAgc3RlcHM6CisgICAgICAtIG5hbWU6IERpc2FibGUgV2luZG93cyBE ZWZlbmRlcgorICAgICAgICBzaGVsbDogcG93ZXJzaGVsbAorICAgICAgICBydW46IHwKKyAgICAg ICAgICBTZXQtTXBQcmVmZXJlbmNlIC1EaXNhYmxlUmVhbHRpbWVNb25pdG9yaW5nICR0cnVlIC1T dWJtaXRTYW1wbGVzQ29uc2VudCBOZXZlclNlbmQgLU1BUFNSZXBvcnRpbmcgRGlzYWJsZQorICAg ICAgICAgICMgVmVyaWZ5IERlZmVuZGVyIHN0YXR1cworICAgICAgICAgICRzdGF0dXMgPSBHZXQt TXBDb21wdXRlclN0YXR1cyAtRXJyb3JBY3Rpb24gU2lsZW50bHlDb250aW51ZQorICAgICAgICAg IGlmICgkc3RhdHVzKSB7CisgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIlJlYWxUaW1lUHJvdGVj dGlvbkVuYWJsZWQ6ICQoJHN0YXR1cy5SZWFsVGltZVByb3RlY3Rpb25FbmFibGVkKSIKKyAgICAg ICAgICAgICAgV3JpdGUtSG9zdCAiQW50aXZpcnVzRW5hYmxlZDogJCgkc3RhdHVzLkFudGl2aXJ1 c0VuYWJsZWQpIgorICAgICAgICAgIH0KKworICAgICAgLSAqY2hlY2tvdXRfc3RlcAorCisgICAg ICAtIG5hbWU6IFNldHVwIE1TWVMyCisgICAgICAgIHVzZXM6IG1zeXMyL3NldHVwLW1zeXMyQHYy CisgICAgICAgIHdpdGg6CisgICAgICAgICAgbXN5c3RlbTogVUNSVDY0CisgICAgICAgICAgdXBk YXRlOiB0cnVlCisgICAgICAgICAgaW5zdGFsbDogPi0KKyAgICAgICAgICAgIGdpdCBiaXNvbiBm bGV4IG1ha2UgZGlmZnV0aWxzCisgICAgICAgICAgICBtaW5ndy13NjQtdWNydC14ODZfNjQtY2Nh Y2hlCisgICAgICAgICAgICBtaW5ndy13NjQtdWNydC14ODZfNjQtZ2NjCisgICAgICAgICAgICBt aW5ndy13NjQtdWNydC14ODZfNjQtaWN1CisgICAgICAgICAgICBtaW5ndy13NjQtdWNydC14ODZf NjQtbGliYmFja3RyYWNlCisgICAgICAgICAgICBtaW5ndy13NjQtdWNydC14ODZfNjQtbGlieG1s MgorICAgICAgICAgICAgbWluZ3ctdzY0LXVjcnQteDg2XzY0LWxpYnhzbHQKKyAgICAgICAgICAg IG1pbmd3LXc2NC11Y3J0LXg4Nl82NC1sejQKKyAgICAgICAgICAgIG1pbmd3LXc2NC11Y3J0LXg4 Nl82NC1tYWtlCisgICAgICAgICAgICBtaW5ndy13NjQtdWNydC14ODZfNjQtbWVzb24KKyAgICAg ICAgICAgIG1pbmd3LXc2NC11Y3J0LXg4Nl82NC1wZXJsCisgICAgICAgICAgICBtaW5ndy13NjQt dWNydC14ODZfNjQtcGtnLWNvbmZpZworICAgICAgICAgICAgbWluZ3ctdzY0LXVjcnQteDg2XzY0 LXJlYWRsaW5lCisgICAgICAgICAgICBtaW5ndy13NjQtdWNydC14ODZfNjQtemxpYgorCisgICAg ICAtIG5hbWU6IEluc3RhbGwgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMKKyAgICAgICAgc2hlbGw6 IG1zeXMyIHswfQorICAgICAgICBydW46IHwKKyAgICAgICAgICAjIFBpbiBJUEM6OlJ1biB0byBO Sk0vSVBDLVJ1bi0yMDI1MDgwOS4wOyBUT0REUi9JUEMtUnVuLTIwMjYwMzIyLjAKKyAgICAgICAg ICAjIGJyb2tlIHBvc3RncmVzIHRhcCB0ZXN0cyBvbiBXaW5kb3dzIChwaXBlIHN0ZGlvIGhhbmRs aW5nKS4KKyAgICAgICAgICAjIFNlZSBwZy12bS1pbWFnZXMgY29tbWl0IGZmNTIzOGFmYTMuCisg ICAgICAgICAgKGVjaG87IGVjaG8gbyBjb25mIHJlY29tbWVuZHNfcG9saWN5IDA7IGVjaG8gbm90 ZXN0IGluc3RhbGwgTkpNL0lQQy1SdW4tMjAyNTA4MDkuMC50YXIuZ3opIHwgY3BhbgorICAgICAg ICAgIHBlcmwgLW1JUEM6OlJ1biAtZSAxCisKKyAgICAgIC0gbmFtZTogU2V0dXAgc29ja2V0IGRp cmVjdG9yeQorICAgICAgICBzaGVsbDogY21kCisgICAgICAgIHJ1bjogbWtkaXIgJVBHX1JFR1JF U1NfU09DS19ESVIlCisKKyAgICAgIC0gbmFtZTogUmVzdG9yZSBjY2FjaGUKKyAgICAgICAgdXNl czogYWN0aW9ucy9jYWNoZUB2NQorICAgICAgICB3aXRoOgorICAgICAgICAgIHBhdGg6ICR7eyBl bnYuQ0NBQ0hFX0RJUiB9fQorICAgICAgICAgIGtleTogY2NhY2hlLW1pbmd3LSR7eyBnaXRodWIu cmVmX25hbWUgfX0tJHt7IGdpdGh1Yi5ydW5faWQgfX0KKyAgICAgICAgICByZXN0b3JlLWtleXM6 IHwKKyAgICAgICAgICAgIGNjYWNoZS1taW5ndy0ke3sgZ2l0aHViLnJlZl9uYW1lIH19LQorICAg ICAgICAgICAgY2NhY2hlLW1pbmd3LQorCisgICAgICAtIG5hbWU6IENvbmZpZ3VyZQorICAgICAg ICBzaGVsbDogbXN5czIgezB9CisgICAgICAgIHJ1bjogfAorICAgICAgICAgIG1lc29uIHNldHVw IFwKKyAgICAgICAgICAgICR7TUVTT05fQ09NTU9OX1BHX0NPTkZJR19BUkdTfSBcCisgICAgICAg ICAgICAtRGRlYnVnPXRydWUgLURvcHRpbWl6YXRpb249ZyAtRGJfcGNoPXRydWUgXAorICAgICAg ICAgICAgJHtNRVNPTl9DT01NT05fRkVBVFVSRVN9IFwKKyAgICAgICAgICAgICR7TUVTT05fRkVB VFVSRVN9IFwKKyAgICAgICAgICAgIC1EVEFSPSR7VEFSfSBcCisgICAgICAgICAgICBidWlsZAor CisgICAgICAtIG5hbWU6IEJ1aWxkCisgICAgICAgIHNoZWxsOiBtc3lzMiB7MH0KKyAgICAgICAg cnVuOiBuaW5qYSAtQyBidWlsZCAke01CVUlMRF9UQVJHRVR9CisKKyAgICAgIC0gbmFtZTogVGVz dCB3b3JsZAorICAgICAgICBzaGVsbDogbXN5czIgezB9CisgICAgICAgIHJ1bjogbWVzb24gdGVz dCAke01URVNUX0FSR1N9IC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30KKworICAgICAgLSBu YW1lOiBVcGxvYWQgbG9ncworICAgICAgICBpZjogZmFpbHVyZSgpCisgICAgICAgIHVzZXM6IGFj dGlvbnMvdXBsb2FkLWFydGlmYWN0QHY3CisgICAgICAgIHdpdGg6CisgICAgICAgICAgbmFtZTog d2luZG93cy1taW5ndy1sb2dzLSR7eyBnaXRodWIucnVuX2lkIH19CisgICAgICAgICAgcGF0aDog fAorICAgICAgICAgICAgJHt7IGVudi5fTE9HX1BBVEhTIH19CisgICAgICAgICAgICBjcmFzaGxv Zy0qLnR4dAorICAgICAgICAgIGlmLW5vLWZpbGVzLWZvdW5kOiBpZ25vcmUKKworICAjIFRlc3Qg dGhhdCBjb2RlIGNhbiBiZSBidWlsdCB3aXRoIGJvdGggZ2NjIGFuZCBjbGFuZyB3aXRob3V0IHdh cm5pbmdzLAorICAjIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgY2Fzc2VydC9kdHJhY2Ug ZmxhZ3MuIFRyYWNlIHByb2JlcyBoYXZlCisgICMgYSBoaXN0b3J5IG9mIGdldHRpbmcgYWNjaWRl bnRhbGx5IGJyb2tlbjsgdGhlIG1hdHJpeCBpcyB0aGVyZSB0bworICAjIGNhdGNoIHRoYXQuCisg ICMKKyAgIyBUaGUgYXV0b2NvbmYgY2FjaGUgZmlsZXMgKGdjYy5jYWNoZSAvIGNsYW5nLmNhY2hl KSBhcmUgaW50ZW50aW9uYWxseQorICAjIHJldXNlZCBhY3Jvc3MgdGhlIG1hdHJpeCBlbnRyaWVz IHRoYXQgc2hhcmUgYSBjb21waWxlciwgc28gd2UgZG9uJ3QKKyAgIyBwYXkgZm9yIGZ1bGwgZmVh dHVyZSBkZXRlY3Rpb24gb24gZXZlcnkgZW50cnkuCisgIGNvbXBpbGVyLXdhcm5pbmdzOgorICAg IG5hbWU6IENvbXBpbGVyV2FybmluZ3MKKyAgICBuZWVkczogW3NldHVwLCBzYW5pdHktY2hlY2td CisgICAgaWY6IHwKKyAgICAgICFjYW5jZWxsZWQoKSAmJgorICAgICAgbmVlZHMuc2V0dXAub3V0 cHV0cy5jb21waWxlcndhcm5pbmdzID09ICd0cnVlJyAmJgorICAgICAgbmVlZHMuc2FuaXR5LWNo ZWNrLnJlc3VsdCAhPSAnZmFpbHVyZScKKyAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0CisgICAg dGltZW91dC1taW51dGVzOiA2MAorICAgIGNvbnRhaW5lcjoKKyAgICAgIGltYWdlOiAke3sgbmVl ZHMuc2V0dXAub3V0cHV0cy5saW51eF9jaV9pbWFnZSB9fQorICAgIGVudjoKKyAgICAgIEJVSUxE X0pPQlM6IDQKKyAgICAgIENDQUNIRV9ESVI6IC90bXAvY2NhY2hlX2RpcgorICAgICAgIyBVc2Ug bGFyZ2VyIGNjYWNoZSBjYWNoZSBhcyB0aGlzIGpvYiBjb21waWxlcyB3aXRoIG11bHRpcGxlCisg ICAgICAjIGNvbXBpbGVycyAvIGZsYWcgY29tYmluYXRpb25zLgorICAgICAgQ0NBQ0hFX01BWFNJ WkU6ICIxRyIKKyAgICBzdGVwczoKKyAgICAgIC0gKmNoZWNrb3V0X3N0ZXAKKworICAgICAgLSBu YW1lOiBSZXN0b3JlIGNjYWNoZQorICAgICAgICB1c2VzOiBhY3Rpb25zL2NhY2hlQHY1CisgICAg ICAgIHdpdGg6CisgICAgICAgICAgcGF0aDogJHt7IGVudi5DQ0FDSEVfRElSIH19CisgICAgICAg ICAga2V5OiBjY2FjaGUtY29tcGlsZXItd2FybmluZ3MtJHt7IGdpdGh1Yi5yZWZfbmFtZSB9fS0k e3sgZ2l0aHViLnJ1bl9pZCB9fQorICAgICAgICAgIHJlc3RvcmUta2V5czogfAorICAgICAgICAg ICAgY2NhY2hlLWNvbXBpbGVyLXdhcm5pbmdzLSR7eyBnaXRodWIucmVmX25hbWUgfX0tCisgICAg ICAgICAgICBjY2FjaGUtY29tcGlsZXItd2FybmluZ3MtCisKKyAgICAgIC0gbmFtZTogU3lzaW5m bworICAgICAgICBydW46IHwKKyAgICAgICAgICBpZAorICAgICAgICAgIHVuYW1lIC1hCisgICAg ICAgICAgY2F0IC9wcm9jL2NtZGxpbmUKKyAgICAgICAgICB1bGltaXQgLWEgLUggJiYgdWxpbWl0 IC1hIC1TCisgICAgICAgICAgZ2NjIC12CisgICAgICAgICAgY2xhbmcgLXYKKyAgICAgICAgICBl bnYKKworICAgICAgLSBuYW1lOiBTZXR1cCB3b3Jrc3BhY2UKKyAgICAgICAgcnVuOiB8CisgICAg ICAgICAgZWNobyAiQ09QVD0tV2Vycm9yIiA+IHNyYy9NYWtlZmlsZS5jdXN0b20KKyAgICAgICAg ICBta2RpciAtcCAiJENDQUNIRV9ESVIiCisKKyAgICAgICMgZ2NjLCBjYXNzZXJ0IG9mZiwgZHRy YWNlIG9uCisgICAgICAtIG5hbWU6IGdjYyB3YXJuaW5ncyArIChkdHJhY2UpCisgICAgICAgIGlm OiBhbHdheXMoKQorICAgICAgICBydW46IHwKKyAgICAgICAgICAuL2NvbmZpZ3VyZSBcCisgICAg ICAgICAgICAtLWNhY2hlIGdjYy5jYWNoZSBcCisgICAgICAgICAgICAtLWVuYWJsZS1kdHJhY2Ug XAorICAgICAgICAgICAgJHtMSU5VWF9DT05GSUdVUkVfRkVBVFVSRVN9IFwKKyAgICAgICAgICAg IENDPSJjY2FjaGUgZ2NjIiBDWFg9ImNjYWNoZSBnKysiIENMQU5HPSJjY2FjaGUgY2xhbmciCisg ICAgICAgICAgbWFrZSAtcyAtaiR7QlVJTERfSk9CU30gY2xlYW4KKyAgICAgICAgICBtYWtlIC1z IC1qJHtCVUlMRF9KT0JTfSB3b3JsZC1iaW4KKworICAgICAgIyBnY2MsIGNhc3NlcnQgb24sIGR0 cmFjZSBvZmYKKyAgICAgIC0gbmFtZTogZ2NjIHdhcm5pbmdzICsgKGNhc3NlcnQpCisgICAgICAg IGlmOiBhbHdheXMoKQorICAgICAgICBydW46IHwKKyAgICAgICAgICAuL2NvbmZpZ3VyZSBcCisg ICAgICAgICAgICAtLWNhY2hlIGdjYy5jYWNoZSBcCisgICAgICAgICAgICAtLWVuYWJsZS1jYXNz ZXJ0IFwKKyAgICAgICAgICAgICR7TElOVVhfQ09ORklHVVJFX0ZFQVRVUkVTfSBcCisgICAgICAg ICAgICBDQz0iY2NhY2hlIGdjYyIgQ1hYPSJjY2FjaGUgZysrIiBDTEFORz0iY2NhY2hlIGNsYW5n IgorICAgICAgICAgIG1ha2UgLXMgLWoke0JVSUxEX0pPQlN9IGNsZWFuCisgICAgICAgICAgbWFr ZSAtcyAtaiR7QlVJTERfSk9CU30gd29ybGQtYmluCisKKyAgICAgICMgY2xhbmcsIGNhc3NlcnQg b2ZmLCBkdHJhY2Ugb2ZmCisgICAgICAtIG5hbWU6IGNsYW5nIHdhcm5pbmdzCisgICAgICAgIGlm OiBhbHdheXMoKQorICAgICAgICBydW46IHwKKyAgICAgICAgICAuL2NvbmZpZ3VyZSBcCisgICAg ICAgICAgICAtLWNhY2hlIGNsYW5nLmNhY2hlIFwKKyAgICAgICAgICAgICR7TElOVVhfQ09ORklH VVJFX0ZFQVRVUkVTfSBcCisgICAgICAgICAgICBDQz0iY2NhY2hlIGNsYW5nIiBDWFg9ImNjYWNo ZSBjbGFuZysrIiBDTEFORz0iY2NhY2hlIGNsYW5nIgorICAgICAgICAgIG1ha2UgLXMgLWoke0JV SUxEX0pPQlN9IGNsZWFuCisgICAgICAgICAgbWFrZSAtcyAtaiR7QlVJTERfSk9CU30gd29ybGQt YmluCisKKyAgICAgICMgY2xhbmcsIGNhc3NlcnQgb24sIGR0cmFjZSBvbgorICAgICAgLSBuYW1l OiBjbGFuZyB3YXJuaW5ncyArIChjYXNzZXJ0ICsgZHRyYWNlKQorICAgICAgICBpZjogYWx3YXlz KCkKKyAgICAgICAgcnVuOiB8CisgICAgICAgICAgLi9jb25maWd1cmUgXAorICAgICAgICAgICAg LS1jYWNoZSBjbGFuZy5jYWNoZSBcCisgICAgICAgICAgICAtLWVuYWJsZS1jYXNzZXJ0IFwKKyAg ICAgICAgICAgIC0tZW5hYmxlLWR0cmFjZSBcCisgICAgICAgICAgICAke0xJTlVYX0NPTkZJR1VS RV9GRUFUVVJFU30gXAorICAgICAgICAgICAgQ0M9ImNjYWNoZSBjbGFuZyIgQ1hYPSJjY2FjaGUg Y2xhbmcrKyIgQ0xBTkc9ImNjYWNoZSBjbGFuZyIKKyAgICAgICAgICBtYWtlIC1zIC1qJHtCVUlM RF9KT0JTfSBjbGVhbgorICAgICAgICAgIG1ha2UgLXMgLWoke0JVSUxEX0pPQlN9IHdvcmxkLWJp bgorCisgICAgICAtIG5hbWU6IG1pbmd3IHdhcm5pbmdzIChjcm9zcyBjb21waWxhdGlvbikKKyAg ICAgICAgaWY6IGFsd2F5cygpCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIC4vY29uZmlndXJl IFwKKyAgICAgICAgICAgIC0taG9zdD14ODZfNjQtdzY0LW1pbmd3MzJ1Y3J0IFwKKyAgICAgICAg ICAgIC0tZW5hYmxlLWNhc3NlcnQgXAorICAgICAgICAgICAgLS13aXRob3V0LWljdSBcCisgICAg ICAgICAgICBDQz0iY2NhY2hlIHg4Nl82NC13NjQtbWluZ3czMnVjcnQtZ2NjIiBcCisgICAgICAg ICAgICBDWFg9ImNjYWNoZSB4ODZfNjQtdzY0LW1pbmd3MzJ1Y3J0LWcrKyIKKyAgICAgICAgICBt YWtlIC1zIC1qJHtCVUlMRF9KT0JTfSBjbGVhbgorICAgICAgICAgIG1ha2UgLXMgLWoke0JVSUxE X0pPQlN9IHdvcmxkLWJpbgorCisgICAgICAjIyMKKyAgICAgICMgVmVyaWZ5IGRvY3MgY2FuIGJl IGJ1aWx0CisgICAgICAjIyMKKyAgICAgICMgWFhYOiBPbmx5IGRvIHRoaXMgaWYgdGhlcmUgaGF2 ZSBiZWVuIGNoYW5nZXMgaW4gZG9jLyBzaW5jZSBsYXN0IGJ1aWxkCisgICAgICAtIG5hbWU6IEJ1 aWxkIGRvY3VtZW50YXRpb24KKyAgICAgICAgaWY6IGFsd2F5cygpCisgICAgICAgIHJ1bjogfAor ICAgICAgICAgIC4vY29uZmlndXJlIFwKKyAgICAgICAgICAgIC0tY2FjaGUgZ2NjLmNhY2hlIFwK KyAgICAgICAgICAgIENDPSJjY2FjaGUgZ2NjIiBDWFg9ImNjYWNoZSBnKysiIENMQU5HPSJjY2Fj aGUgY2xhbmciCisgICAgICAgICAgbWFrZSAtcyAtaiR7QlVJTERfSk9CU30gY2xlYW4KKyAgICAg ICAgICBtYWtlIC1zIC1qJHtCVUlMRF9KT0JTfSAtQyBkb2MKKworICAgICAgIyMjCisgICAgICAj IFZlcmlmeSBoZWFkZXJzY2hlY2sgLyBjcGx1c3BsdXNjaGVjayBzdWNjZWVkCisgICAgICAjCisg ICAgICAjIC0gUnVuIGJvdGggaW4gc2FtZSBzY3JpcHQgdG8gaW5jcmVhc2UgcGFyYWxsZWxpc20s IHVzZSAtayB0byBnZXQKKyAgICAgICMgICByZXN1bHQgb2YgYm90aAorICAgICAgIyAtIFVzZSAt Zm1heC1lcnJvcnMsIGFzIHBhcnRpY3VsYXJseSBjcGx1c3BsdXNjaGVjayBjYW4gYmUgdmVyeSB2 ZXJib3NlCisgICAgICAjIyMKKyAgICAgIC0gbmFtZTogaGVhZGVyc2NoZWNrICsgY3BsdXNwbHVz Y2hlY2sKKyAgICAgICAgaWY6IGFsd2F5cygpCisgICAgICAgIHJ1bjogfAorICAgICAgICAgIC4v Y29uZmlndXJlIFwKKyAgICAgICAgICAgICR7TElOVVhfQ09ORklHVVJFX0ZFQVRVUkVTfSBcCisg ICAgICAgICAgICAtLWNhY2hlIGdjYy5jYWNoZSBcCisgICAgICAgICAgICAtLXF1aWV0IFwKKyAg ICAgICAgICAgIENDPSJjY2FjaGUgZ2NjIiBDWFg9ImNjYWNoZSBnKysiIENMQU5HPSJjY2FjaGUg Y2xhbmciCisgICAgICAgICAgbWFrZSAtcyAtaiR7QlVJTERfSk9CU30gY2xlYW4KKyAgICAgICAg ICBtYWtlIC1zIC1qJHtCVUlMRF9KT0JTfSAtayAke0NIRUNLRkxBR1N9IGhlYWRlcnNjaGVjayBj cGx1c3BsdXNjaGVjayBFWFRSQUZMQUdTPSctZm1heC1lcnJvcnM9MTAnCmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvY2kvY2lfbWFjcG9ydHNfcGFja2FnZXMuc2ggYi9zcmMvdG9vbHMvY2kvY2lfbWFj cG9ydHNfcGFja2FnZXMuc2gKaW5kZXggNjNlOTdiMzdjNzguLjRjNzlmOTBmZWQwIDEwMDc1NQot LS0gYS9zcmMvdG9vbHMvY2kvY2lfbWFjcG9ydHNfcGFja2FnZXMuc2gKKysrIGIvc3JjL3Rvb2xz L2NpL2NpX21hY3BvcnRzX3BhY2thZ2VzLnNoCkBAIC0yMCwxMyArMjAsMjYgQEAgZWNobyAibWFj T1MgbWFqb3IgdmVyc2lvbjogJG1hY29zX21ham9yX3ZlcnNpb24iCiAjIG1hY09TIHJlbGVhc2Uu CiBtYWNwb3J0c19yZWxlYXNlX2xpc3RfdXJsPSJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9z L21hY3BvcnRzL21hY3BvcnRzLWJhc2UvcmVsZWFzZXMiCiBtYWNwb3J0c192ZXJzaW9uX3BhdHRl cm49IjJcLjEwXC4xIgotbWFjcG9ydHNfdXJsPSIkKCBjdXJsIC1zICRtYWNwb3J0c19yZWxlYXNl X2xpc3RfdXJsIHwgZ3JlcCAiXCJodHRwczovL2dpdGh1Yi5jb20vbWFjcG9ydHMvbWFjcG9ydHMt YmFzZS9yZWxlYXNlcy9kb3dubG9hZC92JG1hY3BvcnRzX3ZlcnNpb25fcGF0dGVybi9NYWNQb3J0 cy0kbWFjcG9ydHNfdmVyc2lvbl9wYXR0ZXJuLSRtYWNvc19tYWpvcl92ZXJzaW9uLVtBLVphLXpd KlwucGtnXCIiIHwgc2VkICdzLy4qOiAiLy87cy8iLiovLycgfCBoZWFkIC0xICkiCisjIEF1dGhl bnRpY2F0ZSB0aGUgR2l0SHViIEFQSSByZXF1ZXN0IHdoZW4gYSB0b2tlbiBpcyBhdmFpbGFibGUg KGUuZy4gb24KKyMgR2l0SHViIEFjdGlvbnMpLiBVbmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgc2hh cmUgYSA2MC9oci9JUCByYXRlIGxpbWl0CisjIHdpdGggZXZlcnkgb3RoZXIgam9iIG9uIHRoZSBy dW5uZXIncyBJUCBhbmQgZnJlcXVlbnRseSByZXR1cm4gYW4gZXJyb3IKKyMgSlNPTiwgbGVhdmlu ZyAkbWFjcG9ydHNfdXJsIGVtcHR5IGFuZCBicmVha2luZyB0aGUgc3Vic2VxdWVudCBjdXJsLgor YXV0aF9oZWFkZXI9IiIKK2lmIFsgLW4gIiRHSVRIVUJfVE9LRU4iIF07IHRoZW4KKyAgICBhdXRo X2hlYWRlcj0iQXV0aG9yaXphdGlvbjogQmVhcmVyICRHSVRIVUJfVE9LRU4iCitmaQorbWFjcG9y dHNfdXJsPSIkKCBjdXJsIC1mc1NMICR7YXV0aF9oZWFkZXI6Ky1IICIkYXV0aF9oZWFkZXIifSAi JG1hY3BvcnRzX3JlbGVhc2VfbGlzdF91cmwiIHwgZ3JlcCAiXCJodHRwczovL2dpdGh1Yi5jb20v bWFjcG9ydHMvbWFjcG9ydHMtYmFzZS9yZWxlYXNlcy9kb3dubG9hZC92JG1hY3BvcnRzX3ZlcnNp b25fcGF0dGVybi9NYWNQb3J0cy0kbWFjcG9ydHNfdmVyc2lvbl9wYXR0ZXJuLSRtYWNvc19tYWpv cl92ZXJzaW9uLVtBLVphLXpdKlwucGtnXCIiIHwgc2VkICdzLy4qOiAiLy87cy8iLiovLycgfCBo ZWFkIC0xICkiCiBlY2hvICJNYWNQb3J0cyBwYWNrYWdlIFVSTDogJG1hY3BvcnRzX3VybCIKIAor aWYgWyAteiAiJG1hY3BvcnRzX3VybCIgXTsgdGhlbgorICAgIGVjaG8gImVycm9yOiBjb3VsZCBu b3QgZGV0ZXJtaW5lIE1hY1BvcnRzIHBhY2thZ2UgVVJMIGZvciBtYWNPUyAkbWFjb3NfbWFqb3Jf dmVyc2lvbiAodmVyc2lvbiBwYXR0ZXJuOiAkbWFjcG9ydHNfdmVyc2lvbl9wYXR0ZXJuKSIgMT4m MgorICAgIGV4aXQgMQorZmkKKwogY2FjaGVfZG1nPSJtYWNwb3J0cy5oZnMuZG1nIgogCi1pZiBb ICIkQ0lSUlVTX0NJIiAhPSAidHJ1ZSIgXTsgdGhlbgotICAgIGVjaG8gImV4cGVjdCB0byBiZSBj YWxsZWQgd2l0aGluIGNpcnJ1cy1jaSIgMT4yCitpZiBbICIkQ0lSUlVTX0NJIiAhPSAidHJ1ZSIg XSAmJiBbICIkR0lUSFVCX0FDVElPTlMiICE9ICJ0cnVlIiBdOyB0aGVuCisgICAgZWNobyAiZXhw ZWN0IHRvIGJlIGNhbGxlZCB3aXRoaW4gY2lycnVzLWNpIG9yIGdpdGh1YiBhY3Rpb25zIiAxPjIK ICAgICBleGl0IDEKIGZpCiAKLS0gCjIuNDcuMwoK --0000000000002d72c40652e3c049--