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 1w1rwN-000frx-08 for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Mar 2026 20:20:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w1rwM-005clx-0Q for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Mar 2026 20:19:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w1rwL-005clo-2A for pgsql-hackers@lists.postgresql.org; Sun, 15 Mar 2026 20:19:58 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w1rwJ-00000000JVk-2iHT for pgsql-hackers@postgresql.org; Sun, 15 Mar 2026 20:19:58 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-660be63279bso6796665a12.1 for ; Sun, 15 Mar 2026 13:19:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1773605994; x=1774210794; darn=postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4CBORV4zz1ermkkp2UD39D4WCxRGblCFg/8+QJq9aPc=; b=REFYAxlQ0/bi6NStFMnQw9dpXkbqVl9sxegF8A3PdPKEBP+LacOFRsy1R3SkhkDgx8 XJUZoBUf4a9nQ0vnNiiN/1BjI/loHzHox5YOfXptKxvkdkeLGcSBfstsDYTXwSvUBikZ EbBh+0Km5FS0IRlKlIOpqcpX20wWXXWdCmEQ9f+lrFstf/UlgmcrQaJjqhg+XvGV8WDj GwUb6+HKMMPXBxGTzo1G6e8Dw3DKovvHLHLzG5fu0OSs5eWJPJ3m1YEdw3EnOTVn0jV1 YfaHRQlgPb3o4bzQGJzeacMP7WsdCD9eNY0jxSdeJHLR1qpkpydtHoECnuCR7Zeg4Wdn W4eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773605994; x=1774210794; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=4CBORV4zz1ermkkp2UD39D4WCxRGblCFg/8+QJq9aPc=; b=h5Sj6/dFjq+rw5dlEupoCIdcuDzo/4DZFLpUTCWRKFSElkIRS33kHHIahaNcu/JsgL djr8E+d3v2gpZPLLBv3o8Br2YqILdbgD/ZtfbUIuP6UR85QjxD5rQlcQyAqLWGXMNnuQ NC1JH38mdb/uEk0o49Q6+N3dwNB1KR6pLELrMUU05e8AuPRrzuG7Z8UM1wIYCfVwgDfz 9puHhq94wQ/X2wp2QlenzOUnmcd3B1tQr9DlAu7RGmbgFoGqsjq59Ij2QOqjUAxDd40d AlpyppN9quB6eTMpeDYDDSZuEj/nyBvd/kpLj3+b4ukB+7Q4kA9Zf8NyxSVX2eIAQMBo kYQA== X-Forwarded-Encrypted: i=1; AJvYcCWUsxUNAdsMF2IR/vpht2mYxowgpykFCe/KVrPacF+c0r5ty8GyPJp5L3k3ssggIMXb9LIxDuWD/YYSrxSu@postgresql.org X-Gm-Message-State: AOJu0YzFtKKO9nJic3s1aCgIgzfDGcPP6vsASdOZkZIoxc07nopFIxOP A9AbZ8E/q+lFLIppN8ELq21R4/htZuK+SWKTgin7SYBEZfrd9+Zwcokcy75bVBo4UGg= X-Gm-Gg: ATEYQzw3XcRT3EEeE7r82t8oSfCNYSVD8Ueag4/rRVQRO0GIJLTFnpHtOl/eYu2AtOA aX2zFfyN7ear49OXHesvTu1w7RpS+DvuW1/r5laCOGKWATIsl+hGzCAawUlxCsAy6ar1JS2pn0O IwXtQhYU9YKcB8M3thK88kyYJk88n59KqkadedaW0UMsIKQHYiN1kbGCajRqj6Dfht8LimZWFoK mn1yAxokUHIBB4lN4m+HsixSFVZ/cPDh5GyxxNkWAv78pVgENaxIYqgbmPRAm00MRzaZO/z6UWk ubMLlXnmnYhRAvy6Cemht22K3TUViEAPGk7hNNFhKDe9PXsfRnZaJzBUOLwEkmdqM6MUMdDYp/X 9hSG0w8eBNzaxsYYYWwuk5PXj0bM1JgOOLLfWYFDf+pOgsRepkkQec08THL4o6YtPrJWk8YwdVs bOgrDxSatGVAFIsrwtTkcEZl5r15UVehfkCZLaMQlpZj6SrDt7 X-Received: by 2002:a17:907:96a7:b0:b97:bcac:2fd8 with SMTP id a640c23a62f3a-b97bcac54c6mr63215266b.13.1773605994020; Sun, 15 Mar 2026 13:19:54 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b976cdb47fasm415571366b.43.2026.03.15.13.19.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 15 Mar 2026 13:19:52 -0700 (PDT) Content-Type: multipart/mixed; boundary=0d22d85e5afcb8475ac27fe5a992128daeb6a03e652ec3865ab6c42b99d4 Mime-Version: 1.0 Date: Sun, 15 Mar 2026 21:19:52 +0100 Message-Id: Cc: "Julien Rouhaud" , "Artem Gavrilov" , "Tomas Vondra" , "David G. Johnston" , "Jeff Davis" , "PostgreSQL-development" Subject: Re: Extension security improvement: Add support for extensions with an owned schema To: "Jelte Fennema-Nio" , "Robert Haas" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <585e996c-a5c6-4e61-acc4-d92b7a1458ea@vondra.me> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0d22d85e5afcb8475ac27fe5a992128daeb6a03e652ec3865ab6c42b99d4 Content-Type: multipart/alternative; boundary=9ff08f1993f11b382f74841913c64bd2cf1e059b8116aad928dd67eb0a5a --9ff08f1993f11b382f74841913c64bd2cf1e059b8116aad928dd67eb0a5a Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Feb 11, 2026 at 12:32 AM CET, Jelte Fennema-Nio wrote: > Ugh, I didn't include some of the new files in the attached patch. Fixed > now with v9. Fixed tests that were failing in CI. --9ff08f1993f11b382f74841913c64bd2cf1e059b8116aad928dd67eb0a5a-- --0d22d85e5afcb8475ac27fe5a992128daeb6a03e652ec3865ab6c42b99d4 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0001-Add-support-for-extensions-with-an-owned-schema.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0001-Add-support-for-extensions-with-an-owned-schema.patch RnJvbSAyMjQwNzA0MDk1M2E4YTNmYjFiNmM3MzIzNzBjZWY1MzZkOTYwMjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDQgT2N0IDIwMjQgMjI6MzQ6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHYx MF0gQWRkIHN1cHBvcnQgZm9yIGV4dGVuc2lvbnMgd2l0aCBhbiBvd25lZCBzY2hlbWEKCldyaXRp bmcgdGhlIHNxbCBtaWdyYXRpb24gc2NyaXB0cyB0aGF0IGFyZSBydW4gYnkgQ1JFQVRFIEVYVEVO U0lPTiBhbmQKQUxURVIgRVhURU5TSU9OIFVQREFURSBhcmUgc2VjdXJpdHkgbWluZWZpZWxkcyBm b3IgZXh0ZW5zaW9uIGF1dGhvcnMuCk9uZSBiaWcgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgc2Vh cmNoX3BhdGggaXMgc2V0IHRvIHRoZSBzY2hlbWEgb2YgdGhlCmV4dGVuc2lvbiB3aGlsZSBydW5u aW5nIHRoZXNlIHNjcmlwdHMsIGFuZCB0aHVzIGlmIGEgdXNlciB3aXRoIGxvd2VyCnByaXZpbGVn ZXMgY2FuIGNyZWF0ZSBmdW5jdGlvbnMgb3Igb3BlcmF0b3JzIGluIHRoYXQgc2NoZW1hIHRoZXkg Y2FuIGRvCmFsbCBraW5kcyBvZiBzZWFyY2hfcGF0aCBjb25mdXNpb24gYXR0YWNrcyBpZiBub3Qg ZXZlcnkgZnVuY3Rpb24gYW5kCm9wZXJhdG9yIHRoYXQgaXMgdXNlZCBpbiB0aGUgc2NyaXB0IGlz IHNjaGVtYSBxdWFsaWZpZWQuIFdoaWxlIGRvaW5nCnN1Y2ggc2NoZW1hIHF1YWxpZmljYXRpb24g aXMgcG9zc2libGUsIGl0IHJlbGllcyBvbiB0aGUgYXV0aG9yIHRvIG5ldmVyCm1ha2UgYSBtaXN0 YWtlIGluIGFueSBvZiB0aGUgc3FsIGZpbGVzLiBBbmQgc2FkbHkgaHVtYW5zIGhhdmUgYSB0ZW5k ZW5jeQp0byBtYWtlIG1pc3Rha2VzLgoKVGhpcyBwYXRjaCBhZGRzIGEgbmV3ICJvd25lZF9zY2hl bWEiIG9wdGlvbiB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2wKZmlsZSB0aGF0IGNhbiBiZSBzZXQg dG8gdHJ1ZSB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgZXh0ZW5zaW9uIHdhbnRzIHRvCm93biB0aGUg c2NoZW1hIGluIHdoaWNoIGl0IGlzIGluc3RhbGxlZC4gV2hhdCB0aGF0IG1lYW5zIGlzIHRoYXQg dGhlCnNjaGVtYSBzaG91bGQgbm90IGV4aXN0IGJlZm9yZSBjcmVhdGluZyB0aGUgZXh0ZW5zaW9u LCBhbmQgd2lsbCBiZQpjcmVhdGVkIGR1cmluZyBleHRlbnNpb24gY3JlYXRpb24uIFRoaXMgdGh1 cyBnaXZlcyB0aGUgZXh0ZW5zaW9uIGF1dGhvcgphbiBlYXN5IHdheSB0byB1c2UgYSBzYWZlIHNl YXJjaF9wYXRoLCB3aGlsZSBzdGlsbCBhbGxvd2luZyBhbGwgb2JqZWN0cwp0byBiZSBncm91cGVk IHRvZ2V0aGVyIGluIGEgc2NoZW1hLiBUaGUgaW1wbGVtZW50YXRpb24gYWxzbyBoYXMgdGhlCnBs ZWFzYW50IHNpZGUgZWZmZWN0IHRoYXQgdGhlIHNjaGVtYSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkg ZHJvcHBlZCB3aGVuCnRoZSBleHRlbnNpb24gaXMgZHJvcHBlZC4KLS0tCiBkb2Mvc3JjL3NnbWwv ZXh0ZW5kLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysKIGRvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgNDI5ICsrKysrKysrKysrKystLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jICAgIHwgIDQ1ICstCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNTQgKystCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaCAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZSAgICAgfCAgMTMgKy0KIC4uLi9leHBl Y3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0ICAgICAgICAgICAgICB8IDE1OSArKysrKysrCiBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZCAgfCAgMTEgKwogLi4uL3Rl c3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNxbCAgIHwgIDc3ICsrKysKIC4uLi90 ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0tMS4xLnNxbCAgICAgICB8ICAgMyArCiAuLi4vdGVz dF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsICAgICAgICAgICAgfCAgIDIgKwogLi4uL3Rlc3Rf ZXh0X293bmVkX3NjaGVtYS5jb250cm9sICAgICAgICAgICAgIHwgICA1ICsKIC4uLmV4dF9vd25l ZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC0tMS4xLnNxbCB8ICAgNSArCiAuLi50ZXN0X2V4dF9v d25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC5zcWwgfCAgIDMgKwogLi4uL3Rlc3RfZXh0X293 bmVkX3NjaGVtYV9ub3N1cGVydXNlci5jb250cm9sIHwgICA1ICsKIC4uLnRlc3RfZXh0X293bmVk X3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbCB8ICAgMiArCiAuLi4vdGVzdF9leHRfb3duZWRf c2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wgfCAgIDQgKwogLi4uZXN0X2V4dF9vd25lZF9zY2hl bWFfdHJ1c3RlZC0tMS4wLS0xLjEuc3FsIHwgICAzICsKIC4uLi90ZXN0X2V4dF9vd25lZF9zY2hl bWFfdHJ1c3RlZC0tMS4wLnNxbCAgICB8ICAgMyArCiAuLi4vdGVzdF9leHRfb3duZWRfc2NoZW1h X3RydXN0ZWQuY29udHJvbCAgICAgfCAgIDUgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1 bXAvdC8wMDFfYmFzZS5wbCAgIHwgIDMyICsrCiAyNSBmaWxlcyBjaGFuZ2VkLCA3NjUgaW5zZXJ0 aW9ucygrKSwgMTQzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLS0xLjEuc3Fs CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC0tMS4xLnNxbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVt YV9ub3N1cGVydXNlci0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci5jb250 cm9sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv dGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2No ZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4wLS0x LjEuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfdHJ1c3RlZC5jb250cm9sCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2V4dGVuZC5zZ21s IGIvZG9jL3NyYy9zZ21sL2V4dGVuZC5zZ21sCmluZGV4IDYzYzVlYzZkMWViLi5kZGZiNGViZmJm NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2V4dGVuZC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9leHRlbmQuc2dtbApAQCAtODE0LDYgKzgxNCw0MCBAQCBSRVRVUk5TIGFueWNvbXBhdGlibGUg QVMgLi4uCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8 dmFybGlzdGVudHJ5IGlkPSJleHRlbmQtZXh0ZW5zaW9ucy1maWxlcy1vd25lZC1zY2hlbWEiPgor ICAgICAgPHRlcm0+PHZhcm5hbWU+b3duZWRfc2NoZW1hPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVh bjwvdHlwZT4pPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAg ICBBbiBleHRlbnNpb24gc2hvdWxkIHNldCA8Zmlyc3R0ZXJtPm93bmVkX3NjaGVtYTwvZmlyc3R0 ZXJtPiB0bworICAgICAgICA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiBpbiBpdHMgY29udHJvbCBm aWxlIGlmIHRoZSBleHRlbnNpb24gd2FudHMgYQorICAgICAgICBkZWRpY2F0ZWQgc2NoZW1hIGZv ciBpdHMgb2JqZWN0cy4gU3VjaCBhIHNjaGVtYSBzaG91bGQgbm90IGV4aXN0IHlldCBhdAorICAg ICAgICB0aGUgdGltZSBvZiBleHRlbnNpb24gY3JlYXRpb24sIGFuZCB3aWxsIGJlIGNyZWF0ZWQg YXV0b21hdGljYWxseSBieQorICAgICAgICA8bGl0ZXJhbD5DUkVBVEUgRVhURU5TSU9OPC9saXRl cmFsPi4gVGhlIGRlZmF1bHQgaXMKKyAgICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCBp LmUuLCB0aGUgZXh0ZW5zaW9uIGNhbiBiZSBpbnN0YWxsZWQgaW50byBhbgorICAgICAgICBleGlz dGluZyBzY2hlbWEuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBIYXZp bmcgYSBzY2hlbWEgb3duZWQgYnkgdGhlIGV4dGVuc2lvbiBjYW4gbWFrZSBpdCBtdWNoIGVhc2ll ciB0bworICAgICAgICByZWFzb24gYWJvdXQgcG9zc2libGUgPGxpdGVyYWw+c2VhcmNoX3BhdGg8 L2xpdGVyYWw+IGluamVjdGlvbiBhdHRhY2tzLgorICAgICAgICBGb3IgaW5zdGFuY2Ugd2l0aCBh biBvd25lZCBzY2hlbWEsIGl0IGlzIGdlbmVyYWxseSBzYWZlIHRvIHNldCB0aGUKKyAgICAgICAg PGxpdGVyYWw+c2VhcmNoX3BhdGg8L2xpdGVyYWw+IG9mIGEgPGxpdGVyYWw+U0VDVVJJVFkgREVG SU5FUjwvbGl0ZXJhbD4KKyAgICAgICAgZnVuY3Rpb24gdG8gdGhlIHNjaGVtYSBvZiB0aGUgZXh0 ZW5zaW9uLiBXaGlsZSB3aXRob3V0IGFuIG93bmVkIHNjaGVtYQorICAgICAgICBpdCBtaWdodCBu b3QgYmUgc2FmZSB0byBkbyBzbywgYmVjYXVzZSBhIG1hbGljaW91cyB1c2VyIGNvdWxkIGluc2Vy dAorICAgICAgICBvYmplY3RzIGluIHRoYXQgc2NoZW1hIGFuZCB0aHVzIDxsaW5rCisgICAgICAg IGxpbmtlbmQ9InNxbC1jcmVhdGVmdW5jdGlvbi1zZWN1cml0eSI+IGNhdXNlIG1hbGljaW91cyB0 byBiZSBleGVjdXRlZAorICAgICAgICBhcyBzdXBlcnVzZXI8L2xpbms+LiBTaW1pbGFybHksIGhh dmluZyBhbiBvd25lZCBzY2hlbWEgY2FuIG1ha2UgaXQgc2FmZQorICAgICAgICBieSBkZWZhdWx0 IHRvIGV4ZWN1dGUgZ2VuZXJhbC1wdXJwb3NlIFNRTCBpbiB0aGUgZXh0ZW5zaW9uIHNjcmlwdCwK KyAgICAgICAgYmVjYXVzZSB0aGUgc2VhcmNoX3BhdGggbm93IG9ubHkgY29udGFpbnMgdHJ1c3Rl ZCBzY2hlbWFzLiBXaXRob3V0IGFuCisgICAgICAgIG93bmVkIHNjaGVtYSBpdCdzIDxsaW5rIGxp bmtlbmQ9ImV4dGVuZC1leHRlbnNpb25zLXNlY3VyaXR5LXNjcmlwdHMiPgorICAgICAgICByZWNv bW1lbmRlZCB0byBtYW51YWxseSBjaGFuZ2UgdGhlIHNlYXJjaF9wYXRoPC9saW5rPi4KKyAgICAg ICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIEFwYXJ0IGZyb20gdGhlIHNlY3VyaXR5 IGNvbnNpZGVyYXRpb25zLCBoYXZpbmcgYW4gb3duZWQgc2NoZW1hIGNhbiBoZWxwCisgICAgICAg IHByZXZlbnQgbmFtaW5nIGNvbmZsaWN0cyBiZXR3ZWVuIG9iamVjdHMgb2YgZGlmZmVyZW50IGV4 dGVuc2lvbnMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJs aXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZXh0ZW5kLWV4dGVuc2lvbnMtZmls ZXMtc2NoZW1hIj4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPnNjaGVtYTwvdmFybmFtZT4gKDx0eXBl PnN0cmluZzwvdHlwZT4pPC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9leHRlbnNpb24uc2dtbAppbmRleCA3MTNhYmQ5YzQ5NC4uYWIxMjVkNTYyNjMgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sCkBAIC0xMDQsNyArMTA0LDExIEBAIENS RUFURSBFWFRFTlNJT04gWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4dGVuc2lvbl9uYW1lCiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBuYW1lIG9m IHRoZSBzY2hlbWEgaW4gd2hpY2ggdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaW9uJ3MKICAgICAgICAg b2JqZWN0cywgZ2l2ZW4gdGhhdCB0aGUgZXh0ZW5zaW9uIGFsbG93cyBpdHMgY29udGVudHMgdG8g YmUKLSAgICAgICAgcmVsb2NhdGVkLiAgVGhlIG5hbWVkIHNjaGVtYSBtdXN0IGFscmVhZHkgZXhp c3QuCisgICAgICAgIHJlbG9jYXRlZC4gV2hldGhlciB0aGlzIHNjaGVtYSBzaG91bGQgYWxyZWFk eSBleGlzdCBvciBub3QgZGVwZW5kcyBvbgorICAgICAgICB0aGUgdmFsdWUgb2YgPGxpdGVyYWw+ b3duZWRfc2NoZW1hPC9saXRlcmFsPiBpbiB0aGUgZXh0ZW5zaW9ucyBjb250cm9sCisgICAgICAg IGZpbGU6IElmIGl0J3MgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIHRoZSBzY2hlbWEgbXVzdAor ICAgICAgICA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gZXhpc3Q7IGlmIGl0J3MgPGxpdGVyYWw+ ZmFsc2U8L2xpdGVyYWw+IGl0CisgICAgICAgIG11c3QgZXhpc3QuCiAgICAgICAgIElmIG5vdCBz cGVjaWZpZWQsIGFuZCB0aGUgZXh0ZW5zaW9uJ3MgY29udHJvbCBmaWxlIGRvZXMgbm90IHNwZWNp ZnkgYQogICAgICAgICBzY2hlbWEgZWl0aGVyLCB0aGUgY3VycmVudCBkZWZhdWx0IG9iamVjdCBj cmVhdGlvbiBzY2hlbWEgaXMgdXNlZC4KICAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jCmluZGV4IDk2MzYxOGE2NGM0Li41ZTg4YzFiMGUxMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKQEAgLTk0LDYgKzk0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRXh0ZW5zaW9uQ29udHJv bEZpbGUKIAkJCQkJCQkJCSAqIE1PRFVMRV9QQVRITkFNRSAqLwogCWNoYXIJICAgKmNvbW1lbnQ7 CQkvKiBjb21tZW50LCBpZiBhbnkgKi8KIAljaGFyCSAgICpzY2hlbWE7CQkJLyogdGFyZ2V0IHNj aGVtYSAoYWxsb3dlZCBpZiAhcmVsb2NhdGFibGUpICovCisJYm9vbAkJb3duZWRfc2NoZW1hOwkv KiBpZiB0aGUgc2NoZW1hIHNob3VsZCBiZSBvd25lZCBieSB0aGUKKwkJCQkJCQkJICogZXh0ZW5z aW9uICovCiAJYm9vbAkJcmVsb2NhdGFibGU7CS8qIGlzIEFMVEVSIEVYVEVOU0lPTiBTRVQgU0NI RU1BIHN1cHBvcnRlZD8gKi8KIAlib29sCQlzdXBlcnVzZXI7CQkvKiBtdXN0IGJlIHN1cGVydXNl ciB0byBpbnN0YWxsPyAqLwogCWJvb2wJCXRydXN0ZWQ7CQkvKiBhbGxvdyBiZWNvbWluZyBzdXBl cnVzZXIgb24gdGhlIGZseT8gKi8KQEAgLTc5MSw2ICs3OTMsMTQgQEAgcGFyc2VfZXh0ZW5zaW9u X2NvbnRyb2xfZmlsZShFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAkJewogCQkJY29u dHJvbC0+c2NoZW1hID0gcHN0cmR1cChpdGVtLT52YWx1ZSk7CiAJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGl0ZW0tPm5hbWUsICJvd25lZF9zY2hlbWEiKSA9PSAwKQorCQl7CisJCQlpZiAoIXBhcnNl X2Jvb2woaXRlbS0+dmFsdWUsICZjb250cm9sLT5vd25lZF9zY2hlbWEpKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcIiVzXCIgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVl IiwKKwkJCQkJCQkJaXRlbS0+bmFtZSkpKTsKKwkJfQogCQllbHNlIGlmIChzdHJjbXAoaXRlbS0+ bmFtZSwgInJlbG9jYXRhYmxlIikgPT0gMCkKIAkJewogCQkJaWYgKCFwYXJzZV9ib29sKGl0ZW0t PnZhbHVlLCAmY29udHJvbC0+cmVsb2NhdGFibGUpKQpAQCAtMTIzNCw2ICsxMjQ0LDQ0IEBAIGV4 dGVuc2lvbl9pc190cnVzdGVkKEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sKQogCXJldHVy biBmYWxzZTsKIH0KIAorLyoKKyAqIEVuZm9yY2Ugc3VwZXJ1c2VyIHJlcXVpcmVtZW50cyBmb3Ig ZXh0ZW5zaW9uIG9wZXJhdGlvbnMuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBz d2l0Y2ggdG8gc3VwZXJ1c2VyIGZvciB0cnVzdGVkIGV4dGVuc2lvbnMuCisgKiBUaHJvd3MgYW4g ZXJyb3IgaWYgc3VwZXJ1c2VyIGlzIHJlcXVpcmVkIGJ1dCBub3QgYXZhaWxhYmxlLgorICoKKyAq IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGNob29zaW5nIHRoZSBh cHByb3ByaWF0ZQorICogY29udHJvbCBmaWxlIChpbmNsdWRpbmcgYW55IHNlY29uZGFyeSBjb250 cm9sIGZpbGVzIGZvciB1cGRhdGVzKS4KKyAqLworc3RhdGljIGJvb2wKK2NoZWNrX2V4dGVuc2lv bl9zdXBlcnVzZXJfcmVxdWlyZW1lbnRzKEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sLAor CQkJCQkJCQkJICAgY29uc3QgY2hhciAqZnJvbV92ZXJzaW9uKQoreworCWlmIChjb250cm9sLT5z dXBlcnVzZXIgJiYgIXN1cGVydXNlcigpKQorCXsKKwkJaWYgKGV4dGVuc2lvbl9pc190cnVzdGVk KGNvbnRyb2wpKQorCQkJcmV0dXJuIHRydWU7CisJCWVsc2UgaWYgKGZyb21fdmVyc2lvbiA9PSBO VUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lF TlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gY3JlYXRl IGV4dGVuc2lvbiBcIiVzXCIiLAorCQkJCQkJCWNvbnRyb2wtPm5hbWUpLAorCQkJCQkgY29udHJv bC0+dHJ1c3RlZAorCQkJCQkgPyBlcnJoaW50KCJNdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBv biBjdXJyZW50IGRhdGFiYXNlIHRvIGNyZWF0ZSB0aGlzIGV4dGVuc2lvbi4iKQorCQkJCQkgOiBl cnJoaW50KCJNdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUgdGhpcyBleHRlbnNpb24uIikpKTsK KwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJ Q0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gdXBk YXRlIGV4dGVuc2lvbiBcIiVzXCIiLAorCQkJCQkJCWNvbnRyb2wtPm5hbWUpLAorCQkJCQkgY29u dHJvbC0+dHJ1c3RlZAorCQkJCQkgPyBlcnJoaW50KCJNdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVn ZSBvbiBjdXJyZW50IGRhdGFiYXNlIHRvIHVwZGF0ZSB0aGlzIGV4dGVuc2lvbi4iKQorCQkJCQkg OiBlcnJoaW50KCJNdXN0IGJlIHN1cGVydXNlciB0byB1cGRhdGUgdGhpcyBleHRlbnNpb24uIikp KTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBFeGVjdXRlIHRoZSBhcHByb3By aWF0ZSBzY3JpcHQgZmlsZSBmb3IgaW5zdGFsbGluZyBvciB1cGRhdGluZyB0aGUgZXh0ZW5zaW9u CiAgKgpAQCAtMTI2MiwyNyArMTMxMCw3IEBAIGV4ZWN1dGVfZXh0ZW5zaW9uX3NjcmlwdChPaWQg ZXh0ZW5zaW9uT2lkLCBFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAkgKiBoZXJlIHNv IHRoYXQgdGhlIGNvbnRyb2wgZmxhZ3MgYXJlIGNvcnJlY3RseSBhc3NvY2lhdGVkIHdpdGggdGhl IHJpZ2h0CiAJICogc2NyaXB0KHMpIGlmIHRoZXkgaGFwcGVuIHRvIGJlIHNldCBpbiBzZWNvbmRh cnkgY29udHJvbCBmaWxlcy4KIAkgKi8KLQlpZiAoY29udHJvbC0+c3VwZXJ1c2VyICYmICFzdXBl cnVzZXIoKSkKLQl7Ci0JCWlmIChleHRlbnNpb25faXNfdHJ1c3RlZChjb250cm9sKSkKLQkJCXN3 aXRjaF90b19zdXBlcnVzZXIgPSB0cnVlOwotCQllbHNlIGlmIChmcm9tX3ZlcnNpb24gPT0gTlVM TCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5U X1BSSVZJTEVHRSksCi0JCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIHRvIGNyZWF0ZSBl eHRlbnNpb24gXCIlc1wiIiwKLQkJCQkJCQljb250cm9sLT5uYW1lKSwKLQkJCQkJIGNvbnRyb2wt PnRydXN0ZWQKLQkJCQkJID8gZXJyaGludCgiTXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ugb24g Y3VycmVudCBkYXRhYmFzZSB0byBjcmVhdGUgdGhpcyBleHRlbnNpb24uIikKLQkJCQkJIDogZXJy aGludCgiTXVzdCBiZSBzdXBlcnVzZXIgdG8gY3JlYXRlIHRoaXMgZXh0ZW5zaW9uLiIpKSk7Ci0J CWVsc2UKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJ RU5UX1BSSVZJTEVHRSksCi0JCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIHRvIHVwZGF0 ZSBleHRlbnNpb24gXCIlc1wiIiwKLQkJCQkJCQljb250cm9sLT5uYW1lKSwKLQkJCQkJIGNvbnRy b2wtPnRydXN0ZWQKLQkJCQkJID8gZXJyaGludCgiTXVzdCBoYXZlIENSRUFURSBwcml2aWxlZ2Ug b24gY3VycmVudCBkYXRhYmFzZSB0byB1cGRhdGUgdGhpcyBleHRlbnNpb24uIikKLQkJCQkJIDog ZXJyaGludCgiTXVzdCBiZSBzdXBlcnVzZXIgdG8gdXBkYXRlIHRoaXMgZXh0ZW5zaW9uLiIpKSk7 Ci0JfQorCXN3aXRjaF90b19zdXBlcnVzZXIgPSBjaGVja19leHRlbnNpb25fc3VwZXJ1c2VyX3Jl cXVpcmVtZW50cyhjb250cm9sLCBmcm9tX3ZlcnNpb24pOwogCiAJZmlsZW5hbWUgPSBnZXRfZXh0 ZW5zaW9uX3NjcmlwdF9maWxlbmFtZShjb250cm9sLCBmcm9tX3ZlcnNpb24sIHZlcnNpb24pOwog CkBAIC0xODIxLDYgKzE4NDksMTY0IEBAIGZpbmRfaW5zdGFsbF9wYXRoKExpc3QgKmV2aV9saXN0 LCBFeHRlbnNpb25WZXJzaW9uSW5mbyAqZXZpX3RhcmdldCwKIAlyZXR1cm4gZXZpX3N0YXJ0Owog fQogCisvKgorICogQ3JlYXRlIGEgc2NoZW1hIHdpdGggdGhlIGdpdmVuIG5hbWUsIGFzIHBhcnQg b2YgQ1JFQVRFIEVYVEVOU0lPTi4KKyAqLworc3RhdGljIE9pZAorQ3JlYXRlU2NoZW1hRm9yRXh0 ZW5zaW9uKGNoYXIgKnNjaGVtYU5hbWUpCit7CisKKwlDcmVhdGVTY2hlbWFTdG10ICpjc3N0bXQg PSBtYWtlTm9kZShDcmVhdGVTY2hlbWFTdG10KTsKKworCWNzc3RtdC0+c2NoZW1hbmFtZSA9IHNj aGVtYU5hbWU7CisJY3NzdG10LT5hdXRocm9sZSA9IE5VTEw7CS8qIHdpbGwgYmUgY3JlYXRlZCBi eSBjdXJyZW50IHVzZXIgKi8KKwljc3N0bXQtPnNjaGVtYUVsdHMgPSBOSUw7CisJY3NzdG10LT5p Zl9ub3RfZXhpc3RzID0gZmFsc2U7CisJQ3JlYXRlU2NoZW1hQ29tbWFuZChjc3N0bXQsICIoZ2Vu ZXJhdGVkIENSRUFURSBTQ0hFTUEgY29tbWFuZCkiLAorCQkJCQkJLTEsIC0xKTsKKworCS8qCisJ ICogQ3JlYXRlU2NoZW1hQ29tbWFuZCBpbmNsdWRlcyBDb21tYW5kQ291bnRlckluY3JlbWVudCwg c28gbmV3IHNjaGVtYSBpcworCSAqIG5vdyB2aXNpYmxlLgorCSAqLworCXJldHVybiBnZXRfbmFt ZXNwYWNlX29pZChzY2hlbWFOYW1lLCBmYWxzZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gb3du ZWQgc2NoZW1hIHdpdGggdGhlIGdpdmVuIG5hbWUsIGFzIHBhcnQgb2YgQ1JFQVRFIEVYVEVOU0lP TiwgYW5kCisgKiBmYWlscyBpZiB0aGUgc2NoZW1hIGFscmVhZHkgZXhpc3QuCisgKi8KK3N0YXRp YyBPaWQKK0NyZWF0ZU93bmVkU2NoZW1hRm9yRXh0ZW5zaW9uKGNoYXIgKnNjaGVtYU5hbWUpCit7 CisJLyogRmluZCBvciBjcmVhdGUgdGhlIHNjaGVtYSBpbiBjYXNlIGl0IGRvZXMgbm90IGV4aXN0 LiAqLworCU9pZAkJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUsIHRy dWUpOworCisJaWYgKE9pZElzVmFsaWQoc2NoZW1hT2lkKSkKKwl7CisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfU0NIRU1BKSwKKwkJCQkgZXJybXNnKCJz Y2hlbWEgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCXNjaGVtYU5hbWUpLAorCQkJCSBl cnJoaW50KCJEcm9wIHNjaGVtYSBcIiVzXCIgb3Igc3BlY2lmeSBhbm90aGVyIHNjaGVtYSB1c2lu ZyBDUkVBVEUgRVhURU5TSU9OIC4uLiBTQ0hFTUEgLi4uIiwgc2NoZW1hTmFtZSkpKTsKKwl9CisK KwlyZXR1cm4gQ3JlYXRlU2NoZW1hRm9yRXh0ZW5zaW9uKHNjaGVtYU5hbWUpOworfQorCisvKgor ICogR2V0cyBvciBjcmVhdGVzIHRoZSBzY2hlbWEgdGhhbiBhbiBleHRlbnNpb24gc2hvdWxkIGJl IGNyZWF0ZWQgaW4uCisgKgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBzY2hlbWEgYW5kIHVw ZGF0ZXMgc2NoZW1hTmFtZSB0byB0aGUgbmFtZSBvZiB0aGUgc2NoZW1hLgorICovCitzdGF0aWMg T2lkCitHZXRPckNyZWF0ZVNjaGVtYUZvckV4dGVuc2lvbihjaGFyICoqc2NoZW1hTmFtZSwgRXh0 ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsIGJvb2wgY2FzY2FkZSkKK3sKKwkvKgorCSAqIFRo ZSBzaW1wbGVzdCBjYXNlIGlzIHdoZW4gdGhlIHVzZXIgcHJvdmlkZXMgYSBzY2hlbWEgbmFtZS4K KwkgKi8KKwlpZiAoKnNjaGVtYU5hbWUpCisJeworCQlPaWQJCQlzY2hlbWFPaWQ7CisKKwkJaWYg KCFjb250cm9sLT5vd25lZF9zY2hlbWEpCisJCXsKKwkJCS8qCisJCQkgKiBGb3Igbm9uLW93bmVk IHNjaGVtYXMsIHRoaXMgc2NoZW1hIG11c3QgYWxyZWFkeSBleGlzdC4gV2Ugd2FudAorCQkJICog dG8gY2hlY2sgdGhpcyBub3csIHNvIGl0IGZhaWxzIGV2ZW4gaWYgd2UgYmFpbCBvdXQgb2YgdGhp cworCQkJICogYmxvY2sgZHVlIHRvIHRoZSBDQVNDQURFIGxvZ2ljLgorCQkJICovCisJCQlzY2hl bWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZCgqc2NoZW1hTmFtZSwgZmFsc2UpOworCQl9CisKKwkJ aWYgKGNvbnRyb2wtPnNjaGVtYSAmJiBzdHJjbXAoY29udHJvbC0+c2NoZW1hLCAqc2NoZW1hTmFt ZSkgIT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBleHRlbnNpb24gaXMgbm90IHJlbG9jYXRh YmxlIGFuZCB0aGUgYXV0aG9yIGdhdmUgdXMgYQorCQkJICogc2NoZW1hIGZvciBpdC4KKwkJCSAq CisJCQkgKiBVbmxlc3MgQ0FTQ0FERSBwYXJhbWV0ZXIgd2FzIGdpdmVuLCBpdCdzIGFuIGVycm9y IHRvIGdpdmUgYQorCQkJICogc2NoZW1hIGRpZmZlcmVudCBmcm9tIGNvbnRyb2wtPnNjaGVtYSBp ZiBjb250cm9sLT5zY2hlbWEgaXMKKwkJCSAqIHNwZWNpZmllZC4KKwkJCSAqLworCQkJaWYgKCFj YXNjYWRlKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJleHRlbnNpb24gXCIlc1wi IG11c3QgYmUgaW5zdGFsbGVkIGluIHNjaGVtYSBcIiVzXCIiLAorCQkJCQkJCQljb250cm9sLT5u YW1lLAorCQkJCQkJCQljb250cm9sLT5zY2hlbWEpLAorCQkJCQkJIGVycmhpbnQoIkRvIG5vdCBz cGVjaWZ5IFNDSEVNQSB3aGVuIHJ1bm5pbmcgQ1JFQVRFIEVYVEVOU0lPTiBmb3IgZXh0ZW5zaW9u IFwiJXNcIiIsIGNvbnRyb2wtPm5hbWUpKSk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJZiB0aGUg c2NoZW1hIG1pc21hdGNoZXMgYW5kIENBU0NBREUgd2FzIGdpdmVuLCB3ZSBwcmV0ZW5kIHRoZQor CQkJICogdXNlciBkaWQgbm90IHNwZWNpZnkgYSBzY2hlbWEgYW5kIHVzZSB0aGUgbm9ybWFsIGxv Z2ljIGJlbG93IHRvCisJCQkgKiBnZXQgb3IgY3JlYXRlIHRoZSBzY2hlbWEgZnJvbSB0aGUgY29u dHJvbCBmaWxlLgorCQkJICovCisJCX0KKwkJZWxzZSBpZiAoY29udHJvbC0+b3duZWRfc2NoZW1h KQorCQl7CisJCQlyZXR1cm4gQ3JlYXRlT3duZWRTY2hlbWFGb3JFeHRlbnNpb24oKnNjaGVtYU5h bWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJcmV0dXJuIHNjaGVtYU9pZDsKKwkJfQorCX0KKwor CWlmIChjb250cm9sLT5zY2hlbWEpCisJeworCQlPaWQJCQlzY2hlbWFPaWQ7CisKKwkJKnNjaGVt YU5hbWUgPSBjb250cm9sLT5zY2hlbWE7CisKKwkJaWYgKGNvbnRyb2wtPm93bmVkX3NjaGVtYSkK KwkJeworCQkJcmV0dXJuIENyZWF0ZU93bmVkU2NoZW1hRm9yRXh0ZW5zaW9uKGNvbnRyb2wtPnNj aGVtYSk7CisJCX0KKworCQkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgc2NoZW1hIGluIGNhc2UgaXQg ZG9lcyBub3QgZXhpc3QuICovCisJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vfb2lkKGNvbnRy b2wtPnNjaGVtYSwgdHJ1ZSk7CisJCWlmIChPaWRJc1ZhbGlkKHNjaGVtYU9pZCkpCisJCXsKKwkJ CXJldHVybiBzY2hlbWFPaWQ7CisJCX0KKwkJcmV0dXJuIENyZWF0ZVNjaGVtYUZvckV4dGVuc2lv bihjb250cm9sLT5zY2hlbWEpOworCX0KKworCWlmIChjb250cm9sLT5vd25lZF9zY2hlbWEpCisJ eworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVN QSksCisJCQkJIGVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBp biIpKSk7CisJfQorCisJeworCQkvKgorCQkgKiBOZWl0aGVyIHVzZXIgbm9yIGF1dGhvciBvZiB0 aGUgZXh0ZW5zaW9uIHNwZWNpZmllZCBzY2hlbWE7IHVzZSB0aGUKKwkJICogY3VycmVudCBkZWZh dWx0IGNyZWF0aW9uIG5hbWVzcGFjZSwgd2hpY2ggaXMgdGhlIGZpcnN0IGV4cGxpY2l0CisJCSAq IGVudHJ5IGluIHRoZSBzZWFyY2hfcGF0aC4KKwkJICovCisJCUxpc3QJICAgKnNlYXJjaF9wYXRo ID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOworCQlPaWQJCQlzY2hlbWFPaWQ7CisKKwkJaWYg KHNlYXJjaF9wYXRoID09IE5JTCkgLyogbm90aGluZyB2YWxpZCBpbiBzZWFyY2hfcGF0aD8gKi8K KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVN QSksCisJCQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVhdGUg aW4iKSkpOworCQlzY2hlbWFPaWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOworCQkqc2No ZW1hTmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShzY2hlbWFPaWQpOworCQlpZiAoKnNjaGVtYU5h bWUgPT0gTlVMTCkJLyogcmVjZW50bHktZGVsZXRlZCBuYW1lc3BhY2U/ICovCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9TQ0hFTUEpLAorCQkJCQkg ZXJybXNnKCJubyBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gY3JlYXRlIGluIikpKTsKKwor CQlsaXN0X2ZyZWUoc2VhcmNoX3BhdGgpOworCQlyZXR1cm4gc2NoZW1hT2lkOworCX0KK30KKwog LyoKICAqIENSRUFURSBFWFRFTlNJT04gd29ya2VyCiAgKgpAQCAtMTg1MCw2ICsyMDM2LDkgQEAg Q3JlYXRlRXh0ZW5zaW9uSW50ZXJuYWwoY2hhciAqZXh0ZW5zaW9uTmFtZSwKIAlPaWQJCQlleHRl bnNpb25PaWQ7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwogCUxpc3RDZWxsICAgKmxjOworCWJv b2wJCXN3aXRjaF90b19zdXBlcnVzZXIgPSBmYWxzZTsKKwlPaWQJCQlzYXZlX3VzZXJpZCA9IDA7 CisJaW50CQkJc2F2ZV9zZWNfY29udGV4dCA9IDA7CiAKIAkvKgogCSAqIFJlYWQgdGhlIHByaW1h cnkgY29udHJvbCBmaWxlLiAgTm90ZSB3ZSBhc3N1bWUgdGhhdCBpdCBkb2VzIG5vdCBjb250YWlu CkBAIC0xOTE4LDc3ICsyMTA3LDI1IEBAIENyZWF0ZUV4dGVuc2lvbkludGVybmFsKGNoYXIgKmV4 dGVuc2lvbk5hbWUsCiAJY29udHJvbCA9IHJlYWRfZXh0ZW5zaW9uX2F1eF9jb250cm9sX2ZpbGUo cGNvbnRyb2wsIHZlcnNpb25OYW1lKTsKIAogCS8qCi0JICogRGV0ZXJtaW5lIHRoZSB0YXJnZXQg c2NoZW1hIHRvIGluc3RhbGwgdGhlIGV4dGVuc2lvbiBpbnRvCisJICogRm9yIHRydXN0ZWQgZXh0 ZW5zaW9ucyB3aXRoIG93bmVkIHNjaGVtYXMsIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBzY2hlbWEK KwkgKiBhcyBzdXBlcnVzZXIgdG8gZW5zdXJlIHByb3BlciBvd25lcnNoaXAuCiAJICovCi0JaWYg KHNjaGVtYU5hbWUpCi0JewotCQkvKiBJZiB0aGUgdXNlciBpcyBnaXZpbmcgdXMgdGhlIHNjaGVt YSBuYW1lLCBpdCBtdXN0IGV4aXN0IGFscmVhZHkuICovCi0JCXNjaGVtYU9pZCA9IGdldF9uYW1l c3BhY2Vfb2lkKHNjaGVtYU5hbWUsIGZhbHNlKTsKLQl9Ci0KLQlpZiAoY29udHJvbC0+c2NoZW1h ICE9IE5VTEwpCisJaWYgKGNvbnRyb2wtPm93bmVkX3NjaGVtYSkKIAl7Ci0JCS8qCi0JCSAqIFRo ZSBleHRlbnNpb24gaXMgbm90IHJlbG9jYXRhYmxlIGFuZCB0aGUgYXV0aG9yIGdhdmUgdXMgYSBz Y2hlbWEKLQkJICogZm9yIGl0LgotCQkgKgotCQkgKiBVbmxlc3MgQ0FTQ0FERSBwYXJhbWV0ZXIg d2FzIGdpdmVuLCBpdCdzIGFuIGVycm9yIHRvIGdpdmUgYSBzY2hlbWEKLQkJICogZGlmZmVyZW50 IGZyb20gY29udHJvbC0+c2NoZW1hIGlmIGNvbnRyb2wtPnNjaGVtYSBpcyBzcGVjaWZpZWQuCi0J CSAqLwotCQlpZiAoc2NoZW1hTmFtZSAmJiBzdHJjbXAoY29udHJvbC0+c2NoZW1hLCBzY2hlbWFO YW1lKSAhPSAwICYmCi0JCQkhY2FzY2FkZSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygiZXh0ZW5z aW9uIFwiJXNcIiBtdXN0IGJlIGluc3RhbGxlZCBpbiBzY2hlbWEgXCIlc1wiIiwKLQkJCQkJCQlj b250cm9sLT5uYW1lLAotCQkJCQkJCWNvbnRyb2wtPnNjaGVtYSkpKTsKLQotCQkvKiBBbHdheXMg dXNlIHRoZSBzY2hlbWEgZnJvbSBjb250cm9sIGZpbGUgZm9yIGN1cnJlbnQgZXh0ZW5zaW9uLiAq LwotCQlzY2hlbWFOYW1lID0gY29udHJvbC0+c2NoZW1hOwotCi0JCS8qIEZpbmQgb3IgY3JlYXRl IHRoZSBzY2hlbWEgaW4gY2FzZSBpdCBkb2VzIG5vdCBleGlzdC4gKi8KLQkJc2NoZW1hT2lkID0g Z2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgdHJ1ZSk7Ci0KLQkJaWYgKCFPaWRJc1ZhbGlk KHNjaGVtYU9pZCkpCisJCXN3aXRjaF90b19zdXBlcnVzZXIgPSBjaGVja19leHRlbnNpb25fc3Vw ZXJ1c2VyX3JlcXVpcmVtZW50cyhjb250cm9sLCBOVUxMKTsKKwkJaWYgKHN3aXRjaF90b19zdXBl cnVzZXIpCiAJCXsKLQkJCUNyZWF0ZVNjaGVtYVN0bXQgKmNzc3RtdCA9IG1ha2VOb2RlKENyZWF0 ZVNjaGVtYVN0bXQpOwotCi0JCQljc3N0bXQtPnNjaGVtYW5hbWUgPSBzY2hlbWFOYW1lOwotCQkJ Y3NzdG10LT5hdXRocm9sZSA9IE5VTEw7CS8qIHdpbGwgYmUgY3JlYXRlZCBieSBjdXJyZW50IHVz ZXIgKi8KLQkJCWNzc3RtdC0+c2NoZW1hRWx0cyA9IE5JTDsKLQkJCWNzc3RtdC0+aWZfbm90X2V4 aXN0cyA9IGZhbHNlOwotCQkJQ3JlYXRlU2NoZW1hQ29tbWFuZChjc3N0bXQsICIoZ2VuZXJhdGVk IENSRUFURSBTQ0hFTUEgY29tbWFuZCkiLAotCQkJCQkJCQktMSwgLTEpOwotCi0JCQkvKgotCQkJ ICogQ3JlYXRlU2NoZW1hQ29tbWFuZCBpbmNsdWRlcyBDb21tYW5kQ291bnRlckluY3JlbWVudCwg c28gbmV3Ci0JCQkgKiBzY2hlbWEgaXMgbm93IHZpc2libGUuCi0JCQkgKi8KLQkJCXNjaGVtYU9p ZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUsIGZhbHNlKTsKKwkJCUdldFVzZXJJZEFu ZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJCQlTZXRVc2Vy SWRBbmRTZWNDb250ZXh0KEJPT1RTVFJBUF9TVVBFUlVTRVJJRCwKKwkJCQkJCQkJICAgc2F2ZV9z ZWNfY29udGV4dCB8IFNFQ1VSSVRZX0xPQ0FMX1VTRVJJRF9DSEFOR0UpOwogCQl9CiAJfQotCWVs c2UgaWYgKCFPaWRJc1ZhbGlkKHNjaGVtYU9pZCkpCi0JewotCQkvKgotCQkgKiBOZWl0aGVyIHVz ZXIgbm9yIGF1dGhvciBvZiB0aGUgZXh0ZW5zaW9uIHNwZWNpZmllZCBzY2hlbWE7IHVzZSB0aGUK LQkJICogY3VycmVudCBkZWZhdWx0IGNyZWF0aW9uIG5hbWVzcGFjZSwgd2hpY2ggaXMgdGhlIGZp cnN0IGV4cGxpY2l0Ci0JCSAqIGVudHJ5IGluIHRoZSBzZWFyY2hfcGF0aC4KLQkJICovCi0JCUxp c3QJICAgKnNlYXJjaF9wYXRoID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOwogCi0JCWlmIChz ZWFyY2hfcGF0aCA9PSBOSUwpIC8qIG5vdGhpbmcgdmFsaWQgaW4gc2VhcmNoX3BhdGg/ICovCi0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9TQ0hFTUEp LAotCQkJCQkgZXJybXNnKCJubyBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gY3JlYXRlIGlu IikpKTsKLQkJc2NoZW1hT2lkID0gbGluaXRpYWxfb2lkKHNlYXJjaF9wYXRoKTsKLQkJc2NoZW1h TmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShzY2hlbWFPaWQpOwotCQlpZiAoc2NoZW1hTmFtZSA9 PSBOVUxMKSAvKiByZWNlbnRseS1kZWxldGVkIG5hbWVzcGFjZT8gKi8KLQkJCWVyZXBvcnQoRVJS T1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCi0JCQkJCSBlcnJt c2coIm5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVhdGUgaW4iKSkpOworCXNjaGVt YU9pZCA9IEdldE9yQ3JlYXRlU2NoZW1hRm9yRXh0ZW5zaW9uKCZzY2hlbWFOYW1lLCBjb250cm9s LCBjYXNjYWRlKTsKIAotCQlsaXN0X2ZyZWUoc2VhcmNoX3BhdGgpOwotCX0KKwkvKiBSZXN0b3Jl IGF1dGhlbnRpY2F0aW9uIHN0YXRlIGFmdGVyIHNjaGVtYSBjcmVhdGlvbiBpZiBuZWVkZWQgKi8K KwlpZiAoc3dpdGNoX3RvX3N1cGVydXNlcikKKwkJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZl X3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7CiAKIAkvKgogCSAqIE1ha2Ugbm90ZSBpZiBhIHRl bXBvcmFyeSBuYW1lc3BhY2UgaGFzIGJlZW4gYWNjZXNzZWQgaW4gdGhpcwpAQCAtMjAzNCw2ICsy MTcxLDcgQEAgQ3JlYXRlRXh0ZW5zaW9uSW50ZXJuYWwoY2hhciAqZXh0ZW5zaW9uTmFtZSwKIAkg Ki8KIAlhZGRyZXNzID0gSW5zZXJ0RXh0ZW5zaW9uVHVwbGUoY29udHJvbC0+bmFtZSwgZXh0b3du ZXIsCiAJCQkJCQkJCSAgIHNjaGVtYU9pZCwgY29udHJvbC0+cmVsb2NhdGFibGUsCisJCQkJCQkJ CSAgIGNvbnRyb2wtPm93bmVkX3NjaGVtYSwKIAkJCQkJCQkJICAgdmVyc2lvbk5hbWUsCiAJCQkJ CQkJCSAgIFBvaW50ZXJHZXREYXR1bShOVUxMKSwKIAkJCQkJCQkJICAgUG9pbnRlckdldERhdHVt KE5VTEwpLApAQCAtMjIzOSw3ICsyMzc3LDggQEAgQ3JlYXRlRXh0ZW5zaW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlRXh0ZW5zaW9uU3RtdCAqc3RtdCkKICAqLwogT2JqZWN0QWRkcmVzcwog SW5zZXJ0RXh0ZW5zaW9uVHVwbGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAot CQkJCQkgT2lkIHNjaGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwgY29uc3QgY2hhciAqZXh0VmVy c2lvbiwKKwkJCQkJIE9pZCBzY2hlbWFPaWQsIGJvb2wgcmVsb2NhdGFibGUsIGJvb2wgb3duZWRT Y2hlbWEsCisJCQkJCSBjb25zdCBjaGFyICpleHRWZXJzaW9uLAogCQkJCQkgRGF0dW0gZXh0Q29u ZmlnLCBEYXR1bSBleHRDb25kaXRpb24sCiAJCQkJCSBMaXN0ICpyZXF1aXJlZEV4dGVuc2lvbnMp CiB7CkBAIC0yMjY5LDYgKzI0MDgsNyBAQCBJbnNlcnRFeHRlbnNpb25UdXBsZShjb25zdCBjaGFy ICpleHROYW1lLCBPaWQgZXh0T3duZXIsCiAJdmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dG93 bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGV4dE93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19l eHRlbnNpb25fZXh0bmFtZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHNjaGVtYU9pZCk7 CiAJdmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dHJlbG9jYXRhYmxlIC0gMV0gPSBCb29sR2V0 RGF0dW0ocmVsb2NhdGFibGUpOworCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHRvd25lZHNj aGVtYSAtIDFdID0gQm9vbEdldERhdHVtKG93bmVkU2NoZW1hKTsKIAl2YWx1ZXNbQW51bV9wZ19l eHRlbnNpb25fZXh0dmVyc2lvbiAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShleHRWZXJzaW9u KTsKIAogCWlmIChleHRDb25maWcgPT0gUG9pbnRlckdldERhdHVtKE5VTEwpKQpAQCAtMjMxMyw2 ICsyNDUzLDE3IEBAIEluc2VydEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIgKmV4dE5hbWUsIE9p ZCBleHRPd25lciwKIAlyZWNvcmRfb2JqZWN0X2FkZHJlc3NfZGVwZW5kZW5jaWVzKCZteXNlbGYs IHJlZm9ianMsIERFUEVOREVOQ1lfTk9STUFMKTsKIAlmcmVlX29iamVjdF9hZGRyZXNzZXMocmVm b2Jqcyk7CiAKKwlpZiAob3duZWRTY2hlbWEpCisJeworCQlPYmplY3RBZGRyZXNzIHNjaGVtYUFk ZHJlc3MgPSB7CisJCQkuY2xhc3NJZCA9IE5hbWVzcGFjZVJlbGF0aW9uSWQsCisJCQkub2JqZWN0 SWQgPSBzY2hlbWFPaWQsCisJCX07CisKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZzY2hlbWFBZGRy ZXNzLCAmbXlzZWxmLCBERVBFTkRFTkNZX0VYVEVOU0lPTik7CisJfQorCisKIAkvKiBQb3N0IGNy ZWF0aW9uIGhvb2sgZm9yIG5ldyBleHRlbnNpb24gKi8KIAlJbnZva2VPYmplY3RQb3N0Q3JlYXRl SG9vayhFeHRlbnNpb25SZWxhdGlvbklkLCBleHRlbnNpb25PaWQsIDApOwogCkBAIC0zMjQ3LDEy ICszMzk4LDE2IEBAIGV4dGVuc2lvbl9jb25maWdfcmVtb3ZlKE9pZCBleHRlbnNpb25vaWQsIE9p ZCB0YWJsZW9pZCkKIAogLyoKICAqIEV4ZWN1dGUgQUxURVIgRVhURU5TSU9OIFNFVCBTQ0hFTUEK KyAqCisgKiBGb3Igb3duZWQgc2NoZW1hcywgdGhpcyBib2lscyBkb3duIHRvIGNoYW5naW5nIHRo ZSBuYW1lIG9mIGl0cyBzY2hlbWEuIEZvcgorICogbm9uLW93bmVkIHNjaGVtYXMgdGhpcyByZXF1 aXJlcyBtb3ZpbmcgYWxsIHRoZSBtZW1iZXIgb2JqZWN0cyBpbnRvIHRoZSBuZXcKKyAqIHNjaGVt YS4KICAqLwogT2JqZWN0QWRkcmVzcwogQWx0ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29uc3QgY2hh ciAqZXh0ZW5zaW9uTmFtZSwgY29uc3QgY2hhciAqbmV3c2NoZW1hLCBPaWQgKm9sZHNjaGVtYSkK IHsKIAlPaWQJCQlleHRlbnNpb25PaWQ7Ci0JT2lkCQkJbnNwT2lkOworCU9pZAkJCW5zcE9pZCA9 IEludmFsaWRPaWQ7CiAJT2lkCQkJb2xkTnNwT2lkOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJ UmVsYXRpb24JZXh0UmVsOwpAQCAtMzI2NSwxMSArMzQyMCwxMCBAQCBBbHRlckV4dGVuc2lvbk5h bWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hlbWEs IE9pZCAqbwogCUhlYXBUdXBsZQlkZXBUdXA7CiAJT2JqZWN0QWRkcmVzc2VzICpvYmpzTW92ZWQ7 CiAJT2JqZWN0QWRkcmVzcyBleHRBZGRyOworCWJvb2wJCW93bmVkU2NoZW1hOwogCiAJZXh0ZW5z aW9uT2lkID0gZ2V0X2V4dGVuc2lvbl9vaWQoZXh0ZW5zaW9uTmFtZSwgZmFsc2UpOwogCi0JbnNw T2lkID0gTG9va3VwQ3JlYXRpb25OYW1lc3BhY2UobmV3c2NoZW1hKTsKLQogCS8qCiAJICogUGVy bWlzc2lvbiBjaGVjazogbXVzdCBvd24gZXh0ZW5zaW9uLiAgTm90ZSB0aGF0IHdlIGRvbid0IGJv dGhlciB0bwogCSAqIGNoZWNrIG93bmVyc2hpcCBvZiB0aGUgaW5kaXZpZHVhbCBtZW1iZXIgb2Jq ZWN0cyAuLi4KQEAgLTMyNzgsMjIgKzM0MzIsNiBAQCBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShj b25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqbwog CQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIE9CSkVDVF9FWFRFTlNJT04sCiAJ CQkJCSAgIGV4dGVuc2lvbk5hbWUpOwogCi0JLyogUGVybWlzc2lvbiBjaGVjazogbXVzdCBoYXZl IGNyZWF0aW9uIHJpZ2h0cyBpbiB0YXJnZXQgbmFtZXNwYWNlICovCi0JYWNscmVzdWx0ID0gb2Jq ZWN0X2FjbGNoZWNrKE5hbWVzcGFjZVJlbGF0aW9uSWQsIG5zcE9pZCwgR2V0VXNlcklkKCksIEFD TF9DUkVBVEUpOwotCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCi0JCWFjbGNoZWNrX2Vy cm9yKGFjbHJlc3VsdCwgT0JKRUNUX1NDSEVNQSwgbmV3c2NoZW1hKTsKLQotCS8qCi0JICogSWYg dGhlIHNjaGVtYSBpcyBjdXJyZW50bHkgYSBtZW1iZXIgb2YgdGhlIGV4dGVuc2lvbiwgZGlzYWxs b3cgbW92aW5nCi0JICogdGhlIGV4dGVuc2lvbiBpbnRvIHRoZSBzY2hlbWEuICBUaGF0IHdvdWxk IGNyZWF0ZSBhIGRlcGVuZGVuY3kgbG9vcC4KLQkgKi8KLQlpZiAoZ2V0RXh0ZW5zaW9uT2ZPYmpl Y3QoTmFtZXNwYWNlUmVsYXRpb25JZCwgbnNwT2lkKSA9PSBleHRlbnNpb25PaWQpCi0JCWVyZXBv cnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCi0JCQkJIGVycm1zZygiY2Fubm90IG1vdmUgZXh0ZW5zaW9uIFwiJXNcIiBpbnRv IHNjaGVtYSBcIiVzXCIgIgotCQkJCQkJImJlY2F1c2UgdGhlIGV4dGVuc2lvbiBjb250YWlucyB0 aGUgc2NoZW1hIiwKLQkJCQkJCWV4dGVuc2lvbk5hbWUsIG5ld3NjaGVtYSkpKTsKLQogCS8qIExv Y2F0ZSB0aGUgcGdfZXh0ZW5zaW9uIHR1cGxlICovCiAJZXh0UmVsID0gdGFibGVfb3BlbihFeHRl bnNpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIApAQCAtMzMxNywxNCArMzQ1NSw0 MyBAQCBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBj b25zdCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqbwogCiAJc3lzdGFibGVfZW5kc2NhbihleHRTY2Fu KTsKIAorCW93bmVkU2NoZW1hID0gZXh0Rm9ybS0+ZXh0b3duZWRzY2hlbWE7CisKIAkvKgotCSAq IElmIHRoZSBleHRlbnNpb24gaXMgYWxyZWFkeSBpbiB0aGUgdGFyZ2V0IHNjaGVtYSwganVzdCBz aWxlbnRseSBkbwotCSAqIG5vdGhpbmcuCisJICogRm9yIG5vbi1vd25lZCBzY2hlbWFzLCB3ZSBz aG91bGQgbm93IGV2YWx1YXRlIGlmIHRoZSB0YXJnZXQgc2NoZW1hIGlzIGEKKwkgKiB2YWxpZCB0 YXJnZXQuIEZvciBvd25lZCBzY2hlbWFzLCBubyBzdWNoIGNoZWNrcyBhcmUgbmVlZGVkLCBiZWNh dXNlCisJICogd2UnbGwgc2ltcGx5IHJlbmFtZSB0aGUgZXhpc3Rpbmcgc2NoZW1hLgogCSAqLwot CWlmIChleHRGb3JtLT5leHRuYW1lc3BhY2UgPT0gbnNwT2lkKQorCWlmICghb3duZWRTY2hlbWEp CiAJewotCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCQlyZXR1cm4g SW52YWxpZE9iamVjdEFkZHJlc3M7CisJCW5zcE9pZCA9IExvb2t1cENyZWF0aW9uTmFtZXNwYWNl KG5ld3NjaGVtYSk7CisKKwkJLyogUGVybWlzc2lvbiBjaGVjazogbXVzdCBoYXZlIGNyZWF0aW9u IHJpZ2h0cyBpbiB0YXJnZXQgbmFtZXNwYWNlICovCisJCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xj aGVjayhOYW1lc3BhY2VSZWxhdGlvbklkLCBuc3BPaWQsIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRF KTsKKwkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX1NDSEVNQSwgbmV3c2NoZW1hKTsKKworCQkvKgorCQkgKiBJZiB0aGUg c2NoZW1hIGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiB0aGUgZXh0ZW5zaW9uLCBkaXNhbGxvdwor CQkgKiBtb3ZpbmcgdGhlIGV4dGVuc2lvbiBpbnRvIHRoZSBzY2hlbWEuICBUaGF0IHdvdWxkIGNy ZWF0ZSBhCisJCSAqIGRlcGVuZGVuY3kgbG9vcC4KKwkJICovCisJCWlmIChnZXRFeHRlbnNpb25P Zk9iamVjdChOYW1lc3BhY2VSZWxhdGlvbklkLCBuc3BPaWQpID09IGV4dGVuc2lvbk9pZCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBleHRlbnNpb24gXCIl c1wiIGludG8gc2NoZW1hIFwiJXNcIiAiCisJCQkJCQkJImJlY2F1c2UgdGhlIGV4dGVuc2lvbiBj b250YWlucyB0aGUgc2NoZW1hIiwKKwkJCQkJCQlleHRlbnNpb25OYW1lLCBuZXdzY2hlbWEpKSk7 CisKKwkJLyoKKwkJICogSWYgdGhlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IGluIHRoZSB0YXJnZXQg c2NoZW1hLCBqdXN0IHNpbGVudGx5IGRvCisJCSAqIG5vdGhpbmcuCisJCSAqLworCQlpZiAoZXh0 Rm9ybS0+ZXh0bmFtZXNwYWNlID09IG5zcE9pZCkKKwkJeworCQkJdGFibGVfY2xvc2UoZXh0UmVs LCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwkJ fQogCX0KIAogCS8qIENoZWNrIGV4dGVuc2lvbiBpcyBzdXBwb3NlZCB0byBiZSByZWxvY2F0YWJs ZSAqLwpAQCAtMzM5Nyw2ICszNTY0LDEzIEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0 IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJCQl9 CiAJCX0KIAorCQkvKgorCQkgKiBXZSBkb24ndCBhY3R1YWxseSBtb3ZlIGFueSBvYmplY3RzIGZv ciBvd25lZCBzY2hlbWFzIGJlY2F1c2Ugd2UKKwkJICogc2ltcGx5IHJlbmFtZSB0aGUgc2NoZW1h IHRoYXQgdGhlc2Ugb2JqZWN0cyBhcmUgYWxyZWFkeSBpbi4KKwkJICovCisJCWlmIChvd25lZFNj aGVtYSkKKwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIE90aGVyd2lzZSwgaWdub3JlIG5vbi1t ZW1iZXJzaGlwIGRlcGVuZGVuY2llcy4gIChDdXJyZW50bHksIHRoZQogCQkgKiBvbmx5IG90aGVy IGNhc2Ugd2UgY291bGQgc2VlIGhlcmUgaXMgYSBub3JtYWwgZGVwZW5kZW5jeSBmcm9tCkBAIC0z NDQwLDE4ICszNjE0LDM1IEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4 dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAKIAlyZWxhdGlvbl9j bG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQkvKiBOb3cgYWRqdXN0IHBnX2V4dGVu c2lvbi5leHRuYW1lc3BhY2UgKi8KLQlleHRGb3JtLT5leHRuYW1lc3BhY2UgPSBuc3BPaWQ7CisJ LyogTm93IGFjdHVhbGx5IHVwZGF0ZSB0aGUgc2NoZW1hIG9mIHRoZSBleHRlbnNpb24uICovCisJ aWYgKG93bmVkU2NoZW1hKQorCXsKKwkJLyoKKwkJICogRm9yIG93bmVkIHNjaGVtYXMsIHdlIHNp bXBseSByZW5hbWUgdGhlIHNjaGVtYS4gVGhpcyBtZWFucyB0aGF0IHdlCisJCSAqIGRvbid0IG5l ZWQgdG8gdXBkYXRlIHRoZSBleHRlbnNpb24gaXRzIGNhdGFsb2cgZW50cnksIGJlY2F1c2UgdGhl CisJCSAqIG9pZCBvZiB0aGUgc2NoZW1hIHdpbGwgc3RheSB0aGUgc2FtZS4KKwkJICovCisJCVJl bmFtZVNjaGVtYShnZXRfbmFtZXNwYWNlX25hbWUob2xkTnNwT2lkKSwgbmV3c2NoZW1hKTsKKwkJ dGFibGVfY2xvc2UoZXh0UmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl9CisJZWxzZQorCXsKKwkJ LyoKKwkJICogRm9yIG5vbi1vd25lZCBzY2hlbWFzLCB3ZSBub3cgaGF2ZSB0byB1cGRhdGUgdGhl IGV4dGVuc2lvbidzIHNjaGVtYQorCQkgKiBlbnRyeSwgYW5kIGFsc28gdXBkYXRlIHRoZSBkZXBl bmRlbmNpZXMuCisJCSAqLworCQlleHRGb3JtLT5leHRuYW1lc3BhY2UgPSBuc3BPaWQ7CiAKLQlD YXRhbG9nVHVwbGVVcGRhdGUoZXh0UmVsLCAmZXh0VHVwLT50X3NlbGYsIGV4dFR1cCk7CisJCUNh dGFsb2dUdXBsZVVwZGF0ZShleHRSZWwsICZleHRUdXAtPnRfc2VsZiwgZXh0VHVwKTsKIAotCXRh YmxlX2Nsb3NlKGV4dFJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisJCXRhYmxlX2Nsb3NlKGV4dFJl bCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQkvKiB1cGRhdGUgZGVwZW5kZW5jeSB0byBwb2ludCB0 byB0aGUgbmV3IHNjaGVtYSAqLwotCWlmIChjaGFuZ2VEZXBlbmRlbmN5Rm9yKEV4dGVuc2lvblJl bGF0aW9uSWQsIGV4dGVuc2lvbk9pZCwKLQkJCQkJCQlOYW1lc3BhY2VSZWxhdGlvbklkLCBvbGRO c3BPaWQsIG5zcE9pZCkgIT0gMSkKLQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBjaGFuZ2Ugc2No ZW1hIGRlcGVuZGVuY3kgZm9yIGV4dGVuc2lvbiAlcyIsCi0JCQkgTmFtZVN0cihleHRGb3JtLT5l eHRuYW1lKSk7CisJCS8qIHVwZGF0ZSBkZXBlbmRlbmN5IHRvIHBvaW50IHRvIHRoZSBuZXcgc2No ZW1hICovCisJCWlmIChjaGFuZ2VEZXBlbmRlbmN5Rm9yKEV4dGVuc2lvblJlbGF0aW9uSWQsIGV4 dGVuc2lvbk9pZCwKKwkJCQkJCQkJTmFtZXNwYWNlUmVsYXRpb25JZCwgb2xkTnNwT2lkLCBuc3BP aWQpICE9IDEpCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGNoYW5nZSBzY2hlbWEgZGVwZW5k ZW5jeSBmb3IgZXh0ZW5zaW9uICVzIiwKKwkJCQkgTmFtZVN0cihleHRGb3JtLT5leHRuYW1lKSk7 CisJfQogCiAJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhFeHRlbnNpb25SZWxhdGlvbklkLCBl eHRlbnNpb25PaWQsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf dXBncmFkZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBw b3J0LmMKaW5kZXggYjUwNWE2YjRmZWUuLmEwZGJmMTE5ZGU5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv c2NoZW1hY21kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIK QEAgLTE4NSwxMiArMTg2LDE0IEBAIERhdHVtCiBiaW5hcnlfdXBncmFkZV9jcmVhdGVfZW1wdHlf ZXh0ZW5zaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJdGV4dAkgICAqZXh0TmFtZTsKLQl0ZXh0 CSAgICpzY2hlbWFOYW1lOworCWNoYXIJICAgKnNjaGVtYU5hbWU7CiAJYm9vbAkJcmVsb2NhdGFi bGU7CisJYm9vbAkJb3duZWRzY2hlbWE7CiAJdGV4dAkgICAqZXh0VmVyc2lvbjsKIAlEYXR1bQkJ ZXh0Q29uZmlnOwogCURhdHVtCQlleHRDb25kaXRpb247CiAJTGlzdAkgICAqcmVxdWlyZWRFeHRl bnNpb25zOworCU9pZAkJCXNjaGVtYU9pZDsKIAogCUNIRUNLX0lTX0JJTkFSWV9VUEdSQURFOwog CkBAIC0xOTgsMjggKzIwMSwzMCBAQCBiaW5hcnlfdXBncmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5z aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKFBHX0FSR0lTTlVMTCgwKSB8fAogCQlQR19BUkdJ U05VTEwoMSkgfHwKIAkJUEdfQVJHSVNOVUxMKDIpIHx8Ci0JCVBHX0FSR0lTTlVMTCgzKSkKKwkJ UEdfQVJHSVNOVUxMKDMpIHx8CisJCVBHX0FSR0lTTlVMTCg0KSkKIAkJZWxvZyhFUlJPUiwgIm51 bGwgYXJndW1lbnQgdG8gYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbiBpcyBu b3QgYWxsb3dlZCIpOwogCiAJZXh0TmFtZSA9IFBHX0dFVEFSR19URVhUX1BQKDApOwotCXNjaGVt YU5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKKwlzY2hlbWFOYW1lID0gdGV4dF90b19jc3Ry aW5nKFBHX0dFVEFSR19URVhUX1BQKDEpKTsKIAlyZWxvY2F0YWJsZSA9IFBHX0dFVEFSR19CT09M KDIpOwotCWV4dFZlcnNpb24gPSBQR19HRVRBUkdfVEVYVF9QUCgzKTsKKwlvd25lZHNjaGVtYSA9 IFBHX0dFVEFSR19CT09MKDMpOworCWV4dFZlcnNpb24gPSBQR19HRVRBUkdfVEVYVF9QUCg0KTsK IAotCWlmIChQR19BUkdJU05VTEwoNCkpCisJaWYgKFBHX0FSR0lTTlVMTCg1KSkKIAkJZXh0Q29u ZmlnID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwogCWVsc2UKLQkJZXh0Q29uZmlnID0gUEdfR0VU QVJHX0RBVFVNKDQpOworCQlleHRDb25maWcgPSBQR19HRVRBUkdfREFUVU0oNSk7CiAKLQlpZiAo UEdfQVJHSVNOVUxMKDUpKQorCWlmIChQR19BUkdJU05VTEwoNikpCiAJCWV4dENvbmRpdGlvbiA9 IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAllbHNlCi0JCWV4dENvbmRpdGlvbiA9IFBHX0dFVEFS R19EQVRVTSg1KTsKKwkJZXh0Q29uZGl0aW9uID0gUEdfR0VUQVJHX0RBVFVNKDYpOwogCiAJcmVx dWlyZWRFeHRlbnNpb25zID0gTklMOwotCWlmICghUEdfQVJHSVNOVUxMKDYpKQorCWlmICghUEdf QVJHSVNOVUxMKDcpKQogCXsKLQkJQXJyYXlUeXBlICAqdGV4dEFycmF5ID0gUEdfR0VUQVJHX0FS UkFZVFlQRV9QKDYpOworCQlBcnJheVR5cGUgICp0ZXh0QXJyYXkgPSBQR19HRVRBUkdfQVJSQVlU WVBFX1AoNyk7CiAJCURhdHVtCSAgICp0ZXh0RGF0dW1zOwogCQlpbnQJCQluZGF0dW1zOwogCQlp bnQJCQlpOwpAQCAtMjM0LDEwICsyMzksMjggQEAgYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5 X2V4dGVuc2lvbihQR19GVU5DVElPTl9BUkdTKQogCQl9CiAJfQogCisJaWYgKG93bmVkc2NoZW1h KQorCXsKKwkJQ3JlYXRlU2NoZW1hU3RtdCAqY3NzdG10ID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1h U3RtdCk7CisKKwkJY3NzdG10LT5zY2hlbWFuYW1lID0gc2NoZW1hTmFtZTsKKwkJY3NzdG10LT5h dXRocm9sZSA9IE5VTEw7CS8qIHdpbGwgYmUgY3JlYXRlZCBieSBjdXJyZW50IHVzZXIgKi8KKwkJ Y3NzdG10LT5zY2hlbWFFbHRzID0gTklMOworCQljc3N0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxz ZTsKKwkJc2NoZW1hT2lkID0gQ3JlYXRlU2NoZW1hQ29tbWFuZChjc3N0bXQsICIoZ2VuZXJhdGVk IENSRUFURSBTQ0hFTUEgY29tbWFuZCkiLAorCQkJCQkJCQkJCS0xLCAtMSk7CisKKwl9CisJZWxz ZQorCXsKKwkJc2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgZmFsc2Up OworCX0KKwogCUluc2VydEV4dGVuc2lvblR1cGxlKHRleHRfdG9fY3N0cmluZyhleHROYW1lKSwK IAkJCQkJCSBHZXRVc2VySWQoKSwKLQkJCQkJCSBnZXRfbmFtZXNwYWNlX29pZCh0ZXh0X3RvX2Nz dHJpbmcoc2NoZW1hTmFtZSksIGZhbHNlKSwKKwkJCQkJCSBzY2hlbWFPaWQsCiAJCQkJCQkgcmVs b2NhdGFibGUsCisJCQkJCQkgb3duZWRzY2hlbWEsCiAJCQkJCQkgdGV4dF90b19jc3RyaW5nKGV4 dFZlcnNpb24pLAogCQkJCQkJIGV4dENvbmZpZywKIAkJCQkJCSBleHRDb25kaXRpb24sCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCAxMzcxNjFhYTVlMC4uMTQ3NGU5ZWMyNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTkz Niw2ICsxOTM2LDE5IEBAIGNoZWNrRXh0ZW5zaW9uTWVtYmVyc2hpcChEdW1wYWJsZU9iamVjdCAq ZG9iaiwgQXJjaGl2ZSAqZm91dCkKIAlpZiAoZXh0ID09IE5VTEwpCiAJCXJldHVybiBmYWxzZTsK IAorCS8qCisJICogSWYgdGhpcyBpcyB0aGUgIm93bmVkX3NjaGVtYSIgb2YgdGhlIGV4dGVuc2lv biwgdGhlbiB3ZSBkb24ndCB3YW50IHRvCisJICogY3JlYXRlIGl0IG1hbnVhbGx5LCBiZWNhdXNl IGl0IGdldHMgY3JlYXRlZCB0b2dldGhlciB3aXRoIHRoZQorCSAqIGV4dGVuc2lvbi4KKwkgKi8K KwlpZiAoZG9iai0+b2JqVHlwZSA9PSBET19OQU1FU1BBQ0UgJiYKKwkJZXh0LT5vd25lZHNjaGVt YSAmJiBzdHJjbXAoZXh0LT5uYW1lc3BhY2UsIGRvYmotPm5hbWUpID09IDApCisJeworCQlOYW1l c3BhY2VJbmZvICpuc2luZm8gPSAoTmFtZXNwYWNlSW5mbyAqKSBkb2JqOworCisJCW5zaW5mby0+ Y3JlYXRlID0gZmFsc2U7CisJfQorCiAJZG9iai0+ZXh0X21lbWJlciA9IHRydWU7CiAKIAkvKiBS ZWNvcmQgZGVwZW5kZW5jeSBzbyB0aGF0IGdldERlcGVuZGVuY2llcyBuZWVkbid0IGRlYWwgd2l0 aCB0aGF0ICovCkBAIC02MDQwLDcgKzYwNTMsNyBAQCBiaW5hcnlfdXBncmFkZV9leHRlbnNpb25f bWVtYmVyKFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVyLAogCQkJCQkJCQljb25zdCBjaGFyICpv YmpuYW1lLAogCQkJCQkJCQljb25zdCBjaGFyICpvYmpuYW1lc3BhY2UpCiB7Ci0JRHVtcGFibGVP YmplY3QgKmV4dG9iaiA9IE5VTEw7CisJRXh0ZW5zaW9uSW5mbyAqZXh0ID0gTlVMTDsKIAlpbnQJ CQlpOwogCiAJaWYgKCFkb2JqLT5leHRfbWVtYmVyKQpAQCAtNjA1NCwxOSArNjA2NywzMyBAQCBi aW5hcnlfdXBncmFkZV9leHRlbnNpb25fbWVtYmVyKFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVy LAogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBkb2JqLT5uRGVwczsgaSsrKQogCXsKLQkJZXh0b2Jq ID0gZmluZE9iamVjdEJ5RHVtcElkKGRvYmotPmRlcGVuZGVuY2llc1tpXSk7CisJCUR1bXBhYmxl T2JqZWN0ICpleHRvYmogPSBmaW5kT2JqZWN0QnlEdW1wSWQoZG9iai0+ZGVwZW5kZW5jaWVzW2ld KTsKKwogCQlpZiAoZXh0b2JqICYmIGV4dG9iai0+b2JqVHlwZSA9PSBET19FWFRFTlNJT04pCisJ CXsKKwkJCWV4dCA9IChFeHRlbnNpb25JbmZvICopIGV4dG9iajsKIAkJCWJyZWFrOwotCQlleHRv YmogPSBOVUxMOworCQl9CiAJfQotCWlmIChleHRvYmogPT0gTlVMTCkKKwlpZiAoZXh0ID09IE5V TEwpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBwYXJlbnQgZXh0ZW5zaW9uIGZvciAlcyAl cyIsCiAJCQkJIG9ianR5cGUsIG9iam5hbWUpOwogCisJLyoKKwkgKiBJZiB0aGUgb2JqZWN0IGlz IHRoZSAib3duZWRfc2NoZW1hIiBvZiB0aGUgZXh0ZW5zaW9uLCB3ZSBkb24ndCBuZWVkIHRvCisJ ICogYWRkIGl0IHRvIHRoZSBleHRlbnNpb24gYmVjYXVzZSBpdCB3YXMgYWxyZWFkeSBtYWRlIGEg bWVtYmVyIG9mIHRoZQorCSAqIGV4dGVuc2lvbiB3aGVuIHRoZSBleHRlbnNpb24gd2FzIGNyZWF0 ZWQuCisJICovCisJaWYgKGRvYmotPm9ialR5cGUgPT0gRE9fTkFNRVNQQUNFICYmCisJCWV4dC0+ b3duZWRzY2hlbWEgJiYgc3RyY21wKGV4dC0+bmFtZXNwYWNlLCBkb2JqLT5uYW1lKSA9PSAwKQor CXsKKwkJcmV0dXJuOworCX0KKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHVwZ3JhZGVfYnVmZmVy LAogCQkJCQkJICJcbi0tIEZvciBiaW5hcnkgdXBncmFkZSwgaGFuZGxlIGV4dGVuc2lvbiBtZW1i ZXJzaGlwIHRoZSBoYXJkIHdheVxuIik7CiAJYXBwZW5kUFFFeHBCdWZmZXIodXBncmFkZV9idWZm ZXIsICJBTFRFUiBFWFRFTlNJT04gJXMgQUREICVzICIsCi0JCQkJCSAgZm10SWQoZXh0b2JqLT5u YW1lKSwKKwkJCQkJICBmbXRJZChleHQtPmRvYmoubmFtZSksCiAJCQkJCSAgb2JqdHlwZSk7CiAJ aWYgKG9iam5hbWVzcGFjZSAmJiAqb2JqbmFtZXNwYWNlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcih1 cGdyYWRlX2J1ZmZlciwgIiVzLiIsIGZtdElkKG9iam5hbWVzcGFjZSkpOwpAQCAtNjIyMyw2ICs2 MjUwLDcgQEAgZ2V0RXh0ZW5zaW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMp CiAJaW50CQkJaV9leHRuYW1lOwogCWludAkJCWlfbnNwbmFtZTsKIAlpbnQJCQlpX2V4dHJlbG9j YXRhYmxlOworCWludAkJCWlfZXh0b3duZWRzY2hlbWE7CiAJaW50CQkJaV9leHR2ZXJzaW9uOwog CWludAkJCWlfZXh0Y29uZmlnOwogCWludAkJCWlfZXh0Y29uZGl0aW9uOwpAQCAtNjIzMSw3ICs2 MjU5LDE0IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FeHRlbnNpb25z KQogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJTRUxFQ1QgeC50YWJsZW9pZCwgeC5v aWQsICIKIAkJCQkJCSAieC5leHRuYW1lLCBuLm5zcG5hbWUsIHguZXh0cmVsb2NhdGFibGUsIHgu ZXh0dmVyc2lvbiwgeC5leHRjb25maWcsIHguZXh0Y29uZGl0aW9uICIKLQkJCQkJCSAiRlJPTSBw Z19leHRlbnNpb24geCAiCisJCSk7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxODAw MDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB4LmV4dG93bmVkc2NoZW1hICIp OworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGZhbHNlIEFTIGV4dG93 bmVkc2NoZW1hICIpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJGUk9NIHBnX2V4 dGVuc2lvbiB4ICIKIAkJCQkJCSAiSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IHguZXh0 bmFtZXNwYWNlIik7CiAKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEs IFBHUkVTX1RVUExFU19PSyk7CkBAIC02MjQ3LDYgKzYyODIsNyBAQCBnZXRFeHRlbnNpb25zKEFy Y2hpdmUgKmZvdXQsIGludCAqbnVtRXh0ZW5zaW9ucykKIAlpX2V4dG5hbWUgPSBQUWZudW1iZXIo cmVzLCAiZXh0bmFtZSIpOwogCWlfbnNwbmFtZSA9IFBRZm51bWJlcihyZXMsICJuc3BuYW1lIik7 CiAJaV9leHRyZWxvY2F0YWJsZSA9IFBRZm51bWJlcihyZXMsICJleHRyZWxvY2F0YWJsZSIpOwor CWlfZXh0b3duZWRzY2hlbWEgPSBQUWZudW1iZXIocmVzLCAiZXh0b3duZWRzY2hlbWEiKTsKIAlp X2V4dHZlcnNpb24gPSBQUWZudW1iZXIocmVzLCAiZXh0dmVyc2lvbiIpOwogCWlfZXh0Y29uZmln ID0gUFFmbnVtYmVyKHJlcywgImV4dGNvbmZpZyIpOwogCWlfZXh0Y29uZGl0aW9uID0gUFFmbnVt YmVyKHJlcywgImV4dGNvbmRpdGlvbiIpOwpAQCAtNjI2MCw2ICs2Mjk2LDcgQEAgZ2V0RXh0ZW5z aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMpCiAJCWV4dGluZm9baV0uZG9i ai5uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dG5hbWUpKTsKIAkJZXh0 aW5mb1tpXS5uYW1lc3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfbnNwbmFt ZSkpOwogCQlleHRpbmZvW2ldLnJlbG9jYXRhYmxlID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9l eHRyZWxvY2F0YWJsZSkpID09ICd0JzsKKwkJZXh0aW5mb1tpXS5vd25lZHNjaGVtYSA9ICooUFFn ZXR2YWx1ZShyZXMsIGksIGlfZXh0b3duZWRzY2hlbWEpKSA9PSAndCc7CiAJCWV4dGluZm9baV0u ZXh0dmVyc2lvbiA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9leHR2ZXJzaW9uKSk7 CiAJCWV4dGluZm9baV0uZXh0Y29uZmlnID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBp X2V4dGNvbmZpZykpOwogCQlleHRpbmZvW2ldLmV4dGNvbmRpdGlvbiA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9leHRjb25kaXRpb24pKTsKQEAgLTExOTg0LDkgKzEyMDIxLDkgQEAg ZHVtcE5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBOYW1lc3BhY2VJbmZvICpuc3BpbmZv KQogCXsKIAkJLyogc2VlIHNlbGVjdER1bXBhYmxlTmFtZXNwYWNlKCkgKi8KIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoZGVscSwKLQkJCQkJCQkgIi0tICpub3QqIGRyb3BwaW5nIHNjaGVtYSwgc2lu Y2UgaW5pdGRiIGNyZWF0ZXMgaXRcbiIpOworCQkJCQkJCSAiLS0gKm5vdCogZHJvcHBpbmcgc2No ZW1hLCBzaW5jZSBpbml0ZGIgb3IgQ1JFQVRFIEVYVEVOU0lPTiBjcmVhdGVzIGl0XG4iKTsKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocSwKLQkJCQkJCQkgIi0tICpub3QqIGNyZWF0aW5nIHNjaGVt YSwgc2luY2UgaW5pdGRiIGNyZWF0ZXMgaXRcbiIpOworCQkJCQkJCSAiLS0gKm5vdCogY3JlYXRp bmcgc2NoZW1hLCBzaW5jZSBpbml0ZGIgb3IgQ1JFQVRFIEVYVEVOU0lPTiBjcmVhdGVzIGl0XG4i KTsKIAl9CiAKIAlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCkBAIC0xMjA5OCw2ICsxMjEzNSw3 IEBAIGR1bXBFeHRlbnNpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgRXh0ZW5zaW9uSW5mbyAqZXh0 aW5mbykKIAkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHEsIGV4dGluZm8tPm5hbWVzcGFjZSwgZm91 dCk7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsICIpOwogCQlhcHBlbmRQUUV4cEJ1ZmZl cihxLCAiJXMsICIsIGV4dGluZm8tPnJlbG9jYXRhYmxlID8gInRydWUiIDogImZhbHNlIik7CisJ CWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcywgIiwgZXh0aW5mby0+b3duZWRzY2hlbWEgPyAidHJ1 ZSIgOiAiZmFsc2UiKTsKIAkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHEsIGV4dGluZm8tPmV4dHZl cnNpb24sIGZvdXQpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiLCAiKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKaW5kZXggMWMxMWE3OTA4M2YuLjZkYjRmMWI5ZDVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTE5NSw2 ICsxOTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfZXh0ZW5zaW9uSW5mbwogCUR1bXBhYmxlT2JqZWN0 IGRvYmo7CiAJY2hhcgkgICAqbmFtZXNwYWNlOwkJLyogc2NoZW1hIGNvbnRhaW5pbmcgZXh0ZW5z aW9uJ3Mgb2JqZWN0cyAqLwogCWJvb2wJCXJlbG9jYXRhYmxlOworCWJvb2wJCW93bmVkc2NoZW1h OwogCWNoYXIJICAgKmV4dHZlcnNpb247CiAJY2hhcgkgICAqZXh0Y29uZmlnOwkJLyogaW5mbyBh Ym91dCBjb25maWd1cmF0aW9uIHRhYmxlcyAqLwogCWNoYXIJICAgKmV4dGNvbmRpdGlvbjsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9uLmggYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2V4dGVuc2lvbi5oCmluZGV4IDE5ZWMyOTFhZDdlLi5iNGViYjk0YjQyYyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2V4dGVuc2lvbi5oCkBAIC0zNiw2ICszNiw3IEBAIENBVEFMT0co cGdfZXh0ZW5zaW9uLDMwNzksRXh0ZW5zaW9uUmVsYXRpb25JZCkKIAlPaWQJCQlleHRuYW1lc3Bh Y2UgQktJX0xPT0tVUChwZ19uYW1lc3BhY2UpOwkvKiBuYW1lc3BhY2Ugb2YKIAkJCQkJCQkJCQkJ CQkJICogY29udGFpbmVkIG9iamVjdHMgKi8KIAlib29sCQlleHRyZWxvY2F0YWJsZTsgLyogaWYg dHJ1ZSwgYWxsb3cgQUxURVIgRVhURU5TSU9OIFNFVCBTQ0hFTUEgKi8KKwlib29sCQlleHRvd25l ZHNjaGVtYTsgLyogaWYgdHJ1ZSwgc2NoZW1hIGlzIG93bmVkIGJ5IGV4dGVuc2lvbiAqLwogCiAj aWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhl cmUgKi8KIAkvKiBleHR2ZXJzaW9uIG1heSBuZXZlciBiZSBudWxsLCBidXQgdGhlIG90aGVycyBj YW4gYmUuICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzNjFlMmNmZmZlYi4uZTRkZDdj YmYwODUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTE5MTcsNyArMTE5MTcsNyBAQAog eyBvaWQgPT4gJzM1OTEnLCBkZXNjciA9PiAnZm9yIHVzZSBieSBwZ191cGdyYWRlJywKICAgcHJv bmFtZSA9PiAnYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbicsIHByb2lzc3Ry aWN0ID0+ICdmJywKICAgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsIHBy b3JldHR5cGUgPT4gJ3ZvaWQnLAotICBwcm9hcmd0eXBlcyA9PiAndGV4dCB0ZXh0IGJvb2wgdGV4 dCBfb2lkIF90ZXh0IF90ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGV4dCBib29sIGJv b2wgdGV4dCBfb2lkIF90ZXh0IF90ZXh0JywKICAgcHJvc3JjID0+ICdiaW5hcnlfdXBncmFkZV9j cmVhdGVfZW1wdHlfZXh0ZW5zaW9uJyB9LAogeyBvaWQgPT4gJzQwODMnLCBkZXNjciA9PiAnZm9y IHVzZSBieSBwZ191cGdyYWRlJywKICAgcHJvbmFtZSA9PiAnYmluYXJ5X3VwZ3JhZGVfc2V0X3Jl Y29yZF9pbml0X3ByaXZzJywgcHJvdm9sYXRpbGUgPT4gJ3YnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNp b24uaAppbmRleCA3YTc2YmRlYmNmYS4uMDMxNjZiNzU1MDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVu c2lvbi5oCkBAIC0zOCw3ICszOCw5IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIENyZWF0ZUV4dGVu c2lvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUV4dGVuc2lvblN0bXQgKnN0CiBleHRlcm4g dm9pZCBSZW1vdmVFeHRlbnNpb25CeUlkKE9pZCBleHRJZCk7CiAKIGV4dGVybiBPYmplY3RBZGRy ZXNzIEluc2VydEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIgKmV4dE5hbWUsIE9pZCBleHRPd25l ciwKLQkJCQkJCQkJCQkgIE9pZCBzY2hlbWFPaWQsIGJvb2wgcmVsb2NhdGFibGUsIGNvbnN0IGNo YXIgKmV4dFZlcnNpb24sCisJCQkJCQkJCQkJICBPaWQgc2NoZW1hT2lkLCBib29sIHJlbG9jYXRh YmxlLAorCQkJCQkJCQkJCSAgYm9vbCBvd25lZFNjaGVtYSwKKwkJCQkJCQkJCQkgIGNvbnN0IGNo YXIgKmV4dFZlcnNpb24sCiAJCQkJCQkJCQkJICBEYXR1bSBleHRDb25maWcsIERhdHVtIGV4dENv bmRpdGlvbiwKIAkJCQkJCQkJCQkgIExpc3QgKnJlcXVpcmVkRXh0ZW5zaW9ucyk7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKaW5kZXggYTM1OTFiZjNkMmYuLjBh N2NmNjkyMjE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9N YWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZQpA QCAtOSw3ICs5LDkgQEAgRVhURU5TSU9OID0gdGVzdF9leHQxIHRlc3RfZXh0MiB0ZXN0X2V4dDMg dGVzdF9leHQ0IHRlc3RfZXh0NSB0ZXN0X2V4dDYgXAogICAgICAgICAgICAgdGVzdF9leHRfZXh0 c2NoZW1hIFwKICAgICAgICAgICAgIHRlc3RfZXh0X2V2dHRyaWcgXAogICAgICAgICAgICAgdGVz dF9leHRfc2V0X3NjaGVtYSBcCi0gICAgICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMSB0ZXN0 X2V4dF9yZXFfc2NoZW1hMiB0ZXN0X2V4dF9yZXFfc2NoZW1hMworICAgICAgICAgICAgdGVzdF9l eHRfcmVxX3NjaGVtYTEgdGVzdF9leHRfcmVxX3NjaGVtYTIgdGVzdF9leHRfcmVxX3NjaGVtYTMg XAorICAgICAgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hIHRlc3RfZXh0X293bmVkX3NjaGVt YV9ub3N1cGVydXNlciBcCisgICAgICAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3Rl ZCB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKIAogREFUQSA9IHRlc3RfZXh0MS0t MS4wLnNxbCB0ZXN0X2V4dDItLTEuMC5zcWwgdGVzdF9leHQzLS0xLjAuc3FsIFwKICAgICAgICB0 ZXN0X2V4dDQtLTEuMC5zcWwgdGVzdF9leHQ1LS0xLjAuc3FsIHRlc3RfZXh0Ni0tMS4wLnNxbCBc CkBAIC0yNSw3ICsyNywxNCBAQCBEQVRBID0gdGVzdF9leHQxLS0xLjAuc3FsIHRlc3RfZXh0Mi0t MS4wLnNxbCB0ZXN0X2V4dDMtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3NldF9zY2hlbWEt LTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWExLS0xLjAuc3FsIFwKICAgICAg ICB0ZXN0X2V4dF9yZXFfc2NoZW1hMi0tMS4wLnNxbCBcCi0gICAgICAgdGVzdF9leHRfcmVxX3Nj aGVtYTMtLTEuMC5zcWwKKyAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMy0tMS4wLnNxbCBcCisg ICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9v d25lZF9zY2hlbWEtLTEuMC0tMS4xLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1h X25vc3VwZXJ1c2VyLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXItLTEuMC0tMS4xLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hX3Ry dXN0ZWQtLTEuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLS0x LjAtLTEuMS5zcWwgXAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0t MS4wLnNxbAogCiBSRUdSRVNTID0gdGVzdF9leHRlbnNpb25zIHRlc3RfZXh0ZGVwZW5kCiBUQVBf VEVTVFMgPSAxCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9l eHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVu c2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dAppbmRleCBmZGFlNTJkNmFiMi4uZWIx YzM4YWIxMjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4 cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4 dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dApAQCAtOSw2ICs5LDcgQEAgQ1JF QVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDEgU0NIRU1BIHRlc3RfZXh0OwogRVJST1I6ICBzY2hlbWEg InRlc3RfZXh0IiBkb2VzIG5vdCBleGlzdAogQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDEgU0NI RU1BIGhhcyRkb2xsYXI7CiBFUlJPUjogIGV4dGVuc2lvbiAidGVzdF9leHQxIiBtdXN0IGJlIGlu c3RhbGxlZCBpbiBzY2hlbWEgInRlc3RfZXh0MSIKK0hJTlQ6ICBEbyBub3Qgc3BlY2lmeSBTQ0hF TUEgd2hlbiBydW5uaW5nIENSRUFURSBFWFRFTlNJT04gZm9yIGV4dGVuc2lvbiAidGVzdF9leHQx IgogLS0gZmluYWxseSBzdWNjZXNzCiBDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0MSBTQ0hFTUEg aGFzJGRvbGxhciBDQVNDQURFOwogTk9USUNFOiAgaW5zdGFsbGluZyByZXF1aXJlZCBleHRlbnNp b24gInRlc3RfZXh0MiIKQEAgLTY2NywzICs2NjgsMTYxIEBAIFNFTEVDVCB0ZXN0X3NfZGVwLmRl cF9yZXEyKCk7CiAKIERST1AgRVhURU5TSU9OIHRlc3RfZXh0X3JlcV9zY2hlbWExIENBU0NBREU7 CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGV4dGVuc2lvbiB0ZXN0X2V4dF9yZXFfc2NoZW1h MgorLS0KKy0tIFRlc3Qgb3duZWQgc2NoZW1hIGV4dGVuc2lvbnMKKy0tCitDUkVBVEUgU0NIRU1B IHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIEZhaWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0aW5n IHNjaGVtYSB0byBiZSBwcm92aWRlZAorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9z Y2hlbWEgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0VSUk9SOiAgc2NoZW1hICJ0ZXN0 X2V4dF9vd25lZF9zY2hlbWEiIGFscmVhZHkgZXhpc3RzCitISU5UOiAgRHJvcCBzY2hlbWEgInRl c3RfZXh0X293bmVkX3NjaGVtYSIgb3Igc3BlY2lmeSBhbm90aGVyIHNjaGVtYSB1c2luZyBDUkVB VEUgRVhURU5TSU9OIC4uLiBTQ0hFTUEgLi4uCistLSBGYWlscyBiZWNhdXNlIGEgZGlmZmVyZW50 IHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxlCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9zY2hlbWE7CitFUlJPUjogIGV4dGVuc2lvbiAidGVz dF9leHRfb3duZWRfc2NoZW1hIiBtdXN0IGJlIGluc3RhbGxlZCBpbiBzY2hlbWEgInRlc3RfZXh0 X293bmVkX3NjaGVtYSIKK0hJTlQ6ICBEbyBub3Qgc3BlY2lmeSBTQ0hFTUEgd2hlbiBydW5uaW5n IENSRUFURSBFWFRFTlNJT04gZm9yIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hIgor RFJPUCBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK09iamVjdHMg aW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiCisgICAgICAgICAgIE9iamVjdCBk ZXNjcmlwdGlvbiAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEub3duZWQxKCkKKyBzY2hl bWEgdGVzdF9leHRfb3duZWRfc2NoZW1hCisoMiByb3dzKQorCistLSBUZXN0IEFMVEVSIEVYVEVO U0lPTiBVUERBVEUgd2l0aCBvd25lZCBzY2hlbWEKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9v d25lZF9zY2hlbWEgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7 CitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hIgorICAgICAgICAg ICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rpb24gdGVzdF9leHRfb3duZWRfc2NoZW1hLm93bmVk MSgpCisgZnVuY3Rpb24gdGVzdF9leHRfb3duZWRfc2NoZW1hLm93bmVkMigpCisgc2NoZW1hIHRl c3RfZXh0X293bmVkX3NjaGVtYQorKDMgcm93cykKKworLS0gVmVyaWZ5IHRoYXQgdGhlIG93bmVk IHNjaGVtYSBpcyBkcm9wcGVkIHRvZ2V0aGVyIHdpdGggdGhlIGV4dGVuc2lvbgorRFJPUCBFWFRF TlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hOworU0VMRUNUIENPVU5UKCopIEZST00gcGdfbmFt ZXNwYWNlIFdIRVJFIG5zcG5hbWUgPSAndGVzdF9leHRfb3duZWRfc2NoZW1hJzsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAgMAorKDEgcm93KQorCistLSBUZXN0IGRyb3AgYmVoYXZpb3Igd2l0aCBu b24tZXh0ZW5zaW9uIG9iamVjdHMgaW4gdGhlIG93bmVkIHNjaGVtYQorQ1JFQVRFIEVYVEVOU0lP TiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9leHRfb3duZWRf c2NoZW1hLm5vbl9leHRfZnVuYygpIFJFVFVSTlMgaW50IExBTkdVQUdFIFNRTCBBUyAkJCBTRUxF Q1QgMSAkJDsKKy0tIEZhaWxzIGJlY2F1c2Ugb2YgdGhlIG5vbi1leHRlbnNpb24gb2JqZWN0CitE Uk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitFUlJPUjogIGNhbm5vdCBkcm9w IGV4dGVuc2lvbiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRl cGVuZCBvbiBpdAorREVUQUlMOiAgZnVuY3Rpb24gdGVzdF9leHRfb3duZWRfc2NoZW1hLm5vbl9l eHRfZnVuYygpIGRlcGVuZHMgb24gc2NoZW1hIHRlc3RfZXh0X293bmVkX3NjaGVtYQorSElOVDog IFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4K Ky0tIFN1Y2NlZWRzIGFuZCBjYXNjYWRlcyB0byB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKK0RS T1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBDQVNDQURFOworTk9USUNFOiAgZHJv cCBjYXNjYWRlcyB0byBmdW5jdGlvbiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEubm9uX2V4dF9mdW5j KCkKK0NSRUFURSBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKKy0tIEZhaWxzIGZvciBhbiBhbHJl YWR5IGV4aXN0aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CitF UlJPUjogIHNjaGVtYSAiYWxyZWFkeV9leGlzdGluZyIgYWxyZWFkeSBleGlzdHMKK0hJTlQ6ICBE cm9wIHNjaGVtYSAiYWxyZWFkeV9leGlzdGluZyIgb3Igc3BlY2lmeSBhbm90aGVyIHNjaGVtYSB1 c2luZyBDUkVBVEUgRVhURU5TSU9OIC4uLiBTQ0hFTUEgLi4uCistLSBGYWlscyBiZWNhdXNlIG5v IHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxlCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKK0VSUk9SOiAgbm8gc2NoZW1hIGhhcyBiZWVuIHNl bGVjdGVkIHRvIGNyZWF0ZSBpbgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGUgU0NIRU1BIHRlc3Rfc2NoZW1hOworXGR4KyB0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUiCisgICAgICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rpb24gdGVzdF9zY2hlbWEub3duZWQy KCkKKyBzY2hlbWEgdGVzdF9zY2hlbWEKKygyIHJvd3MpCisKKy0tIEZhaWxzIGJlY2F1c2Ugc2No ZW1hIGFscmVhZHkgZXhpc3RzCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1h X3JlbG9jYXRhYmxlIFNFVCBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKK0VSUk9SOiAgc2NoZW1h ICJhbHJlYWR5X2V4aXN0aW5nIiBhbHJlYWR5IGV4aXN0cworQUxURVIgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTRVQgU0NIRU1BIHNvbWVfb3RoZXJfbmFtZTsK K1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCitPYmplY3RzIGluIGV4dGVu c2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIgorICAgICAgICBPYmplY3Qg ZGVzY3JpcHRpb24gICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgZnVuY3Rpb24gc29tZV9vdGhlcl9uYW1lLm93bmVkMigpCisgc2NoZW1hIHNvbWVfb3RoZXJf bmFtZQorKDIgcm93cykKKworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3Jl bG9jYXRhYmxlOworLS0gVmVyaWZ5IHRoZSBzY2hlbWEgd2FzIGRyb3BwZWQgd2l0aCB0aGUgZXh0 ZW5zaW9uCitEUk9QIFNDSEVNQSBzb21lX290aGVyX25hbWU7CitFUlJPUjogIHNjaGVtYSAic29t ZV9vdGhlcl9uYW1lIiBkb2VzIG5vdCBleGlzdAorLS0gVGVzdCBvd25lZF9zY2hlbWEgKyBzdXBl cnVzZXI9ZmFsc2UgZXh0ZW5zaW9uCitDUkVBVEUgVVNFUiByZWdyZXNzX3Rlc3RfZXh0X3VzZXI7 CistLSBUaGUgZGF0YWJhc2UgbmFtZSBkaWZmZXJzIGJldHdlZW4gbWVzb24gYW5kIGF1dG9jb25m IGJ1aWxkcywgc28gd2UgY2FuJ3QKKy0tIGhhcmRjb2RlIGl0IGluIHRoZSBHUkFOVC9SRVZPS0Ug c3RhdGVtZW50cy4KK0RPICQkIEJFR0lOIEVYRUNVVEUgZm9ybWF0KCdHUkFOVCBDUkVBVEUgT04g REFUQUJBU0UgJUkgVE8gcmVncmVzc190ZXN0X2V4dF91c2VyJywgY3VycmVudF9kYXRhYmFzZSgp KTsgRU5EICQkOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Rlc3RfZXh0X3Vz ZXI7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsK K1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyOworT2JqZWN0cyBpbiBleHRl bnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlciIKKyAgICAgICAgICAgICAg IE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0X293bmVkX3NjaGVt YV9ub3N1cGVydXNlci5vd25lZDEoKQorIHNjaGVtYSB0ZXN0X293bmVkX3NjaGVtYV9ub3N1cGVy dXNlcgorKDIgcm93cykKKworLS0gQ2hlY2sgdGhhdCBzY2hlbWEgaXMgb3duZWQgYnkgdGhlIGNy ZWF0aW5nIHVzZXIgKG5vdCBib290c3RyYXAgc3VwZXJ1c2VyKQorU0VMRUNUIG4ubnNwbmFtZSwg bi5uc3Bvd25lciA9IGN1cnJlbnRfdXNlcjo6cmVncm9sZSBhcyBvd25lZF9ieV9jdXJyZW50X3Vz ZXIKK0ZST00gcGdfbmFtZXNwYWNlIG4KK1dIRVJFIG4ubnNwbmFtZSA9ICd0ZXN0X293bmVkX3Nj aGVtYV9ub3N1cGVydXNlcic7CisgICAgICAgICAgICBuc3BuYW1lICAgICAgICAgICAgfCBvd25l ZF9ieV9jdXJyZW50X3VzZXIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIgfCB0Ciso MSByb3cpCisKKy0tIFVwZ3JhZGVzIHNob3VsZCB3b3JrIGZvciBzdXBlcnVzZXI9ZmFsc2UgZXh0 ZW5zaW9ucworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl ciBVUERBVEUgVE8gJzEuMSc7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl cjsKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVz ZXIiCisgICAgICAgICAgICAgICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rp b24gdGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIub3duZWQxKCkKKyBmdW5jdGlvbiB0ZXN0 X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci5vd25lZDIoKQorIHNjaGVtYSB0ZXN0X293bmVkX3Nj aGVtYV9ub3N1cGVydXNlcgorKDMgcm93cykKKworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3du ZWRfc2NoZW1hX25vc3VwZXJ1c2VyOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworLS0g VGVzdCBvd25lZF9zY2hlbWEgKyB0cnVzdGVkPXRydWUgZXh0ZW5zaW9uCitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfdGVzdF9leHRfdXNlcjsKK0NSRUFURSBFWFRFTlNJT04gdGVz dF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV90 cnVzdGVkOworT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVz dGVkIgorICAgICAgICAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0 X293bmVkX3NjaGVtYV90cnVzdGVkLm93bmVkMSgpCisgc2NoZW1hIHRlc3Rfb3duZWRfc2NoZW1h X3RydXN0ZWQKKygyIHJvd3MpCisKKy0tIENoZWNrIHRoYXQgc2NoZW1hIGlzIG93bmVkIGJ5IGJv b3RzdHJhcCBzdXBlcnVzZXIgZm9yIHRydXN0ZWQgZXh0ZW5zaW9uLAorLS0gZXZlbiB0aG91Z2gg dGhlIGV4dGVuc2lvbiBpcyBvd25lZCBieSByZWdyZXNzX3Rlc3RfZXh0X3VzZXIKK1NFTEVDVCBu Lm5zcG5hbWUsIG4ubnNwb3duZXIgPSAxMCBhcyBvd25lZF9ieV9ib290c3RyYXBfc3VwZXJ1c2Vy CitGUk9NIHBnX25hbWVzcGFjZSBuCitXSEVSRSBuLm5zcG5hbWUgPSAndGVzdF9vd25lZF9zY2hl bWFfdHJ1c3RlZCc7CisgICAgICAgICAgbnNwbmFtZSAgICAgICAgICB8IG93bmVkX2J5X2Jvb3Rz dHJhcF9zdXBlcnVzZXIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZCB8IHQKKygxIHJv dykKKworLS0gVXBkYXRpbmcgdHJ1c3RlZCBleHRlbnNpb25zIHNob3VsZCB3b3JrIG5vcm1hbGx5 CitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQgVVBEQVRFIFRP ICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsKK09iamVjdHMgaW4g ZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZCIKKyAgICAgICAgICAgICBP YmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rpb24gdGVzdF9vd25lZF9zY2hlbWFfdHJ1c3Rl ZC5vd25lZDEoKQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQub3duZWQyKCkK KyBzY2hlbWEgdGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZAorKDMgcm93cykKKworRFJPUCBFWFRF TlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitETyAkJCBCRUdJTiBFWEVDVVRFIGZvcm1hdCgnUkVWT0tFIENSRUFURSBPTiBE QVRBQkFTRSAlSSBGUk9NIHJlZ3Jlc3NfdGVzdF9leHRfdXNlcicsIGN1cnJlbnRfZGF0YWJhc2Uo KSk7IEVORCAkJDsKK0RST1AgVVNFUiByZWdyZXNzX3Rlc3RfZXh0X3VzZXI7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkCmluZGV4IGJlOWM5YWU1OTNmLi4w MTllMGQyYTI0MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv bWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24u YnVpbGQKQEAgLTQ0LDYgKzQ0LDE3IEBAIHRlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAogICAn dGVzdF9leHRfcmVxX3NjaGVtYTMuY29udHJvbCcsCiAgICd0ZXN0X2V4dF9zZXRfc2NoZW1hLS0x LjAuc3FsJywKICAgJ3Rlc3RfZXh0X3NldF9zY2hlbWEuY29udHJvbCcsCisgICd0ZXN0X2V4dF9v d25lZF9zY2hlbWEtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAtLTEu MS5zcWwnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wnLAorICAndGVzdF9leHRf b3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0xLjAuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3Nj aGVtYV9ub3N1cGVydXNlci0tMS4wLS0xLjEuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVt YV9ub3N1cGVydXNlci5jb250cm9sJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVk LS0xLjAuc3FsJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLS0xLjAtLTEuMS5z cWwnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQuY29udHJvbCcsCisgICd0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wnLAogKQogCiB0ZXN0cyArPSB7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25z LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lv bnMuc3FsCmluZGV4IGI1ODc4ZjZmODBmLi41OWE2NGMwZGRjZCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwK QEAgLTMwMywzICszMDMsODAgQEAgQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X3JlcV9zY2hlbWEx IFNFVCBTQ0hFTUEgdGVzdF9zX2RlcDI7ICAtLSBub3cgb2sKIFNFTEVDVCB0ZXN0X3NfZGVwMi5k ZXBfcmVxMSgpOwogU0VMRUNUIHRlc3Rfc19kZXAuZGVwX3JlcTIoKTsKIERST1AgRVhURU5TSU9O IHRlc3RfZXh0X3JlcV9zY2hlbWExIENBU0NBREU7CisKKy0tCistLSBUZXN0IG93bmVkIHNjaGVt YSBleHRlbnNpb25zCistLQorCitDUkVBVEUgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsK Ky0tIEZhaWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAor Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgU0NIRU1BIHRlc3RfZXh0X293 bmVkX3NjaGVtYTsKKy0tIEZhaWxzIGJlY2F1c2UgYSBkaWZmZXJlbnQgc2NoZW1hIGlzIHNldCBp biBjb250cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hIFND SEVNQSB0ZXN0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0NS RUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hOworXGR4KyB0ZXN0X2V4dF9vd25l ZF9zY2hlbWE7CistLSBUZXN0IEFMVEVSIEVYVEVOU0lPTiBVUERBVEUgd2l0aCBvd25lZCBzY2hl bWEKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgVVBEQVRFIFRPICcxLjEn OworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CistLSBWZXJpZnkgdGhhdCB0aGUgb3duZWQg c2NoZW1hIGlzIGRyb3BwZWQgdG9nZXRoZXIgd2l0aCB0aGUgZXh0ZW5zaW9uCitEUk9QIEVYVEVO U0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19uYW1l c3BhY2UgV0hFUkUgbnNwbmFtZSA9ICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEnOworCistLSBUZXN0 IGRyb3AgYmVoYXZpb3Igd2l0aCBub24tZXh0ZW5zaW9uIG9iamVjdHMgaW4gdGhlIG93bmVkIHNj aGVtYQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitDUkVBVEUgRlVO Q1RJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hLm5vbl9leHRfZnVuYygpIFJFVFVSTlMgaW50IExB TkdVQUdFIFNRTCBBUyAkJCBTRUxFQ1QgMSAkJDsKKy0tIEZhaWxzIGJlY2F1c2Ugb2YgdGhlIG5v bi1leHRlbnNpb24gb2JqZWN0CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7 CistLSBTdWNjZWVkcyBhbmQgY2FzY2FkZXMgdG8gdGhlIG5vbi1leHRlbnNpb24gb2JqZWN0CitE Uk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgQ0FTQ0FERTsKKworQ1JFQVRFIFND SEVNQSBhbHJlYWR5X2V4aXN0aW5nOworLS0gRmFpbHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcg c2NoZW1hIHRvIGJlIHByb3ZpZGVkCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3Nj aGVtYV9yZWxvY2F0YWJsZSBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKKy0tIEZhaWxzIGJlY2F1 c2Ugbm8gc2NoZW1hIGlzIHNldCBpbiBjb250cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVz dF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4 dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0NIRU1BIHRlc3Rfc2NoZW1hOworXGR4KyB0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKKy0tIEZhaWxzIGJlY2F1c2Ugc2NoZW1hIGFs cmVhZHkgZXhpc3RzCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9j YXRhYmxlIFNFVCBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBzb21lX290aGVyX25hbWU7 CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZQorRFJPUCBFWFRFTlNJT04g dGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlOworLS0gVmVyaWZ5IHRoZSBzY2hlbWEg d2FzIGRyb3BwZWQgd2l0aCB0aGUgZXh0ZW5zaW9uCitEUk9QIFNDSEVNQSBzb21lX290aGVyX25h bWU7CisKKy0tIFRlc3Qgb3duZWRfc2NoZW1hICsgc3VwZXJ1c2VyPWZhbHNlIGV4dGVuc2lvbgor Q1JFQVRFIFVTRVIgcmVncmVzc190ZXN0X2V4dF91c2VyOworLS0gVGhlIGRhdGFiYXNlIG5hbWUg ZGlmZmVycyBiZXR3ZWVuIG1lc29uIGFuZCBhdXRvY29uZiBidWlsZHMsIHNvIHdlIGNhbid0Cist LSBoYXJkY29kZSBpdCBpbiB0aGUgR1JBTlQvUkVWT0tFIHN0YXRlbWVudHMuCitETyAkJCBCRUdJ TiBFWEVDVVRFIGZvcm1hdCgnR1JBTlQgQ1JFQVRFIE9OIERBVEFCQVNFICVJIFRPIHJlZ3Jlc3Nf dGVzdF9leHRfdXNlcicsIGN1cnJlbnRfZGF0YWJhc2UoKSk7IEVORCAkJDsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc190ZXN0X2V4dF91c2VyOworQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXI7CitcZHgrIHRlc3RfZXh0X293bmVkX3Nj aGVtYV9ub3N1cGVydXNlcjsKKy0tIENoZWNrIHRoYXQgc2NoZW1hIGlzIG93bmVkIGJ5IHRoZSBj cmVhdGluZyB1c2VyIChub3QgYm9vdHN0cmFwIHN1cGVydXNlcikKK1NFTEVDVCBuLm5zcG5hbWUs IG4ubnNwb3duZXIgPSBjdXJyZW50X3VzZXI6OnJlZ3JvbGUgYXMgb3duZWRfYnlfY3VycmVudF91 c2VyCitGUk9NIHBnX25hbWVzcGFjZSBuCitXSEVSRSBuLm5zcG5hbWUgPSAndGVzdF9vd25lZF9z Y2hlbWFfbm9zdXBlcnVzZXInOworLS0gVXBncmFkZXMgc2hvdWxkIHdvcmsgZm9yIHN1cGVydXNl cj1mYWxzZSBleHRlbnNpb25zCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1h X25vc3VwZXJ1c2VyIFVQREFURSBUTyAnMS4xJzsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1h X25vc3VwZXJ1c2VyOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3Vw ZXJ1c2VyOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCistLSBUZXN0IG93bmVkX3Nj aGVtYSArIHRydXN0ZWQ9dHJ1ZSBleHRlbnNpb24KK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc190ZXN0X2V4dF91c2VyOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfdHJ1c3RlZDsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CistLSBD aGVjayB0aGF0IHNjaGVtYSBpcyBvd25lZCBieSBib290c3RyYXAgc3VwZXJ1c2VyIGZvciB0cnVz dGVkIGV4dGVuc2lvbiwKKy0tIGV2ZW4gdGhvdWdoIHRoZSBleHRlbnNpb24gaXMgb3duZWQgYnkg cmVncmVzc190ZXN0X2V4dF91c2VyCitTRUxFQ1Qgbi5uc3BuYW1lLCBuLm5zcG93bmVyID0gMTAg YXMgb3duZWRfYnlfYm9vdHN0cmFwX3N1cGVydXNlcgorRlJPTSBwZ19uYW1lc3BhY2UgbgorV0hF UkUgbi5uc3BuYW1lID0gJ3Rlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQnOworLS0gVXBkYXRpbmcg dHJ1c3RlZCBleHRlbnNpb25zIHNob3VsZCB3b3JrIG5vcm1hbGx5CitBTFRFUiBFWFRFTlNJT04g dGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYV90cnVzdGVkOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRE8gJCQgQkVH SU4gRVhFQ1VURSBmb3JtYXQoJ1JFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgJUkgRlJPTSByZWdy ZXNzX3Rlc3RfZXh0X3VzZXInLCBjdXJyZW50X2RhdGFiYXNlKCkpOyBFTkQgJCQ7CitEUk9QIFVT RVIgcmVncmVzc190ZXN0X2V4dF91c2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAtLTEuMS5zcWwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0t MS4xLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTg3YmUxYWM5 NjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0tMS4xLnNxbApAQCAtMCwwICsxLDMgQEAKKy0tIFRl c3QgZXh0ZW5zaW9uIHVwZ3JhZGUgc2NyaXB0CitDUkVBVEUgRlVOQ1RJT04gb3duZWQyKCkgUkVU VVJOUyB0ZXh0CisgIExBTkdVQUdFIFNRTCBBUyAkJCBTRUxFQ1QgJ293bmVkMic6OnRleHQgJCQ7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v d25lZF9zY2hlbWEtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjY3MmFiOGU2MDdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsCkBAIC0w LDAgKzEsMiBAQAorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMSgpIFJFVFVSTlMgdGV4dAorTEFOR1VB R0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTMxYzM4ZGFlZmQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25l ZF9zY2hlbWEuY29udHJvbApAQCAtMCwwICsxLDUgQEAKK2NvbW1lbnQgPSAnVGVzdCBleHRlbnNp b24gd2l0aCBhbiBvd25lZCBzY2hlbWEnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworcmVsb2Nh dGFibGUgPSBmYWxzZQorc2NoZW1hID0gdGVzdF9leHRfb3duZWRfc2NoZW1hCitvd25lZF9zY2hl bWEgPSB0cnVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC0tMS4xLnNxbCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl ci0tMS4wLS0xLjEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5l OWJhNzg4ZDc1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci0tMS4wLS0xLjEuc3FsCkBA IC0wLDAgKzEsNSBAQAorLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwg cmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhURU5T SU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlciBVUERBVEUgVE8gJzEuMSciIHRv IGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gb3duZWQyKCkgUkVUVVJO UyB0ZXh0CisgIExBTkdVQUdFIFNRTCBBUyAkJCBTRUxFQ1QgJ293bmVkMic6OnRleHQgJCQ7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25l ZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZjMjJjNzc3NTE5Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRf c2NoZW1hX25vc3VwZXJ1c2VyLS0xLjAuc3FsCkBAIC0wLDAgKzEsMyBAQAorLS0gVGVzdCBleHRl bnNpb24gd2l0aCBvd25lZCBzY2hlbWEgKHN1cGVydXNlcj1mYWxzZSkKK0NSRUFURSBGVU5DVElP TiBvd25lZDEoKSBSRVRVUk5TIHRleHQKKyAgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAnb3du ZWQxJzo6dGV4dCAkJDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci5jb250cm9sIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2Vy LmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNhYWQwOTYw OTk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv dGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLmNvbnRyb2wKQEAgLTAsMCArMSw1IEBA Citjb21tZW50ID0gJ1Rlc3QgZXh0ZW5zaW9uIHdpdGggb3duZWQgc2NoZW1hIChzdXBlcnVzZXI9 ZmFsc2UpJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK3N1cGVydXNlciA9IGZhbHNlCitvd25l ZF9zY2hlbWEgPSB0cnVlCitzY2hlbWEgPSAndGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIn CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v d25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJmY2NhZjRhZjgyCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsCkBAIC0wLDAgKzEsMiBAQAorQ1JFQVRFIEZV TkNUSU9OIG93bmVkMigpIFJFVFVSTlMgdGV4dAorTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAx ICQkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9l eHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2NkYTFlMTIzNDEKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v d25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1lbnQg PSAnVGVzdCBleHRlbnNpb24gd2l0aCBhbiBvd25lZCBzY2hlbWEnCitkZWZhdWx0X3ZlcnNpb24g PSAnMS4wJworcmVsb2NhdGFibGUgPSB0cnVlCitvd25lZF9zY2hlbWEgPSB0cnVlCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfdHJ1c3RlZC0tMS4wLS0xLjEuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC0tMS4xLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTg3YmUxYWM5NjcKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfdHJ1c3RlZC0tMS4wLS0xLjEuc3FsCkBAIC0wLDAgKzEsMyBAQAorLS0gVGVzdCBleHRlbnNp b24gdXBncmFkZSBzY3JpcHQKK0NSRUFURSBGVU5DVElPTiBvd25lZDIoKSBSRVRVUk5TIHRleHQK KyAgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAnb3duZWQyJzo6dGV4dCAkJDsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVt YV90cnVzdGVkLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjRlNTQxMGMxODRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQt LTEuMC5zcWwKQEAgLTAsMCArMSwzIEBACistLSBUZXN0IGV4dGVuc2lvbiB3aXRoIG93bmVkIHNj aGVtYSAodHJ1c3RlZD10cnVlKQorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMSgpIFJFVFVSTlMgdGV4 dAorICBMQU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNUICdvd25lZDEnOjp0ZXh0ICQkOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2No ZW1hX3RydXN0ZWQuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjI3N2IzZjE2MDNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQu Y29udHJvbApAQCAtMCwwICsxLDUgQEAKK2NvbW1lbnQgPSAnVGVzdCBleHRlbnNpb24gd2l0aCBv d25lZCBzY2hlbWEgKHRydXN0ZWQ9dHJ1ZSknCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJwordHJ1 c3RlZCA9IHRydWUKK293bmVkX3NjaGVtYSA9IHRydWUKK3NjaGVtYSA9ICd0ZXN0X293bmVkX3Nj aGVtYV90cnVzdGVkJwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAv dC8wMDFfYmFzZS5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2Uu cGwKaW5kZXggM2Q2NWNlNDQ5N2EuLjRkYjI5NTczMThkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfcGdfZHVtcC90LzAwMV9iYXNlLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwKQEAgLTM4MSw2ICszODEsMzggQEAgbXkgJXRlc3Rz ID0gKAogCQl9LAogCX0sCiAKKwknQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWEnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDEsCisJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBF WFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlc UUNSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgV0lU SCBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hO1xFCisJCQlcbi94bSwKKwkJbGlrZSA9PiB7 CisJCQklZnVsbF9ydW5zLAorCQkJc2NoZW1hX29ubHkgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2Rh dGEgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCWJpbmFyeV91cGdyYWRlID0+IDEsCisJ CQl3aXRoX2V4dGVuc2lvbiA9PiAxLAorCQkJd2l0aG91dF9leHRlbnNpb24gPT4gMQorCQl9CisJ fSwKKworCSdDUkVBVEUgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYScgPT4geworCQlyZWdl eHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTtcRQor CQkJXG4veG0sCisJCWxpa2UgPT4ge30sCisJfSwKKworCSdBTFRFUiBFWFRFTlNJT04gdGVzdF9l eHRfb3duZWRfc2NoZW1hIEFERCBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hJyA9PiB7CisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWEgQUREIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7XEUKKwkJCVxuL3htLAorCQlsaWtl ID0+IHt9LAorCX0sCisKIAknQ1JFQVRFIFJPTEUgcmVncmVzc19kdW1wX3Rlc3Rfcm9sZScgPT4g ewogCQljcmVhdGVfb3JkZXIgPT4gMSwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFJPTEUgcmVn cmVzc19kdW1wX3Rlc3Rfcm9sZTsnLAoKYmFzZS1jb21taXQ6IGE3OTM2NzdlNTdiYzI3YzY3NGNi OTRiMjMwMTY0YjJjMjhmNGNiYWUKLS0gCjIuNTMuMAoK --0d22d85e5afcb8475ac27fe5a992128daeb6a03e652ec3865ab6c42b99d4--