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 1w9hIN-001ex7-2e for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 10:35:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9hIM-007oaJ-0J for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 10:35:02 +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 1w9hIL-007oaB-1i for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 10:35:02 +0000 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9hIJ-00000000py9-2DPC for pgsql-hackers@postgresql.org; Mon, 06 Apr 2026 10:35:01 +0000 Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-38dd8e7f131so19505091fa.1 for ; Mon, 06 Apr 2026 03:34:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775471697; cv=none; d=google.com; s=arc-20240605; b=I9G3RhVwdOKLeln5gsuNrHjbMcmdNhs4tpnuzseMKZtFsFQmKt5lviAJGKWdrlbvwt mPgt6GhzzorDBTmyyYSe/nH3q2JqEHtYyxjOLKb/eOTsoyRg3yvpNDlXzdqSNA0jPnMa uHLJYukRffYw85EXsHqA70fsjeju7WdJcov7SZblC7ewmas+lbp/0Ame03B742A7v0dQ MH6PGIRRj9HRfq+tTKLwU46erDPnu3dhsqxZGTaQQ6pOSHh5Ewb4OWbXAJHwBt8MKitr IANGDBbKr4jk8Z8IXOZV2n9PEn+oy/POeB9/YyYHpan+7SoZ/ZbgaRYwsrxCgknaiuPG hOuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=VO6qhlvrYbMJa4A2FCiRnPrhqrFudfhblR5geZXJOEA=; fh=33OU7BWuulPFH378PdKTnpeW+jw3IP20DTmpLDeQ3pE=; b=DZiCQF/UjfkbQsOTY0saSE/WrfgtqrexWpLsbCznaXjuCpAQ7E4amLPDCfE0HCcMLo ekK2cQWJHmIo8qmj9o4qejzPUaiQWn8aCa8dQS85AFIIG+CoQwff9bHR2nBFCwlMds+F jT888iOAsDsXNFwxlTfiHfJqXGtuRuWv5SoraCDSQgueP1MoNHMSo7KzNTI3eJ5DSCFO D7OkAoOKTXDz0we9N9V3KtdRvHV8tS2t8qw965wJ8BNfL5Rl4mBVmvyHJeGgNEN/qMLM n0ARPMAsDkzikomAVR3V8lzm/TOV6DLGwJolo9BmaDcnXtkZ6xnLiESTYG5CRtWJiDQx w9WA==; 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=1775471697; x=1776076497; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=VO6qhlvrYbMJa4A2FCiRnPrhqrFudfhblR5geZXJOEA=; b=j/XAsVWyHalF9gWqgpy2/RUBNlSrIj4Whn5Qqi4iwd93Afdq8BiTFGhgLx7abKZcaf jXd+3tULbXgKTfyY46yCn6kl+vspwXdgldOXUbJ9rDePqm65OV4fqf6TTS4whnmhMkvP 4Oj8YHLc2zaGx5Oe+GRPr7TyXjYc2NUsRBYfgF19s0X++yUAae6dOGY59aPODvsR7Vbm KmfeZhTWsL+IIclPoEbPdQsubPcSKA+HxZyRHcnQa3WmfUEXoU8U+kQjUzjJ7MUZPeoQ nb/6s8tQFEAqecxBEfICujlRD8pJBfbti+sMuB+tPsiOXn8i1+wtvCl121Kj+7XHaPTw kJKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775471697; x=1776076497; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VO6qhlvrYbMJa4A2FCiRnPrhqrFudfhblR5geZXJOEA=; b=PmwyJuV04NR9TTLVhIWAtwoiwJsU2OWN+VWVMzpYFrDF4GDC/P3LMN2Zy8B9ANagX3 ZI2NBQkq1u0502NwYa9B5cZ3OLk+WRvO0C8e43qzVSM3Kd7B2TGxlMvutNHTfbcltGAp w3aWiXcJ9OlOVBG4STiQIP3tZyDgiqw3BpyWeKNsH6oP0oWrebfuVK10kHTwFxe5GFI3 Wc2TlNMMzpjEzum+1BvZE41GYNavpOqAIGaqIwv4sHyNAqj1dWGb40IsvO21wnK+LNST 9WlpMKbecABsc43lcKXd1HQKyMEloTVTZvLVq259PYGDxDs7z7tVGWUQsH7yuqAi9+6d o1Pg== X-Gm-Message-State: AOJu0YxrGY6h2RPurV0ddEQNXOb4S5JnVx934qwivWXKAPgTGZ/K5E4M B8WLigwkNYAl2Lt8y5wxZfQbFt2stFiedLHl0ycfEjNjggFQuDVwoz/1nHZ5ZJoqlStLbKLG/vm Iy772s9l2ZtVyB8xR5WxZZ3SEQ7NYQ/mKfcij X-Gm-Gg: AeBDievbSd7fchn67w5fAiSQL0EKYJAs+HVwZ/sxM6k1YEq+h6f2UYq8W2W+JdQKYtP MdHWlvC1JrU5reT8TTdtsAb1sjvyPKvwJF0OqUOQukRyqEQTQb9MTpUtd92Rso2K/EGIEdRbvgZ 5lUoFG/Og5EVfZ2PKuPktiKziHEVV3W4T3YkgrGJc2yTjEL91pEPyHLQY4FG6fVd/B07kcgDK3r aOxQ6EtYbUoUGRML7+vAqylaUfHQBfEfRbUoW0UoXC2gpaem4Cmx5WoI6GfVa4I66bsYBVolO94 nsQRxQgEWzq+Z+3PLg== X-Received: by 2002:a05:6512:39d6:b0:5a2:9bd4:30c7 with SMTP id 2adb3069b0e04-5a337516c84mr3658447e87.0.1775471697017; Mon, 06 Apr 2026 03:34:57 -0700 (PDT) MIME-Version: 1.0 From: =?UTF-8?B?0JjQu9GM0Y8g0KHQtdGA0LHQuNC9?= Date: Mon, 6 Apr 2026 14:34:45 +0400 X-Gm-Features: AQROBzDnNpGY94tzhYz5Zv724KJTCtmT0xEWtUBoZFnsOZrW735HAJCd11AdQRU Message-ID: Subject: SELECT over partitioned table with LIMIT 1 performance regression issue in PostgreSQL 17 and 18 To: pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000cf5902064ec83787" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cf5902064ec83787 Content-Type: multipart/alternative; boundary="000000000000cf5900064ec83785" --000000000000cf5900064ec83785 Content-Type: text/plain; charset="UTF-8" Hello, I think I may have found a planner regression, or at least a planner corner case, in PostgreSQL 17 and 18 involving a partitioned table, LIMIT 1, and OR-ed timestamp ranges. I could not find an existing report that matches this pattern closely, so I am sending a reproducible example and the observations below to discuss whether or not this behaviour is appropriate and expected. Environment ----------- Observed on: - PostgreSQL 17.9 on Ubuntu 24.04 - PostgreSQL 15.x and 16.x do not show the same bad parent-level plan for the same query pattern Workload pattern ---------------- - A table partitioned by RANGE(ts_col), with weekly partitions - B-tree indexes on ts_col and kind_col - ts_col is highly correlated with heap order - kind_col = 'k_a' is very common (about 81%) - the query uses LIMIT 1 without ORDER BY - the filter is: kind_col IN (...) AND (ts_col in range1 OR ts_col in range2) Problem summary --------------- On PostgreSQL 17, the query on the partitioned parent table may choose a Seq Scan on the child partition instead of a ts_col-based bitmap/index path, even though the ts_col-based path is much faster when forced. What looks suspicious to me is this: 1. PostgreSQL 17 can use the ts_col index efficiently for a very similar query when the OR condition is removed and only one timestamp range is used. 2. PostgreSQL 17 can also execute a forced bitmap path on ts_col very quickly for the same child partition. 3. But for the parent-table query with OR-ed ranges and LIMIT 1, PostgreSQL 17 may choose a Seq Scan with much worse runtime. There is also an important difference between PostgreSQL 16 and 17 here: - On PostgreSQL 16, the child partition by itself may still choose Seq Scan for this LIMIT 1 pattern, but the query on the partitioned parent chooses a Bitmap-based Append plan and runs fast. - On PostgreSQL 17, the parent-level plan no longer does that in this case and regresses to the poor plan shape. Representative observations --------------------------- For the parent query on PostgreSQL 17: EXPLAIN (ANALYZE, BUFFERS) SELECT 1 FROM fact_events WHERE kind_col IN ( 'k_a', 'k_b', 'k_c', 'k_d', 'k_e' ) AND ( (ts_col >= '2026-03-28 07:42:30.405987' AND ts_col < '2026-03-28 08:00:00') OR (ts_col >= '2026-03-31 12:00:00' AND ts_col < '2026-03-31 12:10:25.420965') ) LIMIT 1; Observed bad plan: - Seq Scan on the child partition under Append - runtime around 12 seconds on our production-sized dataset - Rows Removed by Filter: about 33 million On the same PostgreSQL 17 instance: A) Parent query with only one timestamp range: EXPLAIN (ANALYZE, BUFFERS) SELECT 1 FROM fact_events WHERE kind_col IN ( 'k_a', 'k_b', 'k_c', 'k_d', 'k_e' ) AND ts_col >= '2026-03-28 07:42:30.405987' AND ts_col < '2026-03-28 08:00:00' LIMIT 1; This uses the ts_col index and returns very quickly. B) Forced bitmap path on the child partition: SET enable_seqscan = off; SET enable_indexscan = off; EXPLAIN (ANALYZE, BUFFERS, SETTINGS) SELECT 1 FROM fact_events_p2026w13 WHERE kind_col IN ( 'k_a', 'k_b', 'k_c', 'k_d', 'k_e' ) AND ( (ts_col >= '2026-03-28 07:42:30.405987' AND ts_col < '2026-03-28 08:00:00') OR (ts_col >= '2026-03-31 12:00:00' AND ts_col < '2026-03-31 12:10:25.420965') ) LIMIT 1; This uses BitmapOr + Bitmap Heap Scan via ts_col_idx and also returns quickly. C) Default plan for the child partition alone: EXPLAIN (ANALYZE, BUFFERS, SETTINGS) SELECT 1 FROM fact_events_p2026w13 WHERE kind_col IN ( 'k_a', 'k_b', 'k_c', 'k_d', 'k_e' ) AND ( (ts_col >= '2026-03-28 07:42:30.405987' AND ts_col < '2026-03-28 08:00:00') OR (ts_col >= '2026-03-31 12:00:00' AND ts_col < '2026-03-31 12:10:25.420965') ) LIMIT 1; This can still choose Seq Scan on the child relation itself, but on PostgreSQL 16 the parent-level Append plan is still good, while on PostgreSQL 17 the parent-level plan may also fall back to the poor plan shape. Why this looks suspicious ------------------------- - The ts_col-based path is clearly valid and fast. - This is not just a matter of missing statistics or tuning. I tried extended statistics, random_page_cost, effective_cache_size, and combinations of these, and they did not fix the bad parent-level plan. - I can reproduce the issue not only on a tuned production-like setup, but also on plain PostgreSQL containers with no special tuning. - The issue looks related to parent/Append planning for LIMIT 1 on a partitioned table with OR-ed ranges. - PostgreSQL 17 release notes mention planner changes in this area: LIMIT optimization on partitioned tables, inheritance parents, and UNION ALL. Commit that looks potentially relevant is a8a968a82 (Consider cheap startup paths in add_paths_to_append_rel, PG17), which introduced startup-path selection for Append nodes. I have not confirmed this is the root cause, but the behavior and timing match: if Seq Scan wins as cheapest_startup_path because BitmapOr has higher startup cost, the parent-level Append would pick the wrong path for LIMIT queries. My guess is that the planner is underestimating how bad the Seq Scan really is for LIMIT 1 in this case. Since ts_col is very highly correlated with heap order, the matching rows are physically located close to the end of the partition, so the Seq Scan ends up reading a very large part of the table before it finds the first match. Testing ------------ I am attaching two SQL files: - reproduce_preparation_env.sql This file creates the schema, partitions, indexes, and loads the test data. - reproduce.sql This file runs the actual query tests and prints short headings and comments before each step, so the output is easier to read. The tests were performed on four clean Docker containers running PostgreSQL 15, 16, 17, 18 Notes ----- - Exact runtimes will depend on hardware and cache state, but the plan change itself is reproducible. I'm using SET synchronize_seqscans=off; for more deterministic behaviour of the tests - In the attached reproduction scripts, the generated row counts are already large enough to show the difference. - In my production case, correlation(ts_col) is about 0.999 and kind_col = 'k_a' is about 81%. Thanks. --000000000000cf5900064ec83785 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

I think I may have found a planner regressio= n, or at least a planner corner case, in PostgreSQL 17 and 18 involving a p= artitioned table, LIMIT 1, and OR-ed timestamp ranges.

I could not f= ind an existing report that matches this pattern closely, so I am sending a= reproducible example and the observations below to discuss whether or not = this behaviour=C2=A0is appropriate and expected.

Environment
----= -------
Observed on:
- PostgreSQL 17.9 on Ubuntu 24.04
- PostgreSQ= L 15.x and 16.x do not show the same bad parent-level plan for the same que= ry pattern

Workload pattern
----------------
- A table partiti= oned by RANGE(ts_col), with weekly partitions
- B-tree indexes on ts_col= and kind_col
- ts_col is highly correlated with heap order
- kind_co= l =3D 'k_a' is very common (about 81%)
- the query uses LIMIT 1 = without ORDER BY
- the filter is:
=C2=A0 =C2=A0kind_col IN (...)
= =C2=A0 =C2=A0AND (ts_col in range1 OR ts_col in range2)

Problem summ= ary
---------------
On PostgreSQL 17, the query on the partitioned pa= rent table may choose a Seq Scan on the child partition instead of a ts_col= -based bitmap/index path, even though the ts_col-based path is much faster = when forced.

What looks suspicious to me is this:

1. PostgreS= QL 17 can use the ts_col index efficiently for a very similar query when th= e OR condition is removed and only one timestamp range is used.
2. Postg= reSQL 17 can also execute a forced bitmap path on ts_col very quickly for t= he same child partition.
3. But for the parent-table query with OR-ed ra= nges and LIMIT 1, PostgreSQL 17 may choose a Seq Scan with much worse runti= me.

There is also an important difference between PostgreSQL 16 and = 17 here:

- On PostgreSQL 16, the child partition by itself may still= choose Seq Scan for this LIMIT 1 pattern, but the query on the partitioned= parent chooses a Bitmap-based Append plan and runs fast.
- On PostgreSQ= L 17, the parent-level plan no longer does that in this case and regresses = to the poor plan shape.

Representative observations
-------------= --------------
For the parent query on PostgreSQL 17:

EXPLAIN (AN= ALYZE, BUFFERS)
SELECT 1
FROM fact_events
WHERE kind_col IN (
= =C2=A0 =C2=A0'k_a', 'k_b', 'k_c', 'k_d', &#= 39;k_e'
)
AND (
=C2=A0 =C2=A0 =C2=A0 (ts_col >=3D '2026= -03-28 07:42:30.405987' AND ts_col < '2026-03-28 08:00:00')<= br>=C2=A0 =C2=A0OR (ts_col >=3D '2026-03-31 12:00:00' =C2=A0 =C2= =A0 =C2=A0 =C2=A0AND ts_col < '2026-03-31 12:10:25.420965')
)=
LIMIT 1;

Observed bad plan:
- Seq Scan on the child partition= under Append
- runtime around 12 seconds on our production-sized datase= t
- Rows Removed by Filter: about 33 million

On the same PostgreS= QL 17 instance:

A) Parent query with only one timestamp range:
EX= PLAIN (ANALYZE, BUFFERS)
SELECT 1
FROM fact_events
WHERE kind_col = IN (
=C2=A0 =C2=A0'k_a', 'k_b', 'k_c', 'k_d&= #39;, 'k_e'
)
AND ts_col >=3D '2026-03-28 07:42:30.405= 987'
AND ts_col < =C2=A0'2026-03-28 08:00:00'
LIMIT 1;=

This uses the ts_col index and returns very quickly.

B) Forc= ed bitmap path on the child partition:
SET enable_seqscan =3D off;
SE= T enable_indexscan =3D off;

EXPLAIN (ANALYZE, BUFFERS, SETTINGS)
= SELECT 1
FROM fact_events_p2026w13
WHERE kind_col IN (
=C2=A0 =C2= =A0'k_a', 'k_b', 'k_c', 'k_d', 'k_e'= ;
)
AND (
=C2=A0 =C2=A0 =C2=A0 (ts_col >=3D '2026-03-28 07:= 42:30.405987' AND ts_col < '2026-03-28 08:00:00')
=C2=A0 = =C2=A0OR (ts_col >=3D '2026-03-31 12:00:00' =C2=A0 =C2=A0 =C2=A0= =C2=A0AND ts_col < '2026-03-31 12:10:25.420965')
)
LIMIT = 1;

This uses BitmapOr + Bitmap Heap Scan via ts_col_idx and also ret= urns quickly.

C) Default plan for the child partition alone:
EXPL= AIN (ANALYZE, BUFFERS, SETTINGS)
SELECT 1
FROM fact_events_p2026w13WHERE kind_col IN (
=C2=A0 =C2=A0'k_a', 'k_b', 'k_= c', 'k_d', 'k_e'
)
AND (
=C2=A0 =C2=A0 =C2=A0 = (ts_col >=3D '2026-03-28 07:42:30.405987' AND ts_col < '2= 026-03-28 08:00:00')
=C2=A0 =C2=A0OR (ts_col >=3D '2026-03-31= 12:00:00' =C2=A0 =C2=A0 =C2=A0 =C2=A0AND ts_col < '2026-03-31 1= 2:10:25.420965')
)
LIMIT 1;

This can still choose Seq Scan= on the child relation itself, but on PostgreSQL 16 the parent-level Append= plan is still good, while on PostgreSQL 17 the parent-level plan may also = fall back to the poor plan shape.

Why this looks suspicious
-----= --------------------
- The ts_col-based path is clearly valid and fast.<= br>- This is not just a matter of missing statistics or tuning. I tried ext= ended statistics, random_page_cost, effective_cache_size, and combinations = of these, and they did not fix the bad parent-level plan.
- I can reprod= uce the issue not only on a tuned production-like setup, but also on plain = PostgreSQL containers with no special tuning.
- The issue looks related = to parent/Append planning for LIMIT 1 on a partitioned table with OR-ed ran= ges.
- PostgreSQL 17 release notes mention planner changes in this area:= LIMIT optimization on partitioned tables, inheritance parents, and UNION A= LL. Commit that looks potentially relevant is a8a968a82 (Consider cheap sta= rtup paths in add_paths_to_append_rel, PG17), which introduced startup-path= selection for Append nodes. I have not confirmed this is the root cause, b= ut the behavior and timing match: if Seq Scan wins as cheapest_startup_path= because BitmapOr has higher startup cost, the parent-level Append would pi= ck the wrong path for LIMIT queries.

My guess is that the planner is= underestimating how bad the Seq Scan really is for LIMIT 1 in this case. S= ince ts_col is very highly correlated with heap order, the matching rows ar= e physically located close to the end of the partition, so the Seq Scan end= s up reading a very large part of the table before it finds the first match= .

Testing
------------
I am attaching two SQL files:
- repr= oduce_preparation_env.sql =C2=A0
=C2=A0This file creates the schema, par= titions, indexes, and loads the test data.
- reproduce.sql =C2=A0
=C2= =A0This file runs the actual query tests and prints short headings and comm= ents before each step, so the output is easier to read.

The tests we= re performed on four clean Docker containers running PostgreSQL 15, 16, 17,= 18

Notes
-----
- Exact runtimes will depend on hardware and c= ache state, but the plan change itself is reproducible. I'm using=C2=A0= SET synchronize_seqscans=3Doff; for more deterministic behaviour of the tes= ts
- In the attached reproduction scripts, the generated row counts are = already large enough to show the difference.
- In my production case, co= rrelation(ts_col) is about 0.999 and kind_col =3D 'k_a' is about 81= %.

Thanks.
--000000000000cf5900064ec83785-- --000000000000cf5902064ec83787 Content-Type: application/octet-stream; name="reproduce_preparation_env.sql" Content-Disposition: attachment; filename="reproduce_preparation_env.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn1qa4z0 RFJPUCBUWVBFIElGIEVYSVNUUyBldnRfa2luZCBDQVNDQURFOwpDUkVBVEUgVFlQRSBldnRfa2lu ZCBBUyBFTlVNICgKICAna19hJywKICAna19mJywKICAna19nJywKICAna19oJywKICAna19pJywK ICAna19kJywKICAna19jJywKICAna19qJywKICAna19rJywKICAna19sJywKICAna19iJywKICAn a19lJwopOwoKRFJPUCBUQUJMRSBJRiBFWElTVFMgZmFjdF9ldmVudHMgQ0FTQ0FERTsKCkNSRUFU RSBUQUJMRSBmYWN0X2V2ZW50cyAoCiAgICBwa19pZCBiaWdpbnQgTk9UIE5VTEwsCiAgICBncnBf aWQgYmlnaW50IE5PVCBOVUxMLAogICAgcmVmX2lkIGJpZ2ludCBOT1QgTlVMTCwKICAgIHJlZl9r aW5kIHZhcmNoYXIoMjU1KSBOT1QgTlVMTCwKICAgIG1ldHJpY19hIGJpZ2ludCBOT1QgTlVMTCwK ICAgIHRzX2NvbCB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUgTk9UIE5VTEwsCiAgICBhdXhf dHh0IHZhcmNoYXIsCiAgICBtZXRyaWNfYiBiaWdpbnQsCiAgICBraW5kX2NvbCBldnRfa2luZCBO T1QgTlVMTCwKICAgIG1ldHJpY19jIGJpZ2ludCwKICAgIG1ldHJpY19kIG51bWVyaWMoNTQsMTgp LAogICAgbWV0cmljX2UgbnVtZXJpYyg1NCwxOCkgREVGQVVMVCAwLAogICAgbWV0cmljX2YgbnVt ZXJpYyg1NCwxOCksCiAgICBhdXhfdHMgdGltZXN0YW1wKDYpIHdpdGhvdXQgdGltZSB6b25lLAog ICAgUFJJTUFSWSBLRVkgKHRzX2NvbCwgcGtfaWQpCikgUEFSVElUSU9OIEJZIFJBTkdFICh0c19j b2wpOwoKQ1JFQVRFIFRBQkxFIGZhY3RfZXZlbnRzX3AyMDI2dzEzClBBUlRJVElPTiBPRiBmYWN0 X2V2ZW50cwpGT1IgVkFMVUVTIEZST00gKCcyMDI2LTAzLTIzIDAwOjAwOjAwJykgVE8gKCcyMDI2 LTAzLTMwIDAwOjAwOjAwJyk7CgpDUkVBVEUgVEFCTEUgZmFjdF9ldmVudHNfcDIwMjZ3MTQKUEFS VElUSU9OIE9GIGZhY3RfZXZlbnRzCkZPUiBWQUxVRVMgRlJPTSAoJzIwMjYtMDMtMzAgMDA6MDA6 MDAnKSBUTyAoJzIwMjYtMDQtMDYgMDA6MDA6MDAnKTsKCkNSRUFURSBJTkRFWCBmYWN0X2V2ZW50 c19wMjAyNncxM190c19pZHgKICBPTiBmYWN0X2V2ZW50c19wMjAyNncxMyAodHNfY29sKTsKQ1JF QVRFIElOREVYIGZhY3RfZXZlbnRzX3AyMDI2dzEzX2tpbmRfaWR4CiAgT04gZmFjdF9ldmVudHNf cDIwMjZ3MTMgKGtpbmRfY29sKTsKCkNSRUFURSBJTkRFWCBmYWN0X2V2ZW50c19wMjAyNncxNF90 c19pZHgKICBPTiBmYWN0X2V2ZW50c19wMjAyNncxNCAodHNfY29sKTsKQ1JFQVRFIElOREVYIGZh Y3RfZXZlbnRzX3AyMDI2dzE0X2tpbmRfaWR4CiAgT04gZmFjdF9ldmVudHNfcDIwMjZ3MTQgKGtp bmRfY29sKTsKClNFVCBzeW5jaHJvbm91c19jb21taXQgPSBvZmY7ClNFVCBtYWludGVuYW5jZV93 b3JrX21lbSA9ICcxR0InOwoKV0lUSCBwIEFTICgKICBTRUxFQ1QKICAgIDEyMDAwMDAwOjpiaWdp bnQgQVMgcDEzX3Jvd3MsCiAgICA2MDAwMDAwOjpiaWdpbnQgIEFTIHAxNF9yb3dzCikKSU5TRVJU IElOVE8gZmFjdF9ldmVudHMKU0VMRUNUCiAgICBncyBBUyBwa19pZCwKICAgIDEgKyAoZ3MgJSA1 MDAwMDApIEFTIGdycF9pZCwKICAgIGdzIEFTIHJlZl9pZCwKICAgICdSJzo6dmFyY2hhcigyNTUp IEFTIHJlZl9raW5kLAogICAgMTAwIEFTIG1ldHJpY19hLAogICAgJzIwMjYtMDMtMjMgMDA6MDA6 MDAnOjp0aW1lc3RhbXAKICAgICAgKyAoKGdzIC0gMSk6Om51bWVyaWMgLyAoU0VMRUNUIHAxM19y b3dzIEZST00gcCkpICogaW50ZXJ2YWwgJzcgZGF5cycKICAgICAgKyAoKGdzICUgMTApICogaW50 ZXJ2YWwgJzEgbWljcm9zZWNvbmQnKSBBUyB0c19jb2wsCiAgICBOVUxMOjp2YXJjaGFyIEFTIGF1 eF90eHQsCiAgICBOVUxMOjpiaWdpbnQgQVMgbWV0cmljX2IsCiAgICBDQVNFCiAgICAgIFdIRU4g Z3MgJSAxMDAwMDAgPCA4MTE1MCBUSEVOICdrX2EnOjpldnRfa2luZAogICAgICBXSEVOIGdzICUg MTAwMDAwIDwgOTk1NjMgVEhFTiAna19mJzo6ZXZ0X2tpbmQKICAgICAgV0hFTiBncyAlIDEwMDAw MCA8IDk5NzkzIFRIRU4gJ2tfZyc6OmV2dF9raW5kCiAgICAgIFdIRU4gZ3MgJSAxMDAwMDAgPCA5 OTg4MyBUSEVOICdrX2gnOjpldnRfa2luZAogICAgICBXSEVOIGdzICUgMTAwMDAwIDwgOTk5Mjkg VEhFTiAna19pJzo6ZXZ0X2tpbmQKICAgICAgV0hFTiBncyAlIDEwMDAwMCA8IDk5OTU2IFRIRU4g J2tfZCc6OmV2dF9raW5kCiAgICAgIFdIRU4gZ3MgJSAxMDAwMDAgPCA5OTk2NiBUSEVOICdrX2Mn OjpldnRfa2luZAogICAgICBXSEVOIGdzICUgMTAwMDAwIDwgOTk5NzYgVEhFTiAna19qJzo6ZXZ0 X2tpbmQKICAgICAgV0hFTiBncyAlIDEwMDAwMCA8IDk5OTg2IFRIRU4gJ2tfayc6OmV2dF9raW5k CiAgICAgIFdIRU4gZ3MgJSAxMDAwMDAgPCA5OTk5MyBUSEVOICdrX2wnOjpldnRfa2luZAogICAg ICBXSEVOIGdzICUgMTAwMDAwIDwgMTAwMDAwIFRIRU4gJ2tfYic6OmV2dF9raW5kCiAgICAgIEVM U0UgJ2tfZSc6OmV2dF9raW5kCiAgICBFTkQgQVMga2luZF9jb2wsCiAgICBOVUxMOjpiaWdpbnQs CiAgICBOVUxMOjpudW1lcmljKDU0LDE4KSwKICAgIDA6Om51bWVyaWMoNTQsMTgpLAogICAgTlVM TDo6bnVtZXJpYyg1NCwxOCksCiAgICBOVUxMOjp0aW1lc3RhbXAoNikKRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgKFNFTEVDVCBwMTNfcm93cyBGUk9NIHApKSBBUyBnczsKCldJVEggcCBBUyAoCiAg U0VMRUNUCiAgICAxMjAwMDAwMDo6YmlnaW50IEFTIHAxM19yb3dzLAogICAgNjAwMDAwMDo6Ymln aW50ICBBUyBwMTRfcm93cwopCklOU0VSVCBJTlRPIGZhY3RfZXZlbnRzClNFTEVDVAogICAgKFNF TEVDVCBwMTNfcm93cyBGUk9NIHApICsgZ3MgQVMgcGtfaWQsCiAgICAxICsgKGdzICUgNTAwMDAw KSBBUyBncnBfaWQsCiAgICAoU0VMRUNUIHAxM19yb3dzIEZST00gcCkgKyBncyBBUyByZWZfaWQs CiAgICAnUic6OnZhcmNoYXIoMjU1KSBBUyByZWZfa2luZCwKICAgIDEwMCBBUyBtZXRyaWNfYSwK ICAgICcyMDI2LTAzLTMwIDAwOjAwOjAwJzo6dGltZXN0YW1wCiAgICAgICsgKChncyAtIDEpOjpu dW1lcmljIC8gKFNFTEVDVCBwMTRfcm93cyBGUk9NIHApKSAqIGludGVydmFsICc3IGRheXMnCiAg ICAgICsgKChncyAlIDEwKSAqIGludGVydmFsICcxIG1pY3Jvc2Vjb25kJykgQVMgdHNfY29sLAog ICAgTlVMTDo6dmFyY2hhciBBUyBhdXhfdHh0LAogICAgTlVMTDo6YmlnaW50IEFTIG1ldHJpY19i LAogICAgQ0FTRQogICAgICBXSEVOIGdzICUgMTAwMDAwIDwgODE2ODAgVEhFTiAna19hJzo6ZXZ0 X2tpbmQKICAgICAgV0hFTiBncyAlIDEwMDAwMCA8IDk5NTQzIFRIRU4gJ2tfZic6OmV2dF9raW5k CiAgICAgIFdIRU4gZ3MgJSAxMDAwMDAgPCA5OTc2MyBUSEVOICdrX2cnOjpldnRfa2luZAogICAg ICBXSEVOIGdzICUgMTAwMDAwIDwgOTk4MDkgVEhFTiAna19oJzo6ZXZ0X2tpbmQKICAgICAgV0hF TiBncyAlIDEwMDAwMCA8IDk5ODc5IFRIRU4gJ2tfaSc6OmV2dF9raW5kCiAgICAgIFdIRU4gZ3Mg JSAxMDAwMDAgPCA5OTkwNiBUSEVOICdrX2QnOjpldnRfa2luZAogICAgICBXSEVOIGdzICUgMTAw MDAwIDwgOTk5MTYgVEhFTiAna19jJzo6ZXZ0X2tpbmQKICAgICAgV0hFTiBncyAlIDEwMDAwMCA8 IDk5OTI2IFRIRU4gJ2tfaic6OmV2dF9raW5kCiAgICAgIFdIRU4gZ3MgJSAxMDAwMDAgPCA5OTkz NiBUSEVOICdrX2snOjpldnRfa2luZAogICAgICBXSEVOIGdzICUgMTAwMDAwIDwgOTk5NDMgVEhF TiAna19sJzo6ZXZ0X2tpbmQKICAgICAgV0hFTiBncyAlIDEwMDAwMCA8IDEwMDAwMCBUSEVOICdr X2InOjpldnRfa2luZAogICAgICBFTFNFICdrX2UnOjpldnRfa2luZAogICAgRU5EIEFTIGtpbmRf Y29sLAogICAgTlVMTDo6YmlnaW50LAogICAgTlVMTDo6bnVtZXJpYyg1NCwxOCksCiAgICAwOjpu dW1lcmljKDU0LDE4KSwKICAgIE5VTEw6Om51bWVyaWMoNTQsMTgpLAogICAgTlVMTDo6dGltZXN0 YW1wKDYpCkZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIChTRUxFQ1QgcDE0X3Jvd3MgRlJPTSBwKSkg QVMgZ3M7CgpWQUNVVU0gKEFOQUxZWkUpIGZhY3RfZXZlbnRzX3AyMDI2dzEzOwpWQUNVVU0gKEFO QUxZWkUpIGZhY3RfZXZlbnRzX3AyMDI2dzE0OwpBTkFMWVpFIGZhY3RfZXZlbnRzOwoKCg== --000000000000cf5902064ec83787 Content-Type: application/octet-stream; name="reproduce.sql" Content-Disposition: attachment; filename="reproduce.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn1qa5a1 XHNldCBPTl9FUlJPUl9TVE9QIG9uClx0aW1pbmcgb24KClxlY2hvICcnClxlY2hvICc9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nClxl Y2hvICdSRVBSTyBURVNUIFNVSVRFOiBwbGFubmVyIGNob2ljZSBmb3IgcGFydGl0aW9uZWQgdGFi bGUgKyBMSU1JVCAxJwpcZWNobyAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09JwpcZWNobyAnJwoKXGVjaG8gJ1NFVCBzeW5jaHJvbml6 ZV9zZXFzY2Fucz1vZmY7IGZvciBtb3JlIGRldGVybWVuaXN0aWMgYmVoYXZpb3VyJwpTRVQgc3lu Y2hyb25pemVfc2Vxc2NhbnM9b2ZmOwpzZWxlY3QgdmVyc2lvbigpOwpcZWNobyAnLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJwpcZWNo byAnVEVTVCAxOiBDaGVjayBjb3JyZWxhdGlvbih0c19jb2wpIG9uIGNoaWxkIHBhcnRpdGlvbnMn ClxlY2hvICdNZWFuaW5nOiBoaWdoIGNvcnJlbGF0aW9uIG1lYW5zIHRzX2NvbCBpcyBjbG9zZSB0 byBoZWFwIG9yZGVyJwpcZWNobyAnU1FMOicKXGVjaG8gJ1NFTEVDVCB0YWJsZW5hbWUsIGF0dG5h bWUsIGNvcnJlbGF0aW9uJwpcZWNobyAnRlJPTSBwZ19zdGF0cycKXGVjaG8gJ1dIRVJFIHRhYmxl bmFtZSBJTiAoJydmYWN0X2V2ZW50c19wMjAyNncxMycnLCAnJ2ZhY3RfZXZlbnRzX3AyMDI2dzE0 JycpJwpcZWNobyAnICBBTkQgYXR0bmFtZSA9ICcndHNfY29sJycnClxlY2hvICdPUkRFUiBCWSB0 YWJsZW5hbWU7JwpcZWNobyAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tJwpTRUxFQ1QgdGFibGVuYW1lLCBhdHRuYW1lLCBjb3JyZWxh dGlvbgpGUk9NIHBnX3N0YXRzCldIRVJFIHRhYmxlbmFtZSBJTiAoJ2ZhY3RfZXZlbnRzX3AyMDI2 dzEzJywgJ2ZhY3RfZXZlbnRzX3AyMDI2dzE0JykKICBBTkQgYXR0bmFtZSA9ICd0c19jb2wnCk9S REVSIEJZIHRhYmxlbmFtZTsKClxlY2hvICcnClxlY2hvICctLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nClxlY2hvICdURVNUIDI6IENo ZWNrIGVzdGltYXRlZCBwYXJ0aXRpb24gc2l6ZXMnClxlY2hvICdNZWFuaW5nOiByZWx0dXBsZXMv cmVscGFnZXMgaGVscCBleHBsYWluIHBsYW5uZXIgY29zdCBjaG9pY2VzJwpcZWNobyAnU1FMOicK XGVjaG8gJ1NFTEVDVCByZWxuYW1lLCByZWx0dXBsZXMsIHJlbHBhZ2VzJwpcZWNobyAnRlJPTSBw Z19jbGFzcycKXGVjaG8gJ1dIRVJFIHJlbG5hbWUgSU4gKCcnZmFjdF9ldmVudHNfcDIwMjZ3MTMn JywgJydmYWN0X2V2ZW50c19wMjAyNncxNCcnKScKXGVjaG8gJ09SREVSIEJZIHJlbG5hbWU7Jwpc ZWNobyAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tJwpTRUxFQ1QKICAgIHJlbG5hbWUsCiAgICByZWx0dXBsZXMsCiAgICByZWxwYWdl cwpGUk9NIHBnX2NsYXNzCldIRVJFIHJlbG5hbWUgSU4gKAogICAgJ2ZhY3RfZXZlbnRzX3AyMDI2 dzEzJywKICAgICdmYWN0X2V2ZW50c19wMjAyNncxNCcKKQpPUkRFUiBCWSByZWxuYW1lOwoKXGVj aG8gJycKXGVjaG8gJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLScKXGVjaG8gJ1RFU1QgMzogUGFyZW50IHF1ZXJ5IHdpdGggT1ItZWQg dGltZXN0YW1wIHJhbmdlcyBhbmQgTElNSVQgMScKXGVjaG8gJ01lYW5pbmc6IG1haW4gcmVncmVz c2lvbi9jb3JuZXItY2FzZSBjYW5kaWRhdGUnClxlY2hvICdFeHBlY3RhdGlvbjogUEcxNyBtYXkg Y2hvb3NlIGEgYmFkIFNlcSBTY2FuIGhlcmUnClxlY2hvICdTUUw6JwpcZWNobyAnRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUywgU0VUVElOR1MpJwpcZWNobyAnU0VMRUNUIDEnClxlY2hvICdGUk9N IGZhY3RfZXZlbnRzJwpcZWNobyAnV0hFUkUga2luZF9jb2wgSU4gKCcna19hJycsICcna19iJycs ICcna19jJycsICcna19kJycsICcna19lJycpJwpcZWNobyAnQU5EICgnClxlY2hvICcgICAgICAg KHRzX2NvbCA+PSAnJzIwMjYtMDMtMjggMDc6NDI6MzAuNDA1OTg3JycgQU5EIHRzX2NvbCA8ICcn MjAyNi0wMy0yOCAwODowMDowMCcnKScKXGVjaG8gJyAgICBPUiAodHNfY29sID49ICcnMjAyNi0w My0zMSAxMjowMDowMCcnICAgICAgICBBTkQgdHNfY29sIDwgJycyMDI2LTAzLTMxIDEyOjEwOjI1 LjQyMDk2NScnKScKXGVjaG8gJyknClxlY2hvICdMSU1JVCAxOycKXGVjaG8gJy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgU0VUVElOR1MpClNFTEVDVCAxCkZST00gZmFjdF9ldmVudHMK V0hFUkUga2luZF9jb2wgSU4gKAogICAgJ2tfYScsICdrX2InLCAna19jJywgJ2tfZCcsICdrX2Un CikKQU5EICgKICAgICAgICh0c19jb2wgPj0gJzIwMjYtMDMtMjggMDc6NDI6MzAuNDA1OTg3JyBB TkQgdHNfY29sIDwgJzIwMjYtMDMtMjggMDg6MDA6MDAnKQogICAgT1IgKHRzX2NvbCA+PSAnMjAy Ni0wMy0zMSAxMjowMDowMCcgICAgICAgIEFORCB0c19jb2wgPCAnMjAyNi0wMy0zMSAxMjoxMDoy NS40MjA5NjUnKQopCkxJTUlUIDE7CgpcZWNobyAnJwpcZWNobyAnLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJwpcZWNobyAnVEVTVCA0 OiBQYXJlbnQgcXVlcnkgd2l0aCBhIHNpbmdsZSB0aW1lc3RhbXAgcmFuZ2UgYW5kIExJTUlUIDEn ClxlY2hvICdNZWFuaW5nOiBjb250cm9sIGNhc2U7IHBsYW5uZXIgc2hvdWxkIHVzdWFsbHkgdXNl IHRzX2NvbCBpbmRleCcKXGVjaG8gJ1NRTDonClxlY2hvICdFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTLCBTRVRUSU5HUyknClxlY2hvICdTRUxFQ1QgMScKXGVjaG8gJ0ZST00gZmFjdF9ldmVudHMn ClxlY2hvICdXSEVSRSBraW5kX2NvbCBJTiAoJydrX2EnJywgJydrX2InJywgJydrX2MnJywgJydr X2QnJywgJydrX2UnJyknClxlY2hvICdBTkQgdHNfY29sID49ICcnMjAyNi0wMy0yOCAwNzo0Mjoz MC40MDU5ODcnJycKXGVjaG8gJ0FORCB0c19jb2wgPCAgJycyMDI2LTAzLTI4IDA4OjAwOjAwJycn ClxlY2hvICdMSU1JVCAxOycKXGVjaG8gJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywg U0VUVElOR1MpClNFTEVDVCAxCkZST00gZmFjdF9ldmVudHMKV0hFUkUga2luZF9jb2wgSU4gKAog ICAgJ2tfYScsICdrX2InLCAna19jJywgJ2tfZCcsICdrX2UnCikKQU5EIHRzX2NvbCA+PSAnMjAy Ni0wMy0yOCAwNzo0MjozMC40MDU5ODcnCkFORCB0c19jb2wgPCAgJzIwMjYtMDMtMjggMDg6MDA6 MDAnCkxJTUlUIDE7CgpcZWNobyAnJwpcZWNobyAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJwpcZWNobyAnVEVTVCA1OiBGb3JjZSBi aXRtYXAgcGF0aCBvbiBjaGlsZCBwYXJ0aXRpb24nClxlY2hvICdNZWFuaW5nOiBkaXNhYmxlIHNl cXNjYW4gYW5kIHBsYWluIGluZGV4c2NhbiB0byBmb3JjZSBiaXRtYXAgcGF0aCcKXGVjaG8gJ0V4 cGVjdGF0aW9uOiBwcm92ZXMgdHNfY29sLWJhc2VkIGJpdG1hcCBwYXRoIGlzIHZpYWJsZScKXGVj aG8gJ1NRTDonClxlY2hvICdTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7JwpcZWNobyAnU0VUIGVu YWJsZV9pbmRleHNjYW4gPSBvZmY7JwpcZWNobyAnJwpcZWNobyAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgU0VUVElOR1MpJwpcZWNobyAnU0VMRUNUIDEnClxlY2hvICdGUk9NIGZhY3RfZXZl bnRzX3AyMDI2dzEzJwpcZWNobyAnV0hFUkUga2luZF9jb2wgSU4gKCcna19hJycsICcna19iJycs ICcna19jJycsICcna19kJycsICcna19lJycpJwpcZWNobyAnQU5EICgnClxlY2hvICcgICAgICAg KHRzX2NvbCA+PSAnJzIwMjYtMDMtMjggMDc6NDI6MzAuNDA1OTg3JycgQU5EIHRzX2NvbCA8ICcn MjAyNi0wMy0yOCAwODowMDowMCcnKScKXGVjaG8gJyAgICBPUiAodHNfY29sID49ICcnMjAyNi0w My0zMSAxMjowMDowMCcnICAgICAgICBBTkQgdHNfY29sIDwgJycyMDI2LTAzLTMxIDEyOjEwOjI1 LjQyMDk2NScnKScKXGVjaG8gJyknClxlY2hvICdMSU1JVCAxOycKXGVjaG8gJy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOwpTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKCkVYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMsIFNFVFRJTkdTKQpTRUxFQ1QgMQpGUk9NIGZhY3RfZXZlbnRzX3Ay MDI2dzEzCldIRVJFIGtpbmRfY29sIElOICgKICAgICdrX2EnLCAna19iJywgJ2tfYycsICdrX2Qn LCAna19lJwopCkFORCAoCiAgICAgICAodHNfY29sID49ICcyMDI2LTAzLTI4IDA3OjQyOjMwLjQw NTk4NycgQU5EIHRzX2NvbCA8ICcyMDI2LTAzLTI4IDA4OjAwOjAwJykKICAgIE9SICh0c19jb2wg Pj0gJzIwMjYtMDMtMzEgMTI6MDA6MDAnICAgICAgICBBTkQgdHNfY29sIDwgJzIwMjYtMDMtMzEg MTI6MTA6MjUuNDIwOTY1JykKKQpMSU1JVCAxOwoKXGVjaG8gJycKXGVjaG8gJy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKXGVjaG8g J1RFU1QgNjogUmVzZXQgcGxhbm5lciBHVUNzIGJhY2sgdG8gZGVmYXVsdHMnClxlY2hvICdTUUw6 JwpcZWNobyAnUkVTRVQgZW5hYmxlX3NlcXNjYW47JwpcZWNobyAnUkVTRVQgZW5hYmxlX2luZGV4 c2NhbjsnClxlY2hvICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0nClJFU0VUIGVuYWJsZV9zZXFzY2FuOwpSRVNFVCBlbmFibGVfaW5k ZXhzY2FuOwoKXGVjaG8gJycKXGVjaG8gJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKXGVjaG8gJ1RFU1QgNzogRGVmYXVsdCBjaGls ZC1wYXJ0aXRpb24gcXVlcnkgd2l0aCBPUi1lZCByYW5nZXMgYW5kIExJTUlUIDEnClxlY2hvICdN ZWFuaW5nOiBjb21wYXJlIGRlZmF1bHQgY2hpbGQgcGxhbiB2cyBmb3JjZWQgYml0bWFwIHBsYW4n ClxlY2hvICdTUUw6JwpcZWNobyAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgU0VUVElOR1Mp JwpcZWNobyAnU0VMRUNUIDEnClxlY2hvICdGUk9NIGZhY3RfZXZlbnRzX3AyMDI2dzEzJwpcZWNo byAnV0hFUkUga2luZF9jb2wgSU4gKCcna19hJycsICcna19iJycsICcna19jJycsICcna19kJycs ICcna19lJycpJwpcZWNobyAnQU5EICgnClxlY2hvICcgICAgICAgKHRzX2NvbCA+PSAnJzIwMjYt MDMtMjggMDc6NDI6MzAuNDA1OTg3JycgQU5EIHRzX2NvbCA8ICcnMjAyNi0wMy0yOCAwODowMDow MCcnKScKXGVjaG8gJyAgICBPUiAodHNfY29sID49ICcnMjAyNi0wMy0zMSAxMjowMDowMCcnICAg ICAgICBBTkQgdHNfY29sIDwgJycyMDI2LTAzLTMxIDEyOjEwOjI1LjQyMDk2NScnKScKXGVjaG8g JyknClxlY2hvICdMSU1JVCAxOycKXGVjaG8gJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UywgU0VUVElOR1MpClNFTEVDVCAxCkZST00gZmFjdF9ldmVudHNfcDIwMjZ3MTMKV0hFUkUga2lu ZF9jb2wgSU4gKAogICAgJ2tfYScsICdrX2InLCAna19jJywgJ2tfZCcsICdrX2UnCikKQU5EICgK ICAgICAgICh0c19jb2wgPj0gJzIwMjYtMDMtMjggMDc6NDI6MzAuNDA1OTg3JyBBTkQgdHNfY29s IDwgJzIwMjYtMDMtMjggMDg6MDA6MDAnKQogICAgT1IgKHRzX2NvbCA+PSAnMjAyNi0wMy0zMSAx MjowMDowMCcgICAgICAgIEFORCB0c19jb2wgPCAnMjAyNi0wMy0zMSAxMjoxMDoyNS40MjA5NjUn KQopCkxJTUlUIDE7CgpcZWNobyAnJwpcZWNobyAnPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JwpcZWNobyAnRU5EIE9GIFJFUFJPIFRF U1QgU1VJVEUnClxlY2hvICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0nClxlY2hvICcn --000000000000cf5902064ec83787--