Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whrfo-000ShE-0n for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Jul 2026 16:32:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whrfl-00Dv3n-1p for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Jul 2026 16:32:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whrfk-00Dv3f-2x for pgsql-hackers@lists.postgresql.org; Thu, 09 Jul 2026 16:32:26 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1whrfi-00000000LVA-0ruZ for pgsql-hackers@lists.postgresql.org; Thu, 09 Jul 2026 16:32:24 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-493d92b7db3so21496875e9.2 for ; Thu, 09 Jul 2026 09:32:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783614741; cv=none; d=google.com; s=arc-20260327; b=LhJmrlQAvtZ+GdNQga54gkZ7m4+9xE+aUW1WmgRqqcH3oWZIzwkD0+uPmqSKEAFd4S eaFXfx8bu3ne3cK8gAYg0rehIMejDvh+UbUPBNrPVOV/oykM5KkPVjfJzZVSDVOtVwBj fBQOskcVQWW1wvHu3tDSQJ3ZsfrgWtOWROWbj9HnWTR83oSESPmGwrWCrVYxjUiV/Kn7 MP1936v8G/tfp8UXdCN7NCUFPgAoMVPrRm3FUc3wJmB4EPPrkIZzUUqaj5E93N6kUAFM IGMIrisMIDgRxucXFdmyWjFkhcvnQFGzcTZbWl+LrAbyCTWvQeLZDxUkDH4O3rjAUAD0 zZNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=0VhX5XamhTqGb39VGF4BXvZ7ayDd/ChIJfsoDgRbBF8=; fh=hfFR/I+Chaa6xI5WsXq5o9/oF7I8X26exkhGFJm0hgQ=; b=ECTtI4HNufrUE014YsBfusiadCqxUSMsYvDUWwJ/ptmaCGxgpmoG1WZ7iI+wowS5+l 9AmNW3EB4bEYEmehtTv6dJFn59+VR1VGCUDF1Ov5cQuWCVmVaF92f2Ov9XNQfb4xdRc1 jA+6LJdbPtnHCAv0Tlu8D8Sdt5UGY/8McZ+eaLf4Q4FodQ9iLhaLCwafAHamlBxZhuZ9 7k1qwh8/n4tvwKpLHsw702/J8BM25DxbHb0ZEqpm1iY7JWXTfOljeaK/zpVQp8v3GFxO AvRiFfJ8zYvbeakVsMLqOP2uxfKlYIIUrbuOoaya/ikqSPmnGY5xpULnWWdyfoygS9cD ECJg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bowt-ie.20251104.gappssmtp.com; s=20251104; t=1783614741; x=1784219541; darn=lists.postgresql.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0VhX5XamhTqGb39VGF4BXvZ7ayDd/ChIJfsoDgRbBF8=; b=y3dl9tzTWjW3L43UO/7VSerRS1ATOwp8vDMIpwCUMesszT1DUcFAorcWqEsbHskrNU BfT6MgX9ZQQmYUjPjLzYIAmvMvT2cVKZFiBtWwFwK2HbU/TDUEpnyYvTeU15ZJheDtls XLeaUXKoduwTIdKwtK6IcuJeNZK8yM3nu42US9hyTXpxbp/ME7YEjmxRFs/U1wZTGr3F h5OpVa5lq16s4b1a7iDFiYRA9UoHL3KVJidFoVtXd7olhHSgJ7Lf1W1NaZG/1IEHUn1c 9UNkQut3QU8oug8Rdb8F3CqaKekaYCZrQYmqb9GWW4UieAyYwG4AAVhkkHHdFidfdzTs Li/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783614741; x=1784219541; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=0VhX5XamhTqGb39VGF4BXvZ7ayDd/ChIJfsoDgRbBF8=; b=Efrp2718s9h7G/gjIZoIzU7ry1KHQGS0WubS21P+QgQQTDQVWltaQjX134R9ZhuxzI THMZ07KfAtaEKN9RQJ4ti30Uc4JVBiyAcgTi8sEuUo7UvTzJuC9f/yvuLprKpEMUInpK bvlKMgreQfDkSwK+1i3Ww/ilJTKShuXt67OnSEJZA8jMP6nT0cRAR5BX3FpfK+as5As/ qIdfRTvzqVBlvN7D3YUBD6DVbc27KJPqV2vQQd4nZamgIcmYVfB/axGN4TaJ9kleVPgN 0jSbKAQDQlOeMKbBc1cFTJFFJbsBfzcnHye9efJV6BiTNXkV++3ua58Ku2A0EaDqYnee 7NbA== X-Gm-Message-State: AOJu0YzuCpMYKfEjhTRAgTRwEc8Qd3TTSGm4mZ9E1fVHCtloFnU0h871 Bu3nFR2VmjI4m/SzLpehAKUglVxRtzwPdEbB83m4SxNrY+k+vCzFQQWvOa42rwnfIC3lMxwyJsT E0Kc30kbhZB3rv5x2cPW6igWhqhvUypuil1sOePAaHw== X-Gm-Gg: AfdE7cm+zkkdVrvsB2pwB6rzMtdwjSqWMSGVS6UrFNmtCXbr29wMGB+MQA4XYLDAKd8 P6Ladx/oo9PI7DCx1U+6vcEMmIl5wo1yakoKUxRDxBGUA+gc55ujdreo97WXl+sokSwA+7jxJti YwccZGPFPIi9s00kVMOuxSxgwzciGmoUXt5jsWYNoGXf1MHUJ60EGQr9e6K15Dj7GL4l/+yNBaj 83FPlt37EDQooldfv0vZVNbycvFPszFR+Maa3LgkPllv3DY0EgT/qhRIQVYP7gE6HoZ92l94TTx e667hZN0zy85zxJjMN9IjiNLO8e9nG8Foe9tDGwX78gmfIm6qkDZOw== X-Received: by 2002:a05:600c:1da8:b0:493:c14a:a1ca with SMTP id 5b1f17b1804b1-493e68b806dmr78569425e9.3.1783614740543; Thu, 09 Jul 2026 09:32:20 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Peter Geoghegan Date: Thu, 9 Jul 2026 12:31:53 -0400 X-Gm-Features: AUfX_mwvbhe-xz7O4fp8UpDFOjp7NiH1io6u8C651EqflksWII_V-4ozA7Qycew Message-ID: Subject: Re: Hash index bucket split bug To: Amit Kapila Cc: PostgreSQL Hackers , Robert Haas Content-Type: multipart/mixed; boundary="0000000000000767220656302ba6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000767220656302ba6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jul 9, 2026 at 11:24=E2=80=AFAM Peter Geoghegan wrote: > Attached v2 has a more stable version of the isolation test (no other > changes compared to V1). Does this version work for you? I ran this against CI, and saw failures on 32-bit meson tied to tuple alignment. When MAXALIGN is 4, the assumptions about page layout underlying the test case break. Attached is V3, which directly addresses the alignment issue, and fully passes CI. -- Peter Geoghegan --0000000000000767220656302ba6 Content-Type: application/x-patch; name="v3-0001-Fix-hash-index-scans-concurrent-with-bucket-split.patch" Content-Disposition: attachment; filename="v3-0001-Fix-hash-index-scans-concurrent-with-bucket-split.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrdppwvb1 RnJvbSBhMjVhYzEwMTQ1ODdiYzI5YzllZTRmMmQ2NDA2ZDI1YWZiZjc1OWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBHZW9naGVnYW4gPHBnQGJvd3QuaWU+CkRhdGU6IFdl ZCwgOCBKdWwgMjAyNiAxNDoxODowNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMS8yXSBGaXgg aGFzaCBpbmRleCBzY2FucyBjb25jdXJyZW50IHdpdGggYnVja2V0IHNwbGl0cy4KCk92ZXJzaWdo dCBpbiBjb21taXQgN2M3NWVmNTcsIHdoaWNoIGludHJvZHVjZWQgcGFnZS1hdC1hLXRpbWUgcHJv Y2Vzc2luZwpvZiBoYXNoIGluZGV4IHNjYW5zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2hzZWFyY2guYyB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaHNlYXJjaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNlYXJjaC5j CmluZGV4IDg5ZDFjNWJjNi4uNzg4MmE1MzFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoc2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNl YXJjaC5jCkBAIC03NSw2ICs3NSwyOCBAQCBfaGFzaF9uZXh0KEluZGV4U2NhbkRlc2Mgc2Nhbiwg U2NhbkRpcmVjdGlvbiBkaXIpCiAJCQkJaWYgKCFfaGFzaF9yZWFkcGFnZShzY2FuLCAmYnVmLCBk aXIpKQogCQkJCQllbmRfb2Zfc2NhbiA9IHRydWU7CiAJCQl9CisJCQllbHNlIGlmIChzby0+aGFz aHNvX2J1Y19wb3B1bGF0ZWQgJiYgIXNvLT5oYXNoc29fYnVjX3NwbGl0KQorCQkJeworCQkJCS8q CisJCQkJICogZW5kIG9mIGJ1Y2tldCBiZWluZyBwb3B1bGF0ZWQ6IGNvbnRpbnVlIHRoZSBzY2Fu IGluIHRoZQorCQkJCSAqIGJ1Y2tldCBiZWluZyBzcGxpdCwgb24gd2hvc2UgcHJpbWFyeSBwYWdl IHdlIGhhdmUgaGVsZCBhCisJCQkJICogcGluIHNpbmNlIF9oYXNoX2ZpcnN0CisJCQkJICovCisJ CQkJYnVmID0gc28tPmhhc2hzb19zcGxpdF9idWNrZXRfYnVmOworCQkJCUFzc2VydChCdWZmZXJJ c1ZhbGlkKGJ1ZikpOworCQkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJ CQkJUHJlZGljYXRlTG9ja1BhZ2UocmVsLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpLAorCQkJ CQkJCQkgIHNjYW4tPnhzX3NuYXBzaG90KTsKKworCQkJCS8qCisJCQkJICogc2V0dGluZyBoYXNo c29fYnVjX3NwbGl0IHRvIHRydWUgaW5kaWNhdGVzIHRoYXQgd2UgYXJlCisJCQkJICogc2Nhbm5p bmcgYnVja2V0IGJlaW5nIHNwbGl0LgorCQkJCSAqLworCQkJCXNvLT5oYXNoc29fYnVjX3NwbGl0 ID0gdHJ1ZTsKKworCQkJCWlmICghX2hhc2hfcmVhZHBhZ2Uoc2NhbiwgJmJ1ZiwgZGlyKSkKKwkJ CQkJZW5kX29mX3NjYW4gPSB0cnVlOworCQkJfQogCQkJZWxzZQogCQkJCWVuZF9vZl9zY2FuID0g dHJ1ZTsKIAkJfQpAQCAtMTA0LDYgKzEyNiwzOCBAQCBfaGFzaF9uZXh0KEluZGV4U2NhbkRlc2Mg c2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJCQkJaWYgKCFfaGFzaF9yZWFkcGFnZShzY2FuLCAm YnVmLCBkaXIpKQogCQkJCQllbmRfb2Zfc2NhbiA9IHRydWU7CiAJCQl9CisJCQllbHNlIGlmIChz by0+aGFzaHNvX2J1Y19wb3B1bGF0ZWQgJiYgc28tPmhhc2hzb19idWNfc3BsaXQpCisJCQl7CisJ CQkJUGFnZQkJcGFnZTsKKwkJCQlIYXNoUGFnZU9wYXF1ZSBvcGFxdWU7CisKKwkJCQkvKgorCQkJ CSAqIHN0YXJ0IG9mIGJ1Y2tldCBiZWluZyBzcGxpdDogY29udGludWUgdGhlIHNjYW4gZnJvbSB0 aGUKKwkJCQkgKiBsYXN0IHBhZ2UgaW4gdGhlIGNoYWluIG9mIHRoZSBidWNrZXQgYmVpbmcgcG9w dWxhdGVkLCBvbgorCQkJCSAqIHdob3NlIHByaW1hcnkgcGFnZSB3ZSBoYXZlIGhlbGQgYSBwaW4g c2luY2UgX2hhc2hfZmlyc3QKKwkJCQkgKi8KKwkJCQlidWYgPSBzby0+aGFzaHNvX2J1Y2tldF9i dWY7CisJCQkJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoYnVmKSk7CisJCQkJTG9ja0J1ZmZlcihidWYs IEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCQkJ CW9wYXF1ZSA9IEhhc2hQYWdlR2V0T3BhcXVlKHBhZ2UpOworCisJCQkJLyogbW92ZSB0byB0aGUg ZW5kIG9mIGJ1Y2tldCBjaGFpbiAqLworCQkJCXdoaWxlIChCbG9ja051bWJlcklzVmFsaWQob3Bh cXVlLT5oYXNob19uZXh0Ymxrbm8pKQorCQkJCQlfaGFzaF9yZWFkbmV4dChzY2FuLCAmYnVmLCAm cGFnZSwgJm9wYXF1ZSk7CisKKwkJCQkvKgorCQkJCSAqIHNldHRpbmcgaGFzaHNvX2J1Y19zcGxp dCB0byBmYWxzZSBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUKKwkJCQkgKiBzY2FubmluZyB0aGUgYnVj a2V0IGJlaW5nIHBvcHVsYXRlZC4gIE9ubHkgc2V0IGl0IGFmdGVyCisJCQkJICogdGhlIGNoYWlu IHdhbGsgYWJvdmU7IG90aGVyd2lzZSBfaGFzaF9yZWFkbmV4dCB3b3VsZAorCQkJCSAqIGFkdmFu Y2UgdG8gdGhlIGJ1Y2tldCBiZWluZyBzcGxpdCBvbiByZWFjaGluZyB0aGUgZW5kIG9mCisJCQkJ ICogdGhlIGNoYWluLCBpbnN0ZWFkIG9mIHN0b3BwaW5nIHRoZXJlLgorCQkJCSAqLworCQkJCXNv LT5oYXNoc29fYnVjX3NwbGl0ID0gZmFsc2U7CisKKwkJCQlpZiAoIV9oYXNoX3JlYWRwYWdlKHNj YW4sICZidWYsIGRpcikpCisJCQkJCWVuZF9vZl9zY2FuID0gdHJ1ZTsKKwkJCX0KIAkJCWVsc2UK IAkJCQllbmRfb2Zfc2NhbiA9IHRydWU7CiAJCX0KLS0gCjIuNTMuMAoK --0000000000000767220656302ba6 Content-Type: application/x-patch; name="v3-0002-Add-tests-for-hash-index-scans-concurrent-with-bu.patch" Content-Disposition: attachment; filename="v3-0002-Add-tests-for-hash-index-scans-concurrent-with-bu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mrdppwuw0 RnJvbSAyNjI0NjUyZmY5MGZlZTIxZTlkN2Y3Y2Y5N2E5YWE5MzhjNGM1YWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBHZW9naGVnYW4gPHBnQGJvd3QuaWU+CkRhdGU6IFdl ZCwgOCBKdWwgMjAyNiAxNToxODowNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMi8yXSBBZGQg dGVzdHMgZm9yIGhhc2ggaW5kZXggc2NhbnMgY29uY3VycmVudCB3aXRoIGJ1Y2tldAogc3BsaXRz LgoKVGVzdCB0aGUgYnVnIGZpeGVkIGJ5IHRoZSBwcmVjZWRpbmcgY29tbWl0IGF0IHR3byBsZXZl bHMsIHVzaW5nIHR3byBuZXcKaW5qZWN0aW9uIHBvaW50cyBpbiBfaGFzaF9zcGxpdGJ1Y2tldDog YW4gZXJyb3ItbW9kZSBwb2ludCBwbGFjZWQKYmVmb3JlIHR1cGxlIHJlbG9jYXRpb24gYmVnaW5z ICh3aGVyZSBleGlzdGluZyBjb2RlIGNhbiBmYWlsIGFueXdheSksCmFuZCBhIHdhaXQtbW9kZSBw b2ludCBwbGFjZWQgYWZ0ZXIgdHVwbGUgcmVsb2NhdGlvbiwgd2hlcmUgdGhlIHNwbGl0dGVyCmhv bGRzIG5vIGJ1ZmZlciBjb250ZW50IGxvY2tzLgoKQSByZWdyZXNzIHRlc3QgdXNlcyB0aGUgZXJy b3ItbW9kZSBwb2ludCB0byBpbnRlcnJ1cHQgYSBzcGxpdCBwYXJ0d2F5CnRocm91Z2gsIHRoZW4g dmVyaWZpZXMgdGhhdCBmb3J3YXJkLCBiYWNrd2FyZCwgYW5kIGJpdG1hcCBzY2FucyBvZiB0aGUK YWZmZWN0ZWQgYnVja2V0IHBhaXIgYWxsIGFncmVlIHdpdGggYSBzZXFzY2FuLiAgVGhlIGJ1ZyBp c24ndCBzcGVjaWZpYwp0byBpbnRlcnJ1cHRlZCBzcGxpdHM6IGludGVycnVwdGluZyBhIHNwbGl0 IGlzIGp1c3QgdGhlIG1vc3QgY29udmVuaWVudAp3YXkgdG8gaG9sZCB0aGUgYnVja2V0IHBhaXIg aW4gdGhlIHNhbWUgc3RhdGUgdGhhdCBzY2FucyBvYnNlcnZlIHdoaWxlCmFueSBzcGxpdCBpcyBp biBwcm9ncmVzcywgbWFraW5nIHRoZSB0ZXN0IGRldGVybWluaXN0aWMgd2l0aG91dCBhCnNlY29u ZCBzZXNzaW9uLgoKQW4gaXNvbGF0aW9uIHRlc3QgcHJvdmVzIHRoYXQgY2xhaW0gZGlyZWN0bHk6 IGl0IHBhdXNlcyBhIHNwbGl0dGVyIG9uCnRoZSB3YWl0LW1vZGUgcG9pbnQgYW5kIHJ1bnMgdGhl IHNhbWUgc2NhbnMgZnJvbSBhIHNlY29uZCBzZXNzaW9uIHdoaWxlCnRoZSBzcGxpdCByZW1haW5z IGdlbnVpbmVseSBpbiBwcm9ncmVzcywgdGhlbiBsZXRzIHRoZSBzcGxpdCBmaW5pc2ggYW5kCnNj YW5zIG9uY2UgbW9yZS4KCkNvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgRmFibGUgNSA8bm9yZXBseUBh bnRocm9waWMuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMgICAg ICAgICAgICB8ICAgNSArCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZp bGUgICAgfCAgIDMgKy0KIC4uLi9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2hhc2gtc3BsaXQu b3V0ICB8ICA3MSArKysrKysrKysKIC4uLi9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2hhc2hf c3BsaXQub3V0ICB8IDEzNyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMiArCiAuLi4vaW5qZWN0aW9uX3BvaW50cy9z cGVjcy9oYXNoLXNwbGl0LnNwZWMgICAgfCAgOTEgKysrKysrKysrKysrCiAuLi4vaW5qZWN0aW9u X3BvaW50cy9zcWwvaGFzaF9zcGxpdC5zcWwgICAgICAgfCAgODYgKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvaGFzaC1z cGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvaGFzaF9zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3MvaGFzaC1zcGxpdC5zcGVjCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9oYXNoX3Nw bGl0LnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCmluZGV4IDgwOTliMGQwMi4uYzJl NzIxM2M0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKQEAgLTM1LDYgKzM1LDcgQEAK ICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNh dGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rp b25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogc3RhdGljIGJvb2wgX2hhc2hf YWxsb2NfYnVja2V0cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGZpcnN0YmxvY2ssCkBAIC0x MTA0LDYgKzExMDUsOCBAQCBfaGFzaF9zcGxpdGJ1Y2tldChSZWxhdGlvbiByZWwsCiAJbnBhZ2Ug PSBCdWZmZXJHZXRQYWdlKG5idWYpOwogCW5vcGFxdWUgPSBIYXNoUGFnZUdldE9wYXF1ZShucGFn ZSk7CiAKKwlJTkpFQ1RJT05fUE9JTlQoImhhc2gtc3BsaXQtYmVmb3JlLXJlbG9jYXRpb24iLCBO VUxMKTsKKwogCS8qIENvcHkgdGhlIHByZWRpY2F0ZSBsb2NrcyBmcm9tIG9sZCBidWNrZXQgdG8g bmV3IGJ1Y2tldC4gKi8KIAlQcmVkaWNhdGVMb2NrUGFnZVNwbGl0KHJlbCwKIAkJCQkJCSAgIEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1Y2tldF9vYnVmKSwKQEAgLTEyNTIsNiArMTI1NSw4IEBAIF9o YXNoX3NwbGl0YnVja2V0KFJlbGF0aW9uIHJlbCwKIAkJCS8qIGJlIHRpZHkgKi8KIAkJCWZvciAo aSA9IDA7IGkgPCBuaXR1cHM7IGkrKykKIAkJCQlwZnJlZShpdHVwc1tpXSk7CisKKwkJCUlOSkVD VElPTl9QT0lOVCgiaGFzaC1zcGxpdC1hZnRlci1yZWxvY2F0aW9uIiwgTlVMTCk7CiAJCQlicmVh azsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5k ZXggYzAxZDJmYjA5Li4yM2UwMDIwN2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvTWFrZWZpbGUKQEAgLTksMTAgKzksMTEgQEAgRVhURU5TSU9OID0gaW5qZWN0aW9uX3Bv aW50cwogREFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklMRURFU0MgPSAiaW5q ZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRzIgogCi1SRUdSRVNT ID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyB2YWN1dW0KK1JFR1JFU1Mg PSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bSBoYXNoX3NwbGl0 CiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVncmVz cwogCiBJU09MQVRJT04gPSBiYXNpYyBcCisJICAgIGhhc2gtc3BsaXQgXAogCSAgICBpbnBsYWNl IFwKIAkgICAgcmVwYWNrIFwKIAkgICAgcmVwYWNrX3RlbXBvcmFsIFwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9oYXNoLXNwbGl0Lm91dCBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9oYXNoLXNwbGl0Lm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjc4YmE0MzQ1NAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9o YXNoLXNwbGl0Lm91dApAQCAtMCwwICsxLDcxIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBz ZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfc3BsaXQgczJfaW5zZXJ0IHMyX3Nj YW4gczJfYmFjayBzMl9kZXRhY2ggczJfd2FrZXVwIHMxX25vb3AgczJfc2NhbgoraW5qZWN0aW9u X3BvaW50c19hdHRhY2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX3NwbGl0OiAKKyAgICBJTlNFUlQgSU5UTyBoYXNo X3NwbGl0X3Rlc3QKKyAgICAgIFNFTEVDVCAxMDAwMDAwICsgZyBGUk9NIGhhc2hfc3BsaXRfZ2Vv bSwgZ2VuZXJhdGVfc2VyaWVzKDEsIGZpbGxyb3dzKSBnOworIDx3YWl0aW5nIC4uLj4KK3N0ZXAg czJfaW5zZXJ0OiAKKyAgICBJTlNFUlQgSU5UTyBoYXNoX3NwbGl0X3Rlc3QgU0VMRUNUIGsgRlJP TSBoYXNoX3NwbGl0X2tleTsKKworc3RlcCBzMl9zY2FuOiAKKyAgICBTRUxFQ1QgY291bnQoKikg RlJPTSBoYXNoX3NwbGl0X3Rlc3QKKyAgICAgV0hFUkUgdiA9IChTRUxFQ1QgayBGUk9NIGhhc2hf c3BsaXRfa2V5KTsKKworY291bnQKKy0tLS0tCisgICAxMQorKDEgcm93KQorCitzdGVwIHMyX2Jh Y2s6IAorICAgIEJFR0lOOworICAgIERFQ0xBUkUgYyBTQ1JPTEwgQ1VSU09SIEZPUgorICAgICAg U0VMRUNUIHYgPSAoU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSkgRlJPTSBoYXNoX3NwbGl0 X3Rlc3QKKyAgICAgICBXSEVSRSB2ID0gKFNFTEVDVCBrIEZST00gaGFzaF9zcGxpdF9rZXkpOwor ICAgIE1PVkUgRk9SV0FSRCBBTEwgSU4gYzsKKyAgICBGRVRDSCBCQUNLV0FSRCBBTEwgRlJPTSBj OworICAgIENPTU1JVDsKKworP2NvbHVtbj8KKy0tLS0tLS0tCit0ICAgICAgIAordCAgICAgICAK K3QgICAgICAgCit0ICAgICAgIAordCAgICAgICAKK3QgICAgICAgCit0ICAgICAgIAordCAgICAg ICAKK3QgICAgICAgCit0ICAgICAgIAordCAgICAgICAKKygxMSByb3dzKQorCitzdGVwIHMyX2Rl dGFjaDogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoYXNoLXNwbGl0LWFmdGVyLXJl bG9jYXRpb24nKTsKK2luamVjdGlvbl9wb2ludHNfZGV0YWNoCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl93YWtldXA6 IFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGFzaC1zcGxpdC1hZnRlci1yZWxvY2F0 aW9uJyk7CitpbmplY3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfc3BsaXQ6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMV9ub29wOiAKK3N0ZXAgczJfc2NhbjogCisgICAgU0VMRUNUIGNv dW50KCopIEZST00gaGFzaF9zcGxpdF90ZXN0CisgICAgIFdIRVJFIHYgPSAoU0VMRUNUIGsgRlJP TSBoYXNoX3NwbGl0X2tleSk7CisKK2NvdW50CistLS0tLQorICAgMTEKKygxIHJvdykKKwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2hhc2hf c3BsaXQub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2hh c2hfc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNmJlMTEz YjlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2hhc2hfc3BsaXQub3V0CkBAIC0wLDAgKzEsMTM3IEBACistLSBUZXN0IGhhc2gg aW5kZXggc2NhbnMgb2YgYSBidWNrZXQgcGFpciB3aG9zZSBzcGxpdCBpcyBpbmNvbXBsZXRlCist LQorLS0gVGhlIGJlaGF2aW9yIHRlc3RlZCBoZXJlIGlzIG5vdCBzcGVjaWZpYyB0byBpbmNvbXBs ZXRlIHNwbGl0czogaXQKKy0tIGFwcGxpZXMgdG8gYW55IHNjYW4gdGhhdCBydW5zIHdoaWxlIHRo ZSBidWNrZXQgcGFpcidzIHNwbGl0LWluLXByb2dyZXNzCistLSBmbGFncyBhcmUgc2V0LCB3aGlj aCBpcyB0aGUgY2FzZSBmb3IgdGhlIGR1cmF0aW9uIG9mIGV2ZXJ5IHNwbGl0LgorLS0gSW50ZXJy dXB0aW5nIGEgc3BsaXQgaXMgbWVyZWx5IHRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IHRvIGhvbGQg dGhlCistLSBidWNrZXQgcGFpciBpbiB0aGF0IHN0YXRlOiBpdCBtYWtlcyB0aGUgdGVzdHMgYmVs b3cgZGV0ZXJtaW5pc3RpYywKKy0tIHdpdGhvdXQgYW55IG5lZWQgZm9yIGEgc2Vjb25kIHNlc3Np b24uICBUaGUgaGFzaC1zcGxpdCBpc29sYXRpb24gdGVzdAorLS0gcHJvdmlkZXMgZXF1aXZhbGVu dCBjb3ZlcmFnZSBmb3Igc2NhbnMgdGhhdCBydW4gZHVyaW5nIGEgbGl2ZSBzcGxpdC4KK0NSRUFU RSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOworIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgaGFzaF9zcGxpdF90ZXN0 ICh2IGludDQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRF WCBoYXNoX3NwbGl0X2luZGV4IE9OIGhhc2hfc3BsaXRfdGVzdCBVU0lORyBoYXNoICh2KTsKKy0t IERldGVybWluZSB0aGUgbGF5b3V0IG9mIHRoZSAobmV2ZXItc3BsaXQpIGluZGV4OiBvbmUgbWV0 YXBhZ2UsIG5idWNrZXRzCistLSBidWNrZXQgcGFnZXMsIGFuZCBvbmUgYml0bWFwIHBhZ2UuICBU aGUgaW5kZXgncyBmaXJzdCBidWNrZXQgc3BsaXQgd2lsbAorLS0gc3BsaXQgYnVja2V0IDAsIGNy ZWF0aW5nIGJ1Y2tldCBuYnVja2V0cy4KK0NSRUFURSBURU1QIFRBQkxFIGhhc2hfc3BsaXRfZ2Vv bSBBUworICBTRUxFQ1QgbmJ1Y2tldHMsCisgICAgICAgICAoY3VycmVudF9zZXR0aW5nKCdibG9j a19zaXplJyk6OmJpZ2ludCAvIDE2KSAqIG5idWNrZXRzIEFTIGZpbGxyb3dzCisgICAgRlJPTSAo U0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ2hhc2hfc3BsaXRfaW5kZXgnKSAvCisgICAgICAgICAg ICAgICAgIGN1cnJlbnRfc2V0dGluZygnYmxvY2tfc2l6ZScpOjpiaWdpbnQgLSAyIEFTIG5idWNr ZXRzKSBnOworLS0gc2FuaXR5OiBpbml0aWFsIGJ1Y2tldCBjb3VudHMgYXJlIGFsd2F5cyBwb3dl cnMgb2YgdHdvCitTRUxFQ1QgbmJ1Y2tldHMgPiAwIEFORCAobmJ1Y2tldHMgJiAobmJ1Y2tldHMg LSAxKSkgPSAwIEFTIG5idWNrZXRzX29rCisgIEZST00gaGFzaF9zcGxpdF9nZW9tOworIG5idWNr ZXRzX29rIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gQ2hvb3NlIGEgdmFsdWUg dGhhdCBtYXBzIHRvIGJ1Y2tldCAwIGJlZm9yZSB0aGUgc3BsaXQgYW5kIHRvIHRoZSBuZXcKKy0t IGJ1Y2tldCBhZnRlcndhcmRzCitDUkVBVEUgVEVNUCBUQUJMRSBoYXNoX3NwbGl0X2tleSBBUwor ICBTRUxFQ1QgbWluKHYpOjppbnQ0IEFTIGsKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDAwMCkgdiwgaGFzaF9zcGxpdF9nZW9tCisgICBXSEVSRSAoaGFzaGludDQodjo6aW50NCkgJiAo MiAqIG5idWNrZXRzIC0gMSkpID0gbmJ1Y2tldHM7CitJTlNFUlQgSU5UTyBoYXNoX3NwbGl0X3Rl c3QKKyAgU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSwgZ2VuZXJhdGVfc2VyaWVzKDEsIDEw KTsKKy0tIEVycm9yIG91dCBkdXJpbmcgdGhlIGZpcnN0IGJ1Y2tldCBzcGxpdCwgbGVhdmluZyBp dCBpbmNvbXBsZXRlLgorLS0gZmlsbHJvd3MgaXMgZ3VhcmFudGVlZCB0byBjcm9zcyB0aGUgc3Bs aXQgdGhyZXNob2xkIG9mIGZmYWN0b3IgKiBuYnVja2V0cworLS0gdHVwbGVzOiBhIGhhc2ggaW5k ZXggZW50cnkgb2NjdXBpZXMgYXQgbGVhc3QgMTYgYnl0ZXMgKGxpbmUgcG9pbnRlcgorLS0gaW5j bHVkZWQpLCBhbmQgdGhlIGRlZmF1bHQgZmlsbGZhY3RvciB0YXJnZXRzIDc1JSBwYWdlIGZ1bGxu ZXNzLCBzbworLS0gZmZhY3RvciBjYW4gbmV2ZXIgZXhjZWVkIGJsb2NrX3NpemUgLyAxNiB0dXBs ZXMgcGVyIGJ1Y2tldC4KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGFzaC1zcGxp dC1iZWZvcmUtcmVsb2NhdGlvbicsICdlcnJvcicpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitJTlNFUlQgSU5UTyBo YXNoX3NwbGl0X3Rlc3QKKyAgU0VMRUNUIDEwMDAwMDAgKyBnIEZST00gaGFzaF9zcGxpdF9nZW9t LCBnZW5lcmF0ZV9zZXJpZXMoMSwgZmlsbHJvd3MpIGc7CitFUlJPUjogIGVycm9yIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhhc2gtc3BsaXQtYmVmb3JlLXJlbG9jYXRpb24KK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGFzaC1zcGxpdC1iZWZvcmUtcmVsb2NhdGlvbicp OworIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCistLSBUaGlzIGluc2VydGlvbiBnb2VzIHRvIHRoZSBuZXcgYnVja2V0LCB3 aGljaCBpcyBzdGlsbCBmbGFnZ2VkIGFzIGJlaW5nCistLSBwb3B1bGF0ZWQgYnkgdGhlIGluY29t cGxldGUgc3BsaXQKK0lOU0VSVCBJTlRPIGhhc2hfc3BsaXRfdGVzdCBTRUxFQ1QgayBGUk9NIGhh c2hfc3BsaXRfa2V5OworLS0gU2NhbnMgb2YgdGhhdCBidWNrZXQgbXVzdCB2aXNpdCBib3RoIGJ1 Y2tldHMgb2YgdGhlIGluY29tcGxldGUgc3BsaXQ6CistLSB0aGUgZnJlc2ggcm93IGZyb20gdGhl IG5ldyBidWNrZXQsIHBsdXMgdGhlIDEwIG9sZGVyIHJvd3MgdGhhdCByZW1haW4KKy0tIGluIGJ1 Y2tldCAwCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpCisgIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhhc2hf c3BsaXRfdGVzdAorICAgV0hFUkUgdiA9IChTRUxFQ1QgayBGUk9NIGhhc2hfc3BsaXRfa2V5KTsK KyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICBJbml0UGxhbiBleHByXzEKKyAgICAgLT4gIFNlcSBT Y2FuIG9uIGhhc2hfc3BsaXRfa2V5CisgICAgICAgICAgIERpc2FibGVkOiB0cnVlCisgICAtPiAg SW5kZXggU2NhbiB1c2luZyBoYXNoX3NwbGl0X2luZGV4IG9uIGhhc2hfc3BsaXRfdGVzdAorICAg ICAgICAgSW5kZXggQ29uZDogKHYgPSAoSW5pdFBsYW4gZXhwcl8xKS5jb2wxKQorKDYgcm93cykK KworU0VMRUNUIGNvdW50KCopIEZST00gaGFzaF9zcGxpdF90ZXN0CisgV0hFUkUgdiA9IChTRUxF Q1QgayBGUk9NIGhhc2hfc3BsaXRfa2V5KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxMQorKDEg cm93KQorCistLSBCYWNrd2FyZCBzY2FucyBtdXN0IHZpc2l0IGJvdGggYnVja2V0cyB0b28sIGlu IHRoZSBvcHBvc2l0ZSBvcmRlcgorQkVHSU47CitERUNMQVJFIGMgU0NST0xMIENVUlNPUiBGT1IK KyAgU0VMRUNUIHYgPSAoU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSkgRlJPTSBoYXNoX3Nw bGl0X3Rlc3QKKyAgIFdIRVJFIHYgPSAoU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSk7CitN T1ZFIEZPUldBUkQgQUxMIElOIGM7CitGRVRDSCBCQUNLV0FSRCBBTEwgRlJPTSBjOworID9jb2x1 bW4/IAorLS0tLS0tLS0tLQorIHQKKyB0CisgdAorIHQKKyB0CisgdAorIHQKKyB0CisgdAorIHQK KyB0CisoMTEgcm93cykKKworQ09NTUlUOworLS0gU2FtZSBjb3VudCB2aWEgYSBiaXRtYXAgc2Nh biwgd2hpY2ggc2hhcmVzIHRoZSB1bmRlcmx5aW5nIHNjYW4gY29kZQorU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvbjsKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGhhc2hfc3BsaXRfdGVzdAorIFdIRVJFIHYgPSAoU0VMRUNUIGsgRlJPTSBoYXNoX3Nw bGl0X2tleSk7CisgY291bnQgCistLS0tLS0tCisgICAgMTEKKygxIHJvdykKKworLS0gQW5kIHRo ZSBncm91bmQgdHJ1dGgsIHZpYSB0aGUgaGVhcAorU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm OworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgY291bnQoKikgRlJPTSBoYXNoX3NwbGl0 X3Rlc3QKKyBXSEVSRSB2ID0gKFNFTEVDVCBrIEZST00gaGFzaF9zcGxpdF9rZXkpOworIGNvdW50 IAorLS0tLS0tLQorICAgIDExCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgaGFzaF9zcGxpdF90ZXN0OworRFJP UCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCA1OWRiYTFjYjAuLmEwYjBjNDgyNyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzYsNiAr MzYsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAnaGFzaGFnZycsCiAgICAgICAncmVpbmRleF9jb25j JywKICAgICAgICd2YWN1dW0nLAorICAgICAgJ2hhc2hfc3BsaXQnLAogICAgIF0sCiAgICAgJ3Jl Z3Jlc3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5wcm9qZWN0X2J1aWxkX3Jvb3QoKSAvICdz cmMvdGVzdC9yZWdyZXNzJ10sCiAgICAgIyBUaGUgaW5qZWN0aW9uIHBvaW50cyBhcmUgY2x1c3Rl ci13aWRlLCBzbyBkaXNhYmxlIGluc3RhbGxjaGVjawpAQCAtNDQsNiArNDUsNyBAQCB0ZXN0cyAr PSB7CiAgICdpc29sYXRpb24nOiB7CiAgICAgJ3NwZWNzJzogWwogICAgICAgJ2Jhc2ljJywKKyAg ICAgICdoYXNoLXNwbGl0JywKICAgICAgICdpbnBsYWNlJywKICAgICAgICdyZXBhY2snLAogICAg ICAgJ3JlcGFja190ZW1wb3JhbCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3BlY3MvaGFzaC1zcGxpdC5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NwZWNzL2hhc2gtc3BsaXQuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLjI0MzkwYjlkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9oYXNoLXNwbGl0LnNwZWMKQEAgLTAsMCArMSw5 MSBAQAorIyBUZXN0IGhhc2ggaW5kZXggc2NhbnMgdGhhdCBydW4gd2hpbGUgYSBidWNrZXQgc3Bs aXQgaXMgaW4gcHJvZ3Jlc3MuCisjCisjIFRoZSBpbnRlcmVzdGluZyB3aW5kb3cgb3BlbnMgb25j ZSB0aGUgc3BsaXQgaGFzIHJlbG9jYXRlZCB0dXBsZXMgdG8gdGhlCisjIG5ldyBidWNrZXQsIGJl Zm9yZSB0aGUgYnVja2V0cycgc3BsaXQtaW4tcHJvZ3Jlc3MgZmxhZ3MgYXJlIGNsZWFyZWQuICBB CisjIGNvbmN1cnJlbnQgc2NhbiB3aG9zZSB2YWx1ZSBiZWxvbmdzIHRvIHRoZSBuZXcgYnVja2V0 IG11c3QgdmlzaXQgYm90aAorIyBidWNrZXRzIG9mIHRoZSBwYWlyOiBpdCBza2lwcyB0aGUgbW92 ZWQtYnktc3BsaXQgdHVwbGVzIGluIHRoZSBuZXcKKyMgYnVja2V0LCBzbyBpdCBoYXMgdG8gcmVh ZCB0aGVpciBhdXRob3JpdGF0aXZlIGNvcGllcyBmcm9tIHRoZSBvbGQKKyMgYnVja2V0LCBwbHVz IGFueSB0dXBsZXMgaW5zZXJ0ZWQgaW50byB0aGUgbmV3IGJ1Y2tldCBhZnRlciB0aGUgc3BsaXQK KyMgYmVnYW4uCisjCisjIHMxIHBlcmZvcm1zIHRoZSBzcGxpdCwgcGF1c2luZyBpbnNpZGUgdGhh dCB3aW5kb3cgb24gYSB3YWl0IGluamVjdGlvbgorIyBwb2ludCAocGxhY2VkIHdoZXJlIHRoZSBz cGxpdHRlciBob2xkcyBubyBidWZmZXIgY29udGVudCBsb2NrcykuICBzMgorIyB0aGVuIGluc2Vy dHMgYSBtYXRjaGluZyByb3cgKHdoaWNoIGdvZXMgdG8gdGhlIG5ldyBidWNrZXQpIGFuZCBzY2Fu cywKKyMgYm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzLgorCitzZXR1cAoreworICAgIENSRUFU RSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKKyAgICBDUkVBVEUgVEFCTEUgaGFzaF9zcGxp dF90ZXN0ICh2IGludDQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKKyAgICBD UkVBVEUgSU5ERVggaGFzaF9zcGxpdF9pbmRleCBPTiBoYXNoX3NwbGl0X3Rlc3QgVVNJTkcgaGFz aCAodik7CisgICAgQ1JFQVRFIFRBQkxFIGhhc2hfc3BsaXRfZ2VvbSBBUworICAgICAgU0VMRUNU IG5idWNrZXRzLAorICAgICAgICAgICAgIChjdXJyZW50X3NldHRpbmcoJ2Jsb2NrX3NpemUnKTo6 YmlnaW50IC8gMTYpICogbmJ1Y2tldHMgQVMgZmlsbHJvd3MKKyAgICAgICAgRlJPTSAoU0VMRUNU IHBnX3JlbGF0aW9uX3NpemUoJ2hhc2hfc3BsaXRfaW5kZXgnKSAvCisgICAgICAgICAgICAgICAg ICAgICBjdXJyZW50X3NldHRpbmcoJ2Jsb2NrX3NpemUnKTo6YmlnaW50IC0gMiBBUyBuYnVja2V0 cykgZzsKKyAgICBDUkVBVEUgVEFCTEUgaGFzaF9zcGxpdF9rZXkgQVMKKyAgICAgIFNFTEVDVCBt aW4odik6OmludDQgQVMgaworICAgICAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCkg diwgaGFzaF9zcGxpdF9nZW9tCisgICAgICAgV0hFUkUgKGhhc2hpbnQ0KHY6OmludDQpICYgKDIg KiBuYnVja2V0cyAtIDEpKSA9IG5idWNrZXRzOworICAgIElOU0VSVCBJTlRPIGhhc2hfc3BsaXRf dGVzdAorICAgICAgU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSwgZ2VuZXJhdGVfc2VyaWVz KDEsIDEwKTsKK30KKwordGVhcmRvd24KK3sKKyAgICBEUk9QIFRBQkxFIGhhc2hfc3BsaXRfdGVz dCwgaGFzaF9zcGxpdF9nZW9tLCBoYXNoX3NwbGl0X2tleTsKKyAgICBEUk9QIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOworfQorCitzZXNzaW9uIHMxCitzZXR1cAoreworICAgIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnaGFzaC1zcGxpdC1hZnRlci1yZWxvY2F0aW9uJywgJ3dhaXQnKTsKK30KKyMgZmls bHJvd3MgaXMgZ3VhcmFudGVlZCB0byBjcm9zcyB0aGUgc3BsaXQgdGhyZXNob2xkIG9mIGZmYWN0 b3IgKiBuYnVja2V0cworIyB0dXBsZXM6IGEgaGFzaCBpbmRleCBlbnRyeSBvY2N1cGllcyBhdCBs ZWFzdCAxNiBieXRlcyAobGluZSBwb2ludGVyCisjIGluY2x1ZGVkKSwgYW5kIHRoZSBkZWZhdWx0 IGZpbGxmYWN0b3IgdGFyZ2V0cyA3NSUgcGFnZSBmdWxsbmVzcywgc28KKyMgZmZhY3RvciBjYW4g bmV2ZXIgZXhjZWVkIGJsb2NrX3NpemUgLyAxNiB0dXBsZXMgcGVyIGJ1Y2tldAorc3RlcCBzMV9z cGxpdAoreworICAgIElOU0VSVCBJTlRPIGhhc2hfc3BsaXRfdGVzdAorICAgICAgU0VMRUNUIDEw MDAwMDAgKyBnIEZST00gaGFzaF9zcGxpdF9nZW9tLCBnZW5lcmF0ZV9zZXJpZXMoMSwgZmlsbHJv d3MpIGc7Cit9CitzdGVwIHMxX25vb3AgeyB9CisKK3Nlc3Npb24gczIKK3NldHVwCit7CisgICAg U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworICAgIFNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9m ZjsKK30KK3N0ZXAgczJfaW5zZXJ0Cit7CisgICAgSU5TRVJUIElOVE8gaGFzaF9zcGxpdF90ZXN0 IFNFTEVDVCBrIEZST00gaGFzaF9zcGxpdF9rZXk7Cit9CitzdGVwIHMyX3NjYW4KK3sKKyAgICBT RUxFQ1QgY291bnQoKikgRlJPTSBoYXNoX3NwbGl0X3Rlc3QKKyAgICAgV0hFUkUgdiA9IChTRUxF Q1QgayBGUk9NIGhhc2hfc3BsaXRfa2V5KTsKK30KK3N0ZXAgczJfYmFjaworeworICAgIEJFR0lO OworICAgIERFQ0xBUkUgYyBTQ1JPTEwgQ1VSU09SIEZPUgorICAgICAgU0VMRUNUIHYgPSAoU0VM RUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSkgRlJPTSBoYXNoX3NwbGl0X3Rlc3QKKyAgICAgICBX SEVSRSB2ID0gKFNFTEVDVCBrIEZST00gaGFzaF9zcGxpdF9rZXkpOworICAgIE1PVkUgRk9SV0FS RCBBTEwgSU4gYzsKKyAgICBGRVRDSCBCQUNLV0FSRCBBTEwgRlJPTSBjOworICAgIENPTU1JVDsK K30KK3N0ZXAgczJfZGV0YWNoIHsgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoYXNo LXNwbGl0LWFmdGVyLXJlbG9jYXRpb24nKTsgfQorc3RlcCBzMl93YWtldXAgeyBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJ2hhc2gtc3BsaXQtYWZ0ZXItcmVsb2NhdGlvbicpOyB9CisK KyMgU2NhbiBkdXJpbmcgdGhlIHBhdXNlZCBzcGxpdCwgdGhlbiBsZXQgdGhlIHNwbGl0IGZpbmlz aCBhbmQgc2NhbiBhZ2Fpbi4KKyMgVGhlIGRldGFjaCBtdXN0IGhhcHBlbiBiZWZvcmUgdGhlIHdh a2V1cDogdGhlIHNhbWUgSU5TRVJUIGNhbiB0cmlnZ2VyCisjIGFub3RoZXIgc3BsaXQsIHdoaWNo IG11c3Qgbm90IGhpdCB0aGUgaW5qZWN0aW9uIHBvaW50IGFnYWluLiAgVGhlIG5vLW9wCisjIHN0 ZXAgaW4gdGhlIHNwbGl0dGVyJ3Mgc2Vzc2lvbiBmb3JjZXMgdGhlIGlzb2xhdGlvbiB0ZXN0ZXIg dG8gd2FpdCBmb3IKKyMgczFfc3BsaXQgdG8gZmluaXNoLCBrZWVwaW5nIHRoZSBwb3NpdGlvbiBv ZiBpdHMgY29tcGxldGlvbiByZXBvcnQgc3RhYmxlCisjIHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcg dGhlIHJlbWFpbmluZyBpbnNlcnRzIHRha2UgKHNlZSBiYXNpYy5zcGVjKS4KK3Blcm11dGF0aW9u IHMxX3NwbGl0IHMyX2luc2VydCBzMl9zY2FuIHMyX2JhY2sgczJfZGV0YWNoIHMyX3dha2V1cCBz MV9ub29wIHMyX3NjYW4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvaGFzaF9zcGxpdC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvc3FsL2hhc2hfc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MC4uZjQ5YzMzNTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL3NxbC9oYXNoX3NwbGl0LnNxbApAQCAtMCwwICsxLDg2IEBACistLSBUZXN0IGhh c2ggaW5kZXggc2NhbnMgb2YgYSBidWNrZXQgcGFpciB3aG9zZSBzcGxpdCBpcyBpbmNvbXBsZXRl CistLQorLS0gVGhlIGJlaGF2aW9yIHRlc3RlZCBoZXJlIGlzIG5vdCBzcGVjaWZpYyB0byBpbmNv bXBsZXRlIHNwbGl0czogaXQKKy0tIGFwcGxpZXMgdG8gYW55IHNjYW4gdGhhdCBydW5zIHdoaWxl IHRoZSBidWNrZXQgcGFpcidzIHNwbGl0LWluLXByb2dyZXNzCistLSBmbGFncyBhcmUgc2V0LCB3 aGljaCBpcyB0aGUgY2FzZSBmb3IgdGhlIGR1cmF0aW9uIG9mIGV2ZXJ5IHNwbGl0LgorLS0gSW50 ZXJydXB0aW5nIGEgc3BsaXQgaXMgbWVyZWx5IHRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IHRvIGhv bGQgdGhlCistLSBidWNrZXQgcGFpciBpbiB0aGF0IHN0YXRlOiBpdCBtYWtlcyB0aGUgdGVzdHMg YmVsb3cgZGV0ZXJtaW5pc3RpYywKKy0tIHdpdGhvdXQgYW55IG5lZWQgZm9yIGEgc2Vjb25kIHNl c3Npb24uICBUaGUgaGFzaC1zcGxpdCBpc29sYXRpb24gdGVzdAorLS0gcHJvdmlkZXMgZXF1aXZh bGVudCBjb3ZlcmFnZSBmb3Igc2NhbnMgdGhhdCBydW4gZHVyaW5nIGEgbGl2ZSBzcGxpdC4KK0NS RUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCgpOworCitDUkVBVEUgVEFCTEUgaGFzaF9zcGxpdF90ZXN0ICh2IGludDQpIFdJ VEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoYXNoX3NwbGl0 X2luZGV4IE9OIGhhc2hfc3BsaXRfdGVzdCBVU0lORyBoYXNoICh2KTsKKworLS0gRGV0ZXJtaW5l IHRoZSBsYXlvdXQgb2YgdGhlIChuZXZlci1zcGxpdCkgaW5kZXg6IG9uZSBtZXRhcGFnZSwgbmJ1 Y2tldHMKKy0tIGJ1Y2tldCBwYWdlcywgYW5kIG9uZSBiaXRtYXAgcGFnZS4gIFRoZSBpbmRleCdz IGZpcnN0IGJ1Y2tldCBzcGxpdCB3aWxsCistLSBzcGxpdCBidWNrZXQgMCwgY3JlYXRpbmcgYnVj a2V0IG5idWNrZXRzLgorQ1JFQVRFIFRFTVAgVEFCTEUgaGFzaF9zcGxpdF9nZW9tIEFTCisgIFNF TEVDVCBuYnVja2V0cywKKyAgICAgICAgIChjdXJyZW50X3NldHRpbmcoJ2Jsb2NrX3NpemUnKTo6 YmlnaW50IC8gMTYpICogbmJ1Y2tldHMgQVMgZmlsbHJvd3MKKyAgICBGUk9NIChTRUxFQ1QgcGdf cmVsYXRpb25fc2l6ZSgnaGFzaF9zcGxpdF9pbmRleCcpIC8KKyAgICAgICAgICAgICAgICAgY3Vy cmVudF9zZXR0aW5nKCdibG9ja19zaXplJyk6OmJpZ2ludCAtIDIgQVMgbmJ1Y2tldHMpIGc7Cist LSBzYW5pdHk6IGluaXRpYWwgYnVja2V0IGNvdW50cyBhcmUgYWx3YXlzIHBvd2VycyBvZiB0d28K K1NFTEVDVCBuYnVja2V0cyA+IDAgQU5EIChuYnVja2V0cyAmIChuYnVja2V0cyAtIDEpKSA9IDAg QVMgbmJ1Y2tldHNfb2sKKyAgRlJPTSBoYXNoX3NwbGl0X2dlb207CisKKy0tIENob29zZSBhIHZh bHVlIHRoYXQgbWFwcyB0byBidWNrZXQgMCBiZWZvcmUgdGhlIHNwbGl0IGFuZCB0byB0aGUgbmV3 CistLSBidWNrZXQgYWZ0ZXJ3YXJkcworQ1JFQVRFIFRFTVAgVEFCTEUgaGFzaF9zcGxpdF9rZXkg QVMKKyAgU0VMRUNUIG1pbih2KTo6aW50NCBBUyBrCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwMDApIHYsIGhhc2hfc3BsaXRfZ2VvbQorICAgV0hFUkUgKGhhc2hpbnQ0KHY6OmludDQp ICYgKDIgKiBuYnVja2V0cyAtIDEpKSA9IG5idWNrZXRzOworCitJTlNFUlQgSU5UTyBoYXNoX3Nw bGl0X3Rlc3QKKyAgU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSwgZ2VuZXJhdGVfc2VyaWVz KDEsIDEwKTsKKworLS0gRXJyb3Igb3V0IGR1cmluZyB0aGUgZmlyc3QgYnVja2V0IHNwbGl0LCBs ZWF2aW5nIGl0IGluY29tcGxldGUuCistLSBmaWxscm93cyBpcyBndWFyYW50ZWVkIHRvIGNyb3Nz IHRoZSBzcGxpdCB0aHJlc2hvbGQgb2YgZmZhY3RvciAqIG5idWNrZXRzCistLSB0dXBsZXM6IGEg aGFzaCBpbmRleCBlbnRyeSBvY2N1cGllcyBhdCBsZWFzdCAxNiBieXRlcyAobGluZSBwb2ludGVy CistLSBpbmNsdWRlZCksIGFuZCB0aGUgZGVmYXVsdCBmaWxsZmFjdG9yIHRhcmdldHMgNzUlIHBh Z2UgZnVsbG5lc3MsIHNvCistLSBmZmFjdG9yIGNhbiBuZXZlciBleGNlZWQgYmxvY2tfc2l6ZSAv IDE2IHR1cGxlcyBwZXIgYnVja2V0LgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdo YXNoLXNwbGl0LWJlZm9yZS1yZWxvY2F0aW9uJywgJ2Vycm9yJyk7CitJTlNFUlQgSU5UTyBoYXNo X3NwbGl0X3Rlc3QKKyAgU0VMRUNUIDEwMDAwMDAgKyBnIEZST00gaGFzaF9zcGxpdF9nZW9tLCBn ZW5lcmF0ZV9zZXJpZXMoMSwgZmlsbHJvd3MpIGc7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19k ZXRhY2goJ2hhc2gtc3BsaXQtYmVmb3JlLXJlbG9jYXRpb24nKTsKKworLS0gVGhpcyBpbnNlcnRp b24gZ29lcyB0byB0aGUgbmV3IGJ1Y2tldCwgd2hpY2ggaXMgc3RpbGwgZmxhZ2dlZCBhcyBiZWlu ZworLS0gcG9wdWxhdGVkIGJ5IHRoZSBpbmNvbXBsZXRlIHNwbGl0CitJTlNFUlQgSU5UTyBoYXNo X3NwbGl0X3Rlc3QgU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleTsKKworLS0gU2NhbnMgb2Yg dGhhdCBidWNrZXQgbXVzdCB2aXNpdCBib3RoIGJ1Y2tldHMgb2YgdGhlIGluY29tcGxldGUgc3Bs aXQ6CistLSB0aGUgZnJlc2ggcm93IGZyb20gdGhlIG5ldyBidWNrZXQsIHBsdXMgdGhlIDEwIG9s ZGVyIHJvd3MgdGhhdCByZW1haW4KKy0tIGluIGJ1Y2tldCAwCitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYp CisgIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhhc2hfc3BsaXRfdGVzdAorICAgV0hFUkUgdiA9IChT RUxFQ1QgayBGUk9NIGhhc2hfc3BsaXRfa2V5KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhhc2hf c3BsaXRfdGVzdAorIFdIRVJFIHYgPSAoU0VMRUNUIGsgRlJPTSBoYXNoX3NwbGl0X2tleSk7CisK Ky0tIEJhY2t3YXJkIHNjYW5zIG11c3QgdmlzaXQgYm90aCBidWNrZXRzIHRvbywgaW4gdGhlIG9w cG9zaXRlIG9yZGVyCitCRUdJTjsKK0RFQ0xBUkUgYyBTQ1JPTEwgQ1VSU09SIEZPUgorICBTRUxF Q1QgdiA9IChTRUxFQ1QgayBGUk9NIGhhc2hfc3BsaXRfa2V5KSBGUk9NIGhhc2hfc3BsaXRfdGVz dAorICAgV0hFUkUgdiA9IChTRUxFQ1QgayBGUk9NIGhhc2hfc3BsaXRfa2V5KTsKK01PVkUgRk9S V0FSRCBBTEwgSU4gYzsKK0ZFVENIIEJBQ0tXQVJEIEFMTCBGUk9NIGM7CitDT01NSVQ7CisKKy0t IFNhbWUgY291bnQgdmlhIGEgYml0bWFwIHNjYW4sIHdoaWNoIHNoYXJlcyB0aGUgdW5kZXJseWlu ZyBzY2FuIGNvZGUKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRt YXBzY2FuID0gb247CitTRUxFQ1QgY291bnQoKikgRlJPTSBoYXNoX3NwbGl0X3Rlc3QKKyBXSEVS RSB2ID0gKFNFTEVDVCBrIEZST00gaGFzaF9zcGxpdF9rZXkpOworLS0gQW5kIHRoZSBncm91bmQg dHJ1dGgsIHZpYSB0aGUgaGVhcAorU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgY291bnQoKikgRlJPTSBoYXNoX3NwbGl0X3Rlc3QKKyBX SEVSRSB2ID0gKFNFTEVDVCBrIEZST00gaGFzaF9zcGxpdF9rZXkpOworUkVTRVQgZW5hYmxlX2lu ZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworCitEUk9QIFRBQkxFIGhhc2hfc3Bs aXRfdGVzdDsKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Ci0tIAoyLjUzLjAKCg== --0000000000000767220656302ba6--