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 1tEDwK-0064Gp-Vq for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Nov 2024 20:38:13 +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 1tEDwI-0013Zs-4Q for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Nov 2024 20:38:10 +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.94.2) (envelope-from ) id 1tEDwH-0013Zj-Gb for pgsql-hackers@lists.postgresql.org; Thu, 21 Nov 2024 20:38:09 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tEDwA-003A6f-7A for pgsql-hackers@postgresql.org; Thu, 21 Nov 2024 20:38:08 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2120f9ec28eso10919695ad.1 for ; Thu, 21 Nov 2024 12:38:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1732221479; x=1732826279; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:from:to:cc:subject:date:message-id:reply-to; bh=eKpuU38spY9K1jWtdB7b5j2I7pahMWHIUhB57rMtYzk=; b=ZMKmOIrvuUucB+3f2l8LIhNzQHPh43fV9cyntldrn9fY5PWfhVboqhPUELTbI78tLx cfqTiLzGDS/oVPBOkoaH3C94Sgh7wv2gpo50pP9Qz8kO3K3gBFVTsjGOYSAzqgxUgv4a EiDqWPqBZuhUWhgxnVBtdkIlFHPGfhAtMMwxJlHQl0JidRpVnsvHl9MH2VhBYS0dWgwO pm4rYFnbPQh7XWG2Z1UGRLcoT+EsBOYBY0du+mJUMvxK5jXBCxczjrsObnRth36TDTKA 69aS5ch6+QqhW60PXo2SGNLJgxfRc2fjWPB4Bxk+arYxM0dCg7e0F+tyycf9OnXL5i6L M0Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732221479; x=1732826279; h=mime-version:user-agent:references:in-reply-to:date:to:from:subject :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eKpuU38spY9K1jWtdB7b5j2I7pahMWHIUhB57rMtYzk=; b=eFcyHqaNujpI+jVQu9V5fvfi0zeU342Ed2DVoC6JQqSwilHGMXwwD2g7B463d+0kuH BOPjufyXBtwt7Y73rc64sUm0nrgCLdSOQnpfW/pmM098W+PyG3irymW2OcTxT28Vmaqy ZPolt6S8wytqiz4P84DypqY9b0q6DqiUAeSAuDT9eFWps+9DNZZvtzZAkK1eePetav1y lrEFYCktpXh/4H/1g2f6263PDzZ3WWNvYXEEAnP/U6vfvIuDBb7HcZ4a3H5EA9ytlizw v+mUmOp06q5MNlwz9ysbz8j9a9ddEq88kBE9qe53flcdiqS8zQWDuMqhX9kbkvteK9bS By4g== X-Forwarded-Encrypted: i=1; AJvYcCWKG3JfAWuISvqx71rDdMq7hc9oGhhO3mKfjmUjDymYjgGm+0yFX3AdSg97vfVnO+RBK3WKybN4tN5k31GS@postgresql.org X-Gm-Message-State: AOJu0Yxg5pi0JfZiFx40My4ppfa/4vpixRTf9iDvH+4GJokYNioXJhL/ kXjfOUL+tGusd6t+ltnvuG3TzGVzRZK3tfzyB0oZCQXuT+xy8Bi2EedIjOhtZQ== X-Gm-Gg: ASbGncvZHWY9+t4W8azUolxGDStAnG1qKuAZVoMCojomPLFKErpO1rEkqlQOBK6SeU7 CJSBt9XNANaWHUGO8crgbOFsBhYDR8YJh2nFED5JYkXSKVYBSsOZBJpJpr9J5cHjBsKgvc9RDCL Htky1aj0yjOlPU26C57eq8cUievN19lZK9+hwvAslz2B6gYK7pcuW31FU6lmhDh677qArUq/4gJ eBvBjGHp2IagCB+7uXd+sX+uDRu1zRGGAztKhENm7oGBxFVpQn6dD8hqMxHiU6cGgL0a1b+glHf KypyUQ5T9zluRpWG X-Google-Smtp-Source: AGHT+IGtfLMJ+2q49QkxGe30OuVH6UAqjeU0g9ZEBiy9CigSkCk52Zof7EuxGcz01Q2I6Jd+mMI6cg== X-Received: by 2002:a17:903:32c4:b0:211:3295:ec7b with SMTP id d9443c01a7336-21283b45e21mr71662085ad.0.1732221479096; Thu, 21 Nov 2024 12:37:59 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2129dba5d4bsm2540405ad.80.2024.11.21.12.37.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2024 12:37:58 -0800 (PST) Message-ID: <7530bd8783b1a78d53a3c70383e38d8da0a5ffe5.camel@j-davis.com> Subject: Re: Reduce TupleHashEntryData struct size by half From: Jeff Davis To: Heikki Linnakangas , pgsql-hackers@postgresql.org Date: Thu, 21 Nov 2024 12:37:56 -0800 In-Reply-To: References: <817d244237878cebdff0bc363718feaf49a1ea7d.camel@j-davis.com> <0f3e7407-fb19-42c0-ad10-46eace6c1399@iki.fi> <7c3224111d9edcc16e8e3c8242de5a82c4ee2a73.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-7XbwUtLb5+CQKaQ6AeIg" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-7XbwUtLb5+CQKaQ6AeIg Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable New patch series attached. * a few cleanup patches, but 0001 and 0004 can affect initial hash table sizing * also pack AggStatePerGroupData (to 10 bytes) * put additional data in the same chunk as firstTuple to avoid an extra pointer an an extra allocation On Tue, 2024-11-19 at 01:30 +0200, Heikki Linnakangas wrote: > Sounds like a good idea. Needs some changes to the TupleTableSlotOps=20 > interface to avoid the memcpy I presume. Neither firstTuple nor the additional data have a size known at compile time, so it can't be represented by a struct. It seems best to keep firstTuple at the beginning so that it matches the SH_KEY_TYPE, and then just repalloc() to make room at the end for the additional data, which avoids the memcpy unless it crosses a power-of-two boundary. > >=20 > Queries that have a only a small number of groups might might benefit > from storing a plain Datum/isnull array instead of a MinimalTuple. > That=20 > would take more memory when you have a lot of groups though. The current MinimalTuple representation is pretty wasteful for small grouping keys, so I don't think it would be hard to beat. > > Alternatively, MinimalTuple is not very "minimal", and perhaps we > > can > > just make it better. >=20 > Yeah. It tries to be compatible with HeapTuple, but perhaps we should > give up on that and pack it more tightly instead. From the perspective of HashAgg, that seems worthwhile. In my current patch set, depending on the grouping key and aggregates, the chunk size for the combination of the firstTuple with the additional data can be just above 32 bytes, which pushes the chunk size to 64 bytes. If we cut down the mintuple overhead a bit, more cases would fit in 32 bytes. And I think we can: 32 bytes seems reasonable to hold a lot of common cases where there's a small grouping key and a small pergroup state. Regards, Jeff Davis --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename*0=v2-0001-ExecInitAgg-update-aggstate-numaggs-and-numtrans-.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0001-ExecInitAgg-update-aggstate-numaggs-and-numtrans-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5NWEyYmVjYjI1MTQxNWFmNmY4MmQ2ZGY4NzFiNjZlOGE0Mjk3NjhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDIwIE5vdiAyMDI0IDEyOjMzOjExIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAxLzhdIEV4 ZWNJbml0QWdnOiB1cGRhdGUgYWdnc3RhdGUtPm51bWFnZ3MgYW5kIC0+bnVtdHJhbnMKIGVhcmxp ZXIuCgpGdW5jdGlvbnMgaGFzaF9hZ2dfZW50cnlfc2l6ZSgpIGFuZCBidWlsZF9oYXNoX3RhYmxl cygpIGFuZCBhcmUKcmVseWluZyBvbiB0aG9zZSB0byBtYWtlIGFjY3VyYXRlIGVzdGltYXRlcy4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgfCAxMSArKy0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMKaW5kZXggNTNlYWQ3N2VjZS4uMzAwMTYzNTM4YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB Z2cuYwpAQCAtMzM3OSw4ICszMzc5LDggQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJbWF4X2FnZ25vID0gTWF4KG1heF9hZ2dubywgYWdncmVm LT5hZ2dubyk7CiAJCW1heF90cmFuc25vID0gTWF4KG1heF90cmFuc25vLCBhZ2dyZWYtPmFnZ3Ry YW5zbm8pOwogCX0KLQludW1hZ2dzID0gbWF4X2FnZ25vICsgMTsKLQludW10cmFucyA9IG1heF90 cmFuc25vICsgMTsKKwlhZ2dzdGF0ZS0+bnVtYWdncyA9IG51bWFnZ3MgPSBtYXhfYWdnbm8gKyAx OworCWFnZ3N0YXRlLT5udW10cmFucyA9IG51bXRyYW5zID0gbWF4X3RyYW5zbm8gKyAxOwogCiAJ LyoKIAkgKiBGb3IgZWFjaCBwaGFzZSwgcHJlcGFyZSBncm91cGluZyBzZXQgZGF0YSBhbmQgZm1n ciBsb29rdXAgZGF0YSBmb3IKQEAgLTM5NDMsMTMgKzM5NDMsNiBAQCBFeGVjSW5pdEFnZyhBZ2cg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlSZWxlYXNlU3lzQ2FjaGUoYWdn VHVwbGUpOwogCX0KIAotCS8qCi0JICogVXBkYXRlIGFnZ3N0YXRlLT5udW1hZ2dzIHRvIGJlIHRo ZSBudW1iZXIgb2YgdW5pcXVlIGFnZ3JlZ2F0ZXMgZm91bmQuCi0JICogQWxzbyBzZXQgbnVtc3Rh dGVzIHRvIHRoZSBudW1iZXIgb2YgdW5pcXVlIHRyYW5zaXRpb24gc3RhdGVzIGZvdW5kLgotCSAq LwotCWFnZ3N0YXRlLT5udW1hZ2dzID0gbnVtYWdnczsKLQlhZ2dzdGF0ZS0+bnVtdHJhbnMgPSBu dW10cmFuczsKLQogCS8qCiAJICogTGFzdCwgY2hlY2sgd2hldGhlciBhbnkgbW9yZSBhZ2dyZWdh dGVzIGdvdCBhZGRlZCBvbnRvIHRoZSBub2RlIHdoaWxlCiAJICogd2UgcHJvY2Vzc2VkIHRoZSBl eHByZXNzaW9ucyBmb3IgdGhlIGFnZ3JlZ2F0ZSBhcmd1bWVudHMgKGluY2x1ZGluZyBub3QKLS0g CjIuMzQuMQoK --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename*0=v2-0002-Add-missing-typedefs.list-entry-for-AggStatePerGr.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0002-Add-missing-typedefs.list-entry-for-AggStatePerGr.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4ZTMxMDk4ZmZkMzM4YWQ5ZTNkNDc5N2YxMWJhZWQzODZiMWJkNzE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDIxIE5vdiAyMDI0IDEyOjA2OjUzIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAyLzhdIEFk ZCBtaXNzaW5nIHR5cGVkZWZzLmxpc3QgZW50cnkgZm9yCiBBZ2dTdGF0ZVBlckdyb3VwRGF0YS4K Ci0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5oICAgfCAyICstCiBzcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCB8IDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9u b2RlQWdnLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQWdnLmgKaW5kZXggNjg0Nzc5YTZh My4uZGI2MzNmZDY3MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5o CisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaApAQCAtMjY0LDcgKzI2NCw3IEBA IHR5cGVkZWYgc3RydWN0IEFnZ1N0YXRlUGVyR3JvdXBEYXRhCiAJICogTlVMTCBhbmQgbm90IGF1 dG8tcmVwbGFjZSBpdCB3aXRoIGEgbGF0ZXIgaW5wdXQgdmFsdWUuIE9ubHkgdGhlIGZpcnN0CiAJ ICogbm9uLU5VTEwgaW5wdXQgd2lsbCBiZSBhdXRvLXN1YnN0aXR1dGVkLgogCSAqLwotfQkJCUFn Z1N0YXRlUGVyR3JvdXBEYXRhOworfSBBZ2dTdGF0ZVBlckdyb3VwRGF0YTsKIAogLyoKICAqIEFn Z1N0YXRlUGVyUGhhc2VEYXRhIC0gcGVyLWdyb3VwaW5nLXNldC1waGFzZSBzdGF0ZQpkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCAwODUyMWQ1MWE5Li5kNTJiZGQyZmYxIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtNDcsNiArNDcsNyBAQCBBZ2dTcGxpdAogQWdnU3RhdGUKIEFn Z1N0YXRlUGVyQWdnCiBBZ2dTdGF0ZVBlckdyb3VwCitBZ2dTdGF0ZVBlckdyb3VwRGF0YQogQWdn U3RhdGVQZXJIYXNoCiBBZ2dTdGF0ZVBlclBoYXNlCiBBZ2dTdGF0ZVBlclRyYW5zCi0tIAoyLjM0 LjEKCg== --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename="v2-0003-Remove-unused-TupleHashTableData-entrysize.patch" Content-Type: text/x-patch; name="v2-0003-Remove-unused-TupleHashTableData-entrysize.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiMzcyNDQ2ZjA0NjczNmM0MGY3ZjEwNzYyNjIzMTQ0ZDhhMDZhYTlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDIwIE5vdiAyMDI0IDEyOjU5OjE2IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAzLzhdIFJl bW92ZSB1bnVzZWQgVHVwbGVIYXNoVGFibGVEYXRhLT5lbnRyeXNpemUuCgotLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jIHwgMSAtCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCAgICAgICB8IDEgLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKaW5kZXggNzc0ZTRkZTg4Mi4uNDY3ZGJkYzRjYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKQEAgLTE4Nyw3ICsxODcsNiBAQCBCdWls ZFR1cGxlSGFzaFRhYmxlRXh0KFBsYW5TdGF0ZSAqcGFyZW50LAogCWhhc2h0YWJsZS0+dGFiX2Nv bGxhdGlvbnMgPSBjb2xsYXRpb25zOwogCWhhc2h0YWJsZS0+dGFibGVjeHQgPSB0YWJsZWN4dDsK IAloYXNodGFibGUtPnRlbXBjeHQgPSB0ZW1wY3h0OwotCWhhc2h0YWJsZS0+ZW50cnlzaXplID0g ZW50cnlzaXplOwogCWhhc2h0YWJsZS0+dGFibGVzbG90ID0gTlVMTDsJLyogd2lsbCBiZSBtYWRl IG9uIGZpcnN0IGxvb2t1cCAqLwogCWhhc2h0YWJsZS0+aW5wdXRzbG90ID0gTlVMTDsKIAloYXNo dGFibGUtPmluX2hhc2hfZnVuY3MgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAxODJh Njk1NmJiLi4wZTZlYzZkM2E2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtODM1LDcgKzgzNSw2 IEBAIHR5cGVkZWYgc3RydWN0IFR1cGxlSGFzaFRhYmxlRGF0YQogCU9pZAkJICAgKnRhYl9jb2xs YXRpb25zOyAvKiBjb2xsYXRpb25zIGZvciBoYXNoIGFuZCBjb21wYXJpc29uICovCiAJTWVtb3J5 Q29udGV4dCB0YWJsZWN4dDsJCS8qIG1lbW9yeSBjb250ZXh0IGNvbnRhaW5pbmcgdGFibGUgKi8K IAlNZW1vcnlDb250ZXh0IHRlbXBjeHQ7CQkvKiBjb250ZXh0IGZvciBmdW5jdGlvbiBldmFsdWF0 aW9ucyAqLwotCVNpemUJCWVudHJ5c2l6ZTsJCS8qIGFjdHVhbCBzaXplIHRvIG1ha2UgZWFjaCBo YXNoIGVudHJ5ICovCiAJVHVwbGVUYWJsZVNsb3QgKnRhYmxlc2xvdDsJLyogc2xvdCBmb3IgcmVm ZXJlbmNpbmcgdGFibGUgZW50cmllcyAqLwogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBz ZXQgdHJhbnNpZW50bHkgZm9yIGVhY2ggdGFibGUgc2VhcmNoOiAqLwogCVR1cGxlVGFibGVTbG90 ICppbnB1dHNsb3Q7CS8qIGN1cnJlbnQgaW5wdXQgdHVwbGUncyBzbG90ICovCi0tIAoyLjM0LjEK Cg== --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename*0=v2-0004-nodeSetOp.c-missing-additionalsize-for-BuildTuple.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0004-nodeSetOp.c-missing-additionalsize-for-BuildTuple.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjNjFkODI3MjhkZDE0NTRmZmE2MjQ4N2U0MWQxYzJiYzllZTExNTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDIwIE5vdiAyMDI0IDEyOjUwOjUzIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiA0LzhdIG5v ZGVTZXRPcC5jOiBtaXNzaW5nIGFkZGl0aW9uYWxzaXplIGZvcgogQnVpbGRUdXBsZUhhc2hUYWJs ZSgpLgoKVGhpcyBjYW4gYWZmZWN0IHRoZSBjYWxjdWxhdGlvbnMgZm9yICduYnVja2V0cycuCgpB bHNvLCBmdXJ1cmUgd29yayBmb3IgSGFzaEFnZyB3aWxsIHJlbHkgb24gdGhlIGNvcnJlY3QKJ2Fk ZGl0aW9uYWxzaXplJy4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNldE9wLmMKaW5kZXggYThhYzY4YjQ4Mi4uNGU1OGE1NzFiNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNldE9wLmMKQEAgLTEzNCw3ICsxMzQsNyBAQCBidWlsZF9oYXNoX3RhYmxlKFNl dE9wU3RhdGUgKnNldG9wc3RhdGUpCiAJCQkJCQkJCQkJCQkgICBzZXRvcHN0YXRlLT5oYXNoZnVu Y3Rpb25zLAogCQkJCQkJCQkJCQkJICAgbm9kZS0+ZHVwQ29sbGF0aW9ucywKIAkJCQkJCQkJCQkJ CSAgIG5vZGUtPm51bUdyb3VwcywKLQkJCQkJCQkJCQkJCSAgIDAsCisJCQkJCQkJCQkJCQkgICBz aXplb2YoU2V0T3BTdGF0ZVBlckdyb3VwRGF0YSksCiAJCQkJCQkJCQkJCQkgICBzZXRvcHN0YXRl LT5wcy5zdGF0ZS0+ZXNfcXVlcnlfY3h0LAogCQkJCQkJCQkJCQkJICAgc2V0b3BzdGF0ZS0+dGFi bGVDb250ZXh0LAogCQkJCQkJCQkJCQkJICAgZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9y eSwKLS0gCjIuMzQuMQoK --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename*0=v2-0005-TupleHashTable-store-additional-data-along-with-t.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0005-TupleHashTable-store-additional-data-along-with-t.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2YTc2NGRmYjg4M2E0MTUzZDIyZmM3MzkwMWZjMmRkYmY4MGUyMDgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDE0IE5vdiAyMDI0IDExOjQ3OjUxIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiA1LzhdIFR1 cGxlSGFzaFRhYmxlOiBzdG9yZSBhZGRpdGlvbmFsIGRhdGEgYWxvbmcgd2l0aAogdHVwbGUuCgpQ cmV2aW91c2x5LCB0aGUgY2FsbGVyIG5lZWRlZCB0byBhbGxvY2F0ZSB0aGUgbWVtb3J5IGFuZCB0 aGUKVHVwbGVIYXNoVGFibGUgd291bGQgc3RvcmUgYSBwb2ludGVyIHRvIGl0LiBUaGF0IHdhc3Rl cyBzcGFjZSBmb3IgdGhlCnBhbGxvYyBvdmVyaGVhZCBhcyB3ZWxsIGFzIHRoZSBzaXplIG9mIHRo ZSBwb2ludGVyIGl0c2VsZi4KCk5vdywgdGhlIFR1cGxlSGFzaFRhYmxlIHJlbGllcyBvbiB0aGUg Y2FsbGVyIHRvIGNvcnJlY3RseSBzcGVjaWZ5IHRoZQphZGRpdGlvbmFsc2l6ZSwgYW5kIGFsbG9j YXRlcyB0aGF0IGFtb3VudCBvZiBzcGFjZS4gVGhlIGNhbGxlciBjYW4KdGhlbiByZXF1ZXN0IGEg cG9pbnRlciBpbnRvIHRoYXQgc3BhY2UuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dy b3VwaW5nLmMgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgfCAyMCArKysrLS0tLS0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2V0T3AuYyAgICB8IDE5ICsrKystLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTdWJwbGFuLmMgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgg ICAgIHwgIDMgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgIHwgMTAgKy0t LS0KIDYgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYwppbmRleCA0NjdkYmRjNGNjLi5kNGEzYjMyODBl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYwpAQCAtMjAsNiArMjAsMTMgQEAKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAordHlw ZWRlZiBzdHJ1Y3QgVHVwbGVIYXNoRW50cnlEYXRhCit7CisJTWluaW1hbFR1cGxlIGZpcnN0VHVw bGU7CS8qIGNvcHkgb2YgZmlyc3QgdHVwbGUgaW4gdGhpcyBncm91cCAqLworCXVpbnQzMgkJc3Rh dHVzOwkJCS8qIGhhc2ggc3RhdHVzICovCisJdWludDMyCQloYXNoOwkJCS8qIGhhc2ggdmFsdWUg KGNhY2hlZCkgKi8KK30gVHVwbGVIYXNoRW50cnlEYXRhOworCiBzdGF0aWMgaW50CVR1cGxlSGFz aFRhYmxlTWF0Y2goc3RydWN0IHR1cGxlaGFzaF9oYXNoICp0YiwgY29uc3QgTWluaW1hbFR1cGxl IHR1cGxlMSwgY29uc3QgTWluaW1hbFR1cGxlIHR1cGxlMik7CiBzdGF0aWMgaW5saW5lIHVpbnQz MiBUdXBsZUhhc2hUYWJsZUhhc2hfaW50ZXJuYWwoc3RydWN0IHR1cGxlaGFzaF9oYXNoICp0YiwK IAkJCQkJCQkJCQkJCSBjb25zdCBNaW5pbWFsVHVwbGUgdHVwbGUpOwpAQCAtMTg3LDYgKzE5NCw3 IEBAIEJ1aWxkVHVwbGVIYXNoVGFibGVFeHQoUGxhblN0YXRlICpwYXJlbnQsCiAJaGFzaHRhYmxl LT50YWJfY29sbGF0aW9ucyA9IGNvbGxhdGlvbnM7CiAJaGFzaHRhYmxlLT50YWJsZWN4dCA9IHRh YmxlY3h0OwogCWhhc2h0YWJsZS0+dGVtcGN4dCA9IHRlbXBjeHQ7CisJaGFzaHRhYmxlLT5hZGRp dGlvbmFsc2l6ZSA9IGFkZGl0aW9uYWxzaXplOwogCWhhc2h0YWJsZS0+dGFibGVzbG90ID0gTlVM TDsJLyogd2lsbCBiZSBtYWRlIG9uIGZpcnN0IGxvb2t1cCAqLwogCWhhc2h0YWJsZS0+aW5wdXRz bG90ID0gTlVMTDsKIAloYXNodGFibGUtPmluX2hhc2hfZnVuY3MgPSBOVUxMOwpAQCAtMjg3LDYg KzI5NSwxNSBAQCBSZXNldFR1cGxlSGFzaFRhYmxlKFR1cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSkK IAl0dXBsZWhhc2hfcmVzZXQoaGFzaHRhYmxlLT5oYXNodGFiKTsKIH0KIAorLyoKKyAqIFJldHVy biBzaXplIG9mIHRoZSBoYXNoIGJ1Y2tldC4gVXNlZnVsIGZvciBlc3RpbWF0aW5nIG1lbW9yeSB1 c2FnZS4KKyAqLworc2l6ZV90CitUdXBsZUhhc2hFbnRyeVNpemUodm9pZCkKK3sKKwlyZXR1cm4g c2l6ZW9mKFR1cGxlSGFzaEVudHJ5RGF0YSk7Cit9CisKIC8qCiAgKiBGaW5kIG9yIGNyZWF0ZSBh IGhhc2h0YWJsZSBlbnRyeSBmb3IgdGhlIHR1cGxlIGdyb3VwIGNvbnRhaW5pbmcgdGhlCiAgKiBn aXZlbiB0dXBsZS4gIFRoZSB0dXBsZSBtdXN0IGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGhhc2h0 YWJsZSBlbnRyaWVzLgpAQCAtMzUzLDYgKzM3MCwyNiBAQCBUdXBsZUhhc2hUYWJsZUhhc2goVHVw bGVIYXNoVGFibGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlyZXR1cm4gaGFz aDsKIH0KIAorTWluaW1hbFR1cGxlCitUdXBsZUhhc2hFbnRyeUdldFR1cGxlKFR1cGxlSGFzaEVu dHJ5IGVudHJ5KQoreworCXJldHVybiBlbnRyeS0+Zmlyc3RUdXBsZTsKK30KKworLyoKKyAqIEdl dCBhIHBvaW50ZXIgaW50byB0aGUgYWRkaXRpb25hbCBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoaXMg ZW50cnkuIFRoZQorICogYW1vdW50IG9mIHNwYWNlIGF2YWlsYWJsZSBpcyB0aGUgYWRkaXRpb25h bHNpemUgc3BlY2lmaWVkIHRvCisgKiBCdWlsZFR1cGxlSGFzaFRhYmxlKCkuIElmIGFkZGl0aW9u YWxzaXplIHdhcyBzcGVjaWZpZWQgYXMgemVybywgbm8KKyAqIGFkZGl0aW9uYWwgc3BhY2UgaXMg YXZhaWxhYmxlIGFuZCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkLgorICovCit2 b2lkICoKK1R1cGxlSGFzaEVudHJ5R2V0QWRkaXRpb25hbChUdXBsZUhhc2hFbnRyeSBlbnRyeSkK K3sKKwlBc3NlcnQoR2V0TWVtb3J5Q2h1bmtTcGFjZShlbnRyeS0+Zmlyc3RUdXBsZSkgPiBNQVhB TElHTihlbnRyeS0+Zmlyc3RUdXBsZS0+dF9sZW4pKTsKKworCXJldHVybiAoY2hhciAqKSBlbnRy eS0+Zmlyc3RUdXBsZSArIE1BWEFMSUdOKGVudHJ5LT5maXJzdFR1cGxlLT50X2xlbik7Cit9CisK IC8qCiAgKiBBIHZhcmlhbnQgb2YgTG9va3VwVHVwbGVIYXNoRW50cnkgZm9yIGNhbGxlcnMgdGhh dCBoYXZlIGFscmVhZHkgY29tcHV0ZWQKICAqIHRoZSBoYXNoIHZhbHVlLgpAQCAtNTEzLDEzICs1 NTAsMzEgQEAgTG9va3VwVHVwbGVIYXNoRW50cnlfaW50ZXJuYWwoVHVwbGVIYXNoVGFibGUgaGFz aHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJfQogCQllbHNlCiAJCXsKKwkJCU1pbmlt YWxUdXBsZSBmaXJzdFR1cGxlOworCQkJc2l6ZV90IHRvdGFsc2l6ZTsgLyogaW5jbHVkaW5nIGFs aWdubWVudCBhbmQgYWRkaXRpb25hbHNpemUgKi8KKwogCQkJLyogY3JlYXRlZCBuZXcgZW50cnkg Ki8KIAkJCSppc25ldyA9IHRydWU7CiAJCQkvKiB6ZXJvIGNhbGxlciBkYXRhICovCi0JCQllbnRy eS0+YWRkaXRpb25hbCA9IE5VTEw7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oaGFzaHRhYmxl LT50YWJsZWN4dCk7CisKIAkJCS8qIENvcHkgdGhlIGZpcnN0IHR1cGxlIGludG8gdGhlIHRhYmxl IGNvbnRleHQgKi8KLQkJCWVudHJ5LT5maXJzdFR1cGxlID0gRXhlY0NvcHlTbG90TWluaW1hbFR1 cGxlKHNsb3QpOworCQkJZmlyc3RUdXBsZSA9IEV4ZWNDb3B5U2xvdE1pbmltYWxUdXBsZShzbG90 KTsKKworCQkJLyoKKwkJCSAqIEFsbG9jYXRlIGFkZGl0aW9uYWwgc3BhY2UgcmlnaHQgYWZ0ZXIg dGhlIE1pbmltYWxUdXBsZSBvZiBzaXplCisJCQkgKiBhZGRpdGlvbmFsc2l6ZS4gVGhlIGNhbGxl ciBjYW4gZ2V0IGEgcG9pbnRlciB0byB0aGlzIGRhdGEgd2l0aAorCQkJICogVHVwbGVIYXNoRW50 cnlHZXRBZGRpdGlvbmFsKCksIGFuZCBzdG9yZSBhcmJpdHJhcnkgZGF0YSB0aGVyZS4KKwkJCSAq CisJCQkgKiBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byBzdG9yZSBhbiBleHRyYSBwb2ludGVyIG9y IGFsbG9jYXRlIGFuCisJCQkgKiBhZGRpdGlvbmFsIGNodW5rLCB3aGljaCB3b3VsZCB3YXN0ZSBt ZW1vcnkuCisJCQkgKi8KKwkJCXRvdGFsc2l6ZSA9IE1BWEFMSUdOKGZpcnN0VHVwbGUtPnRfbGVu KSArIGhhc2h0YWJsZS0+YWRkaXRpb25hbHNpemU7CisJCQlmaXJzdFR1cGxlID0gcmVwYWxsb2Mo Zmlyc3RUdXBsZSwgdG90YWxzaXplKTsKKwkJCW1lbXNldCgoY2hhciAqKSBmaXJzdFR1cGxlICsg Zmlyc3RUdXBsZS0+dF9sZW4sIDAsCisJCQkJICAgdG90YWxzaXplIC0gZmlyc3RUdXBsZS0+dF9s ZW4pOworCisJCQllbnRyeS0+Zmlyc3RUdXBsZSA9IGZpcnN0VHVwbGU7CiAJCX0KIAl9CiAJZWxz ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDMwMDE2MzUzOGEuLmJiMjAwMDZlOWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQWdnLmMKQEAgLTE3MTMsNyArMTcxMyw3IEBAIGhhc2hfYWdnX2VudHJ5X3Np emUoaW50IG51bVRyYW5zLCBTaXplIHR1cGxlV2lkdGgsIFNpemUgdHJhbnNpdGlvblNwYWNlKQog CQl0cmFuc2l0aW9uQ2h1bmtTaXplID0gMDsKIAogCXJldHVybgotCQlzaXplb2YoVHVwbGVIYXNo RW50cnlEYXRhKSArCisJCVR1cGxlSGFzaEVudHJ5U2l6ZSgpICsKIAkJdHVwbGVDaHVua1NpemUg KwogCQlwZXJncm91cENodW5rU2l6ZSArCiAJCXRyYW5zaXRpb25DaHVua1NpemU7CkBAIC0xOTU0 LDcgKzE5NTQsNyBAQCBoYXNoX2FnZ191cGRhdGVfbWV0cmljcyhBZ2dTdGF0ZSAqYWdnc3RhdGUs IGJvb2wgZnJvbV90YXBlLCBpbnQgbnBhcnRpdGlvbnMpCiAJaWYgKGFnZ3N0YXRlLT5oYXNoX25n cm91cHNfY3VycmVudCA+IDApCiAJewogCQlhZ2dzdGF0ZS0+aGFzaGVudHJ5c2l6ZSA9Ci0JCQlz aXplb2YoVHVwbGVIYXNoRW50cnlEYXRhKSArCisJCQlUdXBsZUhhc2hFbnRyeVNpemUoKSArCiAJ CQkoaGFzaGtleV9tZW0gLyAoZG91YmxlKSBhZ2dzdGF0ZS0+aGFzaF9uZ3JvdXBzX2N1cnJlbnQp OwogCX0KIH0KQEAgLTIwNTUsMTEgKzIwNTUsNyBAQCBpbml0aWFsaXplX2hhc2hfZW50cnkoQWdn U3RhdGUgKmFnZ3N0YXRlLCBUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsCiAJaWYgKGFnZ3N0YXRl LT5udW10cmFucyA9PSAwKQogCQlyZXR1cm47CiAKLQlwZXJncm91cCA9IChBZ2dTdGF0ZVBlckdy b3VwKQotCQlNZW1vcnlDb250ZXh0QWxsb2MoaGFzaHRhYmxlLT50YWJsZWN4dCwKLQkJCQkJCSAg IHNpemVvZihBZ2dTdGF0ZVBlckdyb3VwRGF0YSkgKiBhZ2dzdGF0ZS0+bnVtdHJhbnMpOwotCi0J ZW50cnktPmFkZGl0aW9uYWwgPSBwZXJncm91cDsKKwlwZXJncm91cCA9IChBZ2dTdGF0ZVBlckdy b3VwKSBUdXBsZUhhc2hFbnRyeUdldEFkZGl0aW9uYWwoZW50cnkpOwogCiAJLyoKIAkgKiBJbml0 aWFsaXplIGFnZ3JlZ2F0ZXMgZm9yIG5ldyB0dXBsZSBncm91cCwgbG9va3VwX2hhc2hfZW50cmll cygpCkBAIC0yMTIzLDcgKzIxMTksNyBAQCBsb29rdXBfaGFzaF9lbnRyaWVzKEFnZ1N0YXRlICph Z2dzdGF0ZSkKIAkJewogCQkJaWYgKGlzbmV3KQogCQkJCWluaXRpYWxpemVfaGFzaF9lbnRyeShh Z2dzdGF0ZSwgaGFzaHRhYmxlLCBlbnRyeSk7Ci0JCQlwZXJncm91cFtzZXRub10gPSBlbnRyeS0+ YWRkaXRpb25hbDsKKwkJCXBlcmdyb3VwW3NldG5vXSA9IFR1cGxlSGFzaEVudHJ5R2V0QWRkaXRp b25hbChlbnRyeSk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0yNjgxLDcgKzI2NzcsNyBAQCBhZ2df cmVmaWxsX2hhc2hfdGFibGUoQWdnU3RhdGUgKmFnZ3N0YXRlKQogCQl7CiAJCQlpZiAoaXNuZXcp CiAJCQkJaW5pdGlhbGl6ZV9oYXNoX2VudHJ5KGFnZ3N0YXRlLCBwZXJoYXNoLT5oYXNodGFibGUs IGVudHJ5KTsKLQkJCWFnZ3N0YXRlLT5oYXNoX3Blcmdyb3VwW2JhdGNoLT5zZXRub10gPSBlbnRy eS0+YWRkaXRpb25hbDsKKwkJCWFnZ3N0YXRlLT5oYXNoX3Blcmdyb3VwW2JhdGNoLT5zZXRub10g PSBUdXBsZUhhc2hFbnRyeUdldEFkZGl0aW9uYWwoZW50cnkpOwogCQkJYWR2YW5jZV9hZ2dyZWdh dGVzKGFnZ3N0YXRlKTsKIAkJfQogCQllbHNlCkBAIC0yNzczLDcgKzI3NjksNyBAQCBhZ2dfcmV0 cmlldmVfaGFzaF90YWJsZV9pbl9tZW1vcnkoQWdnU3RhdGUgKmFnZ3N0YXRlKQogCUV4cHJDb250 ZXh0ICplY29udGV4dDsKIAlBZ2dTdGF0ZVBlckFnZyBwZXJhZ2c7CiAJQWdnU3RhdGVQZXJHcm91 cCBwZXJncm91cDsKLQlUdXBsZUhhc2hFbnRyeURhdGEgKmVudHJ5OworCVR1cGxlSGFzaEVudHJ5 IGVudHJ5OwogCVR1cGxlVGFibGVTbG90ICpmaXJzdFNsb3Q7CiAJVHVwbGVUYWJsZVNsb3QgKnJl c3VsdDsKIAlBZ2dTdGF0ZVBlckhhc2ggcGVyaGFzaDsKQEAgLTI4NDUsNyArMjg0MSw3IEBAIGFn Z19yZXRyaWV2ZV9oYXNoX3RhYmxlX2luX21lbW9yeShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJCSAq IFRyYW5zZm9ybSByZXByZXNlbnRhdGl2ZSB0dXBsZSBiYWNrIGludG8gb25lIHdpdGggdGhlIHJp Z2h0CiAJCSAqIGNvbHVtbnMuCiAJCSAqLwotCQlFeGVjU3RvcmVNaW5pbWFsVHVwbGUoZW50cnkt PmZpcnN0VHVwbGUsIGhhc2hzbG90LCBmYWxzZSk7CisJCUV4ZWNTdG9yZU1pbmltYWxUdXBsZShU dXBsZUhhc2hFbnRyeUdldFR1cGxlKGVudHJ5KSwgaGFzaHNsb3QsIGZhbHNlKTsKIAkJc2xvdF9n ZXRhbGxhdHRycyhoYXNoc2xvdCk7CiAKIAkJRXhlY0NsZWFyVHVwbGUoZmlyc3RTbG90KTsKQEAg LTI4NjEsNyArMjg1Nyw3IEBAIGFnZ19yZXRyaWV2ZV9oYXNoX3RhYmxlX2luX21lbW9yeShBZ2dT dGF0ZSAqYWdnc3RhdGUpCiAJCX0KIAkJRXhlY1N0b3JlVmlydHVhbFR1cGxlKGZpcnN0U2xvdCk7 CiAKLQkJcGVyZ3JvdXAgPSAoQWdnU3RhdGVQZXJHcm91cCkgZW50cnktPmFkZGl0aW9uYWw7CisJ CXBlcmdyb3VwID0gKEFnZ1N0YXRlUGVyR3JvdXApIFR1cGxlSGFzaEVudHJ5R2V0QWRkaXRpb25h bChlbnRyeSk7CiAKIAkJLyoKIAkJICogVXNlIHRoZSByZXByZXNlbnRhdGl2ZSBpbnB1dCB0dXBs ZSBmb3IgYW55IHJlZmVyZW5jZXMgdG8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKaW5kZXggNGU1 OGE1NzFiNy4uZWZiYzQ1NWNlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKQEAgLTM2NCw3 ICszNjQsNyBAQCBzZXRvcF9maWxsX2hhc2hfdGFibGUoU2V0T3BTdGF0ZSAqc2V0b3BzdGF0ZSkK IAl7CiAJCVR1cGxlVGFibGVTbG90ICpvdXRlcnNsb3Q7CiAJCWludAkJCWZsYWc7Ci0JCVR1cGxl SGFzaEVudHJ5RGF0YSAqZW50cnk7CisJCVR1cGxlSGFzaEVudHJ5IGVudHJ5OwogCQlib29sCQlp c25ldzsKIAogCQlvdXRlcnNsb3QgPSBFeGVjUHJvY05vZGUob3V0ZXJQbGFuKTsKQEAgLTM4NSwx NSArMzg1LDEwIEBAIHNldG9wX2ZpbGxfaGFzaF90YWJsZShTZXRPcFN0YXRlICpzZXRvcHN0YXRl KQogCiAJCQkvKiBJZiBuZXcgdHVwbGUgZ3JvdXAsIGluaXRpYWxpemUgY291bnRzICovCiAJCQlp ZiAoaXNuZXcpCi0JCQl7Ci0JCQkJZW50cnktPmFkZGl0aW9uYWwgPSAoU2V0T3BTdGF0ZVBlckdy b3VwKQotCQkJCQlNZW1vcnlDb250ZXh0QWxsb2Moc2V0b3BzdGF0ZS0+aGFzaHRhYmxlLT50YWJs ZWN4dCwKLQkJCQkJCQkJCSAgIHNpemVvZihTZXRPcFN0YXRlUGVyR3JvdXBEYXRhKSk7Ci0JCQkJ aW5pdGlhbGl6ZV9jb3VudHMoKFNldE9wU3RhdGVQZXJHcm91cCkgZW50cnktPmFkZGl0aW9uYWwp OwotCQkJfQorCQkJCWluaXRpYWxpemVfY291bnRzKChTZXRPcFN0YXRlUGVyR3JvdXApIFR1cGxl SGFzaEVudHJ5R2V0QWRkaXRpb25hbChlbnRyeSkpOwogCiAJCQkvKiBBZHZhbmNlIHRoZSBjb3Vu dHMgKi8KLQkJCWFkdmFuY2VfY291bnRzKChTZXRPcFN0YXRlUGVyR3JvdXApIGVudHJ5LT5hZGRp dGlvbmFsLCBmbGFnKTsKKwkJCWFkdmFuY2VfY291bnRzKChTZXRPcFN0YXRlUGVyR3JvdXApIFR1 cGxlSGFzaEVudHJ5R2V0QWRkaXRpb25hbChlbnRyeSksIGZsYWcpOwogCQl9CiAJCWVsc2UKIAkJ ewpAQCAtNDA2LDcgKzQwMSw3IEBAIHNldG9wX2ZpbGxfaGFzaF90YWJsZShTZXRPcFN0YXRlICpz ZXRvcHN0YXRlKQogCiAJCQkvKiBBZHZhbmNlIHRoZSBjb3VudHMgaWYgZW50cnkgaXMgYWxyZWFk eSBwcmVzZW50ICovCiAJCQlpZiAoZW50cnkpCi0JCQkJYWR2YW5jZV9jb3VudHMoKFNldE9wU3Rh dGVQZXJHcm91cCkgZW50cnktPmFkZGl0aW9uYWwsIGZsYWcpOworCQkJCWFkdmFuY2VfY291bnRz KChTZXRPcFN0YXRlUGVyR3JvdXApIFR1cGxlSGFzaEVudHJ5R2V0QWRkaXRpb25hbChlbnRyeSks IGZsYWcpOwogCQl9CiAKIAkJLyogTXVzdCByZXNldCBleHByZXNzaW9uIGNvbnRleHQgYWZ0ZXIg ZWFjaCBoYXNodGFibGUgbG9va3VwICovCkBAIC00MjQsNyArNDE5LDcgQEAgc2V0b3BfZmlsbF9o YXNoX3RhYmxlKFNldE9wU3RhdGUgKnNldG9wc3RhdGUpCiBzdGF0aWMgVHVwbGVUYWJsZVNsb3Qg Kgogc2V0b3BfcmV0cmlldmVfaGFzaF90YWJsZShTZXRPcFN0YXRlICpzZXRvcHN0YXRlKQogewot CVR1cGxlSGFzaEVudHJ5RGF0YSAqZW50cnk7CisJVHVwbGVIYXNoRW50cnkgZW50cnk7CiAJVHVw bGVUYWJsZVNsb3QgKnJlc3VsdFR1cGxlU2xvdDsKIAogCS8qCkBAIC00NTQsMTIgKzQ0OSwxMiBA QCBzZXRvcF9yZXRyaWV2ZV9oYXNoX3RhYmxlKFNldE9wU3RhdGUgKnNldG9wc3RhdGUpCiAJCSAq IFNlZSBpZiB3ZSBzaG91bGQgZW1pdCBhbnkgY29waWVzIG9mIHRoaXMgdHVwbGUsIGFuZCBpZiBz byByZXR1cm4KIAkJICogdGhlIGZpcnN0IGNvcHkuCiAJCSAqLwotCQlzZXRfb3V0cHV0X2NvdW50 KHNldG9wc3RhdGUsIChTZXRPcFN0YXRlUGVyR3JvdXApIGVudHJ5LT5hZGRpdGlvbmFsKTsKKwkJ c2V0X291dHB1dF9jb3VudChzZXRvcHN0YXRlLCAoU2V0T3BTdGF0ZVBlckdyb3VwKSBUdXBsZUhh c2hFbnRyeUdldEFkZGl0aW9uYWwoZW50cnkpKTsKIAogCQlpZiAoc2V0b3BzdGF0ZS0+bnVtT3V0 cHV0ID4gMCkKIAkJewogCQkJc2V0b3BzdGF0ZS0+bnVtT3V0cHV0LS07Ci0JCQlyZXR1cm4gRXhl Y1N0b3JlTWluaW1hbFR1cGxlKGVudHJ5LT5maXJzdFR1cGxlLAorCQkJcmV0dXJuIEV4ZWNTdG9y ZU1pbmltYWxUdXBsZShUdXBsZUhhc2hFbnRyeUdldFR1cGxlKGVudHJ5KSwKIAkJCQkJCQkJCQkg cmVzdWx0VHVwbGVTbG90LAogCQkJCQkJCQkJCSBmYWxzZSk7CiAJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU3VicGxhbi5jCmluZGV4IDIzNjIyMmQ3MmEuLjYzYWZmMjQyNTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVN1YnBsYW4uYwpAQCAtNzQ2LDcgKzc0Niw3IEBAIGZpbmRQYXJ0aWFsTWF0Y2goVHVw bGVIYXNoVGFibGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAl7CiAJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJRXhlY1N0b3JlTWluaW1hbFR1cGxlKGVudHJ5LT5maXJz dFR1cGxlLCBoYXNodGFibGUtPnRhYmxlc2xvdCwgZmFsc2UpOworCQlFeGVjU3RvcmVNaW5pbWFs VHVwbGUoVHVwbGVIYXNoRW50cnlHZXRUdXBsZShlbnRyeSksIGhhc2h0YWJsZS0+dGFibGVzbG90 LCBmYWxzZSk7CiAJCWlmICghZXhlY1R1cGxlc1VuZXF1YWwoc2xvdCwgaGFzaHRhYmxlLT50YWJs ZXNsb3QsCiAJCQkJCQkJICAgbnVtQ29scywga2V5Q29sSWR4LAogCQkJCQkJCSAgIGVxZnVuY3Rp b25zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNjljM2ViZmYwMC4uZDI2OTY4ZWNmNyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xNTQsOSArMTU0LDEyIEBAIGV4dGVybiBUdXBs ZUhhc2hFbnRyeSBMb29rdXBUdXBsZUhhc2hFbnRyeShUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUs CiAJCQkJCQkJCQkJICAgYm9vbCAqaXNuZXcsIHVpbnQzMiAqaGFzaCk7CiBleHRlcm4gdWludDMy IFR1cGxlSGFzaFRhYmxlSGFzaChUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsCiAJCQkJCQkJCSBU dXBsZVRhYmxlU2xvdCAqc2xvdCk7CitleHRlcm4gc2l6ZV90IFR1cGxlSGFzaEVudHJ5U2l6ZSh2 b2lkKTsKIGV4dGVybiBUdXBsZUhhc2hFbnRyeSBMb29rdXBUdXBsZUhhc2hFbnRyeUhhc2goVHVw bGVIYXNoVGFibGUgaGFzaHRhYmxlLAogCQkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAkJCQkJCQkJCQkJICAgYm9vbCAqaXNuZXcsIHVpbnQzMiBoYXNoKTsKK2V4dGVybiBNaW5p bWFsVHVwbGUgVHVwbGVIYXNoRW50cnlHZXRUdXBsZShUdXBsZUhhc2hFbnRyeSBlbnRyeSk7Citl eHRlcm4gdm9pZCAqVHVwbGVIYXNoRW50cnlHZXRBZGRpdGlvbmFsKFR1cGxlSGFzaEVudHJ5IGVu dHJ5KTsKIGV4dGVybiBUdXBsZUhhc2hFbnRyeSBGaW5kVHVwbGVIYXNoRW50cnkoVHVwbGVIYXNo VGFibGUgaGFzaHRhYmxlLAogCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJ CQkJCQkgRXhwclN0YXRlICplcWNvbXAsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDBlNmVjNmQz YTYuLjY4YjhiMjg4MDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC04MDYsMTcgKzgwNiwxMCBA QCB0eXBlZGVmIHN0cnVjdCBFeGVjQXV4Um93TWFyawogICogdGFiX2VxX2Z1bmMgcmVzcGVjdGl2 ZWx5LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICovCit0eXBlZGVmIHN0cnVjdCBUdXBsZUhhc2hFbnRyeURhdGEg VHVwbGVIYXNoRW50cnlEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVIYXNoRW50cnlEYXRhICpU dXBsZUhhc2hFbnRyeTsKIHR5cGVkZWYgc3RydWN0IFR1cGxlSGFzaFRhYmxlRGF0YSAqVHVwbGVI YXNoVGFibGU7CiAKLXR5cGVkZWYgc3RydWN0IFR1cGxlSGFzaEVudHJ5RGF0YQotewotCU1pbmlt YWxUdXBsZSBmaXJzdFR1cGxlOwkvKiBjb3B5IG9mIGZpcnN0IHR1cGxlIGluIHRoaXMgZ3JvdXAg Ki8KLQl2b2lkCSAgICphZGRpdGlvbmFsOwkJLyogdXNlciBkYXRhICovCi0JdWludDMyCQlzdGF0 dXM7CQkJLyogaGFzaCBzdGF0dXMgKi8KLQl1aW50MzIJCWhhc2g7CQkJLyogaGFzaCB2YWx1ZSAo Y2FjaGVkKSAqLwotfSBUdXBsZUhhc2hFbnRyeURhdGE7Ci0KIC8qIGRlZmluZSBwYXJhbWV0ZXJz IG5lY2Vzc2FyeSB0byBnZW5lcmF0ZSB0aGUgdHVwbGUgaGFzaCB0YWJsZSBpbnRlcmZhY2UgKi8K ICNkZWZpbmUgU0hfUFJFRklYIHR1cGxlaGFzaAogI2RlZmluZSBTSF9FTEVNRU5UX1RZUEUgVHVw bGVIYXNoRW50cnlEYXRhCkBAIC04MzUsNiArODI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHVwbGVI YXNoVGFibGVEYXRhCiAJT2lkCQkgICAqdGFiX2NvbGxhdGlvbnM7IC8qIGNvbGxhdGlvbnMgZm9y IGhhc2ggYW5kIGNvbXBhcmlzb24gKi8KIAlNZW1vcnlDb250ZXh0IHRhYmxlY3h0OwkJLyogbWVt b3J5IGNvbnRleHQgY29udGFpbmluZyB0YWJsZSAqLwogCU1lbW9yeUNvbnRleHQgdGVtcGN4dDsJ CS8qIGNvbnRleHQgZm9yIGZ1bmN0aW9uIGV2YWx1YXRpb25zICovCisJU2l6ZQkJYWRkaXRpb25h bHNpemU7CS8qIHNpemUgb2YgYWRkaXRpb25hbCBkYXRhICovCiAJVHVwbGVUYWJsZVNsb3QgKnRh Ymxlc2xvdDsJLyogc2xvdCBmb3IgcmVmZXJlbmNpbmcgdGFibGUgZW50cmllcyAqLwogCS8qIFRo ZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBzZXQgdHJhbnNpZW50bHkgZm9yIGVhY2ggdGFibGUgc2Vh cmNoOiAqLwogCVR1cGxlVGFibGVTbG90ICppbnB1dHNsb3Q7CS8qIGN1cnJlbnQgaW5wdXQgdHVw bGUncyBzbG90ICovCi0tIAoyLjM0LjEKCg== --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename="v2-0006-simplehash-don-t-require-a-status-field.patch" Content-Type: text/x-patch; name="v2-0006-simplehash-don-t-require-a-status-field.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1YzY3ZDM5NDNhOWUwMmI5MzNkOGUxODc3MWIwZmVlNzk3YTg4NTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDE1IE5vdiAyMDI0IDEyOjIxOjA0IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiA2LzhdIHNp bXBsZWhhc2g6IGRvbid0IHJlcXVpcmUgYSAic3RhdHVzIiBmaWVsZC4KCkNhbGxlcnMgbWF5IGRl ZmluZSBTSF9FTlRSWV9JU19FTVBUWSgpLCBTSF9FTlRSWV9TRVRfRU1QVFkoKSwgYW5kClNIX0VO VFJZX1NFVF9JTl9VU0UoKSBhcyBhbiBhbHRlcm5hdGl2ZSwgd2hpY2ggY2FuIGFsbG93IGZvciBh IG1vcmUKY29tcGFjdCBlbnRyeSBzaXplLiBUaGF0IHJlZHVjZXMgdGhlIG1lbW9yeSBvdmVyaGVh ZCwgZXNwZWNpYWxseSB3aGVuCnRoZSBoYXNoIHRhYmxlIGlzIHNwYXJzZS4KLS0tCiBzcmMvaW5j bHVkZS9saWIvc2ltcGxlaGFzaC5oIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaCBiL3NyYy9pbmNsdWRl L2xpYi9zaW1wbGVoYXNoLmgKaW5kZXggM2UxYjFmOTQ2MS4uMjEzZDhjMzcyZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaAorKysgYi9zcmMvaW5jbHVkZS9saWIvc2lt cGxlaGFzaC5oCkBAIC01MCw5ICs1MCwxOCBAQAogICoJICAtIFNIX0hBU0hfS0VZKHRhYmxlLCBr ZXkpIC0gZ2VuZXJhdGUgaGFzaCBmb3IgdGhlIGtleQogICoJICAtIFNIX1NUT1JFX0hBU0ggLSBp ZiBkZWZpbmVkIHRoZSBoYXNoIGlzIHN0b3JlZCBpbiB0aGUgZWxlbWVudHMKICAqCSAgLSBTSF9H RVRfSEFTSCh0YiwgYSkgLSByZXR1cm4gdGhlIGZpZWxkIHRvIHN0b3JlIHRoZSBoYXNoIGluCisg KgkgIC0gU0hfRU5UUllfSVNfRU1QVFkodGIsIGEpIC0gcmV0dXJuIHRydWUgaWYgdGhlIGVudHJ5 IGlzIGVtcHR5CisgKgkgIC0gU0hfRU5UUllfU0VUX0VNUFRZKHRiLCBhKSAtIHNldCBlbnRyeSB0 byBlbXB0eQorICoJICAtIFNIX0VOVFJZX1NFVF9JTl9VU0UodGIsIGEpIC0gc2V0IGVudHJ5IHRv ICJpbiB1c2UiCiAgKgogICoJICBUaGUgZWxlbWVudCB0eXBlIGlzIHJlcXVpcmVkIHRvIGNvbnRh aW4gYSAic3RhdHVzIiBtZW1iZXIgdGhhdCBjYW4gc3RvcmUKLSAqCSAgdGhlIHJhbmdlIG9mIHZh bHVlcyBkZWZpbmVkIGluIHRoZSBTSF9TVEFUVVMgZW51bS4KKyAqCSAgdGhlIHJhbmdlIG9mIHZh bHVlcyBkZWZpbmVkIGluIHRoZSBTSF9TVEFUVVMgZW51bS4gQWx0ZXJuYXRpdmVseSwKKyAqCSAg Y2FsbGVycyBtYXkgZGVmaW5lIGFsbCBvZiBTSF9FTlRSWV9JU19FTVBUWSwgU0hfRU5UUllfU0VU X0VNUFRZLAorICoJICBTSF9FTlRSWV9TRVRfSU5fVVNFIHRvIGFsbG93IGZvciBhIG1vcmUgY29t cGFjdCBlbnRyeSBzaXplLiBGb3IgZXhhbXBsZSwKKyAqCSAgaWYgdGhlIFNIX0VMRU1FTlRfVFlQ RSBjb250YWlucyBhIHBvaW50ZXIsIHRoZSBjYWxsZXIgbWF5IGRlY2lkZSB0aGF0CisgKgkgIHRo ZSBlbnRyeSBpcyBlbXB0eSBpZiB0aGUgcG9pbnRlciBpcyBOVUxMIGFuZCAiaW4gdXNlIiBpZiB0 aGUgcG9pbnRlciBpcworICoJICBub24tTlVMTC4gTkI6IGlmIHRoZSBlbnRpcmUgZW50cnkgaXMg emVybywgdGhlbiBTSF9FTlRSWV9JU19FTVBUWSgpCisgKgkgICptdXN0KiBldmFsdWF0ZSB0byB0 cnVlLgogICoKICAqCSAgV2hpbGUgU0hfU1RPUkVfSEFTSCAoYW5kIHN1YnNlcXVlbnRseSBTSF9H RVRfSEFTSCkgYXJlIG9wdGlvbmFsLCBiZWNhdXNlCiAgKgkgIHRoZSBoYXNoIHRhYmxlIGltcGxl bWVudGF0aW9uIG5lZWRzIHRvIGNvbXBhcmUgaGFzaGVzIHRvIG1vdmUgZWxlbWVudHMKQEAgLTI3 Nyw2ICsyODYsMTggQEAgU0hfU0NPUEUgdm9pZCBTSF9TVEFUKFNIX1RZUEUgKiB0Yik7CiAjZGVm aW5lIFNIX0dST1dfTUlOX0ZJTExGQUNUT1IgMC4xCiAjZW5kaWYKIAorI2lmbmRlZiBTSF9FTlRS WV9JU19FTVBUWQorI2RlZmluZSBTSF9FTlRSWV9JU19FTVBUWSh0YiwgYSkgKChhKS0+c3RhdHVz ID09IFNIX1NUQVRVU19FTVBUWSkKKyNlbmRpZgorCisjaWZuZGVmIFNIX0VOVFJZX1NFVF9FTVBU WQorI2RlZmluZSBTSF9FTlRSWV9TRVRfRU1QVFkodGIsIGEpIGRvIHsgKGEpLT5zdGF0dXMgPSBT SF9TVEFUVVNfRU1QVFk7IH0gd2hpbGUgKDApCisjZW5kaWYKKworI2lmbmRlZiBTSF9FTlRSWV9T RVRfSU5fVVNFCisjZGVmaW5lIFNIX0VOVFJZX1NFVF9JTl9VU0UodGIsIGEpIGRvIHsgKGEpLT5z dGF0dXMgPSBTSF9TVEFUVVNfSU5fVVNFOyB9IHdoaWxlICgwKQorI2VuZGlmCisKICNpZmRlZiBT SF9TVE9SRV9IQVNICiAjZGVmaW5lIFNIX0NPTVBBUkVfS0VZUyh0YiwgYWhhc2gsIGFrZXksIGIp IChhaGFzaCA9PSBTSF9HRVRfSEFTSCh0YiwgYikgJiYgU0hfRVFVQUwodGIsIGItPlNIX0tFWSwg YWtleSkpCiAjZWxzZQpAQCAtNTQwLDcgKzU2MSw3IEBAIFNIX0dST1coU0hfVFlQRSAqIHRiLCB1 aW50NjQgbmV3c2l6ZSkKIAkJdWludDMyCQloYXNoOwogCQl1aW50MzIJCW9wdGltYWw7CiAKLQkJ aWYgKG9sZGVudHJ5LT5zdGF0dXMgIT0gU0hfU1RBVFVTX0lOX1VTRSkKKwkJaWYgKFNIX0VOVFJZ X0lTX0VNUFRZKHRiLCBvbGRlbnRyeSkpCiAJCXsKIAkJCXN0YXJ0ZWxlbSA9IGk7CiAJCQlicmVh azsKQEAgLTU2Miw3ICs1ODMsNyBAQCBTSF9HUk9XKFNIX1RZUEUgKiB0YiwgdWludDY0IG5ld3Np emUpCiAJewogCQlTSF9FTEVNRU5UX1RZUEUgKm9sZGVudHJ5ID0gJm9sZGRhdGFbY29weWVsZW1d OwogCi0JCWlmIChvbGRlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmICgh U0hfRU5UUllfSVNfRU1QVFkodGIsIG9sZGVudHJ5KSkKIAkJewogCQkJdWludDMyCQloYXNoOwog CQkJdWludDMyCQlzdGFydGVsZW0yOwpAQCAtNTc4LDcgKzU5OSw3IEBAIFNIX0dST1coU0hfVFlQ RSAqIHRiLCB1aW50NjQgbmV3c2l6ZSkKIAkJCXsKIAkJCQluZXdlbnRyeSA9ICZuZXdkYXRhW2N1 cmVsZW1dOwogCi0JCQkJaWYgKG5ld2VudHJ5LT5zdGF0dXMgPT0gU0hfU1RBVFVTX0VNUFRZKQor CQkJCWlmIChTSF9FTlRSWV9JU19FTVBUWSh0YiwgbmV3ZW50cnkpKQogCQkJCXsKIAkJCQkJYnJl YWs7CiAJCQkJfQpAQCAtNjQ5LDE0ICs2NzAsMTQgQEAgcmVzdGFydDoKIAkJU0hfRUxFTUVOVF9U WVBFICplbnRyeSA9ICZkYXRhW2N1cmVsZW1dOwogCiAJCS8qIGFueSBlbXB0eSBidWNrZXQgY2Fu IGRpcmVjdGx5IGJlIHVzZWQgKi8KLQkJaWYgKGVudHJ5LT5zdGF0dXMgPT0gU0hfU1RBVFVTX0VN UFRZKQorCQlpZiAoU0hfRU5UUllfSVNfRU1QVFkodGIsIGVudHJ5KSkKIAkJewogCQkJdGItPm1l bWJlcnMrKzsKIAkJCWVudHJ5LT5TSF9LRVkgPSBrZXk7CiAjaWZkZWYgU0hfU1RPUkVfSEFTSAog CQkJU0hfR0VUX0hBU0godGIsIGVudHJ5KSA9IGhhc2g7CiAjZW5kaWYKLQkJCWVudHJ5LT5zdGF0 dXMgPSBTSF9TVEFUVVNfSU5fVVNFOworCQkJU0hfRU5UUllfU0VUX0lOX1VTRSh0YiwgZW50cnkp OwogCQkJKmZvdW5kID0gZmFsc2U7CiAJCQlyZXR1cm4gZW50cnk7CiAJCX0KQEAgLTY3MSw3ICs2 OTIsNyBAQCByZXN0YXJ0OgogCiAJCWlmIChTSF9DT01QQVJFX0tFWVModGIsIGhhc2gsIGtleSwg ZW50cnkpKQogCQl7Ci0JCQlBc3NlcnQoZW50cnktPnN0YXR1cyA9PSBTSF9TVEFUVVNfSU5fVVNF KTsKKwkJCUFzc2VydCghU0hfRU5UUllfSVNfRU1QVFkodGIsIGVudHJ5KSk7CiAJCQkqZm91bmQg PSB0cnVlOwogCQkJcmV0dXJuIGVudHJ5OwogCQl9CkBAIC02OTUsNyArNzE2LDcgQEAgcmVzdGFy dDoKIAkJCQllbXB0eWVsZW0gPSBTSF9ORVhUKHRiLCBlbXB0eWVsZW0sIHN0YXJ0ZWxlbSk7CiAJ CQkJZW1wdHllbnRyeSA9ICZkYXRhW2VtcHR5ZWxlbV07CiAKLQkJCQlpZiAoZW1wdHllbnRyeS0+ c3RhdHVzID09IFNIX1NUQVRVU19FTVBUWSkKKwkJCQlpZiAoU0hfRU5UUllfSVNfRU1QVFkodGIs IGVtcHR5ZW50cnkpKQogCQkJCXsKIAkJCQkJbGFzdGVudHJ5ID0gZW1wdHllbnRyeTsKIAkJCQkJ YnJlYWs7CkBAIC03NDQsNyArNzY1LDcgQEAgcmVzdGFydDoKICNpZmRlZiBTSF9TVE9SRV9IQVNI CiAJCQlTSF9HRVRfSEFTSCh0YiwgZW50cnkpID0gaGFzaDsKICNlbmRpZgotCQkJZW50cnktPnN0 YXR1cyA9IFNIX1NUQVRVU19JTl9VU0U7CisJCQlTSF9FTlRSWV9TRVRfSU5fVVNFKHRiLCBlbnRy eSk7CiAJCQkqZm91bmQgPSBmYWxzZTsKIAkJCXJldHVybiBlbnRyeTsKIAkJfQpAQCAtODA2LDEz ICs4MjcsMTEgQEAgU0hfTE9PS1VQX0hBU0hfSU5URVJOQUwoU0hfVFlQRSAqIHRiLCBTSF9LRVlf VFlQRSBrZXksIHVpbnQzMiBoYXNoKQogCXsKIAkJU0hfRUxFTUVOVF9UWVBFICplbnRyeSA9ICZ0 Yi0+ZGF0YVtjdXJlbGVtXTsKIAotCQlpZiAoZW50cnktPnN0YXR1cyA9PSBTSF9TVEFUVVNfRU1Q VFkpCisJCWlmIChTSF9FTlRSWV9JU19FTVBUWSh0YiwgZW50cnkpKQogCQl7CiAJCQlyZXR1cm4g TlVMTDsKIAkJfQogCi0JCUFzc2VydChlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19JTl9VU0Up OwotCiAJCWlmIChTSF9DT01QQVJFX0tFWVModGIsIGhhc2gsIGtleSwgZW50cnkpKQogCQkJcmV0 dXJuIGVudHJ5OwogCkBAIC04NjQsMTAgKzg4MywxMCBAQCBTSF9ERUxFVEUoU0hfVFlQRSAqIHRi LCBTSF9LRVlfVFlQRSBrZXkpCiAJewogCQlTSF9FTEVNRU5UX1RZUEUgKmVudHJ5ID0gJnRiLT5k YXRhW2N1cmVsZW1dOwogCi0JCWlmIChlbnRyeS0+c3RhdHVzID09IFNIX1NUQVRVU19FTVBUWSkK KwkJaWYgKFNIX0VOVFJZX0lTX0VNUFRZKHRiLCBlbnRyeSkpCiAJCQlyZXR1cm4gZmFsc2U7CiAK LQkJaWYgKGVudHJ5LT5zdGF0dXMgPT0gU0hfU1RBVFVTX0lOX1VTRSAmJgorCQlpZiAoIVNIX0VO VFJZX0lTX0VNUFRZKHRiLCBlbnRyeSkgJiYKIAkJCVNIX0NPTVBBUkVfS0VZUyh0YiwgaGFzaCwg a2V5LCBlbnRyeSkpCiAJCXsKIAkJCVNIX0VMRU1FTlRfVFlQRSAqbGFzdGVudHJ5ID0gZW50cnk7 CkBAIC04OTAsOSArOTA5LDkgQEAgU0hfREVMRVRFKFNIX1RZUEUgKiB0YiwgU0hfS0VZX1RZUEUg a2V5KQogCQkJCWN1cmVsZW0gPSBTSF9ORVhUKHRiLCBjdXJlbGVtLCBzdGFydGVsZW0pOwogCQkJ CWN1cmVudHJ5ID0gJnRiLT5kYXRhW2N1cmVsZW1dOwogCi0JCQkJaWYgKGN1cmVudHJ5LT5zdGF0 dXMgIT0gU0hfU1RBVFVTX0lOX1VTRSkKKwkJCQlpZiAoU0hfRU5UUllfSVNfRU1QVFkodGIsIGN1 cmVudHJ5KSkKIAkJCQl7Ci0JCQkJCWxhc3RlbnRyeS0+c3RhdHVzID0gU0hfU1RBVFVTX0VNUFRZ OworCQkJCQlTSF9FTlRSWV9TRVRfRU1QVFkodGIsIGxhc3RlbnRyeSk7CiAJCQkJCWJyZWFrOwog CQkJCX0KIApAQCAtOTAyLDcgKzkyMSw3IEBAIFNIX0RFTEVURShTSF9UWVBFICogdGIsIFNIX0tF WV9UWVBFIGtleSkKIAkJCQkvKiBjdXJyZW50IGlzIGF0IG9wdGltYWwgcG9zaXRpb24sIGRvbmUg Ki8KIAkJCQlpZiAoY3Vyb3B0aW1hbCA9PSBjdXJlbGVtKQogCQkJCXsKLQkJCQkJbGFzdGVudHJ5 LT5zdGF0dXMgPSBTSF9TVEFUVVNfRU1QVFk7CisJCQkJCVNIX0VOVFJZX1NFVF9FTVBUWSh0Yiwg bGFzdGVudHJ5KTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCkBAIC05NTMsOSArOTcyLDkgQEAgU0hf REVMRVRFX0lURU0oU0hfVFlQRSAqIHRiLCBTSF9FTEVNRU5UX1RZUEUgKiBlbnRyeSkKIAkJY3Vy ZWxlbSA9IFNIX05FWFQodGIsIGN1cmVsZW0sIHN0YXJ0ZWxlbSk7CiAJCWN1cmVudHJ5ID0gJnRi LT5kYXRhW2N1cmVsZW1dOwogCi0JCWlmIChjdXJlbnRyeS0+c3RhdHVzICE9IFNIX1NUQVRVU19J Tl9VU0UpCisJCWlmIChTSF9FTlRSWV9JU19FTVBUWSh0YiwgY3VyZW50cnkpKQogCQl7Ci0JCQls YXN0ZW50cnktPnN0YXR1cyA9IFNIX1NUQVRVU19FTVBUWTsKKwkJCVNIX0VOVFJZX1NFVF9FTVBU WSh0YiwgbGFzdGVudHJ5KTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTk2NSw3ICs5ODQsNyBAQCBT SF9ERUxFVEVfSVRFTShTSF9UWVBFICogdGIsIFNIX0VMRU1FTlRfVFlQRSAqIGVudHJ5KQogCQkv KiBjdXJyZW50IGlzIGF0IG9wdGltYWwgcG9zaXRpb24sIGRvbmUgKi8KIAkJaWYgKGN1cm9wdGlt YWwgPT0gY3VyZWxlbSkKIAkJewotCQkJbGFzdGVudHJ5LT5zdGF0dXMgPSBTSF9TVEFUVVNfRU1Q VFk7CisJCQlTSF9FTlRSWV9TRVRfRU1QVFkodGIsIGxhc3RlbnRyeSk7CiAJCQlicmVhazsKIAkJ fQogCkBAIC05OTMsNyArMTAxMiw3IEBAIFNIX1NUQVJUX0lURVJBVEUoU0hfVFlQRSAqIHRiLCBT SF9JVEVSQVRPUiAqIGl0ZXIpCiAJewogCQlTSF9FTEVNRU5UX1RZUEUgKmVudHJ5ID0gJnRiLT5k YXRhW2ldOwogCi0JCWlmIChlbnRyeS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlm IChTSF9FTlRSWV9JU19FTVBUWSh0YiwgZW50cnkpKQogCQl7CiAJCQlzdGFydGVsZW0gPSBpOwog CQkJYnJlYWs7CkBAIC0xMDU1LDcgKzEwNzQsNyBAQCBTSF9JVEVSQVRFKFNIX1RZUEUgKiB0Yiwg U0hfSVRFUkFUT1IgKiBpdGVyKQogCiAJCWlmICgoaXRlci0+Y3VyICYgdGItPnNpemVtYXNrKSA9 PSAoaXRlci0+ZW5kICYgdGItPnNpemVtYXNrKSkKIAkJCWl0ZXItPmRvbmUgPSB0cnVlOwotCQlp ZiAoZWxlbS0+c3RhdHVzID09IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmICghU0hfRU5UUllfSVNf RU1QVFkodGIsIGVsZW0pKQogCQl7CiAJCQlyZXR1cm4gZWxlbTsKIAkJfQpAQCAtMTA5MSw3ICsx MTEwLDcgQEAgU0hfU1RBVChTSF9UWVBFICogdGIpCiAKIAkJZWxlbSA9ICZ0Yi0+ZGF0YVtpXTsK IAotCQlpZiAoZWxlbS0+c3RhdHVzICE9IFNIX1NUQVRVU19JTl9VU0UpCisJCWlmIChTSF9FTlRS WV9JU19FTVBUWSh0YiwgZWxlbSkpCiAJCQljb250aW51ZTsKIAogCQloYXNoID0gU0hfRU5UUllf SEFTSCh0YiwgZWxlbSk7CkBAIC0xMTQ5LDYgKzExNjgsOSBAQCBTSF9TVEFUKFNIX1RZUEUgKiB0 YikKICN1bmRlZiBTSF9LRVkKICN1bmRlZiBTSF9FTEVNRU5UX1RZUEUKICN1bmRlZiBTSF9IQVNI X0tFWQorI3VuZGVmIFNIX0VOVFJZX0lTX0VNUFRZCisjdW5kZWYgU0hfRU5UUllfU0VUX0VNUFRZ CisjdW5kZWYgU0hfRU5UUllfU0VUX0lOX1VTRQogI3VuZGVmIFNIX1NDT1BFCiAjdW5kZWYgU0hf REVDTEFSRQogI3VuZGVmIFNIX0RFRklORQotLSAKMi4zNC4xCgo= --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename*0=v2-0007-TupleHashTable-reduce-overhead-by-removing-status.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0007-TupleHashTable-reduce-overhead-by-removing-status.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjZGQyMDExNTk2ODEyODU3MTEzNGVlYmU5NGUwMGE4YjBhZGIxOGUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDE1IE5vdiAyMDI0IDEzOjAzOjMyIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiA3LzhdIFR1 cGxlSGFzaFRhYmxlOiByZWR1Y2Ugb3ZlcmhlYWQgYnkgcmVtb3ZpbmcgInN0YXR1cyIKIGZpZWxk LgoKTWFrZSB1c2Ugb2YgbmV3IHNpbXBsZWhhc2ggQVBJIGludHJvZHVjZWQgaW4gY29tbWl0IDEy MzQ1Njc4OTAuCgpCZWNhdXNlIE5VTEwgbm93IG1lYW5zIHRoYXQgdGhlIGVudHJ5IGlzIGVtcHR5 LCB1c2UgYSB1bmlxdWUgZHVtbXkKcG9pbnRlciB0byByZWZlciB0byB0aGUgaW5wdXRzbG90IGlu c3RlYWQuIEl0IGFsc28gbWFrZXMgdGhlIGNvZGUgbW9yZQpyZWFkYWJsZS4KLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYyB8IDMzICsrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYwppbmRleCBkNGEzYjMyODBlLi44MWNjZDBl NmQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYwpAQCAtMjMsNyArMjMsNiBAQAog dHlwZWRlZiBzdHJ1Y3QgVHVwbGVIYXNoRW50cnlEYXRhCiB7CiAJTWluaW1hbFR1cGxlIGZpcnN0 VHVwbGU7CS8qIGNvcHkgb2YgZmlyc3QgdHVwbGUgaW4gdGhpcyBncm91cCAqLwotCXVpbnQzMgkJ c3RhdHVzOwkJCS8qIGhhc2ggc3RhdHVzICovCiAJdWludDMyCQloYXNoOwkJCS8qIGhhc2ggdmFs dWUgKGNhY2hlZCkgKi8KIH0gVHVwbGVIYXNoRW50cnlEYXRhOwogCkBAIC0zNCw2ICszMywxNCBA QCBzdGF0aWMgaW5saW5lIFR1cGxlSGFzaEVudHJ5IExvb2t1cFR1cGxlSGFzaEVudHJ5X2ludGVy bmFsKFR1cGxlSGFzaFRhYmxlIGhhc2h0YQogCQkJCQkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIAkJCQkJCQkJCQkJCQkJICAgYm9vbCAqaXNuZXcsIHVpbnQzMiBoYXNoKTsKIAor LyoKKyAqIENyZWF0ZSBhIGR1bW15IHBvaW50ZXIgdXNlZCB0byBtZWFuIHRoZSBpbnB1dCBzbG90 LiBUaGUgcG9pbnRlciB3aWxsIG9ubHkKKyAqIGJlIHVzZWQgZm9yIGNvbXBhcmlzb24gYW5kIG5l dmVyIGRlcmVmZXJlbmNlZCwgYW5kIG11c3Qgbm90IGJlIGVxdWFsIHRvIGEKKyAqIHZhbGlkIHBv aW50ZXIuIERpc3RpbmN0IGZyb20gTlVMTCwgYmVjYXVzZSBOVUxMIG1lYW5zIHRoYXQgdGhlIGhh c2ggZW50cnkKKyAqIGl0c2VsZiBpcyBlbXB0eS4KKyAqLworY29uc3Qgc3RhdGljIE1pbmltYWxU dXBsZSBGSVJTVFRVUExFX0lOUFVUU0xPVCA9IChNaW5pbWFsVHVwbGUpIDB4MTsKKwogLyoKICAq IERlZmluZSBwYXJhbWV0ZXJzIGZvciB0dXBsZSBoYXNoIHRhYmxlIGNvZGUgZ2VuZXJhdGlvbi4g VGhlIGludGVyZmFjZSBpcwogICogKmFsc28qIGRlY2xhcmVkIGluIGV4ZWNub2Rlcy5oICh0byBn ZW5lcmF0ZSB0aGUgdHlwZXMsIHdoaWNoIGFyZSBleHRlcm5hbGx5CkBAIC00OCw2ICs1NSw5IEBA IHN0YXRpYyBpbmxpbmUgVHVwbGVIYXNoRW50cnkgTG9va3VwVHVwbGVIYXNoRW50cnlfaW50ZXJu YWwoVHVwbGVIYXNoVGFibGUgaGFzaHRhCiAjZGVmaW5lIFNIX1NDT1BFIGV4dGVybgogI2RlZmlu ZSBTSF9TVE9SRV9IQVNICiAjZGVmaW5lIFNIX0dFVF9IQVNIKHRiLCBhKSBhLT5oYXNoCisjZGVm aW5lIFNIX0VOVFJZX0lTX0VNUFRZKHRiLCBhKSAoKGEpLT5maXJzdFR1cGxlID09IE5VTEwpCisj ZGVmaW5lIFNIX0VOVFJZX1NFVF9FTVBUWSh0YiwgYSkgZG8geyAoYSktPmZpcnN0VHVwbGUgPSBO VUxMOyB9IHdoaWxlICgwKQorI2RlZmluZSBTSF9FTlRSWV9TRVRfSU5fVVNFKHRiLCBhKSBBc3Nl cnQoKGEpLT5maXJzdFR1cGxlICE9IE5VTEwpCiAjZGVmaW5lIFNIX0RFRklORQogI2luY2x1ZGUg ImxpYi9zaW1wbGVoYXNoLmgiCiAKQEAgLTMzNSw3ICszNDUsNyBAQCBMb29rdXBUdXBsZUhhc2hF bnRyeShUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCWhh c2h0YWJsZS0+aW5faGFzaF9mdW5jcyA9IGhhc2h0YWJsZS0+dGFiX2hhc2hfZnVuY3M7CiAJaGFz aHRhYmxlLT5jdXJfZXFfZnVuYyA9IGhhc2h0YWJsZS0+dGFiX2VxX2Z1bmM7CiAKLQlsb2NhbF9o YXNoID0gVHVwbGVIYXNoVGFibGVIYXNoX2ludGVybmFsKGhhc2h0YWJsZS0+aGFzaHRhYiwgTlVM TCk7CisJbG9jYWxfaGFzaCA9IFR1cGxlSGFzaFRhYmxlSGFzaF9pbnRlcm5hbChoYXNodGFibGUt Pmhhc2h0YWIsIEZJUlNUVFVQTEVfSU5QVVRTTE9UKTsKIAllbnRyeSA9IExvb2t1cFR1cGxlSGFz aEVudHJ5X2ludGVybmFsKGhhc2h0YWJsZSwgc2xvdCwgaXNuZXcsIGxvY2FsX2hhc2gpOwogCiAJ aWYgKGhhc2ggIT0gTlVMTCkKQEAgLTM2Myw3ICszNzMsOCBAQCBUdXBsZUhhc2hUYWJsZUhhc2go VHVwbGVIYXNoVGFibGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAkvKiBOZWVk IHRvIHJ1biB0aGUgaGFzaCBmdW5jdGlvbnMgaW4gc2hvcnQtbGl2ZWQgY29udGV4dCAqLwogCW9s ZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaGFzaHRhYmxlLT50ZW1wY3h0KTsKIAot CWhhc2ggPSBUdXBsZUhhc2hUYWJsZUhhc2hfaW50ZXJuYWwoaGFzaHRhYmxlLT5oYXNodGFiLCBO VUxMKTsKKwloYXNoID0gVHVwbGVIYXNoVGFibGVIYXNoX2ludGVybmFsKGhhc2h0YWJsZS0+aGFz aHRhYiwKKwkJCQkJCQkJCSAgIEZJUlNUVFVQTEVfSU5QVVRTTE9UKTsKIAogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIApAQCAtNDQ0LDcgKzQ1NSw3IEBAIEZpbmRUdXBsZUhh c2hFbnRyeShUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAog CWhhc2h0YWJsZS0+Y3VyX2VxX2Z1bmMgPSBlcWNvbXA7CiAKIAkvKiBTZWFyY2ggdGhlIGhhc2gg dGFibGUgKi8KLQlrZXkgPSBOVUxMOwkJCQkJLyogZmxhZyB0byByZWZlcmVuY2UgaW5wdXRzbG90 ICovCisJa2V5ID0gRklSU1RUVVBMRV9JTlBVVFNMT1Q7CiAJZW50cnkgPSB0dXBsZWhhc2hfbG9v a3VwKGhhc2h0YWJsZS0+aGFzaHRhYiwga2V5KTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Q29udGV4dCk7CiAKQEAgLTQ1Miw5ICs0NjMsOSBAQCBGaW5kVHVwbGVIYXNoRW50cnkoVHVwbGVI YXNoVGFibGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIH0KIAogLyoKLSAqIElm IHR1cGxlIGlzIE5VTEwsIHVzZSB0aGUgaW5wdXQgc2xvdCBpbnN0ZWFkLiBUaGlzIGNvbnZlbnRp b24gYXZvaWRzIHRoZQotICogbmVlZCB0byBtYXRlcmlhbGl6ZSB2aXJ0dWFsIGlucHV0IHR1cGxl cyB1bmxlc3MgdGhleSBhY3R1YWxseSBuZWVkIHRvIGdldAotICogY29waWVkIGludG8gdGhlIHRh YmxlLgorICogSWYgdHVwbGUgaXMgRklSU1RUVVBMRV9JTlBVVFNMT1QsIHVzZSB0aGUgaW5wdXQg c2xvdCBpbnN0ZWFkLiBUaGlzCisgKiBjb252ZW50aW9uIGF2b2lkcyB0aGUgbmVlZCB0byBtYXRl cmlhbGl6ZSB2aXJ0dWFsIGlucHV0IHR1cGxlcyB1bmxlc3MgdGhleQorICogYWN0dWFsbHkgbmVl ZCB0byBnZXQgY29waWVkIGludG8gdGhlIHRhYmxlLgogICoKICAqIEFsc28sIHRoZSBjYWxsZXIg bXVzdCBzZWxlY3QgYW4gYXBwcm9wcmlhdGUgbWVtb3J5IGNvbnRleHQgZm9yIHJ1bm5pbmcKICAq IHRoZSBoYXNoIGZ1bmN0aW9ucy4gKGR5bmFoYXNoLmMgZG9lc24ndCBjaGFuZ2UgQ3VycmVudE1l bW9yeUNvbnRleHQuKQpAQCAtNDcxLDcgKzQ4Miw3IEBAIFR1cGxlSGFzaFRhYmxlSGFzaF9pbnRl cm5hbChzdHJ1Y3QgdHVwbGVoYXNoX2hhc2ggKnRiLAogCUZtZ3JJbmZvICAgKmhhc2hmdW5jdGlv bnM7CiAJaW50CQkJaTsKIAotCWlmICh0dXBsZSA9PSBOVUxMKQorCWlmICh0dXBsZSA9PSBGSVJT VFRVUExFX0lOUFVUU0xPVCkKIAl7CiAJCS8qIFByb2Nlc3MgdGhlIGN1cnJlbnQgaW5wdXQgdHVw bGUgZm9yIHRoZSB0YWJsZSAqLwogCQlzbG90ID0gaGFzaHRhYmxlLT5pbnB1dHNsb3Q7CkBAIC01 MzcsNyArNTQ4LDcgQEAgTG9va3VwVHVwbGVIYXNoRW50cnlfaW50ZXJuYWwoVHVwbGVIYXNoVGFi bGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAlib29sCQlmb3VuZDsKIAlNaW5p bWFsVHVwbGUga2V5OwogCi0Ja2V5ID0gTlVMTDsJCQkJCS8qIGZsYWcgdG8gcmVmZXJlbmNlIGlu cHV0c2xvdCAqLworCWtleSA9IEZJUlNUVFVQTEVfSU5QVVRTTE9UOwogCiAJaWYgKGlzbmV3KQog CXsKQEAgLTYwMiwxMCArNjEzLDEwIEBAIFR1cGxlSGFzaFRhYmxlTWF0Y2goc3RydWN0IHR1cGxl aGFzaF9oYXNoICp0YiwgY29uc3QgTWluaW1hbFR1cGxlIHR1cGxlMSwgY29uc3QKIAkgKiBMb29r dXBUdXBsZUhhc2hFbnRyeSdzIGR1bW15IFR1cGxlSGFzaEVudHJ5RGF0YS4gIFRoZSBvdGhlciBk aXJlY3Rpb24KIAkgKiBjb3VsZCBiZSBzdXBwb3J0ZWQgdG9vLCBidXQgaXMgbm90IGN1cnJlbnRs eSByZXF1aXJlZC4KIAkgKi8KLQlBc3NlcnQodHVwbGUxICE9IE5VTEwpOworCUFzc2VydCh0dXBs ZTEgJiYgdHVwbGUxICE9IEZJUlNUVFVQTEVfSU5QVVRTTE9UKTsKIAlzbG90MSA9IGhhc2h0YWJs ZS0+dGFibGVzbG90OwogCUV4ZWNTdG9yZU1pbmltYWxUdXBsZSh0dXBsZTEsIHNsb3QxLCBmYWxz ZSk7Ci0JQXNzZXJ0KHR1cGxlMiA9PSBOVUxMKTsKKwlBc3NlcnQodHVwbGUyID09IEZJUlNUVFVQ TEVfSU5QVVRTTE9UKTsKIAlzbG90MiA9IGhhc2h0YWJsZS0+aW5wdXRzbG90OwogCiAJLyogRm9y IGNyb3NzdHlwZSBjb21wYXJpc29ucywgdGhlIGlucHV0c2xvdCBtdXN0IGJlIGZpcnN0ICovCi0t IAoyLjM0LjEKCg== --=-7XbwUtLb5+CQKaQ6AeIg Content-Disposition: attachment; filename*0=v2-0008-Pack-TupleHashEntryData-and-AggStatePerGroupData.patc; filename*1=h Content-Type: text/x-patch; name="v2-0008-Pack-TupleHashEntryData-and-AggStatePerGroupData.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2YTFlZjhlYjg0NmQ3NmM3Nzk1ODA1MGU4YWFmYzUwZDUyODA2NGIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDE1IE5vdiAyMDI0IDE4OjUyOjA2IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiA4LzhdIFBh Y2sgVHVwbGVIYXNoRW50cnlEYXRhIGFuZCBBZ2dTdGF0ZVBlckdyb3VwRGF0YS4KCi0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMgfCA2ICsrKysrLQogc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZUFnZy5oICAgICAgfCA2ICsrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxMCBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNHcm91cGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dyb3VwaW5n LmMKaW5kZXggODFjY2QwZTZkMC4uZDI4ZDQyMGZkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0dyb3VwaW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0dy b3VwaW5nLmMKQEAgLTI0LDcgKzI0LDExIEBAIHR5cGVkZWYgc3RydWN0IFR1cGxlSGFzaEVudHJ5 RGF0YQogewogCU1pbmltYWxUdXBsZSBmaXJzdFR1cGxlOwkvKiBjb3B5IG9mIGZpcnN0IHR1cGxl IGluIHRoaXMgZ3JvdXAgKi8KIAl1aW50MzIJCWhhc2g7CQkJLyogaGFzaCB2YWx1ZSAoY2FjaGVk KSAqLwotfSBUdXBsZUhhc2hFbnRyeURhdGE7Cit9CisjaWZkZWYgcGdfYXR0cmlidXRlX3BhY2tl ZAorCXBnX2F0dHJpYnV0ZV9wYWNrZWQoKQorI2VuZGlmCitUdXBsZUhhc2hFbnRyeURhdGE7CiAK IHN0YXRpYyBpbnQJVHVwbGVIYXNoVGFibGVNYXRjaChzdHJ1Y3QgdHVwbGVoYXNoX2hhc2ggKnRi LCBjb25zdCBNaW5pbWFsVHVwbGUgdHVwbGUxLCBjb25zdCBNaW5pbWFsVHVwbGUgdHVwbGUyKTsK IHN0YXRpYyBpbmxpbmUgdWludDMyIFR1cGxlSGFzaFRhYmxlSGFzaF9pbnRlcm5hbChzdHJ1Y3Qg dHVwbGVoYXNoX2hhc2ggKnRiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9k ZUFnZy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5oCmluZGV4IGRiNjMzZmQ2NzIu LmMxMWIzYTMxZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVBZ2cuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlQWdnLmgKQEAgLTI2NCw3ICsyNjQsMTEgQEAg dHlwZWRlZiBzdHJ1Y3QgQWdnU3RhdGVQZXJHcm91cERhdGEKIAkgKiBOVUxMIGFuZCBub3QgYXV0 by1yZXBsYWNlIGl0IHdpdGggYSBsYXRlciBpbnB1dCB2YWx1ZS4gT25seSB0aGUgZmlyc3QKIAkg KiBub24tTlVMTCBpbnB1dCB3aWxsIGJlIGF1dG8tc3Vic3RpdHV0ZWQuCiAJICovCi19IEFnZ1N0 YXRlUGVyR3JvdXBEYXRhOworfQorI2lmZGVmIHBnX2F0dHJpYnV0ZV9wYWNrZWQKKwlwZ19hdHRy aWJ1dGVfcGFja2VkKCkKKyNlbmRpZgorQWdnU3RhdGVQZXJHcm91cERhdGE7CiAKIC8qCiAgKiBB Z2dTdGF0ZVBlclBoYXNlRGF0YSAtIHBlci1ncm91cGluZy1zZXQtcGhhc2Ugc3RhdGUKLS0gCjIu MzQuMQoK --=-7XbwUtLb5+CQKaQ6AeIg--