Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1up0uW-00Eei6-1U for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Aug 2025 08:44:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1up0uV-00FFWh-Fk for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Aug 2025 08:44:40 +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.94.2) (envelope-from ) id 1up0uU-00FFWZ-Q3 for pgsql-hackers@lists.postgresql.org; Thu, 21 Aug 2025 08:44:39 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1up0uS-000zPw-2G for pgsql-hackers@postgresql.org; Thu, 21 Aug 2025 08:44:38 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-53b1740154dso568086e0c.1 for ; Thu, 21 Aug 2025 01:44:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755765876; x=1756370676; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=uMUu/fGNlZjBF3vntN64af0sBX9FX++aQqDW+OGPH0g=; b=iaM19BbCmAvmCTNY3WDTtYbIONQuqS9WcxR503qJF/m7/Qg0nsEiwZta3Mdsl5xxGo SvRw1wVlOxJjEGY1AscfOMHHsPebBzEcHe083farE8S8kIjoPcFf/xO4QYzsdIbugyfm z0Pfbyog5XdUSavrgncL8xv8MS7oOdzr5erpEc1ffXPsG3sxKVreQJ46fQuGAuFRATQT ZPOz+hXDR3Enb8sa9TPAAYpHKN/ZgN1aOotGEfKuRLvQJ2dQr5igGqMmRJQxqMBKrPqf dnXWix3JQwesZaCNk65qCfOVxuX7c1nF3CL9k7czl59u6RFbm04ei7PhhnHNQwt7j7CI 7H/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755765876; x=1756370676; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uMUu/fGNlZjBF3vntN64af0sBX9FX++aQqDW+OGPH0g=; b=Taj9HUSCpK4XSmOndfNUcoVcP2HbVdF3z6t2sBXNU5D8d/Xh5uf4ZavH32Ut6NGpww ocB9TnG2vjFo7cGQydXCrhfCmTSsCB4YHusytCCtVyNriqWCwdMlouhzNPdG8VZb3uWU TI3xuxtKRTjbo/WdGWWF91B/Ifrse+wYYZUK8nF/CwllGkbW8l6tKDWRueTg0CjfIGco 351WA1ZGjZSau8U7wAOq7IkbvMqGNbK57qe7aPTsmA6YkSvT0n0ITkARcLL6O0rL2Rsl fnslGFLuIjxK97yhM+VogQ3EK/DmbYy6w0RTOGsyYz6ZTzcye/uu6mI3vTV9aQNfaIuA UGQA== X-Forwarded-Encrypted: i=1; AJvYcCXZ+Wn4sMZCckqjVNk8jVzdmMs7vEqqwci7hJOM6jd3aSOl7hfWnPR4WNn3x/wOjdZvDc3AmbxVXSNqUeMu@postgresql.org X-Gm-Message-State: AOJu0YxipeVSSMhSdCx7pSDjL0QUGikfjZ1pkol4hiXqnYrP/w8mLUDO 3u2aBQz2w2aTkugKpREU0E2iGWpA4b0e4tnIQPK0lNe/JORyMu99KwYKLOhCmfG0GM4s38jjNjC zl2XzEVg23kMNRrYzjBYUlGYcZVNSLvc= X-Gm-Gg: ASbGncvKJoYI2rw4n8UrF4HISKMgoRLAddbvCEcB5OWdedMr2Mk0TvDLt/w7oNyj2Pj mA++aA/k0oxG6XbXLP+gyzzqXSetwm8yu7a0igaC4NzQuj+qRjl4zT7cPB+jkMe+WxfdwEoG+8D +p8E/E7rFTNuijbprOXMw8H9jtsxIiQ7kfMvfxu2TkMj+0MqFU2yHiTIkKS7/9SYH3rcw93ljw7 yhL830= X-Google-Smtp-Source: AGHT+IGrUplPhNdTva9xWYzOB46dclZy0278lw31rxFdLYEj9J1HEaN5cDEJS49yC104Rw1m2dna3KyrBSkcmxKBvQ0= X-Received: by 2002:a05:6122:45a0:b0:520:4806:a422 with SMTP id 71dfb90a1353d-53c7d84308dmr496097e0c.3.1755765876448; Thu, 21 Aug 2025 01:44:36 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Thu, 21 Aug 2025 10:43:08 +0200 X-Gm-Features: Ac12FXx8yzv72s0Fx6iFsx0MM_D8xDmLLVdz5PM5GjTuY-o8tDnenM2l5kghuLg Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: "Zhijie Hou (Fujitsu)" , Peter Geoghegan Cc: Amit Kapila , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund Content-Type: multipart/mixed; boundary="0000000000006007ba063cdc1903" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006007ba063cdc1903 Content-Type: text/plain; charset="UTF-8" Hello, Added one more test - for invalid "update_deleted" conflict detection. Best regards, Mikhail. --0000000000006007ba063cdc1903 Content-Type: application/octet-stream; name="v10-0002-Fix-btree-index-scan-concurrency-issues-with-dir.patch" Content-Disposition: attachment; filename="v10-0002-Fix-btree-index-scan-concurrency-issues-with-dir.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mel5m6lk1 RnJvbSA2NjBkMzlmMmEzMTg4MjQyNzUyMmZlNDgzODc5MjJkY2Q0MDkxMTAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNiBKdW4gMjAyNSAyMjoyMDozOCArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjEwIDIvMl0gRml4IGJ0cmVlIGluZGV4IHNjYW4gY29uY3VycmVuY3kgaXNzdWVzIHdp dGggZGlydHkKIHNuYXBzaG90cwoKVGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgd2hlcmUg bm9uLU1WQ0MgaW5kZXggc2NhbnMgdXNpbmcgU25hcHNob3REaXJ0eSBvciBTbmFwc2hvdFNlbGYg Y291bGQgbWlzcyB0dXBsZXMgZHVlIHRvIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucy4gVGhlIGZp eCByZXRhaW5zIHJlYWQgbG9ja3Mgb24gcGFnZXMgZm9yIHRoZXNlIHNwZWNpYWwgc25hcHNob3Qg dHlwZXMgdW50aWwgdGhlIHNjYW4gaXMgZG9uZSB3aXRoIHRoZSBwYWdlJ3MgdHVwbGVzLCBwcmV2 ZW50aW5nIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBmcm9tIGNhdXNpbmcgaW5jb25zaXN0ZW50 IHJlc3VsdHMuCgpVcGRhdGVkIFJFQURNRSB0byBkb2N1bWVudCB0aGlzIHNwZWNpYWwgY2FzZSBp biB0aGUgYnRyZWUgbG9ja2luZyBtZWNoYW5pc20uCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9SRUFETUUgICAgICAgfCAxMyArKysrKysrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMgIHwgMTYgKysrKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUmVwbGljYXRpb24uYyB8ICA4ICsrKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0 aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL1JFQURNRSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FCmluZGV4IDUz ZDRhNjFkYzNmLi5hOTI4MDQxNTYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTg1 LDcgKzg1LDggQEAgbW92ZSByaWdodCB1bnRpbCB3ZSBmaW5kIGEgcGFnZSB3aG9zZSByaWdodC1s aW5rIG1hdGNoZXMgdGhlIHBhZ2Ugd2UKIGNhbWUgZnJvbS4gIChBY3R1YWxseSwgaXQncyBldmVu IGhhcmRlciB0aGFuIHRoYXQ7IHNlZSBwYWdlIGRlbGV0aW9uCiBkaXNjdXNzaW9uIGJlbG93LikK IAotUGFnZSByZWFkIGxvY2tzIGFyZSBoZWxkIG9ubHkgZm9yIGFzIGxvbmcgYXMgYSBzY2FuIGlz IGV4YW1pbmluZyBhIHBhZ2UuCitQYWdlIHJlYWQgbG9ja3MgYXJlIGhlbGQgb25seSBmb3IgYXMg bG9uZyBhcyBhIHNjYW4gaXMgZXhhbWluaW5nIGEgcGFnZQorKHdpdGggZXhjZXB0aW9uIGZvciBT bmFwc2hvdERpcnR5IGFuZCBTbmFwc2hvdFNlbGYgc2NhbnMgLSBzZWUgYmVsb3cpLgogVG8gbWlu aW1pemUgbG9jay91bmxvY2sgdHJhZmZpYywgYW4gaW5kZXggc2NhbiBhbHdheXMgc2VhcmNoZXMg YSBsZWFmIHBhZ2UKIHRvIGlkZW50aWZ5IGFsbCB0aGUgbWF0Y2hpbmcgaXRlbXMgYXQgb25jZSwg Y29weWluZyB0aGVpciBoZWFwIHR1cGxlIElEcwogaW50byBiYWNrZW5kLWxvY2FsIHN0b3JhZ2Uu ICBUaGUgaGVhcCB0dXBsZSBJRHMgYXJlIHRoZW4gcHJvY2Vzc2VkIHdoaWxlCkBAIC0xMDMsNiAr MTA0LDE2IEBAIFdlIGFsc28gcmVtZW1iZXIgdGhlIGxlZnQtbGluaywgYW5kIGZvbGxvdyBpdCB3 aGVuIHRoZSBzY2FuIG1vdmVzIGJhY2t3YXJkcwogKHRob3VnaCB0aGlzIHJlcXVpcmVzIGV4dHJh IGhhbmRsaW5nIHRvIGFjY291bnQgZm9yIGNvbmN1cnJlbnQgc3BsaXRzIG9mCiB0aGUgbGVmdCBz aWJsaW5nOyBzZWUgZGV0YWlsZWQgbW92ZS1sZWZ0IGFsZ29yaXRobSBiZWxvdykuCiAKK0Rlc3Bp dGUgdGhlIGRlc2NyaWJlZCBtZWNoYW5pY3MgaW4gcGxhY2UsIGluY29uc2lzdGVudCByZXN1bHRz IG1heSBzdGlsbCBvY2N1cgorZHVyaW5nIG5vbi1NVkNDIHNjYW5zIChTbmFwc2hvdERpcnR5IGFu ZCBTbmFwc2hvdFNlbGYpLiBUaGlzIGlzc3VlIGNhbiBvY2N1ciBpZiBhIAorY29uY3VycmVudCB0 cmFuc2FjdGlvbiBkZWxldGVzIGEgdHVwbGUgYW5kIGluc2VydHMgYSBuZXcgdHVwbGUgd2l0aCBh IG5ldyBUSUQgaW4gdGhlIAorc2FtZSBwYWdlLiBJZiB0aGUgc2NhbiBoYXMgYWxyZWFkeSB2aXNp dGVkIHRoZSBwYWdlIGFuZCBjYWNoZWQgaXRzIGNvbnRlbnQgaW4gdGhlCitiYWNrZW5kLWxvY2Fs IHN0b3JhZ2UsIGl0IG1pZ2h0IHNraXAgdGhlIG9sZCB0dXBsZSBkdWUgdG8gZGVsZXRpb24gYW5k IG1pc3MgdGhlIG5ldyAKK3R1cGxlIGJlY2F1c2UgdGhlIHNjYW4gZG9lcyBub3QgcmUtcmVhZCB0 aGUgcGFnZS4gVG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBmb3IgCitTbmFwc2hvdERpcnR5IGFuZCBT bmFwc2hvdFNlbGYgc2NhbnMsIHdlIHJldGFpbiB0aGUgcmVhZCBsb2NrIG9uIHRoZSBwYWdlIHVu dGlsIAord2UncmUgY29tcGxldGVseSBkb25lIHByb2Nlc3NpbmcgYWxsIHRoZSB0dXBsZXMgZnJv bSB0aGF0IHBhZ2UsIHByZXZlbnRpbmcgCitjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgdGhhdCBj b3VsZCBsZWFkIHRvIGluY29uc2lzdGVudCByZXN1bHRzLgorCiBJbiBtb3N0IGNhc2VzIHdlIHJl bGVhc2Ugb3VyIGxvY2sgYW5kIHBpbiBvbiBhIHBhZ2UgYmVmb3JlIGF0dGVtcHRpbmcKIHRvIGFj cXVpcmUgcGluIGFuZCBsb2NrIG9uIHRoZSBwYWdlIHdlIGFyZSBtb3ZpbmcgdG8uICBJbiBhIGZl dyBwbGFjZXMKIGl0IGlzIG5lY2Vzc2FyeSB0byBsb2NrIHRoZSBuZXh0IHBhZ2UgYmVmb3JlIHJl bGVhc2luZyB0aGUgY3VycmVudCBvbmUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwppbmRl eCBmZGZmOTYwYzEzMC4uYmRhMmI4MjFhNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUu YwpAQCAtMzkzLDEwICszOTMsMjIgQEAgYnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2Fu S2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCiAJCS8qIEJlZm9yZSBsZWF2aW5nIGN1cnJlbnQg cGFnZSwgZGVhbCB3aXRoIGFueSBraWxsZWQgaXRlbXMgKi8KIAkJaWYgKHNvLT5udW1LaWxsZWQg PiAwKQogCQkJX2J0X2tpbGxpdGVtcyhzY2FuKTsKKwkJZWxzZSBpZiAoIXNvLT5kcm9wTG9jaykg LyogX2J0X2tpbGxpdGVtcyBhbHdheXMgcmVsZWFzZXMgbG9jayAqLworCQkJX2J0X3VubG9ja2J1 ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3VyclBvcy5idWYpOwogCQlCVFNjYW5Qb3NVbnBp bklmUGlubmVkKHNvLT5jdXJyUG9zKTsKIAkJQlRTY2FuUG9zSW52YWxpZGF0ZShzby0+Y3VyclBv cyk7CiAJfQogCisJLyoKKwkgKiBGb3IgU25hcHNob3REaXJ0eSBhbmQgU25hcHNob3RTZWxmIHNj YW5zLCB3ZSBkb24ndCB1bmxvY2sgdGhlIGJ1ZmZlcgorCSAqIGFuZCBrZWVwIHRoZSBsb2NrIHNo b3VsZCBiZSB1bnRpbCB3ZSdyZSBjb21wbGV0ZWx5IGRvbmUgd2l0aCB0aGlzIHBhZ2UuCisJICog VGhpcyBwcmV2ZW50cyBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgZnJvbSBjYXVzaW5nIGluY29u c2lzdGVudAorCSAqIHJlc3VsdHMgZHVyaW5nIG5vbi1NVkNDIHNjYW5zLgorCSAqCisJICogU2Vl IG5idHJlZS9SRUFETUUgZm9yIGluZm9ybWF0aW9uIGFib3V0IFNuYXBzaG90RGlydHkgYW5kIFNu YXBzaG90U2VsZi4KKwkgKi8KKwlzby0+ZHJvcExvY2sgPSBzY2FuLT54c19zbmFwc2hvdC0+c25h cHNob3RfdHlwZSAhPSBTTkFQU0hPVF9ESVJUWQorCQkJCQkmJiBzY2FuLT54c19zbmFwc2hvdC0+ c25hcHNob3RfdHlwZSAhPSBTTkFQU0hPVF9TRUxGOwogCS8qCiAJICogV2UgcHJlZmVyIHRvIGVh Z2VybHkgZHJvcCBsZWFmIHBhZ2UgcGlucyBiZWZvcmUgYnRnZXR0dXBsZSByZXR1cm5zLgogCSAq IFRoaXMgYXZvaWRzIG1ha2luZyBWQUNVVU0gd2FpdCB0byBhY3F1aXJlIGEgY2xlYW51cCBsb2Nr IG9uIHRoZSBwYWdlLgpAQCAtNDIwLDcgKzQzMiw4IEBAIGJ0cmVzY2FuKEluZGV4U2NhbkRlc2Mg c2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAogCSAqCiAJICogTm90ZTogc28t PmRyb3BQaW4gc2hvdWxkIG5ldmVyIGNoYW5nZSBhY3Jvc3MgcmVzY2Fucy4KIAkgKi8KLQlzby0+ ZHJvcFBpbiA9ICghc2Nhbi0+eHNfd2FudF9pdHVwICYmCisJc28tPmRyb3BQaW4gPSAoc28tPmRy b3BMb2NrICYmCisJCQkJICAgIXNjYW4tPnhzX3dhbnRfaXR1cCAmJgogCQkJCSAgIElzTVZDQ1Nu YXBzaG90KHNjYW4tPnhzX3NuYXBzaG90KSAmJgogCQkJCSAgIFJlbGF0aW9uTmVlZHNXQUwoc2Nh bi0+aW5kZXhSZWxhdGlvbikgJiYKIAkJCQkgICBzY2FuLT5oZWFwUmVsYXRpb24gIT0gTlVMTCk7 CkBAIC00NzcsNiArNDkwLDggQEAgYnRlbmRzY2FuKEluZGV4U2NhbkRlc2Mgc2NhbikKIAkJLyog QmVmb3JlIGxlYXZpbmcgY3VycmVudCBwYWdlLCBkZWFsIHdpdGggYW55IGtpbGxlZCBpdGVtcyAq LwogCQlpZiAoc28tPm51bUtpbGxlZCA+IDApCiAJCQlfYnRfa2lsbGl0ZW1zKHNjYW4pOworCQll bHNlIGlmICghc28tPmRyb3BMb2NrKSAvKiBfYnRfa2lsbGl0ZW1zIGFsd2F5cyByZWxlYXNlcyBs b2NrICovCisJCQlfYnRfdW5sb2NrYnVmKHNjYW4tPmluZGV4UmVsYXRpb24sIHNvLT5jdXJyUG9z LmJ1Zik7CiAJCUJUU2NhblBvc1VucGluSWZQaW5uZWQoc28tPmN1cnJQb3MpOwogCX0KIApAQCAt NTU3LDYgKzU3Miw4IEBAIGJ0cmVzdHJwb3MoSW5kZXhTY2FuRGVzYyBzY2FuKQogCQkJLyogQmVm b3JlIGxlYXZpbmcgY3VycmVudCBwYWdlLCBkZWFsIHdpdGggYW55IGtpbGxlZCBpdGVtcyAqLwog CQkJaWYgKHNvLT5udW1LaWxsZWQgPiAwKQogCQkJCV9idF9raWxsaXRlbXMoc2Nhbik7CisJCQll bHNlIGlmICghc28tPmRyb3BMb2NrKSAvKiBfYnRfa2lsbGl0ZW1zIGFsd2F5cyByZWxlYXNlcyBs b2NrICovCisJCQkJX2J0X3VubG9ja2J1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3VyclBv cy5idWYpOwogCQkJQlRTY2FuUG9zVW5waW5JZlBpbm5lZChzby0+Y3VyclBvcyk7CiAJCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKaW5kZXggZDY5Nzk4Nzk1YjQuLmY5MmRi YTE3ZmE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKQEAgLTU3LDEyICs1 NywxNCBAQCBzdGF0aWMgYm9vbCBfYnRfZW5kcG9pbnQoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2Fu RGlyZWN0aW9uIGRpcik7CiAvKgogICoJX2J0X2Ryb3BfbG9ja19hbmRfbWF5YmVfcGluKCkKICAq Ci0gKiBVbmxvY2sgc28tPmN1cnJQb3MuYnVmLiAgSWYgc2NhbiBpcyBzby0+ZHJvcFBpbiwgZHJv cCB0aGUgcGluLCB0b28uCisgKiBVbmxvY2sgc28tPmN1cnJQb3MuYnVmIGlmIHNvLT5kcm9wTG9j ay4gSWYgc2NhbiBpcyBzby0+ZHJvcFBpbiwgZHJvcCB0aGUgcGluLCB0b28uCiAgKiBEcm9wcGlu ZyB0aGUgcGluIHByZXZlbnRzIFZBQ1VVTSBmcm9tIGJsb2NraW5nIG9uIGFjcXVpcmluZyBhIGNs ZWFudXAgbG9jay4KICAqLwogc3RhdGljIGlubGluZSB2b2lkCiBfYnRfZHJvcF9sb2NrX2FuZF9t YXliZV9waW4oUmVsYXRpb24gcmVsLCBCVFNjYW5PcGFxdWUgc28pCiB7CisJaWYgKCFzby0+ZHJv cExvY2spCisJCXJldHVybjsKIAlpZiAoIXNvLT5kcm9wUGluKQogCXsKIAkJLyogSnVzdCBkcm9w IHRoZSBsb2NrIChub3QgdGhlIHBpbikgKi8KQEAgLTE1NzksNyArMTU4MSw4IEBAIF9idF9maXJz dChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogICoJX2J0X25leHQoKSAt LSBHZXQgdGhlIG5leHQgaXRlbSBpbiBhIHNjYW4uCiAgKgogICoJCU9uIGVudHJ5LCBzby0+Y3Vy clBvcyBkZXNjcmliZXMgdGhlIGN1cnJlbnQgcGFnZSwgd2hpY2ggbWF5IGJlIHBpbm5lZAotICoJ CWJ1dCBpcyBub3QgbG9ja2VkLCBhbmQgc28tPmN1cnJQb3MuaXRlbUluZGV4IGlkZW50aWZpZXMg d2hpY2ggaXRlbSB3YXMKKyAqCQlidXQgaXMgbm90IGxvY2tlZCAoZXhjZXB0IGZvciBTbmFwc2hv dERpcnR5IGFuZCBTbmFwc2hvdFNlbGYgc2NhbnMsIHdoZXJlCisgKgkJdGhlIHBhZ2UgcmVtYWlu cyBsb2NrZWQpLCBhbmQgc28tPmN1cnJQb3MuaXRlbUluZGV4IGlkZW50aWZpZXMgd2hpY2ggaXRl bSB3YXMKICAqCQlwcmV2aW91c2x5IHJldHVybmVkLgogICoKICAqCQlPbiBzdWNjZXNzIGV4aXQs IHNvLT5jdXJyUG9zIGlzIHVwZGF0ZWQgYXMgbmVlZGVkLCBhbmQgX2J0X3JldHVybml0ZW0KQEAg LTIxNTgsNyArMjE2MSw5IEBAIF9idF9yZXR1cm5pdGVtKEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRT Y2FuT3BhcXVlIHNvKQogICogV3JhcHBlciBvbiBfYnRfcmVhZG5leHRwYWdlIHRoYXQgcGVyZm9y bXMgZmluYWwgc3RlcHMgZm9yIHRoZSBjdXJyZW50IHBhZ2UuCiAgKgogICogT24gZW50cnksIHNv LT5jdXJyUG9zIG11c3QgYmUgdmFsaWQuICBJdHMgYnVmZmVyIHdpbGwgYmUgcGlubmVkLCB0aG91 Z2gKLSAqIG5ldmVyIGxvY2tlZC4gKEFjdHVhbGx5LCB3aGVuIHNvLT5kcm9wUGluIHRoZXJlIHdv bid0IGV2ZW4gYmUgYSBwaW4gaGVsZCwKKyAqIG5ldmVyIGxvY2tlZCwgZXhjZXB0IGZvciBTbmFw c2hvdERpcnR5IGFuZCBTbmFwc2hvdFNlbGYgc2NhbnMgd2hlcmUgdGhlIGJ1ZmZlcgorICogcmVt YWlucyBsb2NrZWQgdW50aWwgd2UncmUgZG9uZSB3aXRoIGFsbCB0dXBsZXMgZnJvbSB0aGUgcGFn ZQorICogKEFjdHVhbGx5LCB3aGVuIHNvLT5kcm9wUGluIHRoZXJlIHdvbid0IGV2ZW4gYmUgYSBw aW4gaGVsZCwKICAqIHRob3VnaCBzby0+Y3VyclBvcy5jdXJyUGFnZSBtdXN0IHN0aWxsIGJlIHNl dCB0byBhIHZhbGlkIGJsb2NrIG51bWJlci4pCiAgKi8KIHN0YXRpYyBib29sCkBAIC0yMTczLDYg KzIxNzgsOCBAQCBfYnRfc3RlcHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9u IGRpcikKIAkvKiBCZWZvcmUgbGVhdmluZyBjdXJyZW50IHBhZ2UsIGRlYWwgd2l0aCBhbnkga2ls bGVkIGl0ZW1zICovCiAJaWYgKHNvLT5udW1LaWxsZWQgPiAwKQogCQlfYnRfa2lsbGl0ZW1zKHNj YW4pOworCWVsc2UgaWYgKCFzby0+ZHJvcExvY2spIC8qIF9idF9raWxsaXRlbXMgYWx3YXlzIHJl bGVhc2VzIGxvY2sgKi8KKwkJX2J0X3VubG9ja2J1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+ Y3VyclBvcy5idWYpOwogCiAJLyoKIAkgKiBCZWZvcmUgd2UgbW9kaWZ5IGN1cnJQb3MsIG1ha2Ug YSBjb3B5IG9mIHRoZSBwYWdlIGRhdGEgaWYgdGhlcmUgd2FzIGEKQEAgLTIzMTIsNyArMjMxOSw4 IEBAIF9idF9yZWFkZmlyc3RwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgT2Zmc2V0TnVtYmVyIG9m Zm51bSwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJfQogCiAJLyogVGhlcmUncyBubyBhY3R1YWxseS1t YXRjaGluZyBkYXRhIG9uIHRoZSBwYWdlIGluIHNvLT5jdXJyUG9zLmJ1ZiAqLwotCV9idF91bmxv Y2tidWYoc2Nhbi0+aW5kZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuYnVmKTsKKwlpZiAoc28tPmRy b3BMb2NrKQorCQlfYnRfdW5sb2NrYnVmKHNjYW4tPmluZGV4UmVsYXRpb24sIHNvLT5jdXJyUG9z LmJ1Zik7CiAKIAkvKiBDYWxsIF9idF9yZWFkbmV4dHBhZ2UgdXNpbmcgaXRzIF9idF9zdGVwcGFn ZSB3cmFwcGVyIGZ1bmN0aW9uICovCiAJaWYgKCFfYnRfc3RlcHBhZ2Uoc2NhbiwgZGlyKSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCBlZGZlYTJhY2FmZi4uNTZkNWJmNDQ3 ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKQEAgLTMyODMsOCArMzI4Mywx MCBAQCBfYnRfa2lsbGl0ZW1zKEluZGV4U2NhbkRlc2Mgc2NhbikKIAkJICogY29uY3VycmVudCBW QUNVVU1zIGZyb20gcmVjeWNsaW5nIGFueSBvZiB0aGUgVElEcyBvbiB0aGUgcGFnZS4KIAkJICov CiAJCUFzc2VydChCVFNjYW5Qb3NJc1Bpbm5lZChzby0+Y3VyclBvcykpOworCQkvKiBMb2NrIG9u bHkgaWYgdGhlIGxvY2sgaXMgZHJvcHBlZC4gKi8KIAkJYnVmID0gc28tPmN1cnJQb3MuYnVmOwot CQlfYnRfbG9ja2J1ZihyZWwsIGJ1ZiwgQlRfUkVBRCk7CisJCWlmIChzby0+ZHJvcExvY2spCisJ CQlfYnRfbG9ja2J1ZihyZWwsIGJ1ZiwgQlRfUkVBRCk7CiAJfQogCWVsc2UKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGRhMGNiZjQxZDZmLi5jMmY1YWEyYmE1 YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIwNSwxMiArMjA1 LDExIEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4 b2lkLAogCiAJLyogU3RhcnQgYW4gaW5kZXggc2Nhbi4gKi8KIAlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVMTCwgc2tleV9hdHRvZmYsIDApOworCWluZGV4X3Jl c2NhbihzY2FuLCBza2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKIHJldHJ5OgogCWZvdW5k ID0gZmFsc2U7CiAKLQlpbmRleF9yZXNjYW4oc2Nhbiwgc2tleSwgc2tleV9hdHRvZmYsIE5VTEws IDApOwotCiAJLyogVHJ5IHRvIGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5l eHRfc2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgb3V0c2xvdCkpCiAJewpAQCAtMjM4 LDYgKzIzNyw4IEBAIHJldHJ5OgogCQkgKi8KIAkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHh3 YWl0KSkKIAkJeworCQkJLyogV2UgbmVlZCB0byBjYWxsIHJlc2NhbiBiZWZvcmUgd2FpdCB0byBl bnN1cmUgd2UgcmVsZWFzZSBhbGwgdGhlIGluZGV4IHBhZ2UgbG9ja3MuICovCisJCQlpbmRleF9y ZXNjYW4oc2Nhbiwgc2tleSwgc2tleV9hdHRvZmYsIE5VTEwsIDApOwogCQkJWGFjdExvY2tUYWJs ZVdhaXQoeHdhaXQsIE5VTEwsIE5VTEwsIFhMVFdfTm9uZSk7CiAJCQlnb3RvIHJldHJ5OwogCQl9 CkBAIC0yNjYsNyArMjY3LDEwIEBAIHJldHJ5OgogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJ CWlmIChzaG91bGRfcmVmZXRjaF90dXBsZShyZXMsICZ0bWZkKSkKKwkJeworCQkJaW5kZXhfcmVz Y2FuKHNjYW4sIHNrZXksIHNrZXlfYXR0b2ZmLCBOVUxMLCAwKTsKIAkJCWdvdG8gcmV0cnk7CisJ CX0KIAl9CiAKIAlpbmRleF9lbmRzY2FuKHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCmluZGV4IDlhYjQ2 N2NiOGZkLi45YzEwOTMxYzhlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJl ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApAQCAtMTA2OSw2ICsxMDY5LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQlRTY2FuT3BhcXVlRGF0YQogCS8qIGluZm8gYWJvdXQga2lsbGVk IGl0ZW1zIGlmIGFueSAoa2lsbGVkSXRlbXMgaXMgTlVMTCBpZiBuZXZlciB1c2VkKSAqLwogCWlu dAkJICAgKmtpbGxlZEl0ZW1zOwkvKiBjdXJyUG9zLml0ZW1zIGluZGV4ZXMgb2Yga2lsbGVkIGl0 ZW1zICovCiAJaW50CQkJbnVtS2lsbGVkOwkJLyogbnVtYmVyIG9mIGN1cnJlbnRseSBzdG9yZWQg aXRlbXMgKi8KKwlib29sCQlkcm9wTG9jazsJCS8qIGRyb3AgbG9jayBvbiBiZWZvcmUgYnRnZXR0 dXBsZSByZXR1cm5zPyAqLwogCWJvb2wJCWRyb3BQaW47CQkvKiBkcm9wIGxlYWYgcGluIGJlZm9y ZSBidGdldHR1cGxlIHJldHVybnM/ICovCiAKIAkvKgotLSAKMi40My4wCgo= --0000000000006007ba063cdc1903 Content-Type: application/octet-stream; name="v10-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Disposition: attachment; filename="v10-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mel5m6lg0 RnJvbSBkYWNkYTkyMzU3ZjM5NzM1NGE2M2FhNTQxOGY5YmFlODAyYWYwNmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwIDEv Ml0gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBpbmplY3Rpb24gcG9pbnRzIGFuZCBUQVAKIHRl c3RzIHRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IGNvbmZsaWN0IGRldGVjdGlvbiBpc3N1ZXMgdGhh dCBhcmlzZSBkdXJpbmcKIFNOQVBTSE9UX0RJUlRZIGluZGV4IHNjYW5zIGluIGxvZ2ljYWwgcmVw bGljYXRpb24gYW5kCiBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQuCgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAgICAgICB8ICAgOCArCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAgICAgfCAgIDMgKwogc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlICAgIHwgICAyICstCiAuLi4v ZXhwZWN0ZWQvZGlydHlfaW5kZXhfc2Nhbi5vdXQgICAgICAgICAgICAgfCAgMjcgKysrKwogc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9z cGVjcy9kaXJ0eV9pbmRleF9zY2FuLnNwZWMgICAgICAgICAgICAgICB8ICAzNyArKysrKwogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgOCArLQogLi4uL3N1 YnNjcmlwdGlvbi90LzAzNl9kZWxldGVfbWlzc2luZ19yYWNlLnBsIHwgMTM3ICsrKysrKysrKysr KysrKysrCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM3X3VwZGF0ZV9taXNzaW5nX3JhY2UucGwgfCAx MzkgKysrKysrKysrKysrKysrKysKIC4uLi90LzAzOF91cGRhdGVfbWlzc2luZ193aXRoX3JldGFp bi5wbCAgICAgICB8IDE0MSArKysrKysrKysrKysrKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDUw MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9kaXJ0eV9pbmRleF9zY2FuLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cGVjcy9kaXJ0eV9pbmRleF9zY2FuLnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzZfZGVsZXRlX21pc3NpbmdfcmFjZS5wbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN191cGRhdGVfbWlzc2luZ19yYWNlLnBsCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM4X3VwZGF0ZV9taXNz aW5nX3dpdGhfcmV0YWluLnBsCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXggMWE0 ZjM2ZmUwYTkuLjJlNjU3NTA5NzllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAg LTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJ1dGlscy9ydWxldXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NDEsNiArNzQyLDEz IEBAIGluZGV4X2dldG5leHRfc2xvdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyZWN0aW9uLCBUdXBsZVRhYmxlU2xvdCAqCiAJCSAqIHRoZSBpbmRleC4KIAkJICovCiAJCUFz c2VydChJdGVtUG9pbnRlcklzVmFsaWQoJnNjYW4tPnhzX2hlYXB0aWQpKTsKKyNpZmRlZiBVU0Vf SU5KRUNUSU9OX1BPSU5UUworCQlpZiAoc2Nhbi0+eHNfc25hcHNob3QtPnNuYXBzaG90X3R5cGUg PT0gU05BUFNIT1RfRElSVFkpCisJCXsKKwkJCUlOSkVDVElPTl9QT0lOVCgiaW5kZXhfZ2V0bmV4 dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eSIsIE5VTEwpOworCQl9CisjZW5kaWYKKwog CQlpZiAoaW5kZXhfZmV0Y2hfaGVhcChzY2FuLCBzbG90KSkKIAkJCXJldHVybiB0cnVlOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggY2EzM2E4NTQyNzguLmMwN2JhMjMw OTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTE3LDYgKzExNyw3IEBA CiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFu Z2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9p bmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1lbnQgdG8gY2hlY2tfZXhjbHVz aW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAtOTQzLDYgKzk0 NCw4IEBAIHJldHJ5OgogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlzdGluZ19z bG90KTsKIAorCWlmICghY29uZmxpY3QpCisJCUlOSkVDVElPTl9QT0lOVCgiY2hlY2tfZXhjbHVz aW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0IiwgTlVMTCk7CiAJcmV0dXJuICFj b25mbGljdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxl CmluZGV4IGZjODJjZDY3ZjZjLi4xNWY1ZTZkMjNkMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZQpAQCAtMTQsNyArMTQsNyBAQCBQR0ZJTEVERVNDID0gImlu amVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIFJFR1JFU1Mg PSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bQogUkVHUkVTU19P UFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jlc3MKIAotSVNPTEFU SU9OID0gYmFzaWMgaW5wbGFjZSBzeXNjYWNoZS11cGRhdGUtcHJ1bmVkCitJU09MQVRJT04gPSBi YXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1wcnVuZWQgZGlydHlfaW5kZXhfc2NhbgogCiBU QVBfVEVTVFMgPSAxCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9kaXJ0eV9pbmRleF9zY2FuLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9kaXJ0eV9pbmRleF9zY2FuLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODJkNDYzOTdkNjEKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvZGlydHlfaW5kZXhf c2Nhbi5vdXQKQEAgLTAsMCArMSwyNyBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDMgc2Vzc2lv bnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxX3MxIHMyX3MxIHMzX3MxCitpbmplY3Rpb25f cG9pbnRzX2F0dGFjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfczE6IElOU0VSVCBJTlRPIHRlc3QudGJsIFZBTFVF Uyg0MiwgMSkgb24gY29uZmxpY3QoaSkgZG8gdXBkYXRlIHNldCBuID0gRVhDTFVERUQubiArIDE7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJfczE6IFVQREFURSB0ZXN0LnRibCBTRVQgbiA9IG4gKyAx IFdIRVJFIGkgPSA0MjsgPHdhaXRpbmcgLi4uPgorc3RlcCBzM19zMTogCisJU0VMRUNUIGluamVj dGlvbl9wb2ludHNfZGV0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5 X2RpcnR5Jyk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0 X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisgPHdhaXRpbmcgLi4uPgorc3RlcCBz MV9zMTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyX3MxOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czNfczE6IDwuLi4gY29tcGxldGVkPgoraW5qZWN0aW9uX3BvaW50c19kZXRhY2gKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9tZXNvbi5idWlsZAppbmRleCAyMDM5MGQ2YjRiZi4uYTEyNmZlMjBjMmQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTQ4LDYgKzQ4 LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ2Jhc2ljJywKICAgICAgICdpbnBsYWNlJywKICAgICAg ICdzeXNjYWNoZS11cGRhdGUtcHJ1bmVkJywKKyAgICAgICdkaXJ0eV9pbmRleF9zY2FuJywKICAg ICBdLAogICAgICdydW5uaW5nY2hlY2snOiBmYWxzZSwgIyBzZWUgc3lzY2FjaGUtdXBkYXRlLXBy dW5lZAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L3NwZWNzL2RpcnR5X2luZGV4X3NjYW4uc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9zcGVjcy9kaXJ0eV9pbmRleF9zY2FuLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjkxZDIwYWI0NjEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL2RpcnR5X2luZGV4X3NjYW4uc3BlYwpA QCAtMCwwICsxLDM3IEBACitzZXR1cAoreworCUNSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50czsKKwlDUkVBVEUgU0NIRU1BIHRlc3Q7CisJQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRlc3Qu dGJsKGkgaW50IHByaW1hcnkga2V5LCBuIGludCk7CisJQ1JFQVRFIElOREVYIHRibF9uX2lkeCBP TiB0ZXN0LnRibChuKTsKKwlJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoNDIsMSk7Cit9CisK K3RlYXJkb3duCit7CisJRFJPUCBTQ0hFTUEgdGVzdCBDQVNDQURFOworCURST1AgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHM7Cit9CisKK3Nlc3Npb24gczEKK3NldHVwCXsKKwlTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKwlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ2NoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCcsICdl cnJvcicpOworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5kZXhfZ2V0bmV4dF9z bG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScsICd3YWl0Jyk7Cit9CisKK3N0ZXAgczFfczEJ eyBJTlNFUlQgSU5UTyB0ZXN0LnRibCBWQUxVRVMoNDIsIDEpIG9uIGNvbmZsaWN0KGkpIGRvIHVw ZGF0ZSBzZXQgbiA9IEVYQ0xVREVELm4gKyAxOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAgczJfczEJ eyBVUERBVEUgdGVzdC50YmwgU0VUIG4gPSBuICsgMSBXSEVSRSBpID0gNDI7IH0KKworc2Vzc2lv biBzMworc3RlcCBzM19zMQkJeworCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW5k ZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOworCVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBs eV9kaXJ0eScpOworfQorCitwZXJtdXRhdGlvbgorCXMxX3MxCisJczJfczEoKikKKwlzM19zMShz MV9zMSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vTWFrZWZpbGUgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vTWFrZWZpbGUKaW5k ZXggNTBiNjVkOGY2ZWEuLjUxZDI4ZWNhMDkxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL01ha2VmaWxlCkBAIC0x Niw2ICsxNiw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwK IEVYVFJBX0lOU1RBTEwgPSBjb250cmliL2hzdG9yZQogCiBleHBvcnQgd2l0aF9pY3UKK2V4cG9y dCBlbmFibGVfaW5qZWN0aW9uX3BvaW50cwogCiBjaGVjazoKIAkkKHByb3ZlX2NoZWNrKQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDU4NmZmYmE0MzRlLi40OWY1MmRiNGRkMSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNSw3ICs1LDEwIEBAIHRlc3RzICs9IHsKICAg J3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICdiZCc6IG1lc29uLmN1cnJlbnRf YnVpbGRfZGlyKCksCiAgICd0YXAnOiB7Ci0gICAgJ2Vudic6IHsnd2l0aF9pY3UnOiBpY3UuZm91 bmQoKSA/ICd5ZXMnIDogJ25vJ30sCisgICAgJ2Vudic6IHsKKyAgICAgICd3aXRoX2ljdSc6IGlj dS5mb3VuZCgpID8gJ3llcycgOiAnbm8nLAorICAgICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRz JzogZ2V0X29wdGlvbignaW5qZWN0aW9uX3BvaW50cycpID8gJ3llcycgOiAnbm8nCisgICAgfSwK ICAgICAndGVzdHMnOiBbCiAgICAgICAndC8wMDFfcmVwX2NoYW5nZXMucGwnLAogICAgICAgJ3Qv MDAyX3R5cGVzLnBsJywKQEAgLTQyLDYgKzQ1LDkgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDMz X3J1bl9hc190YWJsZV9vd25lci5wbCcsCiAgICAgICAndC8wMzRfdGVtcG9yYWwucGwnLAogICAg ICAgJ3QvMDM1X2NvbmZsaWN0cy5wbCcsCisgICAgICAndC8wMzZfZGVsZXRlX21pc3NpbmdfcmFj ZS5wbCcsCisgICAgICAndC8wMzdfdXBkYXRlX21pc3NpbmdfcmFjZS5wbCcsCisgICAgICAndC8w MzhfdXBkYXRlX21pc3Npbmdfd2l0aF9yZXRhaW4ucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwn LAogICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZf ZGVsZXRlX21pc3NpbmdfcmFjZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9kZWxl dGVfbWlzc2luZ19yYWNlLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li44MmUxNmFmOWJlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNl9kZWxldGVfbWlzc2luZ19yYWNlLnBsCkBAIC0wLDAgKzEsMTM3IEBACisjIENvcHlyaWdo dCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0 IHRoZSBjb25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNhbCByZXBsaWNh dGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNl IFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVz JykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQg YnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBTZXQg aXQgdG8gMCB0byBtYWtlIHNldCBzdWNjZXNzOyBUT0RPOiBkZWxldGUgdGhhdCBmb3IgY29tbWl0 CitteSAkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24gPSAxOworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2V0dXAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBu b2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OworCisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2NvbW1pdF90 aW1lc3RhbXAgZW5hYmxlZAorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNr X2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKwor IyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBh cyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0 YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBieSBk ZWZhdWx0LgoraWYgKCEkbm9kZV9zdWJzY3JpYmVyLT5jaGVja19leHRlbnNpb24oJ2luamVjdGlv bl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdFeHRlbnNpb24gaW5qZWN0aW9uX3Bv aW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVhdGUgdGFibGUgb24gcHVibGlzaGVyCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUg Y29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEgdGV4dCk7Iik7CisKKyMgQ3JlYXRlIHNp bWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3aXRoIGFkZGl0aW9uYWwgaW5kZXggdG8gZGlzYWJs ZSBIT1QgdXBkYXRlcworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs CisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0KTsK KwkgQ1JFQVRFIElOREVYIGRhdGFfaW5kZXggT04gY29uZl90YWIoZGF0YSk7Iik7CisKKyMgU2V0 IHVwIGV4dGVuc2lvbiB0byBzaW11bGF0ZSByYWNlIGNvbmRpdGlvbgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2lu dHM7Jyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25u c3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIGNvbmZfdGFiIik7CisKKyMgSW5zZXJ0IHJvdyB0byBiZSB1cGRh dGVkIGxhdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyBjb25mX3RhYihhLCBkYXRhKSBWQUxVRVMgKDEsJ2Zyb21wdWInKSIpOworCisjIENy ZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25h bWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9wdWIiKTsKKworIyBXYWl0IGZvciBpbml0 aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmFjZSBjb25kaXRpb24gYmVjYXVz ZSBvZiBEaXJ0eVNuYXBzaG90CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCitteSAkcHNxbF9zZXNzaW9uX3N1YnNjcmliZXIgPSAkbm9kZV9zdWJzY3JpYmVy LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0 aW9uKQoreworCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2Zl dGNoX2FwcGx5X2RpcnR5JywgJ3dhaXQnKSIpOworfQorCitteSAkbG9nX29mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMgRGVsZXRlIHR1cGxlIG9uIHB1Ymxpc2hlcgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIGNvbmZf dGFiIFdIRVJFIGE9MTsiKTsKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkj IFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2ggZm9yIHRoZSB0dXBsZSB1c2lu ZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxp Y2F0aW9uIGFwcGx5IHdvcmtlcicsCisJCSdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNo X2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlciB0dXBsZSBvbiBzdWJzY3JpYmVyCiskcHNx bF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAorCXFyL3N0YXJ0LywgcXFbCisJXFxl Y2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBkYXRhID0gJ2Zyb21zdWJuZXcnIFdIRVJF IChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkjIFdh a2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2luZGV4X2dldG5leHRfc2xv dF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf d2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJ CSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdlIGhhdmUgY29uZmxpY3QKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25mbGljdCBkZXRlY3RlZCBvbiBy ZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29mZnNldCk7CisKKyMgQnV0IHR1 cGxlIHNob3VsZCBiZSBkZWxldGVkIG9uIHN1YnNjcmliZXIgYW55IHdheQoraXMoJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgY291bnQoKikgZnJvbSBjb25m X3RhYicpLCAwLCAncmVjb3JkIGRlbGV0ZWQgb24gc3Vic2NyaWJlcicpOworCitvayghJG5vZGVf c3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBv biByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBjb25mbGljdD1kZWxldGVfbWlzc2luZy8s CisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworb2soJG5v ZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3Rl ZCBvbiByZWxhdGlvbiAicHVibGljLmNvbmZfdGFiIjogY29uZmxpY3Q9ZGVsZXRlX29yaWdpbl9k aWZmZXJzLywKKwkJJGxvZ19vZmZzZXQpLCAnY29ycmVjdCBjb25mbGljdCBkZXRlY3RlZCcpOwor Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz N191cGRhdGVfbWlzc2luZ19yYWNlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3Vw ZGF0ZV9taXNzaW5nX3JhY2UucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmUyOWFkNzcxZDhlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM3X3VwZGF0ZV9taXNzaW5nX3JhY2UucGwKQEAgLTAsMCArMSwxMzkgQEAKKyMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRl c3QgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBhbmQgcmVzb2x1dGlvbiBpbiBsb2dpY2FsIHJlcGxp Y2F0aW9uCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1 c2UgVGVzdDo6TW9yZTsKKworaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5 ZXMnKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRl ZCBieSB0aGlzIGJ1aWxkJzsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFNl dCBpdCB0byAwIHRvIG1ha2Ugc2V0IHN1Y2Nlc3M7IFRPRE86IGRlbGV0ZSB0aGF0IGZvciBjb21t aXQKK215ICRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbiA9IDE7CisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTZXR1cAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEluaXRpYWxpemUgcHVibGlzaGVy IG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9 PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlIHdpdGggdHJhY2tfY29tbWl0 X3RpbWVzdGFtcCBlbmFibGVkCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0Owor JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJh Y2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKwor CisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUs IGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGlu c3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5 IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0 aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25f cG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCisjIENyZWF0ZSB0YWJsZSBvbiBwdWJsaXNoZXIK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJM RSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0KTsiKTsKKworIyBDcmVhdGUg c2ltaWxhciB0YWJsZSBvbiBzdWJzY3JpYmVyIHdpdGggYWRkaXRpb25hbCBpbmRleCB0byBkaXNh YmxlIEhPVCB1cGRhdGVzIGFuZCBhZGRpdGlvbmFsIGNvbHVtbgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQ UklNQVJZIGtleSwgZGF0YSB0ZXh0LCBpIGludCBERUZBVUxUIDApOworCSBDUkVBVEUgSU5ERVgg aV9pbmRleCBPTiBjb25mX3RhYihpKTsiKTsKKworIyBTZXQgdXAgZXh0ZW5zaW9uIHRvIHNpbXVs YXRlIHJhY2UgY29uZGl0aW9uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsnKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgY29u Zl90YWIiKTsKKworIyBJbnNlcnQgcm93IHRvIGJlIHVwZGF0ZWQgbGF0ZXIKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIGNvbmZfdGFiKGEsIGRh dGEpIFZBTFVFUyAoMSwnZnJvbXB1YicpIik7CisKKyMgQ3JlYXRlIHRoZSBzdWJzY3JpcHRpb24K K215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCSBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwkgUFVCTElD QVRJT04gdGFwX3B1YiIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5p c2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1 Ymxpc2hlciwgJGFwcG5hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBSYWNlIGNvbmRpdGlvbiBiZWNhdXNlIG9mIERpcnR5U25hcHNob3QKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICRwc3FsX3Nl c3Npb25fc3Vic2NyaWJlciA9ICRub2RlX3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnKTsKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknLCAnd2FpdCcp Iik7Cit9CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworIyBVcGRhdGUgdHVwbGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJVUERBVEUgY29uZl90YWIgU0VUIGRhdGEgPSAnZnJvbXB1Ym5ldycg V0hFUkUgKGE9MSk7Iik7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkj IFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2ggZm9yIHRoZSB0dXBsZSB1c2lu ZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2ZW50KCdsb2dpY2FsIHJlcGxp Y2F0aW9uIGFwcGx5IHdvcmtlcicsICdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2Fw cGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlIGFkZGl0aW9uYWwoISkgY29sdW1uIG9uIHRoZSBz dWJzY3JpYmVyCiskcHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1ZXJ5X3VudGlsKAorCXFyL3N0 YXJ0LywgcXFbCisJXFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZfdGFiIFNFVCBpID0gMSBXSEVS RSAoYT0xKTsKK10pOworCisKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJIyBX YWtlIHVwIGFwcGx5IHdvcmtlcgorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCIKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdpbmRleF9nZXRuZXh0X3Ns b3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOwor CQkiKTsKK30KKworIyBUdXBsZSB3YXMgdXBkYXRlZCAtIHNvLCB3ZSBoYXZlIGNvbmZsaWN0Cisk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvY29uZmxpY3QgZGV0ZWN0ZWQgb24g cmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIi8sCisJJGxvZ19vZmZzZXQpOworCisjIFdlIG5l ZWQgbmV3IGNvbHVtbiB2YWx1ZSBiZSBzeW5jZWQgd2l0aCBzdWJzY3JpYmVyCitpcygkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBkYXRhIGZyb20gY29uZl90 YWIgV0hFUkUgYSA9IDEnKSwgJ2Zyb21wdWJuZXcnLCAncmVjb3JkIHVwZGF0ZWQgb24gc3Vic2Ny aWJlcicpOworIyBBbmQgYWRkaXRpb25hbCBjb2x1bW4gbWFpbnRhaW4gdXBkYXRlZCB2YWx1ZQor aXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgaSBmcm9t IGNvbmZfdGFiIFdIRVJFIGEgPSAxJyksIDEsICdjb2x1bW4gcmVjb3JkIHVwZGF0ZWQgb24gc3Vi c2NyaWJlcicpOworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9M T0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiOiBj b25mbGljdD11cGRhdGVfbWlzc2luZy8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFsaWQgY29uZmxp Y3QgZGV0ZWN0ZWQnKTsKKworb2soJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlx ci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiAicHVibGljLmNvbmZfdGFiIjog Y29uZmxpY3Q9dXBkYXRlX29yaWdpbl9kaWZmZXJzLywKKwkJJGxvZ19vZmZzZXQpLCAnY29ycmVj dCBjb25mbGljdCBkZXRlY3RlZCcpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF91cGRhdGVfbWlzc2luZ193aXRoX3JldGFpbi5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF91cGRhdGVfbWlzc2luZ193aXRoX3JldGFpbi5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTM3NjlhYTFjMTEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfdXBkYXRlX21pc3Np bmdfd2l0aF9yZXRhaW4ucGwKQEAgLTAsMCArMSwxNDEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIGNvbmZs aWN0IGRldGVjdGlvbiBhbmQgcmVzb2x1dGlvbiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCit1c2Ug c3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZTsKKworaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBs YW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1 aWxkJzsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFNldCBpdCB0byAwIHRv IG1ha2Ugc2V0IHN1Y2Nlc3M7IFRPRE86IGRlbGV0ZSB0aGF0IGZvciBjb21taXQKK215ICRzaW11 bGF0ZV9yYWNlX2NvbmRpdGlvbiA9IDE7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTZXR1cAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0 cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisK KworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlIHdpdGggdHJhY2tfY29tbWl0X3RpbWVzdGFtcCBl bmFibGVkCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3Rp bWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwlxcSh3YWxfbGV2ZWwgPSAncmVwbGljYScpKTsKKyRub2RlX3N1YnNjcmliZXIt PnN0YXJ0OworCisKKyMgQ2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlz IGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMg cnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBp bnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5vZGVfc3Vic2NyaWJlci0+Y2hlY2tfZXh0ZW5z aW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9u IGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3JlYXRlIHRhYmxlIG9u IHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQpOyIpOwor CisjIENyZWF0ZSBzaW1pbGFyIHRhYmxlIG9uIHN1YnNjcmliZXIgd2l0aCBhZGRpdGlvbmFsIGlu ZGV4IHRvIGRpc2FibGUgSE9UIHVwZGF0ZXMgYW5kIGFkZGl0aW9uYWwgY29sdW1uCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZf dGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQsIGkgaW50IERFRkFVTFQgMCk7CisJIENS RUFURSBJTkRFWCBpX2luZGV4IE9OIGNvbmZfdGFiKGkpOyIpOworCisjIFNldCB1cCBleHRlbnNp b24gdG8gc2ltdWxhdGUgcmFjZSBjb25kaXRpb24KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycpOworCisj IFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2Rl X3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZP UiBUQUJMRSBjb25mX3RhYiIpOworCisjIEluc2VydCByb3cgdG8gYmUgdXBkYXRlZCBsYXRlcgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gY29u Zl90YWIoYSwgZGF0YSkgVkFMVUVTICgxLCdmcm9tcHViJykiKTsKKworIyBDcmVhdGUgdGhlIHN1 YnNjcmlwdGlvbgorbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJ IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1l JworCSBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHJldGFpbl9kZWFkX3R1cGxlcyA9IHRydWUp Iik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAkYXBw bmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFJhY2UgY29uZGl0aW9uIGJlY2F1c2Ugb2YgRGlydHlTbmFwc2hvdAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgJHBzcWxfc2Vzc2lvbl9zdWJzY3Jp YmVyID0gJG5vZGVfc3Vic2NyaWJlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworaWYg KCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5kZXhfZ2V0 bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScsICd3YWl0JykiKTsKK30KKworbXkg JGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIFVwZGF0ZSB0 dXBsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlVQREFURSBjb25mX3RhYiBTRVQgZGF0YSA9ICdmcm9tcHVibmV3JyBXSEVSRSAoYT0xKTsi KTsKKworCitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSMgV2FpdCBhcHBseSB3 b3JrZXIgdG8gc3RhcnQgdGhlIHNlYXJjaCBmb3IgdGhlIHR1cGxlIHVzaW5nIGluZGV4CisJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfZXZlbnQoJ2xvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyJywgJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsK K30KKworIyBVcGRhdGUgYWRkaXRpb25hbCghKSBjb2x1bW4gb24gdGhlIHN1YnNjcmliZXIKKyRw c3FsX3Nlc3Npb25fc3Vic2NyaWJlci0+cXVlcnlfdW50aWwoCisJcXIvc3RhcnQvLCBxcVsKKwlc XGVjaG8gc3RhcnQKKwlVUERBVEUgY29uZl90YWIgU0VUIGkgPSAxIFdIRVJFIChhPTEpOworXSk7 CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkjIFdha2UgdXAgYXBwbHkg d29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIgorCQlTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0 Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRl eF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCSIpOworfQorCisj IFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdlIGhhdmUgY29uZmxpY3QKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1 YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29mZnNldCk7CisKKyMgV2UgbmVlZCBuZXcgY29sdW1u IHZhbHVlIGJlIHN5bmNlZCB3aXRoIHN1YnNjcmliZXIKK2lzKCRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIGRhdGEgZnJvbSBjb25mX3RhYiBXSEVSRSBhID0g MScpLCAnZnJvbXB1Ym5ldycsICdyZWNvcmQgdXBkYXRlZCBvbiBzdWJzY3JpYmVyJyk7CisjIEFu ZCBhZGRpdGlvbmFsIGNvbHVtbiBtYWludGFpbiB1cGRhdGVkIHZhbHVlCitpcygkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBpIGZyb20gY29uZl90YWIgV0hF UkUgYSA9IDEnKSwgMSwgJ2NvbHVtbiByZWNvcmQgdXBkYXRlZCBvbiBzdWJzY3JpYmVyJyk7CisK K29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMoCisJCXFyL0xPRzogIGNvbmZsaWN0 IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZfdGFiXCI6IGNvbmZsaWN0PXVwZGF0 ZV9kZWxldGVkLywKKwkJJGxvZ19vZmZzZXQpLCAnaW52YWxpZCBjb25mbGljdCBkZXRlY3RlZCcp OworCitvaygkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMoCisJCXFyL0xPRzogIGNvbmZs aWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uICJwdWJsaWMuY29uZl90YWIiOiBjb25mbGljdD11cGRh dGVfb3JpZ2luX2RpZmZlcnMvLAorCQkkbG9nX29mZnNldCksICdjb3JyZWN0IGNvbmZsaWN0IGRl dGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --0000000000006007ba063cdc1903--