Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pzidd-0002uJ-2B for pgsql-hackers@arkaria.postgresql.org; Thu, 18 May 2023 18:46:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pzida-0005mO-Ue for pgsql-hackers@arkaria.postgresql.org; Thu, 18 May 2023 18:46:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pzida-0005mD-7Y for pgsql-hackers@lists.postgresql.org; Thu, 18 May 2023 18:46:06 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1pzidN-000XDb-97 for pgsql-hackers@lists.postgresql.org; Thu, 18 May 2023 18:46:05 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-965ab8ed1c0so375435766b.2 for ; Thu, 18 May 2023 11:45:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1684435552; x=1687027552; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=reuGgq8RGEin3Rsl7SjNsC8gzWOm3QMGYsdyinRdizM=; b=IFxJ1jYijKJv/FQCGkdcyWqMudGOAnvn3XOtmEt+AWWJNvxPhQbGEV9WWNrT+fMM1V 3C4wi47ejz4Om+eV7EEDtprZGg6mGZ7PXIuhvx1UlmhijoNRPIhF6s1HHoKXCdeF5JG7 Ehfxs/xXSVGmI/S3VyHTklkSrE0BIaQ7Xq24iJWe7PvLX7kQqM5jnAxslnhV1KaaqZvg wTeBBWgUKR68jGTko+jnvN8cnvSW+FcaNiM/Sh23v6GpOieR8Oquqm8xPIHKlF0ZoI1l mp0ZXWVzYgNy0EqSORidWLmGlMHm4xdbb6YYQaFoxD0W9NQQPnagRuKYe1n8eDjRMDB1 +ddQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684435552; x=1687027552; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=reuGgq8RGEin3Rsl7SjNsC8gzWOm3QMGYsdyinRdizM=; b=I+YARAoB1+TtyfrqXcMz75d2Ie2AK7tEfCvmm4XSnAU4l9dCQdnu1wg3stIrp0dzDy K0a/FnFkdaagdyixONQnMxQtETFVPYsvlqW3kkUiVmlDdS0TVsU2/dN7s+U0hlSCNL+e 6iRkJhapfkEgd9WjKG6YDmFA+kMyvL05Z2S4bAZsw3spOJb+hWKikPtx8wC7LVKucnK5 hvJal+crCia1jfNxSsBhYjGxJvaa9fiG60KLP4YqkSF4eBGP3ZcWrlwvsvjxyB0FOXAv fsAwlXNTm//gs6cAsIsEinGUUpZ59dwsugBxdVjObUFhBBqLGr2JeiHJmssuHhlIVtIf Mivw== X-Gm-Message-State: AC+VfDxYVqe54xS2nbXykX2A10mQE57c7jlCc0XZMOpnC7o916iNp5gZ VITwipoj6AOo8JLbaiw+dTTujJfwgYLoNwsBAEhEKLZwLrvIqQrkSxijjJusAnjM1V2XlZpRYHT 0hs1Mhu+aod3AvBTrdT2jhtYtxcSp3IQyItg+BTpahAvtNWHBPbc5lQjK4FWwskcgjIBTfbrWhx zk6cdIm1YlylZJaTwkS0C5Y5aUT3FkCwiOAy+XTZzWThPV7bvjSv+StK8hIO/N1Qntcg== X-Google-Smtp-Source: ACHHUZ6ST04zI2dGPHVUniw8ZKB+D02knFkqnpElJgcDipuPccJkAPn7NLMmXX2Se4fw/0io7LvXdA== X-Received: by 2002:a17:907:94d1:b0:96a:37af:ff37 with SMTP id dn17-20020a17090794d100b0096a37afff37mr80217ejc.15.1684435551522; Thu, 18 May 2023 11:45:51 -0700 (PDT) Received: from [10.137.0.17] (static-84-42-175-93.bb.vodafone.cz. [84.42.175.93]) by smtp.gmail.com with ESMTPSA id n15-20020a1709065e0f00b0094edbe5c7ddsm1303798eju.38.2023.05.18.11.45.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 18 May 2023 11:45:50 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------7CnHeW1j4fsjWACltlBRBmo9" Message-ID: <9d993d0d-e431-2196-9ccc-0554d0e60154@enterprisedb.com> Date: Thu, 18 May 2023 20:45:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: Missing update of all_hasnulls in BRIN opclasses Content-Language: en-US To: Alvaro Herrera Cc: Justin Pryzby , Matthias van de Meent , pgsql-hackers@lists.postgresql.org References: <20230515100607.uftic7fsmz7blkfk@alvherre.pgsql> From: Tomas Vondra In-Reply-To: <20230515100607.uftic7fsmz7blkfk@alvherre.pgsql> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------7CnHeW1j4fsjWACltlBRBmo9 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 5/15/23 12:06, Alvaro Herrera wrote: > On 2023-May-07, Tomas Vondra wrote: > >>> Álvaro wrote: >>>> In backbranches, the new field to BrinMemTuple needs to be at the end of >>>> the struct, to avoid ABI breakage. >> >> Unfortunately, this is not actually possible :-( >> >> The BrinMemTuple has a FLEXIBLE_ARRAY_MEMBER at the end, so we can't >> place anything after it. I think we have three options: >> >> a) some other approach? - I really can't see any, except maybe for going >> back to the previous approach (i.e. encoding the info using the existing >> BrinValues allnulls/hasnulls flags) > > Actually, mine was quite the stupid suggestion: the BrinMemTuple already > has a 3 byte hole in the place where you originally wanted to add the > flag: > > struct BrinMemTuple { > _Bool bt_placeholder; /* 0 1 */ > > /* XXX 3 bytes hole, try to pack */ > > BlockNumber bt_blkno; /* 4 4 */ > MemoryContext bt_context; /* 8 8 */ > Datum * bt_values; /* 16 8 */ > _Bool * bt_allnulls; /* 24 8 */ > _Bool * bt_hasnulls; /* 32 8 */ > BrinValues bt_columns[]; /* 40 0 */ > > /* size: 40, cachelines: 1, members: 7 */ > /* sum members: 37, holes: 1, sum holes: 3 */ > /* last cacheline: 40 bytes */ > }; > > so putting it there was already not causing any ABI breakage. So, the > solution to this problem of not being able to put it at the end is just > to return the struct to your original formulation. > Thanks, that's pretty lucky. It means we're not breaking on-disk format nor ABI, which is great. Attached is a final version of the patches - I intend to do a bit more testing, go through the comments once more, and get this committed today or perhaps tomorrow morning, so that it gets into beta1. Unfortunately, while polishing the patches, I realized union_tuples() has yet another long-standing bug with handling NULL values, because it does this: /* Adjust "hasnulls". */ if (!col_a->bv_hasnulls && col_b->bv_hasnulls) col_a->bv_hasnulls = true; but let's assume "col_a" is a summary representing "1" and "col_b" represents NULL (col_b->bv_hasnulls=false col_b->bv_allnulls=true). Well, in that case we fail to "remember" col_a should represent NULL values too :-( This is somewhat separate issue, because it's unrelated to empty ranges (neither of the two ranges is empty). It's hard to test it, because it requires a particular timing of the concurrent actions, but a breakpoint in brin.c on the brin_can_do_samepage_update call (in summarize_range) does the trick for manual testing. 0001 fixes the issue. 0002 is the original fix, and 0003 is just the pageinspect changes (for master only). For the backbranches, I thought about making the code more like master (by moving some of the handling from opclasses to brin.c), but decided not to. It'd be low-risk, but it feels wrong to kinda do what the master does under "oi_regular_nulls" flag. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------7CnHeW1j4fsjWACltlBRBmo9 Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-handling-of-NULLs-when-merging-BRIN-su-14-master.patch" Content-Disposition: attachment; filename*0="0001-Fix-handling-of-NULLs-when-merging-BRIN-su-14-master.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2OTg2MDkxNTQzMjRmNjQ4MzFhYzQ0ZTQ0NDBhMjI4MzY5MTE4NGUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxOCBNYXkgMjAyMyAxMzowMDozMSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMS8zXSBGaXggaGFuZGxpbmcgb2YgTlVMTHMgd2hlbiBtZXJnaW5nIEJS SU4gc3VtbWFyaWVzCgpXaGVuIG1lcmdpbmcgQlJJTiBzdW1tYXJpZXMsIHVuaW9uX3R1cGxl cygpIGRpZCBub3QgY29ycmVjdGx5IHVwZGF0ZSB0aGUKdGFyZ2V0IGhhc251bGxzL2FsbG51 bGxzIGZsYWdzLiBXaGVuIG1lcmdpbmcgYWxsLU5VTEwgc3VtbWFyeSBpbnRvIGEKc3VtbWFy eSB3aXRob3V0IGFueSBOVUxMIHZhbHVlcywgdGhlIHJlc3VsdCBoYWQgYm90aCBmbGFncyBz ZXQgdG8gZmFsc2UKKGluc3RlYWQgb2YgaGF2aW5nIGhhc251bGxzPXRydWUpLgoKVGhpcyBo YXBwZW5lZCBiZWNhdXNlIHRoZSBjb2RlIG9ubHkgY29uc2lkZXJlZCB0aGUgaGFzbnVsbHMg ZmxhZ3MsCmlnbm9yaW5nIHRoZSBwb3NzaWJpbGl0eSB0aGUgc291cmNlIHN1bW1hcnkgaGFz IGFsbG51bGxzPXRydWUuCgpEaXNjb3ZlcmVkIHdoaWxlIGludmVzdGlnYXRpbmcgaXNzdWVz IHdpdGggaGFuZGxpbmcgZW1wdHkgQlJJTiByYW5nZXMKYW5kIGhhbmRsaW5nIG9mIE5VTEwg dmFsdWVzLCBidXQgaXQncyBhIHNlcGFyYXRlIHByb2JsZW0gKGhhcyBub3RoaW5nIHRvCmRv IHdpdGggZW1wdHkgcmFuZ2VzKS4KCkZpeGVkIGJ5IGNvbnNpZGVyaW5nIGJvdGggZmxhZ3Mg b24gdGhlIHNvdXJjZSBzdW1tYXJ5LCBhbmQgdXBkYXRpbmcgdGhlCmhhc251bGxzIGZsYWcg b24gdGhlIHRhcmdldCBzdW1tYXJ5LgoKQmFja3BhdGNoIHRvIDExLiBUaGUgYnVnIGV4aXN0 cyBzaW5jZSA5LjUgKHdoZXJlIEJSSU4gaW5kZXhlcyB3ZXJlCmludHJvZHVjZWQpLCBidXQg dGhvc2UgcmVsZWFzZXMgYXJlIEVPTCBhbHJlYWR5LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS80MDI0MzBlNC03ZDlkLTZjZjEtMDllZi00NjRkODBhZmZmM2IlNDBlbnRl cnByaXNlZGIuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIHwgMTAg KysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA0MWJmOTUwYTRhZi4uYTE1NTUy NWI3ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE2MTMsMTAgKzE2MTMsMTMg QEAgdW5pb25fdHVwbGVzKEJyaW5EZXNjICpiZGVzYywgQnJpbk1lbVR1cGxlICphLCBCcmlu VHVwbGUgKmIpCiAJCUJyaW5WYWx1ZXMgKmNvbF9iID0gJmRiLT5idF9jb2x1bW5zW2tleW5v XTsKIAkJQnJpbk9wY0luZm8gKm9wY2luZm8gPSBiZGVzYy0+YmRfaW5mb1trZXlub107CiAK IAkJaWYgKG9wY2luZm8tPm9pX3JlZ3VsYXJfbnVsbHMpCiAJCXsKKwkJCS8qIERvZXMgdGhl ICJiIiBzdW1tYXJ5IHJlcHJlc2VudCBhbnkgTlVMTCB2YWx1ZXM/ICovCisJCQlib29sCQli X2hhc19udWxscyA9IChjb2xfYi0+YnZfaGFzbnVsbHMgfHwgY29sX2ItPmJ2X2FsbG51bGxz KTsKKwogCQkJLyogQWRqdXN0ICJoYXNudWxscyIuICovCi0JCQlpZiAoIWNvbF9hLT5idl9o YXNudWxscyAmJiBjb2xfYi0+YnZfaGFzbnVsbHMpCisJCQlpZiAoIWNvbF9hLT5idl9hbGxu dWxscyAmJiBiX2hhc19udWxscykKIAkJCQljb2xfYS0+YnZfaGFzbnVsbHMgPSB0cnVlOwog CiAJCQkvKiBJZiB0aGVyZSBhcmUgbm8gdmFsdWVzIGluIEIsIHRoZXJlJ3Mgbm90aGluZyBs ZWZ0IHRvIGRvLiAqLwpAQCAtMTYyOCwxMiArMTYzMSwxNyBAQCB1bmlvbl90dXBsZXMoQnJp bkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsIEJyaW5UdXBsZSAqYikKIAkJCSAqIHZh bHVlcyBmcm9tIEIgaW50byBBLCBhbmQgd2UncmUgZG9uZS4gIFdlIGNhbm5vdCBydW4gdGhl CiAJCQkgKiBvcGVyYXRvcnMgaW4gdGhpcyBjYXNlLCBiZWNhdXNlIHZhbHVlcyBpbiBBIG1p Z2h0IGNvbnRhaW4KIAkJCSAqIGdhcmJhZ2UuICBOb3RlIHdlIGFscmVhZHkgZXN0YWJsaXNo ZWQgdGhhdCBCIGNvbnRhaW5zIHZhbHVlcy4KKwkJCSAqCisJCQkgKiBBbHNvIGFkanVzdCAi aGFzbnVsbHMiIGluIG9yZGVyIG5vdCB0byBmb3JnZXQgdGhlIHN1bW1hcnkKKwkJCSAqIHJl cHJlc2VudHMgTlVMTCB2YWx1ZXMuIFRoaXMgaXMgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBl YXJsaWVyCisJCQkgKiB1cGRhdGUsIGJlY2F1c2UgdGhhdCBvbmx5IGhhcHBlbnMgd2hlbiBh bGxudWxscz1mYWxzZS4KIAkJCSAqLwogCQkJaWYgKGNvbF9hLT5idl9hbGxudWxscykKIAkJ CXsKIAkJCQlpbnQJCQlpOwogCiAJCQkJY29sX2EtPmJ2X2FsbG51bGxzID0gZmFsc2U7CisJ CQkJY29sX2EtPmJ2X2hhc251bGxzID0gdHJ1ZTsKIAogCQkJCWZvciAoaSA9IDA7IGkgPCBv cGNpbmZvLT5vaV9uc3RvcmVkOyBpKyspCiAJCQkJCWNvbF9hLT5idl92YWx1ZXNbaV0gPQot LSAKMi40MC4xCgo= --------------7CnHeW1j4fsjWACltlBRBmo9 Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-handling-of-NULLs-when-merging-BRIN-summar-11-13.patch" Content-Disposition: attachment; filename*0="0001-Fix-handling-of-NULLs-when-merging-BRIN-summar-11-13.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1N2FiNDJjZmM1NWZmN2YwNzhkZTAwYWY4ZDBlMGM0NGE1MzU0NjU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAxOCBNYXkgMjAyMyAxMzozMzoxMCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMS8yXSBGaXggaGFuZGxpbmcgb2YgTlVMTHMgd2hlbiBtZXJnaW5nIEJS SU4gc3VtbWFyaWVzCgpXaGVuIG1lcmdpbmcgQlJJTiBzdW1tYXJpZXMsIHVuaW9uX3R1cGxl cygpIGRpZCBub3QgY29ycmVjdGx5IHVwZGF0ZSB0aGUKdGFyZ2V0IGhhc251bGxzL2FsbG51 bGxzIGZsYWdzLiBXaGVuIG1lcmdpbmcgYWxsLU5VTEwgc3VtbWFyeSBpbnRvIGEKc3VtbWFy eSB3aXRob3V0IGFueSBOVUxMIHZhbHVlcywgdGhlIHJlc3VsdCBoYWQgYm90aCBmbGFncyBz ZXQgdG8gZmFsc2UKKGluc3RlYWQgb2YgaGF2aW5nIGhhc251bGxzPXRydWUpLgoKVGhpcyBo YXBwZW5lZCBiZWNhdXNlIHRoZSBjb2RlIG9ubHkgY29uc2lkZXJlZCB0aGUgaGFzbnVsbHMg ZmxhZ3MsCmlnbm9yaW5nIHRoZSBwb3NzaWJpbGl0eSB0aGUgc291cmNlIHN1bW1hcnkgaGFz IGFsbG51bGxzPXRydWUuCgpEaXNjb3ZlcmVkIHdoaWxlIGludmVzdGlnYXRpbmcgaXNzdWVz IHdpdGggaGFuZGxpbmcgZW1wdHkgQlJJTiByYW5nZXMKYW5kIGhhbmRsaW5nIG9mIE5VTEwg dmFsdWVzLCBidXQgaXQncyBhIHNlcGFyYXRlIHByb2JsZW0gKGhhcyBub3RoaW5nIHRvCmRv IHdpdGggZW1wdHkgcmFuZ2VzKS4KCkZpeGVkIGJ5IGNvbnNpZGVyaW5nIGJvdGggZmxhZ3Mg b24gdGhlIHNvdXJjZSBzdW1tYXJ5LCBhbmQgdXBkYXRpbmcgdGhlCmhhc251bGxzIGZsYWcg b24gdGhlIHRhcmdldCBzdW1tYXJ5LgoKQmFja3BhdGNoIHRvIDExLiBUaGUgYnVnIGV4aXN0 cyBzaW5jZSA5LjUgKHdoZXJlIEJSSU4gaW5kZXhlcyB3ZXJlCmludHJvZHVjZWQpLCBidXQg dGhvc2UgcmVsZWFzZXMgYXJlIEVPTCBhbHJlYWR5LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS80MDI0MzBlNC03ZDlkLTZjZjEtMDllZi00NjRkODBhZmZmM2IlNDBlbnRl cnByaXNlZGIuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9pbmNsdXNp b24uYyB8IDEwICsrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlu bWF4LmMgICAgfCAxMCArKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbl9pbmNsdXNpb24uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f aW5jbHVzaW9uLmMKaW5kZXggN2UzODBkNjZlZDUuLmNhNDUxNzhmYmZmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2luY2x1c2lvbi5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMKQEAgLTUxNSwxMCArNTE1LDEz IEBAIGJyaW5faW5jbHVzaW9uX3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJRm1nckluZm8g ICAqZmluZm87CiAJRGF0dW0JCXJlc3VsdDsKIAorCS8qIERvZXMgdGhlICJiIiBzdW1tYXJ5 IHJlcHJlc2VudCBhbnkgTlVMTCB2YWx1ZXM/ICovCisJYm9vbAkJYl9oYXNfbnVsbHMgPSAo Y29sX2ItPmJ2X2hhc251bGxzIHx8IGNvbF9iLT5idl9hbGxudWxscyk7CisKIAlBc3NlcnQo Y29sX2EtPmJ2X2F0dG5vID09IGNvbF9iLT5idl9hdHRubyk7CiAKIAkvKiBBZGp1c3QgImhh c251bGxzIi4gKi8KLQlpZiAoIWNvbF9hLT5idl9oYXNudWxscyAmJiBjb2xfYi0+YnZfaGFz bnVsbHMpCisJaWYgKCFjb2xfYS0+YnZfYWxsbnVsbHMgJiYgYl9oYXNfbnVsbHMpCiAJCWNv bF9hLT5idl9oYXNudWxscyA9IHRydWU7CiAKIAkvKiBJZiB0aGVyZSBhcmUgbm8gdmFsdWVz IGluIEIsIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIGRvLiAqLwpAQCAtNTMzLDEwICs1MzYs MTUgQEAgYnJpbl9pbmNsdXNpb25fdW5pb24oUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBCIGlu dG8gQSwgYW5kIHdlJ3JlIGRvbmUuICBXZSBjYW5ub3QgcnVuIHRoZSBvcGVyYXRvcnMgaW4g dGhpcyBjYXNlLAogCSAqIGJlY2F1c2UgdmFsdWVzIGluIEEgbWlnaHQgY29udGFpbiBnYXJi YWdlLiAgTm90ZSB3ZSBhbHJlYWR5IGVzdGFibGlzaGVkCiAJICogdGhhdCBCIGNvbnRhaW5z IHZhbHVlcy4KKwkgKgorCSAqIEFsc28gYWRqdXN0ICJoYXNudWxscyIgaW4gb3JkZXIgbm90 IHRvIGZvcmdldCB0aGUgc3VtbWFyeSByZXByZXNlbnRzIE5VTEwKKwkgKiB2YWx1ZXMuIFRo aXMgaXMgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBlYXJsaWVyIHVwZGF0ZSwgYmVjYXVzZSB0 aGF0IG9ubHkKKwkgKiBoYXBwZW5zIHdoZW4gYWxsbnVsbHM9ZmFsc2UuCiAJICovCiAJaWYg KGNvbF9hLT5idl9hbGxudWxscykKIAl7CiAJCWNvbF9hLT5idl9hbGxudWxscyA9IGZhbHNl OworCQljb2xfYS0+YnZfaGFzbnVsbHMgPSB0cnVlOwogCQljb2xfYS0+YnZfdmFsdWVzW0lO Q0xVU0lPTl9VTklPTl0gPQogCQkJZGF0dW1Db3B5KGNvbF9iLT5idl92YWx1ZXNbSU5DTFVT SU9OX1VOSU9OXSwKIAkJCQkJICBhdHRyLT5hdHRieXZhbCwgYXR0ci0+YXR0bGVuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCmluZGV4IDRiNWQ2YTcyMTM1Li40 MGRhMGM4MDk0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9t aW5tYXguYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCkBA IC0yNDgsMTAgKzI0OCwxMyBAQCBicmluX21pbm1heF91bmlvbihQR19GVU5DVElPTl9BUkdT KQogCUZtZ3JJbmZvICAgKmZpbmZvOwogCWJvb2wJCW5lZWRzYWRqOwogCisJLyogRG9lcyB0 aGUgImIiIHN1bW1hcnkgcmVwcmVzZW50IGFueSBOVUxMIHZhbHVlcz8gKi8KKwlib29sCQli X2hhc19udWxscyA9IChjb2xfYi0+YnZfaGFzbnVsbHMgfHwgY29sX2ItPmJ2X2FsbG51bGxz KTsKKwogCUFzc2VydChjb2xfYS0+YnZfYXR0bm8gPT0gY29sX2ItPmJ2X2F0dG5vKTsKIAog CS8qIEFkanVzdCAiaGFzbnVsbHMiICovCi0JaWYgKCFjb2xfYS0+YnZfaGFzbnVsbHMgJiYg Y29sX2ItPmJ2X2hhc251bGxzKQorCWlmICghY29sX2EtPmJ2X2FsbG51bGxzICYmIGJfaGFz X251bGxzKQogCQljb2xfYS0+YnZfaGFzbnVsbHMgPSB0cnVlOwogCiAJLyogSWYgdGhlcmUg YXJlIG5vIHZhbHVlcyBpbiBCLCB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyAqLwpAQCAt MjY2LDEwICsyNjksMTUgQEAgYnJpbl9taW5tYXhfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykK IAkgKiBCIGludG8gQSwgYW5kIHdlJ3JlIGRvbmUuICBXZSBjYW5ub3QgcnVuIHRoZSBvcGVy YXRvcnMgaW4gdGhpcyBjYXNlLAogCSAqIGJlY2F1c2UgdmFsdWVzIGluIEEgbWlnaHQgY29u dGFpbiBnYXJiYWdlLiAgTm90ZSB3ZSBhbHJlYWR5IGVzdGFibGlzaGVkCiAJICogdGhhdCBC IGNvbnRhaW5zIHZhbHVlcy4KKwkgKgorCSAqIEFsc28gYWRqdXN0ICJoYXNudWxscyIgaW4g b3JkZXIgbm90IHRvIGZvcmdldCB0aGUgc3VtbWFyeSByZXByZXNlbnRzIE5VTEwKKwkgKiB2 YWx1ZXMuIFRoaXMgaXMgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBlYXJsaWVyIHVwZGF0ZSwg YmVjYXVzZSB0aGF0IG9ubHkKKwkgKiBoYXBwZW5zIHdoZW4gYWxsbnVsbHM9ZmFsc2UuCiAJ ICovCiAJaWYgKGNvbF9hLT5idl9hbGxudWxscykKIAl7CiAJCWNvbF9hLT5idl9hbGxudWxs cyA9IGZhbHNlOworCQljb2xfYS0+YnZfaGFzbnVsbHMgPSB0cnVlOwogCQljb2xfYS0+YnZf dmFsdWVzWzBdID0gZGF0dW1Db3B5KGNvbF9iLT5idl92YWx1ZXNbMF0sCiAJCQkJCQkJCQkJ YXR0ci0+YXR0Ynl2YWwsIGF0dHItPmF0dGxlbik7CiAJCWNvbF9hLT5idl92YWx1ZXNbMV0g PSBkYXR1bUNvcHkoY29sX2ItPmJ2X3ZhbHVlc1sxXSwKLS0gCjIuNDAuMQoK --------------7CnHeW1j4fsjWACltlBRBmo9 Content-Type: text/x-patch; charset=UTF-8; name="0002-Fix-handling-of-NULLs-in-BRIN-indexes-11-13.patch" Content-Disposition: attachment; filename="0002-Fix-handling-of-NULLs-in-BRIN-indexes-11-13.patch" Content-Transfer-Encoding: base64 RnJvbSA2MzhmZTdmOTZkMjFiYzkwNjIyZGFiOGE0OGJiODAxOGZlZDkxNTBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCAyMyBBcHIgMjAyMyAxOToyNjoxOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi8yXSBGaXggaGFuZGxpbmcgb2YgTlVMTHMgaW4gQlJJTiBpbmRleGVz CgpCUklOIGluZGV4ZXMgZGlkIG5vdCBwcm9wZXJseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1 bW1hcmllcyBmb3IgZW1wdHkKKG5vIHJvd3MpIGFuZCBhbGwtTlVMTCByYW5nZXMsIHRyZWF0 aW5nIHRoZW0gYXMgZXNzZW50aWFsbHkgdGhlIHNhbWUKdGhpbmcuIFN1bW1hcmllcyB3ZXJl IGluaXRpYWxpemVkIHdpdGggYWxsbnVsbHM9dHJ1ZSwgYW5kIG9wY2xhc3NlcwpzaW1wbHkg cmVzZXQgYWxsbnVsbHMgdG8gZmFsc2Ugd2hlbiBwcm9jZXNzaW5nIHRoZSBmaXJzdCBub24t TlVMTCB2YWx1ZS4KVGhpcyBob3dldmVyIHByb2R1Y2VzIGluY29ycmVjdCByZXN1bHRzIGlm IHRoZSByYW5nZSBzdGFydHMgd2l0aCBhIE5VTEwKdmFsdWUgKG9yIGEgc2VxdWVuY2Ugb2Yg TlVMTCB2YWx1ZXMpLCBpbiB3aGljaCBjYXNlIHdlIGZvcmdldCB0aGUgcmFuZ2UKY29udGFp bnMgTlVMTCB2YWx1ZXMgd2hlbiBhZGRpbmcgdGhlIGZpcnN0IG5vbi1OVUxMIHZhbHVlLgoK VGhpcyBoYXBwZW5zIGJlY2F1c2UgdGhlIGFsbG51bGxzIGZsYWcgaXMgdXNlZCBmb3IgdHdv IHNlcGFyYXRlCnB1cnBvc2VzIC0gdG8gbWFyayBlbXB0eSByYW5nZXMgKG5vdCByZXByZXNl bnRpbmcgYW55IHJvd3MgeWV0KSBhbmQKcmFuZ2VzIGNvbnRhaW5pbmcgb25seSBOVUxMIHZh bHVlcy4KCk9wY2xhc3NlcyBkb24ndCBrbm93IHdoaWNoIG9mIHRoZXNlIGNhc2VzIGl0IGlz LCBhbmQgc28gZG9uJ3Qga25vdwp3aGV0aGVyIHRvIHNldCBoYXNudWxscz10cnVlLiBTZXR0 aW5nIHRoZSBmbGFnIGluIGJvdGggY2FzZXMgd291bGQgbWFrZQppdCBjb3JyZWN0LCBidXQg aXQgd291bGQgYWxzbyBtYWtlIEJSSU4gaW5kZXhlcyB1c2VsZXNzIGZvciBxdWVyaWVzIHdp dGgKSVMgTlVMTCBjbGF1c2VzLiBBbGwgcmFuZ2VzIHN0YXJ0IGVtcHR5IChhbmQgdGh1cyBh bGxudWxscz10cnVlKSwgc28gYWxsCnJhbmdlcyB3b3VsZCBlbmQgdXAgd2l0aCBlaXRoZXIg YWxsbnVsbHM9dHJ1ZSBvciBoYXNudWxscz10cnVlLgoKVGhlIHNldmVyaXR5IG9mIHRoZSBp c3N1ZSBpcyBzb21ld2hhdCByZWR1Y2VkIGJ5IHRoZSBmYWN0IHRoYXQgaXQgb25seQpoYXBw ZW5zIHdoZW4gYWRkaW5nIHZhbHVlcyB0byBhbiBleGlzdGluZyBzdW1tYXJ5IHdpdGggYWxs bnVsbHM9dHJ1ZS4KVGhpcyBjYW4gaGFwcGVuIGUuZy4gZm9yIHNtYWxsIHRhYmxlcyAoYmVj YXVzZSBhIHN1bW1hcnkgZm9yIHRoZSBmaXJzdApyYW5nZSBleGlzdHMgZm9yIGFsbCBCUklO IGluZGV4ZXMpLCBvciBmb3IgdGFibGVzIHdpdGggbGFyZ2UgZnJhY3Rpb24gb2YKTlVMTCB2 YWx1ZXMgaW4gdGhlIGluZGV4ZWQgY29sdW1ucy4KCkJ1bGsgc3VtbWFyaXphdGlvbiAoZS5n LiBkdXJpbmcgQ1JFQVRFIElOREVYIG9yIGF1dG9tYXRpYyBzdW1tYXJpemF0aW9uKQp0aGF0 IHByb2Nlc3NlcyBhbGwgdmFsdWVzIGF0IG9uY2UgaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMg aXNzdWUuIEluIHRoaXMKY2FzZSB0aGUgZmxhZ3Mgd2VyZSB1cGRhdGVkIGluIGEgc2xpZ2h0 bHkgZGlmZmVyZW50IHdheSwgbm90IGZvcmdldHRpbmcKdGhlIE5VTEwgdmFsdWVzLgoKVG8g aWRlbnRpZnkgZW1wdHkgcmFuZ2VzIHdlIHVzZSBhIG5ldyBmbGFnLCBzdG9yZWQgaW4gYW4g dW51c2VkIGJpdCBpbgp0aGUgQlJJTiB0dXBsZSBoZWFkZXIgc28gdGhlIG9uLWRpc2sgZm9y bWF0IHJlbWFpbnMgdGhlIHNhbWUuIEEgbWF0Y2hpbmcKZmxhZyBpcyBhZGRlZCB0byBCcmlu TWVtVHVwbGUsIGludG8gYSAzQiBnYXAgYWZ0ZXIgYnRfcGxhY2Vob2xkZXIuClRoYXQgbWVh bnMgdGhlcmUncyBubyByaXNrIG9mIEFCSSBicmVha2FnZSwgYWx0aG91Z2ggd2UgZG9uJ3Qg YWN0dWFsbHkKcGFzcyB0aGUgQnJpbk1lbVR1cGxlIHRvIGFueSBwdWJsaWMgQVBJLgoKV2Ug Y291bGQgYWxzbyBza2lwIHN0b3JpbmcgaW5kZXggdHVwbGVzIGZvciBlbXB0eSBzdW1tYXJp ZXMsIGJ1dCB0aGVuCndlJ2QgaGF2ZSB0byBhbHdheXMgcHJvY2VzcyBzdWNoIHJhbmdlcyAt IGV2ZW4gaWYgdGhlcmUgYXJlIG5vIHJvd3MgaW4KbGFyZ2UgcGFydHMgb2YgdGhlIHRhYmxl IChlLmcuIGFmdGVyIGEgYnVsayBERUxFVEUpLCBpdCB3b3VsZCBzdGlsbApyZXF1aXJlIHJl YWRpbmcgdGhlIHBhZ2VzIGV0Yy4gU28gd2Ugc3RvcmUgdGhlbSwgYnV0IGlnbm9yZSB0aGVt IHdoZW4KYnVpbGRpbmcgdGhlIGJpdG1hcC4KCkJhY2twYXRjaCB0byAxMS4gVGhlIGlzc3Vl IGV4aXN0cyBzaW5jZSBCUklOIGluZGV4ZXMgd2VyZSBpbnRyb2R1Y2VkIGluCjkuNSwgYnV0 IG9sZGVyIHJlbGVhc2VzIGFyZSBhbHJlYWR5IEVPTC4KCkJhY2twYXRjaC10aHJvdWdoOiAx MQpSZXZpZXdlZC1ieTogSnVzdGluIFByeXpieSwgTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBB bHZhcm8gSGVycmVyYQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzQwMjQzMGU0 LTdkOWQtNmNmMS0wOWVmLTQ2NGQ4MGFmZmYzYkBlbnRlcnByaXNlZGIuY29tCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgMTc2ICsrKysr KysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jICAg ICAgICAgIHwgIDE0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oICAgICAg ICAgICAgICAgfCAgIDYgKy0KIC4uLnN1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5z ZXJ0aW9uLm91dCB8ICAgOCArLQogLi4udW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWlu c2VydGlvbi5zcGVjIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMo KyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCAwYmVj ZmRlMTEzMy4uMTc2YWUwMDk5ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTM1 LDYgKzM1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUg InV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAi dXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9pbmRleF9zZWxmdW5jcy5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0x NzMsNyArMTc0LDcgQEAgYnJpbmluc2VydChSZWxhdGlvbiBpZHhSZWwsIERhdHVtICp2YWx1 ZXMsIGJvb2wgKm51bGxzLAogCiAJZm9yICg7OykKIAl7Ci0JCWJvb2wJCW5lZWRfaW5zZXJ0 ID0gZmFsc2U7CisJCWJvb2wJCW5lZWRfaW5zZXJ0OwogCQlPZmZzZXROdW1iZXIgb2ZmOwog CQlCcmluVHVwbGUgICpicnR1cDsKIAkJQnJpbk1lbVR1cGxlICpkdHVwOwpAQCAtMjQxLDYg KzI0Miw5IEBAIGJyaW5pbnNlcnQoUmVsYXRpb24gaWR4UmVsLCBEYXR1bSAqdmFsdWVzLCBi b29sICpudWxscywKIAogCQlkdHVwID0gYnJpbl9kZWZvcm1fdHVwbGUoYmRlc2MsIGJydHVw LCBOVUxMKTsKIAorCQkvKiBJZiB0aGUgcmFuZ2Ugc3RhcnRzIGVtcHR5LCB3ZSdyZSBjZXJ0 YWlubHkgZ29pbmcgdG8gbW9kaWZ5IGl0LiAqLworCQluZWVkX2luc2VydCA9IGR0dXAtPmJ0 X2VtcHR5X3JhbmdlOworCiAJCS8qCiAJCSAqIENvbXBhcmUgdGhlIGtleSB2YWx1ZXMgb2Yg dGhlIG5ldyB0dXBsZSB0byB0aGUgc3RvcmVkIGluZGV4IHZhbHVlczsKIAkJICogb3VyIGRl Zm9ybWVkIHR1cGxlIHdpbGwgZ2V0IHVwZGF0ZWQgaWYgdGhlIG5ldyB0dXBsZSBkb2Vzbid0 IGZpdApAQCAtMjUzLDggKzI1NywyMCBAQCBicmluaW5zZXJ0KFJlbGF0aW9uIGlkeFJlbCwg RGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsCiAJCQlEYXR1bQkJcmVzdWx0OwogCQkJQnJp blZhbHVlcyAqYnZhbDsKIAkJCUZtZ3JJbmZvICAgKmFkZFZhbHVlOworCQkJYm9vbAkJaGFz X251bGxzOwogCiAJCQlidmFsID0gJmR0dXAtPmJ0X2NvbHVtbnNba2V5bm9dOworCisJCQkv KgorCQkJICogRG9lcyB0aGUgcmFuZ2UgaGF2ZSBhY3R1YWwgTlVMTCB2YWx1ZXM/IEVpdGhl ciBvZiB0aGUgZmxhZ3MgY2FuCisJCQkgKiBiZSBzZXQsIGJ1dCB3ZSBpZ25vcmUgdGhlIHN0 YXRlIGJlZm9yZSBhZGRpbmcgZmlyc3Qgcm93LgorCQkJICoKKwkJCSAqIFdlIGhhdmUgdG8g cmVtZW1iZXIgdGhpcywgYmVjYXVzZSB3ZSdsbCBtb2RpZnkgdGhlIGZsYWdzIGFuZCB3ZQor CQkJICogbmVlZCB0byBrbm93IGlmIHRoZSByYW5nZSBzdGFydGVkIGFzIGVtcHR5LgorCQkJ ICovCisJCQloYXNfbnVsbHMgPSAoKCFkdHVwLT5idF9lbXB0eV9yYW5nZSkgJiYKKwkJCQkJ CSAoYnZhbC0+YnZfaGFzbnVsbHMgfHwgYnZhbC0+YnZfYWxsbnVsbHMpKTsKKwogCQkJYWRk VmFsdWUgPSBpbmRleF9nZXRwcm9jaW5mbyhpZHhSZWwsIGtleW5vICsgMSwKIAkJCQkJCQkJ CQkgQlJJTl9QUk9DTlVNX0FERFZBTFVFKTsKIAkJCXJlc3VsdCA9IEZ1bmN0aW9uQ2FsbDRD b2xsKGFkZFZhbHVlLApAQCAtMjY1LDggKzI4MSwzMyBAQCBicmluaW5zZXJ0KFJlbGF0aW9u IGlkeFJlbCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsCiAJCQkJCQkJCQkgICBudWxs c1trZXlub10pOwogCQkJLyogaWYgdGhhdCByZXR1cm5lZCB0cnVlLCB3ZSBuZWVkIHRvIGlu c2VydCB0aGUgdXBkYXRlZCB0dXBsZSAqLwogCQkJbmVlZF9pbnNlcnQgfD0gRGF0dW1HZXRC b29sKHJlc3VsdCk7CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcmFuZ2Ugd2FzIGhhZCBhY3R1 YWwgTlVMTCB2YWx1ZXMgKGkuZS4gZGlkIG5vdCBzdGFydCBlbXB0eSksCisJCQkgKiBtYWtl IHN1cmUgd2UgZG9uJ3QgZm9yZ2V0IGFib3V0IHRoZSBOVUxMIHZhbHVlcy4gRWl0aGVyIHRo ZSBhbGxudWxscworCQkJICogZmxhZyBpcyBzdGlsbCBzZXQgdG8gdHJ1ZSwgb3IgKGlmIHRo ZSBvcGNsYXNzIGNsZWFyZWQgaXQpIHdlIG5lZWQgdG8KKwkJCSAqIHNldCBoYXNudWxscz10 cnVlLgorCQkJICoKKwkJCSAqIFhYWCBUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSBv cGNsYXNzIG1vZGlmaWVkIHRoZSB0dXBsZSwgc28gdGhlCisJCQkgKiBtb2RpZmllZCBmbGFn IHNob3VsZCBiZSBzZXQuCisJCQkgKi8KKwkJCWlmIChoYXNfbnVsbHMgJiYgIShidmFsLT5i dl9oYXNudWxscyB8fCBidmFsLT5idl9hbGxudWxscykpCisJCQl7CisJCQkJQXNzZXJ0KG5l ZWRfaW5zZXJ0KTsKKwkJCQlidmFsLT5idl9oYXNudWxscyA9IHRydWU7CisJCQl9CiAJCX0K IAorCQkvKgorCQkgKiBBZnRlciB1cGRhdGluZyBzdW1tYXJpZXMgZm9yIGFsbCB0aGUga2V5 cywgbWFyayBpdCBhcyBub3QgZW1wdHkuCisJCSAqCisJCSAqIElmIHdlJ3JlIGFjdHVhbGx5 IGNoYW5naW5nIHRoZSBmbGFnIHZhbHVlIChpLmUuIHR1cGxlIHN0YXJ0ZWQgYXMKKwkJICog ZW1wdHkpLCB3ZSBzaG91bGQgaGF2ZSBtb2RpZmllZCB0aGUgdHVwbGUuIFNvIHdlIHNob3Vs ZCBub3Qgc2VlCisJCSAqIGVtcHR5IHJhbmdlIHRoYXQgd2FzIG5vdCBtb2RpZmllZC4KKwkJ ICovCisJCUFzc2VydCghZHR1cC0+YnRfZW1wdHlfcmFuZ2UgfHwgbmVlZF9pbnNlcnQpOwor CQlkdHVwLT5idF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCiAJCWlmICghbmVlZF9pbnNlcnQp CiAJCXsKIAkJCS8qCkBAIC01MDgsNiArNTQ5LDE3IEBAIGJyaW5nZXRiaXRtYXAoSW5kZXhT Y2FuRGVzYyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAkJCQkJCQkJCSAgIEN1cnJlbnRNZW1v cnlDb250ZXh0KTsKIAkJCQkJfQogCisJCQkJCS8qCisJCQkJCSAqIElmIHRoZSBCUklOIHR1 cGxlIGluZGljYXRlcyB0aGF0IHRoaXMgcmFuZ2UgaXMgZW1wdHksCisJCQkJCSAqIHdlIGNh biBza2lwIGl0OiB0aGVyZSdzIG5vdGhpbmcgdG8gbWF0Y2guICBXZSBkb24ndAorCQkJCQkg KiBuZWVkIHRvIGV4YW1pbmUgdGhlIG5leHQgY29sdW1ucy4KKwkJCQkJICovCisJCQkJCWlm IChkdHVwLT5idF9lbXB0eV9yYW5nZSkKKwkJCQkJeworCQkJCQkJYWRkcmFuZ2UgPSBmYWxz ZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisKIAkJCQkJLyoKIAkJCQkJICogQ2hlY2sgd2hl dGhlciB0aGUgc2NhbiBrZXkgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBwYWdlCiAJCQkJCSAq IHJhbmdlIHZhbHVlczsgaWYgc28sIGhhdmUgdGhlIHBhZ2VzIGluIHRoZSByYW5nZSBhZGRl ZApAQCAtNjEyLDYgKzY2NCw3IEBAIGJyaW5idWlsZENhbGxiYWNrKFJlbGF0aW9uIGluZGV4 LAogCUJyaW5CdWlsZFN0YXRlICpzdGF0ZSA9IChCcmluQnVpbGRTdGF0ZSAqKSBicnN0YXRl OwogCUJsb2NrTnVtYmVyIHRoaXNibG9jazsKIAlpbnQJCQlpOworCWJvb2wJCW1vZGlmaWVk OwogCiAJdGhpc2Jsb2NrID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpOwogCkBA IC02NDAsMjUgKzY5Myw3NiBAQCBicmluYnVpbGRDYWxsYmFjayhSZWxhdGlvbiBpbmRleCwK IAl9CiAKIAkvKiBBY2N1bXVsYXRlIHRoZSBjdXJyZW50IHR1cGxlIGludG8gdGhlIHJ1bm5p bmcgc3RhdGUgKi8KKworCS8qIElmIHRoZSByYW5nZSBzdGFydHMgZW1wdHksIHdlJ3JlIGNl cnRhaW5seSBnb2luZyB0byBtb2RpZnkgaXQuICovCisJbW9kaWZpZWQgPSBzdGF0ZS0+YnNf ZHR1cGxlLT5idF9lbXB0eV9yYW5nZTsKKworCS8qCisJICogQ29tcGFyZSB0aGUga2V5IHZh bHVlcyBvZiB0aGUgbmV3IHR1cGxlIHRvIHRoZSBzdG9yZWQgaW5kZXggdmFsdWVzOworCSAq IG91ciBkZWZvcm1lZCB0dXBsZSB3aWxsIGdldCB1cGRhdGVkIGlmIHRoZSBuZXcgdHVwbGUg ZG9lc24ndCBmaXQKKwkgKiB0aGUgb3JpZ2luYWwgcmFuZ2UgKG5vdGUgdGhpcyBtZWFucyB3 ZSBjYW4ndCBicmVhayBvdXQgb2YgdGhlIGxvb3AKKwkgKiBlYXJseSkuIE1ha2UgYSBub3Rl IG9mIHdoZXRoZXIgdGhpcyBoYXBwZW5zLCBzbyB0aGF0IHdlIGtub3cgdG8KKwkgKiBpbnNl cnQgdGhlIG1vZGlmaWVkIHR1cGxlIGxhdGVyLgorCSAqLwogCWZvciAoaSA9IDA7IGkgPCBz dGF0ZS0+YnNfYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOyBpKyspCiAJewogCQlGbWdySW5m byAgICphZGRWYWx1ZTsKIAkJQnJpblZhbHVlcyAqY29sOwogCQlGb3JtX3BnX2F0dHJpYnV0 ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihzdGF0ZS0+YnNfYmRlc2MtPmJkX3R1cGRlc2MsIGkp OworCQlib29sCQloYXNfbnVsbHM7CisJCURhdHVtCQlyZXN1bHQ7CiAKIAkJY29sID0gJnN0 YXRlLT5ic19kdHVwbGUtPmJ0X2NvbHVtbnNbaV07CisKKwkJLyoKKwkJICogRG9lcyB0aGUg cmFuZ2UgaGF2ZSBhY3R1YWwgTlVMTCB2YWx1ZXM/IEVpdGhlciBvZiB0aGUgZmxhZ3MgY2Fu CisJCSAqIGJlIHNldCwgYnV0IHdlIGlnbm9yZSB0aGUgc3RhdGUgYmVmb3JlIGFkZGluZyBm aXJzdCByb3cuCisJCSAqCisJCSAqIFdlIGhhdmUgdG8gcmVtZW1iZXIgdGhpcywgYmVjYXVz ZSB3ZSdsbCBtb2RpZnkgdGhlIGZsYWdzIGFuZCB3ZQorCQkgKiBuZWVkIHRvIGtub3cgaWYg dGhlIHJhbmdlIHN0YXJ0ZWQgYXMgZW1wdHkuCisJCSAqLworCQloYXNfbnVsbHMgPSAoKCFz dGF0ZS0+YnNfZHR1cGxlLT5idF9lbXB0eV9yYW5nZSkgJiYKKwkJCQkJIChjb2wtPmJ2X2hh c251bGxzIHx8IGNvbC0+YnZfYWxsbnVsbHMpKTsKKworCQkvKgorCQkgKiBDYWxsIHRoZSBC UklOX1BST0NOVU1fQUREVkFMVUUgcHJvY2VkdXJlLiBXZSBkbyB0aGlzIGV2ZW4gZm9yIE5V TEwKKwkJICogdmFsdWVzLCBiZWNhdXNlIHdobyBrbm93cyB3aGF0IHRoZSBvcGNsYXNzIGlz IGRvaW5nLgorCQkgKi8KIAkJYWRkVmFsdWUgPSBpbmRleF9nZXRwcm9jaW5mbyhpbmRleCwg aSArIDEsCiAJCQkJCQkJCQkgQlJJTl9QUk9DTlVNX0FERFZBTFVFKTsKKwkJcmVzdWx0ID0g RnVuY3Rpb25DYWxsNENvbGwoYWRkVmFsdWUsCisJCQkJCQkJCSAgIGF0dHItPmF0dGNvbGxh dGlvbiwKKwkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHN0YXRlLT5ic19iZGVzYyksCisJ CQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2wpLAorCQkJCQkJCQkgICB2YWx1ZXNbaV0s IGlzbnVsbFtpXSk7CisJCS8qIGlmIHRoYXQgcmV0dXJuZWQgdHJ1ZSwgd2UgbmVlZCB0byBp bnNlcnQgdGhlIHVwZGF0ZWQgdHVwbGUgKi8KKwkJbW9kaWZpZWQgfD0gRGF0dW1HZXRCb29s KHJlc3VsdCk7CiAKIAkJLyoKLQkJICogVXBkYXRlIGR0dXBsZSBzdGF0ZSwgaWYgYW5kIGFz IG5lY2Vzc2FyeS4KKwkJICogSWYgdGhlIHJhbmdlIHdhcyBoYWQgYWN0dWFsIE5VTEwgdmFs dWVzIChpLmUuIGRpZCBub3Qgc3RhcnQgZW1wdHkpLAorCQkgKiBtYWtlIHN1cmUgd2UgZG9u J3QgZm9yZ2V0IGFib3V0IHRoZSBOVUxMIHZhbHVlcy4gRWl0aGVyIHRoZSBhbGxudWxscwor CQkgKiBmbGFnIGlzIHN0aWxsIHNldCB0byB0cnVlLCBvciAoaWYgdGhlIG9wY2xhc3MgY2xl YXJlZCBpdCkgd2UgbmVlZCB0bworCQkgKiBzZXQgaGFzbnVsbHM9dHJ1ZS4KKwkJICoKKwkJ ICogWFhYIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIG9wY2xhc3MgbW9kaWZpZWQg dGhlIHR1cGxlLCBzbyB0aGUKKwkJICogbW9kaWZpZWQgZmxhZyBzaG91bGQgYmUgc2V0Lgog CQkgKi8KLQkJRnVuY3Rpb25DYWxsNENvbGwoYWRkVmFsdWUsCi0JCQkJCQkgIGF0dHItPmF0 dGNvbGxhdGlvbiwKLQkJCQkJCSAgUG9pbnRlckdldERhdHVtKHN0YXRlLT5ic19iZGVzYyks Ci0JCQkJCQkgIFBvaW50ZXJHZXREYXR1bShjb2wpLAotCQkJCQkJICB2YWx1ZXNbaV0sIGlz bnVsbFtpXSk7CisJCWlmIChoYXNfbnVsbHMgJiYgIShjb2wtPmJ2X2hhc251bGxzIHx8IGNv bC0+YnZfYWxsbnVsbHMpKQorCQl7CisJCQlBc3NlcnQobW9kaWZpZWQpOworCQkJY29sLT5i dl9oYXNudWxscyA9IHRydWU7CisJCX0KIAl9CisKKwkvKgorCSAqIEFmdGVyIHVwZGF0aW5n IHN1bW1hcmllcyBmb3IgYWxsIHRoZSBrZXlzLCBtYXJrIGl0IGFzIG5vdCBlbXB0eS4KKwkg KgorCSAqIElmIHdlJ3JlIGFjdHVhbGx5IGNoYW5naW5nIHRoZSBmbGFnIHZhbHVlIChpLmUu IHR1cGxlIHN0YXJ0ZWQgYXMKKwkgKiBlbXB0eSksIHdlIHNob3VsZCBoYXZlIG1vZGlmaWVk IHRoZSB0dXBsZS4gU28gd2Ugc2hvdWxkIG5vdCBzZWUKKwkgKiBlbXB0eSByYW5nZSB0aGF0 IHdhcyBub3QgbW9kaWZpZWQuCisJICovCisJQXNzZXJ0KCFzdGF0ZS0+YnNfZHR1cGxlLT5i dF9lbXB0eV9yYW5nZSB8fCBtb2RpZmllZCk7CisJc3RhdGUtPmJzX2R0dXBsZS0+YnRfZW1w dHlfcmFuZ2UgPSBmYWxzZTsKIH0KIAogLyoKQEAgLTE0NjUsNiArMTU2OSw2NCBAQCB1bmlv bl90dXBsZXMoQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsIEJyaW5UdXBsZSAq YikKIAlkYiA9IGJyaW5fZGVmb3JtX3R1cGxlKGJkZXNjLCBiLCBOVUxMKTsKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAorCS8qCisJICogQ2hlY2sgaWYgdGhlIHJhbmdl cyBhcmUgZW1wdHkuCisJICoKKwkgKiBJZiBhdCBsZWFzdCBvbmUgb2YgdGhlbSBpcyBlbXB0 eSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIHBlci1rZXkgdW5pb24KKwkgKiBmdW5jdGlvbnMg YXQgYWxsLiBJZiAiYiIgaXMgZW1wdHksIHdlIGp1c3QgdXNlICJhIiBhcyB0aGUgcmVzdWx0 IChpdAorCSAqIG1pZ2h0IGJlIGVtcHR5IGZpbmUsIGJ1dCB0aGF0J3MgZmluZSkuIElmICJh IiBpcyBlbXB0eSBidXQgImIiIGlzIG5vdCwKKwkgKiB3ZSB1c2UgImIiIGFzIHRoZSByZXN1 bHQgKGJ1dCB3ZSBoYXZlIHRvIGNvcHkgdGhlIGRhdGEgaW50byAiYSIgZmlyc3QpLgorCSAq CisJICogT25seSB3aGVuIGJvdGggcmFuZ2VzIGFyZSBub24tZW1wdHksIHdlIGFjdHVhbGx5 IGRvIHRoZSBwZXIta2V5IG1lcmdlLgorCSAqLworCisJLyogSWYgImIiIGlzIGVtcHR5IC0g aWdub3JlIGl0IGFuZCBqdXN0IHVzZSAiYSIgKGV2ZW4gaWYgaXQncyBlbXB0eSBldGMuKS4g Ki8KKwlpZiAoZGItPmJ0X2VtcHR5X3JhbmdlKQorCXsKKwkJLyogc2tpcCB0aGUgcGVyLWtl eSBtZXJnZSAqLworCQlNZW1vcnlDb250ZXh0RGVsZXRlKGN4dCk7CisJCXJldHVybjsKKwl9 CisKKwkvKgorCSAqIE5vdyB3ZSBrbm93ICJiIiBpcyBub3QgZW1wdHkuIElmICJhIiBpcyBl bXB0eSwgdGhlbiAiYiIgaXMgdGhlIHJlc3VsdC4KKwkgKiBCdXQgd2UgbmVlZCB0byBjb3B5 IHRoZSBkYXRhIGZyb20gImIiIHRvICJhIiBmaXJzdCwgYmVjYXVzZSB0aGF0J3MgaG93CisJ ICogd2UgcGFzcyByZXN1bHQgb3V0LgorCSAqCisJICogV2UgaGF2ZSB0byBjb3B5IGFsbCB0 aGUgZ2xvYmFsL3Blci1rZXkgZmxhZ3MgZXRjLiB0b28uCisJICovCisJaWYgKGEtPmJ0X2Vt cHR5X3JhbmdlKQorCXsKKwkJZm9yIChrZXlubyA9IDA7IGtleW5vIDwgYmRlc2MtPmJkX3R1 cGRlc2MtPm5hdHRzOyBrZXlubysrKQorCQl7CisJCQlpbnQJCQlpOworCQkJQnJpblZhbHVl cyAqY29sX2EgPSAmYS0+YnRfY29sdW1uc1trZXlub107CisJCQlCcmluVmFsdWVzICpjb2xf YiA9ICZkYi0+YnRfY29sdW1uc1trZXlub107CisJCQlCcmluT3BjSW5mbyAqb3BjaW5mbyA9 IGJkZXNjLT5iZF9pbmZvW2tleW5vXTsKKworCQkJY29sX2EtPmJ2X2FsbG51bGxzID0gY29s X2ItPmJ2X2FsbG51bGxzOworCQkJY29sX2EtPmJ2X2hhc251bGxzID0gY29sX2ItPmJ2X2hh c251bGxzOworCisJCQkvKiBJZiAiYiIgaGFzIG5vIGRhdGEsIHdlJ3JlIGRvbmUuICovCisJ CQlpZiAoY29sX2ItPmJ2X2FsbG51bGxzKQorCQkJCWNvbnRpbnVlOworCisJCQlmb3IgKGkg PSAwOyBpIDwgb3BjaW5mby0+b2lfbnN0b3JlZDsgaSsrKQorCQkJCWNvbF9hLT5idl92YWx1 ZXNbaV0gPQorCQkJCQlkYXR1bUNvcHkoY29sX2ItPmJ2X3ZhbHVlc1tpXSwKKwkJCQkJCQkg IG9wY2luZm8tPm9pX3R5cGNhY2hlW2ldLT50eXBieXZhbCwKKwkJCQkJCQkgIG9wY2luZm8t Pm9pX3R5cGNhY2hlW2ldLT50eXBsZW4pOworCQl9CisKKwkJLyogImEiIHN0YXJ0ZWQgZW1w dHksIGJ1dCAiYiIgd2FzIG5vdCBlbXB0eSwgc28gcmVtZW1iZXIgdGhhdCAqLworCQlhLT5i dF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCisJCS8qIHNraXAgdGhlIHBlci1rZXkgbWVyZ2Ug Ki8KKwkJTWVtb3J5Q29udGV4dERlbGV0ZShjeHQpOworCQlyZXR1cm47CisJfQorCisJLyog TmVpdGhlciByYW5nZSBpcyBlbXB0eSwgc28gY2FsbCB0aGUgdW5pb24gcHJvYy4gKi8KIAlm b3IgKGtleW5vID0gMDsga2V5bm8gPCBiZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHM7IGtleW5v KyspCiAJewogCQlGbWdySW5mbyAgICp1bmlvbkZuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl90dXBsZS5jCmluZGV4IGIzYjQ1M2FlZDEyLi5hYWZkMmYxN2NhMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYwpAQCAtMzQ5LDYgKzM0OSw5IEBAIGJyaW5f Zm9ybV90dXBsZShCcmluRGVzYyAqYnJkZXNjLCBCbG9ja051bWJlciBibGtubywgQnJpbk1l bVR1cGxlICp0dXBsZSwKIAlpZiAodHVwbGUtPmJ0X3BsYWNlaG9sZGVyKQogCQlyZXR0dXBs ZS0+YnRfaW5mbyB8PSBCUklOX1BMQUNFSE9MREVSX01BU0s7CiAKKwlpZiAodHVwbGUtPmJ0 X2VtcHR5X3JhbmdlKQorCQlyZXR0dXBsZS0+YnRfaW5mbyB8PSBCUklOX0VNUFRZX1JBTkdF X01BU0s7CisKIAkqc2l6ZSA9IGxlbjsKIAlyZXR1cm4gcmV0dHVwbGU7CiB9CkBAIC0zNzYs NyArMzc5LDcgQEAgYnJpbl9mb3JtX3BsYWNlaG9sZGVyX3R1cGxlKEJyaW5EZXNjICpicmRl c2MsIEJsb2NrTnVtYmVyIGJsa25vLCBTaXplICpzaXplKQogCXJldHR1cGxlID0gcGFsbG9j MChsZW4pOwogCXJldHR1cGxlLT5idF9ibGtubyA9IGJsa25vOwogCXJldHR1cGxlLT5idF9p bmZvID0gaG9mZjsKLQlyZXR0dXBsZS0+YnRfaW5mbyB8PSBCUklOX05VTExTX01BU0sgfCBC UklOX1BMQUNFSE9MREVSX01BU0s7CisJcmV0dHVwbGUtPmJ0X2luZm8gfD0gQlJJTl9OVUxM U19NQVNLIHwgQlJJTl9QTEFDRUhPTERFUl9NQVNLIHwgQlJJTl9FTVBUWV9SQU5HRV9NQVNL OwogCiAJYml0UCA9ICgoYml0czggKikgKChjaGFyICopIHJldHR1cGxlICsgU2l6ZU9mQnJp blR1cGxlKSkgLSAxOwogCWJpdG1hc2sgPSBISUdIQklUOwpAQCAtNDY2LDYgKzQ2OSw4IEBA IGJyaW5fbmV3X21lbXR1cGxlKEJyaW5EZXNjICpicmRlc2MpCiAJZHR1cC0+YnRfYWxsbnVs bHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogYnJkZXNjLT5iZF90dXBkZXNjLT5uYXR0cyk7 CiAJZHR1cC0+YnRfaGFzbnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogYnJkZXNjLT5i ZF90dXBkZXNjLT5uYXR0cyk7CiAKKwlkdHVwLT5idF9lbXB0eV9yYW5nZSA9IHRydWU7CisK IAlkdHVwLT5idF9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1v cnlDb250ZXh0LAogCQkJCQkJCQkJCQkgImJyaW4gZHR1cGxlIiwKIAkJCQkJCQkJCQkJIEFM TE9DU0VUX0RFRkFVTFRfU0laRVMpOwpAQCAtNDk5LDYgKzUwNCw4IEBAIGJyaW5fbWVtdHVw bGVfaW5pdGlhbGl6ZShCcmluTWVtVHVwbGUgKmR0dXBsZSwgQnJpbkRlc2MgKmJyZGVzYykK IAkJY3VycmRhdHVtICs9IHNpemVvZihEYXR1bSkgKiBicmRlc2MtPmJkX2luZm9baV0tPm9p X25zdG9yZWQ7CiAJfQogCisJZHR1cGxlLT5idF9lbXB0eV9yYW5nZSA9IHRydWU7CisKIAly ZXR1cm4gZHR1cGxlOwogfQogCkBAIC01MzIsNiArNTM5LDExIEBAIGJyaW5fZGVmb3JtX3R1 cGxlKEJyaW5EZXNjICpicmRlc2MsIEJyaW5UdXBsZSAqdHVwbGUsIEJyaW5NZW1UdXBsZSAq ZE1lbXR1cGxlKQogCiAJaWYgKEJyaW5UdXBsZUlzUGxhY2Vob2xkZXIodHVwbGUpKQogCQlk dHVwLT5idF9wbGFjZWhvbGRlciA9IHRydWU7CisKKwkvKiByYW5nZXMgc3RhcnQgYXMgZW1w dHksIGRlcGVuZHMgb24gdGhlIEJyaW5UdXBsZSAqLworCWlmICghQnJpblR1cGxlSXNFbXB0 eVJhbmdlKHR1cGxlKSkKKwkJZHR1cC0+YnRfZW1wdHlfcmFuZ2UgPSBmYWxzZTsKKwogCWR0 dXAtPmJ0X2Jsa25vID0gdHVwbGUtPmJ0X2Jsa25vOwogCiAJdmFsdWVzID0gZHR1cC0+YnRf dmFsdWVzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5fdHVwbGUuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmgKaW5kZXggYTljY2MzOTk1YjQuLjUy ODA4NzI3MDdhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmgKQEAgLTM2LDYgKzM2LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblZhbHVlcwogdHlwZWRlZiBzdHJ1Y3QgQnJpbk1lbVR1 cGxlCiB7CiAJYm9vbAkJYnRfcGxhY2Vob2xkZXI7IC8qIHRoaXMgaXMgYSBwbGFjZWhvbGRl ciB0dXBsZSAqLworCWJvb2wJCWJ0X2VtcHR5X3JhbmdlOwkvKiByYW5nZSByZXByZXNlbnRz IG5vIHR1cGxlcyAqLwogCUJsb2NrTnVtYmVyIGJ0X2Jsa25vOwkJLyogaGVhcCBibGtubyB0 aGF0IHRoZSB0dXBsZSBpcyBmb3IgKi8KIAlNZW1vcnlDb250ZXh0IGJ0X2NvbnRleHQ7CS8q IG1lbWN4dCBob2xkaW5nIHRoZSBidF9jb2x1bW5zIHZhbHVlcyAqLwogCS8qIG91dHB1dCBh cnJheXMgZm9yIGJyaW5fZGVmb3JtX3R1cGxlOiAqLwpAQCAtNjEsNyArNjIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCcmluVHVwbGUKIAkgKgogCSAqIDd0aCAoaGlnaCkgYml0OiBoYXMgbnVs bHMKIAkgKiA2dGggYml0OiBpcyBwbGFjZWhvbGRlciB0dXBsZQotCSAqIDV0aCBiaXQ6IHVu dXNlZAorCSAqIDV0aCBiaXQ6IHJhbmdlIGlzIGVtcHR5CiAJICogNC0wIGJpdDogb2Zmc2V0 IG9mIGRhdGEKIAkgKiAtLS0tLS0tLS0tLS0tLS0KIAkgKi8KQEAgLTc0LDEzICs3NSwxNCBA QCB0eXBlZGVmIHN0cnVjdCBCcmluVHVwbGUKICAqIGJ0X2luZm8gbWFuaXB1bGF0aW9uIG1h Y3JvcwogICovCiAjZGVmaW5lIEJSSU5fT0ZGU0VUX01BU0sJCTB4MUYKLS8qIGJpdCAweDIw IGlzIG5vdCB1c2VkIGF0IHByZXNlbnQgKi8KKyNkZWZpbmUgQlJJTl9FTVBUWV9SQU5HRV9N QVNLCTB4MjAKICNkZWZpbmUgQlJJTl9QTEFDRUhPTERFUl9NQVNLCTB4NDAKICNkZWZpbmUg QlJJTl9OVUxMU19NQVNLCQkJMHg4MAogCiAjZGVmaW5lIEJyaW5UdXBsZURhdGFPZmZzZXQo dHVwKQkoKFNpemUpICgoKEJyaW5UdXBsZSAqKSAodHVwKSktPmJ0X2luZm8gJiBCUklOX09G RlNFVF9NQVNLKSkKICNkZWZpbmUgQnJpblR1cGxlSGFzTnVsbHModHVwKQkoKCgoKEJyaW5U dXBsZSAqKSAodHVwKSktPmJ0X2luZm8gJiBCUklOX05VTExTX01BU0spKSAhPSAwKQogI2Rl ZmluZSBCcmluVHVwbGVJc1BsYWNlaG9sZGVyKHR1cCkgKCgoKChCcmluVHVwbGUgKikgKHR1 cCkpLT5idF9pbmZvICYgQlJJTl9QTEFDRUhPTERFUl9NQVNLKSkgIT0gMCkKKyNkZWZpbmUg QnJpblR1cGxlSXNFbXB0eVJhbmdlKHR1cCkgKCgoKChCcmluVHVwbGUgKikgKHR1cCkpLT5i dF9pbmZvICYgQlJJTl9FTVBUWV9SQU5HRV9NQVNLKSkgIT0gMCkKIAogCiBleHRlcm4gQnJp blR1cGxlICpicmluX2Zvcm1fdHVwbGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIg Ymxrbm8sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2JyaW4vZXhwZWN0ZWQvc3Vt bWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0IGIvc3JjL3Rlc3QvbW9k dWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0 aW9uLm91dAppbmRleCAyYTQ3NTVkMDk5OC4uNTg0YWMyNjAyZjcgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvYnJpbi9leHBlY3RlZC9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dy ZXNzLWluc2VydGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVk L3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dApAQCAtNCw3ICs0 LDcgQEAgc3RhcnRpbmcgcGVybXV0YXRpb246IHMyY2hlY2sgczFiIHMyYiBzMWkgczJzdW1t IHMxYyBzMmMgczJjaGVjawogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJyaW5fcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpyZWdjbGFz cyk7CiBpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vo b2xkZXJ8dmFsdWUgICAKIC0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYg ICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9CisgICAgICAgICAxfCAgICAg MHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0KICgxIHJv dykKIAogc3RlcCBzMWI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CkBAIC0yNiw3ICsyNiw3IEBAIHN0ZXAgczJjOiBDT01NSVQ7CiBzdGVwIHMyY2hlY2s6IFNF TEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIp LCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKIGl0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxu dWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2YWx1ZSAgICAgIAogLS0tLS0tLS0tLSstLS0t LS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0g ICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8 ezEgLi4gMX0gICAKKyAgICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAg IHxmICAgICAgICAgIHx7MSAuLiAxfSAgIAogICAgICAgICAgMnwgICAgIDF8ICAgICAxfGYg ICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDEwMDB9CiAoMiByb3dzKQogCkBA IC0zNSw3ICszNSw3IEBAIHN0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmNoZWNrIHMxYiBzMWkg czJ2YWN1dW0gczFjIHMyY2hlY2sKIHN0ZXAgczJjaGVjazogU0VMRUNUICogRlJPTSBicmlu X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4JywgMiksICdicmluaWR4Jzo6cmVn Y2xhc3MpOwogaXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhhc251bGxzfHBs YWNlaG9sZGVyfHZhbHVlICAgCiAtLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgIDF8ICAgICAwfCAgICAg MXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxfQorICAgICAgICAgMXwg ICAgIDB8ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9CiAo MSByb3cpCiAKIHN0ZXAgczFiOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOwpAQCAtNDUsNyArNDUsNyBAQCBzdGVwIHMxYzogQ09NTUlUOwogc3RlcCBzMmNoZWNr OiBTRUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgn LCAyKSwgJ2JyaW5pZHgnOjpyZWdjbGFzcyk7CiBpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18 YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8dmFsdWUgICAgICAKIC0tLS0tLS0tLS0r LS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LQotICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAgICAg ICAgfHsxIC4uIDF9ICAgCisgICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAg ICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKICAgICAgICAgIDJ8ICAgICAxfCAgICAg MXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxMDAwfQogKDIgcm93cykK IApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9icmluL3NwZWNzL3N1bW1hcml6YXRp b24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2Jy aW4vc3BlY3Mvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24uc3BlYwpp bmRleCAxOWFjMThhMmU4OC4uMThiYTkyYjdiYTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvYnJpbi9zcGVjcy9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlv bi5zcGVjCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9zcGVjcy9zdW1tYXJpemF0aW9u LWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjCkBAIC05LDYgKzksNyBAQCBzZXR1cAog ICAgICkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CiAgICAgQ1JFQVRFIElOREVYIGJyaW5pZHgg T04gYnJpbl9pc28gVVNJTkcgYnJpbiAodmFsdWUpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT0x KTsKICAgICAtLSB0aGlzIGZpbGxzIHRoZSBmaXJzdCBwYWdlCisgICAgSU5TRVJUIElOVE8g YnJpbl9pc28gVkFMVUVTIChOVUxMKTsKICAgICBETyAkJAogICAgIERFQ0xBUkUgY3VydGlk IHRpZDsKICAgICBCRUdJTgotLSAKMi40MC4xCgo= --------------7CnHeW1j4fsjWACltlBRBmo9 Content-Type: text/x-patch; charset=UTF-8; name="0002-Fix-handling-of-NULLs-in-BRIN-indexes-14-master.patch" Content-Disposition: attachment; filename*0="0002-Fix-handling-of-NULLs-in-BRIN-indexes-14-master.patch" Content-Transfer-Encoding: base64 RnJvbSBkODIwOTljZTY4ZTU4YjI4ZjVmNzMzMWYwZGNiZTAxM2RiYWM2NWIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA4IEphbiAyMDIzIDE2OjQzOjA2ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAyLzNdIEZpeCBoYW5kbGluZyBvZiBOVUxMcyBpbiBCUklOIGluZGV4ZXMK CkJSSU4gaW5kZXhlcyBkaWQgbm90IHByb3Blcmx5IGRpc3Rpbmd1aXNoIGJldHdlZW4gc3Vt bWFyaWVzIGZvciBlbXB0eQoobm8gcm93cykgYW5kIGFsbC1OVUxMIHJhbmdlcywgdHJlYXRp bmcgdGhlbSBhcyBlc3NlbnRpYWxseSB0aGUgc2FtZQp0aGluZy4gU3VtbWFyaWVzIHdlcmUg aW5pdGlhbGl6ZWQgd2l0aCBhbGxudWxscz10cnVlLCBhbmQgb3BjbGFzc2VzCnNpbXBseSBy ZXNldCBhbGxudWxscyB0byBmYWxzZSB3aGVuIHByb2Nlc3NpbmcgdGhlIGZpcnN0IG5vbi1O VUxMIHZhbHVlLgpUaGlzIGhvd2V2ZXIgcHJvZHVjZXMgaW5jb3JyZWN0IHJlc3VsdHMgaWYg dGhlIHJhbmdlIHN0YXJ0cyB3aXRoIGEgTlVMTAp2YWx1ZSAob3IgYSBzZXF1ZW5jZSBvZiBO VUxMIHZhbHVlcyksIGluIHdoaWNoIGNhc2Ugd2UgZm9yZ2V0IHRoZSByYW5nZQpjb250YWlu cyBOVUxMIHZhbHVlcyB3aGVuIGFkZGluZyB0aGUgZmlyc3Qgbm9uLU5VTEwgdmFsdWUuCgpU aGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgYWxsbnVsbHMgZmxhZyBpcyB1c2VkIGZvciB0d28g c2VwYXJhdGUKcHVycG9zZXMgLSB0byBtYXJrIGVtcHR5IHJhbmdlcyAobm90IHJlcHJlc2Vu dGluZyBhbnkgcm93cyB5ZXQpIGFuZApyYW5nZXMgY29udGFpbmluZyBvbmx5IE5VTEwgdmFs dWVzLgoKT3BjbGFzc2VzIGRvbid0IGtub3cgd2hpY2ggb2YgdGhlc2UgY2FzZXMgaXQgaXMs IGFuZCBzbyBkb24ndCBrbm93CndoZXRoZXIgdG8gc2V0IGhhc251bGxzPXRydWUuIFNldHRp bmcgdGhlIGZsYWcgaW4gYm90aCBjYXNlcyB3b3VsZCBtYWtlCml0IGNvcnJlY3QsIGJ1dCBp dCB3b3VsZCBhbHNvIG1ha2UgQlJJTiBpbmRleGVzIHVzZWxlc3MgZm9yIHF1ZXJpZXMgd2l0 aApJUyBOVUxMIGNsYXVzZXMuIEFsbCByYW5nZXMgc3RhcnQgZW1wdHkgKGFuZCB0aHVzIGFs bG51bGxzPXRydWUpLCBzbyBhbGwKcmFuZ2VzIHdvdWxkIGVuZCB1cCB3aXRoIGVpdGhlciBh bGxudWxscz10cnVlIG9yIGhhc251bGxzPXRydWUuCgpUaGUgc2V2ZXJpdHkgb2YgdGhlIGlz c3VlIGlzIHNvbWV3aGF0IHJlZHVjZWQgYnkgdGhlIGZhY3QgdGhhdCBpdCBvbmx5CmhhcHBl bnMgd2hlbiBhZGRpbmcgdmFsdWVzIHRvIGFuIGV4aXN0aW5nIHN1bW1hcnkgd2l0aCBhbGxu dWxscz10cnVlLgpUaGlzIGNhbiBoYXBwZW4gZS5nLiBmb3Igc21hbGwgdGFibGVzIChiZWNh dXNlIGEgc3VtbWFyeSBmb3IgdGhlIGZpcnN0CnJhbmdlIGV4aXN0cyBmb3IgYWxsIEJSSU4g aW5kZXhlcyksIG9yIGZvciB0YWJsZXMgd2l0aCBsYXJnZSBmcmFjdGlvbiBvZgpOVUxMIHZh bHVlcyBpbiB0aGUgaW5kZXhlZCBjb2x1bW5zLgoKQnVsayBzdW1tYXJpemF0aW9uIChlLmcu IGR1cmluZyBDUkVBVEUgSU5ERVggb3IgYXV0b21hdGljIHN1bW1hcml6YXRpb24pCnRoYXQg cHJvY2Vzc2VzIGFsbCB2YWx1ZXMgYXQgb25jZSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBp c3N1ZS4gSW4gdGhpcwpjYXNlIHRoZSBmbGFncyB3ZXJlIHVwZGF0ZWQgaW4gYSBzbGlnaHRs eSBkaWZmZXJlbnQgd2F5LCBub3QgZm9yZ2V0dGluZwp0aGUgTlVMTCB2YWx1ZXMuCgpUbyBp ZGVudGlmeSBlbXB0eSByYW5nZXMgd2UgdXNlIGEgbmV3IGZsYWcsIHN0b3JlZCBpbiBhbiB1 bnVzZWQgYml0IGluCnRoZSBCUklOIHR1cGxlIGhlYWRlciBzbyB0aGUgb24tZGlzayBmb3Jt YXQgcmVtYWlucyB0aGUgc2FtZS4gQSBtYXRjaGluZwpmbGFnIGlzIGFkZGVkIHRvIEJyaW5N ZW1UdXBsZSwgaW50byBhIDNCIGdhcCBhZnRlciBidF9wbGFjZWhvbGRlci4KVGhhdCBtZWFu cyB0aGVyZSdzIG5vIHJpc2sgb2YgQUJJIGJyZWFrYWdlLCBhbHRob3VnaCB3ZSBkb24ndCBh Y3R1YWxseQpwYXNzIHRoZSBCcmluTWVtVHVwbGUgdG8gYW55IHB1YmxpYyBBUEkuCgpXZSBj b3VsZCBhbHNvIHNraXAgc3RvcmluZyBpbmRleCB0dXBsZXMgZm9yIGVtcHR5IHN1bW1hcmll cywgYnV0IHRoZW4Kd2UnZCBoYXZlIHRvIGFsd2F5cyBwcm9jZXNzIHN1Y2ggcmFuZ2VzIC0g ZXZlbiBpZiB0aGVyZSBhcmUgbm8gcm93cyBpbgpsYXJnZSBwYXJ0cyBvZiB0aGUgdGFibGUg KGUuZy4gYWZ0ZXIgYSBidWxrIERFTEVURSksIGl0IHdvdWxkIHN0aWxsCnJlcXVpcmUgcmVh ZGluZyB0aGUgcGFnZXMgZXRjLiBTbyB3ZSBzdG9yZSB0aGVtLCBidXQgaWdub3JlIHRoZW0g d2hlbgpidWlsZGluZyB0aGUgYml0bWFwLgoKQmFja3BhdGNoIHRvIDExLiBUaGUgaXNzdWUg ZXhpc3RzIHNpbmNlIEJSSU4gaW5kZXhlcyB3ZXJlIGludHJvZHVjZWQgaW4KOS41LCBidXQg b2xkZXIgcmVsZWFzZXMgYXJlIGFscmVhZHkgRU9MLgoKQmFja3BhdGNoLXRocm91Z2g6IDEx ClJldmlld2VkLWJ5OiBKdXN0aW4gUHJ5emJ5LCBNYXR0aGlhcyB2YW4gZGUgTWVlbnQsIEFs dmFybyBIZXJyZXJhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNDAyNDMwZTQt N2Q5ZC02Y2YxLTA5ZWYtNDY0ZDgwYWZmZjNiQGVudGVycHJpc2VkYi5jb20KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAxMTMgKysrKysr KysrKysrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgICAg ICAgICAgfCAgMTQgKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oICAgICAg ICAgICAgICAgfCAgIDYgKy0KIC4uLnN1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5z ZXJ0aW9uLm91dCB8ICAgOCArLQogLi4udW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWlu c2VydGlvbi5zcGVjIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMTM0IGluc2VydGlvbnMo KyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IGExNTU1 MjViN2RmLi40NmFhMWYxYmM4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtNTky LDYgKzU5MiwxNyBAQCBicmluZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElEQml0 bWFwICp0Ym0pCiAKIAkJCQkJYnZhbCA9ICZkdHVwLT5idF9jb2x1bW5zW2F0dG5vIC0gMV07 CiAKKwkJCQkJLyoKKwkJCQkJICogSWYgdGhlIEJSSU4gdHVwbGUgaW5kaWNhdGVzIHRoYXQg dGhpcyByYW5nZSBpcyBlbXB0eSwKKwkJCQkJICogd2UgY2FuIHNraXAgaXQ6IHRoZXJlJ3Mg bm90aGluZyB0byBtYXRjaC4gIFdlIGRvbid0CisJCQkJCSAqIG5lZWQgdG8gZXhhbWluZSB0 aGUgbmV4dCBjb2x1bW5zLgorCQkJCQkgKi8KKwkJCQkJaWYgKGR0dXAtPmJ0X2VtcHR5X3Jh bmdlKQorCQkJCQl7CisJCQkJCQlhZGRyYW5nZSA9IGZhbHNlOworCQkJCQkJYnJlYWs7CisJ CQkJCX0KKwogCQkJCQkvKgogCQkJCQkgKiBGaXJzdCBjaGVjayBpZiB0aGVyZSBhcmUgYW55 IElTIFtOT1RdIE5VTEwgc2NhbiBrZXlzLAogCQkJCQkgKiBhbmQgaWYgd2UncmUgdmlvbGF0 aW5nIHRoZW0uIEluIHRoYXQgY2FzZSB3ZSBjYW4KQEAgLTE2MDYsNiArMTYxNyw2NCBAQCB1 bmlvbl90dXBsZXMoQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsIEJyaW5UdXBs ZSAqYikKIAlkYiA9IGJyaW5fZGVmb3JtX3R1cGxlKGJkZXNjLCBiLCBOVUxMKTsKIAlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAorCS8qCisJICogQ2hlY2sgaWYgdGhlIHJh bmdlcyBhcmUgZW1wdHkuCisJICoKKwkgKiBJZiBhdCBsZWFzdCBvbmUgb2YgdGhlbSBpcyBl bXB0eSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIHBlci1rZXkgdW5pb24KKwkgKiBmdW5jdGlv bnMgYXQgYWxsLiBJZiAiYiIgaXMgZW1wdHksIHdlIGp1c3QgdXNlICJhIiBhcyB0aGUgcmVz dWx0IChpdAorCSAqIG1pZ2h0IGJlIGVtcHR5IGZpbmUsIGJ1dCB0aGF0J3MgZmluZSkuIElm ICJhIiBpcyBlbXB0eSBidXQgImIiIGlzIG5vdCwKKwkgKiB3ZSB1c2UgImIiIGFzIHRoZSBy ZXN1bHQgKGJ1dCB3ZSBoYXZlIHRvIGNvcHkgdGhlIGRhdGEgaW50byAiYSIgZmlyc3QpLgor CSAqCisJICogT25seSB3aGVuIGJvdGggcmFuZ2VzIGFyZSBub24tZW1wdHksIHdlIGFjdHVh bGx5IGRvIHRoZSBwZXIta2V5IG1lcmdlLgorCSAqLworCisJLyogSWYgImIiIGlzIGVtcHR5 IC0gaWdub3JlIGl0IGFuZCBqdXN0IHVzZSAiYSIgKGV2ZW4gaWYgaXQncyBlbXB0eSBldGMu KS4gKi8KKwlpZiAoZGItPmJ0X2VtcHR5X3JhbmdlKQorCXsKKwkJLyogc2tpcCB0aGUgcGVy LWtleSBtZXJnZSAqLworCQlNZW1vcnlDb250ZXh0RGVsZXRlKGN4dCk7CisJCXJldHVybjsK Kwl9CisKKwkvKgorCSAqIE5vdyB3ZSBrbm93ICJiIiBpcyBub3QgZW1wdHkuIElmICJhIiBp cyBlbXB0eSwgdGhlbiAiYiIgaXMgdGhlIHJlc3VsdC4KKwkgKiBCdXQgd2UgbmVlZCB0byBj b3B5IHRoZSBkYXRhIGZyb20gImIiIHRvICJhIiBmaXJzdCwgYmVjYXVzZSB0aGF0J3MgaG93 CisJICogd2UgcGFzcyByZXN1bHQgb3V0LgorCSAqCisJICogV2UgaGF2ZSB0byBjb3B5IGFs bCB0aGUgZ2xvYmFsL3Blci1rZXkgZmxhZ3MgZXRjLiB0b28uCisJICovCisJaWYgKGEtPmJ0 X2VtcHR5X3JhbmdlKQorCXsKKwkJZm9yIChrZXlubyA9IDA7IGtleW5vIDwgYmRlc2MtPmJk X3R1cGRlc2MtPm5hdHRzOyBrZXlubysrKQorCQl7CisJCQlpbnQJCQlpOworCQkJQnJpblZh bHVlcyAqY29sX2EgPSAmYS0+YnRfY29sdW1uc1trZXlub107CisJCQlCcmluVmFsdWVzICpj b2xfYiA9ICZkYi0+YnRfY29sdW1uc1trZXlub107CisJCQlCcmluT3BjSW5mbyAqb3BjaW5m byA9IGJkZXNjLT5iZF9pbmZvW2tleW5vXTsKKworCQkJY29sX2EtPmJ2X2FsbG51bGxzID0g Y29sX2ItPmJ2X2FsbG51bGxzOworCQkJY29sX2EtPmJ2X2hhc251bGxzID0gY29sX2ItPmJ2 X2hhc251bGxzOworCisJCQkvKiBJZiAiYiIgaGFzIG5vIGRhdGEsIHdlJ3JlIGRvbmUuICov CisJCQlpZiAoY29sX2ItPmJ2X2FsbG51bGxzKQorCQkJCWNvbnRpbnVlOworCisJCQlmb3Ig KGkgPSAwOyBpIDwgb3BjaW5mby0+b2lfbnN0b3JlZDsgaSsrKQorCQkJCWNvbF9hLT5idl92 YWx1ZXNbaV0gPQorCQkJCQlkYXR1bUNvcHkoY29sX2ItPmJ2X3ZhbHVlc1tpXSwKKwkJCQkJ CQkgIG9wY2luZm8tPm9pX3R5cGNhY2hlW2ldLT50eXBieXZhbCwKKwkJCQkJCQkgIG9wY2lu Zm8tPm9pX3R5cGNhY2hlW2ldLT50eXBsZW4pOworCQl9CisKKwkJLyogImEiIHN0YXJ0ZWQg ZW1wdHksIGJ1dCAiYiIgd2FzIG5vdCBlbXB0eSwgc28gcmVtZW1iZXIgdGhhdCAqLworCQlh LT5idF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCisJCS8qIHNraXAgdGhlIHBlci1rZXkgbWVy Z2UgKi8KKwkJTWVtb3J5Q29udGV4dERlbGV0ZShjeHQpOworCQlyZXR1cm47CisJfQorCisJ LyogTm93IHdlIGtub3cgbmVpdGhlciByYW5nZSBpcyBlbXB0eS4gKi8KIAlmb3IgKGtleW5v ID0gMDsga2V5bm8gPCBiZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHM7IGtleW5vKyspCiAJewog CQlGbWdySW5mbyAgICp1bmlvbkZuOwpAQCAtMTcxMSw3ICsxNzgwLDkgQEAgYWRkX3ZhbHVl c190b19yYW5nZShSZWxhdGlvbiBpZHhSZWwsIEJyaW5EZXNjICpiZGVzYywgQnJpbk1lbVR1 cGxlICpkdHVwLAogCQkJCQlEYXR1bSAqdmFsdWVzLCBib29sICpudWxscykKIHsKIAlpbnQJ CQlrZXlubzsKLQlib29sCQltb2RpZmllZCA9IGZhbHNlOworCisJLyogSWYgdGhlIHJhbmdl IHN0YXJ0cyBlbXB0eSwgd2UncmUgY2VydGFpbmx5IGdvaW5nIHRvIG1vZGlmeSBpdC4gKi8K Kwlib29sCQltb2RpZmllZCA9IGR0dXAtPmJ0X2VtcHR5X3JhbmdlOwogCiAJLyoKIAkgKiBD b21wYXJlIHRoZSBrZXkgdmFsdWVzIG9mIHRoZSBuZXcgdHVwbGUgdG8gdGhlIHN0b3JlZCBp bmRleCB2YWx1ZXM7IG91cgpAQCAtMTcyNSw5ICsxNzk2LDI0IEBAIGFkZF92YWx1ZXNfdG9f cmFuZ2UoUmVsYXRpb24gaWR4UmVsLCBCcmluRGVzYyAqYmRlc2MsIEJyaW5NZW1UdXBsZSAq ZHR1cCwKIAkJRGF0dW0JCXJlc3VsdDsKIAkJQnJpblZhbHVlcyAqYnZhbDsKIAkJRm1ncklu Zm8gICAqYWRkVmFsdWU7CisJCWJvb2wJCWhhc19udWxsczsKIAogCQlidmFsID0gJmR0dXAt PmJ0X2NvbHVtbnNba2V5bm9dOwogCisJCS8qCisJCSAqIERvZXMgdGhlIHJhbmdlIGhhdmUg YWN0dWFsIE5VTEwgdmFsdWVzPyBFaXRoZXIgb2YgdGhlIGZsYWdzIGNhbgorCQkgKiBiZSBz ZXQsIGJ1dCB3ZSBpZ25vcmUgdGhlIHN0YXRlIGJlZm9yZSBhZGRpbmcgZmlyc3Qgcm93Lgor CQkgKgorCQkgKiBXZSBoYXZlIHRvIHJlbWVtYmVyIHRoaXMsIGJlY2F1c2Ugd2UnbGwgbW9k aWZ5IHRoZSBmbGFncyBhbmQgd2UKKwkJICogbmVlZCB0byBrbm93IGlmIHRoZSByYW5nZSBz dGFydGVkIGFzIGVtcHR5LgorCQkgKi8KKwkJaGFzX251bGxzID0gKCghZHR1cC0+YnRfZW1w dHlfcmFuZ2UpICYmCisJCQkJCSAoYnZhbC0+YnZfaGFzbnVsbHMgfHwgYnZhbC0+YnZfYWxs bnVsbHMpKTsKKworCQkvKgorCQkgKiBJZiB0aGUgdmFsdWUgd2UncmUgYWRkaW5nIGlzIE5V TEwsIGhhbmRsZSBpdCBsb2NhbGx5LiBPdGhlcndpc2UKKwkJICogY2FsbCB0aGUgQlJJTl9Q Uk9DTlVNX0FERFZBTFVFIHByb2NlZHVyZS4KKwkJICovCiAJCWlmIChiZGVzYy0+YmRfaW5m b1trZXlub10tPm9pX3JlZ3VsYXJfbnVsbHMgJiYgbnVsbHNba2V5bm9dKQogCQl7CiAJCQkv KgpAQCAtMTc1Myw4ICsxODM5LDMzIEBAIGFkZF92YWx1ZXNfdG9fcmFuZ2UoUmVsYXRpb24g aWR4UmVsLCBCcmluRGVzYyAqYmRlc2MsIEJyaW5NZW1UdXBsZSAqZHR1cCwKIAkJCQkJCQkJ ICAgbnVsbHNba2V5bm9dKTsKIAkJLyogaWYgdGhhdCByZXR1cm5lZCB0cnVlLCB3ZSBuZWVk IHRvIGluc2VydCB0aGUgdXBkYXRlZCB0dXBsZSAqLwogCQltb2RpZmllZCB8PSBEYXR1bUdl dEJvb2wocmVzdWx0KTsKKworCQkvKgorCQkgKiBJZiB0aGUgcmFuZ2Ugd2FzIGhhZCBhY3R1 YWwgTlVMTCB2YWx1ZXMgKGkuZS4gZGlkIG5vdCBzdGFydCBlbXB0eSksCisJCSAqIG1ha2Ug c3VyZSB3ZSBkb24ndCBmb3JnZXQgYWJvdXQgdGhlIE5VTEwgdmFsdWVzLiBFaXRoZXIgdGhl IGFsbG51bGxzCisJCSAqIGZsYWcgaXMgc3RpbGwgc2V0IHRvIHRydWUsIG9yIChpZiB0aGUg b3BjbGFzcyBjbGVhcmVkIGl0KSB3ZSBuZWVkIHRvCisJCSAqIHNldCBoYXNudWxscz10cnVl LgorCQkgKgorCQkgKiBYWFggVGhpcyBjYW4gb25seSBoYXBwZW4gd2hlbiB0aGUgb3BjbGFz cyBtb2RpZmllZCB0aGUgdHVwbGUsIHNvIHRoZQorCQkgKiBtb2RpZmllZCBmbGFnIHNob3Vs ZCBiZSBzZXQuCisJCSAqLworCQlpZiAoaGFzX251bGxzICYmICEoYnZhbC0+YnZfaGFzbnVs bHMgfHwgYnZhbC0+YnZfYWxsbnVsbHMpKQorCQl7CisJCQlBc3NlcnQobW9kaWZpZWQpOwor CQkJYnZhbC0+YnZfaGFzbnVsbHMgPSB0cnVlOworCQl9CiAJfQogCisJLyoKKwkgKiBBZnRl ciB1cGRhdGluZyBzdW1tYXJpZXMgZm9yIGFsbCB0aGUga2V5cywgbWFyayBpdCBhcyBub3Qg ZW1wdHkuCisJICoKKwkgKiBJZiB3ZSdyZSBhY3R1YWxseSBjaGFuZ2luZyB0aGUgZmxhZyB2 YWx1ZSAoaS5lLiB0dXBsZSBzdGFydGVkIGFzIGVtcHR5KSwKKwkgKiB3ZSBzaG91bGQgaGF2 ZSBtb2RpZmllZCB0aGUgdHVwbGUuIFNvIHdlIHNob3VsZCBub3Qgc2VlIGVtcHR5IHJhbmdl IHRoYXQKKwkgKiB3YXMgbm90IG1vZGlmaWVkLgorCSAqLworCUFzc2VydCghZHR1cC0+YnRf ZW1wdHlfcmFuZ2UgfHwgbW9kaWZpZWQpOworCWR0dXAtPmJ0X2VtcHR5X3JhbmdlID0gZmFs c2U7CisKIAlyZXR1cm4gbW9kaWZpZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fdHVwbGUuYwppbmRleCA4NGI3OWRiZmMwZC4uMjNkZmVhYjdkZTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKQEAgLTM3Miw2ICszNzIsOSBAQCBicmluX2Zv cm1fdHVwbGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sIEJyaW5NZW1U dXBsZSAqdHVwbGUsCiAJaWYgKHR1cGxlLT5idF9wbGFjZWhvbGRlcikKIAkJcmV0dHVwbGUt PmJ0X2luZm8gfD0gQlJJTl9QTEFDRUhPTERFUl9NQVNLOwogCisJaWYgKHR1cGxlLT5idF9l bXB0eV9yYW5nZSkKKwkJcmV0dHVwbGUtPmJ0X2luZm8gfD0gQlJJTl9FTVBUWV9SQU5HRV9N QVNLOworCiAJKnNpemUgPSBsZW47CiAJcmV0dXJuIHJldHR1cGxlOwogfQpAQCAtMzk5LDcg KzQwMiw3IEBAIGJyaW5fZm9ybV9wbGFjZWhvbGRlcl90dXBsZShCcmluRGVzYyAqYnJkZXNj LCBCbG9ja051bWJlciBibGtubywgU2l6ZSAqc2l6ZSkKIAlyZXR0dXBsZSA9IHBhbGxvYzAo bGVuKTsKIAlyZXR0dXBsZS0+YnRfYmxrbm8gPSBibGtubzsKIAlyZXR0dXBsZS0+YnRfaW5m byA9IGhvZmY7Ci0JcmV0dHVwbGUtPmJ0X2luZm8gfD0gQlJJTl9OVUxMU19NQVNLIHwgQlJJ Tl9QTEFDRUhPTERFUl9NQVNLOworCXJldHR1cGxlLT5idF9pbmZvIHw9IEJSSU5fTlVMTFNf TUFTSyB8IEJSSU5fUExBQ0VIT0xERVJfTUFTSyB8IEJSSU5fRU1QVFlfUkFOR0VfTUFTSzsK IAogCWJpdFAgPSAoKGJpdHM4ICopICgoY2hhciAqKSByZXR0dXBsZSArIFNpemVPZkJyaW5U dXBsZSkpIC0gMTsKIAliaXRtYXNrID0gSElHSEJJVDsKQEAgLTQ4OSw2ICs0OTIsOCBAQCBi cmluX25ld19tZW10dXBsZShCcmluRGVzYyAqYnJkZXNjKQogCWR0dXAtPmJ0X2FsbG51bGxz ID0gcGFsbG9jKHNpemVvZihib29sKSAqIGJyZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHMpOwog CWR0dXAtPmJ0X2hhc251bGxzID0gcGFsbG9jKHNpemVvZihib29sKSAqIGJyZGVzYy0+YmRf dHVwZGVzYy0+bmF0dHMpOwogCisJZHR1cC0+YnRfZW1wdHlfcmFuZ2UgPSB0cnVlOworCiAJ ZHR1cC0+YnRfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5 Q29udGV4dCwKIAkJCQkJCQkJCQkJICJicmluIGR0dXBsZSIsCiAJCQkJCQkJCQkJCSBBTExP Q1NFVF9ERUZBVUxUX1NJWkVTKTsKQEAgLTUyNyw2ICs1MzIsOCBAQCBicmluX21lbXR1cGxl X2luaXRpYWxpemUoQnJpbk1lbVR1cGxlICpkdHVwbGUsIEJyaW5EZXNjICpicmRlc2MpCiAJ CWN1cnJkYXR1bSArPSBzaXplb2YoRGF0dW0pICogYnJkZXNjLT5iZF9pbmZvW2ldLT5vaV9u c3RvcmVkOwogCX0KIAorCWR0dXBsZS0+YnRfZW1wdHlfcmFuZ2UgPSB0cnVlOworCiAJcmV0 dXJuIGR0dXBsZTsKIH0KIApAQCAtNTYwLDYgKzU2NywxMSBAQCBicmluX2RlZm9ybV90dXBs ZShCcmluRGVzYyAqYnJkZXNjLCBCcmluVHVwbGUgKnR1cGxlLCBCcmluTWVtVHVwbGUgKmRN ZW10dXBsZSkKIAogCWlmIChCcmluVHVwbGVJc1BsYWNlaG9sZGVyKHR1cGxlKSkKIAkJZHR1 cC0+YnRfcGxhY2Vob2xkZXIgPSB0cnVlOworCisJLyogcmFuZ2VzIHN0YXJ0IGFzIGVtcHR5 LCBkZXBlbmRzIG9uIHRoZSBCcmluVHVwbGUgKi8KKwlpZiAoIUJyaW5UdXBsZUlzRW1wdHlS YW5nZSh0dXBsZSkpCisJCWR0dXAtPmJ0X2VtcHR5X3JhbmdlID0gZmFsc2U7CisKIAlkdHVw LT5idF9ibGtubyA9IHR1cGxlLT5idF9ibGtubzsKIAogCXZhbHVlcyA9IGR0dXAtPmJ0X3Zh bHVlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oCmluZGV4IDczMmY5MWVkZjExLi5jNTY3 NDdhY2E0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5fdHVwbGUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oCkBAIC00NCw2ICs0NCw3IEBA IHR5cGVkZWYgc3RydWN0IEJyaW5WYWx1ZXMKIHR5cGVkZWYgc3RydWN0IEJyaW5NZW1UdXBs ZQogewogCWJvb2wJCWJ0X3BsYWNlaG9sZGVyOyAvKiB0aGlzIGlzIGEgcGxhY2Vob2xkZXIg dHVwbGUgKi8KKwlib29sCQlidF9lbXB0eV9yYW5nZTsJLyogcmFuZ2UgcmVwcmVzZW50cyBu byB0dXBsZXMgKi8KIAlCbG9ja051bWJlciBidF9ibGtubzsJCS8qIGhlYXAgYmxrbm8gdGhh dCB0aGUgdHVwbGUgaXMgZm9yICovCiAJTWVtb3J5Q29udGV4dCBidF9jb250ZXh0OwkvKiBt ZW1jeHQgaG9sZGluZyB0aGUgYnRfY29sdW1ucyB2YWx1ZXMgKi8KIAkvKiBvdXRwdXQgYXJy YXlzIGZvciBicmluX2RlZm9ybV90dXBsZTogKi8KQEAgLTY5LDcgKzcwLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQnJpblR1cGxlCiAJICoKIAkgKiA3dGggKGhpZ2gpIGJpdDogaGFzIG51bGxz CiAJICogNnRoIGJpdDogaXMgcGxhY2Vob2xkZXIgdHVwbGUKLQkgKiA1dGggYml0OiB1bnVz ZWQKKwkgKiA1dGggYml0OiByYW5nZSBpcyBlbXB0eQogCSAqIDQtMCBiaXQ6IG9mZnNldCBv ZiBkYXRhCiAJICogLS0tLS0tLS0tLS0tLS0tCiAJICovCkBAIC04MiwxMyArODMsMTQgQEAg dHlwZWRlZiBzdHJ1Y3QgQnJpblR1cGxlCiAgKiBidF9pbmZvIG1hbmlwdWxhdGlvbiBtYWNy b3MKICAqLwogI2RlZmluZSBCUklOX09GRlNFVF9NQVNLCQkweDFGCi0vKiBiaXQgMHgyMCBp cyBub3QgdXNlZCBhdCBwcmVzZW50ICovCisjZGVmaW5lIEJSSU5fRU1QVFlfUkFOR0VfTUFT SwkweDIwCiAjZGVmaW5lIEJSSU5fUExBQ0VIT0xERVJfTUFTSwkweDQwCiAjZGVmaW5lIEJS SU5fTlVMTFNfTUFTSwkJCTB4ODAKIAogI2RlZmluZSBCcmluVHVwbGVEYXRhT2Zmc2V0KHR1 cCkJKChTaXplKSAoKChCcmluVHVwbGUgKikgKHR1cCkpLT5idF9pbmZvICYgQlJJTl9PRkZT RVRfTUFTSykpCiAjZGVmaW5lIEJyaW5UdXBsZUhhc051bGxzKHR1cCkJKCgoKChCcmluVHVw bGUgKikgKHR1cCkpLT5idF9pbmZvICYgQlJJTl9OVUxMU19NQVNLKSkgIT0gMCkKICNkZWZp bmUgQnJpblR1cGxlSXNQbGFjZWhvbGRlcih0dXApICgoKCgoQnJpblR1cGxlICopICh0dXAp KS0+YnRfaW5mbyAmIEJSSU5fUExBQ0VIT0xERVJfTUFTSykpICE9IDApCisjZGVmaW5lIEJy aW5UdXBsZUlzRW1wdHlSYW5nZSh0dXApICgoKCgoQnJpblR1cGxlICopICh0dXApKS0+YnRf aW5mbyAmIEJSSU5fRU1QVFlfUkFOR0VfTUFTSykpICE9IDApCiAKIAogZXh0ZXJuIEJyaW5U dXBsZSAqYnJpbl9mb3JtX3R1cGxlKEJyaW5EZXNjICpicmRlc2MsIEJsb2NrTnVtYmVyIGJs a25vLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1h cml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dCBiL3NyYy90ZXN0L21vZHVs ZXMvYnJpbi9leHBlY3RlZC9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlv bi5vdXQKaW5kZXggMmE0NzU1ZDA5OTguLjU4NGFjMjYwMmY3IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVz cy1pbnNlcnRpb24ub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9leHBlY3RlZC9z dW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQKQEAgLTQsNyArNCw3 IEBAIHN0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmNoZWNrIHMxYiBzMmIgczFpIHMyc3VtbSBz MWMgczJjIHMyY2hlY2sKIHN0ZXAgczJjaGVjazogU0VMRUNUICogRlJPTSBicmluX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4JywgMiksICdicmluaWR4Jzo6cmVnY2xhc3Mp OwogaXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9s ZGVyfHZhbHVlICAgCiAtLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAg ICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxfQorICAgICAgICAgMXwgICAgIDB8 ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9CiAoMSByb3cp CiAKIHN0ZXAgczFiOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwpA QCAtMjYsNyArMjYsNyBAQCBzdGVwIHMyYzogQ09NTUlUOwogc3RlcCBzMmNoZWNrOiBTRUxF Q1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwg J2JyaW5pZHgnOjpyZWdjbGFzcyk7CiBpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVs bHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8dmFsdWUgICAgICAKIC0tLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQotICAg ICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsx IC4uIDF9ICAgCisgICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8 ZiAgICAgICAgICB8ezEgLi4gMX0gICAKICAgICAgICAgIDJ8ICAgICAxfCAgICAgMXxmICAg ICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxMDAwfQogKDIgcm93cykKIApAQCAt MzUsNyArMzUsNyBAQCBzdGFydGluZyBwZXJtdXRhdGlvbjogczJjaGVjayBzMWIgczFpIHMy dmFjdXVtIHMxYyBzMmNoZWNrCiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2Ns YXNzKTsKIGl0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFj ZWhvbGRlcnx2YWx1ZSAgIAogLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8 ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0KKyAgICAgICAgIDF8ICAg ICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxfQogKDEg cm93KQogCiBzdGVwIHMxYjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVB RDsKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RlcCBzMWM6IENPTU1JVDsKIHN0ZXAgczJjaGVjazog U0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4Jywg MiksICdicmluaWR4Jzo6cmVnY2xhc3MpOwogaXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFs bG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgICAgCiAtLS0tLS0tLS0tKy0t LS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K LSAgICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAg IHx7MSAuLiAxfSAgIAorICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfHQgICAg ICAgfGYgICAgICAgICAgfHsxIC4uIDF9ICAgCiAgICAgICAgICAyfCAgICAgMXwgICAgIDF8 ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMTAwMH0KICgyIHJvd3MpCiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9zcGVjcy9zdW1tYXJpemF0aW9u LWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9icmlu L3NwZWNzL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMKaW5k ZXggMTlhYzE4YTJlODguLjE4YmE5MmI3YmExIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2JyaW4vc3BlY3Mvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24u c3BlYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2JyaW4vc3BlY3Mvc3VtbWFyaXphdGlvbi1h bmQtaW5wcm9ncmVzcy1pbnNlcnRpb24uc3BlYwpAQCAtOSw2ICs5LDcgQEAgc2V0dXAKICAg ICApIFdJVEggKGZpbGxmYWN0b3I9MTApOwogICAgIENSRUFURSBJTkRFWCBicmluaWR4IE9O IGJyaW5faXNvIFVTSU5HIGJyaW4gKHZhbHVlKSBXSVRIIChwYWdlc19wZXJfcmFuZ2U9MSk7 CiAgICAgLS0gdGhpcyBmaWxscyB0aGUgZmlyc3QgcGFnZQorICAgIElOU0VSVCBJTlRPIGJy aW5faXNvIFZBTFVFUyAoTlVMTCk7CiAgICAgRE8gJCQKICAgICBERUNMQVJFIGN1cnRpZCB0 aWQ7CiAgICAgQkVHSU4KLS0gCjIuNDAuMQoK --------------7CnHeW1j4fsjWACltlBRBmo9 Content-Type: text/x-patch; charset=UTF-8; name="0003-Show-empty-ranges-in-brin_page_items-14-master.patch" Content-Disposition: attachment; filename*0="0003-Show-empty-ranges-in-brin_page_items-14-master.patch" Content-Transfer-Encoding: base64 RnJvbSA3MzY4MTE4NjU0MzVmZWFmOThiMmM3ZDYwZDgzZmExMTNmZjJhYTY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyNyBNYXIgMjAyMyAyMjo0NzoxMiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMy8zXSBTaG93IGVtcHR5IHJhbmdlcyBpbiBicmluX3BhZ2VfaXRlbXMK ClNob3cgd2hpY2ggQlJJTiByYW5nZXMgYXJlIGVtcHR5IChubyByb3dzKSwgYXMgaW5kaWNh dGVkIGJ5IHRoZSBuZXdseQppbnRyb2R1Y2VkIGZsYWcuCi0tLQogY29udHJpYi9wYWdlaW5z cGVjdC9icmluZnVuY3MuYyAgICAgICAgICAgICAgIHwgMTAgKysrKy0tLQogY29udHJpYi9w YWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dCAgICAgICAgIHwgIDYgKystLQogLi4uL3Bh Z2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjExLS0xLjEyLnNxbCAgIHwgMTcgKysrKysrKysr KysKIGRvYy9zcmMvc2dtbC9wYWdlaW5zcGVjdC5zZ21sICAgICAgICAgICAgICAgICB8IDE2 ICsrKysrLS0tLS0tCiAuLi5zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlv bi5vdXQgfCAyOCArKysrKysrKystLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDQ4IGlu c2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFn ZWluc3BlY3QvYnJpbmZ1bmNzLmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5jcy5j CmluZGV4IDAwMGRjZDhmNWQ4Li5hNzgxZjI2NTUxNCAxMDA2NDQKLS0tIGEvY29udHJpYi9w YWdlaW5zcGVjdC9icmluZnVuY3MuYworKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5m dW5jcy5jCkBAIC0yMDEsOCArMjAxLDggQEAgYnJpbl9wYWdlX2l0ZW1zKFBHX0ZVTkNUSU9O X0FSR1MpCiAJZHR1cCA9IE5VTEw7CiAJZm9yICg7OykKIAl7Ci0JCURhdHVtCQl2YWx1ZXNb N107Ci0JCWJvb2wJCW51bGxzWzddID0gezB9OworCQlEYXR1bQkJdmFsdWVzWzhdOworCQli b29sCQludWxsc1s4XSA9IHswfTsKIAogCQkvKgogCQkgKiBUaGlzIGxvb3AgaXMgY2FsbGVk IG9uY2UgZm9yIGV2ZXJ5IGF0dHJpYnV0ZSBvZiBldmVyeSB0dXBsZSBpbiB0aGUKQEAgLTIz OSw2ICsyMzksNyBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCW51 bGxzWzRdID0gdHJ1ZTsKIAkJCW51bGxzWzVdID0gdHJ1ZTsKIAkJCW51bGxzWzZdID0gdHJ1 ZTsKKwkJCW51bGxzWzddID0gdHJ1ZTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTI2MSw2ICsy NjIsNyBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCXZhbHVlc1sz XSA9IEJvb2xHZXREYXR1bShkdHVwLT5idF9jb2x1bW5zW2F0dF0uYnZfYWxsbnVsbHMpOwog CQkJdmFsdWVzWzRdID0gQm9vbEdldERhdHVtKGR0dXAtPmJ0X2NvbHVtbnNbYXR0XS5idl9o YXNudWxscyk7CiAJCQl2YWx1ZXNbNV0gPSBCb29sR2V0RGF0dW0oZHR1cC0+YnRfcGxhY2Vo b2xkZXIpOworCQkJdmFsdWVzWzZdID0gQm9vbEdldERhdHVtKGR0dXAtPmJ0X2VtcHR5X3Jh bmdlKTsKIAkJCWlmICghZHR1cC0+YnRfY29sdW1uc1thdHRdLmJ2X2FsbG51bGxzKQogCQkJ ewogCQkJCUJyaW5WYWx1ZXMgKmJ2YWx1ZXMgPSAmZHR1cC0+YnRfY29sdW1uc1thdHRdOwpA QCAtMjg2LDEyICsyODgsMTIgQEAgYnJpbl9wYWdlX2l0ZW1zKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJfQogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzLCAnfScpOwogCi0JCQkJdmFs dWVzWzZdID0gQ1N0cmluZ0dldFRleHREYXR1bShzLmRhdGEpOworCQkJCXZhbHVlc1s3XSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0ocy5kYXRhKTsKIAkJCQlwZnJlZShzLmRhdGEpOwogCQkJ fQogCQkJZWxzZQogCQkJewotCQkJCW51bGxzWzZdID0gdHJ1ZTsKKwkJCQludWxsc1s3XSA9 IHRydWU7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9l eHBlY3RlZC9icmluLm91dCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbi5v dXQKaW5kZXggZTEyZmJlYjQ3NzQuLjA5OGRkYzIwMmY0IDEwMDY0NAotLS0gYS9jb250cmli L3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2JyaW4ub3V0CisrKyBiL2NvbnRyaWIvcGFnZWluc3Bl Y3QvZXhwZWN0ZWQvYnJpbi5vdXQKQEAgLTQzLDkgKzQzLDkgQEAgU0VMRUNUICogRlJPTSBi cmluX3Jldm1hcF9kYXRhKGdldF9yYXdfcGFnZSgndGVzdDFfYV9pZHgnLCAxKSkgTElNSVQg NTsKIAogU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0ZXN0 MV9hX2lkeCcsIDIpLCAndGVzdDFfYV9pZHgnKQogICAgIE9SREVSIEJZIGJsa251bSwgYXR0 bnVtIExJTUlUIDU7Ci0gaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxz IHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8ICB2YWx1ZSAgIAotLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSAgICAgICAgICAxIHwgICAgICAwIHwgICAgICAxIHwgZiAgICAgICAgfCBm ICAgICAgICB8IGYgICAgICAgICAgIHwgezEgLi4gMX0KKyBpdGVtb2Zmc2V0IHwgYmxrbnVt IHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkg fCAgdmFsdWUgICAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAg ICAxIHwgICAgICAwIHwgICAgICAxIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAg ICAgIHwgZiAgICAgfCB7MSAuLiAxfQogKDEgcm93KQogCiAtLSBNYXNrIERFVEFJTCBtZXNz YWdlcyBhcyB0aGVzZSBhcmUgbm90IHBvcnRhYmxlIGFjcm9zcyBhcmNoaXRlY3R1cmVzLgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC0tMS4xMS0tMS4x Mi5zcWwgYi9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjExLS0xLjEyLnNx bAppbmRleCA3MGMzYWJjY2Y1Ny4uYTIwZDY3YTllODIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEuMTEtLTEuMTIuc3FsCisrKyBiL2NvbnRyaWIv cGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEuMTEtLTEuMTIuc3FsCkBAIC0yMSwzICsyMSwy MCBAQCBDUkVBVEUgRlVOQ1RJT04gYnRfbXVsdGlfcGFnZV9zdGF0cyhJTiByZWxuYW1lIHRl eHQsIElOIGJsa25vIGludDgsIElOIGJsa19jb3VudAogUkVUVVJOUyBTRVRPRiByZWNvcmQK IEFTICdNT0RVTEVfUEFUSE5BTUUnLCAnYnRfbXVsdGlfcGFnZV9zdGF0cycKIExBTkdVQUdF IEMgU1RSSUNUIFBBUkFMTEVMIFJFU1RSSUNURUQ7CisKKy0tCistLSBhZGQgaW5mb3JtYXRp b24gYWJvdXQgQlJJTiBlbXB0eSByYW5nZXMKKy0tCitEUk9QIEZVTkNUSU9OIGJyaW5fcGFn ZV9pdGVtcyhJTiBwYWdlIGJ5dGVhLCBJTiBpbmRleF9vaWQgcmVnY2xhc3MpOworQ1JFQVRF IEZVTkNUSU9OIGJyaW5fcGFnZV9pdGVtcyhJTiBwYWdlIGJ5dGVhLCBJTiBpbmRleF9vaWQg cmVnY2xhc3MsCisgICAgT1VUIGl0ZW1vZmZzZXQgaW50LAorICAgIE9VVCBibGtudW0gaW50 OCwKKyAgICBPVVQgYXR0bnVtIGludCwKKyAgICBPVVQgYWxsbnVsbHMgYm9vbCwKKyAgICBP VVQgaGFzbnVsbHMgYm9vbCwKKyAgICBPVVQgcGxhY2Vob2xkZXIgYm9vbCwKKyAgICBPVVQg ZW1wdHkgYm9vbCwKKyAgICBPVVQgdmFsdWUgdGV4dCkKK1JFVFVSTlMgU0VUT0YgcmVjb3Jk CitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2JyaW5fcGFnZV9pdGVtcycKK0xBTkdVQUdFIEMg U1RSSUNUIFBBUkFMTEVMIFJFU1RSSUNURUQ7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cGFnZWluc3BlY3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9wYWdlaW5zcGVjdC5zZ21sCmluZGV4 IDAxZjFlOTYyMDRiLi5lNDIyNWVjZDQ4NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bh Z2VpbnNwZWN0LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BhZ2VpbnNwZWN0LnNnbWwKQEAg LTYxMywxNCArNjEzLDE0IEBAIHRlc3Q9IyBTRUxFQ1QgKiBGUk9NIGJyaW5fcmV2bWFwX2Rh dGEoZ2V0X3Jhd19wYWdlKCdicmluaWR4JywgMikpIExJTUlUIDU7CiB0ZXN0PSMgU0VMRUNU ICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4JywgNSksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyaW5pZHgnKQogICAgICAg IE9SREVSIEJZIGJsa251bSwgYXR0bnVtIExJTUlUIDY7Ci0gaXRlbW9mZnNldCB8IGJsa251 bSB8IGF0dG51bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8ICAgIHZh bHVlCi0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgMTM3IHwgICAgICAw IHwgICAgICAxIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwKLSAgICAg ICAgMTM3IHwgICAgICAwIHwgICAgICAyIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgICAgIHwgezEgLi4gODh9Ci0gICAgICAgIDEzOCB8ICAgICAgNCB8ICAgICAgMSB8IHQg ICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8Ci0gICAgICAgIDEzOCB8ICAgICAg NCB8ICAgICAgMiB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IHs4OSAu LiAxNzZ9Ci0gICAgICAgIDEzOSB8ICAgICAgOCB8ICAgICAgMSB8IHQgICAgICAgIHwgZiAg ICAgICAgfCBmICAgICAgICAgICB8Ci0gICAgICAgIDEzOSB8ICAgICAgOCB8ICAgICAgMiB8 IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IHsxNzcgLi4gMjY0fQorIGl0 ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxh Y2Vob2xkZXIgfCBlbXB0eSB8ICAgIHZhbHVlCistLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tLQorICAgICAgICAxMzcgfCAgICAgIDAgfCAgICAgIDEgfCB0ICAgICAgICB8 IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8CisgICAgICAgIDEzNyB8ICAgICAg MCB8ICAgICAgMiB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAg IHwgezEgLi4gODh9CisgICAgICAgIDEzOCB8ICAgICAgNCB8ICAgICAgMSB8IHQgICAgICAg IHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgIHwKKyAgICAgICAgMTM4IHwgICAg ICA0IHwgICAgICAyIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwgZiAg ICAgfCB7ODkgLi4gMTc2fQorICAgICAgICAxMzkgfCAgICAgIDggfCAgICAgIDEgfCB0ICAg ICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8CisgICAgICAgIDEzOSB8 ICAgICAgOCB8ICAgICAgMiB8IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8 IGYgICAgIHwgezE3NyAuLiAyNjR9CiA8L3NjcmVlbj4KICAgICAgIFRoZSByZXR1cm5lZCBj b2x1bW5zIGNvcnJlc3BvbmQgdG8gdGhlIGZpZWxkcyBpbiB0aGUKICAgICAgIDxzdHJ1Y3Ru YW1lPkJyaW5NZW1UdXBsZTwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3RuYW1lPkJyaW5WYWx1 ZXM8L3N0cnVjdG5hbWU+IHN0cnVjdHMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24u b3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24tYW5k LWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dAppbmRleCA1ODRhYzI2MDJmNy4uMjAxNzg2Yzgy YzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9leHBlY3RlZC9zdW1tYXJp emF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0 aW9uLm91dApAQCAtMiw5ICsyLDkgQEAgUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lv bnMKIAogc3RhcnRpbmcgcGVybXV0YXRpb246IHMyY2hlY2sgczFiIHMyYiBzMWkgczJzdW1t IHMxYyBzMmMgczJjaGVjawogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJyaW5fcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpyZWdjbGFz cyk7Ci1pdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vo b2xkZXJ8dmFsdWUgICAKLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYg ICAgICAgfHQgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9CitpdGVtb2Zmc2V0fGJsa251 bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8ZW1wdHl8dmFsdWUgICAK Ky0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLSstLS0tLS0tLQorICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfHQg ICAgICAgfGYgICAgICAgICAgfGYgICAgfHsxIC4uIDF9CiAoMSByb3cpCiAKIHN0ZXAgczFi OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwpAQCAtMjQsMTggKzI0 LDE4IEBAIGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMKIHN0ZXAgczFjOiBDT01NSVQ7CiBz dGVwIHMyYzogQ09NTUlUOwogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJyaW5fcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpyZWdjbGFz cyk7Ci1pdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vo b2xkZXJ8dmFsdWUgICAgICAKLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQotICAgICAgICAgMXwgICAgIDB8ICAg ICAxfGYgICAgICAgfHQgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9ICAgCi0gICAgICAg ICAyfCAgICAgMXwgICAgIDF8ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4g MTAwMH0KK2l0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFj ZWhvbGRlcnxlbXB0eXx2YWx1ZSAgICAgIAorLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tCisgICAgICAg ICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ZiAgICB8 ezEgLi4gMX0gICAKKyAgICAgICAgIDJ8ICAgICAxfCAgICAgMXxmICAgICAgIHxmICAgICAg IHxmICAgICAgICAgIHxmICAgIHx7MSAuLiAxMDAwfQogKDIgcm93cykKIAogCiBzdGFydGlu ZyBwZXJtdXRhdGlvbjogczJjaGVjayBzMWIgczFpIHMydmFjdXVtIHMxYyBzMmNoZWNrCiBz dGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKLWl0ZW1vZmZzZXR8Ymxr bnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2YWx1ZSAgIAotLS0t LS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAg ICAgICAgICB8ezEgLi4gMX0KK2l0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xo YXNudWxsc3xwbGFjZWhvbGRlcnxlbXB0eXx2YWx1ZSAgIAorLS0tLS0tLS0tLSstLS0tLS0r LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tCisg ICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8 ZiAgICB8ezEgLi4gMX0KICgxIHJvdykKIAogc3RlcCBzMWI6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CkBAIC00Myw5ICs0Myw5IEBAIHN0ZXAgczFpOiBJTlNF UlQgSU5UTyBicmluX2lzbyBWQUxVRVMgKDEwMDApOwogc3RlcCBzMnZhY3V1bTogVkFDVVVN IGJyaW5faXNvOwogc3RlcCBzMWM6IENPTU1JVDsKIHN0ZXAgczJjaGVjazogU0VMRUNUICog RlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4JywgMiksICdicmlu aWR4Jzo6cmVnY2xhc3MpOwotaXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhh c251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgICAgCi0tLS0tLS0tLS0tKy0tLS0tLSstLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KLSAgICAgICAg IDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAx fSAgIAotICAgICAgICAgMnwgICAgIDF8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAg ICAgICAgfHsxIC4uIDEwMDB9CitpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8 aGFzbnVsbHN8cGxhY2Vob2xkZXJ8ZW1wdHl8dmFsdWUgICAgICAKKy0tLS0tLS0tLS0rLS0t LS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLSstLS0tLS0t LS0tLQorICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYgICAg ICAgICAgfGYgICAgfHsxIC4uIDF9ICAgCisgICAgICAgICAyfCAgICAgMXwgICAgIDF8ZiAg ICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8ZiAgICB8ezEgLi4gMTAwMH0KICgyIHJvd3Mp CiAKLS0gCjIuNDAuMQoK --------------7CnHeW1j4fsjWACltlBRBmo9--