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 1vk31B-008lk0-24 for pgsql-hackers@arkaria.postgresql.org; Sun, 25 Jan 2026 16:31:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vk31A-0055vG-2O for pgsql-hackers@arkaria.postgresql.org; Sun, 25 Jan 2026 16:31:17 +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.96) (envelope-from ) id 1vk31A-0055v8-0t for pgsql-hackers@lists.postgresql.org; Sun, 25 Jan 2026 16:31:16 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vk318-00000000Onk-0C6A for pgsql-hackers@lists.postgresql.org; Sun, 25 Jan 2026 16:31:16 +0000 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-59deec3d8dcso1227801e87.3 for ; Sun, 25 Jan 2026 08:31:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769358672; cv=none; d=google.com; s=arc-20240605; b=Mq2UQ6H1kH+VLnEa/saOAXiCubDz0oAwOHNVhi+xe+iUnFUbhePUN1BuxdF1rIMoIW r7Glar0RoiuRHR2/Unf4ufoFc0YQCGbifxAOH8cMOMrfsBPRBLa5SpzPhNQYG7K32fM2 XdaSxHEic2RoT7pELi0lR7Mo7PL7wtYBpfojLflboO3WuKx80EsxpSyywviKzziYa/nK 7m2I59RM69Kohe3NuvYArSfs2c31wT19lPF2wnwW8enjjMcnqRlJaoNmat4Gl4DgRTEQ OzAev07qd0rhXwSEuOZ1bTIx1YvlKIpeectdGdS3HiJviwAjYJpCVuwg//zcw3eC5q6q nZMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=TVTnF99Y3AlGdAKwGL4O8wHd+rjQd64qOWLP0oNPozY=; fh=rSD4jJ3oZ/lFpYjok3DOLpLGYiqghlkzKBMfbuRV/ro=; b=jcfVn94Wb31wUJqlX7jn4nraP8BrlLakG7vGTRhNZ45GemdGEilYExvsZylsWMOPDS NTQbPkU3xfMJQNoOd44gXv2ZWGmo0XbvKtvmS3I1hhknzCYgz29WqkmBjujbf4u/RyL4 +i0TbXL5gopd/RIT1QbIJ58FcmUEOI1MdbbyPzNoolxUHhXiEWuZw3xq6OeBsUjcrN// rHeSXkq5G2X+VNkYt9EqjgL3yq75qV9TZ9NGXAlSWajh2h9hyIc+7757vA8zf4LhRHWi N+c93XUCVnWiIdDh79VCUztS05lLfaYkFT8YmRToPlyfLx+aM89XBpWzhy9+KcHM7Dk2 OE6Q==; darn=lists.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=20230601; t=1769358672; x=1769963472; darn=lists.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=TVTnF99Y3AlGdAKwGL4O8wHd+rjQd64qOWLP0oNPozY=; b=VnGXHQ0+AsWq1EcwQR15RIm2jNOZQ6ymeV3/fWj2wYv9dqPAgx7IqnWmkV4oaRBTrG tyQsQzBmKOmab3y/AmMNX3Hnvmu1Y90C4shYoEyFi5wGIyfZagbbWbawMvpqwcGrm2Ck Fn7GUsPz8JjyzJ+N+7Gseezl0YoNWaVR+KtCHxb2Ka5scooP8zl6gCxaBRrG60xj4FRN HOMXW7lsGtdoK18CQrbVa4ukAo8TtYVJl6IChQLVdDbH5sBufzp1pgofQ4oDnPvOdt+Q EDU6jz6Wg8fPbvDJcAfAMSJylzIUKeVHCZ1akFeHHOf7uS1nTFd9DXEViGpYwDMaqQIR 9yLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769358672; x=1769963472; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=TVTnF99Y3AlGdAKwGL4O8wHd+rjQd64qOWLP0oNPozY=; b=Lx4HaukwNMTqRPgDytERdx/C+Zt1yae23DakAJZ+9VV+Ra4g0wMfFL0KvTnIIkjjaO h3a9UFxUGCD3VFqvKIxQeAYEQ5bRPM7egh540orMHbioyhOdSzN0i98MYN/Mq+j9iuIM d0AsHkaLuWszsFX6RlFhvaDyTvvBdzx+q6M+0fmhjd+we/6FsHix7xE1duOrVmow3nJc ac46+DDY2p4ctB33J6CYppto01FHTvOj5zDsmoVUvuYjg7vfCYdSDegE/XzoOnkze8sY MPV7KEnx9grjc7l6ZYFivkBLL/yYkai7jpkYiXn9KCgVlFHWNfzQSU8M3s1z9ocRumsz 35iw== X-Forwarded-Encrypted: i=1; AJvYcCUSex6qRy7/QqkSl57DhcQMOeX2EYO3+FbM078mS/hRqO/r0L6a2HGtHuwFdidJHkSUo4yIL0oTQfy7Jvvc@lists.postgresql.org X-Gm-Message-State: AOJu0YyLEAH4n+m5/Ly6BZQ5BVyjUTCAcCN0Ir0KoOsdX5hcN0/4zQSf nk/vVtR26yaL0MJ2XsdHjJLis22VgceI1IPzOgIOUkPwAFVHNA02IGUwV5R+eyyzZ/d9s6K6uNv 1bHjaN9PQj1yY2RgEmUw3W0DdlRUmRLw= X-Gm-Gg: AZuq6aJZ96q6NhlgmmbvQ1fEb4eJwR8dRiDJTBFjrrZ4ELJWxsUtqpTZzuDzRBL2K1f 8Z4vxbRCeRzNy807CPkIv8XlNX4DowcHabT3gqqdfvJVhMx1yyRTva4vWI/dvnW4GL0eppswev9 joyx5DoXVBd6IM2kNjeHfOxoGInbCcnYoNaZeMIHL5iv6eD/KSXNG8ntSNAKVytFK8UlgBkaJwF aKEidBhpfEp0lcvrsYqIplrbA25sxXWBKDrs9RAqPLj6+YqfkWC/1MI4jjEOKGWASBBlfjVzRMx 0Byug6OgRFOr/PbFf+awpWKv+W5YzZqI3Vt+1M4uI9aMSHeAUQv+LrCxCEn2AcJfITB/xXYhKxN PpIZljKU1Dj0DTA== X-Received: by 2002:ac2:4f0f:0:b0:59b:8436:79da with SMTP id 2adb3069b0e04-59df3a395demr729884e87.44.1769358672029; Sun, 25 Jan 2026 08:31:12 -0800 (PST) MIME-Version: 1.0 References: <202512151349.vlq3mpfniyk3@alvherre.pgsql> <11247.1767609087@localhost> <11558.1767609632@localhost> <141054.1767891540@localhost> <137668.1768235610@localhost> <74802.1769071060@localhost> In-Reply-To: From: Mihail Nikalayeu Date: Sun, 25 Jan 2026 17:31:00 +0100 X-Gm-Features: AZwV_QhcPx3FVnWh1aSUuNr1V7yaIsIfJhx1yUQlNYiu0l8TmeLm_uS6UWXlPgM Message-ID: Subject: Re: Adding REPACK [concurrently] To: Antonin Houska Cc: Alvaro Herrera , Pg Hackers , Robert Treat Content-Type: multipart/mixed; boundary="000000000000208587064938ebad" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000208587064938ebad Content-Type: multipart/alternative; boundary="000000000000208586064938ebab" --000000000000208586064938ebab Content-Type: text/plain; charset="UTF-8" Hello, Antonin! PART 1: I started rebasing the MVCC-safe version on top of the multi-snapshot version and realized it becomes complex. But, what's really bad about MVCC-unsafety is the ability to access *incorrect* data and break some logic (or even constraints). If we may *prevent* such data access with some kind of error (which is going to be very infrequent) - I don't see any sense to achieve true MVCC-safety. I remembered a way it works with indcheckxmin for indexes. And made something similar for pg_class: it records the rewriting transaction XID and causes the executor to raise an error if a transaction with an older snapshot attempts to access the rewritten relation. For the normal case - check is never executed, no performance regression here. Also, the flag is automatically cleared by VACUUM once the transaction ID is frozen. It also "fixes" ALTER TABLE, not only REPACK concurrently. Attached patch contains more details (some in the commit message). PART 2: I have continued working with stress tests. This time I added your WIP patch to fix the LR\CLOG race. I made the following configs: 1) just REPACK CONCURRENTLY - ok 2) + relcheckxmin (see PART1) - ok 3) + worker - ok 4) + multiple snapshots - broken in multiple ways. You may see example of run here - https://cirrus-ci.com/build/6359048020295680 Some examples: 1) 'pgbench: error: client 11 script 0 aborted in command 20 query 0: ERROR: could not read blocks 0..0 in file "base/5/16414": read only 0 of 8192 bytes 2) at /home/postgres/postgres/contrib/amcheck/t/008_repack_concurrently.pl line 51. [15:36:37.204] # 'pgbench: error: client 5 script 0 aborted in command 28 query 0: ERROR: division by zero 3) 'pgbench: error: client 12 script 0 aborted in command 6 query 0: ERROR: cache lookup failed for relation 17400 --000000000000208586064938ebab Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, Antonin!

PART = 1:

I started rebasing the MVCC-safe version on top= of the multi-snapshot version and realized it becomes=C2=A0complex.=C2=A0<= /div>
But, what's really bad about MVCC-unsafety is the ability to = access *incorrect* data and break=C2=A0some logic (or even constraints).

If we may *prevent* such data access with some kind = of error (which is going to be very infrequent) - I don't see any sense= to achieve=C2=A0true MVCC-safety.

I remembered a = way it works with=C2=A0indcheckxmin for indexes. And made something similar= for pg_class: it records the rewriting transaction XID and causes the exec= utor to raise an error if a transaction with an older snapshot attempts to = access the rewritten relation.

For the normal case= - check is never executed, no performance regression here. Also, the flag = is automatically cleared by VACUUM once the transaction ID is frozen.
=

It also "fixes" ALTER TABLE, not only REPACK = concurrently.

Attached patch contains more details= (some in the commit message).

PART 2:

I ha= ve continued working with stress tests. This time I added your WIP patch to= fix the LR\CLOG race.

I made the following config= s:
1) just REPACK CONCURRENTLY - ok
2)=C2=A0+ relcheckx= min (see PART1) - ok
3)=C2=A0+ worker - ok
4)=C2=A0+ multiple = snapshots - broken in multiple ways.

You may see e= xample of run here -=C2=A0https://cirrus-ci.com/build/63= 59048020295680

Some examples:

1)=C2=A0 'pgbench: error: client 11 script 0 aborted in comman= d 20 query 0: ERROR: =C2=A0could not read blocks 0..0 in file "base/5/= 16414": read only 0 of 8192 bytes
2) at /home/postgres/postg= res/contrib/amcheck/t/008_repack_concurrently.pl line 51.
[= 15:36:37.204] # =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 'pgbench: error: client 5 script 0 aborted in command 28 query 0: E= RROR: =C2=A0division by zero
3)=C2=A0=C2=A0 =C2=A0'pgbench: e= rror: client 12 script 0 aborted in command 6 query 0: ERROR: =C2=A0cache l= ookup failed for relation 17400

--000000000000208586064938ebab-- --000000000000208587064938ebad Content-Type: application/x-patch; name="nocfbot-stress_tests_for_repack_concurrently.patch" Content-Disposition: attachment; filename="nocfbot-stress_tests_for_repack_concurrently.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mktwybja0 U3ViamVjdDogW1BBVENIXSBzdHJlc3MgdGVzdHMgZm9yIHJlcGFjayBjb25jdXJyZW50bHkKLS0t CkluZGV4OiBjb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKSURFQSBhZGRpdGlvbmFsIGluZm86 ClN1YnN5c3RlbTogY29tLmludGVsbGlqLm9wZW5hcGkuZGlmZi5pbXBsLnBhdGNoLkNoYXJzZXRF UAo8Kz5VVEYtOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svbWVzb24u YnVpbGQgYi9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKLS0tIGEvY29udHJpYi9hbWNoZWNr L21lc29uLmJ1aWxkCShyZXZpc2lvbiAyNmI3YTdjYmVkZDhjMDg0OGMxMDU2ZWY4MjBiZWQyZGRi NWY1MjJjKQorKysgYi9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQJKHJldmlzaW9uIDE0YmY4 ZGJjMGFjMGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMwNDczMmQpCkBAIC01MCw2ICs1MCw4IEBACiAg ICAgICAndC8wMDRfdmVyaWZ5X25idHJlZV91bmlxdWUucGwnLAogICAgICAgJ3QvMDA1X3BpdHIu cGwnLAogICAgICAgJ3QvMDA2X3ZlcmlmeV9naW4ucGwnLAorICAgICAgJ3QvMDA3X3JlcGFja19j b25jdXJyZW50bHkucGwnLAorICAgICAgJ3QvMDA4X3JlcGFja19jb25jdXJyZW50bHkucGwnLAog ICAgIF0sCiAgIH0sCiB9CkluZGV4OiBjb250cmliL2FtY2hlY2svdC8wMDdfcmVwYWNrX2NvbmN1 cnJlbnRseS5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDdf cmVwYWNrX2NvbmN1cnJlbnRseS5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwN19yZXBhY2tfY29u Y3VycmVudGx5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSAvZGV2L251bGwJKHJldmlzaW9u IDE0YmY4ZGJjMGFjMGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMwNDczMmQpCisrKyBiL2NvbnRyaWIv YW1jaGVjay90LzAwN19yZXBhY2tfY29uY3VycmVudGx5LnBsCShyZXZpc2lvbiAxNGJmOGRiYzBh YzBkNTJhNjEyMWJlMjQ4NGY2NTJmYzBjMDQ3MzJkKQpAQCAtMCwwICsxLDExMSBAQAorCisjIENv cHlyaWdodCAoYykgMjAyMS0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCisjIFRlc3QgUkVQQUNLIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZpY2F0 aW9ucwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CisK K3VzZSBUZXN0OjpNb3JlOworCitteSAkbm9kZTsKKworIworIyBUZXN0IHNldC11cAorIworJG5v ZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ0NJQ190ZXN0Jyk7Ciskbm9kZS0+ aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwknbG9ja190aW1l b3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1 bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCit3YWxf bGV2ZWwgPSBsb2dpY2FsCittYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDMyCispKTsKKworbXkgJG49 MTAwMDsKK215ICRub19ob3QgPSBpbnQocmFuZCgyKSk7CisKKyRub2RlLT5zdGFydDsKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50IFBSSU1BUlkg S0VZLCBqIGludCkpKTsKKworaWYgKCRub19ob3QpCit7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENSRUFURSBJTkRFWCB0ZXN0X2lkeCBPTiB0Ymwoaik7KSk7Cit9CitlbHNlCit7 CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCB0ZXN0X2lkeCBP TiB0YmwoaSk7KSk7Cit9CisKKworIyBMb2FkIGFtY2hlY2sKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsKKworIyBJbnNlcnQgJG4gcm93 cyBpbnRvIHRibAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5U TyB0YmwgU0VMRUNUIGksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwkbikgaQorKSk7CisKK215 ICRzdW0gPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJU0VMRUNUIFNVTShqKSBB UyBzdW0gRlJPTSB0YmwKKykpOworCisKKyRub2RlLT5wZ2JlbmNoKAorJy0tbm8tdmFjdXVtIC0t Y2xpZW50PTE1IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz01MDAwJywK KzAsCitbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCitbcXJ7XiR9XSwKKydjb25jdXJyZW50IG9w ZXJhdGlvbnMgd2l0aCBSRVBBQ0sgQ09OQ1VSUkVOVExZJywKK3sKKwknY29uY3VycmVudF9vcHMn ID0+IHFxKAorCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdv dGxvY2sgXFxnc2V0CisJCVxcaWYgOmdvdGxvY2sKKwkJCVJFUEFDSyAoQ09OQ1VSUkVOVExZKSB0 YmwgVVNJTkcgSU5ERVggdGJsX3BrZXk7CisJCQlTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNr KCd0YmxfcGtleScsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOworCQkJU0VMRUNUIGJ0X2luZGV4 X3BhcmVudF9jaGVjaygndGVzdF9pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsKKwkJCVxc c2xlZXAgMTAgbXMKKworCQkJUkVQQUNLIChDT05DVVJSRU5UTFkpIHRibCBVU0lORyBJTkRFWCB0 ZXN0X2lkeDsKKwkJCVNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ3RibF9wa2V5JywgaGVh cGFsbGluZGV4ZWQgPT4gdHJ1ZSk7CisJCQlTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0 ZXN0X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpOworCQkJXFxzbGVlcCAxMCBtcworCisJ CQlSRVBBQ0sgKENPTkNVUlJFTlRMWSkgdGJsOworCQkJU0VMRUNUIGJ0X2luZGV4X3BhcmVudF9j aGVjaygndGJsX3BrZXknLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsKKwkJCVNFTEVDVCBidF9p bmRleF9wYXJlbnRfY2hlY2soJ3Rlc3RfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7CisJ CQlcXHNsZWVwIDEwIG1zCisKKwkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQlc XGVsc2UKKwkJCVxcc2V0IG51bV9hIHJhbmRvbSgxLCAkbikKKwkJCVxcc2V0IG51bV9iIHJhbmRv bSgxLCAkbikKKwkJCVxcc2V0IGRpZmYgcmFuZG9tKDEsIDEwMDAwKQorCQkJQkVHSU47CisJCQlV UERBVEUgdGJsIFNFVCBqID0gaiArIDpkaWZmIFdIRVJFIGkgPSA6bnVtX2E7CisJCQlcXHNsZWVw IDEgbXMKKwkJCVVQREFURSB0YmwgU0VUIGogPSBqIC0gOmRpZmYgV0hFUkUgaSA9IDpudW1fYjsK KwkJCVxcc2xlZXAgMSBtcworCQkJQ09NTUlUOworCisJCQlCRUdJTgorCQkJLS1UUkFOU0FDVElP TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFECisJCQk7CisJCQlTRUxFQ1QgMTsKKwkJ CVxcc2xlZXAgMSBtcworCQkJU0VMRUNUIENPQUxFU0NFKFNVTShqKSwgMCkgQVMgc3VtIEZST00g dGJsIFxcZ3NldCBwXworCQkJXFxpZiA6cF9zdW0gIT0gJHN1bQorCQkJCUNPTU1JVDsKKwkJCQlT RUxFQ1QgKDpwX3N1bSkgLyAwOworCQkJXFxlbmRpZgorCisJCQlDT01NSVQ7CisJCVxcZW5kaWYK KwkpCit9KTsKKworJG5vZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKSW5kZXg6IGNvbnRyaWIv YW1jaGVjay90LzAwOF9yZXBhY2tfY29uY3VycmVudGx5LnBsCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdp dCBhL2NvbnRyaWIvYW1jaGVjay90LzAwOF9yZXBhY2tfY29uY3VycmVudGx5LnBsIGIvY29udHJp Yi9hbWNoZWNrL3QvMDA4X3JlcGFja19jb25jdXJyZW50bHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLS0tIC9kZXYvbnVsbAkocmV2aXNpb24gMTRiZjhkYmMwYWMwZDUyYTYxMjFiZTI0ODRmNjUy ZmMwYzA0NzMyZCkKKysrIGIvY29udHJpYi9hbWNoZWNrL3QvMDA4X3JlcGFja19jb25jdXJyZW50 bHkucGwJKHJldmlzaW9uIDE0YmY4ZGJjMGFjMGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMwNDczMmQp CkBAIC0wLDAgKzEsMTAyIEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjUsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBSRVBBQ0sgQ09OQ1VSUkVOVExZ IHdpdGggY29uY3VycmVudCBtb2RpZmljYXRpb25zCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz IEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKKwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlOwor CisjCisjIFRlc3Qgc2V0LXVwCisjCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnQ0lDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAkUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVuZF9jb25mKAorCSdw b3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK3dhbF9sZXZlbCA9IGxvZ2ljYWwKK21heF93b3JrZXJfcHJv Y2Vzc2VzID0gMzIKKykpOworCitteSAkbm9faG90ID0gaW50KHJhbmQoMikpOworCiskbm9kZS0+ c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChp IFNFUklBTCBQUklNQVJZIEtFWSwgaiBpbnQpKSk7CitpZiAoJG5vX2hvdCkKK3sKKwkkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIElOREVYIHRlc3RfaWR4IE9OIHRibChqKTsp KTsKK30KK2Vsc2UKK3sKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIElO REVYIHRlc3RfaWR4IE9OIHRibChpKTspKTsKK30KKworIyBMb2FkIGFtY2hlY2sKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsKKworbXkg JHN1bSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlTRUxFQ1QgU1VNKGopIEFT IHN1bSBGUk9NIHRibAorKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVB VEUgVU5MT0dHRUQgU0VRVUVOQ0UgbGFzdF9qIFNUQVJUIDEgSU5DUkVNRU5UIDE7KSk7CisKKwor JG5vZGUtPnBnYmVuY2goCisnLS1uby12YWN1dW0gLS1jbGllbnQ9MTUgLS1qb2JzPTQgLS1leGl0 LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTEwMDAnLAorMCwKK1txcnthY3R1YWxseSBwcm9jZXNz ZWR9XSwKK1txcnteJH1dLAorJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFUEFDSyBDT05D VVJSRU5UTFknLAoreworCSdjb25jdXJyZW50X29wcycgPT4gcXEoCisJCVNFTEVDVCBwZ190cnlf YWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9jayBcXGdzZXQKKwkJXFxpZiA6Z290 bG9jaworCQkJUkVQQUNLIChDT05DVVJSRU5UTFkpIHRibCBVU0lORyBJTkRFWCB0YmxfcGtleTsK KwkJCVNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ3RibF9wa2V5JywgaGVhcGFsbGluZGV4 ZWQgPT4gdHJ1ZSk7CisJCQlTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0ZXN0X2lkeCcs IGhlYXBhbGxpbmRleGVkID0+IHRydWUpOworCQkJXFxzbGVlcCAxMCBtcworCisJCQlSRVBBQ0sg KENPTkNVUlJFTlRMWSkgdGJsIFVTSU5HIElOREVYIHRlc3RfaWR4OworCQkJU0VMRUNUIGJ0X2lu ZGV4X3BhcmVudF9jaGVjaygndGJsX3BrZXknLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsKKwkJ CVNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ3Rlc3RfaWR4JywgaGVhcGFsbGluZGV4ZWQg PT4gdHJ1ZSk7CisJCQlcXHNsZWVwIDEwIG1zCisKKwkJCVJFUEFDSyAoQ09OQ1VSUkVOVExZKSB0 Ymw7CisJCQlTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCd0YmxfcGtleScsIGhlYXBhbGxp bmRleGVkID0+IHRydWUpOworCQkJU0VMRUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygndGVzdF9p ZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlKTsKKwkJCVxcc2xlZXAgMTAgbXMKKworCQkJU0VM RUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCVxcZWxzZQorCQkJU0VMRUNUIHBnX2Fkdmlz b3J5X2xvY2soNDMpOworCQkJCUJFR0lOOworCQkJCUlOU0VSVCBJTlRPIHRibChqKSBWQUxVRVMg KG5leHR2YWwoJ2xhc3RfaicpKSBSRVRVUk5JTkcgaiBcXGdzZXQgcF8KKwkJCQlDT01NSVQ7CisJ CQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQzKTsKKwkJCVxcc2xlZXAgMSBtcworCisJCQlC RUdJTgorCQkJLS1UUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFECisJ CQk7CisJCQlTRUxFQ1QgMTsKKwkJCVxcc2xlZXAgMSBtcworCQkJU0VMRUNUIENPVU5UKCopIEFT IGNvdW50IEZST00gdGJsIFdIRVJFIGogPD0gOnBfaiBcXGdzZXQgcF8KKwkJCVxcaWYgOnBfY291 bnQgIT0gOnBfagorCQkJCUNPTU1JVDsKKwkJCQlTRUxFQ1QgKDpwX2NvdW50KSAvIDA7CisJCQlc XGVuZGlmCisKKwkJCUNPTU1JVDsKKwkJXFxlbmRpZgorCSkKK30pOworCiskbm9kZS0+c3RvcDsK K2RvbmVfdGVzdGluZygpOwo= --000000000000208587064938ebad Content-Type: application/x-patch; name="nocfbot-Add_`relcheckxmin`_to_track_and_enforce_tuple_visibility_in_`pg_class`.patch" Content-Disposition: attachment; filename="nocfbot-Add_`relcheckxmin`_to_track_and_enforce_tuple_visibility_in_`pg_class`.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mktwybjh1 U3ViamVjdDogW1BBVENIXSBBZGQgYHJlbGNoZWNreG1pbmAgdG8gdHJhY2sgYW5kIGVuZm9yY2Ug dHVwbGUgdmlzaWJpbGl0eSBpbiBgcGdfY2xhc3NgCi0tLQpJbmRleDogZG9jL3NyYy9zZ21sL212 Y2Muc2dtbApJREVBIGFkZGl0aW9uYWwgaW5mbzoKU3Vic3lzdGVtOiBjb20uaW50ZWxsaWoub3Bl bmFwaS5kaWZmLmltcGwucGF0Y2guQ2hhcnNldEVQCjwrPlVURi04Cj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbXZjYy5zZ21sCi0t LSBhL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwJKHJldmlzaW9uIDE0YmY4ZGJjMGFjMGQ1MmE2MTIx YmUyNDg0ZjY1MmZjMGMwNDczMmQpCisrKyBiL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwJKHJldmlz aW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1MDgpCkBAIC0xODMzLDIy ICsxODMzLDMwIEBACiAgICA8dGl0bGU+Q2F2ZWF0czwvdGl0bGU+CiAKICAgIDxwYXJhPgotICAg IFNvbWUgY29tbWFuZHMsIGN1cnJlbnRseSBvbmx5IDxsaW5rIGxpbmtlbmQ9InNxbC10cnVuY2F0 ZSI+PGNvbW1hbmQ+VFJVTkNBVEU8L2NvbW1hbmQ+PC9saW5rPiwgdGhlCi0gICAgdGFibGUtcmV3 cml0aW5nIGZvcm1zIG9mIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnRhYmxlIj48Y29tbWFuZD5B TFRFUgotICAgIFRBQkxFPC9jb21tYW5kPjwvbGluaz4gYW5kIDxjb21tYW5kPlJFUEFDSzwvY29t bWFuZD4gd2l0aAotICAgIHRoZSA8bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlv biwgYXJlIG5vdAotICAgIE1WQ0Mtc2FmZS4gIFRoaXMgbWVhbnMgdGhhdCBhZnRlciB0aGUgdHJ1 bmNhdGlvbiBvciByZXdyaXRlIGNvbW1pdHMsIHRoZQorICAgIFNvbWUgY29tbWFuZHMsIGN1cnJl bnRseSBvbmx5IDxsaW5rIGxpbmtlbmQ9InNxbC10cnVuY2F0ZSI+PGNvbW1hbmQ+VFJVTkNBVEU8 L2NvbW1hbmQ+PC9saW5rPiwKKyAgICBhcmUgbm90IE1WQ0Mtc2FmZS4gIFRoaXMgbWVhbnMgdGhh dCBhZnRlciB0aGUgdHJ1bmNhdGlvbiBjb21taXRzLCB0aGUKICAgICB0YWJsZSB3aWxsIGFwcGVh ciBlbXB0eSB0byBjb25jdXJyZW50IHRyYW5zYWN0aW9ucywgaWYgdGhleSBhcmUgdXNpbmcgYQot ICAgIHNuYXBzaG90IHRha2VuIGJlZm9yZSB0aGUgY29tbWFuZCBjb21taXR0ZWQuICBUaGlzIHdp bGwgb25seSBiZSBhbgotICAgIGlzc3VlIGZvciBhIHRyYW5zYWN0aW9uIHRoYXQgZGlkIG5vdCBh Y2Nlc3MgdGhlIHRhYmxlIGluIHF1ZXN0aW9uCi0gICAgYmVmb3JlIHRoZSBjb21tYW5kIHN0YXJ0 ZWQgJm1kYXNoOyBhbnkgdHJhbnNhY3Rpb24gdGhhdCBoYXMgZG9uZSBzbwotICAgIHdvdWxkIGhv bGQgYXQgbGVhc3QgYW4gPGxpdGVyYWw+QUNDRVNTIFNIQVJFPC9saXRlcmFsPiB0YWJsZSBsb2Nr LAotICAgIHdoaWNoIHdvdWxkIGJsb2NrIHRoZSB0cnVuY2F0aW5nIG9yIHJld3JpdGluZyBjb21t YW5kIHVudGlsIHRoYXQgdHJhbnNhY3Rpb24gY29tcGxldGVzLgotICAgIFNvIHRoZXNlIGNvbW1h bmRzIHdpbGwgbm90IGNhdXNlIGFueSBhcHBhcmVudCBpbmNvbnNpc3RlbmN5IGluIHRoZQotICAg IHRhYmxlIGNvbnRlbnRzIGZvciBzdWNjZXNzaXZlIHF1ZXJpZXMgb24gdGhlIHRhcmdldCB0YWJs ZSwgYnV0IHRoZXkKKyAgICBzbmFwc2hvdCB0YWtlbiBiZWZvcmUgdGhlIGNvbW1hbmQgY29tbWl0 dGVkLiAgVGhpcyB3aWxsIG9ubHkgYmUgYW4gaXNzdWUKKyAgICBmb3IgYSB0cmFuc2FjdGlvbiB0 aGF0IGRpZCBub3QgYWNjZXNzIHRoZSB0YWJsZSBpbiBxdWVzdGlvbiBiZWZvcmUgdGhlCisgICAg Y29tbWFuZCBzdGFydGVkICZtZGFzaDsgYW55IHRyYW5zYWN0aW9uIHRoYXQgaGFzIGRvbmUgc28g d291bGQgaG9sZCBhdAorICAgIGxlYXN0IGFuIDxsaXRlcmFsPkFDQ0VTUyBTSEFSRTwvbGl0ZXJh bD4gdGFibGUgbG9jaywgd2hpY2ggd291bGQgYmxvY2sKKyAgICB0aGUgPGNvbW1hbmQ+VFJVTkNB VEU8L2NvbW1hbmQ+IGNvbW1hbmQgdW50aWwgdGhhdCB0cmFuc2FjdGlvbiBjb21wbGV0ZXMuCisg ICAgU28gPGNvbW1hbmQ+VFJVTkNBVEU8L2NvbW1hbmQ+IHdpbGwgbm90IGNhdXNlIGFueSBhcHBh cmVudCBpbmNvbnNpc3RlbmN5CisgICAgaW4gdGhlIHRhYmxlIGNvbnRlbnRzIGZvciBzdWNjZXNz aXZlIHF1ZXJpZXMgb24gdGhlIHRhcmdldCB0YWJsZSwgYnV0IGl0CiAgICAgY291bGQgY2F1c2Ug dmlzaWJsZSBpbmNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSB0YXJnZXQK ICAgICB0YWJsZSBhbmQgb3RoZXIgdGFibGVzIGluIHRoZSBkYXRhYmFzZS4KICAgIDwvcGFyYT4K KworICAgPHBhcmE+CisgICAgVGhlIHRhYmxlLXJld3JpdGluZyBmb3JtcyBvZgorICAgIDxsaW5r IGxpbmtlbmQ9InNxbC1hbHRlcnRhYmxlIj48Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD48 L2xpbms+CisgICAgYW5kIDxsaW5rIGxpbmtlbmQ9InNxbC1yZXBhY2siPjxjb21tYW5kPlJFUEFD SzwvY29tbWFuZD48L2xpbms+CisgICAgd2l0aCB0aGUgPGxpdGVyYWw+Q09OQ1VSUkVOVExZPC9s aXRlcmFsPiBvcHRpb24gYXJlIGFsc28gbm90IE1WQ0Mtc2FmZS4KKyAgICBJZiBhIHRyYW5zYWN0 aW9uIGF0dGVtcHRzIHRvIGFjY2VzcyBhIHJlbGF0aW9uIHRoYXQgd2FzIHJld3JpdHRlbgorICAg IGFmdGVyIHRoZSB0cmFuc2FjdGlvbidzIHNuYXBzaG90IHdhcyB0YWtlbiwgYW4gZXJyb3Igd2ls bCBiZSByYWlzZWQuCisgICAgQXMgYWJvdmUsIHRoaXMgd2lsbCBvbmx5IGJlIGFuIGlzc3VlIGZv ciBhIHRyYW5zYWN0aW9uIHRoYXQgZGlkIG5vdAorICAgIGFjY2VzcyB0aGUgdGFibGUgYmVmb3Jl IHRoZSByZXdyaXRpbmcgY29tbWFuZCBzdGFydGVkLgorICAgPC9wYXJhPgogCiAgICA8cGFyYT4K ICAgICBTdXBwb3J0IGZvciB0aGUgU2VyaWFsaXphYmxlIHRyYW5zYWN0aW9uIGlzb2xhdGlvbiBs ZXZlbCBoYXMgbm90IHlldApJbmRleDogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKSURFQSBh ZGRpdGlvbmFsIGluZm86ClN1YnN5c3RlbTogY29tLmludGVsbGlqLm9wZW5hcGkuZGlmZi5pbXBs LnBhdGNoLkNoYXJzZXRFUAo8Kz5VVEYtOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCi0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCShyZXZpc2lvbiAxNGJmOGRiYzBhYzBkNTJhNjEyMWJl MjQ4NGY2NTJmYzBjMDQ3MzJkKQorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwkocmV2 aXNpb24gZTUzMTFmMTRjNDYzODE5ZmFiZTZjNTdmYTc0NTEyZjEwYzg4MTUwOCkKQEAgLTk1Myw2 ICs5NTMsNyBAQAogCXZhbHVlc1tBbnVtX3BnX2NsYXNzX3JlbHJld3JpdGUgLSAxXSA9IE9iamVj dElkR2V0RGF0dW0ocmRfcmVsLT5yZWxyZXdyaXRlKTsKIAl2YWx1ZXNbQW51bV9wZ19jbGFzc19y ZWxmcm96ZW54aWQgLSAxXSA9IFRyYW5zYWN0aW9uSWRHZXREYXR1bShyZF9yZWwtPnJlbGZyb3pl bnhpZCk7CiAJdmFsdWVzW0FudW1fcGdfY2xhc3NfcmVsbWlubXhpZCAtIDFdID0gTXVsdGlYYWN0 SWRHZXREYXR1bShyZF9yZWwtPnJlbG1pbm14aWQpOworCXZhbHVlc1tBbnVtX3BnX2NsYXNzX3Jl bGNoZWNreG1pbiAtIDFdID0gVHJhbnNhY3Rpb25JZEdldERhdHVtKHJkX3JlbC0+cmVsY2hlY2t4 bWluKTsKIAlpZiAocmVsYWNsICE9IChEYXR1bSkgMCkKIAkJdmFsdWVzW0FudW1fcGdfY2xhc3Nf cmVsYWNsIC0gMV0gPSByZWxhY2w7CiAJZWxzZQpAQCAtMTAyMyw2ICsxMDI0LDggQEAKIAkvKiBy ZWxpc3BhcnRpdGlvbiBpcyBhbHdheXMgc2V0IGJ5IHVwZGF0aW5nIHRoaXMgdHVwbGUgbGF0ZXIg Ki8KIAluZXdfcmVsX3JlbHR1cC0+cmVsaXNwYXJ0aXRpb24gPSBmYWxzZTsKIAorCW5ld19yZWxf cmVsdHVwLT5yZWxjaGVja3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwogCS8qIGZpbGwg cmRfYXR0J3MgdHlwZSBJRCB3aXRoIHNvbWV0aGluZyBzYW5lIGV2ZW4gaWYgcmVsdHlwZSBpcyB6 ZXJvICovCiAJbmV3X3JlbF9kZXNjLT5yZF9hdHQtPnRkdHlwZWlkID0gbmV3X3R5cGVfb2lkID8g bmV3X3R5cGVfb2lkIDogUkVDT1JET0lEOwogCW5ld19yZWxfZGVzYy0+cmRfYXR0LT50ZHR5cG1v ZCA9IC0xOwpJbmRleDogc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCklERUEgYWRkaXRp b25hbCBpbmZvOgpTdWJzeXN0ZW06IGNvbS5pbnRlbGxpai5vcGVuYXBpLmRpZmYuaW1wbC5wYXRj aC5DaGFyc2V0RVAKPCs+VVRGLTgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY2x1c3Rlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCi0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwkocmV2aXNpb24gMTRiZjhkYmMwYWMwZDUy YTYxMjFiZTI0ODRmNjUyZmMwYzA0NzMyZCkKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1 c3Rlci5jCShyZXZpc2lvbiBlNTMxMWYxNGM0NjM4MTlmYWJlNmM1N2ZhNzQ1MTJmMTBjODgxNTA4 KQpAQCAtMTAzMSw3ICsxMDMxLDcgQEAKIAkJICogcmVidWlsZCB0aGUgdGFyZ2V0J3MgaW5kZXhl cyBhbmQgdGhyb3cgYXdheSB0aGUgdHJhbnNpZW50IHRhYmxlLgogCQkgKi8KIAkJZmluaXNoX2hl YXBfc3dhcCh0YWJsZU9pZCwgT0lETmV3SGVhcCwgaXNfc3lzdGVtX2NhdGFsb2csCi0JCQkJCQkg c3dhcF90b2FzdF9ieV9jb250ZW50LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwKKwkJCQkJCSBzd2FwX3Rv YXN0X2J5X2NvbnRlbnQsIGZhbHNlLCB0cnVlLCB0cnVlLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwK IAkJCQkJCSBmcm96ZW5YaWQsIGN1dG9mZk11bHRpLAogCQkJCQkJIHJlbHBlcnNpc3RlbmNlKTsK IAl9CkBAIC0xNDI5LDYgKzE0MjksNyBAQAogc3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9p ZCByMiwgYm9vbCB0YXJnZXRfaXNfcGdfY2xhc3MsCiAJCQkJCWJvb2wgc3dhcF90b2FzdF9ieV9j b250ZW50LAogCQkJCQlib29sIGlzX2ludGVybmFsLAorCQkJCQlUcmFuc2FjdGlvbklkIGNoZWNr X3htaW4sCiAJCQkJCVRyYW5zYWN0aW9uSWQgZnJvemVuWGlkLAogCQkJCQlNdWx0aVhhY3RJZCBj dXRvZmZNdWx0aSwKIAkJCQkJT2lkICptYXBwZWRfdGFibGVzKQpAQCAtMTYxMSw2ICsxNjEyLDkg QEAKIAkJcmVsZm9ybTItPnJlbGFsbGZyb3plbiA9IHN3YXBfYWxsZnJvemVuOwogCX0KIAorCXJl bGZvcm0xLT5yZWxjaGVja3htaW4gPSBjaGVja194bWluOworCXJlbGZvcm0yLT5yZWxjaGVja3ht aW4gPSBjaGVja194bWluOworCiAJLyoKIAkgKiBVcGRhdGUgdGhlIHR1cGxlcyBpbiBwZ19jbGFz cyAtLS0gdW5sZXNzIHRoZSB0YXJnZXQgcmVsYXRpb24gb2YgdGhlCiAJICogc3dhcCBpcyBwZ19j bGFzcyBpdHNlbGYuICBJbiB0aGF0IGNhc2UsIHRoZXJlIGlzIHplcm8gcG9pbnQgaW4gbWFraW5n CkBAIC0xNjg4LDYgKzE2OTIsNyBAQAogCQkJCQkJCQkJdGFyZ2V0X2lzX3BnX2NsYXNzLAogCQkJ CQkJCQkJc3dhcF90b2FzdF9ieV9jb250ZW50LAogCQkJCQkJCQkJaXNfaW50ZXJuYWwsCisJCQkJ CQkJCQlJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCWZyb3plblhpZCwKIAkJCQkJCQkJ CWN1dG9mZk11bHRpLAogCQkJCQkJCQkJbWFwcGVkX3RhYmxlcyk7CkBAIC0xNzkxLDYgKzE3OTYs NyBAQAogCQkJCQkJCXRhcmdldF9pc19wZ19jbGFzcywKIAkJCQkJCQlzd2FwX3RvYXN0X2J5X2Nv bnRlbnQsCiAJCQkJCQkJaXNfaW50ZXJuYWwsCisJCQkJCQkJY2hlY2tfeG1pbiwKIAkJCQkJCQlJ bnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQlJbnZhbGlkTXVsdGlYYWN0SWQsCiAJCQkJCQkJ bWFwcGVkX3RhYmxlcyk7CkBAIC0xODE0LDYgKzE4MjAsNyBAQAogCQkJCSBib29sIGNoZWNrX2Nv bnN0cmFpbnRzLAogCQkJCSBib29sIGlzX2ludGVybmFsLAogCQkJCSBib29sIHJlaW5kZXgsCisJ CQkJIFRyYW5zYWN0aW9uSWQgY2hlY2tfeG1pbiwKIAkJCQkgVHJhbnNhY3Rpb25JZCBmcm96ZW5Y aWQsCiAJCQkJIE11bHRpWGFjdElkIGN1dG9mZk11bHRpLAogCQkJCSBjaGFyIG5ld3JlbHBlcnNp c3RlbmNlKQpAQCAtMTgzNSw3ICsxODQyLDcgQEAKIAkgKi8KIAlzd2FwX3JlbGF0aW9uX2ZpbGVz KE9JRE9sZEhlYXAsIE9JRE5ld0hlYXAsCiAJCQkJCQkoT0lET2xkSGVhcCA9PSBSZWxhdGlvblJl bGF0aW9uSWQpLAotCQkJCQkJc3dhcF90b2FzdF9ieV9jb250ZW50LCBpc19pbnRlcm5hbCwKKwkJ CQkJCXN3YXBfdG9hc3RfYnlfY29udGVudCwgaXNfaW50ZXJuYWwsIGNoZWNrX3htaW4sCiAJCQkJ CQlmcm96ZW5YaWQsIGN1dG9mZk11bHRpLCBtYXBwZWRfdGFibGVzKTsKIAogCS8qCkBAIC0zMzM1 LDYgKzMzNDIsNyBAQAogCQkJCQkJCWZhbHNlLAkvKiBzd2FwX3RvYXN0X2J5X2NvbnRlbnQgKi8K IAkJCQkJCQl0cnVlLAogCQkJCQkJCUludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCUludmFs aWRUcmFuc2FjdGlvbklkLAogCQkJCQkJCUludmFsaWRNdWx0aVhhY3RJZCwKIAkJCQkJCQltYXBw ZWRfdGFibGVzKTsKIApAQCAtMzM3MSw3ICszMzc5LDcgQEAKIAlmaW5pc2hfaGVhcF9zd2FwKG9s ZF90YWJsZV9vaWQsIG5ld190YWJsZV9vaWQsCiAJCQkJCSBpc19zeXN0ZW1fY2F0YWxvZywKIAkJ CQkJIGZhbHNlLAkJLyogc3dhcF90b2FzdF9ieV9jb250ZW50ICovCi0JCQkJCSBmYWxzZSwgdHJ1 ZSwgZmFsc2UsCisJCQkJCSBmYWxzZSwgdHJ1ZSwgZmFsc2UsIEdldEN1cnJlbnRUcmFuc2FjdGlv bklkKCksCiAJCQkJCSBmcm96ZW5YaWQsIGN1dG9mZk11bHRpLAogCQkJCQkgcmVscGVyc2lzdGVu Y2UpOwogfQpJbmRleDogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCklERUEgYWRkaXRp b25hbCBpbmZvOgpTdWJzeXN0ZW06IGNvbS5pbnRlbGxpai5vcGVuYXBpLmRpZmYuaW1wbC5wYXRj aC5DaGFyc2V0RVAKPCs+VVRGLTgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCi0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwkocmV2aXNpb24gMTRiZjhkYmMwYWMwZDUy YTYxMjFiZTI0ODRmNjUyZmMwYzA0NzMyZCkKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0 dmlldy5jCShyZXZpc2lvbiBlNTMxMWYxNGM0NjM4MTlmYWJlNmM1N2ZhNzQ1MTJmMTBjODgxNTA4 KQpAQCAtODkyLDcgKzg5Miw3IEBACiBzdGF0aWMgdm9pZAogcmVmcmVzaF9ieV9oZWFwX3N3YXAo T2lkIG1hdHZpZXdPaWQsIE9pZCBPSUROZXdIZWFwLCBjaGFyIHJlbHBlcnNpc3RlbmNlKQogewot CWZpbmlzaF9oZWFwX3N3YXAobWF0dmlld09pZCwgT0lETmV3SGVhcCwgZmFsc2UsIGZhbHNlLCB0 cnVlLCB0cnVlLCB0cnVlLAorCWZpbmlzaF9oZWFwX3N3YXAobWF0dmlld09pZCwgT0lETmV3SGVh cCwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwK IAkJCQkJIFJlY2VudFhtaW4sIFJlYWROZXh0TXVsdGlYYWN0SWQoKSwgcmVscGVyc2lzdGVuY2Up OwogfQogCkluZGV4OiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpJREVBIGFkZGl0 aW9uYWwgaW5mbzoKU3Vic3lzdGVtOiBjb20uaW50ZWxsaWoub3BlbmFwaS5kaWZmLmltcGwucGF0 Y2guQ2hhcnNldEVQCjwrPlVURi04Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMJKHJldmlzaW9uIDE0YmY4ZGJj MGFjMGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMwNDczMmQpCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCShyZXZpc2lvbiBlNTMxMWYxNGM0NjM4MTlmYWJlNmM1N2ZhNzQ1MTJm MTBjODgxNTA4KQpAQCAtNjAyNiw2ICs2MDI2LDcgQEAKIAkJCQkJCQkgZmFsc2UsIGZhbHNlLCB0 cnVlLAogCQkJCQkJCSAhT2lkSXNWYWxpZCh0YWItPm5ld1RhYmxlU3BhY2UpLAogCQkJCQkJCSB0 cnVlLAorCQkJCQkJCSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpLAogCQkJCQkJCSBSZWNlbnRY bWluLAogCQkJCQkJCSBSZWFkTmV4dE11bHRpWGFjdElkKCksCiAJCQkJCQkJIHBlcnNpc3RlbmNl KTsKSW5kZXg6IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCklERUEgYWRkaXRpb25hbCBp bmZvOgpTdWJzeXN0ZW06IGNvbS5pbnRlbGxpai5vcGVuYXBpLmRpZmYuaW1wbC5wYXRjaC5DaGFy c2V0RVAKPCs+VVRGLTgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW0uYwkocmV2aXNpb24gMTRiZjhkYmMwYWMwZDUyYTYxMjFiZTI0 ODRmNjUyZmMwYzA0NzMyZCkKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMJKHJl dmlzaW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1MDgpCkBAIC0xNTM0 LDYgKzE1MzQsOSBAQAogCQlpZiAodXBkYXRlKQogCQl7CiAJCQlwZ2Nmb3JtLT5yZWxmcm96ZW54 aWQgPSBmcm96ZW54aWQ7CisJCQkvKiBDbGVhciByZWxjaGVja3htaW4gaWYgZnJvemVueGlkIGlz IGhpZ2hlciwgbm93IGl0IGlzIHNhZmUgKi8KKwkJCWlmIChUcmFuc2FjdGlvbklkUHJlY2VkZXMo cGdjZm9ybS0+cmVsY2hlY2t4bWluLCBwZ2Nmb3JtLT5yZWxmcm96ZW54aWQpKQorCQkJCXBnY2Zv cm0tPnJlbGNoZWNreG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCQkJZGlydHkgPSB0cnVl OwogCQkJaWYgKGZyb3plbnhpZF91cGRhdGVkKQogCQkJCSpmcm96ZW54aWRfdXBkYXRlZCA9IHRy dWU7CkluZGV4OiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpJREVBIGFkZGl0aW9u YWwgaW5mbzoKU3Vic3lzdGVtOiBjb20uaW50ZWxsaWoub3BlbmFwaS5kaWZmLmltcGwucGF0Y2gu Q2hhcnNldEVQCjwrPlVURi04Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMJKHJldmlzaW9uIDE0YmY4ZGJjMGFj MGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMwNDczMmQpCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCShyZXZpc2lvbiBlNTMxMWYxNGM0NjM4MTlmYWJlNmM1N2ZhNzQ1MTJmMTBj ODgxNTA4KQpAQCAtODY1LDYgKzg2NSwyNCBAQAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkg LSAxXSA9IHJlbDsKIAl9CiAKKwlpZiAodW5saWtlbHkoVHJhbnNhY3Rpb25JZElzVmFsaWQocmVs LT5yZF9jaGVja194bWluKSkpCisJeworCQkvKiBXZSBrbm93IGl0IGlzIGNvbW1pdHRlZCwganVz dCBuZWVkIHRvIGJlIHN1cmUgaXQgaXMgdmlzaWJsZSBmb3IgY3VycmVudCBleGVjICovCisJCVRy YW5zYWN0aW9uSWQgeG1pbiA9IHJlbC0+cmRfY2hlY2tfeG1pbjsKKwkJLyogRmFzdCBjaGVjayBm aXJzdCAqLworCQlpZiAodW5saWtlbHkoIVRyYW5zYWN0aW9uSWRJc0N1cnJlbnRUcmFuc2FjdGlv bklkKHhtaW4pICYmCisJCQkJIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBUcmFuc2FjdGlv blhtaW4pKSkKKwkJeworCQkJU25hcHNob3Qgc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgp OworCQkJLyogVGVzdCByZW1haW5pbmcgcnVsZXMgKi8KKwkJCWlmIChYaWRJbk1WQ0NTbmFwc2hv dCh4bWluLCBzbmFwc2hvdCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9SRUxBVElPTl9VTkFWQUlMQUJMRV9GT1JfQ1VSUkVOVF9UUkFOU0FDVElPTiksCisJCQkJ CQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gY3VycmVudCB0 cmFuc2FjdGlvbiIsCisJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOwor CQl9CisJfQorCiAJcmV0dXJuIHJlbDsKIH0KIApJbmRleDogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYwpJREVBIGFkZGl0aW9uYWwgaW5mbzoKU3Vic3lzdGVtOiBjb20uaW50ZWxs aWoub3BlbmFwaS5kaWZmLmltcGwucGF0Y2guQ2hhcnNldEVQCjwrPlVURi04Cj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCi0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMJKHJldmlzaW9uIDE0YmY4ZGJjMGFjMGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMw NDczMmQpCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMJKHJldmlzaW9u IGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1MDgpCkBAIC0xMjAzLDYgKzEy MDMsOCBAQAogCSAqLwogCVJlbGF0aW9uQnVpbGRUdXBsZURlc2MocmVsYXRpb24pOwogCisJcmVs YXRpb24tPnJkX2NoZWNrX3htaW4gPSByZWxwLT5yZWxjaGVja3htaW47CisKIAkvKiBmb3JlaWdu IGtleSBkYXRhIGlzIG5vdCBsb2FkZWQgdGlsbCBhc2tlZCBmb3IgKi8KIAlyZWxhdGlvbi0+cmRf ZmtleWxpc3QgPSBOSUw7CiAJcmVsYXRpb24tPnJkX2ZrZXl2YWxpZCA9IGZhbHNlOwpJbmRleDog c3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CklERUEgYWRkaXRpb25hbCBpbmZvOgpTdWJz eXN0ZW06IGNvbS5pbnRlbGxpai5vcGVuYXBpLmRpZmYuaW1wbC5wYXRjaC5DaGFyc2V0RVAKPCs+ VVRGLTgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMu dHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2VycmNvZGVzLnR4dAkocmV2aXNpb24gMTRiZjhkYmMwYWMwZDUyYTYxMjFiZTI0ODRmNjUy ZmMwYzA0NzMyZCkKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CShyZXZpc2lv biBlNTMxMWYxNGM0NjM4MTlmYWJlNmM1N2ZhNzQ1MTJmMTBjODgxNTA4KQpAQCAtMjU5LDYgKzI1 OSw3IEBACiAyNVAwMiAgICBFICAgIEVSUkNPREVfSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2ZhaWxlZF9zcWxfdHJhbnNhY3Rpb24KIDI1 UDAzICAgIEUgICAgRVJSQ09ERV9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCAg ICAgICAgICAgICAgICAgICAgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQKIDI1 UDA0ICAgIEUgICAgRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25fdGltZW91dAorMjVQMDUgICAgRSAgICBFUlJD T0RFX1JFTEFUSU9OX1VOQVZBSUxBQkxFX0ZPUl9DVVJSRU5UX1RSQU5TQUNUSU9OICAgICAgICAg ICByZWxhdGlvbl91bmF2YWlsYWJsZV9mb3JfY3VycmVudF90cmFuc2FjdGlvbgogCiBTZWN0aW9u OiBDbGFzcyAyNiAtIEludmFsaWQgU1FMIFN0YXRlbWVudCBOYW1lCiAKSW5kZXg6IHNyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCklERUEgYWRkaXRpb25hbCBpbmZvOgpTdWJzeXN0ZW06 IGNvbS5pbnRlbGxpai5vcGVuYXBpLmRpZmYuaW1wbC5wYXRjaC5DaGFyc2V0RVAKPCs+VVRGLTgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2NhdHZlcnNpb24uaAkocmV2aXNpb24gMTRiZjhkYmMwYWMwZDUyYTYxMjFiZTI0ODRmNjUy ZmMwYzA0NzMyZCkKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgJKHJldmlz aW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1MDgpCkBAIC01Nyw2ICs1 Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5lIENBVEFMT0dfVkVS U0lPTl9OTwkyMDI2MDEyMjEKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjYwMTI0Mgog CiAjZW5kaWYKSW5kZXg6IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApJREVBIGFkZGl0 aW9uYWwgaW5mbzoKU3Vic3lzdGVtOiBjb20uaW50ZWxsaWoub3BlbmFwaS5kaWZmLmltcGwucGF0 Y2guQ2hhcnNldEVQCjwrPlVURi04Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY2xhc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgJKHJldmlzaW9uIDE0YmY4ZGJjMGFjMGQ1 MmE2MTIxYmUyNDg0ZjY1MmZjMGMwNDczMmQpCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y2xhc3MuaAkocmV2aXNpb24gZTUzMTFmMTRjNDYzODE5ZmFiZTZjNTdmYTc0NTEyZjEwYzg4MTUw OCkKQEAgLTEzMSw2ICsxMzEsOSBAQAogCS8qIGFsbCBtdWx0aXhhY3RzIGluIHRoaXMgcmVsIGFy ZSA+PSB0aGlzOyBpdCBpcyByZWFsbHkgYSBNdWx0aVhhY3RJZCAqLwogCVRyYW5zYWN0aW9uSWQg cmVsbWlubXhpZCBCS0lfREVGQVVMVCgxKTsJLyogRmlyc3RNdWx0aVhhY3RJZCAqLwogCisJLyog bmVlZCB0byBjaGVjayB0byBwcmV2ZW50IE1WQ0MgdmlvbGF0aW9ucyAqLworCVRyYW5zYWN0aW9u SWQgcmVsY2hlY2t4bWluIEJLSV9ERUZBVUxUKDApOwkvKiBJbnZhbGlkVHJhbnNhY3Rpb25JZCAq LworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0 YXJ0IGhlcmUgKi8KIAkvKiBOT1RFOiBUaGVzZSBmaWVsZHMgYXJlIG5vdCBwcmVzZW50IGluIGEg cmVsY2FjaGUgZW50cnkncyByZF9yZWwgZmllbGQuICovCiAJLyogYWNjZXNzIHBlcm1pc3Npb25z ICovCkBAIC0xNDYsNyArMTQ5LDcgQEAKIAogLyogU2l6ZSBvZiBmaXhlZCBwYXJ0IG9mIHBnX2Ns YXNzIHR1cGxlcywgbm90IGNvdW50aW5nIHZhci1sZW5ndGggZmllbGRzICovCiAjZGVmaW5lIENM QVNTX1RVUExFX1NJWkUgXAotCSAob2Zmc2V0b2YoRm9ybURhdGFfcGdfY2xhc3MscmVsbWlubXhp ZCkgKyBzaXplb2YoVHJhbnNhY3Rpb25JZCkpCisJIChvZmZzZXRvZihGb3JtRGF0YV9wZ19jbGFz cyxyZWxjaGVja3htaW4pICsgc2l6ZW9mKFRyYW5zYWN0aW9uSWQpKQogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCiAgKgkJRm9ybV9wZ19jbGFzcyBjb3JyZXNwb25kcyB0byBhIHBvaW50ZXIgdG8gYSB0 dXBsZSB3aXRoCkluZGV4OiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgKSURFQSBhZGRp dGlvbmFsIGluZm86ClN1YnN5c3RlbTogY29tLmludGVsbGlqLm9wZW5hcGkuZGlmZi5pbXBsLnBh dGNoLkNoYXJzZXRFUAo8Kz5VVEYtOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9jbHVzdGVyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCShyZXZpc2lvbiAxNGJmOGRiYzBhYzBk NTJhNjEyMWJlMjQ4NGY2NTJmYzBjMDQ3MzJkKQorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9j bHVzdGVyLmgJKHJldmlzaW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1 MDgpCkBAIC0xMzAsNiArMTMwLDcgQEAKIAkJCQkJCQkgYm9vbCBjaGVja19jb25zdHJhaW50cywK IAkJCQkJCQkgYm9vbCBpc19pbnRlcm5hbCwKIAkJCQkJCQkgYm9vbCByZWluZGV4LAorCQkJCQkJ CSBUcmFuc2FjdGlvbklkIGNoZWNrX3htaW4sCiAJCQkJCQkJIFRyYW5zYWN0aW9uSWQgZnJvemVu WGlkLAogCQkJCQkJCSBNdWx0aVhhY3RJZCBjdXRvZmZNdWx0aSwKIAkJCQkJCQkgY2hhciBuZXdy ZWxwZXJzaXN0ZW5jZSk7CkluZGV4OiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaApJREVBIGFkZGl0 aW9uYWwgaW5mbzoKU3Vic3lzdGVtOiBjb20uaW50ZWxsaWoub3BlbmFwaS5kaWZmLmltcGwucGF0 Y2guQ2hhcnNldEVQCjwrPlVURi04Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvcmVsLmgJKHJldmlzaW9uIDE0YmY4ZGJjMGFjMGQ1MmE2MTIxYmUyNDg0ZjY1MmZjMGMw NDczMmQpCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCShyZXZpc2lvbiBlNTMxMWYxNGM0 NjM4MTlmYWJlNmM1N2ZhNzQ1MTJmMTBjODgxNTA4KQpAQCAtMTQzLDYgKzE0MywxMSBAQAogCSAq LwogCVRyYW5zYWN0aW9uSWQgcmRfcGFydGRlc2Nfbm9kZXRhY2hlZF94bWluOwogCisJLyoKKwkg KiBVc2VkIGF0IGV4ZWN1dGlvbiBwaGFzZSB0byBwcmV2ZW50IHZpb2xhdGlvbiBvZiBNVkNDIHJ1 bGVzLgorCSAqLworCVRyYW5zYWN0aW9uSWQgcmRfY2hlY2tfeG1pbjsKKwogCS8qIGRhdGEgbWFu YWdlZCBieSBSZWxhdGlvbkdldFBhcnRpdGlvblF1YWw6ICovCiAJTGlzdAkgICAqcmRfcGFydGNo ZWNrOwkvKiBwYXJ0aXRpb24gQ0hFQ0sgcXVhbHMgKi8KIAlib29sCQlyZF9wYXJ0Y2hlY2t2YWxp ZDsJLyogdHJ1ZSBpZiBsaXN0IGhhcyBiZWVuIGNvbXB1dGVkICovCkluZGV4OiBzcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKSURFQSBhZGRpdGlvbmFsIGluZm86ClN1 YnN5c3RlbTogY29tLmludGVsbGlqLm9wZW5hcGkuZGlmZi5pbXBsLnBhdGNoLkNoYXJzZXRFUAo8 Kz5VVEYtOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFr ZWZpbGUKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCShy ZXZpc2lvbiAxNGJmOGRiYzBhYzBkNTJhNjEyMWJlMjQ4NGY2NTJmYzBjMDQ3MzJkKQorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUJKHJldmlzaW9uIGU1MzEx ZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1MDgpCkBAIC0xNiw2ICsxNiw3IEBACiAJ ICAgIGlucGxhY2UgXAogCSAgICByZXBhY2sgXAogCSAgICByZXBhY2tfdG9hc3QgXAorCSAgICBy ZXBhY2tfbXZjYyBcCiAJICAgIHN5c2NhY2hlLXVwZGF0ZS1wcnVuZWQgXAogCSAgICBoZWFwX2xv Y2tfdXBkYXRlCiBJU09MQVRJT05fT1BUUyA9IC0tdGVtcC1jb25maWcgJCh0b3Bfc3JjZGlyKS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbG9naWNhbC5jb25mCkluZGV4OiBzcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVwYWNrX212Y2Mub3V0Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9l eHBlY3RlZC9yZXBhY2tfbXZjYy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvcmVwYWNrX212Y2Mub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSAvZGV2 L251bGwJKHJldmlzaW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1MDgp CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZXBhY2tf bXZjYy5vdXQJKHJldmlzaW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4ODE1 MDgpCkBAIC0wLDAgKzEsMTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBiZWdpbiByZXBhY2sgY2hlY2sKK3N0ZXAgYmVnaW46IAor CUJFR0lOIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CisJU0VM RUNUIDE7CisKKz9jb2x1bW4/CistLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykKKworc3RlcCBy ZXBhY2s6IAorCVJFUEFDSyAoQ09OQ1VSUkVOVExZKSByZXBhY2tfdGVzdDsKKworc3RlcCBjaGVj azogCisJU0VMRUNUICogRlJPTSByZXBhY2tfdGVzdDsKKworRVJST1I6ICByZWxhdGlvbiAicmVw YWNrX3Rlc3QiIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiBjdXJyZW50IHRyYW5zYWN0aW9uCkluZGV4 OiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKSURFQSBhZGRp dGlvbmFsIGluZm86ClN1YnN5c3RlbTogY29tLmludGVsbGlqLm9wZW5hcGkuZGlmZi5pbXBsLnBh dGNoLkNoYXJzZXRFUAo8Kz5VVEYtOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL21lc29uLmJ1aWxkCShyZXZpc2lvbiAxNGJmOGRiYzBhYzBkNTJhNjEyMWJlMjQ4 NGY2NTJmYzBjMDQ3MzJkKQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv bWVzb24uYnVpbGQJKHJldmlzaW9uIGU1MzExZjE0YzQ2MzgxOWZhYmU2YzU3ZmE3NDUxMmYxMGM4 ODE1MDgpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgICAnaW5wbGFjZScsCiAgICAgICAncmVwYWNr JywKICAgICAgICdyZXBhY2tfdG9hc3QnLAorICAgICAgJ3JlcGFja19tdmNjJywKICAgICAgICdz eXNjYWNoZS11cGRhdGUtcHJ1bmVkJywKICAgICAgICdoZWFwX2xvY2tfdXBkYXRlJywKICAgICBd LApJbmRleDogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3JlcGFja19t dmNjLnNwZWMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL3NwZWNzL3JlcGFja19tdmNjLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3BlY3MvcmVwYWNrX212Y2Muc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAot LS0gL2Rldi9udWxsCShyZXZpc2lvbiBlNTMxMWYxNGM0NjM4MTlmYWJlNmM1N2ZhNzQ1MTJmMTBj ODgxNTA4KQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3MvcmVw YWNrX212Y2Muc3BlYwkocmV2aXNpb24gZTUzMTFmMTRjNDYzODE5ZmFiZTZjNTdmYTc0NTEyZjEw Yzg4MTUwOCkKQEAgLTAsMCArMSwzOCBAQAorIyBSRVBBQ0sgKENPTkNVUlJFTlRMWSk7CisjCisj IFRlc3QgaGFuZGxpbmcgb2YgcHJldmVudGluZyBhY2Nlc3MgdG8gbm9uLW12Y2Mgc2FmZSBkYXRh Lgorc2V0dXAKK3sKKwlDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisKKwlDUkVB VEUgVEFCTEUgcmVwYWNrX3Rlc3QoaSBpbnQgUFJJTUFSWSBLRVkpOworCUlOU0VSVCBJTlRPIHJl cGFja190ZXN0KGkpIFZBTFVFUyAoMSksICgyKSwgKDMpOworfQorCit0ZWFyZG93bgoreworCURS T1AgVEFCTEUgcmVwYWNrX3Rlc3Q7CisJRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsK K30KKworc2Vzc2lvbiBzMQorc3RlcCByZXBhY2sKK3sKKwlSRVBBQ0sgKENPTkNVUlJFTlRMWSkg cmVwYWNrX3Rlc3Q7Cit9CisKK3Nlc3Npb24gczIKK3N0ZXAgYmVnaW4KK3sKKwlCRUdJTiBUUkFO U0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworCVNFTEVDVCAxOworfQor c3RlcCBjaGVjaworeworCVNFTEVDVCAqIEZST00gcmVwYWNrX3Rlc3Q7Cit9CisKK3Blcm11dGF0 aW9uCisJYmVnaW4KKwlyZXBhY2sKKwljaGVjawo= --000000000000208587064938ebad--