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.98.2) (envelope-from ) id 1xCWO0-00000003qAj-2H7c for pgsql-bugs@arkaria.postgresql.org; Fri, 02 Oct 2026 06:04:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xCWNy-0000000AZrp-2FJf for pgsql-bugs@arkaria.postgresql.org; Fri, 02 Oct 2026 06:04:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xCLXA-00000008PjC-2wyH for pgsql-bugs@lists.postgresql.org; Thu, 01 Oct 2026 18:29:32 +0000 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xCLX5-00000002JbU-2g7B for pgsql-bugs@lists.postgresql.org; Thu, 01 Oct 2026 18:29:32 +0000 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4d04d740cso2700897a12.0 for ; Thu, 01 Oct 2026 11:29:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790879365; x=1791484165; darn=lists.postgresql.org; h=content-type:mime-version:message-id:date:subject:to:from:from:to :cc:subject:date:message-id:reply-to:content-type; bh=eeLIRDQFn8X9PkqL7eR9YCcD2m1xHutQAQMNvptiop0=; b=jcdoI43b+PI0VRHyD2v3sYDqgkz/+r5OBlSYXa7iWDOUTrBsHhYp/OEsb2S3Gi6Qs/ 1SFa7u0mIlvj40dDvjN+3Gkh2GZ0kX8GTHBDpjbSMZ46KOA2OICqOyCWFfBWZsUgmAQa jGTJNyA6kbe+0TfI/+aaZr/gPfRApL0mWiaT7RiwO2aB0snQGY77qznqSrKwQ9srLN6k XONUwWFFRLlHEPLqZO+N5NRMtFzPvF45kb72Bz/H4aJhYAi+9R/mkvv7dhT+yiD0b1F5 JHFZTZH8Qndiujwuqvys5vk7QmaKdceEHPXUqkHOsN9TX+KiwhqLbDJYFLSkw9MrLVGQ nVFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790879365; x=1791484165; h=content-type:mime-version:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=eeLIRDQFn8X9PkqL7eR9YCcD2m1xHutQAQMNvptiop0=; b=zIrDp9DCnFh9CWRGnDNtrf5pEzymE7wIge+Muddt66kJ+TysckEiCh9ZdF8CD0IZBv da4RLy4Iudsd+ShWe6wG7Pfyn31XmxQRi5Xbnl5HHmct/aUFsJnE0hU3YxeWDgVMfxRq b+yU/hhsUEsMUAFdK5k0tdcDABlerhiO2pYtBxT/RJe1nrjoR3UMqPp5cUMEj6sL6a6e b74h0FBYs9jfyon80RNVnTctoo2ZJRMVa5cSdxEQTtNCBriHRr97shE+EH6ONLJw7Qui 0uVCTN/JnOsyc1BNSqoRCEt6GRBvAYQQfnnAuvq+BY5WWLBhCvMLiTj0BiDHw//99Zbe hxVQ== X-Gm-Message-State: AFuF++kNQlY4gNkemw0aM809zLruQuLts16gCh+K5yDScWNTJrkTBPou 793Io62Mzj1YEPSDzrFbzC4bnmPO9Df5mK4vTFZIRC3FncQOtaBJuO5AzFQZb2n6 X-Gm-Gg: AYBFou3Z1H9cUxSn5wTdhKk0ScHbZibcKaiWmc1OeDSJ8isUtwdXGiCU7DB/3cUAqHi ChqdZhVN8rXC9XVAWLuM6psKkz58TXYj4lITlDaD7OB2978LVISlr+W51frOZFpamQkG26r9617 d7wF87vzsYbKMfNvAKavl8AT7F8/kk7trw9j9uRSq8WcIbDLq/bl1Q5scmcCYEWKadcRjl09gcV BEggr7s8NIAD+v2ac2Suok/rFFaPcWWN8YvvzGw2hkbspxdtjCeNo0fKv/Lki/pGsIsXQX553pS KE0hawBL4mP/GgTU1ucdbYFJJh7j+A4Dp320PJfk1chPMFmIXjRbHfOmJHPapCdlB57h1C2KBkR XGLXVtNYjhvI58GvKu0uG9uRGg93xpL+6eZOgfG/P/bYVDxk47iZH4o4c6wHhHKaKfL5MQHvRQA lLtVPQ0D746kvysjBCtHEiT5eBcK2ex5NZLupNKJoo95zj0Vy6xA9D38s2DjL3p4g6aycQBtI33 oP84LHv17UefmRNcdX3N+W1kyk6HkS2n06v7RIllnkCJHd56QWCyUd0rjDgbyExSqFK7cXc2++4 y/zCxuqs/PmhkPAN2GxC1s9KSaxWeQBvoQXpokWYt/w2DNdEceW7Zvnb X-Received: by 2002:a05:6a21:ed0d:b0:3e0:b1b2:2af9 with SMTP id adf61e73a8af0-3e0bd1945a8mr220136637.60.1790879364353; Thu, 01 Oct 2026 11:29:24 -0700 (PDT) Received: from 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa ([2001:56a:f381:9100:84bb:28a3:1ab7:b55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-88b0d152432sm55316b3a.53.2026.10.01.11.29.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Oct 2026 11:29:23 -0700 (PDT) From: Samuel Olaoye To: pgsql-bugs@lists.postgresql.org Subject: Wrong results: hashed SubPlan referenced twice after OR-qual extraction reuses a stale hash table (13 to 19beta4) Date: Thu, 01 Oct 2026 12:29:22 -0600 Message-ID: <179087936257.78721.1170374394656748858@mail.gmail.com> X-Olaoye-Key: 01-pgsql-bugs MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2301495846308879773==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============2301495846308879773== Content-Type: multipart/alternative; boundary="===============7344596780449859439==" --===============7344596780449859439== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hello, We found a wrong-results bug at Bolrach Technologies while testing an access = check that runs once per row of a sessions table. On a fresh database with de= fault settings, the query below returns false for a row where the answer is t= rue. Adding OFFSET 0 to the inner EXISTS gives the right answer. Viewer 502 follows channel 2, yet Q1 returns (2, f). Q2 is the same query wit= h OFFSET 0 on the inner EXISTS, and it returns (2, t). We reproduced it on the latest release of each major version from 13 to 18, a= nd on 19beta4: x86_64 Linux: 18.6 (Ubuntu 26.04 host, kernel 7.0.0-30) aarch64 Linux: 13.23, 14.24, 15.19, 16.15, 17.11, 18.6 and 19beta4 (Docker on= macOS 26.6) Builds: official postgres Docker images, Debian pgdg packages, default config= uration Reproduction create table t_channels (id int primary key, owner_id int not null, visibilit= y text not null); create table t_posts (id int primary key, channel_id int not null, status tex= t not null); create table t_follows (channel_id int not null, user_id int not null, primar= y key (channel_id, user_id)); create table t_sessions (id int primary key, post_id int not null, viewer_id = int not null); insert into t_channels values (1, 100, 'private'), (2, 200, 'private'); insert into t_posts values (10, 1, 'published'), (20, 2, 'published'); insert into t_follows values (1, 501), (2, 502); insert into t_sessions values (1, 10, 501), (2, 20, 502); analyze t_channels, t_posts, t_follows, t_sessions; -- Q1: each session's viewer follows the channel of that session's post, so b= oth rows should be t select s.id, exists (select 1 from t_posts p join t_channels c on c.id =3D p.channel_id where p.id =3D s.post_id and (c.owner_id =3D s.viewer_id or (p.status =3D 'published' and (c.visibility =3D 'public' or exists (select 1 from t_follows f where f.channel_id =3D c.id and f.user= _id =3D s.viewer_id))))) as allowed from t_sessions s order by s.id; -- Q2: identical, with OFFSET 0 on the inner EXISTS select s.id, exists (select 1 from t_posts p join t_channels c on c.id =3D p.channel_id where p.id =3D s.post_id and (c.owner_id =3D s.viewer_id or (p.status =3D 'published' and (c.visibility =3D 'public' or exists (select 1 from t_follows f where f.channel_id =3D c.id and f.user= _id =3D s.viewer_id offset 0))))) as allowed from t_sessions s order by s.id; Result on 18.6 x86_64 (all the versions above give the same rows) Q1: id | allowed ----+--------- 1 | t 2 | f <- wrong, viewer 502 follows channel 2 Q2: id | allowed ----+--------- 1 | t 2 | t EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, TIMING OFF, SUMMARY OFF) of Q1 on 18.6 = x86_64 Sort (actual rows=3D2.00 loops=3D1) Output: s.id, (EXISTS(SubPlan 3)) Sort Key: s.id Sort Method: quicksort Memory: 25kB Buffers: shared hit=3D8 -> Seq Scan on public.t_sessions s (actual rows=3D2.00 loops=3D1) Output: s.id, EXISTS(SubPlan 3) Buffers: shared hit=3D8 SubPlan 3 -> Hash Join (actual rows=3D0.50 loops=3D2) Inner Unique: true Hash Cond: (p.channel_id =3D c.id) Join Filter: ((c.owner_id =3D s.viewer_id) OR ((p.status =3D = 'published'::text) AND ((c.visibility =3D 'public'::text) OR (ANY (c.id =3D (= hashed SubPlan 2).col1))))) Rows Removed by Join Filter: 0 Buffers: shared hit=3D7 -> Seq Scan on public.t_posts p (actual rows=3D1.00 loops=3D= 2) Output: p.id, p.channel_id, p.status Filter: (p.id =3D s.post_id) Rows Removed by Filter: 0 Buffers: shared hit=3D2 -> Hash (actual rows=3D1.00 loops=3D2) Output: c.id, c.owner_id, c.visibility Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=3D4 -> Seq Scan on public.t_channels c (actual rows=3D1.00= loops=3D2) Output: c.id, c.owner_id, c.visibility Filter: ((c.owner_id =3D s.viewer_id) OR (c.visib= ility =3D 'public'::text) OR (ANY (c.id =3D (hashed SubPlan 2).col1))) Rows Removed by Filter: 1 Buffers: shared hit=3D4 SubPlan 2 -> Seq Scan on public.t_follows f (actual rows= =3D1.00 loops=3D3) Output: f.channel_id Filter: (f.user_id =3D s.viewer_id) Rows Removed by Filter: 1 Buffers: shared hit=3D3 Our current hypothesis The reproduction shows the wrong result. The mechanism below is our reading o= f the plan and of the executor source, and we have not confirmed it in a debu= gger. SubPlan 2 is in the plan twice. The planner extracts a restriction (owner OR = public OR EXISTS) from the OR clause and applies it to the t_channels scan, w= hile keeping the original OR as the Hash Join's Join Filter, so the same hash= ed SubPlan sits in both quals. The direct correlation on c.id has become the = hash lookup, while the outer s.viewer_id dependency stays inside the planned = subquery as a PARAM_EXEC parameter. As far as we can tell from the executor initialization path, each of the two = references gets its own SubPlanState, and so its own hash table, but ExecInit= SubPlan resolves the same plan_id to one shared PlanState for the t_follows s= can. ExecSubPlan rebuilds a table when node->hashtable is NULL or planstate->= chgParam is not NULL, and buildSubPlanHash calls ExecReScan on that shared pl= anstate, which clears chgParam. For session 1 (viewer 501), the scan Filter builds its table, the owner check= fails in the Join Filter, and the Join Filter copy builds a second table for= the same viewer because its hashtable is still NULL. That row comes out righ= t. Session 2 (viewer 502) changes the parameter, which sets chgParam on the shar= ed planstate. The scan Filter sees it and rebuilds for 502, and the ExecReSca= n inside that rebuild clears chgParam. When the Join Filter copy runs next, i= ts hashtable is not NULL and chgParam is now clear, so it appears to reuse th= e table built for viewer 501. Channel 2 is not in that table, so the row come= s out false. The t_follows scan shows loops=3D3, where two outer rows and two= references would need four builds. Checks that support this (pg_hashed_subplan_variations.sql, all on 18.6) V1: With the EXISTS written once (owner OR public OR EXISTS), the plan has on= e reference and both rows are t. V2: The Q1 rule called once per session with the viewer as a bind parameter r= eturns t both times. V3: Q1 limited to session 2 alone returns t. V4: Q1 with the outer rows in reverse order returns (2, t) and (1, f). The wr= ong answer moves to whichever row comes second. We searched the release notes and the list archives and found nothing matchin= g. The 2020 thread "Broken resetting of subplan hash tables" is about the sam= e area of nodeSubplan.c, but it dealt with how the hash tables were reset, no= t with two SubPlanStates sharing one PlanState's chgParam. Anyone who hits this can add OFFSET 0 to the inner EXISTS, or evaluate the ru= le once per outer row with bound parameters. Three files are attached. pg_hashed_subplan_repro.sql is the setup with Q1, Q= 2 and the EXPLAIN, and it runs with psql -X -f. pg_hashed_subplan_variations.= sql holds V1 to V4. pg_hashed_subplan_results.txt has the full psql output fr= om every version listed above, plus the variations run. Thanks. Samuel Olaoye Bolrach Technologies Attached: pg_hashed_subplan_repro.sql, pg_hashed_subplan_variations.sql, pg_h= ashed_subplan_results.txt --===============7344596780449859439== Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0

Hello,

We found a wrong-results bug at Bolrach Techno= logies while testing an access check that runs once per row of a sessions tab= le. On a fresh database with default settings, the query below returns false = for a row where the answer is true. Adding OFFSET 0 to the inner EXISTS gives= the right answer.

Viewer 502 follows channel 2, yet Q1 returns (2, f). Q= 2 is the same query with OFFSET 0 on the inner EXISTS, and it returns (2, t).=

We reproduced it on the latest release of each= major version from 13 to 18, and on 19beta4:

Builds<= /tr>
x86_64 Linux18.6 (Ubuntu 26.04 host, kernel 7.0.0-30)
aarch= 64 Linux13.23, 14.24,= 15.19, 16.15, 17.11, 18.6 and 19beta4 (Docker on macOS 26.6)
offic= ial postgres Docker images, Debian pgdg packages, default configuration

Reproduction

create table t_channels (id int primary key=
, owner_id int not null, visibility text not null);
create table t_posts (id int primary key, channel_id int not null, status tex=
t not null);
create table t_follows (channel_id int not null, user_id int not null, primar=
y key (channel_id, user_id));
create table t_sessions (id int primary key, post_id int not null, viewer_id =
int not null);
insert into t_channels values (1, 100, 'private'), (2, 200, 'private');
insert into t_posts values (10, 1, 'published'), (20, 2, 'published');
insert into t_follows values (1, 501), (2, 502);
insert into t_sessions values (1, 10, 501), (2, 20, 502);
analyze t_channels, t_posts, t_follows, t_sessions;
-- Q1: each session's viewer follows the ch=
annel of that session's post, so both rows should be t
select s.id,
  exists (select 1 from t_posts p join t_channels c on c.id =3D p.channel_id
           where p.id =3D s.post_id
             and (c.owner_id =3D s.viewer_id
                  or (p.status =3D 'published'
                      and (c.visibility =3D 'public'
                           or exists (select 1 from t_follows f
                                       where f.channel_id =3D c.id and f.user=
_id =3D s.viewer_id))))) as allowed
  from t_sessions s order by s.id;
-- Q2: identical, with OFFSET 0 on the inne=
r EXISTS
select s.id,
  exists (select 1 from t_posts p join t_channels c on c.id =3D p.channel_id
           where p.id =3D s.post_id
             and (c.owner_id =3D s.viewer_id
                  or (p.status =3D 'published'
                      and (c.visibility =3D 'public'
                           or exists (select 1 from t_follows f
                                       where f.channel_id =3D c.id and f.user=
_id =3D s.viewer_id offset 0))))) as allowed
  from t_sessions s order by s.id;

Result on 18.6 x86_64 (all the versions= above give the same rows)

Q1:
 id | allowed
----+---------
  1 | t
  2 | f        <- wrong, viewer 502 follows channel 2

Q2:
 id | allowed
----+---------
  1 | t
  2 | t

EXPLAIN (ANALYZE, VERBOSE, COSTS OFF, TIMIN= G OFF, SUMMARY OFF) of Q1 on 18.6 x86_64

Sort (actual rows=3D2.00 loops=3D1)
  Output: s.id, (EXISTS(SubPlan 3))
  Sort Key: s.id
  Sort Method: quicksort  Memory: 25kB
  Buffers: shared hit=3D8
  ->  Seq Scan on public.t_sessions s (actual rows=3D2.00 loops=3D1)
        Output: s.id, EXISTS(SubPlan 3)
        Buffers: shared hit=3D8
        SubPlan 3
          ->  Hash Join (actual rows=3D0.50 loops=3D2)
                Inner Unique: true
                Hash Cond: (p.channel_id =3D c.id)
                Join Filter: ((c.owner_id =3D s.viewer_id) OR ((p.status =3D =
'published'::text) AND ((c.visibility =3D 'public'::text) OR (ANY (c.id =3D (=
hashed SubPlan 2).col1)))))
                Rows Removed by Join Filter: 0
                Buffers: shared hit=3D7
                ->  Seq Scan on public.t_posts p (actual rows=3D1.00 loops=
=3D2)
                      Output: p.id, p.channel_id, p.status
                      Filter: (p.id =3D s.post_id)
                      Rows Removed by Filter: 0
                      Buffers: shared hit=3D2
                ->  Hash (actual rows=3D1.00 loops=3D2)
                      Output: c.id, c.owner_id, c.visibility
                      Buckets: 1024  Batches: 1  Memory Usage: 9kB
                      Buffers: shared hit=3D4
                      ->  Seq Scan on public.t_channels c (actual rows=3D1=
.00 loops=3D2)
                            Output: c.id, c.owner_id, c.visibility
                            Filter: ((c.owner_id =3D s.viewer_id) OR (c.visib=
ility =3D 'public'::text) OR (ANY (c.id =3D (hashed SubPlan 2).col1)))
                            Rows Removed by Filter: 1
                            Buffers: shared hit=3D4
                            SubPlan 2
                              ->  Seq Scan on public.t_follows f (actual r=
ows=3D1.00 loops=3D3)
                                    Output: f.channel_id
                                    Filter: (f.user_id =3D s.viewer_id)
                                    Rows Removed by Filter: 1
                                    Buffers: shared hit=3D3

Our current hypothesis

The reproduction shows the wrong result. The m= echanism below is our reading of the plan and of the executor source, and we = have not confirmed it in a debugger.

SubPlan 2 is in the plan twice. The planner ex= tracts a restriction (owner OR public OR EXISTS) from the OR clause and appli= es it to the t_channels scan, while keeping the original OR as the Hash Join'= s Join Filter, so the same hashed SubPlan sits in both quals. The direct corr= elation on c.id has become the hash lookup, while the outer s.viewer_id depen= dency stays inside the planned subquery as a PARAM_EXEC parameter.

As far as we can tell from the executor initia= lization path, each of the two references gets its own SubPlanState, and so i= ts own hash table, but ExecInitSubPlan resolves the same plan_id to one share= d PlanState for the t_follows scan. ExecSubPlan rebuilds a table when node-&g= t;hashtable is NULL or planstate->chgParam is not NULL, and buildSubPlanHa= sh calls ExecReScan on that shared planstate, which clears chgParam.

For session 1 (viewer 501), the scan Filter bu= ilds its table, the owner check fails in the Join Filter, and the Join Filter= copy builds a second table for the same viewer because its hashtable is stil= l NULL. That row comes out right.

Session 2 (viewer 502) changes the parameter, = which sets chgParam on the shared planstate. The scan Filter sees it and rebu= ilds for 502, and the ExecReScan inside that rebuild clears chgParam. When th= e Join Filter copy runs next, its hashtable is not NULL and chgParam is now c= lear, so it appears to reuse the table built for viewer 501. Channel 2 is not= in that table, so the row comes out false. The t_follows scan shows loops=3D= 3, where two outer rows and two references would need four builds.

Checks that support this (pg_hashed_sub= plan_variations.sql, all on 18.6)

<= /table>

We searched the release notes and the list arc= hives and found nothing matching. The 2020 thread "Broken resetting of subpla= n hash tables" is about the same area of nodeSubplan.c, but it dealt with how= the hash tables were reset, not with two SubPlanStates sharing one PlanState= 's chgParam.

Anyone who hits this can add OFFSET 0 to the i= nner EXISTS, or evaluate the rule once per outer row with bound parameters.

Three files are attached. pg_hashed_subplan_re= pro.sql is the setup with Q1, Q2 and the EXPLAIN, and it runs with psql -X -f= . pg_hashed_subplan_variations.sql holds V1 to V4. pg_hashed_subplan_results.= txt has the full psql output from every version listed above, plus the variat= ions run.

Thanks.

Samuel Olaoye
Bolrach Technologies

Attached: pg_hashed_subpla= n_repro.sql, pg_hashed_subplan_variations.sql, pg_hashed_subplan_results.txt<= /i>

--===============7344596780449859439==-- --===============2301495846308879773== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_hashed_subplan_repro.sql" MIME-Version: 1.0 XHBzZXQgcGFnZXIgb2ZmCnNlbGVjdCB2ZXJzaW9uKCk7CmNyZWF0ZSB0YWJsZSB0X2NoYW5uZWxz IChpZCBpbnQgcHJpbWFyeSBrZXksIG93bmVyX2lkIGludCBub3QgbnVsbCwgdmlzaWJpbGl0eSB0 ZXh0IG5vdCBudWxsKTsKY3JlYXRlIHRhYmxlIHRfcG9zdHMgKGlkIGludCBwcmltYXJ5IGtleSwg Y2hhbm5lbF9pZCBpbnQgbm90IG51bGwsIHN0YXR1cyB0ZXh0IG5vdCBudWxsKTsKY3JlYXRlIHRh YmxlIHRfZm9sbG93cyAoY2hhbm5lbF9pZCBpbnQgbm90IG51bGwsIHVzZXJfaWQgaW50IG5vdCBu dWxsLCBwcmltYXJ5IGtleSAoY2hhbm5lbF9pZCwgdXNlcl9pZCkpOwpjcmVhdGUgdGFibGUgdF9z ZXNzaW9ucyAoaWQgaW50IHByaW1hcnkga2V5LCBwb3N0X2lkIGludCBub3QgbnVsbCwgdmlld2Vy X2lkIGludCBub3QgbnVsbCk7Cmluc2VydCBpbnRvIHRfY2hhbm5lbHMgdmFsdWVzICgxLCAxMDAs ICdwcml2YXRlJyksICgyLCAyMDAsICdwcml2YXRlJyk7Cmluc2VydCBpbnRvIHRfcG9zdHMgdmFs dWVzICgxMCwgMSwgJ3B1Ymxpc2hlZCcpLCAoMjAsIDIsICdwdWJsaXNoZWQnKTsKaW5zZXJ0IGlu dG8gdF9mb2xsb3dzIHZhbHVlcyAoMSwgNTAxKSwgKDIsIDUwMik7Cmluc2VydCBpbnRvIHRfc2Vz c2lvbnMgdmFsdWVzICgxLCAxMCwgNTAxKSwgKDIsIDIwLCA1MDIpOwphbmFseXplIHRfY2hhbm5l bHMsIHRfcG9zdHMsIHRfZm9sbG93cywgdF9zZXNzaW9uczsKClxlY2hvICc9PSBRMTogZWFjaCBz ZXNzaW9uIHZpZXdlciBmb2xsb3dzIGl0cyBvd24gY2hhbm5lbDsgZXhwZWN0ZWQgKDEsdCksICgy LHQpJwpzZWxlY3Qgcy5pZCwKICBleGlzdHMgKHNlbGVjdCAxIGZyb20gdF9wb3N0cyBwIGpvaW4g dF9jaGFubmVscyBjIG9uIGMuaWQgPSBwLmNoYW5uZWxfaWQKICAgICAgICAgICB3aGVyZSBwLmlk ID0gcy5wb3N0X2lkCiAgICAgICAgICAgICBhbmQgKGMub3duZXJfaWQgPSBzLnZpZXdlcl9pZAog ICAgICAgICAgICAgICAgICBvciAocC5zdGF0dXMgPSAncHVibGlzaGVkJwogICAgICAgICAgICAg ICAgICAgICAgYW5kIChjLnZpc2liaWxpdHkgPSAncHVibGljJwogICAgICAgICAgICAgICAgICAg ICAgICAgICBvciBleGlzdHMgKHNlbGVjdCAxIGZyb20gdF9mb2xsb3dzIGYgd2hlcmUgZi5jaGFu bmVsX2lkID0gYy5pZCBhbmQgZi51c2VyX2lkID0gcy52aWV3ZXJfaWQpKSkpKSBhcyBhbGxvd2Vk CiAgZnJvbSB0X3Nlc3Npb25zIHMgb3JkZXIgYnkgcy5pZDsKClxlY2hvICc9PSBRMjogaWRlbnRp Y2FsIGV4Y2VwdCBPRkZTRVQgMCBvbiB0aGUgaW5uZXIgRVhJU1RTJwpzZWxlY3Qgcy5pZCwKICBl eGlzdHMgKHNlbGVjdCAxIGZyb20gdF9wb3N0cyBwIGpvaW4gdF9jaGFubmVscyBjIG9uIGMuaWQg PSBwLmNoYW5uZWxfaWQKICAgICAgICAgICB3aGVyZSBwLmlkID0gcy5wb3N0X2lkCiAgICAgICAg ICAgICBhbmQgKGMub3duZXJfaWQgPSBzLnZpZXdlcl9pZAogICAgICAgICAgICAgICAgICBvciAo cC5zdGF0dXMgPSAncHVibGlzaGVkJwogICAgICAgICAgICAgICAgICAgICAgYW5kIChjLnZpc2li aWxpdHkgPSAncHVibGljJwogICAgICAgICAgICAgICAgICAgICAgICAgICBvciBleGlzdHMgKHNl bGVjdCAxIGZyb20gdF9mb2xsb3dzIGYgd2hlcmUgZi5jaGFubmVsX2lkID0gYy5pZCBhbmQgZi51 c2VyX2lkID0gcy52aWV3ZXJfaWQgb2Zmc2V0IDApKSkpKSBhcyBhbGxvd2VkCiAgZnJvbSB0X3Nl c3Npb25zIHMgb3JkZXIgYnkgcy5pZDsKClxlY2hvICc9PSBRMSBwbGFuJwpleHBsYWluIChhbmFs eXplLCB2ZXJib3NlLCBjb3N0cyBvZmYsIHRpbWluZyBvZmYsIHN1bW1hcnkgb2ZmKQpzZWxlY3Qg cy5pZCwKICBleGlzdHMgKHNlbGVjdCAxIGZyb20gdF9wb3N0cyBwIGpvaW4gdF9jaGFubmVscyBj IG9uIGMuaWQgPSBwLmNoYW5uZWxfaWQKICAgICAgICAgICB3aGVyZSBwLmlkID0gcy5wb3N0X2lk CiAgICAgICAgICAgICBhbmQgKGMub3duZXJfaWQgPSBzLnZpZXdlcl9pZAogICAgICAgICAgICAg ICAgICBvciAocC5zdGF0dXMgPSAncHVibGlzaGVkJwogICAgICAgICAgICAgICAgICAgICAgYW5k IChjLnZpc2liaWxpdHkgPSAncHVibGljJwogICAgICAgICAgICAgICAgICAgICAgICAgICBvciBl eGlzdHMgKHNlbGVjdCAxIGZyb20gdF9mb2xsb3dzIGYgd2hlcmUgZi5jaGFubmVsX2lkID0gYy5p ZCBhbmQgZi51c2VyX2lkID0gcy52aWV3ZXJfaWQpKSkpKSBhcyBhbGxvd2VkCiAgZnJvbSB0X3Nl c3Npb25zIHMgb3JkZXIgYnkgcy5pZDsK --===============2301495846308879773== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_hashed_subplan_variations.sql" MIME-Version: 1.0 XHBzZXQgcGFnZXIgb2ZmCnNlbGVjdCB2ZXJzaW9uKCk7CmNyZWF0ZSB0YWJsZSB0X2NoYW5uZWxz IChpZCBpbnQgcHJpbWFyeSBrZXksIG93bmVyX2lkIGludCBub3QgbnVsbCwgdmlzaWJpbGl0eSB0 ZXh0IG5vdCBudWxsKTsKY3JlYXRlIHRhYmxlIHRfcG9zdHMgKGlkIGludCBwcmltYXJ5IGtleSwg Y2hhbm5lbF9pZCBpbnQgbm90IG51bGwsIHN0YXR1cyB0ZXh0IG5vdCBudWxsKTsKY3JlYXRlIHRh YmxlIHRfZm9sbG93cyAoY2hhbm5lbF9pZCBpbnQgbm90IG51bGwsIHVzZXJfaWQgaW50IG5vdCBu dWxsLCBwcmltYXJ5IGtleSAoY2hhbm5lbF9pZCwgdXNlcl9pZCkpOwpjcmVhdGUgdGFibGUgdF9z ZXNzaW9ucyAoaWQgaW50IHByaW1hcnkga2V5LCBwb3N0X2lkIGludCBub3QgbnVsbCwgdmlld2Vy X2lkIGludCBub3QgbnVsbCk7Cmluc2VydCBpbnRvIHRfY2hhbm5lbHMgdmFsdWVzICgxLCAxMDAs ICdwcml2YXRlJyksICgyLCAyMDAsICdwcml2YXRlJyk7Cmluc2VydCBpbnRvIHRfcG9zdHMgdmFs dWVzICgxMCwgMSwgJ3B1Ymxpc2hlZCcpLCAoMjAsIDIsICdwdWJsaXNoZWQnKTsKaW5zZXJ0IGlu dG8gdF9mb2xsb3dzIHZhbHVlcyAoMSwgNTAxKSwgKDIsIDUwMik7Cmluc2VydCBpbnRvIHRfc2Vz c2lvbnMgdmFsdWVzICgxLCAxMCwgNTAxKSwgKDIsIDIwLCA1MDIpOwphbmFseXplIHRfY2hhbm5l bHMsIHRfcG9zdHMsIHRfZm9sbG93cywgdF9zZXNzaW9uczsKClxlY2hvICc9PSBWMTogRVhJU1RT IHJlZmVyZW5jZWQgb25seSBvbmNlIChubyBPUi1xdWFsIGV4dHJhY3Rpb24gZHVwbGljYXRlKTsg ZXhwZWN0ZWQgKDEsdCksICgyLHQpJwpzZWxlY3Qgcy5pZCwKICBleGlzdHMgKHNlbGVjdCAxIGZy b20gdF9wb3N0cyBwIGpvaW4gdF9jaGFubmVscyBjIG9uIGMuaWQgPSBwLmNoYW5uZWxfaWQKICAg ICAgICAgICB3aGVyZSBwLmlkID0gcy5wb3N0X2lkCiAgICAgICAgICAgICBhbmQgKGMub3duZXJf aWQgPSBzLnZpZXdlcl9pZAogICAgICAgICAgICAgICAgICBvciBjLnZpc2liaWxpdHkgPSAncHVi bGljJwogICAgICAgICAgICAgICAgICBvciBleGlzdHMgKHNlbGVjdCAxIGZyb20gdF9mb2xsb3dz IGYgd2hlcmUgZi5jaGFubmVsX2lkID0gYy5pZCBhbmQgZi51c2VyX2lkID0gcy52aWV3ZXJfaWQp KSkgYXMgYWxsb3dlZAogIGZyb20gdF9zZXNzaW9ucyBzIG9yZGVyIGJ5IHMuaWQ7CgpcZWNobyAn PT0gVjI6IHNhbWUgcnVsZSBhcyBRMSwgdmlld2VyIHBhc3NlZCBhcyBhIGJpbmQgcGFyYW1ldGVy LCBvbmUgY2FsbCBwZXIgc2Vzc2lvbjsgZXhwZWN0ZWQgdCB0aGVuIHQnCnByZXBhcmUgYWxsb3dl ZChpbnQsIGludCkgYXMKc2VsZWN0IGV4aXN0cyAoc2VsZWN0IDEgZnJvbSB0X3Bvc3RzIHAgam9p biB0X2NoYW5uZWxzIGMgb24gYy5pZCA9IHAuY2hhbm5lbF9pZAogICAgICAgICAgICAgICAgd2hl cmUgcC5pZCA9ICQxCiAgICAgICAgICAgICAgICAgIGFuZCAoYy5vd25lcl9pZCA9ICQyCiAgICAg ICAgICAgICAgICAgICAgICAgb3IgKHAuc3RhdHVzID0gJ3B1Ymxpc2hlZCcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgYW5kIChjLnZpc2liaWxpdHkgPSAncHVibGljJwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9yIGV4aXN0cyAoc2VsZWN0IDEgZnJvbSB0X2ZvbGxvd3MgZiB3 aGVyZSBmLmNoYW5uZWxfaWQgPSBjLmlkIGFuZCBmLnVzZXJfaWQgPSAkMikpKSkpIGFzIGFsbG93 ZWQ7CmV4ZWN1dGUgYWxsb3dlZCgxMCwgNTAxKTsKZXhlY3V0ZSBhbGxvd2VkKDIwLCA1MDIpOwoK XGVjaG8gJz09IFYzOiBRMSByZXN0cmljdGVkIHRvIHNlc3Npb24gMiBhbG9uZSAoc2luZ2xlIG91 dGVyIHJvdyk7IGV4cGVjdGVkIHQnCnNlbGVjdCBzLmlkLAogIGV4aXN0cyAoc2VsZWN0IDEgZnJv bSB0X3Bvc3RzIHAgam9pbiB0X2NoYW5uZWxzIGMgb24gYy5pZCA9IHAuY2hhbm5lbF9pZAogICAg ICAgICAgIHdoZXJlIHAuaWQgPSBzLnBvc3RfaWQKICAgICAgICAgICAgIGFuZCAoYy5vd25lcl9p ZCA9IHMudmlld2VyX2lkCiAgICAgICAgICAgICAgICAgIG9yIChwLnN0YXR1cyA9ICdwdWJsaXNo ZWQnCiAgICAgICAgICAgICAgICAgICAgICBhbmQgKGMudmlzaWJpbGl0eSA9ICdwdWJsaWMnCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGV4aXN0cyAoc2VsZWN0IDEgZnJvbSB0X2ZvbGxv d3MgZiB3aGVyZSBmLmNoYW5uZWxfaWQgPSBjLmlkIGFuZCBmLnVzZXJfaWQgPSBzLnZpZXdlcl9p ZCkpKSkpIGFzIGFsbG93ZWQKICBmcm9tIHRfc2Vzc2lvbnMgcyB3aGVyZSBzLmlkID0gMjsKClxl Y2hvICc9PSBWNDogUTEgd2l0aCB0aGUgb3V0ZXIgcm93cyBpbiByZXZlcnNlIG9yZGVyOyBleHBl Y3RlZCAoMix0KSwgKDEsdCknCnNlbGVjdCBzLmlkLAogIGV4aXN0cyAoc2VsZWN0IDEgZnJvbSB0 X3Bvc3RzIHAgam9pbiB0X2NoYW5uZWxzIGMgb24gYy5pZCA9IHAuY2hhbm5lbF9pZAogICAgICAg ICAgIHdoZXJlIHAuaWQgPSBzLnBvc3RfaWQKICAgICAgICAgICAgIGFuZCAoYy5vd25lcl9pZCA9 IHMudmlld2VyX2lkCiAgICAgICAgICAgICAgICAgIG9yIChwLnN0YXR1cyA9ICdwdWJsaXNoZWQn CiAgICAgICAgICAgICAgICAgICAgICBhbmQgKGMudmlzaWJpbGl0eSA9ICdwdWJsaWMnCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9yIGV4aXN0cyAoc2VsZWN0IDEgZnJvbSB0X2ZvbGxvd3Mg ZiB3aGVyZSBmLmNoYW5uZWxfaWQgPSBjLmlkIGFuZCBmLnVzZXJfaWQgPSBzLnZpZXdlcl9pZCkp KSkpIGFzIGFsbG93ZWQKICBmcm9tIChzZWxlY3QgKiBmcm9tIHRfc2Vzc2lvbnMgb3JkZXIgYnkg aWQgZGVzYyBvZmZzZXQgMCkgczsK --===============2301495846308879773== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_hashed_subplan_results.txt" MIME-Version: 1.0 cHNxbCBvdXRwdXQgZm9yIHBnX2hhc2hlZF9zdWJwbGFuX3JlcHJvLnNxbCBhbmQgcGdfaGFzaGVk X3N1YnBsYW5fdmFyaWF0aW9ucy5zcWwKRWFjaCBydW46IGEgZnJlc2ggb2ZmaWNpYWwgcG9zdGdy ZXMgRG9ja2VyIGltYWdlLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIHJ1biBhczogcHNxbCAtWCAt diBPTl9FUlJPUl9TVE9QPTEgLWYgPGZpbGU+CkV4cGVjdGVkIGluIFExOiAoMSx0KSBhbmQgKDIs dCkuIEV2ZXJ5IHZlcnNpb24gYmVsb3cgcmV0dXJucyAoMixmKSBpbiBRMSBhbmQgdGhlIGNvcnJl Y3QgKDIsdCkgaW4gUTIuCgpIb3N0czoKICB4ODZfNjQ6IFVidW50dSAyNi4wNC4xIHNlcnZlciwg a2VybmVsIDcuMC4wLTMwLCBEb2NrZXIgMjkuOC4yCiAgYWFyY2g2NDogRG9ja2VyIDI5LjcuMiBv biBtYWNPUyAyNi42IChBcHBsZSBNMyBNYXgpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPT0gcGdfaGFzaGVkX3N1YnBs YW5fcmVwcm8uc3FsIG9uIFBvc3RncmVTUUwgMTguNiAoeDg2XzY0KQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUGFnZXIg dXNhZ2UgaXMgb2ZmLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogUG9zdGdyZVNRTCAxOC42IChEZWJpYW4gMTguNi0xLnBnZGcx MysyKSBvbiB4ODZfNjQtcGMtbGludXgtZ251LCBjb21waWxlZCBieSBnY2MgKERlYmlhbiAxNC4y LjAtMTkpIDE0LjIuMCwgNjQtYml0CigxIHJvdykKCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUK Q1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpJTlNFUlQgMCAyCklOU0VSVCAwIDIKSU5TRVJUIDAg MgpJTlNFUlQgMCAyCkFOQUxZWkUKPT0gUTE6IGVhY2ggc2Vzc2lvbiB2aWV3ZXIgZm9sbG93cyBp dHMgb3duIGNoYW5uZWw7IGV4cGVjdGVkICgxLHQpLCAoMix0KQogaWQgfCBhbGxvd2VkIAotLS0t Ky0tLS0tLS0tLQogIDEgfCB0CiAgMiB8IGYKKDIgcm93cykKCj09IFEyOiBpZGVudGljYWwgZXhj ZXB0IE9GRlNFVCAwIG9uIHRoZSBpbm5lciBFWElTVFMKIGlkIHwgYWxsb3dlZCAKLS0tLSstLS0t LS0tLS0KICAxIHwgdAogIDIgfCB0CigyIHJvd3MpCgo9PSBRMSBwbGFuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU29y dCAoYWN0dWFsIHJvd3M9Mi4wMCBsb29wcz0xKQogICBPdXRwdXQ6IHMuaWQsIChFWElTVFMoU3Vi UGxhbiAzKSkKICAgU29ydCBLZXk6IHMuaWQKICAgU29ydCBNZXRob2Q6IHF1aWNrc29ydCAgTWVt b3J5OiAyNWtCCiAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9OAogICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLnRfc2Vzc2lvbnMgcyAoYWN0dWFsIHJvd3M9Mi4wMCBsb29wcz0xKQogICAgICAgICBPdXRw dXQ6IHMuaWQsIEVYSVNUUyhTdWJQbGFuIDMpCiAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 OAogICAgICAgICBTdWJQbGFuIDMKICAgICAgICAgICAtPiAgSGFzaCBKb2luIChhY3R1YWwgcm93 cz0wLjUwIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgSW5uZXIgVW5pcXVlOiB0cnVlCiAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAocC5jaGFubmVsX2lkID0gYy5pZCkKICAgICAgICAgICAg ICAgICBKb2luIEZpbHRlcjogKChjLm93bmVyX2lkID0gcy52aWV3ZXJfaWQpIE9SICgocC5zdGF0 dXMgPSAncHVibGlzaGVkJzo6dGV4dCkgQU5EICgoYy52aXNpYmlsaXR5ID0gJ3B1YmxpYyc6OnRl eHQpIE9SIChBTlkgKGMuaWQgPSAoaGFzaGVkIFN1YlBsYW4gMikuY29sMSkpKSkpCiAgICAgICAg ICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEpvaW4gRmlsdGVyOiAwCiAgICAgICAgICAgICAgICAg QnVmZmVyczogc2hhcmVkIGhpdD03CiAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy50X3Bvc3RzIHAgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MikKICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHAuaWQsIHAuY2hhbm5lbF9pZCwgcC5zdGF0dXMKICAgICAgICAgICAg ICAgICAgICAgICBGaWx0ZXI6IChwLmlkID0gcy5wb3N0X2lkKQogICAgICAgICAgICAgICAgICAg ICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6IDAKICAgICAgICAgICAgICAgICAgICAgICBCdWZm ZXJzOiBzaGFyZWQgaGl0PTIKICAgICAgICAgICAgICAgICAtPiAgSGFzaCAoYWN0dWFsIHJvd3M9 MS4wMCBsb29wcz0yKQogICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogYy5pZCwgYy5vd25l cl9pZCwgYy52aXNpYmlsaXR5CiAgICAgICAgICAgICAgICAgICAgICAgQnVja2V0czogMTAyNCAg QmF0Y2hlczogMSAgTWVtb3J5IFVzYWdlOiA5a0IKICAgICAgICAgICAgICAgICAgICAgICBCdWZm ZXJzOiBzaGFyZWQgaGl0PTQKICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLnRfY2hhbm5lbHMgYyAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0yKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogYy5pZCwgYy5vd25lcl9pZCwgYy52aXNpYmlsaXR5 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGMub3duZXJfaWQgPSBzLnZp ZXdlcl9pZCkgT1IgKGMudmlzaWJpbGl0eSA9ICdwdWJsaWMnOjp0ZXh0KSBPUiAoQU5ZIChjLmlk ID0gKGhhc2hlZCBTdWJQbGFuIDIpLmNvbDEpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QnVmZmVyczogc2hhcmVkIGhpdD00CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViUGxh biAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LnRfZm9sbG93cyBmIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTMpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGYuY2hhbm5lbF9pZAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZi51c2VyX2lkID0gcy52aWV3ZXJfaWQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVy OiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQg aGl0PTMKIFBsYW5uaW5nOgogICBCdWZmZXJzOiBzaGFyZWQgaGl0PTgKKDM3IHJvd3MpCgoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Cj09IHBnX2hhc2hlZF9zdWJwbGFuX3JlcHJvLnNxbCBvbiBQb3N0Z3JlU1FMIDE5YmV0 YTQgKGFhcmNoNjQpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpQYWdlciB1c2FnZSBpcyBvZmYuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIFBvc3RncmVTUUwgMTliZXRhNCAoRGViaWFuIDE5fmJldGE0LTEu cGdkZzEzKzEpIG9uIGFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUsIGNvbXBpbGVkIGJ5IGdjYyAo RGViaWFuIDE0LjIuMC0xOSkgMTQuMi4wLCA2NC1iaXQKKDEgcm93KQoKQ1JFQVRFIFRBQkxFCkNS RUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKQ1JFQVRFIFRBQkxFCklOU0VSVCAwIDIKSU5TRVJUIDAg MgpJTlNFUlQgMCAyCklOU0VSVCAwIDIKQU5BTFlaRQo9PSBRMTogZWFjaCBzZXNzaW9uIHZpZXdl ciBmb2xsb3dzIGl0cyBvd24gY2hhbm5lbDsgZXhwZWN0ZWQgKDEsdCksICgyLHQpCiBpZCB8IGFs bG93ZWQgCi0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwgZgooMiByb3dzKQoKPT0gUTI6IGlk ZW50aWNhbCBleGNlcHQgT0ZGU0VUIDAgb24gdGhlIGlubmVyIEVYSVNUUwogaWQgfCBhbGxvd2Vk IAotLS0tKy0tLS0tLS0tLQogIDEgfCB0CiAgMiB8IHQKKDIgcm93cykKCj09IFExIHBsYW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU29ydCAoYWN0dWFsIHJvd3M9Mi4w MCBsb29wcz0xKQogICBPdXRwdXQ6IHMuaWQsIChFWElTVFMoU3ViUGxhbiBleGlzdHNfMSkpCiAg IFNvcnQgS2V5OiBzLmlkCiAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTogMjVrQgog ICBCdWZmZXJzOiBzaGFyZWQgaGl0PTgKICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy50X3Nlc3Np b25zIHMgKGFjdHVhbCByb3dzPTIuMDAgbG9vcHM9MSkKICAgICAgICAgT3V0cHV0OiBzLmlkLCBF WElTVFMoU3ViUGxhbiBleGlzdHNfMSkKICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD04CiAg ICAgICAgIFN1YlBsYW4gZXhpc3RzXzEKICAgICAgICAgICAtPiAgSGFzaCBKb2luIChhY3R1YWwg cm93cz0wLjUwIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgSW5uZXIgVW5pcXVlOiB0cnVlCiAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAocC5jaGFubmVsX2lkID0gYy5pZCkKICAgICAgICAg ICAgICAgICBKb2luIEZpbHRlcjogKChjLm93bmVyX2lkID0gcy52aWV3ZXJfaWQpIE9SICgocC5z dGF0dXMgPSAncHVibGlzaGVkJzo6dGV4dCkgQU5EICgoYy52aXNpYmlsaXR5ID0gJ3B1YmxpYyc6 OnRleHQpIE9SIChBTlkgKGMuaWQgPSAoaGFzaGVkIFN1YlBsYW4gZXhpc3RzX3RvX2FueV8xKS5j b2wxKSkpKSkKICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgSm9pbiBGaWx0ZXI6IDAK ICAgICAgICAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTcKICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLnRfcG9zdHMgcCAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0y KQogICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogcC5pZCwgcC5jaGFubmVsX2lkLCBwLnN0 YXR1cwogICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKHAuaWQgPSBzLnBvc3RfaWQpCiAg ICAgICAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMAogICAgICAgICAg ICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MgogICAgICAgICAgICAgICAgIC0+ICBI YXNoIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAg ICBCdWNrZXRzOiAxMDI0ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6IDlrQgogICAgICAgICAg ICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NAogICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9jaGFubmVscyBjIChhY3R1YWwgcm93cz0xLjAwIGxv b3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBjLmlkLCBjLm93bmVy X2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgo Yy5vd25lcl9pZCA9IHMudmlld2VyX2lkKSBPUiAoYy52aXNpYmlsaXR5ID0gJ3B1YmxpYyc6OnRl eHQpIE9SIChBTlkgKGMuaWQgPSAoaGFzaGVkIFN1YlBsYW4gZXhpc3RzX3RvX2FueV8xKS5jb2wx KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjog MQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN1YlBsYW4gZXhpc3RzX3RvX2FueV8xCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnRfZm9sbG93cyBm IChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IGYuY2hhbm5lbF9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRmlsdGVyOiAoZi51c2VyX2lkID0gcy52aWV3ZXJfaWQpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTMKIFBsYW5u aW5nOgogICBCdWZmZXJzOiBzaGFyZWQgaGl0PTgKKDM3IHJvd3MpCgoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj09IHBn X2hhc2hlZF9zdWJwbGFuX3JlcHJvLnNxbCBvbiBQb3N0Z3JlU1FMIDE4LjYgKGFhcmNoNjQpCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpQYWdlciB1c2FnZSBpcyBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBQb3N0Z3JlU1FM IDE4LjYgKERlYmlhbiAxOC42LTEucGdkZzEzKzIpIG9uIGFhcmNoNjQtdW5rbm93bi1saW51eC1n bnUsIGNvbXBpbGVkIGJ5IGdjYyAoRGViaWFuIDE0LjIuMC0xOSkgMTQuMi4wLCA2NC1iaXQKKDEg cm93KQoKQ1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKQ1JFQVRFIFRBQkxF CklOU0VSVCAwIDIKSU5TRVJUIDAgMgpJTlNFUlQgMCAyCklOU0VSVCAwIDIKQU5BTFlaRQo9PSBR MTogZWFjaCBzZXNzaW9uIHZpZXdlciBmb2xsb3dzIGl0cyBvd24gY2hhbm5lbDsgZXhwZWN0ZWQg KDEsdCksICgyLHQpCiBpZCB8IGFsbG93ZWQgCi0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwg ZgooMiByb3dzKQoKPT0gUTI6IGlkZW50aWNhbCBleGNlcHQgT0ZGU0VUIDAgb24gdGhlIGlubmVy IEVYSVNUUwogaWQgfCBhbGxvd2VkIAotLS0tKy0tLS0tLS0tLQogIDEgfCB0CiAgMiB8IHQKKDIg cm93cykKCj09IFExIHBsYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTb3J0IChhY3R1YWwgcm93cz0yLjAwIGxvb3Bz PTEpCiAgIE91dHB1dDogcy5pZCwgKEVYSVNUUyhTdWJQbGFuIDMpKQogICBTb3J0IEtleTogcy5p ZAogICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IDI1a0IKICAgQnVmZmVyczogc2hh cmVkIGhpdD04CiAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9zZXNzaW9ucyBzIChhY3R1YWwg cm93cz0yLjAwIGxvb3BzPTEpCiAgICAgICAgIE91dHB1dDogcy5pZCwgRVhJU1RTKFN1YlBsYW4g MykKICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD04CiAgICAgICAgIFN1YlBsYW4gMwogICAg ICAgICAgIC0+ICBIYXNoIEpvaW4gKGFjdHVhbCByb3dzPTAuNTAgbG9vcHM9MikKICAgICAgICAg ICAgICAgICBJbm5lciBVbmlxdWU6IHRydWUKICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChw LmNoYW5uZWxfaWQgPSBjLmlkKQogICAgICAgICAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGMub3du ZXJfaWQgPSBzLnZpZXdlcl9pZCkgT1IgKChwLnN0YXR1cyA9ICdwdWJsaXNoZWQnOjp0ZXh0KSBB TkQgKChjLnZpc2liaWxpdHkgPSAncHVibGljJzo6dGV4dCkgT1IgKEFOWSAoYy5pZCA9IChoYXNo ZWQgU3ViUGxhbiAyKS5jb2wxKSkpKSkKICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkg Sm9pbiBGaWx0ZXI6IDAKICAgICAgICAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTcKICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnRfcG9zdHMgcCAoYWN0dWFsIHJv d3M9MS4wMCBsb29wcz0yKQogICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogcC5pZCwgcC5j aGFubmVsX2lkLCBwLnN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKHAuaWQg PSBzLnBvc3RfaWQpCiAgICAgICAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRl cjogMAogICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MgogICAgICAg ICAgICAgICAgIC0+ICBIYXNoIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTIpCiAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAg ICAgICAgICAgICAgICAgICBCdWNrZXRzOiAxMDI0ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6 IDlrQgogICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NAogICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9jaGFubmVscyBjIChhY3R1 YWwgcm93cz0xLjAwIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMudmlld2VyX2lkKSBPUiAoYy52aXNpYmlsaXR5 ID0gJ3B1YmxpYyc6OnRleHQpIE9SIChBTlkgKGMuaWQgPSAoaGFzaGVkIFN1YlBsYW4gMikuY29s MSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6 IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJQbGFuIDIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9mb2xsb3dzIGYgKGFjdHVhbCByb3dz PTEuMDAgbG9vcHM9MykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogZi5jaGFubmVsX2lkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0 ZXI6IChmLnVzZXJfaWQgPSBzLnZpZXdlcl9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6IDEKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MwogUGxhbm5pbmc6CiAgIEJ1ZmZl cnM6IHNoYXJlZCBoaXQ9OAooMzcgcm93cykKCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPT0gcGdfaGFzaGVkX3N1YnBs YW5fcmVwcm8uc3FsIG9uIFBvc3RncmVTUUwgMTcuMTEgKGFhcmNoNjQpCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQYWdl ciB1c2FnZSBpcyBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogUG9zdGdyZVNRTCAxNy4xMSAo RGViaWFuIDE3LjExLTEucGdkZzEzKzIpIG9uIGFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUsIGNv bXBpbGVkIGJ5IGdjYyAoRGViaWFuIDE0LjIuMC0xOSkgMTQuMi4wLCA2NC1iaXQKKDEgcm93KQoK Q1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKQ1JFQVRFIFRBQkxFCklOU0VS VCAwIDIKSU5TRVJUIDAgMgpJTlNFUlQgMCAyCklOU0VSVCAwIDIKQU5BTFlaRQo9PSBRMTogZWFj aCBzZXNzaW9uIHZpZXdlciBmb2xsb3dzIGl0cyBvd24gY2hhbm5lbDsgZXhwZWN0ZWQgKDEsdCks ICgyLHQpCiBpZCB8IGFsbG93ZWQgCi0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwgZgooMiBy b3dzKQoKPT0gUTI6IGlkZW50aWNhbCBleGNlcHQgT0ZGU0VUIDAgb24gdGhlIGlubmVyIEVYSVNU UwogaWQgfCBhbGxvd2VkIAotLS0tKy0tLS0tLS0tLQogIDEgfCB0CiAgMiB8IHQKKDIgcm93cykK Cj09IFExIHBsYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTb3J0IChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCiAgIE91 dHB1dDogcy5pZCwgKEVYSVNUUyhTdWJQbGFuIDMpKQogICBTb3J0IEtleTogcy5pZAogICBTb3J0 IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IDI1a0IKICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy50X3Nlc3Npb25zIHMgKGFjdHVhbCByb3dzPTIgbG9vcHM9MSkKICAgICAgICAgT3V0cHV0OiBz LmlkLCBFWElTVFMoU3ViUGxhbiAzKQogICAgICAgICBTdWJQbGFuIDMKICAgICAgICAgICAtPiAg SGFzaCBKb2luIChhY3R1YWwgcm93cz0wIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgSW5uZXIg VW5pcXVlOiB0cnVlCiAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAocC5jaGFubmVsX2lkID0g Yy5pZCkKICAgICAgICAgICAgICAgICBKb2luIEZpbHRlcjogKChjLm93bmVyX2lkID0gcy52aWV3 ZXJfaWQpIE9SICgocC5zdGF0dXMgPSAncHVibGlzaGVkJzo6dGV4dCkgQU5EICgoYy52aXNpYmls aXR5ID0gJ3B1YmxpYyc6OnRleHQpIE9SIChBTlkgKGMuaWQgPSAoaGFzaGVkIFN1YlBsYW4gMiku Y29sMSkpKSkpCiAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEpvaW4gRmlsdGVyOiAw CiAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy50X3Bvc3RzIHAgKGFjdHVh bCByb3dzPTEgbG9vcHM9MikKICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHAuaWQsIHAu Y2hhbm5lbF9pZCwgcC5zdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChwLmlk ID0gcy5wb3N0X2lkKQogICAgICAgICAgICAgICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0 ZXI6IDAKICAgICAgICAgICAgICAgICAtPiAgSGFzaCAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQog ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogYy5pZCwgYy5vd25lcl9pZCwgYy52aXNpYmls aXR5CiAgICAgICAgICAgICAgICAgICAgICAgQnVja2V0czogMTAyNCAgQmF0Y2hlczogMSAgTWVt b3J5IFVzYWdlOiA5a0IKICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLnRfY2hhbm5lbHMgYyAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogYy5pZCwgYy5vd25lcl9pZCwgYy52aXNpYmlsaXR5CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGMub3duZXJfaWQgPSBzLnZpZXdlcl9p ZCkgT1IgKGMudmlzaWJpbGl0eSA9ICdwdWJsaWMnOjp0ZXh0KSBPUiAoQU5ZIChjLmlkID0gKGhh c2hlZCBTdWJQbGFuIDIpLmNvbDEpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dz IFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViUGxh biAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LnRfZm9sbG93cyBmIChhY3R1YWwgcm93cz0xIGxvb3BzPTMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IGYuY2hhbm5lbF9pZAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZi51c2VyX2lkID0gcy52aWV3ZXJfaWQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAx CigyOCByb3dzKQoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo9PSBwZ19oYXNoZWRfc3VicGxhbl9yZXByby5zcWwgb24g UG9zdGdyZVNRTCAxNi4xNSAoYWFyY2g2NCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBhZ2VyIHVzYWdlIGlzIG9mZi4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBQb3N0Z3JlU1FMIDE2LjE1IChEZWJpYW4gMTYuMTUtMS5w Z2RnMTMrMikgb24gYWFyY2g2NC11bmtub3duLWxpbnV4LWdudSwgY29tcGlsZWQgYnkgZ2NjIChE ZWJpYW4gMTQuMi4wLTE5KSAxNC4yLjAsIDY0LWJpdAooMSByb3cpCgpDUkVBVEUgVEFCTEUKQ1JF QVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKSU5TRVJUIDAgMgpJTlNFUlQgMCAy CklOU0VSVCAwIDIKSU5TRVJUIDAgMgpBTkFMWVpFCj09IFExOiBlYWNoIHNlc3Npb24gdmlld2Vy IGZvbGxvd3MgaXRzIG93biBjaGFubmVsOyBleHBlY3RlZCAoMSx0KSwgKDIsdCkKIGlkIHwgYWxs b3dlZCAKLS0tLSstLS0tLS0tLS0KICAxIHwgdAogIDIgfCBmCigyIHJvd3MpCgo9PSBRMjogaWRl bnRpY2FsIGV4Y2VwdCBPRkZTRVQgMCBvbiB0aGUgaW5uZXIgRVhJU1RTCiBpZCB8IGFsbG93ZWQg Ci0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwgdAooMiByb3dzKQoKPT0gUTEgcGxhbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU29ydCAoYWN0dWFsIHJvd3M9MiBsb29wcz0xKQogICBP dXRwdXQ6IHMuaWQsICgoU3ViUGxhbiAzKSkKICAgU29ydCBLZXk6IHMuaWQKICAgU29ydCBNZXRo b2Q6IHF1aWNrc29ydCAgTWVtb3J5OiAyNWtCCiAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9z ZXNzaW9ucyBzIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCiAgICAgICAgIE91dHB1dDogcy5pZCwg KFN1YlBsYW4gMykKICAgICAgICAgU3ViUGxhbiAzCiAgICAgICAgICAgLT4gIEhhc2ggSm9pbiAo YWN0dWFsIHJvd3M9MCBsb29wcz0yKQogICAgICAgICAgICAgICAgIElubmVyIFVuaXF1ZTogdHJ1 ZQogICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHAuY2hhbm5lbF9pZCA9IGMuaWQpCiAgICAg ICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMudmlld2VyX2lkKSBPUiAo KHAuc3RhdHVzID0gJ3B1Ymxpc2hlZCc6OnRleHQpIEFORCAoKGMudmlzaWJpbGl0eSA9ICdwdWJs aWMnOjp0ZXh0KSBPUiAoaGFzaGVkIFN1YlBsYW4gMikpKSkKICAgICAgICAgICAgICAgICBSb3dz IFJlbW92ZWQgYnkgSm9pbiBGaWx0ZXI6IDAKICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLnRfcG9zdHMgcCAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQogICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogcC5pZCwgcC5jaGFubmVsX2lkLCBwLnN0YXR1cwogICAgICAgICAg ICAgICAgICAgICAgIEZpbHRlcjogKHAuaWQgPSBzLnBvc3RfaWQpCiAgICAgICAgICAgICAgICAg ICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMAogICAgICAgICAgICAgICAgIC0+ICBIYXNo IChhY3R1YWwgcm93cz0xIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBj LmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICBCdWNr ZXRzOiAxMDI0ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6IDlrQgogICAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9jaGFubmVscyBjIChhY3R1YWwgcm93cz0x IGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBjLmlkLCBjLm93 bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6 ICgoYy5vd25lcl9pZCA9IHMudmlld2VyX2lkKSBPUiAoYy52aXNpYmlsaXR5ID0gJ3B1YmxpYyc6 OnRleHQpIE9SIChoYXNoZWQgU3ViUGxhbiAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3ViUGxhbiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLnRfZm9sbG93cyBmIChhY3R1YWwgcm93cz0xIGxvb3BzPTMpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGYuY2hhbm5lbF9pZAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZi51c2VyX2lkID0gcy52aWV3ZXJfaWQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmls dGVyOiAxCigyOCByb3dzKQoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo9PSBwZ19oYXNoZWRfc3VicGxhbl9yZXByby5z cWwgb24gUG9zdGdyZVNRTCAxNS4xOSAoYWFyY2g2NCkKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBhZ2VyIHVzYWdlIGlz IG9mZi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBQb3N0Z3JlU1FMIDE1LjE5IChEZWJpYW4gMTUu MTktMS5wZ2RnMTMrMikgb24gYWFyY2g2NC11bmtub3duLWxpbnV4LWdudSwgY29tcGlsZWQgYnkg Z2NjIChEZWJpYW4gMTQuMi4wLTE5KSAxNC4yLjAsIDY0LWJpdAooMSByb3cpCgpDUkVBVEUgVEFC TEUKQ1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKSU5TRVJUIDAgMgpJTlNF UlQgMCAyCklOU0VSVCAwIDIKSU5TRVJUIDAgMgpBTkFMWVpFCj09IFExOiBlYWNoIHNlc3Npb24g dmlld2VyIGZvbGxvd3MgaXRzIG93biBjaGFubmVsOyBleHBlY3RlZCAoMSx0KSwgKDIsdCkKIGlk IHwgYWxsb3dlZCAKLS0tLSstLS0tLS0tLS0KICAxIHwgdAogIDIgfCBmCigyIHJvd3MpCgo9PSBR MjogaWRlbnRpY2FsIGV4Y2VwdCBPRkZTRVQgMCBvbiB0aGUgaW5uZXIgRVhJU1RTCiBpZCB8IGFs bG93ZWQgCi0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwgdAooMiByb3dzKQoKPT0gUTEgcGxh bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU29ydCAoYWN0dWFsIHJvd3M9MiBsb29wcz0x KQogICBPdXRwdXQ6IHMuaWQsICgoU3ViUGxhbiAzKSkKICAgU29ydCBLZXk6IHMuaWQKICAgU29y dCBNZXRob2Q6IHF1aWNrc29ydCAgTWVtb3J5OiAyNWtCCiAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMudF9zZXNzaW9ucyBzIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCiAgICAgICAgIE91dHB1dDog cy5pZCwgKFN1YlBsYW4gMykKICAgICAgICAgU3ViUGxhbiAzCiAgICAgICAgICAgLT4gIEhhc2gg Sm9pbiAoYWN0dWFsIHJvd3M9MCBsb29wcz0yKQogICAgICAgICAgICAgICAgIElubmVyIFVuaXF1 ZTogdHJ1ZQogICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHAuY2hhbm5lbF9pZCA9IGMuaWQp CiAgICAgICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMudmlld2VyX2lk KSBPUiAoKHAuc3RhdHVzID0gJ3B1Ymxpc2hlZCc6OnRleHQpIEFORCAoKGMudmlzaWJpbGl0eSA9 ICdwdWJsaWMnOjp0ZXh0KSBPUiAoaGFzaGVkIFN1YlBsYW4gMikpKSkKICAgICAgICAgICAgICAg ICBSb3dzIFJlbW92ZWQgYnkgSm9pbiBGaWx0ZXI6IDAKICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLnRfcG9zdHMgcCAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQogICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogcC5pZCwgcC5jaGFubmVsX2lkLCBwLnN0YXR1cwogICAg ICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKHAuaWQgPSBzLnBvc3RfaWQpCiAgICAgICAgICAg ICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMAogICAgICAgICAgICAgICAgIC0+ ICBIYXNoIChhY3R1YWwgcm93cz0xIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAg ICBCdWNrZXRzOiAxMDI0ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6IDlrQgogICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9jaGFubmVscyBjIChhY3R1YWwg cm93cz0xIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBjLmlk LCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG aWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMudmlld2VyX2lkKSBPUiAoYy52aXNpYmlsaXR5ID0gJ3B1 YmxpYyc6OnRleHQpIE9SIChoYXNoZWQgU3ViUGxhbiAyKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3ViUGxhbiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLnRfZm9sbG93cyBmIChhY3R1YWwgcm93cz0xIGxvb3BzPTMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGYuY2hhbm5lbF9pZAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZi51c2VyX2lkID0gcy52aWV3 ZXJfaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQg YnkgRmlsdGVyOiAxCigyOCByb3dzKQoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo9PSBwZ19oYXNoZWRfc3VicGxhbl9y ZXByby5zcWwgb24gUG9zdGdyZVNRTCAxNC4yNCAoYWFyY2g2NCkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBhZ2VyIHVz YWdlIGlzIG9mZi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBQb3N0Z3JlU1FMIDE0LjI0IChEZWJp YW4gMTQuMjQtMS5wZ2RnMTMrMikgb24gYWFyY2g2NC11bmtub3duLWxpbnV4LWdudSwgY29tcGls ZWQgYnkgZ2NjIChEZWJpYW4gMTQuMi4wLTE5KSAxNC4yLjAsIDY0LWJpdAooMSByb3cpCgpDUkVB VEUgVEFCTEUKQ1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKSU5TRVJUIDAg MgpJTlNFUlQgMCAyCklOU0VSVCAwIDIKSU5TRVJUIDAgMgpBTkFMWVpFCj09IFExOiBlYWNoIHNl c3Npb24gdmlld2VyIGZvbGxvd3MgaXRzIG93biBjaGFubmVsOyBleHBlY3RlZCAoMSx0KSwgKDIs dCkKIGlkIHwgYWxsb3dlZCAKLS0tLSstLS0tLS0tLS0KICAxIHwgdAogIDIgfCBmCigyIHJvd3Mp Cgo9PSBRMjogaWRlbnRpY2FsIGV4Y2VwdCBPRkZTRVQgMCBvbiB0aGUgaW5uZXIgRVhJU1RTCiBp ZCB8IGFsbG93ZWQgCi0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwgdAooMiByb3dzKQoKPT0g UTEgcGxhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU29ydCAoYWN0dWFsIHJvd3M9MiBs b29wcz0xKQogICBPdXRwdXQ6IHMuaWQsICgoU3ViUGxhbiAzKSkKICAgU29ydCBLZXk6IHMuaWQK ICAgU29ydCBNZXRob2Q6IHF1aWNrc29ydCAgTWVtb3J5OiAyNWtCCiAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMudF9zZXNzaW9ucyBzIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCiAgICAgICAgIE91 dHB1dDogcy5pZCwgKFN1YlBsYW4gMykKICAgICAgICAgU3ViUGxhbiAzCiAgICAgICAgICAgLT4g IEhhc2ggSm9pbiAoYWN0dWFsIHJvd3M9MCBsb29wcz0yKQogICAgICAgICAgICAgICAgIElubmVy IFVuaXF1ZTogdHJ1ZQogICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHAuY2hhbm5lbF9pZCA9 IGMuaWQpCiAgICAgICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMudmll d2VyX2lkKSBPUiAoKHAuc3RhdHVzID0gJ3B1Ymxpc2hlZCc6OnRleHQpIEFORCAoKGMudmlzaWJp bGl0eSA9ICdwdWJsaWMnOjp0ZXh0KSBPUiAoaGFzaGVkIFN1YlBsYW4gMikpKSkKICAgICAgICAg ICAgICAgICBSb3dzIFJlbW92ZWQgYnkgSm9pbiBGaWx0ZXI6IDAKICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLnRfcG9zdHMgcCAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQog ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogcC5pZCwgcC5jaGFubmVsX2lkLCBwLnN0YXR1 cwogICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKHAuaWQgPSBzLnBvc3RfaWQpCiAgICAg ICAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMAogICAgICAgICAgICAg ICAgIC0+ICBIYXNoIChhY3R1YWwgcm93cz0xIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAg ICAgICAgICBCdWNrZXRzOiAxMDI0ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6IDlrQgogICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudF9jaGFubmVscyBjIChh Y3R1YWwgcm93cz0xIGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMudmlld2VyX2lkKSBPUiAoYy52aXNpYmlsaXR5 ID0gJ3B1YmxpYyc6OnRleHQpIE9SIChoYXNoZWQgU3ViUGxhbiAyKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU3ViUGxhbiAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLnRfZm9sbG93cyBmIChhY3R1YWwgcm93cz0xIGxvb3BzPTMpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGYuY2hhbm5lbF9pZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZi51c2VyX2lkID0g cy52aWV3ZXJfaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3dzIFJl bW92ZWQgYnkgRmlsdGVyOiAxCigyOCByb3dzKQoKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo9PSBwZ19oYXNoZWRfc3Vi cGxhbl9yZXByby5zcWwgb24gUG9zdGdyZVNRTCAxMy4yMyAoYWFyY2g2NCkKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBh Z2VyIHVzYWdlIGlzIG9mZi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBQb3N0Z3JlU1FMIDEzLjIz IChEZWJpYW4gMTMuMjMtMS5wZ2RnMTMrMSkgb24gYWFyY2g2NC11bmtub3duLWxpbnV4LWdudSwg Y29tcGlsZWQgYnkgZ2NjIChEZWJpYW4gMTQuMi4wLTE5KSAxNC4yLjAsIDY0LWJpdAooMSByb3cp CgpDUkVBVEUgVEFCTEUKQ1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKSU5T RVJUIDAgMgpJTlNFUlQgMCAyCklOU0VSVCAwIDIKSU5TRVJUIDAgMgpBTkFMWVpFCj09IFExOiBl YWNoIHNlc3Npb24gdmlld2VyIGZvbGxvd3MgaXRzIG93biBjaGFubmVsOyBleHBlY3RlZCAoMSx0 KSwgKDIsdCkKIGlkIHwgYWxsb3dlZCAKLS0tLSstLS0tLS0tLS0KICAxIHwgdAogIDIgfCBmCigy IHJvd3MpCgo9PSBRMjogaWRlbnRpY2FsIGV4Y2VwdCBPRkZTRVQgMCBvbiB0aGUgaW5uZXIgRVhJ U1RTCiBpZCB8IGFsbG93ZWQgCi0tLS0rLS0tLS0tLS0tCiAgMSB8IHQKICAyIHwgdAooMiByb3dz KQoKPT0gUTEgcGxhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU29ydCAoYWN0dWFsIHJvd3M9 MiBsb29wcz0xKQogICBPdXRwdXQ6IHMuaWQsICgoU3ViUGxhbiAzKSkKICAgU29ydCBLZXk6IHMu aWQKICAgU29ydCBNZXRob2Q6IHF1aWNrc29ydCAgTWVtb3J5OiAyNWtCCiAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMudF9zZXNzaW9ucyBzIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCiAgICAgICAg IE91dHB1dDogcy5pZCwgKFN1YlBsYW4gMykKICAgICAgICAgU3ViUGxhbiAzCiAgICAgICAgICAg LT4gIEhhc2ggSm9pbiAoYWN0dWFsIHJvd3M9MCBsb29wcz0yKQogICAgICAgICAgICAgICAgIElu bmVyIFVuaXF1ZTogdHJ1ZQogICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHAuY2hhbm5lbF9p ZCA9IGMuaWQpCiAgICAgICAgICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9IHMu dmlld2VyX2lkKSBPUiAoKHAuc3RhdHVzID0gJ3B1Ymxpc2hlZCc6OnRleHQpIEFORCAoKGMudmlz aWJpbGl0eSA9ICdwdWJsaWMnOjp0ZXh0KSBPUiAoYWx0ZXJuYXRpdmVzOiBTdWJQbGFuIDEgb3Ig aGFzaGVkIFN1YlBsYW4gMikpKSkKICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgSm9p biBGaWx0ZXI6IDAKICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnRfcG9z dHMgcCAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQogICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogcC5pZCwgcC5jaGFubmVsX2lkLCBwLnN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgIEZp bHRlcjogKHAuaWQgPSBzLnBvc3RfaWQpCiAgICAgICAgICAgICAgICAgICAgICAgUm93cyBSZW1v dmVkIGJ5IEZpbHRlcjogMAogICAgICAgICAgICAgICAgIC0+ICBIYXNoIChhY3R1YWwgcm93cz0x IGxvb3BzPTIpCiAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBjLmlkLCBjLm93bmVyX2lk LCBjLnZpc2liaWxpdHkKICAgICAgICAgICAgICAgICAgICAgICBCdWNrZXRzOiAxMDI0ICBCYXRj aGVzOiAxICBNZW1vcnkgVXNhZ2U6IDlrQgogICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMudF9jaGFubmVscyBjIChhY3R1YWwgcm93cz0xIGxvb3BzPTIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBjLmlkLCBjLm93bmVyX2lkLCBjLnZpc2li aWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYy5vd25lcl9pZCA9 IHMudmlld2VyX2lkKSBPUiAoYy52aXNpYmlsaXR5ID0gJ3B1YmxpYyc6OnRleHQpIE9SIChhbHRl cm5hdGl2ZXM6IFN1YlBsYW4gMSBvciBoYXNoZWQgU3ViUGxhbiAyKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU3ViUGxhbiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLnRfZm9sbG93cyBmIChuZXZlciBleGVjdXRlZCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKChmLmNoYW5uZWxfaWQgPSBjLmlk KSBBTkQgKGYudXNlcl9pZCA9IHMudmlld2VyX2lkKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdWJQbGFuIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMudF9mb2xsb3dzIGZfMSAoYWN0dWFsIHJvd3M9MSBsb29wcz0zKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmXzEuY2hhbm5lbF9pZAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZl8xLnVzZXJfaWQgPSBz LnZpZXdlcl9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvd3MgUmVt b3ZlZCBieSBGaWx0ZXI6IDEKKDMxIHJvd3MpCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj09IHBnX2hhc2hlZF9zdWJw bGFuX3ZhcmlhdGlvbnMuc3FsIG9uIFBvc3RncmVTUUwgMTguNiAoYWFyY2g2NCkKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClBhZ2VyIHVzYWdlIGlzIG9mZi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFBvc3RncmVTUUwgMTguNiAo RGViaWFuIDE4LjYtMS5wZ2RnMTMrMikgb24gYWFyY2g2NC11bmtub3duLWxpbnV4LWdudSwgY29t cGlsZWQgYnkgZ2NjIChEZWJpYW4gMTQuMi4wLTE5KSAxNC4yLjAsIDY0LWJpdAooMSByb3cpCgpD UkVBVEUgVEFCTEUKQ1JFQVRFIFRBQkxFCkNSRUFURSBUQUJMRQpDUkVBVEUgVEFCTEUKSU5TRVJU IDAgMgpJTlNFUlQgMCAyCklOU0VSVCAwIDIKSU5TRVJUIDAgMgpBTkFMWVpFCj09IFYxOiBFWElT VFMgcmVmZXJlbmNlZCBvbmx5IG9uY2UgKG5vIE9SLXF1YWwgZXh0cmFjdGlvbiBkdXBsaWNhdGUp OyBleHBlY3RlZCAoMSx0KSwgKDIsdCkKIGlkIHwgYWxsb3dlZCAKLS0tLSstLS0tLS0tLS0KICAx IHwgdAogIDIgfCB0CigyIHJvd3MpCgo9PSBWMjogc2FtZSBydWxlIGFzIFExLCB2aWV3ZXIgcGFz c2VkIGFzIGEgYmluZCBwYXJhbWV0ZXIsIG9uZSBjYWxsIHBlciBzZXNzaW9uOyBleHBlY3RlZCB0 IHRoZW4gdApQUkVQQVJFCiBhbGxvd2VkIAotLS0tLS0tLS0KIHQKKDEgcm93KQoKIGFsbG93ZWQg Ci0tLS0tLS0tLQogdAooMSByb3cpCgo9PSBWMzogUTEgcmVzdHJpY3RlZCB0byBzZXNzaW9uIDIg YWxvbmUgKHNpbmdsZSBvdXRlciByb3cpOyBleHBlY3RlZCB0CiBpZCB8IGFsbG93ZWQgCi0tLS0r LS0tLS0tLS0tCiAgMiB8IHQKKDEgcm93KQoKPT0gVjQ6IFExIHdpdGggdGhlIG91dGVyIHJvd3Mg aW4gcmV2ZXJzZSBvcmRlcjsgZXhwZWN0ZWQgKDIsdCksICgxLHQpCiBpZCB8IGFsbG93ZWQgCi0t LS0rLS0tLS0tLS0tCiAgMiB8IHQKICAxIHwgZgooMiByb3dzKQoK --===============2301495846308879773==--
V1With = the EXISTS written once (owner OR public OR EXISTS), the plan has one referen= ce and both rows are t.
V2The Q1 rule called once per session with the vi= ewer as a bind parameter returns t both times.
V3Q1 limited to session 2 = alone returns t.
V4Q1 with the outer rows in reverse order returns (2, t)= and (1, f). The wrong answer moves to whichever row comes second.