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.94.2) (envelope-from ) id 1tjCxZ-007Ghe-Gj for pgsql-hackers@arkaria.postgresql.org; Sat, 15 Feb 2025 07:51:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tjCxW-00HP6h-Aq for pgsql-hackers@arkaria.postgresql.org; Sat, 15 Feb 2025 07:51:30 +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.94.2) (envelope-from ) id 1tjCxV-00HP6Z-Qt for pgsql-hackers@lists.postgresql.org; Sat, 15 Feb 2025 07:51:30 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tjCxT-000ul7-21 for pgsql-hackers@postgresql.org; Sat, 15 Feb 2025 07:51:28 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-220c8eb195aso57518225ad.0 for ; Fri, 14 Feb 2025 23:51:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739605886; x=1740210686; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Rat+i9Z6X9/Q0dpyNv23QH8CB36GHTYAalR89e0CMPE=; b=m/qL32JubSEeK7Di7HdrilJ9zqyXmt3QUPfA0lGrtWEQafF/HSlIHHMmKzwA8FCGtO hJcsKeOmyh06zdYGuF9obPSwlKV+10c3zTA3Vr7QSHLgn28JZQpYejem8lyqd8uM+dwn fp1ZxL1AvSksQAywjVVxF/ZyKrrXKyVw+BQrMV8lT77KvbkMqz8PJ9SSutZxWQE2MBYm Bb4T3jZ6P2PCMzxe0NIFJGDixDrkrAITZNjekZoKpfDvauo+sZ5aom6qqRV+bFitSBjE 10ftldndYQ6rj1hJJqBOxxNGTbKSrnHKfB+JHFqBOslcFZzhTWEUKuOH80MxhPFBYOkD nO1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739605886; x=1740210686; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Rat+i9Z6X9/Q0dpyNv23QH8CB36GHTYAalR89e0CMPE=; b=K6WfWfJIDWnov+Ddysmhai5aSsCAO4QHG5nqmrHaY/2ch+2XgFdThNC9H8Igvx5Fc3 4vQLxJLJejJfM8BijCzCy4FI6gFRLoxUVhY2/C9yO6wOELCDNTgXmIxn99EijAmSq3P3 SwLuPj67QbyKBocClhhsBL1jFL7u6mG7ocPBFlmbdDOPFZd4VuDbUtxkRrRO89JwqllS t1fAYoXgHQcIzPaCtxgj9IgWXMc6lz0u2WKEg3w9PMF0eTD+YgKV+NGniCTxd7+Qt++r 9LZFwcIxHAuDCGdL4/MhY+dyGkSy7yao1iL56P+Fz/u8Jsm1q563bK5YJqJUPop5pCfv JcQQ== X-Forwarded-Encrypted: i=1; AJvYcCXbiLh0O3ZnhLBbfxwf5/18oW0F42eHgL4DrXMYV96ljjnGE8r4DgTGQCONyp0XOMFNmV0WpYAhQCtyTMJn@postgresql.org X-Gm-Message-State: AOJu0YwHSwxo/yzlIp5RbAM4IFQQ3a2FUMbo9o43pKg7MjTn3PxIE3+3 nxjvMSK6nei8gm5xxuDB4z2wlQja60D9KAioTA/8guVqymyGuHfJtibJIR9LMlOIe6Ej9h3V8um in9n/uMCbhWR3kfmjQl2uU1tAQcw= X-Gm-Gg: ASbGncsoRS8hIOs26XNwbxAvozfTs2NK0t3KS9h1E5w6yWH+2kYMs0YCgs1vz5qE7Ia MH3o5UqTtotA7Q1KUI755z5W+FITAq1Methm1RK6z49hzWTxooDxSLXsURs3mAQFukwx6OtVF7Q == X-Google-Smtp-Source: AGHT+IGcf7sZn+rrRFHJrRqXhqrNMcVzmW6Jmx8B5544sEeVz7rvXG2nlEC0NN6TvGJrM61i0uPiaOKyg3UEv3hPYVI= X-Received: by 2002:a05:6a21:7894:b0:1ee:7ac8:8242 with SMTP id adf61e73a8af0-1ee8cb0c995mr3744882637.19.1739605886495; Fri, 14 Feb 2025 23:51:26 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Amit Langote Date: Sat, 15 Feb 2025 16:51:09 +0900 X-Gm-Features: AWEUYZmVSNtz1JicOmZBlcxbHPMq8KwUDzrAwYEIshI25PIBj35nbM1B9wD64Zs Message-ID: Subject: Re: generic plans and "initial" pruning To: Alexander Lakhin Cc: Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="000000000000ea1741062e298e39" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ea1741062e298e39 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Alexander, On Sat, Feb 15, 2025 at 6:00=E2=80=AFAM Alexander Lakhin wrote: > > Hello Amit, > > 06.02.2025 04:35, Amit Langote wrote: > > I plan to push 0001 tomorrow, barring any objections. > > > Please try the following script: > CREATE TABLE pt (a int, b int) PARTITION BY range (a); > CREATE TABLE tp1 PARTITION OF pt FOR VALUES FROM (1) TO (2); > CREATE TABLE tp2 PARTITION OF pt FOR VALUES FROM (2) TO (3); > > MERGE INTO pt > USING (SELECT pg_backend_pid() AS pid) AS q JOIN tp1 ON (q.pid =3D tp1.a) > ON pt.a =3D tp1.a > WHEN MATCHED THEN DELETE; > > which fails for me with segfault: > Program terminated with signal SIGSEGV, Segmentation fault. > #0 ExecInitMerge (mtstate=3D0x5a9b9fbccae0, estate=3D0x5a9b9fbcbe20) at = nodeModifyTable.c:3680 > 3680 relationDesc =3D RelationGetDescr(resultRelInfo->= ri_RelationDesc); > (gdb) bt > #0 ExecInitMerge (mtstate=3D0x5a9b9fbccae0, estate=3D0x5a9b9fbcbe20) at = nodeModifyTable.c:3680 > #1 0x00005a9b67e6dfb5 in ExecInitModifyTable (node=3D0x5a9b9fbd5858, est= ate=3D0x5a9b9fbcbe20, eflags=3D0) at nodeModifyTable.c:4906 > #2 0x00005a9b67e273f7 in ExecInitNode (node=3D0x5a9b9fbd5858, estate=3D0= x5a9b9fbcbe20, eflags=3D0) at execProcnode.c:177 > #3 0x00005a9b67e1b9d2 in InitPlan (queryDesc=3D0x5a9b9fbb9970, eflags=3D= 0) at execMain.c:1092 > #4 0x00005a9b67e1a524 in standard_ExecutorStart (queryDesc=3D0x5a9b9fbb9= 970, eflags=3D0) at execMain.c:268 > #5 0x00005a9b67e1a223 in ExecutorStart (queryDesc=3D0x5a9b9fbb9970, efla= gs=3D0) at execMain.c:142 > ... > > starting from cbc127917. > > (I've discovered this anomaly with SQLsmith.) Thanks! It looks like I missed updating the MERGE-related lists in ModifyTa= ble. I've attached a fix with a test added based on your example. I plan to push this on Monday. --=20 Thanks, Amit Langote --000000000000ea1741062e298e39 Content-Type: application/octet-stream; name="0001-Fix-an-oversight-in-cbc127917-for-MERGE-handling.patch" Content-Disposition: attachment; filename="0001-Fix-an-oversight-in-cbc127917-for-MERGE-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m75wec8w0 RnJvbSAwNzc4NDE1OWFlYTRkZTdiNTYxNGZkN2EzOWJiNmVlYWZlMDdjYjIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFNhdCwgMTUgRmViIDIwMjUgMTY6Mzk6NTQgKzA5MDAKU3ViamVjdDogW1BBVENIXSBG aXggYW4gb3ZlcnNpZ2h0IGluIGNiYzEyNzkxNyBmb3IgTUVSR0UgaGFuZGxpbmcKCkV4ZWNJbml0 TW9kaWZ5VGFibGUoKSBzaG91bGQgYWxzbyB0cmltIE1FUkdFLXJlbGF0ZWQgbGlzdHMgdG8gZXhj bHVkZQpyZXN1bHQgcmVsYXRpb25zIHBydW5lZCBkdXJpbmcgaW5pdGlhbCBwcnVuaW5nLgoKUmVw b3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4gPGV4Y2x1c2lvbkBnbWFpbC5jb20+ICh2aWEgc3Fs c21pdGgpCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZTcyYzk0ZDktZTVmOS00NzUz LTliYzEtNjlkNzJiZDU0YjhhQGdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDI0ICsrKysrKysrKystLS0KIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDM0ICsrKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8IDEzICsrKysr KysKIDQgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGExNWU3ODYzYjBkLi5lMGY4 NTliYTk2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTM2Njcs MTQgKzM2NjcsMTQgQEAgRXhlY0luaXRNZXJnZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBF U3RhdGUgKmVzdGF0ZSkKIAkgKiBhbnl0aGluZyBoZXJlLCBkbyBzbyB0aGVyZSB0b28uCiAJICov CiAJaSA9IDA7Ci0JZm9yZWFjaChsYywgbm9kZS0+bWVyZ2VBY3Rpb25MaXN0cykKKwlmb3JlYWNo KGxjLCBtdHN0YXRlLT5tdF9tZXJnZUFjdGlvbkxpc3RzKQogCXsKIAkJTGlzdAkgICAqbWVyZ2VB Y3Rpb25MaXN0ID0gbGZpcnN0KGxjKTsKIAkJTm9kZQkgICAqam9pbkNvbmRpdGlvbjsKIAkJVHVw bGVEZXNjCXJlbGF0aW9uRGVzYzsKIAkJTGlzdENlbGwgICAqbDsKIAotCQlqb2luQ29uZGl0aW9u ID0gKE5vZGUgKikgbGlzdF9udGgobm9kZS0+bWVyZ2VKb2luQ29uZGl0aW9ucywgaSk7CisJCWpv aW5Db25kaXRpb24gPSAoTm9kZSAqKSBsaXN0X250aChtdHN0YXRlLT5tdF9tZXJnZUpvaW5Db25k aXRpb25zLCBpKTsKIAkJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm8gKyBp OwogCQlpKys7CiAJCXJlbGF0aW9uRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVzdWx0UmVsSW5m by0+cmlfUmVsYXRpb25EZXNjKTsKQEAgLTQ0NzUsNiArNDQ3NSw4IEBAIEV4ZWNJbml0TW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCUxp c3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzID0gTklMOwogCUxpc3QJICAgKnJldHVybmluZ0xp c3RzID0gTklMOwogCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3RzID0gTklMOworCUxpc3QJICAg Km1lcmdlQWN0aW9uTGlzdHMgPSBOSUw7CisJTGlzdAkgICAqbWVyZ2VKb2luQ29uZGl0aW9ucyA9 IE5JTDsKIAlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOwogCUxpc3QJICAgKmFyb3dtYXJr czsKIAlMaXN0Q2VsbCAgICpsOwpAQCAtNDUxOCw2ICs0NTIwLDE4IEBAIEV4ZWNJbml0TW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJ CQkJdXBkYXRlQ29sbm9zTGlzdHMgPSBsYXBwZW5kKHVwZGF0ZUNvbG5vc0xpc3RzLCB1cGRhdGVD b2xub3NMaXN0KTsKIAkJCX0KKwkJCWlmIChub2RlLT5tZXJnZUFjdGlvbkxpc3RzKQorCQkJewor CQkJCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdCA9IGxpc3RfbnRoKG5vZGUtPm1lcmdlQWN0aW9u TGlzdHMsIGkpOworCisJCQkJbWVyZ2VBY3Rpb25MaXN0cyA9IGxhcHBlbmQobWVyZ2VBY3Rpb25M aXN0cywgbWVyZ2VBY3Rpb25MaXN0KTsKKwkJCX0KKwkJCWlmIChub2RlLT5tZXJnZUpvaW5Db25k aXRpb25zKQorCQkJeworCQkJCUxpc3QJICAgKm1lcmdlSm9pbkNvbmRpdGlvbiA9IGxpc3RfbnRo KG5vZGUtPm1lcmdlSm9pbkNvbmRpdGlvbnMsIGkpOworCisJCQkJbWVyZ2VKb2luQ29uZGl0aW9u cyA9IGxhcHBlbmQobWVyZ2VKb2luQ29uZGl0aW9ucywgbWVyZ2VKb2luQ29uZGl0aW9uKTsKKwkJ CX0KIAkJfQogCQlpKys7CiAJfQpAQCAtNDU0NCw2ICs0NTU4LDggQEAgRXhlY0luaXRNb2RpZnlU YWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbXRz dGF0ZS0+bXRfbWVyZ2VfdXBkYXRlZCA9IDA7CiAJbXRzdGF0ZS0+bXRfbWVyZ2VfZGVsZXRlZCA9 IDA7CiAJbXRzdGF0ZS0+bXRfdXBkYXRlQ29sbm9zTGlzdHMgPSB1cGRhdGVDb2xub3NMaXN0czsK KwltdHN0YXRlLT5tdF9tZXJnZUFjdGlvbkxpc3RzID0gbWVyZ2VBY3Rpb25MaXN0czsKKwltdHN0 YXRlLT5tdF9tZXJnZUpvaW5Db25kaXRpb25zID0gbWVyZ2VKb2luQ29uZGl0aW9uczsKIAogCS8q LS0tLS0tLS0tLQogCSAqIFJlc29sdmUgdGhlIHRhcmdldCByZWxhdGlvbi4gVGhpcyBpcyB0aGUg c2FtZSBhczoKQEAgLTQ1OTksOCArNDYxNSw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5 VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlJbmRleAkJcmVzdWx0 UmVsYXRpb24gPSBsZmlyc3RfaW50KGwpOwogCQlMaXN0CSAgICptZXJnZUFjdGlvbnMgPSBOSUw7 CiAKLQkJaWYgKG5vZGUtPm1lcmdlQWN0aW9uTGlzdHMpCi0JCQltZXJnZUFjdGlvbnMgPSBsaXN0 X250aChub2RlLT5tZXJnZUFjdGlvbkxpc3RzLCBpKTsKKwkJaWYgKG1lcmdlQWN0aW9uTGlzdHMp CisJCQltZXJnZUFjdGlvbnMgPSBsaXN0X250aChtZXJnZUFjdGlvbkxpc3RzLCBpKTsKIAogCQlp ZiAocmVzdWx0UmVsSW5mbyAhPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbykKIAkJewpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCBlMmQxZGMxZTA2Ny4uNjZmYTYxMzMzNDMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCkBAIC0xNDQ4LDEwICsxNDQ4LDEzIEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRh YmxlU3RhdGUKIAlkb3VibGUJCW10X21lcmdlX2RlbGV0ZWQ7CiAKIAkvKgotCSAqIExpc3Qgb2Yg dmFsaWQgdXBkYXRlQ29sbm9zTGlzdHMuICBDb250YWlucyBvbmx5IHRob3NlIGJlbG9uZ2luZyB0 bwotCSAqIHVucHJ1bmVkIHJlbGF0aW9ucyBmcm9tIE1vZGlmeVRhYmxlLnVwZGF0ZUNvbG5vc0xp c3RzLgorCSAqIExpc3RzIG9mIHZhbGlkIHVwZGF0ZUNvbG5vc0xpc3RzbSwgbWVyZ2VBY3Rpb25M aXN0cywgYW5kCisJICogbWVyZ2VKb2luQ29uZGl0aW9ucy4gIFRoZXNlIGNvbnRhaW4gb25seSB0 aG9zZSBiZWxvbmdpbmcgdG8gdW5wcnVuZWQKKwkgKiByZWxhdGlvbnMgZnJvbSB0aGUgcmVzcGVj dGl2ZSBMaXN0cyBpbiB0aGUgTW9kaWZ5VGFibGUuCiAJICovCiAJTGlzdAkgICAqbXRfdXBkYXRl Q29sbm9zTGlzdHM7CisJTGlzdAkgICAqbXRfbWVyZ2VBY3Rpb25MaXN0czsKKwlMaXN0CSAgICpt dF9tZXJnZUpvaW5Db25kaXRpb25zOwogfSBNb2RpZnlUYWJsZVN0YXRlOwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5v dXQKaW5kZXggZTY2NzUwM2M5NjEuLjMyNjFkYTI4MjE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC00NTEzLDUgKzQ1MTMsMzkgQEAgZXhl Y3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMiwgJ2EnKTsKIEVSUk9SOiAgbmV3IHJvdyB2aW9s YXRlcyBjaGVjayBvcHRpb24gZm9yIHZpZXcgInBhcnRfYWJjX3ZpZXciCiBERVRBSUw6ICBGYWls aW5nIHJvdyBjb250YWlucyAoMiwgYSwgdCkuCiBkZWFsbG9jYXRlIHVwZGF0ZV9wYXJ0X2FiY192 aWV3OworLS0gUnVudGltZSBwcnVuaW5nIG9uIE1FUkdFIHVzaW5nIGEgc3RhYmxlIGZ1bmN0aW9u CitjcmVhdGUgZnVuY3Rpb24gc3RhYmxlX29uZSgpIHJldHVybnMgaW50IGFzICQkIGJlZ2luIHJl dHVybiAxOyBlbmQ7ICQkIGxhbmd1YWdlIHBscGdzcWwgc3RhYmxlOworZXhwbGFpbiAoY29zdHMg b2ZmKQorbWVyZ2UgaW50byBwYXJ0X2FiY192aWV3IHB0Cit1c2luZyAoc2VsZWN0IHN0YWJsZV9v bmUoKSBhcyBwaWQpIGFzIHEgam9pbiBwYXJ0X2FiY18xIHB0MSBvbiAocS5waWQgPSBwdDEuYSkg b24gcHQuYSA9IHB0MS5hCit3aGVuIG1hdGNoZWQgdGhlbiBkZWxldGUgcmV0dXJuaW5nIHB0LmE7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBvbiBwYXJ0X2FiYworICAg TWVyZ2Ugb24gcGFydF9hYmNfMQorICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAtPiAgQXBw ZW5kCisgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxCisgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFydF9hYmNfMQorICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAo KGIgPD4gJ2EnOjp0ZXh0KSBBTkQgKGEgPSBzdGFibGVfb25lKCkpKQorICAgICAgICAgLT4gIE1h dGVyaWFsaXplCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFydF9hYmNfMSBwdDEK KyAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSBzdGFibGVfb25lKCkpCisoMTAgcm93 cykKKworbWVyZ2UgaW50byBwYXJ0X2FiY192aWV3IHB0Cit1c2luZyAoc2VsZWN0IHN0YWJsZV9v bmUoKSBhcyBwaWQpIGFzIHEgam9pbiBwYXJ0X2FiY18xIHB0MSBvbiAocS5waWQgPSBwdDEuYSkg b24gcHQuYSA9IHB0MS5hCit3aGVuIG1hdGNoZWQgdGhlbiBkZWxldGUgcmV0dXJuaW5nIHB0LmE7 CisgYSAKKy0tLQorIDEKKygxIHJvdykKKwordGFibGUgcGFydF9hYmNfdmlldzsKKyBhIHwgYiB8 IGMgCistLS0rLS0tKy0tLQorIDIgfCBjIHwgdAorKDEgcm93KQorCiBkcm9wIHZpZXcgcGFydF9h YmNfdmlldzsKIGRyb3AgdGFibGUgcGFydF9hYmM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbAppbmRleCA3MzA1NDVlODZhNy4uYjI3ZjNhY2U3M2MgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbApAQCAtMTM3Miw1ICsxMzcyLDE4IEBAIGV4 ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CiBleHBsYWluIChjb3N0cyBvZmYp IGV4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7CiBleGVjdXRlIHVwZGF0ZV9w YXJ0X2FiY192aWV3ICgyLCAnYScpOwogZGVhbGxvY2F0ZSB1cGRhdGVfcGFydF9hYmNfdmlldzsK KworLS0gUnVudGltZSBwcnVuaW5nIG9uIE1FUkdFIHVzaW5nIGEgc3RhYmxlIGZ1bmN0aW9uCitj cmVhdGUgZnVuY3Rpb24gc3RhYmxlX29uZSgpIHJldHVybnMgaW50IGFzICQkIGJlZ2luIHJldHVy biAxOyBlbmQ7ICQkIGxhbmd1YWdlIHBscGdzcWwgc3RhYmxlOworZXhwbGFpbiAoY29zdHMgb2Zm KQorbWVyZ2UgaW50byBwYXJ0X2FiY192aWV3IHB0Cit1c2luZyAoc2VsZWN0IHN0YWJsZV9vbmUo KSBhcyBwaWQpIGFzIHEgam9pbiBwYXJ0X2FiY18xIHB0MSBvbiAocS5waWQgPSBwdDEuYSkgb24g cHQuYSA9IHB0MS5hCit3aGVuIG1hdGNoZWQgdGhlbiBkZWxldGUgcmV0dXJuaW5nIHB0LmE7CisK K21lcmdlIGludG8gcGFydF9hYmNfdmlldyBwdAordXNpbmcgKHNlbGVjdCBzdGFibGVfb25lKCkg YXMgcGlkKSBhcyBxIGpvaW4gcGFydF9hYmNfMSBwdDEgb24gKHEucGlkID0gcHQxLmEpIG9uIHB0 LmEgPSBwdDEuYQord2hlbiBtYXRjaGVkIHRoZW4gZGVsZXRlIHJldHVybmluZyBwdC5hOwordGFi bGUgcGFydF9hYmNfdmlldzsKKwogZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7CiBkcm9wIHRhYmxl IHBhcnRfYWJjOwotLSAKMi40My4wCgo= --000000000000ea1741062e298e39--