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 1phALd-0004XC-9l for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Mar 2023 14:30:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1phALc-000779-1Z for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Mar 2023 14:30:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1phALb-00076h-JX for pgsql-hackers@lists.postgresql.org; Tue, 28 Mar 2023 14:30:51 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1phALY-0007QB-62 for pgsql-hackers@lists.postgresql.org; Tue, 28 Mar 2023 14:30:51 +0000 Received: by mail-wr1-x42d.google.com with SMTP id r11so12416051wrr.12 for ; Tue, 28 Mar 2023 07:30:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1680013846; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=XoO1la3NShjZ+0Tm+W/0IPvHN+eRbs90S2mctvBv5Ao=; b=ax+4MEbKStKUL3FFszGh8M6uP34wL7Cv69zoOpQ5gnLuNnTs9kAjPNlMbkuCpDpozi chgJVdwbCYBzDzfucls9BM0mIVWuvqvtzlooUHnRjmAYgSaJOtPt+G1r9fvQ5pdHK0X0 lS9btS4SzBGoH1pFweRWKpS5g0MuYWYTZWJ6s5AodHKOsTwkE5ipKl27TmAmjC7RDCG0 gzhz/rvXPo1ErJkPk4PFWB7skoGHbD0bdvlNISkQAATU8YFg7yE+ZrZCaxDZUSefIodN qBhKaKp5ljCATq81a9tmydLrtAljXt0kZPTSCKLIe7Re0oO6jfJjd4euAnLGGDr848go GlhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680013846; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XoO1la3NShjZ+0Tm+W/0IPvHN+eRbs90S2mctvBv5Ao=; b=WOe9UyjRif+EO5qeQVlH98RICAFkFznTnJGdleF0E8eSsQ/x3LE+Gd7x6l3T61ouwK qsb7l/+883FHoCph69qetV6VLU0Ly9pXC+R5BXYCnKWt0Fq6gWo0TPmWsttAN8QbGwfo vw4Xpa8Ez3Yge0j1DQE6vdrSVGFYu1ZX0QSexqbFSwULNGwppxIwMfWrVqTndDnzMjV4 QLU8o93rIDTT7iRhXJT+xSVjC/zIUyLMVTIyHNLMzg+KGXHC2wVE+CM21H85LOPk3WW9 q7FbSf/YBm0qSv/2W3vU7XbCccrkIpKbe4rxwmn14Cw8RYndpR7haa21Xj2SV6TW2SSI oHNw== X-Gm-Message-State: AAQBX9cwfiQk5V+1fL1Rp/GnOUx3nkZVJXJFA6ay8b2p8t7om7pmeR4z z0KL++0bF3Jg2qpS8iYRzuEqQNn+jFq2btiYlAKrVwU2a+8g+2GgMbOYeiOllekChAD2hZr8n3B 0akgu5GIN7t8JO6pkHjkwdjTc2UwloSkHj5akrqKQ9kKnE6Gppr8EVFX88+ssQHqMusU1a8vNbc dU5ishxNybplwbD8kdOFbdF6GV9SI6S9X4i9GE80PkBftGEZxZ16n4 X-Google-Smtp-Source: AKy350bdyIacqPux4i0cR0QpmVo3vgQaw6CY57abnnalDc7JbZ3HFQtrs0UCAfWjVN3eIJyE+g0+Sg== X-Received: by 2002:adf:db89:0:b0:2ce:a8e4:bb79 with SMTP id u9-20020adfdb89000000b002cea8e4bb79mr12801774wri.53.1680013846234; Tue, 28 Mar 2023 07:30:46 -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 a8-20020a056000100800b002d8566128e5sm19317409wrx.25.2023.03.28.07.30.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 28 Mar 2023 07:30:45 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------D0EwAAKYWgNnRjRkzXDIwuL0" Message-ID: Date: Tue, 28 Mar 2023 16:30:45 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: Missing update of all_hasnulls in BRIN opclasses Content-Language: en-US From: Tomas Vondra To: Alvaro Herrera Cc: Justin Pryzby , Matthias van de Meent , pgsql-hackers@lists.postgresql.org References: <20230303103219.ttf42jeozpkzewci@alvherre.pgsql> In-Reply-To: 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. --------------D0EwAAKYWgNnRjRkzXDIwuL0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, It took me a while but I finally got back to reworking this to use the bt_info bit, as proposed by Alvaro. And it turned out to work great, because (a) it's a tuple-level flag, i.e. the right place, and (b) it does not overload existing flags. This greatly simplified the code in add_values_to_range and (especially) union_tuples, making it much easier to understand, I think. One disadvantage is we are unable to see which ranges are empty in current pageinspect, but 0002 addresses that by adding "empty" column to the brin_page_items() output. That's a matter for master only, though. It's a trivial patch and it makes it easier/possible to test this, so we should consider to squeeze it into PG16. I did quite a bit of testing - the attached 0003 adds extra tests, but I don't propose to get this committed as is - it's rather overkill. Maybe some reduced version of it ... The hardest thing to test is the union_tuples() part, as it requires concurrent operations with "correct" timing. Easy to simulate by breakpoints in GDB, not so much in plain regression/TAP tests. There's also a stress tests, doing a lot of randomized summarizations, etc. Without the fix this failed in maybe 30% of runs, now I did ~100 runs without a single failure. I haven't done any backporting, but I think it should be simpler than with the earlier approach. I wonder if we need to care about starting to use the previously unused bit - I don't think so, in the worst case we'll just ignore it, but maybe I'm missing something (e.g. when using physical replication). regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------D0EwAAKYWgNnRjRkzXDIwuL0 Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-handling-of-NULLs-in-BRIN-indexes.patch" Content-Disposition: attachment; filename="0001-Fix-handling-of-NULLs-in-BRIN-indexes.patch" Content-Transfer-Encoding: base64 RnJvbSAxMGVmYWY5OTY0ODA2ZTVhMzA4MTg5OTRlM2NmZGE4NzliYjkwMTcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA4IEphbiAyMDIzIDE2OjQzOjA2ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxLzNdIEZpeCBoYW5kbGluZyBvZiBOVUxMcyBpbiBCUklOIGluZGV4ZXMK CkJSSU4gaW5kZXhlcyBkaWQgbm90IHByb3Blcmx5IGRpc3Rpbmd1aXNoIGJldHdlZW4gc3Vt bWFyaWVzIGZvciBlbXB0eQoobm8gcm93cykgYW5kIGFsbC1OVUxMIHJhbmdlcy4gQWxsIHN1 bW1hcmllcyB3ZXJlIGluaXRpYWxpemVkIHdpdGgKYWxsbnVsbHM9dHJ1ZSwgYW5kIHRoZSBv cGNsYXNzZXMgc2ltcGx5IHJlc2V0IGFsbG51bGxzIHRvIGZhbHNlIHdoZW4KcHJvY2Vzc2lu ZyB0aGUgZmlyc3Qgbm9uLU5VTEwgdmFsdWUuIFRoaXMgaG93ZXZlciBmYWlscyBpZiB0aGUg cmFuZ2UKc3RhcnRzIHdpdGggYSBOVUxMIHZhbHVlIChvciBhIHNlcXVlbmNlIG9mIE5VTEwg dmFsdWVzKSwgaW4gd2hpY2ggY2FzZQp3ZSBmb3JnZXQgdGhlIHJhbmdlIGNvbnRhaW5zIE5V TEwgdmFsdWVzLgoKVGhpcyBoYXBwZW5zIGJlY2F1c2UgdGhlIGFsbG51bGxzIGZsYWcgaXMg dXNlZCBmb3IgdHdvIHNlcGFyYXRlCnB1cnBvc2VzIC0gdG8gbWFyayBlbXB0eSByYW5nZXMg KG5vdCByZXByZXNlbnRpbmcgYW55IHJvd3MgeWV0KSBhbmQKcmFuZ2VzIGNvbnRhaW5pbmcg b25seSBOVUxMIHZhbHVlcy4KCk9wY2xhc3NlcyBkb24ndCBrbm93IHdoaWNoIG9mIHRoZXNl IGNhc2VzIGl0IGlzLCBhbmQgc28gZG9uJ3Qga25vdwp3aGV0aGVyIHRvIHNldCBoYXNudWxs cz10cnVlLiBTZXR0aW5nIGhhc251bGxzPXRydWUgaW4gYm90aCBjYXNlcyB3b3VsZAptYWtl IGl0IGNvcnJlY3QsIGJ1dCBpdCB3b3VsZCBhbHNvIG1ha2UgQlJJTiBpbmRleGVzIHVzZWxl c3MgZm9yIHF1ZXJpZXMKd2l0aCBJUyBOVUxMIGNsYXVzZXMgLSBhbGwgcmFuZ2VzIHN0YXJ0 IGVtcHR5IChhbmQgdGh1cyBhbGxudWxscz10cnVlKSwKc28gYWxsIHJhbmdlcyB3b3VsZCBl bmQgdXAgd2l0aCBlaXRoZXIgYWxsbnVsbHM9dHJ1ZSBvciBoYXNudWxscz10cnVlLgoKVGhl IHNldmVyaXR5IG9mIHRoZSBpc3N1ZSBpcyBzb21ld2hhdCByZWR1Y2VkIGJ5IHRoZSBmYWN0 IHRoYXQgaXQgb25seQpoYXBwZW5zIHdoZW4gYWRkaW5nIHZhbHVlcyB0byBhbiBleGlzdGlu ZyBzdW1tYXJ5IHdpdGggYWxsbnVsbHM9dHJ1ZSwKbm90IHdoZW4gdGhlIHN1bW1hcml6YXRp b24gaXMgcHJvY2Vzc2luZyB2YWx1ZXMgaW4gYnVsayAoZS5nLiBkdXJpbmcKQ1JFQVRFIElO REVYIG9yIGF1dG9tYXRpYyBzdW1tYXJpemF0aW9uKS4gSW4gdGhpcyBjYXNlIHRoZSBmbGFn cyB3ZXJlCnVwZGF0ZWQgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5LCBub3QgZm9yZ2V0 dGluZyB0aGUgTlVMTCB2YWx1ZXMuCgpUaGlzIGludHJvZHVjZXMgYSBuZXcgYSBuZXcgZmxh ZyBtYXJraW5nIGluZGV4IHR1cGxlcyByZXByZXNlbnRpbmcKcmFuZ2VzIHdpdGggbm8gcm93 cy4gTHVja2lseSB3ZSBoYXZlIGFuIHVudXNlZCB0dXBsZSBpbiB0aGUgQlJJTiB0dXBsZQpo ZWFkZXIgdGhhdCB3ZSBjYW4gdXNlIGZvciB0aGlzLgoKV2Ugc3RpbGwgc3RvcmUgaW5kZXgg dHVwbGVzIGZvciBlbXB0eSByYW5nZXMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlJ2Qgbm90CmJl IGFibGUgdG8gc2F5IHdoZXRoZXIgYSByYW5nZSBpcyBlbXB0eSBvciBub3QgeWV0IHN1bW1h cml6ZWQsIGFuZCB3ZSdkCmhhdmUgdG8gcHJvY2VzcyB0aGVtIGZvciBhbnkgcXVlcnkuCgpC YWNrcGF0Y2ggdG8gMTEuIFRoZSBpc3N1ZSBleGlzdHMgc2luY2UgQlJJTiBpbmRleGVzIHdl cmUgaW50cm9kdWNlZCBpbgo5LjUsIGJ1dCBvbGRlciByZWxlYXNlcyBhcmUgYWxyZWFkeSBF T0wuCgpCYWNrcGF0Y2gtdGhyb3VnaDogMTEKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBKdXN0aW4gUHJ5emJ5LCBNYXR0aGlhcyB2YW4gZGUgTWVlbnQKRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS80MDI0MzBlNC03ZDlkLTZjZjEtMDllZi00NjRkODBhZmZmM2JA ZW50ZXJwcmlzZWRiLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAg ICAgICAgICAgICAgICB8IDExNSArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fdHVwbGUuYyAgICAgICAgICB8ICAxNSArKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9icmluX3R1cGxlLmggICAgICAgICAgICAgICB8ICAgNiArLQogLi4uc3VtbWFy aXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0IHwgICA4ICstCiAuLi51bW1h cml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMgfCAgIDEgKwogNSBmaWxl cyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKaW5kZXggNTNlNDcyMWE1NGUuLjE2MmEwYzA1MmFhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbi5jCkBAIC01OTIsNiArNTkyLDE3IEBAIGJyaW5nZXRiaXRtYXAo SW5kZXhTY2FuRGVzYyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAogCQkJCQlidmFsID0gJmR0 dXAtPmJ0X2NvbHVtbnNbYXR0bm8gLSAxXTsKIAorCQkJCQkvKgorCQkJCQkgKiBJZiB0aGUg QlJJTiB0dXBsZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJhbmdlIGlzIGVtcHR5LAorCQkJCQkg KiB3ZSBjYW4gc2tpcCBpdDogdGhlcmUncyBub3RoaW5nIHRvIG1hdGNoLiAgV2UgZG9uJ3QK KwkJCQkJICogbmVlZCB0byBleGFtaW5lIHRoZSBuZXh0IGNvbHVtbnMuCisJCQkJCSAqLwor CQkJCQlpZiAoZHR1cC0+YnRfZW1wdHlfcmFuZ2UpCisJCQkJCXsKKwkJCQkJCWFkZHJhbmdl ID0gZmFsc2U7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCiAJCQkJCS8qCiAJCQkJCSAqIEZp cnN0IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgSVMgW05PVF0gTlVMTCBzY2FuIGtleXMsCiAJ CQkJCSAqIGFuZCBpZiB3ZSdyZSB2aW9sYXRpbmcgdGhlbS4gSW4gdGhhdCBjYXNlIHdlIGNh bgpAQCAtMTU5MCw2ICsxNjAxLDggQEAgZm9ybV9hbmRfaW5zZXJ0X3R1cGxlKEJyaW5CdWls ZFN0YXRlICpzdGF0ZSkKIC8qCiAgKiBHaXZlbiB0d28gZGVmb3JtZWQgdHVwbGVzLCBhZGp1 c3QgdGhlIGZpcnN0IG9uZSBzbyB0aGF0IGl0J3MgY29uc2lzdGVudAogICogd2l0aCB0aGUg c3VtbWFyeSB2YWx1ZXMgaW4gYm90aC4KKyAqCisgKiBYWFggSSdtIG5vdCBzdXJlIHdlIGNh biBhY3R1YWxseSBnZXQgZW1wdHkgImIiLgogICovCiBzdGF0aWMgdm9pZAogdW5pb25fdHVw bGVzKEJyaW5EZXNjICpiZGVzYywgQnJpbk1lbVR1cGxlICphLCBCcmluVHVwbGUgKmIpCkBA IC0xNjA3LDYgKzE2MjAsNjQgQEAgdW5pb25fdHVwbGVzKEJyaW5EZXNjICpiZGVzYywgQnJp bk1lbVR1cGxlICphLCBCcmluVHVwbGUgKmIpCiAJZGIgPSBicmluX2RlZm9ybV90dXBsZShi ZGVzYywgYiwgTlVMTCk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkv KgorCSAqIENoZWNrIGlmIHRoZSByYW5nZXMgYXJlIGVtcHR5LgorCSAqCisJICogSWYgYXQg bGVhc3Qgb25lIG9mIHRoZW0gaXMgZW1wdHksIHdlIGRvbid0IG5lZWQgdG8gY2FsbCBwZXIt a2V5IHVuaW9uCisJICogZnVuY3Rpb25zIGF0IGFsbC4gSWYgImIiIGlzIGVtcHR5LCB3ZSBq dXN0IHVzZSAiYSIgYXMgdGhlIHJlc3VsdCAoaXQKKwkgKiBtaWdodCBiZSBlbXB0eSBmaW5l LCBidXQgdGhhdCdzIGZpbmUpLiBJZiAiYSIgaXMgZW1wdHkgYnV0ICJiIiBpcyBub3QsCisJ ICogd2UgdXNlICJiIiBhcyB0aGUgcmVzdWx0IChidXQgd2UgaGF2ZSB0byBjb3B5IHRoZSBk YXRhIGludG8gImEiIGZpcnN0KS4KKwkgKgorCSAqIE9ubHkgd2hlbiBib3RoIHJhbmdlcyBh cmUgbm9uLWVtcHR5LCB3ZSBhY3R1YWxseSBkbyB0aGUgcGVyLWtleSBtZXJnZS4KKwkgKi8K KworCS8qIElmICJiIiBpcyBlbXB0eSAtIGlnbm9yZSBpdCBhbmQganVzdCB1c2UgImEiIChl dmVuIGlmIGl0J3MgZW1wdHkgZXRjLikuICovCisJaWYgKGRiLT5idF9lbXB0eV9yYW5nZSkK Kwl7CisJCS8qIHNraXAgdGhlIHBlci1rZXkgbWVyZ2UgKi8KKwkJTWVtb3J5Q29udGV4dERl bGV0ZShjeHQpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBOb3cgd2Uga25vdyAiYiIg aXMgbm90IGVtcHR5LiBJZiAiYSIgaXMgZW1wdHksIHRoZW4gImIiIGlzIHRoZSByZXN1bHQu CisJICogQnV0IHdlIG5lZWQgdG8gY29weSB0aGUgZGF0YSBmcm9tICJiIiB0byAiYSIgZmly c3QsIGJlY2F1c2UgdGhhdCdzIGhvdworCSAqIHdlIHBhc3MgcmVzdWx0IG91dC4KKwkgKgor CSAqIFdlIGhhdmUgdG8gY29weSBhbGwgdGhlIGdsb2JhbC9wZXIta2V5IGZsYWdzIGV0Yy4g dG9vLgorCSAqLworCWlmIChhLT5idF9lbXB0eV9yYW5nZSkKKwl7CisJCWZvciAoa2V5bm8g PSAwOyBrZXlubyA8IGJkZXNjLT5iZF90dXBkZXNjLT5uYXR0czsga2V5bm8rKykKKwkJewor CQkJaW50CQkJaTsKKwkJCUJyaW5WYWx1ZXMgKmNvbF9hID0gJmEtPmJ0X2NvbHVtbnNba2V5 bm9dOworCQkJQnJpblZhbHVlcyAqY29sX2IgPSAmZGItPmJ0X2NvbHVtbnNba2V5bm9dOwor CQkJQnJpbk9wY0luZm8gKm9wY2luZm8gPSBiZGVzYy0+YmRfaW5mb1trZXlub107CisKKwkJ CWNvbF9hLT5idl9hbGxudWxscyA9IGNvbF9iLT5idl9hbGxudWxsczsKKwkJCWNvbF9hLT5i dl9oYXNudWxscyA9IGNvbF9iLT5idl9oYXNudWxsczsKKworCQkJLyogSWYgImIiIGhhcyBu byBkYXRhLCB3ZSdyZSBkb25lLiAqLworCQkJaWYgKGNvbF9iLT5idl9hbGxudWxscykKKwkJ CQljb250aW51ZTsKKworCQkJZm9yIChpID0gMDsgaSA8IG9wY2luZm8tPm9pX25zdG9yZWQ7 IGkrKykKKwkJCQljb2xfYS0+YnZfdmFsdWVzW2ldID0KKwkJCQkJZGF0dW1Db3B5KGNvbF9i LT5idl92YWx1ZXNbaV0sCisJCQkJCQkJICBvcGNpbmZvLT5vaV90eXBjYWNoZVtpXS0+dHlw Ynl2YWwsCisJCQkJCQkJICBvcGNpbmZvLT5vaV90eXBjYWNoZVtpXS0+dHlwbGVuKTsKKwkJ fQorCisJCS8qICJhIiBzdGFydGVkIGVtcHR5LCBidXQgImIiIHdhcyBub3QgZW1wdHksIHNv IHJlbWVtYmVyIHRoYXQgKi8KKwkJYS0+YnRfZW1wdHlfcmFuZ2UgPSBmYWxzZTsKKworCQkv KiBza2lwIHRoZSBwZXIta2V5IG1lcmdlICovCisJCU1lbW9yeUNvbnRleHREZWxldGUoY3h0 KTsKKwkJcmV0dXJuOworCX0KKworCS8qIE5vdyB3ZSBrbm93IG5laXRoZXIgcmFuZ2UgaXMg ZW1wdHkuICovCiAJZm9yIChrZXlubyA9IDA7IGtleW5vIDwgYmRlc2MtPmJkX3R1cGRlc2Mt Pm5hdHRzOyBrZXlubysrKQogCXsKIAkJRm1nckluZm8gICAqdW5pb25GbjsKQEAgLTE3MDQs NyArMTc3NSw5IEBAIGFkZF92YWx1ZXNfdG9fcmFuZ2UoUmVsYXRpb24gaWR4UmVsLCBCcmlu RGVzYyAqYmRlc2MsIEJyaW5NZW1UdXBsZSAqZHR1cCwKIAkJCQkJRGF0dW0gKnZhbHVlcywg Ym9vbCAqbnVsbHMpCiB7CiAJaW50CQkJa2V5bm87Ci0JYm9vbAkJbW9kaWZpZWQgPSBmYWxz ZTsKKworCS8qIElmIHRoZSByYW5nZSBzdGFydHMgZW1wdHksIHdlJ3JlIGNlcnRhaW5seSBn b2luZyB0byBtb2RpZnkgaXQuICovCisJYm9vbAkJbW9kaWZpZWQgPSBkdHVwLT5idF9lbXB0 eV9yYW5nZTsKIAogCS8qCiAJICogQ29tcGFyZSB0aGUga2V5IHZhbHVlcyBvZiB0aGUgbmV3 IHR1cGxlIHRvIHRoZSBzdG9yZWQgaW5kZXggdmFsdWVzOyBvdXIKQEAgLTE3MTgsOSArMTc5 MSwyNCBAQCBhZGRfdmFsdWVzX3RvX3JhbmdlKFJlbGF0aW9uIGlkeFJlbCwgQnJpbkRlc2Mg KmJkZXNjLCBCcmluTWVtVHVwbGUgKmR0dXAsCiAJCURhdHVtCQlyZXN1bHQ7CiAJCUJyaW5W YWx1ZXMgKmJ2YWw7CiAJCUZtZ3JJbmZvICAgKmFkZFZhbHVlOworCQlib29sCQloYXNfbnVs bHM7CiAKIAkJYnZhbCA9ICZkdHVwLT5idF9jb2x1bW5zW2tleW5vXTsKIAorCQkvKgorCQkg KiBEb2VzIHRoZSByYW5nZSBoYXZlIGFjdHVhbCBOVUxMIHZhbHVlcz8gRWl0aGVyIG9mIHRo ZSBmbGFncyBjYW4KKwkJICogYmUgc2V0LCBidXQgd2UgaWdub3JlIHRoZSBzdGF0ZSBiZWZv cmUgYWRkaW5nIGZpcnN0IHJvdy4KKwkJICoKKwkJICogV2UgaGF2ZSB0byByZW1lbWJlciB0 aGlzLCBiZWNhdXNlIHdlJ2xsIG1vZGlmeSB0aGUgZmxhZ3MgYW5kIHdlCisJCSAqIG5lZWQg dG8ga25vdyBpZiB0aGUgcmFuZ2Ugc3RhcnRlZCBhcyBlbXB0eS4KKwkJICovCisJCWhhc19u dWxscyA9ICgoIWR0dXAtPmJ0X2VtcHR5X3JhbmdlKSAmJgorCQkJCQkgKGJ2YWwtPmJ2X2hh c251bGxzIHx8IGJ2YWwtPmJ2X2FsbG51bGxzKSk7CisKKwkJLyoKKwkJICogSWYgdGhlIHZh bHVlIHdlJ3JlIGFkZGluZyBpcyBOVUxMLCBoYW5kbGUgaXQgbG9jYWxseS4gT3RoZXJ3aXNl CisJCSAqIGNhbGwgdGhlIEJSSU5fUFJPQ05VTV9BRERWQUxVRSBwcm9jZWR1cmUuCisJCSAq LwogCQlpZiAoYmRlc2MtPmJkX2luZm9ba2V5bm9dLT5vaV9yZWd1bGFyX251bGxzICYmIG51 bGxzW2tleW5vXSkKIAkJewogCQkJLyoKQEAgLTE3NDYsOCArMTgzNCwzMyBAQCBhZGRfdmFs dWVzX3RvX3JhbmdlKFJlbGF0aW9uIGlkeFJlbCwgQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVt VHVwbGUgKmR0dXAsCiAJCQkJCQkJCSAgIG51bGxzW2tleW5vXSk7CiAJCS8qIGlmIHRoYXQg cmV0dXJuZWQgdHJ1ZSwgd2UgbmVlZCB0byBpbnNlcnQgdGhlIHVwZGF0ZWQgdHVwbGUgKi8K IAkJbW9kaWZpZWQgfD0gRGF0dW1HZXRCb29sKHJlc3VsdCk7CisKKwkJLyoKKwkJICogSWYg dGhlIHJhbmdlIHdhcyBoYWQgYWN0dWFsIE5VTEwgdmFsdWVzIChpLmUuIGRpZCBub3Qgc3Rh cnQgZW1wdHkpLAorCQkgKiBtYWtlIHN1cmUgd2UgZG9uJ3QgZm9yZ2V0IGFib3V0IHRoZSBO VUxMIHZhbHVlcy4gRWl0aGVyIHRoZSBhbGxudWxscworCQkgKiBmbGFnIGlzIHN0aWxsIHNl dCB0byB0cnVlLCBvciAoaWYgdGhlIG9wY2xhc3MgY2xlYXJlZCBpdCkgd2UgbmVlZCB0bwor CQkgKiBzZXQgaGFzbnVsbHM9dHJ1ZS4KKwkJICoKKwkJICogWFhYIFRoaXMgY2FuIG9ubHkg aGFwcGVuIHdoZW4gdGhlIG9wY2xhc3MgbW9kaWZpZWQgdGhlIHR1cGxlLCBzbyB0aGUKKwkJ ICogbW9kaWZpZWQgZmxhZyBzaG91bGQgYmUgc2V0LgorCQkgKi8KKwkJaWYgKGhhc19udWxs cyAmJiAhKGJ2YWwtPmJ2X2hhc251bGxzIHx8IGJ2YWwtPmJ2X2FsbG51bGxzKSkKKwkJewor CQkJQXNzZXJ0KG1vZGlmaWVkKTsKKwkJCWJ2YWwtPmJ2X2hhc251bGxzID0gdHJ1ZTsKKwkJ fQogCX0KIAorCS8qCisJICogQWZ0ZXIgdXBkYXRpbmcgc3VtbWFyaWVzIGZvciBhbGwgdGhl IGtleXMsIG1hcmsgaXQgYXMgbm90IGVtcHR5LgorCSAqCisJICogSWYgd2UncmUgYWN0dWFs bHkgY2hhbmdpbmcgdGhlIGZsYWcgdmFsdWUgKGkuZS4gdHVwbGUgc3RhcnRlZCBhcyBlbXB0 eSksCisJICogd2Ugc2hvdWxkIGhhdmUgbW9kaWZpZWQgdGhlIHR1cGxlLiBTbyB3ZSBzaG91 bGQgbm90IHNlZSBlbXB0eSByYW5nZSB0aGF0CisJICogd2FzIG5vdCBtb2RpZmllZC4KKwkg Ki8KKwlBc3NlcnQoIWR0dXAtPmJ0X2VtcHR5X3JhbmdlIHx8IG1vZGlmaWVkKTsKKwlkdHVw LT5idF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCiAJcmV0dXJuIG1vZGlmaWVkOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKaW5kZXggODRiNzlkYmZjMGQuLmI4 MTI0N2EyNjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1 cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCkBAIC0z NzIsNiArMzcyLDkgQEAgYnJpbl9mb3JtX3R1cGxlKEJyaW5EZXNjICpicmRlc2MsIEJsb2Nr TnVtYmVyIGJsa25vLCBCcmluTWVtVHVwbGUgKnR1cGxlLAogCWlmICh0dXBsZS0+YnRfcGxh Y2Vob2xkZXIpCiAJCXJldHR1cGxlLT5idF9pbmZvIHw9IEJSSU5fUExBQ0VIT0xERVJfTUFT SzsKIAorCWlmICh0dXBsZS0+YnRfZW1wdHlfcmFuZ2UpCisJCXJldHR1cGxlLT5idF9pbmZv IHw9IEJSSU5fRU1QVFlfUkFOR0VfTUFTSzsKKwogCSpzaXplID0gbGVuOwogCXJldHVybiBy ZXR0dXBsZTsKIH0KQEAgLTM5OSw3ICs0MDIsNyBAQCBicmluX2Zvcm1fcGxhY2Vob2xkZXJf dHVwbGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sIFNpemUgKnNpemUp CiAJcmV0dHVwbGUgPSBwYWxsb2MwKGxlbik7CiAJcmV0dHVwbGUtPmJ0X2Jsa25vID0gYmxr bm87CiAJcmV0dHVwbGUtPmJ0X2luZm8gPSBob2ZmOwotCXJldHR1cGxlLT5idF9pbmZvIHw9 IEJSSU5fTlVMTFNfTUFTSyB8IEJSSU5fUExBQ0VIT0xERVJfTUFTSzsKKwlyZXR0dXBsZS0+ YnRfaW5mbyB8PSBCUklOX05VTExTX01BU0sgfCBCUklOX1BMQUNFSE9MREVSX01BU0sgfCBC UklOX0VNUFRZX1JBTkdFX01BU0s7CiAKIAliaXRQID0gKChiaXRzOCAqKSAoKGNoYXIgKikg cmV0dHVwbGUgKyBTaXplT2ZCcmluVHVwbGUpKSAtIDE7CiAJYml0bWFzayA9IEhJR0hCSVQ7 CkBAIC00ODksNiArNDkyLDggQEAgYnJpbl9uZXdfbWVtdHVwbGUoQnJpbkRlc2MgKmJyZGVz YykKIAlkdHVwLT5idF9hbGxudWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkgKiBicmRlc2Mt PmJkX3R1cGRlc2MtPm5hdHRzKTsKIAlkdHVwLT5idF9oYXNudWxscyA9IHBhbGxvYyhzaXpl b2YoYm9vbCkgKiBicmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzKTsKIAorCWR0dXAtPmJ0X2Vt cHR5X3JhbmdlID0gdHJ1ZTsKKwogCWR0dXAtPmJ0X2NvbnRleHQgPSBBbGxvY1NldENvbnRl eHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAiYnJpbiBkdHVw bGUiLAogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CkBAIC01MjcsNiAr NTMyLDkgQEAgYnJpbl9tZW10dXBsZV9pbml0aWFsaXplKEJyaW5NZW1UdXBsZSAqZHR1cGxl LCBCcmluRGVzYyAqYnJkZXNjKQogCQljdXJyZGF0dW0gKz0gc2l6ZW9mKERhdHVtKSAqIGJy ZGVzYy0+YmRfaW5mb1tpXS0+b2lfbnN0b3JlZDsKIAl9CiAKKwkvKiBGSVhNRSBTaG91bGRu J3QgdGhpcyByZXNldCBidF9wbGFjZWhvbGRlciB0b28/ICovCisJZHR1cGxlLT5idF9lbXB0 eV9yYW5nZSA9IHRydWU7CisKIAlyZXR1cm4gZHR1cGxlOwogfQogCkBAIC01NjAsNiArNTY4 LDExIEBAIGJyaW5fZGVmb3JtX3R1cGxlKEJyaW5EZXNjICpicmRlc2MsIEJyaW5UdXBsZSAq dHVwbGUsIEJyaW5NZW1UdXBsZSAqZE1lbXR1cGxlKQogCiAJaWYgKEJyaW5UdXBsZUlzUGxh Y2Vob2xkZXIodHVwbGUpKQogCQlkdHVwLT5idF9wbGFjZWhvbGRlciA9IHRydWU7CisKKwkv KiByYW5nZXMgc3RhcnQgYXMgZW1wdHksIGRlcGVuZHMgb24gdGhlIEJyaW5UdXBsZSAqLwor CWlmICghQnJpblR1cGxlSXNFbXB0eVJhbmdlKHR1cGxlKSkKKwkJZHR1cC0+YnRfZW1wdHlf cmFuZ2UgPSBmYWxzZTsKKwogCWR0dXAtPmJ0X2Jsa25vID0gdHVwbGUtPmJ0X2Jsa25vOwog CiAJdmFsdWVzID0gZHR1cC0+YnRfdmFsdWVzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2JyaW5fdHVwbGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmgK aW5kZXggNzMyZjkxZWRmMTEuLmM1Njc0N2FjYTRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvYnJpbl90dXBsZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1 cGxlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblZhbHVlcwogdHlw ZWRlZiBzdHJ1Y3QgQnJpbk1lbVR1cGxlCiB7CiAJYm9vbAkJYnRfcGxhY2Vob2xkZXI7IC8q IHRoaXMgaXMgYSBwbGFjZWhvbGRlciB0dXBsZSAqLworCWJvb2wJCWJ0X2VtcHR5X3Jhbmdl OwkvKiByYW5nZSByZXByZXNlbnRzIG5vIHR1cGxlcyAqLwogCUJsb2NrTnVtYmVyIGJ0X2Js a25vOwkJLyogaGVhcCBibGtubyB0aGF0IHRoZSB0dXBsZSBpcyBmb3IgKi8KIAlNZW1vcnlD b250ZXh0IGJ0X2NvbnRleHQ7CS8qIG1lbWN4dCBob2xkaW5nIHRoZSBidF9jb2x1bW5zIHZh bHVlcyAqLwogCS8qIG91dHB1dCBhcnJheXMgZm9yIGJyaW5fZGVmb3JtX3R1cGxlOiAqLwpA QCAtNjksNyArNzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBCcmluVHVwbGUKIAkgKgogCSAqIDd0 aCAoaGlnaCkgYml0OiBoYXMgbnVsbHMKIAkgKiA2dGggYml0OiBpcyBwbGFjZWhvbGRlciB0 dXBsZQotCSAqIDV0aCBiaXQ6IHVudXNlZAorCSAqIDV0aCBiaXQ6IHJhbmdlIGlzIGVtcHR5 CiAJICogNC0wIGJpdDogb2Zmc2V0IG9mIGRhdGEKIAkgKiAtLS0tLS0tLS0tLS0tLS0KIAkg Ki8KQEAgLTgyLDEzICs4MywxNCBAQCB0eXBlZGVmIHN0cnVjdCBCcmluVHVwbGUKICAqIGJ0 X2luZm8gbWFuaXB1bGF0aW9uIG1hY3JvcwogICovCiAjZGVmaW5lIEJSSU5fT0ZGU0VUX01B U0sJCTB4MUYKLS8qIGJpdCAweDIwIGlzIG5vdCB1c2VkIGF0IHByZXNlbnQgKi8KKyNkZWZp bmUgQlJJTl9FTVBUWV9SQU5HRV9NQVNLCTB4MjAKICNkZWZpbmUgQlJJTl9QTEFDRUhPTERF Ul9NQVNLCTB4NDAKICNkZWZpbmUgQlJJTl9OVUxMU19NQVNLCQkJMHg4MAogCiAjZGVmaW5l IEJyaW5UdXBsZURhdGFPZmZzZXQodHVwKQkoKFNpemUpICgoKEJyaW5UdXBsZSAqKSAodHVw KSktPmJ0X2luZm8gJiBCUklOX09GRlNFVF9NQVNLKSkKICNkZWZpbmUgQnJpblR1cGxlSGFz TnVsbHModHVwKQkoKCgoKEJyaW5UdXBsZSAqKSAodHVwKSktPmJ0X2luZm8gJiBCUklOX05V TExTX01BU0spKSAhPSAwKQogI2RlZmluZSBCcmluVHVwbGVJc1BsYWNlaG9sZGVyKHR1cCkg KCgoKChCcmluVHVwbGUgKikgKHR1cCkpLT5idF9pbmZvICYgQlJJTl9QTEFDRUhPTERFUl9N QVNLKSkgIT0gMCkKKyNkZWZpbmUgQnJpblR1cGxlSXNFbXB0eVJhbmdlKHR1cCkgKCgoKChC cmluVHVwbGUgKikgKHR1cCkpLT5idF9pbmZvICYgQlJJTl9FTVBUWV9SQU5HRV9NQVNLKSkg IT0gMCkKIAogCiBleHRlcm4gQnJpblR1cGxlICpicmluX2Zvcm1fdHVwbGUoQnJpbkRlc2Mg KmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRp b24ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24t YW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dAppbmRleCAyYTQ3NTVkMDk5OC4uNTg0YWMy NjAyZjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9leHBlY3RlZC9zdW1t YXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5z ZXJ0aW9uLm91dApAQCAtNCw3ICs0LDcgQEAgc3RhcnRpbmcgcGVybXV0YXRpb246IHMyY2hl Y2sgczFiIHMyYiBzMWkgczJzdW1tIHMxYyBzMmMgczJjaGVjawogc3RlcCBzMmNoZWNrOiBT RUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAy KSwgJ2JyaW5pZHgnOjpyZWdjbGFzcyk7CiBpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxs bnVsbHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8dmFsdWUgICAKIC0tLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAg ICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4u IDF9CisgICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAg ICAgICB8ezEgLi4gMX0KICgxIHJvdykKIAogc3RlcCBzMWI6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CkBAIC0yNiw3ICsyNiw3IEBAIHN0ZXAgczJjOiBDT01N SVQ7CiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKIGl0ZW1vZmZz ZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2YWx1ZSAg ICAgIAogLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8 ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKKyAgICAgICAgIDF8ICAgICAwfCAg ICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxfSAgIAogICAgICAg ICAgMnwgICAgIDF8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4u IDEwMDB9CiAoMiByb3dzKQogCkBAIC0zNSw3ICszNSw3IEBAIHN0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMmNoZWNrIHMxYiBzMWkgczJ2YWN1dW0gczFjIHMyY2hlY2sKIHN0ZXAgczJjaGVj azogU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4 JywgMiksICdicmluaWR4Jzo6cmVnY2xhc3MpOwogaXRlbW9mZnNldHxibGtudW18YXR0bnVt fGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgCiAtLS0tLS0tLS0tKy0t LS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAg ICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7 MSAuLiAxfQorICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYg ICAgICAgICAgfHsxIC4uIDF9CiAoMSByb3cpCiAKIHN0ZXAgczFiOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwpAQCAtNDUsNyArNDUsNyBAQCBzdGVwIHMxYzog Q09NTUlUOwogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhn ZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpyZWdjbGFzcyk7CiBpdGVt b2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8dmFs dWUgICAgICAKIC0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLQotICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAg ICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9ICAgCisgICAgICAgICAxfCAgICAg MHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKICAg ICAgICAgIDJ8ICAgICAxfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7 MSAuLiAxMDAwfQogKDIgcm93cykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9i cmluL3NwZWNzL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMg Yi9zcmMvdGVzdC9tb2R1bGVzL2JyaW4vc3BlY3Mvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9n cmVzcy1pbnNlcnRpb24uc3BlYwppbmRleCAxOWFjMThhMmU4OC4uMThiYTkyYjdiYTEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9zcGVjcy9zdW1tYXJpemF0aW9uLWFu ZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvYnJp bi9zcGVjcy9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjCkBA IC05LDYgKzksNyBAQCBzZXR1cAogICAgICkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CiAgICAg Q1JFQVRFIElOREVYIGJyaW5pZHggT04gYnJpbl9pc28gVVNJTkcgYnJpbiAodmFsdWUpIFdJ VEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKICAgICAtLSB0aGlzIGZpbGxzIHRoZSBmaXJzdCBw YWdlCisgICAgSU5TRVJUIElOVE8gYnJpbl9pc28gVkFMVUVTIChOVUxMKTsKICAgICBETyAk JAogICAgIERFQ0xBUkUgY3VydGlkIHRpZDsKICAgICBCRUdJTgotLSAKMi4zOS4yCgo= --------------D0EwAAKYWgNnRjRkzXDIwuL0 Content-Type: text/x-patch; charset=UTF-8; name="0002-Show-empty-ranges-in-brin_page_items.patch" Content-Disposition: attachment; filename="0002-Show-empty-ranges-in-brin_page_items.patch" Content-Transfer-Encoding: base64 RnJvbSBhN2VkMzkyODVhN2M4ZjM2NTUwOTEzNDY3NTViODFiMGQ3OWIyZjNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyNyBNYXIgMjAyMyAyMjo0NzoxMiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi8zXSBTaG93IGVtcHR5IHJhbmdlcyBpbiBicmluX3BhZ2VfaXRlbXMK ClNob3cgd2hpY2ggQlJJTiByYW5nZXMgYXJlIGVtcHR5IChubyByb3dzKSwgYXMgaW5kaWNh dGVkIGJ5IHRoZSBuZXdseQppbnRyb2R1Y2VkIGZsYWcuCi0tLQogY29udHJpYi9wYWdlaW5z cGVjdC9icmluZnVuY3MuYyAgICAgICAgICAgICAgIHwgMTAgKysrKy0tLQogY29udHJpYi9w YWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dCAgICAgICAgIHwgIDYgKystLQogLi4uL3Bh Z2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjExLS0xLjEyLnNxbCAgIHwgMTcgKysrKysrKysr KysKIC4uLnN1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dCB8IDI4 ICsrKysrKysrKy0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygr KSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9i cmluZnVuY3MuYyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKaW5kZXggMDAw ZGNkOGY1ZDguLmE3ODFmMjY1NTE0IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0 L2JyaW5mdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKQEAg LTIwMSw4ICsyMDEsOCBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAlk dHVwID0gTlVMTDsKIAlmb3IgKDs7KQogCXsKLQkJRGF0dW0JCXZhbHVlc1s3XTsKLQkJYm9v bAkJbnVsbHNbN10gPSB7MH07CisJCURhdHVtCQl2YWx1ZXNbOF07CisJCWJvb2wJCW51bGxz WzhdID0gezB9OwogCiAJCS8qCiAJCSAqIFRoaXMgbG9vcCBpcyBjYWxsZWQgb25jZSBmb3Ig ZXZlcnkgYXR0cmlidXRlIG9mIGV2ZXJ5IHR1cGxlIGluIHRoZQpAQCAtMjM5LDYgKzIzOSw3 IEBAIGJyaW5fcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJbnVsbHNbNF0gPSB0 cnVlOwogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQkJbnVsbHNbNl0gPSB0cnVlOworCQkJbnVs bHNbN10gPSB0cnVlOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjYxLDYgKzI2Miw3IEBAIGJy aW5fcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJdmFsdWVzWzNdID0gQm9vbEdl dERhdHVtKGR0dXAtPmJ0X2NvbHVtbnNbYXR0XS5idl9hbGxudWxscyk7CiAJCQl2YWx1ZXNb NF0gPSBCb29sR2V0RGF0dW0oZHR1cC0+YnRfY29sdW1uc1thdHRdLmJ2X2hhc251bGxzKTsK IAkJCXZhbHVlc1s1XSA9IEJvb2xHZXREYXR1bShkdHVwLT5idF9wbGFjZWhvbGRlcik7CisJ CQl2YWx1ZXNbNl0gPSBCb29sR2V0RGF0dW0oZHR1cC0+YnRfZW1wdHlfcmFuZ2UpOwogCQkJ aWYgKCFkdHVwLT5idF9jb2x1bW5zW2F0dF0uYnZfYWxsbnVsbHMpCiAJCQl7CiAJCQkJQnJp blZhbHVlcyAqYnZhbHVlcyA9ICZkdHVwLT5idF9jb2x1bW5zW2F0dF07CkBAIC0yODYsMTIg KzI4OCwxMiBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQl9CiAJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnMsICd9Jyk7CiAKLQkJCQl2YWx1ZXNbNl0gPSBD U3RyaW5nR2V0VGV4dERhdHVtKHMuZGF0YSk7CisJCQkJdmFsdWVzWzddID0gQ1N0cmluZ0dl dFRleHREYXR1bShzLmRhdGEpOwogCQkJCXBmcmVlKHMuZGF0YSk7CiAJCQl9CiAJCQllbHNl CiAJCQl7Ci0JCQkJbnVsbHNbNl0gPSB0cnVlOworCQkJCW51bGxzWzddID0gdHJ1ZTsKIAkJ CX0KIAkJfQogCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2Jy aW4ub3V0IGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dAppbmRleCBl MTJmYmViNDc3NC4uMDk4ZGRjMjAyZjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvZXhwZWN0ZWQvYnJpbi5vdXQKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3Rl ZC9icmluLm91dApAQCAtNDMsOSArNDMsOSBAQCBTRUxFQ1QgKiBGUk9NIGJyaW5fcmV2bWFw X2RhdGEoZ2V0X3Jhd19wYWdlKCd0ZXN0MV9hX2lkeCcsIDEpKSBMSU1JVCA1OwogCiBTRUxF Q1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rlc3QxX2FfaWR4Jywg MiksICd0ZXN0MV9hX2lkeCcpCiAgICAgT1JERVIgQlkgYmxrbnVtLCBhdHRudW0gTElNSVQg NTsKLSBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxs cyB8IHBsYWNlaG9sZGVyIHwgIHZhbHVlICAgCi0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot ICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IGYgICAgICAgIHwg ZiAgICAgICAgICAgfCB7MSAuLiAxfQorIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0g fCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAg IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAg IDAgfCAgICAgIDEgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAg ICB8IHsxIC4uIDF9CiAoMSByb3cpCiAKIC0tIE1hc2sgREVUQUlMIG1lc3NhZ2VzIGFzIHRo ZXNlIGFyZSBub3QgcG9ydGFibGUgYWNyb3NzIGFyY2hpdGVjdHVyZXMuCmRpZmYgLS1naXQg YS9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjExLS0xLjEyLnNxbCBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEuMTEtLTEuMTIuc3FsCmluZGV4IDcw YzNhYmNjZjU3Li5hMjBkNjdhOWU4MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVj dC9wYWdlaW5zcGVjdC0tMS4xMS0tMS4xMi5zcWwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVj dC9wYWdlaW5zcGVjdC0tMS4xMS0tMS4xMi5zcWwKQEAgLTIxLDMgKzIxLDIwIEBAIENSRUFU RSBGVU5DVElPTiBidF9tdWx0aV9wYWdlX3N0YXRzKElOIHJlbG5hbWUgdGV4dCwgSU4gYmxr bm8gaW50OCwgSU4gYmxrX2NvdW50CiBSRVRVUk5TIFNFVE9GIHJlY29yZAogQVMgJ01PRFVM RV9QQVRITkFNRScsICdidF9tdWx0aV9wYWdlX3N0YXRzJwogTEFOR1VBR0UgQyBTVFJJQ1Qg UEFSQUxMRUwgUkVTVFJJQ1RFRDsKKworLS0KKy0tIGFkZCBpbmZvcm1hdGlvbiBhYm91dCBC UklOIGVtcHR5IHJhbmdlcworLS0KK0RST1AgRlVOQ1RJT04gYnJpbl9wYWdlX2l0ZW1zKElO IHBhZ2UgYnl0ZWEsIElOIGluZGV4X29pZCByZWdjbGFzcyk7CitDUkVBVEUgRlVOQ1RJT04g YnJpbl9wYWdlX2l0ZW1zKElOIHBhZ2UgYnl0ZWEsIElOIGluZGV4X29pZCByZWdjbGFzcywK KyAgICBPVVQgaXRlbW9mZnNldCBpbnQsCisgICAgT1VUIGJsa251bSBpbnQ4LAorICAgIE9V VCBhdHRudW0gaW50LAorICAgIE9VVCBhbGxudWxscyBib29sLAorICAgIE9VVCBoYXNudWxs cyBib29sLAorICAgIE9VVCBwbGFjZWhvbGRlciBib29sLAorICAgIE9VVCBlbXB0eSBib29s LAorICAgIE9VVCB2YWx1ZSB0ZXh0KQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FTICdNT0RV TEVfUEFUSE5BTUUnLCAnYnJpbl9wYWdlX2l0ZW1zJworTEFOR1VBR0UgQyBTVFJJQ1QgUEFS QUxMRUwgUkVTVFJJQ1RFRDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9l eHBlY3RlZC9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQgYi9z cmMvdGVzdC9tb2R1bGVzL2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9n cmVzcy1pbnNlcnRpb24ub3V0CmluZGV4IDU4NGFjMjYwMmY3Li4yMDE3ODZjODJjMCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24t YW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2Jy aW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0 CkBAIC0yLDkgKzIsOSBAQCBQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucwogCiBz dGFydGluZyBwZXJtdXRhdGlvbjogczJjaGVjayBzMWIgczJiIHMxaSBzMnN1bW0gczFjIHMy YyBzMmNoZWNrCiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKLWl0 ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2 YWx1ZSAgIAotLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8 dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0KK2l0ZW1vZmZzZXR8YmxrbnVtfGF0dG51 bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnxlbXB0eXx2YWx1ZSAgIAorLS0tLS0t LS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t Ky0tLS0tLS0tCisgICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8 ZiAgICAgICAgICB8ZiAgICB8ezEgLi4gMX0KICgxIHJvdykKIAogc3RlcCBzMWI6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CkBAIC0yNCwxOCArMjQsMTggQEAg YnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcwogc3RlcCBzMWM6IENPTU1JVDsKIHN0ZXAgczJj OiBDT01NSVQ7CiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKLWl0 ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2 YWx1ZSAgICAgIAotLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAg ICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKLSAgICAgICAgIDJ8ICAg ICAxfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxMDAwfQor aXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVy fGVtcHR5fHZhbHVlICAgICAgCistLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0KKyAgICAgICAgIDF8ICAg ICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHxmICAgIHx7MSAuLiAx fSAgIAorICAgICAgICAgMnwgICAgIDF8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAg ICAgICAgfGYgICAgfHsxIC4uIDEwMDB9CiAoMiByb3dzKQogCiAKIHN0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMmNoZWNrIHMxYiBzMWkgczJ2YWN1dW0gczFjIHMyY2hlY2sKIHN0ZXAgczJj aGVjazogU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmlu aWR4JywgMiksICdicmluaWR4Jzo6cmVnY2xhc3MpOwotaXRlbW9mZnNldHxibGtudW18YXR0 bnVtfGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgCi0tLS0tLS0tLS0t Ky0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0K LSAgICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAg IHx7MSAuLiAxfQoraXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhhc251bGxz fHBsYWNlaG9sZGVyfGVtcHR5fHZhbHVlICAgCistLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0KKyAgICAgICAg IDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHxmICAgIHx7 MSAuLiAxfQogKDEgcm93KQogCiBzdGVwIHMxYjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsKQEAgLTQzLDkgKzQzLDkgQEAgc3RlcCBzMWk6IElOU0VSVCBJTlRP IGJyaW5faXNvIFZBTFVFUyAoMTAwMCk7CiBzdGVwIHMydmFjdXVtOiBWQUNVVU0gYnJpbl9p c287CiBzdGVwIHMxYzogQ09NTUlUOwogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJy aW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpy ZWdjbGFzcyk7Ci1pdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8 cGxhY2Vob2xkZXJ8dmFsdWUgICAgICAKLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQotICAgICAgICAgMXwgICAg IDB8ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9ICAgCi0g ICAgICAgICAyfCAgICAgMXwgICAgIDF8ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8 ezEgLi4gMTAwMH0KK2l0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxs c3xwbGFjZWhvbGRlcnxlbXB0eXx2YWx1ZSAgICAgIAorLS0tLS0tLS0tLSstLS0tLS0rLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tCisg ICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8 ZiAgICB8ezEgLi4gMX0gICAKKyAgICAgICAgIDJ8ICAgICAxfCAgICAgMXxmICAgICAgIHxm ICAgICAgIHxmICAgICAgICAgIHxmICAgIHx7MSAuLiAxMDAwfQogKDIgcm93cykKIAotLSAK Mi4zOS4yCgo= --------------D0EwAAKYWgNnRjRkzXDIwuL0 Content-Type: text/x-patch; charset=UTF-8; name="0003-extra-tests.patch" Content-Disposition: attachment; filename="0003-extra-tests.patch" Content-Transfer-Encoding: base64 RnJvbSAzOTA2NzYzZjRjZDg5NmM1ZmFkNjgyNDhlYjc3ZmJkNTkyOTlmMTYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyNyBNYXIgMjAyMyAyMjo1MDo0NiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMy8zXSBleHRyYSB0ZXN0cwoKLS0tCiBjb250cmliL3BhZ2VpbnNwZWN0 L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICstCiBjb250cmliL3BhZ2VpbnNwZWN0 L2V4cGVjdGVkL2JyaW4tZmFpbHMub3V0IHwgMTUyICsrKysrKysrKysrKysrKwogY29udHJp Yi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluMi5vdXQgICAgICB8IDIwMSArKysrKysrKysr KysrKysrKysrKwogY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvYnJpbi1mYWlscy5zcWwgICAg ICB8ICA4NiArKysrKysrKysKIGNvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4yLnNxbCAg ICAgICAgICAgfCAxMTcgKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDU1NyBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9w YWdlaW5zcGVjdC9leHBlY3RlZC9icmluLWZhaWxzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGNvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbjIub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvYnJpbi1mYWlscy5zcWwKIGNyZWF0ZSBt b2RlIDEwMDY0NCBjb250cmliL3BhZ2VpbnNwZWN0L3NxbC9icmluMi5zcWwKCmRpZmYgLS1n aXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L01ha2VmaWxlIGIvY29udHJpYi9wYWdlaW5zcGVj dC9NYWtlZmlsZQppbmRleCA5NWUwMzBiMzk2OS4uNmE1Nzk1ZmRmZDkgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wYWdlaW5zcGVj dC9NYWtlZmlsZQpAQCAtMjIsNyArMjIsNyBAQCBEQVRBID0gIHBhZ2VpbnNwZWN0LS0xLjEx LS0xLjEyLnNxbCBwYWdlaW5zcGVjdC0tMS4xMC0tMS4xMS5zcWwgXAogCXBhZ2VpbnNwZWN0 LS0xLjAtLTEuMS5zcWwKIFBHRklMRURFU0MgPSAicGFnZWluc3BlY3QgLSBmdW5jdGlvbnMg dG8gaW5zcGVjdCBjb250ZW50cyBvZiBkYXRhYmFzZSBwYWdlcyIKIAotUkVHUkVTUyA9IHBh Z2UgYnRyZWUgYnJpbiBnaW4gZ2lzdCBoYXNoIGNoZWNrc3VtIG9sZGV4dHZlcnNpb25zCitS RUdSRVNTID0gcGFnZSBidHJlZSBicmluIGJyaW4yIGdpbiBnaXN0IGhhc2ggY2hlY2tzdW0g YnJpbi1mYWlscyBvbGRleHR2ZXJzaW9ucwogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklH ID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVk L2JyaW4tZmFpbHMub3V0IGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLWZh aWxzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDg0Nzk4 OTRlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVk L2JyaW4tZmFpbHMub3V0CkBAIC0wLDAgKzEsMTUyIEBACitjcmVhdGUgdGFibGUgdCAoYSBp bnQpOworLS0gd29ya3MKK2Ryb3AgaW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7CitOT1RJQ0U6 ICBpbmRleCAidF9hX2lkeCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCit0cnVuY2F0ZSB0 OworaW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpLCAoMSk7CitjcmVhdGUgaW5kZXggb24g dCB1c2luZyBicmluIChhKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zm c2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9s ZGVyIHwgZW1wdHkgfCAgdmFsdWUgICAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0KKyAgICAgICAgICAxIHwgICAgICAwIHwgICAgICAxIHwgZiAgICAgICAgfCB0ICAgICAg ICB8IGYgICAgICAgICAgIHwgZiAgICAgfCB7MSAuLiAxfQorKDEgcm93KQorCistLSB3b3Jr cworZHJvcCBpbmRleCBpZiBleGlzdHMgdF9hX2lkeDsKK3RydW5jYXRlIHQ7CitpbnNlcnQg aW50byB0IHZhbHVlcyAoMSksIChudWxsKTsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJy aW4gKGEpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0 X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtu dW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0 eSB8ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAg ICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IHQgICAgICAgIHwgZiAgICAg ICAgICAgfCBmICAgICB8IHsxIC4uIDF9CisoMSByb3cpCisKKy0tIGZhaWxzCitkcm9wIGlu ZGV4IGlmIGV4aXN0cyB0X2FfaWR4OwordHJ1bmNhdGUgdDsKK2luc2VydCBpbnRvIHQgdmFs dWVzIChudWxsKTsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpOworaW5zZXJ0 IGludG8gdCB2YWx1ZXMgKDEpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0 X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1v ZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vo b2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IHQgICAg ICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4uIDF9CisoMSByb3cpCisKKy0tIGZh aWxzCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2FfaWR4OwordHJ1bmNhdGUgdDsKK2NyZWF0 ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpOworaW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51 bGwpOworaW5zZXJ0IGludG8gdCB2YWx1ZXMgKDEpOworc2VsZWN0ICogZnJvbSBicmluX3Bh Z2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xh c3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251 bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAg ICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4uIDF9CisoMSBy b3cpCisKKy0tIHdvcmtzCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2FfaWR4OwordHJ1bmNh dGUgdDsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpIHdpdGggKHBhZ2VzX3Bl cl9yYW5nZT0xKTsKK2luc2VydCBpbnRvIHQgc2VsZWN0IG51bGwgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSwyOTEpOyAtLSBmaWxsIGZpcnN0IHBhZ2UKK2luc2VydCBpbnRvIHQgdmFsdWVz IChudWxsKSwgKDEpOworc2VsZWN0IGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMoJ3RfYV9p ZHgnKTsKKyBicmluX3N1bW1hcml6ZV9uZXdfdmFsdWVzIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitzZWxl Y3QgKiBmcm9tIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwg J3RfYV9pZHgnOjpyZWdjbGFzcyk7CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8 IGFsbG51bGxzIHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgIHZhbHVlICAg CistLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgMSB8ICAgICAg MCB8ICAgICAgMSB8IHQgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAg IHwgCisgICAgICAgICAgMiB8ICAgICAgMSB8ICAgICAgMSB8IGYgICAgICAgIHwgdCAgICAg ICAgfCBmICAgICAgICAgICB8IGYgICAgIHwgezEgLi4gMX0KKygyIHJvd3MpCisKKy0tIGZh aWxzCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2FfaWR4OwordHJ1bmNhdGUgdDsKK2NyZWF0 ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsK K2luc2VydCBpbnRvIHQgc2VsZWN0IG51bGwgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyOTEp OyAtLSBmaWxsIGZpcnN0IHBhZ2UKK2luc2VydCBpbnRvIHQgdmFsdWVzIChudWxsKTsKK3Nl bGVjdCBicmluX3N1bW1hcml6ZV9uZXdfdmFsdWVzKCd0X2FfaWR4Jyk7CisgYnJpbl9zdW1t YXJpemVfbmV3X3ZhbHVlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworaW5zZXJ0IGludG8gdCB2YWx1ZXMg KDEpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2Ff aWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0g fCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8 ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAg IDEgfCAgICAgIDAgfCAgICAgIDEgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAg ICAgfCBmICAgICB8IAorICAgICAgICAgIDIgfCAgICAgIDEgfCAgICAgIDEgfCBmICAgICAg ICB8IHQgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4uIDF9CisoMiByb3dz KQorCistLSB3b3JrcworZHJvcCBpbmRleCBpZiBleGlzdHMgdF9hX2lkeDsKK3RydW5jYXRl IHQ7CitjcmVhdGUgaW5kZXggb24gdCB1c2luZyBicmluIChhKSB3aXRoIChwYWdlc19wZXJf cmFuZ2U9MSk7CitpbnNlcnQgaW50byB0IHNlbGVjdCBudWxsIGZyb20gZ2VuZXJhdGVfc2Vy aWVzKDEsMjkxKTsgLS0gZmlsbCBmaXJzdCBwYWdlCitpbnNlcnQgaW50byB0IHZhbHVlcyAo bnVsbCk7CitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgYnJpbl9zdW1tYXJp emVfbmV3X3ZhbHVlcygndF9hX2lkeCcpOworIGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAxCisoMSByb3cpCisKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3NlbGVjdCAqIGZy b20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lk eCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVs bHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCAgdmFsdWUgICAKKy0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAwIHwgICAg ICAxIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgfCAKKyAg ICAgICAgICAyIHwgICAgICAxIHwgICAgICAxIHwgZiAgICAgICAgfCB0ICAgICAgICB8IGYg ICAgICAgICAgIHwgZiAgICAgfCB7MSAuLiAxfQorKDIgcm93cykKKworLS0gZmFpbHMKK2Ry b3AgaW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7Cit0cnVuY2F0ZSB0OworY3JlYXRlIGluZGV4 IG9uIHQgdXNpbmcgYnJpbiAoYSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworaW5zZXJ0 IGludG8gdCBzZWxlY3QgbnVsbCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI5MSk7IC0tIGZp bGwgZmlyc3QgcGFnZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpOworaW5zZXJ0IGlu dG8gdCB2YWx1ZXMgKG51bGwpOworc2VsZWN0IGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMo J3RfYV9pZHgnKTsKKyBicmluX3N1bW1hcml6ZV9uZXdfdmFsdWVzIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQor CitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBmcm9tIGJyaW5fcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgnOjpyZWdjbGFzcyk7 CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMg fCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgIHZhbHVlICAgCistLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tCisgICAgICAgICAgMSB8ICAgICAgMCB8ICAgICAgMSB8IHQgICAgICAg IHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgIHwgCisgICAgICAgICAgMiB8ICAg ICAgMSB8ICAgICAgMSB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgICB8IGYg ICAgIHwgezEgLi4gMX0KKygyIHJvd3MpCisKKy0tIGZhaWxzCitkcm9wIGluZGV4IGlmIGV4 aXN0cyB0X2FfaWR4OwordHJ1bmNhdGUgdDsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJy aW4gKGEpIHdpdGggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2luc2VydCBpbnRvIHQgc2VsZWN0 IG51bGwgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyOTEpOyAtLSBmaWxsIGZpcnN0IHBhZ2UK K2luc2VydCBpbnRvIHQgdmFsdWVzIChudWxsKTsKK2luc2VydCBpbnRvIHQgdmFsdWVzIChu dWxsKTsKK3NlbGVjdCBicmluX3N1bW1hcml6ZV9uZXdfdmFsdWVzKCd0X2FfaWR4Jyk7Cisg YnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworaW5zZXJ0IGludG8g dCB2YWx1ZXMgKG51bGwpOworaW5zZXJ0IGludG8gdCB2YWx1ZXMgKDEpOworc2VsZWN0ICog ZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2Ff aWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxu dWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAg ICAgIDEgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IAor ICAgICAgICAgIDIgfCAgICAgIDEgfCAgICAgIDEgfCBmICAgICAgICB8IHQgICAgICAgIHwg ZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4uIDF9CisoMiByb3dzKQorCitkcm9wIHRhYmxl IHQ7CmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2JyaW4yLm91 dCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbjIub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NDA2YTc5MmNkMwotLS0gL2Rldi9udWxs CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbjIub3V0CkBAIC0wLDAg KzEsMjAxIEBACitjcmVhdGUgdGFibGUgdCAoYSBpbnQpOworLS0gCitkcm9wIGluZGV4IGlm IGV4aXN0cyB0X2FfaWR4OworTk9USUNFOiAgaW5kZXggInRfYV9pZHgiIGRvZXMgbm90IGV4 aXN0LCBza2lwcGluZwordHJ1bmNhdGUgdDsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJy aW4gKGEpOworLS0gZW1wdHkgcmFuZ2UsIGFsbF9udWxscz10cnVlIChkZWZhdWx0KQorc2Vs ZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiks ICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0g fCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8IHZhbHVlIAor LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAg ICAgIDEgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCB0ICAgICB8IAor KDEgcm93KQorCistLSBpbnNlcnQgTlVMTCB2YWx1ZSwgcmFuZ2Ugbm8gbG9uZ2VyIGVtcHR5 LCBhbGxfbnVsbHM9dHJ1ZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKE5VTEwpOworc2VsZWN0 ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0 X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBh bGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8IHZhbHVlIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAg IDEgfCB0ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IAorKDEg cm93KQorCistLSBhbm90aGVyIE5VTEwgdmFsdWUsIHN0aWxsIGFsbF9udWxscz10cnVlCitp bnNlcnQgaW50byB0IHZhbHVlcyAoTlVMTCk7CitzZWxlY3QgKiBmcm9tIGJyaW5fcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgnOjpyZWdjbGFzcyk7 CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMg fCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgdmFsdWUgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tCisgICAgICAgICAgMSB8ICAgICAgMCB8ICAgICAgMSB8IHQgICAgICAgIHwgZiAg ICAgICAgfCBmICAgICAgICAgICB8IGYgICAgIHwgCisoMSByb3cpCisKKy0tIG5vdC1OVUxM IHZhbHVlLCBzd2l0Y2hlcyB0byBoYXNfbnVsbHM9dHJ1ZQoraW5zZXJ0IGludG8gdCB2YWx1 ZXMgKDEpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0 X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtu dW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0 eSB8ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAg ICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IHQgICAgICAgIHwgZiAgICAg ICAgICAgfCBmICAgICB8IHsxIC4uIDF9CisoMSByb3cpCisKKy0tIHJlaW5zZXJ0IHRoZSBu b3QtTlVMTCB2YWx1ZSwgc3RheXMgdGhlIHNhbWUKK2luc2VydCBpbnRvIHQgdmFsdWVzICgx KTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lk eCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwg YXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCAg dmFsdWUgICAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAx IHwgICAgICAwIHwgICAgICAxIHwgZiAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICAg IHwgZiAgICAgfCB7MSAuLiAxfQorKDEgcm93KQorCistLSBhbm90aGVyIG5vdC1OVUxMIHZh bHVlLCBzdGlsbCBoYXNfbnVsbHM9dHJ1ZSwgcmFuZ2UgZXh0ZW5kcworaW5zZXJ0IGludG8g dCB2YWx1ZXMgKDIpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19w YWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQg fCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIg fCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQor ICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IHQgICAgICAgIHwg ZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4uIDJ9CisoMSByb3cpCisKKy0tIGFub3RoZXIg TlVMTCB2YWx1ZSwgc3RpbGwgaGFzX251bGxzPXRydWUKK2luc2VydCBpbnRvIHQgdmFsdWVz IChOVUxMKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgn dF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxr bnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1w dHkgfCAgdmFsdWUgICAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAg ICAgICAxIHwgICAgICAwIHwgICAgICAxIHwgZiAgICAgICAgfCB0ICAgICAgICB8IGYgICAg ICAgICAgIHwgZiAgICAgfCB7MSAuLiAyfQorKDEgcm93KQorCistLQorZHJvcCBpbmRleCBp ZiBleGlzdHMgdF9hX2lkeDsKK3RydW5jYXRlIHQ7CitjcmVhdGUgaW5kZXggb24gdCB1c2lu ZyBicmluIChhKTsKKy0tIGVtcHR5IHJhbmdlLCBhbGxfbnVsbHM9dHJ1ZSAoZGVmYXVsdCkK K3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcs IDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0 bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCB2YWx1 ZSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAw IHwgICAgICAxIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwgdCAgICAg fCAKKygxIHJvdykKKworLS0gaW5zZXJ0IG5vbi1OVUxMIHZhbHVlLCByYW5nZSBubyBsb25n ZXIgZW1wdHksIGFsbF9udWxscz1mYWxzZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKDEpOwor c2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4Jywg MiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRu dW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1 ZSAgIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAg ICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBm ICAgICB8IHsxIC4uIDF9CisoMSByb3cpCisKKy0tIHJlLWluc2VydCBub24tTlVMTCB2YWx1 ZSwgc3RheXMgdGhlIHNhbWUKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3NlbGVjdCAq IGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9h X2lkeCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxs bnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCAgdmFsdWUgICAKKy0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAwIHwg ICAgICAxIHwgZiAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgfCB7 MSAuLiAxfQorKDEgcm93KQorCistLSBpbnNlcnQgTlVMTCB2YWx1ZSwgaGFzX251bGxzPXRy dWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2Ns YXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNu dWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCAgdmFsdWUgICAKKy0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAwIHwgICAgICAxIHwgZiAg ICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgfCB7MSAuLiAxfQorKDEg cm93KQorCistLSBhbm90aGVyIG5vdC1OVUxMIHZhbHVlLCBzdGlsbCBoYXNfbnVsbHM9dHJ1 ZSwgcmFuZ2UgZXhwYW5kcworaW5zZXJ0IGludG8gdCB2YWx1ZXMgKDIpOworc2VsZWN0ICog ZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2Ff aWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxu dWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAg ICAgIDEgfCBmICAgICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsx IC4uIDJ9CisoMSByb3cpCisKKy0tIGFub3RoZXIgTlVMTCB2YWx1ZSwgc3RpbGwgaGFzX251 bGxzPXRydWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsKK3NlbGVjdCAqIGZyb20g YnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6 OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMg fCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCAgdmFsdWUgICAKKy0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAwIHwgICAgICAx IHwgZiAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgfCB7MSAuLiAy fQorKDEgcm93KQorCistLQorZHJvcCBpbmRleCBpZiBleGlzdHMgdF9hX2lkeDsKK3RydW5j YXRlIHQ7CitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7IC0tIHN0YXJ0IHdpdGggb25lIG5v bi1OVUxMIHZhbHVlCitjcmVhdGUgaW5kZXggb24gdCB1c2luZyBicmluIChhKTsKKy0tIG5v bi1lbXB0eSByYW5nZSwgYWxsX251bGxzL2hhc19udWxscz1mYWxzZQorc2VsZWN0ICogZnJv bSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4 Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxs cyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAg IDEgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4u IDF9CisoMSByb3cpCisKKy0tIHJlLWluc2VydCB0aGUgbm9uLU5VTEwgdmFsdWUsIHN0YXlz IHRoZSBzYW1lCitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBmcm9tIGJy aW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgnOjpy ZWdjbGFzcyk7CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxzIHwg aGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgIHZhbHVlICAgCistLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgMSB8ICAgICAgMCB8ICAgICAgMSB8 IGYgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgIHwgezEgLi4gMX0K KygxIHJvdykKKworLS0gaW5zZXJ0IGFub3RoZXIgbm9uLU5VTEwgdmFsdWUsIG51bGwgZmxh Z3Mgc3RheSB0aGUgc2FtZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKDIpOworc2VsZWN0ICog ZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2Ff aWR4Jzo6cmVnY2xhc3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxu dWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAg ICAgIDEgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsx IC4uIDJ9CisoMSByb3cpCisKKy0tIGluc2VydCBOVUxMIHZhbHVlLCBoYXNfbnVsbHM9dHJ1 ZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpOworc2VsZWN0ICogZnJvbSBicmluX3Bh Z2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xh c3MpOworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251 bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAgIAorLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAg ICAgICB8IHQgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IHsxIC4uIDJ9CisoMSBy b3cpCisKKy0tCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2FfaWR4OwordHJ1bmNhdGUgdDsK K2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsgLS0gc3RhcnQgd2l0aCBvbmUgbm9uLU5V TEwgdmFsdWUKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpOworLS0gbm9uLWVt cHR5IHJhbmdlLCBhbGxfbnVsbHM9dHJ1ZQorc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRl bXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOwor IGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwg cGxhY2Vob2xkZXIgfCBlbXB0eSB8IHZhbHVlIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLQorICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCB0ICAgICAgICB8IGYgICAg ICAgIHwgZiAgICAgICAgICAgfCBmICAgICB8IAorKDEgcm93KQorCistLSByZS1pbnNlcnQg TlVMTCwgc3RheXMgdGhlIHNhbWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsKK3Nl bGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIp LCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVt IHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCB2YWx1ZSAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAwIHwg ICAgICAxIHwgdCAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgfCAK KygxIHJvdykKKworLS0gaW5zZXJ0IGEgbm9uLU5VTEwgdmFsdWUsIHN3aXRjaGVzIHRvIGhh c19udWxscz10cnVlCitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBmcm9t IGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgn OjpyZWdjbGFzcyk7CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxz IHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgIHZhbHVlICAgCistLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgMSB8ICAgICAgMCB8ICAgICAg MSB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgIHwgezEgLi4g MX0KKygxIHJvdykKKworLS0gcmUtaW5zZXJ0IHRoZSBub24tTlVMTCB2YWx1ZSwgc3RheXMg dGhlIHNhbWUKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3NlbGVjdCAqIGZyb20gYnJp bl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJl Z2NsYXNzKTsKKyBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBo YXNudWxscyB8IHBsYWNlaG9sZGVyIHwgZW1wdHkgfCAgdmFsdWUgICAKKy0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAxIHwgICAgICAwIHwgICAgICAxIHwg ZiAgICAgICAgfCB0ICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgICAgfCB7MSAuLiAxfQor KDEgcm93KQorCistLSBpbnNlcnQgYW5vdGhlciB0aGUgbm9uLU5VTEwgdmFsdWUsIHN0YXlz IHRoZSBzYW1lLCByYW5nZSB1cGRhdGVkCitpbnNlcnQgaW50byB0IHZhbHVlcyAoMik7Citz ZWxlY3QgKiBmcm9tIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAy KSwgJ3RfYV9pZHgnOjpyZWdjbGFzcyk7CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51 bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgIHZhbHVl ICAgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgMSB8ICAg ICAgMCB8ICAgICAgMSB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgICB8IGYg ICAgIHwgezEgLi4gMn0KKygxIHJvdykKKworLS0gaW5zZXJ0IE5VTEwgdmFsdWUsIHN0YXlz IHRoZSBzYW1lCitpbnNlcnQgaW50byB0IHZhbHVlcyAoTlVMTCk7CitzZWxlY3QgKiBmcm9t IGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgn OjpyZWdjbGFzcyk7CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxz IHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgIHZhbHVlICAgCistLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgMSB8ICAgICAgMCB8ICAgICAg MSB8IGYgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgIHwgezEgLi4g Mn0KKygxIHJvdykKKworZHJvcCB0YWJsZSB0OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdl aW5zcGVjdC9zcWwvYnJpbi1mYWlscy5zcWwgYi9jb250cmliL3BhZ2VpbnNwZWN0L3NxbC9i cmluLWZhaWxzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZTViMzdmYTZiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L3Nx bC9icmluLWZhaWxzLnNxbApAQCAtMCwwICsxLDg2IEBACitjcmVhdGUgdGFibGUgdCAoYSBp bnQpOworCistLSB3b3JrcworZHJvcCBpbmRleCBpZiBleGlzdHMgdF9hX2lkeDsKK3RydW5j YXRlIHQ7CitpbnNlcnQgaW50byB0IHZhbHVlcyAobnVsbCksICgxKTsKK2NyZWF0ZSBpbmRl eCBvbiB0IHVzaW5nIGJyaW4gKGEpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMo Z2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworCist LSB3b3JrcworZHJvcCBpbmRleCBpZiBleGlzdHMgdF9hX2lkeDsKK3RydW5jYXRlIHQ7Citp bnNlcnQgaW50byB0IHZhbHVlcyAoMSksIChudWxsKTsKK2NyZWF0ZSBpbmRleCBvbiB0IHVz aW5nIGJyaW4gKGEpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19w YWdlKCd0X2FfaWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworCistLSBmYWlscwor ZHJvcCBpbmRleCBpZiBleGlzdHMgdF9hX2lkeDsKK3RydW5jYXRlIHQ7CitpbnNlcnQgaW50 byB0IHZhbHVlcyAobnVsbCk7CitjcmVhdGUgaW5kZXggb24gdCB1c2luZyBicmluIChhKTsK K2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0 ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsK KworLS0gZmFpbHMKK2Ryb3AgaW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7Cit0cnVuY2F0ZSB0 OworY3JlYXRlIGluZGV4IG9uIHQgdXNpbmcgYnJpbiAoYSk7CitpbnNlcnQgaW50byB0IHZh bHVlcyAobnVsbCk7CitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBmcm9t IGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgn OjpyZWdjbGFzcyk7CisKKy0tIHdvcmtzCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2FfaWR4 OwordHJ1bmNhdGUgdDsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpIHdpdGgg KHBhZ2VzX3Blcl9yYW5nZT0xKTsKK2luc2VydCBpbnRvIHQgc2VsZWN0IG51bGwgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwyOTEpOyAtLSBmaWxsIGZpcnN0IHBhZ2UKK2luc2VydCBpbnRv IHQgdmFsdWVzIChudWxsKSwgKDEpOworc2VsZWN0IGJyaW5fc3VtbWFyaXplX25ld192YWx1 ZXMoJ3RfYV9pZHgnKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdf cGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gZmFpbHMK K2Ryb3AgaW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7Cit0cnVuY2F0ZSB0OworY3JlYXRlIGlu ZGV4IG9uIHQgdXNpbmcgYnJpbiAoYSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworaW5z ZXJ0IGludG8gdCBzZWxlY3QgbnVsbCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI5MSk7IC0t IGZpbGwgZmlyc3QgcGFnZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpOworc2VsZWN0 IGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMoJ3RfYV9pZHgnKTsKK2luc2VydCBpbnRvIHQg dmFsdWVzICgxKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gd29ya3MKK2Ry b3AgaW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7Cit0cnVuY2F0ZSB0OworY3JlYXRlIGluZGV4 IG9uIHQgdXNpbmcgYnJpbiAoYSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworaW5zZXJ0 IGludG8gdCBzZWxlY3QgbnVsbCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI5MSk7IC0tIGZp bGwgZmlyc3QgcGFnZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpOworaW5zZXJ0IGlu dG8gdCB2YWx1ZXMgKDEpOworc2VsZWN0IGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMoJ3Rf YV9pZHgnKTsKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3NlbGVjdCAqIGZyb20gYnJp bl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJl Z2NsYXNzKTsKKworLS0gZmFpbHMKK2Ryb3AgaW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7Cit0 cnVuY2F0ZSB0OworY3JlYXRlIGluZGV4IG9uIHQgdXNpbmcgYnJpbiAoYSkgd2l0aCAocGFn ZXNfcGVyX3JhbmdlPTEpOworaW5zZXJ0IGludG8gdCBzZWxlY3QgbnVsbCBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDI5MSk7IC0tIGZpbGwgZmlyc3QgcGFnZQoraW5zZXJ0IGludG8gdCB2 YWx1ZXMgKG51bGwpOworaW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpOworc2VsZWN0IGJy aW5fc3VtbWFyaXplX25ld192YWx1ZXMoJ3RfYV9pZHgnKTsKK2luc2VydCBpbnRvIHQgdmFs dWVzICgxKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgn dF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gZmFpbHMKK2Ryb3Ag aW5kZXggaWYgZXhpc3RzIHRfYV9pZHg7Cit0cnVuY2F0ZSB0OworY3JlYXRlIGluZGV4IG9u IHQgdXNpbmcgYnJpbiAoYSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOworaW5zZXJ0IGlu dG8gdCBzZWxlY3QgbnVsbCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI5MSk7IC0tIGZpbGwg Zmlyc3QgcGFnZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKG51bGwpOworaW5zZXJ0IGludG8g dCB2YWx1ZXMgKG51bGwpOworc2VsZWN0IGJyaW5fc3VtbWFyaXplX25ld192YWx1ZXMoJ3Rf YV9pZHgnKTsKK2luc2VydCBpbnRvIHQgdmFsdWVzIChudWxsKTsKK2luc2VydCBpbnRvIHQg dmFsdWVzICgxKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworZHJvcCB0YWJsZSB0 OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvYnJpbjIuc3FsIGIvY29u dHJpYi9wYWdlaW5zcGVjdC9zcWwvYnJpbjIuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi41MDEyNTJlN2I4YwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4yLnNxbApAQCAtMCwwICsxLDExNyBAQAorY3JlYXRl IHRhYmxlIHQgKGEgaW50KTsKKworLS0gCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2FfaWR4 OwordHJ1bmNhdGUgdDsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpOworCist LSBlbXB0eSByYW5nZSwgYWxsX251bGxzPXRydWUgKGRlZmF1bHQpCitzZWxlY3QgKiBmcm9t IGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgn OjpyZWdjbGFzcyk7CisKKy0tIGluc2VydCBOVUxMIHZhbHVlLCByYW5nZSBubyBsb25nZXIg ZW1wdHksIGFsbF9udWxscz10cnVlCitpbnNlcnQgaW50byB0IHZhbHVlcyAoTlVMTCk7Citz ZWxlY3QgKiBmcm9tIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAy KSwgJ3RfYV9pZHgnOjpyZWdjbGFzcyk7CisKKy0tIGFub3RoZXIgTlVMTCB2YWx1ZSwgc3Rp bGwgYWxsX251bGxzPXRydWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsKK3NlbGVj dCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAn dF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gbm90LU5VTEwgdmFsdWUsIHN3aXRjaGVzIHRv IGhhc19udWxscz10cnVlCitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBm cm9tIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9p ZHgnOjpyZWdjbGFzcyk7CisKKy0tIHJlaW5zZXJ0IHRoZSBub3QtTlVMTCB2YWx1ZSwgc3Rh eXMgdGhlIHNhbWUKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3NlbGVjdCAqIGZyb20g YnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6 OnJlZ2NsYXNzKTsKKworLS0gYW5vdGhlciBub3QtTlVMTCB2YWx1ZSwgc3RpbGwgaGFzX251 bGxzPXRydWUsIHJhbmdlIGV4dGVuZHMKK2luc2VydCBpbnRvIHQgdmFsdWVzICgyKTsKK3Nl bGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIp LCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gYW5vdGhlciBOVUxMIHZhbHVlLCBzdGls bCBoYXNfbnVsbHM9dHJ1ZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKE5VTEwpOworc2VsZWN0 ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0 X2FfaWR4Jzo6cmVnY2xhc3MpOworCisKKy0tCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2Ff aWR4OwordHJ1bmNhdGUgdDsKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEpOwor CistLSBlbXB0eSByYW5nZSwgYWxsX251bGxzPXRydWUgKGRlZmF1bHQpCitzZWxlY3QgKiBm cm9tIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9p ZHgnOjpyZWdjbGFzcyk7CisKKy0tIGluc2VydCBub24tTlVMTCB2YWx1ZSwgcmFuZ2Ugbm8g bG9uZ2VyIGVtcHR5LCBhbGxfbnVsbHM9ZmFsc2UKK2luc2VydCBpbnRvIHQgdmFsdWVzICgx KTsKK3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lk eCcsIDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gcmUtaW5zZXJ0IG5vbi1OVUxM IHZhbHVlLCBzdGF5cyB0aGUgc2FtZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKDEpOworc2Vs ZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiks ICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworCistLSBpbnNlcnQgTlVMTCB2YWx1ZSwgaGFzX251 bGxzPXRydWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsKK3NlbGVjdCAqIGZyb20g YnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6 OnJlZ2NsYXNzKTsKKworLS0gYW5vdGhlciBub3QtTlVMTCB2YWx1ZSwgc3RpbGwgaGFzX251 bGxzPXRydWUsIHJhbmdlIGV4cGFuZHMKK2luc2VydCBpbnRvIHQgdmFsdWVzICgyKTsKK3Nl bGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIp LCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gYW5vdGhlciBOVUxMIHZhbHVlLCBzdGls bCBoYXNfbnVsbHM9dHJ1ZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMgKE5VTEwpOworc2VsZWN0 ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0 X2FfaWR4Jzo6cmVnY2xhc3MpOworCisKKy0tCitkcm9wIGluZGV4IGlmIGV4aXN0cyB0X2Ff aWR4OwordHJ1bmNhdGUgdDsKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsgLS0gc3RhcnQg d2l0aCBvbmUgbm9uLU5VTEwgdmFsdWUKK2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4g KGEpOworCistLSBub24tZW1wdHkgcmFuZ2UsIGFsbF9udWxscy9oYXNfbnVsbHM9ZmFsc2UK K3NlbGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcs IDIpLCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gcmUtaW5zZXJ0IHRoZSBub24tTlVM TCB2YWx1ZSwgc3RheXMgdGhlIHNhbWUKK2luc2VydCBpbnRvIHQgdmFsdWVzICgxKTsKK3Nl bGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIp LCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gaW5zZXJ0IGFub3RoZXIgbm9uLU5VTEwg dmFsdWUsIG51bGwgZmxhZ3Mgc3RheSB0aGUgc2FtZQoraW5zZXJ0IGludG8gdCB2YWx1ZXMg KDIpOworc2VsZWN0ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2Ff aWR4JywgMiksICd0X2FfaWR4Jzo6cmVnY2xhc3MpOworCistLSBpbnNlcnQgTlVMTCB2YWx1 ZSwgaGFzX251bGxzPXRydWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChudWxsKTsKK3NlbGVj dCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAn dF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworCistLQorZHJvcCBpbmRleCBpZiBleGlzdHMgdF9h X2lkeDsKK3RydW5jYXRlIHQ7CitpbnNlcnQgaW50byB0IHZhbHVlcyAoTlVMTCk7IC0tIHN0 YXJ0IHdpdGggb25lIG5vbi1OVUxMIHZhbHVlCitjcmVhdGUgaW5kZXggb24gdCB1c2luZyBi cmluIChhKTsKKworLS0gbm9uLWVtcHR5IHJhbmdlLCBhbGxfbnVsbHM9dHJ1ZQorc2VsZWN0 ICogZnJvbSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0X2FfaWR4JywgMiksICd0 X2FfaWR4Jzo6cmVnY2xhc3MpOworCistLSByZS1pbnNlcnQgTlVMTCwgc3RheXMgdGhlIHNh bWUKK2luc2VydCBpbnRvIHQgdmFsdWVzIChOVUxMKTsKK3NlbGVjdCAqIGZyb20gYnJpbl9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIpLCAndF9hX2lkeCc6OnJlZ2Ns YXNzKTsKKworLS0gaW5zZXJ0IGEgbm9uLU5VTEwgdmFsdWUsIHN3aXRjaGVzIHRvIGhhc19u dWxscz10cnVlCitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBmcm9tIGJy aW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgnOjpy ZWdjbGFzcyk7CisKKy0tIHJlLWluc2VydCB0aGUgbm9uLU5VTEwgdmFsdWUsIHN0YXlzIHRo ZSBzYW1lCitpbnNlcnQgaW50byB0IHZhbHVlcyAoMSk7CitzZWxlY3QgKiBmcm9tIGJyaW5f cGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgnOjpyZWdj bGFzcyk7CisKKy0tIGluc2VydCBhbm90aGVyIHRoZSBub24tTlVMTCB2YWx1ZSwgc3RheXMg dGhlIHNhbWUsIHJhbmdlIHVwZGF0ZWQKK2luc2VydCBpbnRvIHQgdmFsdWVzICgyKTsKK3Nl bGVjdCAqIGZyb20gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgndF9hX2lkeCcsIDIp LCAndF9hX2lkeCc6OnJlZ2NsYXNzKTsKKworLS0gaW5zZXJ0IE5VTEwgdmFsdWUsIHN0YXlz IHRoZSBzYW1lCitpbnNlcnQgaW50byB0IHZhbHVlcyAoTlVMTCk7CitzZWxlY3QgKiBmcm9t IGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3RfYV9pZHgnLCAyKSwgJ3RfYV9pZHgn OjpyZWdjbGFzcyk7CisKKworZHJvcCB0YWJsZSB0OwotLSAKMi4zOS4yCgo= --------------D0EwAAKYWgNnRjRkzXDIwuL0 Content-Type: application/x-shellscript; name="stress-test.sh" Content-Disposition: attachment; filename="stress-test.sh" Content-Transfer-Encoding: base64 IyEvYmluL2Jhc2gKCnJ1bj0wCgp3aGlsZSAvYmluL3RydWU7IGRvCgogICAgICAgIHJ1bj0k KChydW4rMSkpCgogICAgICAgIGRhdGUKCiAgICAgICAgZWNobyBSVU4gJHJ1bgoKICAgICAg ICBOVUxMX1BDVD0kKChSQU5ET00gJSAxMDApKQogICAgICAgIFNVTV9QQ1Q9JCgoUkFORE9N ICUgMTAwKSkKICAgICAgICBST1dTPTEwMDAwCgogICAgICAgIGVjaG8gIi0tICRST1dTICRO VUxMX1BDVCAkU1VNX1BDVCIgPiBpbml0LSRydW4uc3FsCgogICAgICAgIGVjaG8gJ2Ryb3Ag dGFibGUgaWYgZXhpc3RzIHQ7JyA+PiBpbml0LSRydW4uc3FsCiAgICAgICAgZWNobyAnY3Jl YXRlIHRhYmxlIHQgKGEgaW50KSB3aXRoIChmaWxsZmFjdG9yID0gMTApOycgPj4gaW5pdC0k cnVuLnNxbAogICAgICAgIGVjaG8gJ2NyZWF0ZSBpbmRleCB0X2FfaWR4IG9uIHQgdXNpbmcg YnJpbiAoYSkgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpOycgPj4gaW5pdC0kcnVuLnNxbAoK ICAgICAgICBmb3IgdiBpbiBgc2VxIDEgJFJPV1NgOyBkbwogICAgICAgICAgICAgICAgZWNo byAiaW5zZXJ0IGludG8gdCB2YWx1ZXMgKGNhc2Ugd2hlbiByYW5kb20oKSAqIDEwMCA8ICRO VUxMX1BDVCB0aGVuIG51bGwgZWxzZSAxMDAwICogcmFuZG9tKCkgZW5kKTsiID4+IGluaXQt JHJ1bi5zcWwKCiAgICAgICAgICAgICAgICByPSQoKFJBTkRPTSAlIDEwMCkpCgogICAgICAg ICAgICAgICAgaWYgWyAkciAtbHQgJFNVTV9QQ1QgXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgICAgICBlY2hvICJzZWxlY3QgYnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcygndF9hX2lk eCcpOyIgPj4gaW5pdC0kcnVuLnNxbAogICAgICAgICAgICAgICAgZmkKICAgICAgICBkb25l CgogICAgICAgIHBzcWwgdGVzdCA8IGluaXQtJHJ1bi5zcWwgPiBpbml0LmxvZyAyPiYxCgog ICAgICAgIHBzcWwgdGVzdCAtdCAtQSAtYyAnc2VsZWN0IGRpc3RpbmN0IGEgZnJvbSB0IG9y ZGVyIGJ5IGEnID4gdmFsdWVzLnR4dAoKICAgICAgICB3aGlsZSByZWFkIGxpbmU7IGRvCgog ICAgICAgICAgICAgICAgaWYgWyAiJGxpbmUiID09ICIiIF07IHRoZW4KCiAgICAgICAgICAg ICAgICAgICAgICAgIHBzcWwgLXQgLUEgdGVzdCA+IHNlcXNjYW4udHh0IDw8RU9GCnNldCBl bmFibGVfYml0bWFwc2NhbiA9IG9mZjsKc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAwOwpleHBsYWluIHNlbGVjdCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSBpcyBu dWxsOwpzZWxlY3QgY291bnQoKikgZnJvbSB0IHdoZXJlIGEgaXMgbnVsbDsKRU9GCgogICAg ICAgICAgICAgICAgICAgICAgICBwc3FsIC10IC1BIHRlc3QgPiBpbmRleC50eHQgPDxFT0YK c2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOwpzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDA7CmV4cGxhaW4gc2VsZWN0IGNvdW50KCopIGZyb20gdCB3aGVyZSBhIGlz IG51bGw7CnNlbGVjdCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSBpcyBudWxsOwpFT0YKCiAg ICAgICAgICAgICAgICAgICAgICAgIGE9YHRhaWwgLW4gMSBzZXFzY2FuLnR4dGAKICAgICAg ICAgICAgICAgICAgICAgICAgYj1gdGFpbCAtbiAxIGluZGV4LnR4dGAKCiAgICAgICAgICAg ICAgICAgICAgICAgICMgY2F0IHNlcXNjYW4udHh0IGluZGV4LnR4dAoKICAgICAgICAgICAg ICAgICAgICAgICAgaWYgWyAiJGEiICE9ICIkYiIgXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVjaG8gIickbGluZSciICRhICRiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZWNobyAiKioqKiogRkFJTCAkcnVuICoqKioqIgogICAgICAgICAg ICAgICAgICAgICAgICBmaQoKICAgICAgICAgICAgICAgICAgICAgICAgcHNxbCAtdCAtQSB0 ZXN0ID4gc2Vxc2Nhbi50eHQgPDxFT0YKc2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOwpz ZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CmV4cGxhaW4gc2VsZWN0 IGNvdW50KCopIGZyb20gdCB3aGVyZSBhIGlzIG5vdCBudWxsOwpzZWxlY3QgY291bnQoKikg ZnJvbSB0IHdoZXJlIGEgaXMgbm90IG51bGw7CkVPRgoKICAgICAgICAgICAgICAgICAgICAg ICAgcHNxbCAtdCAtQSB0ZXN0ID4gaW5kZXgudHh0IDw8RU9GCnNldCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwpleHBs YWluIHNlbGVjdCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSBpcyBub3QgbnVsbDsKc2VsZWN0 IGNvdW50KCopIGZyb20gdCB3aGVyZSBhIGlzIG5vdCBudWxsOwpFT0YKCiAgICAgICAgICAg ICAgICAgICAgICAgIGE9YHRhaWwgLW4gMSBzZXFzY2FuLnR4dGAKICAgICAgICAgICAgICAg ICAgICAgICAgYj1gdGFpbCAtbiAxIGluZGV4LnR4dGAKCiAgICAgICAgICAgICAgICAgICAg ICAgICMgY2F0IHNlcXNjYW4udHh0IGluZGV4LnR4dAoKICAgICAgICAgICAgICAgICAgICAg ICAgaWYgWyAiJGEiICE9ICIkYiIgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVjaG8gIickbGluZSciICRhICRiCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZWNobyAiKioqKiogRkFJTCAkcnVuICoqKioqIgogICAgICAgICAgICAgICAgICAg ICAgICBmaQoKICAgICAgICAgICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAgICAgICAg IHBzcWwgLXQgLUEgdGVzdCA+IHNlcXNjYW4udHh0IDw8RU9GCnNldCBlbmFibGVfYml0bWFw c2NhbiA9IG9mZjsKc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwpl eHBsYWluIHNlbGVjdCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSA9ICRsaW5lOwpzZWxlY3Qg Y291bnQoKikgZnJvbSB0IHdoZXJlIGEgPSAkbGluZTsKRU9GCgogICAgICAgICAgICAgICAg ICAgICAgICBwc3FsIC10IC1BIHRlc3QgPiBpbmRleC50eHQgPDxFT0YKc2V0IGVuYWJsZV9z ZXFzY2FuID0gb2ZmOwpzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7 CmV4cGxhaW4gc2VsZWN0IGNvdW50KCopIGZyb20gdCB3aGVyZSBhID0gJGxpbmU7CnNlbGVj dCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSA9ICRsaW5lOwpFT0YKCiAgICAgICAgICAgICAg ICBmaQoKICAgICAgICAgICAgICAgIGE9YHRhaWwgLW4gMSBzZXFzY2FuLnR4dGAKICAgICAg ICAgICAgICAgIGI9YHRhaWwgLW4gMSBpbmRleC50eHRgCgogICAgICAgICAgICAgICAgIyBj YXQgc2Vxc2Nhbi50eHQgaW5kZXgudHh0CgogICAgICAgICAgICAgICAgaWYgWyAiJGEiICE9 ICIkYiIgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICInJGxpbmUnIiAk YSAkYgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIqKioqKiBGQUlMICRydW4gKioq KioiCiAgICAgICAgICAgICAgICBmaQoKICAgICAgICBkb25lIDwgdmFsdWVzLnR4dAoKICAg ICAgICBwc3FsIHRlc3QgLWMgJ2Ryb3AgaW5kZXggdF9hX2lkeCc7CiAgICAgICAgcHNxbCB0 ZXN0IC1jICdjcmVhdGUgaW5kZXggdF9hX2lkeCBvbiB0IHVzaW5nIGJyaW4gKGEpIHdpdGgg KHBhZ2VzX3Blcl9yYW5nZT0xKScKCiAgICAgICAgd2hpbGUgcmVhZCBsaW5lOyBkbwoKICAg ICAgICAgICAgICAgIGlmIFsgIiRsaW5lIiA9PSAiIiBdOyB0aGVuCgogICAgICAgICAgICAg ICAgICAgICAgICBwc3FsIC10IC1BIHRlc3QgPiBzZXFzY2FuLnR4dCA8PEVPRgpzZXQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CnNldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMDsKZXhwbGFpbiBzZWxlY3QgY291bnQoKikgZnJvbSB0IHdoZXJlIGEgaXMgbnVs bDsKc2VsZWN0IGNvdW50KCopIGZyb20gdCB3aGVyZSBhIGlzIG51bGw7CkVPRgoKICAgICAg ICAgICAgICAgICAgICAgICAgcHNxbCAtdCAtQSB0ZXN0ID4gaW5kZXgudHh0IDw8RU9GCnNl dCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAwOwpleHBsYWluIHNlbGVjdCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSBpcyBu dWxsOwpzZWxlY3QgY291bnQoKikgZnJvbSB0IHdoZXJlIGEgaXMgbnVsbDsKRU9GCgogICAg ICAgICAgICAgICAgICAgICAgICBhPWB0YWlsIC1uIDEgc2Vxc2Nhbi50eHRgCiAgICAgICAg ICAgICAgICAgICAgICAgIGI9YHRhaWwgLW4gMSBpbmRleC50eHRgCgogICAgICAgICAgICAg ICAgICAgICAgICAjIGNhdCBzZXFzY2FuLnR4dCBpbmRleC50eHQKCiAgICAgICAgICAgICAg ICAgICAgICAgIGlmIFsgIiRhIiAhPSAiJGIiIF07IHRoZW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlY2hvICInJGxpbmUnIiAkYSAkYgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVjaG8gIioqKioqIEZBSUwgJHJ1biAqKioqKiIKICAgICAgICAgICAg ICAgICAgICAgICAgZmkKCiAgICAgICAgICAgICAgICAgICAgICAgIHBzcWwgLXQgLUEgdGVz dCA+IHNlcXNjYW4udHh0IDw8RU9GCnNldCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKc2V0 IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwpleHBsYWluIHNlbGVjdCBj b3VudCgqKSBmcm9tIHQgd2hlcmUgYSBpcyBub3QgbnVsbDsKc2VsZWN0IGNvdW50KCopIGZy b20gdCB3aGVyZSBhIGlzIG5vdCBudWxsOwpFT0YKCiAgICAgICAgICAgICAgICAgICAgICAg IHBzcWwgLXQgLUEgdGVzdCA+IGluZGV4LnR4dCA8PEVPRgpzZXQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CnNldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKZXhwbGFp biBzZWxlY3QgY291bnQoKikgZnJvbSB0IHdoZXJlIGEgaXMgbm90IG51bGw7CnNlbGVjdCBj b3VudCgqKSBmcm9tIHQgd2hlcmUgYSBpcyBub3QgbnVsbDsKRU9GCgogICAgICAgICAgICAg ICAgICAgICAgICBhPWB0YWlsIC1uIDEgc2Vxc2Nhbi50eHRgCiAgICAgICAgICAgICAgICAg ICAgICAgIGI9YHRhaWwgLW4gMSBpbmRleC50eHRgCgogICAgICAgICAgICAgICAgICAgICAg ICAjIGNhdCBzZXFzY2FuLnR4dCBpbmRleC50eHQKCiAgICAgICAgICAgICAgICAgICAgICAg IGlmIFsgIiRhIiAhPSAiJGIiIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlY2hvICInJGxpbmUnIiAkYSAkYgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVjaG8gIioqKioqIEZBSUwgJHJ1biAqKioqKiIKICAgICAgICAgICAgICAgICAgICAg ICAgZmkKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgICAgICBw c3FsIC10IC1BIHRlc3QgPiBzZXFzY2FuLnR4dCA8PEVPRgpzZXQgZW5hYmxlX2JpdG1hcHNj YW4gPSBvZmY7CnNldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKZXhw bGFpbiBzZWxlY3QgY291bnQoKikgZnJvbSB0IHdoZXJlIGEgPSAkbGluZTsKc2VsZWN0IGNv dW50KCopIGZyb20gdCB3aGVyZSBhID0gJGxpbmU7CkVPRgoKICAgICAgICAgICAgICAgICAg ICAgICAgcHNxbCAtdCAtQSB0ZXN0ID4gaW5kZXgudHh0IDw8RU9GCnNldCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwpl eHBsYWluIHNlbGVjdCBjb3VudCgqKSBmcm9tIHQgd2hlcmUgYSA9ICRsaW5lOwpzZWxlY3Qg Y291bnQoKikgZnJvbSB0IHdoZXJlIGEgPSAkbGluZTsKRU9GCgogICAgICAgICAgICAgICAg ZmkKCiAgICAgICAgICAgICAgICBhPWB0YWlsIC1uIDEgc2Vxc2Nhbi50eHRgCiAgICAgICAg ICAgICAgICBiPWB0YWlsIC1uIDEgaW5kZXgudHh0YAoKICAgICAgICAgICAgICAgICMgY2F0 IHNlcXNjYW4udHh0IGluZGV4LnR4dAoKICAgICAgICAgICAgICAgIGlmIFsgIiRhIiAhPSAi JGIiIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiJyRsaW5lJyIgJGEg JGIKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiKioqKiogRkFJTCAkcnVuICoqKioq IgogICAgICAgICAgICAgICAgZmkKCiAgICAgICAgZG9uZSA8IHZhbHVlcy50eHQKCmRvbmUK --------------D0EwAAKYWgNnRjRkzXDIwuL0--