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 1vpx2J-001mhp-00 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Feb 2026 23:20:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpx1J-001WM4-0o for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Feb 2026 23:19:50 +0000 Received: from makus.postgresql.org ([72.32.157.229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vpx1I-001WLv-1J for pgsql-hackers@lists.postgresql.org; Tue, 10 Feb 2026 23:19:49 +0000 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpx1D-000000002JC-240n for pgsql-hackers@postgresql.org; Tue, 10 Feb 2026 23:19:48 +0000 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-b885e8c679bso646410366b.1 for ; Tue, 10 Feb 2026 15:19:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1770765582; x=1771370382; darn=postgresql.org; h=in-reply-to:references:mime-version:cc:from:to:subject:message-id :date:from:to:cc:subject:date:message-id:reply-to; bh=xq2maioXE8+eqfsJbREw7mcyY6aWZRB4aj7jDU1ArUs=; b=Oqr05TjTELVvthSFdacMv67LZjzMPz4RinxveUd802+bLAtFl2fChLoNcg8kNNAtsR NCOyOPKy8sT/jGeGoPJRaXwv0za++lEs8vofcdapXOlDnV+UBU02jR+9uF6RZs3C9+RH hbH+i+ocRh+RqRy2V/0Y8WPhin5lb5kM9NcrP8QbCDURpEGumv6g4MlcEfaznTb3BF9X o4cyhJET2awQiHanOy470TPZFnJ1cZN1aiL41C7oitWT1Ry/BFVX62rQoPtqvSySMdgd QaxAOYzff3YH+QRuOrEB0ADl6hjy/0JUySisfeX3UGvDIg0yjY1jegpUcV9ws7wy5oWW 9dzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770765582; x=1771370382; h=in-reply-to:references:mime-version:cc:from:to:subject:message-id :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xq2maioXE8+eqfsJbREw7mcyY6aWZRB4aj7jDU1ArUs=; b=RMoFTNPZXpgPt7l2t5ot0qv6LH3YnIPV0/PVZVVVEgsTIcSsbtKzTyJu8AzLDgyx27 KgfZTldIVMWMNDikT1r97uCgzXEwA9Pr39lu++qgvxbSoHWT0M9qJwz3ea+5G0RzZfwr 4Ws2VPCJZtXHajwdpz39Ave/tz9xvkg/WRyIzVKUZ2EggDFMP6cGWVzmL466XNFHEgYP 71vNhUNAZ1P6wU2XbnMk3SoZfla07tB0Uo9xGlYBRIboNGWmPsXeuAl+OjfnPLwUd16V 4/bthtf/pyRH7k7JlN87EOu3J/rfjV5WSk9yLWICvITe47sdAP7K4QeWoTjGAHesoASN 3miw== X-Forwarded-Encrypted: i=1; AJvYcCUf3WvHfFE4gYr8qEPWcFzFzIneNJ/kcoNO5SNYljNekrYMtreMxpCPe4Z/rUkDhOzS2IyAgXQPiWwxzQmv@postgresql.org X-Gm-Message-State: AOJu0YzNLi2+AWIBhJN3Z+6HIhNB0bzsYXsLzLaWY2CFX8YJCvsVPgL0 0EjEkvesKpwuRIFn90rMH4skw3pK/J8MzljF0KZod0IdUVWwzHeZBUx0G1S86vB6HcI= X-Gm-Gg: AZuq6aI53Ay1Ue5FgIMXHrdcRXIxPXA07z7gTEni3M352XmFmADmSMlOzaCZDs8Ugox 9ARKZa2m7HBidVk4w91PjJd56yLTX1DrGdxnl9vYMaVH6RuHgORlwYLc52gIvm+hhu8q6COgyNp lbgH0zKI3IKuLNXzOnxyN/zZOV6uMzwGvrwQq2Fi+m2/uF/SIp+peRctt+JB4KKGnB2r4CfPtWh ZrrQdB4br464ijK+CQROIzZVQDTO5ndBC34kke4mwttYLi8bJQk+8+8r31nygBIm7IahQTBGcLx pIVZGQDbp03ZC/dNKyM8YKIuPA3iBpCXp4jOydqJRUg6/1OdRUwM7J1jkYAIqBd5Wg6XvMJLTSE 40oaiCfecToPmGGDDpArX6iemrWPHYJ/wDNYmsDmk8L04tf3UswUerbi8BTj/kHoOB1XIKbQhgV bYYtkKMPnpzsL1GaeHYwwH/tE+mPtgbw2lLGlYxmx0Ly3gnsC2lLOiYKCrgQ== X-Received: by 2002:a17:907:3f09:b0:b8e:d162:2410 with SMTP id a640c23a62f3a-b8f6a99f0e0mr49891566b.17.1770765581913; Tue, 10 Feb 2026 15:19:41 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8f6ecadb3dsm6395066b.65.2026.02.10.15.19.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 10 Feb 2026 15:19:41 -0800 (PST) Content-Type: multipart/mixed; boundary=1ad9528f3ab6d58eabbc2943cbed7ca9847d17d403c06ae72e580b346164 Date: Wed, 11 Feb 2026 00:19:39 +0100 Message-Id: Subject: Re: Extension security improvement: Add support for extensions with an owned schema To: "Robert Haas" From: "Jelte Fennema-Nio" Cc: "Julien Rouhaud" , "Artem Gavrilov" , "Tomas Vondra" , "David G. Johnston" , "Jeff Davis" , "PostgreSQL-development" MIME-Version: 1.0 References: <585e996c-a5c6-4e61-acc4-d92b7a1458ea@vondra.me> In-Reply-To: X-TUID: 2c2J7U8yL3we List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --1ad9528f3ab6d58eabbc2943cbed7ca9847d17d403c06ae72e580b346164 Content-Type: multipart/alternative; boundary=a9756643e48cf2e1ed4755d1d339ec96abdf6168b3ad06539f16b7e0f204 --a9756643e48cf2e1ed4755d1d339ec96abdf6168b3ad06539f16b7e0f204 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Thu, 11 Sept 2025 at 16:52, Robert Haas wrote: > OK. Perhaps that needs some associated tests? Added now in v8, as well as a bunch of other tests. Including a test for trusted extensions, and a fix so that for trusted extensions the owned schema is owned by the bootstrap superuser. Changes made since v7 can be found in nocfbot.changes.diff. > To be honest, I'm kind of leaning at this point toward saying we > shouldn't impose any special restrictions here. If the DROP doesn't > cascade, then the worst thing that can happen is that you make it hard > for yourself to drop your own extension cleanly. I think letting the > superuser and the schema owner do things and other people not is too > weird -- it basically boils down to ignoring GRANT sometimes, and I > think users will find it confusing. I agree. I kept it like that. --a9756643e48cf2e1ed4755d1d339ec96abdf6168b3ad06539f16b7e0f204-- --1ad9528f3ab6d58eabbc2943cbed7ca9847d17d403c06ae72e580b346164 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v8-0001-Add-support-for-extensions-with-an-owned-schema.patch Content-Type: text/x-patch; charset=utf-8; name=v8-0001-Add-support-for-extensions-with-an-owned-schema.patch RnJvbSBmNGI4OGU1MGY5ZWJlMWYzNjk3NGM5MWI2NzIzMzQ1ZTQ3YTQzMTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDQgT2N0IDIwMjQgMjI6MzQ6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHY4 XSBBZGQgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucyB3aXRoIGFuIG93bmVkIHNjaGVtYQoKV3JpdGlu ZyB0aGUgc3FsIG1pZ3JhdGlvbiBzY3JpcHRzIHRoYXQgYXJlIHJ1biBieSBDUkVBVEUgRVhURU5T SU9OIGFuZApBTFRFUiBFWFRFTlNJT04gVVBEQVRFIGFyZSBzZWN1cml0eSBtaW5lZmllbGRzIGZv ciBleHRlbnNpb24gYXV0aG9ycy4KT25lIGJpZyByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzZWFy Y2hfcGF0aCBpcyBzZXQgdG8gdGhlIHNjaGVtYSBvZiB0aGUKZXh0ZW5zaW9uIHdoaWxlIHJ1bm5p bmcgdGhlc2Ugc2NyaXB0cywgYW5kIHRodXMgaWYgYSB1c2VyIHdpdGggbG93ZXIKcHJpdmlsZWdl cyBjYW4gY3JlYXRlIGZ1bmN0aW9ucyBvciBvcGVyYXRvcnMgaW4gdGhhdCBzY2hlbWEgdGhleSBj YW4gZG8KYWxsIGtpbmRzIG9mIHNlYXJjaF9wYXRoIGNvbmZ1c2lvbiBhdHRhY2tzIGlmIG5vdCBl dmVyeSBmdW5jdGlvbiBhbmQKb3BlcmF0b3IgdGhhdCBpcyB1c2VkIGluIHRoZSBzY3JpcHQgaXMg c2NoZW1hIHF1YWxpZmllZC4gV2hpbGUgZG9pbmcKc3VjaCBzY2hlbWEgcXVhbGlmaWNhdGlvbiBp cyBwb3NzaWJsZSwgaXQgcmVsaWVzIG9uIHRoZSBhdXRob3IgdG8gbmV2ZXIKbWFrZSBhIG1pc3Rh a2UgaW4gYW55IG9mIHRoZSBzcWwgZmlsZXMuIEFuZCBzYWRseSBodW1hbnMgaGF2ZSBhIHRlbmRl bmN5CnRvIG1ha2UgbWlzdGFrZXMuCgpUaGlzIHBhdGNoIGFkZHMgYSBuZXcgIm93bmVkX3NjaGVt YSIgb3B0aW9uIHRvIHRoZSBleHRlbnNpb24gY29udHJvbApmaWxlIHRoYXQgY2FuIGJlIHNldCB0 byB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBleHRlbnNpb24gd2FudHMgdG8Kb3duIHRoZSBz Y2hlbWEgaW4gd2hpY2ggaXQgaXMgaW5zdGFsbGVkLiBXaGF0IHRoYXQgbWVhbnMgaXMgdGhhdCB0 aGUKc2NoZW1hIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlIGNyZWF0aW5nIHRoZSBleHRlbnNpb24s IGFuZCB3aWxsIGJlCmNyZWF0ZWQgZHVyaW5nIGV4dGVuc2lvbiBjcmVhdGlvbi4gVGhpcyB0aHVz IGdpdmVzIHRoZSBleHRlbnNpb24gYXV0aG9yCmFuIGVhc3kgd2F5IHRvIHVzZSBhIHNhZmUgc2Vh cmNoX3BhdGgsIHdoaWxlIHN0aWxsIGFsbG93aW5nIGFsbCBvYmplY3RzCnRvIGJlIGdyb3VwZWQg dG9nZXRoZXIgaW4gYSBzY2hlbWEuIFRoZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGhhcyB0aGUKcGxl YXNhbnQgc2lkZSBlZmZlY3QgdGhhdCB0aGUgc2NoZW1hIHdpbGwgYmUgYXV0b21hdGljYWxseSBk cm9wcGVkIHdoZW4KdGhlIGV4dGVuc2lvbiBpcyBkcm9wcGVkLgotLS0KIGRvYy9zcmMvc2dtbC9l eHRlbmQuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKwogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCA0MjkgKysrKysrKysrKysrKy0tLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgICAgfCAgNDUgKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICA1NCArKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2V4dGVuc2lvbi5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9leHRlbnNpb24uaCAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlICAgICB8ICAxMyArLQogLi4uL2V4cGVj dGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQgICAgICAgICAgICAgIHwgMTU3ICsrKysrKysKIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkICB8ICAxMSArCiAuLi4vdGVz dF9leHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsICAgfCAgNzUgKysrCiAuLi4vdGVz dF9leHRfb3duZWRfc2NoZW1hLS0xLjAuc3FsICAgICAgICAgICAgfCAgIDIgKwogLi4uL3Rlc3Rf ZXh0X293bmVkX3NjaGVtYS5jb250cm9sICAgICAgICAgICAgIHwgICA1ICsKIC4uLnRlc3RfZXh0 X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbCB8ICAgMiArCiAuLi4vdGVzdF9leHRf b3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wgfCAgIDQgKwogc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFzZS5wbCAgIHwgIDMyICsrCiAxOCBmaWxlcyBjaGFuZ2Vk LCA3MzQgaW5zZXJ0aW9ucygrKSwgMTQzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS0t MS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9j YXRhYmxlLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZXh0ZW5k LnNnbWwKaW5kZXggNjNjNWVjNmQxZWIuLmRkZmI0ZWJmYmY1IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvZXh0ZW5kLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2V4dGVuZC5zZ21sCkBAIC04MTQs NiArODE0LDQwIEBAIFJFVFVSTlMgYW55Y29tcGF0aWJsZSBBUyAuLi4KICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImV4dGVu ZC1leHRlbnNpb25zLWZpbGVzLW93bmVkLXNjaGVtYSI+CisgICAgICA8dGVybT48dmFybmFtZT5v d25lZF9zY2hlbWE8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEFuIGV4dGVuc2lvbiBzaG91bGQg c2V0IDxmaXJzdHRlcm0+b3duZWRfc2NoZW1hPC9maXJzdHRlcm0+IHRvCisgICAgICAgIDxsaXRl cmFsPnRydWU8L2xpdGVyYWw+IGluIGl0cyBjb250cm9sIGZpbGUgaWYgdGhlIGV4dGVuc2lvbiB3 YW50cyBhCisgICAgICAgIGRlZGljYXRlZCBzY2hlbWEgZm9yIGl0cyBvYmplY3RzLiBTdWNoIGEg c2NoZW1hIHNob3VsZCBub3QgZXhpc3QgeWV0IGF0CisgICAgICAgIHRoZSB0aW1lIG9mIGV4dGVu c2lvbiBjcmVhdGlvbiwgYW5kIHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5CisgICAg ICAgIDxsaXRlcmFsPkNSRUFURSBFWFRFTlNJT048L2xpdGVyYWw+LiBUaGUgZGVmYXVsdCBpcwor ICAgICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4sIGkuZS4sIHRoZSBleHRlbnNpb24gY2Fu IGJlIGluc3RhbGxlZCBpbnRvIGFuCisgICAgICAgIGV4aXN0aW5nIHNjaGVtYS4KKyAgICAgICA8 L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIEhhdmluZyBhIHNjaGVtYSBvd25lZCBieSB0 aGUgZXh0ZW5zaW9uIGNhbiBtYWtlIGl0IG11Y2ggZWFzaWVyIHRvCisgICAgICAgIHJlYXNvbiBh Ym91dCBwb3NzaWJsZSA8bGl0ZXJhbD5zZWFyY2hfcGF0aDwvbGl0ZXJhbD4gaW5qZWN0aW9uIGF0 dGFja3MuCisgICAgICAgIEZvciBpbnN0YW5jZSB3aXRoIGFuIG93bmVkIHNjaGVtYSwgaXQgaXMg Z2VuZXJhbGx5IHNhZmUgdG8gc2V0IHRoZQorICAgICAgICA8bGl0ZXJhbD5zZWFyY2hfcGF0aDwv bGl0ZXJhbD4gb2YgYSA8bGl0ZXJhbD5TRUNVUklUWSBERUZJTkVSPC9saXRlcmFsPgorICAgICAg ICBmdW5jdGlvbiB0byB0aGUgc2NoZW1hIG9mIHRoZSBleHRlbnNpb24uIFdoaWxlIHdpdGhvdXQg YW4gb3duZWQgc2NoZW1hCisgICAgICAgIGl0IG1pZ2h0IG5vdCBiZSBzYWZlIHRvIGRvIHNvLCBi ZWNhdXNlIGEgbWFsaWNpb3VzIHVzZXIgY291bGQgaW5zZXJ0CisgICAgICAgIG9iamVjdHMgaW4g dGhhdCBzY2hlbWEgYW5kIHRodXMgPGxpbmsKKyAgICAgICAgbGlua2VuZD0ic3FsLWNyZWF0ZWZ1 bmN0aW9uLXNlY3VyaXR5Ij4gY2F1c2UgbWFsaWNpb3VzIHRvIGJlIGV4ZWN1dGVkCisgICAgICAg IGFzIHN1cGVydXNlcjwvbGluaz4uIFNpbWlsYXJseSwgaGF2aW5nIGFuIG93bmVkIHNjaGVtYSBj YW4gbWFrZSBpdCBzYWZlCisgICAgICAgIGJ5IGRlZmF1bHQgdG8gZXhlY3V0ZSBnZW5lcmFsLXB1 cnBvc2UgU1FMIGluIHRoZSBleHRlbnNpb24gc2NyaXB0LAorICAgICAgICBiZWNhdXNlIHRoZSBz ZWFyY2hfcGF0aCBub3cgb25seSBjb250YWlucyB0cnVzdGVkIHNjaGVtYXMuIFdpdGhvdXQgYW4K KyAgICAgICAgb3duZWQgc2NoZW1hIGl0J3MgPGxpbmsgbGlua2VuZD0iZXh0ZW5kLWV4dGVuc2lv bnMtc2VjdXJpdHktc2NyaXB0cyI+CisgICAgICAgIHJlY29tbWVuZGVkIHRvIG1hbnVhbGx5IGNo YW5nZSB0aGUgc2VhcmNoX3BhdGg8L2xpbms+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgQXBhcnQgZnJvbSB0aGUgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMsIGhhdmlu ZyBhbiBvd25lZCBzY2hlbWEgY2FuIGhlbHAKKyAgICAgICAgcHJldmVudCBuYW1pbmcgY29uZmxp Y3RzIGJldHdlZW4gb2JqZWN0cyBvZiBkaWZmZXJlbnQgZXh0ZW5zaW9ucy4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFy bGlzdGVudHJ5IGlkPSJleHRlbmQtZXh0ZW5zaW9ucy1maWxlcy1zY2hlbWEiPgogICAgICAgPHRl cm0+PHZhcm5hbWU+c2NoZW1hPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPik8L3Rlcm0+ CiAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9l eHRlbnNpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sCmlu ZGV4IDcxM2FiZDljNDk0Li5hYjEyNWQ1NjI2MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0 ZW5zaW9uLnNnbWwKQEAgLTEwNCw3ICsxMDQsMTEgQEAgQ1JFQVRFIEVYVEVOU0lPTiBbIElGIE5P VCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXh0ZW5zaW9uX25hbWUK ICAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHNjaGVtYSBpbiB3aGljaCB0 byBpbnN0YWxsIHRoZSBleHRlbnNpb24ncwogICAgICAgICBvYmplY3RzLCBnaXZlbiB0aGF0IHRo ZSBleHRlbnNpb24gYWxsb3dzIGl0cyBjb250ZW50cyB0byBiZQotICAgICAgICByZWxvY2F0ZWQu ICBUaGUgbmFtZWQgc2NoZW1hIG11c3QgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgcmVsb2NhdGVk LiBXaGV0aGVyIHRoaXMgc2NoZW1hIHNob3VsZCBhbHJlYWR5IGV4aXN0IG9yIG5vdCBkZXBlbmRz IG9uCisgICAgICAgIHRoZSB2YWx1ZSBvZiA8bGl0ZXJhbD5vd25lZF9zY2hlbWE8L2xpdGVyYWw+ IGluIHRoZSBleHRlbnNpb25zIGNvbnRyb2wKKyAgICAgICAgZmlsZTogSWYgaXQncyA8bGl0ZXJh bD50cnVlPC9saXRlcmFsPiwgdGhlIHNjaGVtYSBtdXN0CisgICAgICAgIDxlbXBoYXNpcz5ub3Q8 L2VtcGhhc2lzPiBleGlzdDsgaWYgaXQncyA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4gaXQKKyAg ICAgICAgbXVzdCBleGlzdC4KICAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgYW5kIHRoZSBleHRl bnNpb24ncyBjb250cm9sIGZpbGUgZG9lcyBub3Qgc3BlY2lmeSBhCiAgICAgICAgIHNjaGVtYSBl aXRoZXIsIHRoZSBjdXJyZW50IGRlZmF1bHQgb2JqZWN0IGNyZWF0aW9uIHNjaGVtYSBpcyB1c2Vk LgogICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggODFmMjQ2MTVk NTEuLjAzYjNkZTM1N2JkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtOTQsNiArOTQs OCBAQCB0eXBlZGVmIHN0cnVjdCBFeHRlbnNpb25Db250cm9sRmlsZQogCQkJCQkJCQkJICogTU9E VUxFX1BBVEhOQU1FICovCiAJY2hhcgkgICAqY29tbWVudDsJCS8qIGNvbW1lbnQsIGlmIGFueSAq LwogCWNoYXIJICAgKnNjaGVtYTsJCQkvKiB0YXJnZXQgc2NoZW1hIChhbGxvd2VkIGlmICFyZWxv Y2F0YWJsZSkgKi8KKwlib29sCQlvd25lZF9zY2hlbWE7CS8qIGlmIHRoZSBzY2hlbWEgc2hvdWxk IGJlIG93bmVkIGJ5IHRoZQorCQkJCQkJCQkgKiBleHRlbnNpb24gKi8KIAlib29sCQlyZWxvY2F0 YWJsZTsJLyogaXMgQUxURVIgRVhURU5TSU9OIFNFVCBTQ0hFTUEgc3VwcG9ydGVkPyAqLwogCWJv b2wJCXN1cGVydXNlcjsJCS8qIG11c3QgYmUgc3VwZXJ1c2VyIHRvIGluc3RhbGw/ICovCiAJYm9v bAkJdHJ1c3RlZDsJCS8qIGFsbG93IGJlY29taW5nIHN1cGVydXNlciBvbiB0aGUgZmx5PyAqLwpA QCAtNzkwLDYgKzc5MiwxNCBAQCBwYXJzZV9leHRlbnNpb25fY29udHJvbF9maWxlKEV4dGVuc2lv bkNvbnRyb2xGaWxlICpjb250cm9sLAogCQl7CiAJCQljb250cm9sLT5zY2hlbWEgPSBwc3RyZHVw KGl0ZW0tPnZhbHVlKTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoaXRlbS0+bmFtZSwgIm93bmVk X3NjaGVtYSIpID09IDApCisJCXsKKwkJCWlmICghcGFyc2VfYm9vbChpdGVtLT52YWx1ZSwgJmNv bnRyb2wtPm93bmVkX3NjaGVtYSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygicGFyYW1l dGVyIFwiJXNcIiByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUiLAorCQkJCQkJCQlpdGVtLT5uYW1l KSkpOworCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChpdGVtLT5uYW1lLCAicmVsb2NhdGFibGUiKSA9 PSAwKQogCQl7CiAJCQlpZiAoIXBhcnNlX2Jvb2woaXRlbS0+dmFsdWUsICZjb250cm9sLT5yZWxv Y2F0YWJsZSkpCkBAIC0xMjMzLDYgKzEyNDMsNDQgQEAgZXh0ZW5zaW9uX2lzX3RydXN0ZWQoRXh0 ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICog RW5mb3JjZSBzdXBlcnVzZXIgcmVxdWlyZW1lbnRzIGZvciBleHRlbnNpb24gb3BlcmF0aW9ucy4K KyAqCisgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHN3aXRjaCB0byBzdXBlcnVzZXIgZm9y IHRydXN0ZWQgZXh0ZW5zaW9ucy4KKyAqIFRocm93cyBhbiBlcnJvciBpZiBzdXBlcnVzZXIgaXMg cmVxdWlyZWQgYnV0IG5vdCBhdmFpbGFibGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQg b25seSBiZSBjYWxsZWQgYWZ0ZXIgY2hvb3NpbmcgdGhlIGFwcHJvcHJpYXRlCisgKiBjb250cm9s IGZpbGUgKGluY2x1ZGluZyBhbnkgc2Vjb25kYXJ5IGNvbnRyb2wgZmlsZXMgZm9yIHVwZGF0ZXMp LgorICovCitzdGF0aWMgYm9vbAorY2hlY2tfZXh0ZW5zaW9uX3N1cGVydXNlcl9yZXF1aXJlbWVu dHMoRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCisJCQkJCQkJCQkgICBjb25zdCBjaGFy ICpmcm9tX3ZlcnNpb24pCit7CisJaWYgKGNvbnRyb2wtPnN1cGVydXNlciAmJiAhc3VwZXJ1c2Vy KCkpCisJeworCQlpZiAoZXh0ZW5zaW9uX2lzX3RydXN0ZWQoY29udHJvbCkpCisJCQlyZXR1cm4g dHJ1ZTsKKwkJZWxzZSBpZiAoZnJvbV92ZXJzaW9uID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkg ZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byBjcmVhdGUgZXh0ZW5zaW9uIFwiJXNcIiIsCisJ CQkJCQkJY29udHJvbC0+bmFtZSksCisJCQkJCSBjb250cm9sLT50cnVzdGVkCisJCQkJCSA/IGVy cmhpbnQoIk11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGN1cnJlbnQgZGF0YWJhc2UgdG8g Y3JlYXRlIHRoaXMgZXh0ZW5zaW9uLiIpCisJCQkJCSA6IGVycmhpbnQoIk11c3QgYmUgc3VwZXJ1 c2VyIHRvIGNyZWF0ZSB0aGlzIGV4dGVuc2lvbi4iKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJ CQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byB1cGRhdGUgZXh0ZW5zaW9uIFwiJXNcIiIs CisJCQkJCQkJY29udHJvbC0+bmFtZSksCisJCQkJCSBjb250cm9sLT50cnVzdGVkCisJCQkJCSA/ IGVycmhpbnQoIk11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGN1cnJlbnQgZGF0YWJhc2Ug dG8gdXBkYXRlIHRoaXMgZXh0ZW5zaW9uLiIpCisJCQkJCSA6IGVycmhpbnQoIk11c3QgYmUgc3Vw ZXJ1c2VyIHRvIHVwZGF0ZSB0aGlzIGV4dGVuc2lvbi4iKSkpOworCX0KKworCXJldHVybiBmYWxz ZTsKK30KKwogLyoKICAqIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIHNjcmlwdCBmaWxlIGZvciBp bnN0YWxsaW5nIG9yIHVwZGF0aW5nIHRoZSBleHRlbnNpb24KICAqCkBAIC0xMjYxLDI3ICsxMzA5 LDcgQEAgZXhlY3V0ZV9leHRlbnNpb25fc2NyaXB0KE9pZCBleHRlbnNpb25PaWQsIEV4dGVuc2lv bkNvbnRyb2xGaWxlICpjb250cm9sLAogCSAqIGhlcmUgc28gdGhhdCB0aGUgY29udHJvbCBmbGFn cyBhcmUgY29ycmVjdGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmlnaHQKIAkgKiBzY3JpcHQocykg aWYgdGhleSBoYXBwZW4gdG8gYmUgc2V0IGluIHNlY29uZGFyeSBjb250cm9sIGZpbGVzLgogCSAq LwotCWlmIChjb250cm9sLT5zdXBlcnVzZXIgJiYgIXN1cGVydXNlcigpKQotCXsKLQkJaWYgKGV4 dGVuc2lvbl9pc190cnVzdGVkKGNvbnRyb2wpKQotCQkJc3dpdGNoX3RvX3N1cGVydXNlciA9IHRy dWU7Ci0JCWVsc2UgaWYgKGZyb21fdmVyc2lvbiA9PSBOVUxMKQotCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKLQkJCQkJIGVy cm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gY3JlYXRlIGV4dGVuc2lvbiBcIiVzXCIiLAotCQkJ CQkJCWNvbnRyb2wtPm5hbWUpLAotCQkJCQkgY29udHJvbC0+dHJ1c3RlZAotCQkJCQkgPyBlcnJo aW50KCJNdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBjdXJyZW50IGRhdGFiYXNlIHRvIGNy ZWF0ZSB0aGlzIGV4dGVuc2lvbi4iKQotCQkJCQkgOiBlcnJoaW50KCJNdXN0IGJlIHN1cGVydXNl ciB0byBjcmVhdGUgdGhpcyBleHRlbnNpb24uIikpKTsKLQkJZWxzZQotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKLQkJCQkJ IGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gdXBkYXRlIGV4dGVuc2lvbiBcIiVzXCIiLAot CQkJCQkJCWNvbnRyb2wtPm5hbWUpLAotCQkJCQkgY29udHJvbC0+dHJ1c3RlZAotCQkJCQkgPyBl cnJoaW50KCJNdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBjdXJyZW50IGRhdGFiYXNlIHRv IHVwZGF0ZSB0aGlzIGV4dGVuc2lvbi4iKQotCQkJCQkgOiBlcnJoaW50KCJNdXN0IGJlIHN1cGVy dXNlciB0byB1cGRhdGUgdGhpcyBleHRlbnNpb24uIikpKTsKLQl9CisJc3dpdGNoX3RvX3N1cGVy dXNlciA9IGNoZWNrX2V4dGVuc2lvbl9zdXBlcnVzZXJfcmVxdWlyZW1lbnRzKGNvbnRyb2wsIGZy b21fdmVyc2lvbik7CiAKIAlmaWxlbmFtZSA9IGdldF9leHRlbnNpb25fc2NyaXB0X2ZpbGVuYW1l KGNvbnRyb2wsIGZyb21fdmVyc2lvbiwgdmVyc2lvbik7CiAKQEAgLTE4MjAsNiArMTg0OCwxNjQg QEAgZmluZF9pbnN0YWxsX3BhdGgoTGlzdCAqZXZpX2xpc3QsIEV4dGVuc2lvblZlcnNpb25JbmZv ICpldmlfdGFyZ2V0LAogCXJldHVybiBldmlfc3RhcnQ7CiB9CiAKKy8qCisgKiBDcmVhdGUgYSBz Y2hlbWEgd2l0aCB0aGUgZ2l2ZW4gbmFtZSwgYXMgcGFydCBvZiBDUkVBVEUgRVhURU5TSU9OLgor ICovCitzdGF0aWMgT2lkCitDcmVhdGVTY2hlbWFGb3JFeHRlbnNpb24oY2hhciAqc2NoZW1hTmFt ZSkKK3sKKworCUNyZWF0ZVNjaGVtYVN0bXQgKmNzc3RtdCA9IG1ha2VOb2RlKENyZWF0ZVNjaGVt YVN0bXQpOworCisJY3NzdG10LT5zY2hlbWFuYW1lID0gc2NoZW1hTmFtZTsKKwljc3N0bXQtPmF1 dGhyb2xlID0gTlVMTDsJLyogd2lsbCBiZSBjcmVhdGVkIGJ5IGN1cnJlbnQgdXNlciAqLworCWNz c3RtdC0+c2NoZW1hRWx0cyA9IE5JTDsKKwljc3N0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsK KwlDcmVhdGVTY2hlbWFDb21tYW5kKGNzc3RtdCwgIihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBj b21tYW5kKSIsCisJCQkJCQktMSwgLTEpOworCisJLyoKKwkgKiBDcmVhdGVTY2hlbWFDb21tYW5k IGluY2x1ZGVzIENvbW1hbmRDb3VudGVySW5jcmVtZW50LCBzbyBuZXcgc2NoZW1hIGlzCisJICog bm93IHZpc2libGUuCisJICovCisJcmV0dXJuIGdldF9uYW1lc3BhY2Vfb2lkKHNjaGVtYU5hbWUs IGZhbHNlKTsKK30KKworLyoKKyAqIENyZWF0ZSBhbiBvd25lZCBzY2hlbWEgd2l0aCB0aGUgZ2l2 ZW4gbmFtZSwgYXMgcGFydCBvZiBDUkVBVEUgRVhURU5TSU9OLCBhbmQKKyAqIGZhaWxzIGlmIHRo ZSBzY2hlbWEgYWxyZWFkeSBleGlzdC4KKyAqLworc3RhdGljIE9pZAorQ3JlYXRlT3duZWRTY2hl bWFGb3JFeHRlbnNpb24oY2hhciAqc2NoZW1hTmFtZSkKK3sKKwkvKiBGaW5kIG9yIGNyZWF0ZSB0 aGUgc2NoZW1hIGluIGNhc2UgaXQgZG9lcyBub3QgZXhpc3QuICovCisJT2lkCQkJc2NoZW1hT2lk ID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgdHJ1ZSk7CisKKwlpZiAoT2lkSXNWYWxp ZChzY2hlbWFPaWQpKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0RVUExJQ0FURV9TQ0hFTUEpLAorCQkJCSBlcnJtc2coInNjaGVtYSBcIiVzXCIgYWxyZWFkeSBl eGlzdHMiLAorCQkJCQkJc2NoZW1hTmFtZSksCisJCQkJIGVycmhpbnQoIkRyb3Agc2NoZW1hIFwi JXNcIiBvciBzcGVjaWZ5IGFub3RoZXIgc2NoZW1hIHVzaW5nIENSRUFURSBFWFRFTlNJT04gLi4u IFNDSEVNQSAuLi4iLCBzY2hlbWFOYW1lKSkpOworCX0KKworCXJldHVybiBDcmVhdGVTY2hlbWFG b3JFeHRlbnNpb24oc2NoZW1hTmFtZSk7Cit9CisKKy8qCisgKiBHZXRzIG9yIGNyZWF0ZXMgdGhl IHNjaGVtYSB0aGFuIGFuIGV4dGVuc2lvbiBzaG91bGQgYmUgY3JlYXRlZCBpbi4KKyAqCisgKiBS ZXR1cm5zIHRoZSBPSUQgb2YgdGhlIHNjaGVtYSBhbmQgdXBkYXRlcyBzY2hlbWFOYW1lIHRvIHRo ZSBuYW1lIG9mIHRoZSBzY2hlbWEuCisgKi8KK3N0YXRpYyBPaWQKK0dldE9yQ3JlYXRlU2NoZW1h Rm9yRXh0ZW5zaW9uKGNoYXIgKipzY2hlbWFOYW1lLCBFeHRlbnNpb25Db250cm9sRmlsZSAqY29u dHJvbCwgYm9vbCBjYXNjYWRlKQoreworCS8qCisJICogVGhlIHNpbXBsZXN0IGNhc2UgaXMgd2hl biB0aGUgdXNlciBwcm92aWRlcyBhIHNjaGVtYSBuYW1lLgorCSAqLworCWlmICgqc2NoZW1hTmFt ZSkKKwl7CisJCU9pZAkJCXNjaGVtYU9pZDsKKworCQlpZiAoIWNvbnRyb2wtPm93bmVkX3NjaGVt YSkKKwkJeworCQkJLyoKKwkJCSAqIEZvciBub24tb3duZWQgc2NoZW1hcywgdGhpcyBzY2hlbWEg bXVzdCBhbHJlYWR5IGV4aXN0LiBXZSB3YW50CisJCQkgKiB0byBjaGVjayB0aGlzIG5vdywgc28g aXQgZmFpbHMgZXZlbiBpZiB3ZSBiYWlsIG91dCBvZiB0aGlzCisJCQkgKiBibG9jayBkdWUgdG8g dGhlIENBU0NBREUgbG9naWMuCisJCQkgKi8KKwkJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vf b2lkKCpzY2hlbWFOYW1lLCBmYWxzZSk7CisJCX0KKworCQlpZiAoY29udHJvbC0+c2NoZW1hICYm IHN0cmNtcChjb250cm9sLT5zY2hlbWEsICpzY2hlbWFOYW1lKSAhPSAwKQorCQl7CisJCQkvKgor CQkJICogVGhlIGV4dGVuc2lvbiBpcyBub3QgcmVsb2NhdGFibGUgYW5kIHRoZSBhdXRob3IgZ2F2 ZSB1cyBhCisJCQkgKiBzY2hlbWEgZm9yIGl0LgorCQkJICoKKwkJCSAqIFVubGVzcyBDQVNDQURF IHBhcmFtZXRlciB3YXMgZ2l2ZW4sIGl0J3MgYW4gZXJyb3IgdG8gZ2l2ZSBhCisJCQkgKiBzY2hl bWEgZGlmZmVyZW50IGZyb20gY29udHJvbC0+c2NoZW1hIGlmIGNvbnRyb2wtPnNjaGVtYSBpcwor CQkJICogc3BlY2lmaWVkLgorCQkJICovCisJCQlpZiAoIWNhc2NhZGUpCisJCQl7CisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJCSBlcnJtc2coImV4dGVuc2lvbiBcIiVzXCIgbXVzdCBiZSBpbnN0YWxsZWQgaW4g c2NoZW1hIFwiJXNcIiIsCisJCQkJCQkJCWNvbnRyb2wtPm5hbWUsCisJCQkJCQkJCWNvbnRyb2wt PnNjaGVtYSksCisJCQkJCQkgZXJyaGludCgiRG8gbm90IHNwZWNpZnkgU0NIRU1BIHdoZW4gcnVu bmluZyBDUkVBVEUgRVhURU5TSU9OIGZvciBleHRlbnNpb24gXCIlc1wiIiwgY29udHJvbC0+bmFt ZSkpKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIElmIHRoZSBzY2hlbWEgbWlzbWF0Y2hlcyBhbmQg Q0FTQ0FERSB3YXMgZ2l2ZW4sIHdlIHByZXRlbmQgdGhlCisJCQkgKiB1c2VyIGRpZCBub3Qgc3Bl Y2lmeSBhIHNjaGVtYSBhbmQgdXNlIHRoZSBub3JtYWwgbG9naWMgYmVsb3cgdG8KKwkJCSAqIGdl dCBvciBjcmVhdGUgdGhlIHNjaGVtYSBmcm9tIHRoZSBjb250cm9sIGZpbGUuCisJCQkgKi8KKwkJ fQorCQllbHNlIGlmIChjb250cm9sLT5vd25lZF9zY2hlbWEpCisJCXsKKwkJCXJldHVybiBDcmVh dGVPd25lZFNjaGVtYUZvckV4dGVuc2lvbigqc2NoZW1hTmFtZSk7CisJCX0KKwkJZWxzZQorCQl7 CisJCQlyZXR1cm4gc2NoZW1hT2lkOworCQl9CisJfQorCisJaWYgKGNvbnRyb2wtPnNjaGVtYSkK Kwl7CisJCU9pZAkJCXNjaGVtYU9pZDsKKworCQkqc2NoZW1hTmFtZSA9IGNvbnRyb2wtPnNjaGVt YTsKKworCQlpZiAoY29udHJvbC0+b3duZWRfc2NoZW1hKQorCQl7CisJCQlyZXR1cm4gQ3JlYXRl T3duZWRTY2hlbWFGb3JFeHRlbnNpb24oY29udHJvbC0+c2NoZW1hKTsKKwkJfQorCisJCS8qIEZp bmQgb3IgY3JlYXRlIHRoZSBzY2hlbWEgaW4gY2FzZSBpdCBkb2VzIG5vdCBleGlzdC4gKi8KKwkJ c2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoY29udHJvbC0+c2NoZW1hLCB0cnVlKTsKKwkJ aWYgKE9pZElzVmFsaWQoc2NoZW1hT2lkKSkKKwkJeworCQkJcmV0dXJuIHNjaGVtYU9pZDsKKwkJ fQorCQlyZXR1cm4gQ3JlYXRlU2NoZW1hRm9yRXh0ZW5zaW9uKGNvbnRyb2wtPnNjaGVtYSk7CisJ fQorCisJaWYgKGNvbnRyb2wtPm93bmVkX3NjaGVtYSkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJCQkgZXJybXNnKCJubyBz Y2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gY3JlYXRlIGluIikpKTsKKwl9CisKKwl7CisJCS8q CisJCSAqIE5laXRoZXIgdXNlciBub3IgYXV0aG9yIG9mIHRoZSBleHRlbnNpb24gc3BlY2lmaWVk IHNjaGVtYTsgdXNlIHRoZQorCQkgKiBjdXJyZW50IGRlZmF1bHQgY3JlYXRpb24gbmFtZXNwYWNl LCB3aGljaCBpcyB0aGUgZmlyc3QgZXhwbGljaXQKKwkJICogZW50cnkgaW4gdGhlIHNlYXJjaF9w YXRoLgorCQkgKi8KKwkJTGlzdAkgICAqc2VhcmNoX3BhdGggPSBmZXRjaF9zZWFyY2hfcGF0aChm YWxzZSk7CisJCU9pZAkJCXNjaGVtYU9pZDsKKworCQlpZiAoc2VhcmNoX3BhdGggPT0gTklMKSAv KiBub3RoaW5nIHZhbGlkIGluIHNlYXJjaF9wYXRoPyAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJCQkJIGVycm1zZygibm8g c2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7CisJCXNjaGVtYU9pZCA9 IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7CisJCSpzY2hlbWFOYW1lID0gZ2V0X25hbWVzcGFj ZV9uYW1lKHNjaGVtYU9pZCk7CisJCWlmICgqc2NoZW1hTmFtZSA9PSBOVUxMKQkvKiByZWNlbnRs eS1kZWxldGVkIG5hbWVzcGFjZT8gKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCisJCQkJCSBlcnJtc2coIm5vIHNjaGVtYSBoYXMg YmVlbiBzZWxlY3RlZCB0byBjcmVhdGUgaW4iKSkpOworCisJCWxpc3RfZnJlZShzZWFyY2hfcGF0 aCk7CisJCXJldHVybiBzY2hlbWFPaWQ7CisJfQorfQorCiAvKgogICogQ1JFQVRFIEVYVEVOU0lP TiB3b3JrZXIKICAqCkBAIC0xODQ5LDYgKzIwMzUsOSBAQCBDcmVhdGVFeHRlbnNpb25JbnRlcm5h bChjaGFyICpleHRlbnNpb25OYW1lLAogCU9pZAkJCWV4dGVuc2lvbk9pZDsKIAlPYmplY3RBZGRy ZXNzIGFkZHJlc3M7CiAJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJc3dpdGNoX3RvX3N1cGVydXNl ciA9IGZhbHNlOworCU9pZAkJCXNhdmVfdXNlcmlkID0gMDsKKwlpbnQJCQlzYXZlX3NlY19jb250 ZXh0ID0gMDsKIAogCS8qCiAJICogUmVhZCB0aGUgcHJpbWFyeSBjb250cm9sIGZpbGUuICBOb3Rl IHdlIGFzc3VtZSB0aGF0IGl0IGRvZXMgbm90IGNvbnRhaW4KQEAgLTE5MTcsNzcgKzIxMDYsMjUg QEAgQ3JlYXRlRXh0ZW5zaW9uSW50ZXJuYWwoY2hhciAqZXh0ZW5zaW9uTmFtZSwKIAljb250cm9s ID0gcmVhZF9leHRlbnNpb25fYXV4X2NvbnRyb2xfZmlsZShwY29udHJvbCwgdmVyc2lvbk5hbWUp OwogCiAJLyoKLQkgKiBEZXRlcm1pbmUgdGhlIHRhcmdldCBzY2hlbWEgdG8gaW5zdGFsbCB0aGUg ZXh0ZW5zaW9uIGludG8KKwkgKiBGb3IgdHJ1c3RlZCBleHRlbnNpb25zIHdpdGggb3duZWQgc2No ZW1hcywgd2UgbmVlZCB0byBjcmVhdGUgdGhlIHNjaGVtYQorCSAqIGFzIHN1cGVydXNlciB0byBl bnN1cmUgcHJvcGVyIG93bmVyc2hpcC4KIAkgKi8KLQlpZiAoc2NoZW1hTmFtZSkKLQl7Ci0JCS8q IElmIHRoZSB1c2VyIGlzIGdpdmluZyB1cyB0aGUgc2NoZW1hIG5hbWUsIGl0IG11c3QgZXhpc3Qg YWxyZWFkeS4gKi8KLQkJc2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwg ZmFsc2UpOwotCX0KLQotCWlmIChjb250cm9sLT5zY2hlbWEgIT0gTlVMTCkKKwlpZiAoY29udHJv bC0+b3duZWRfc2NoZW1hKQogCXsKLQkJLyoKLQkJICogVGhlIGV4dGVuc2lvbiBpcyBub3QgcmVs b2NhdGFibGUgYW5kIHRoZSBhdXRob3IgZ2F2ZSB1cyBhIHNjaGVtYQotCQkgKiBmb3IgaXQuCi0J CSAqCi0JCSAqIFVubGVzcyBDQVNDQURFIHBhcmFtZXRlciB3YXMgZ2l2ZW4sIGl0J3MgYW4gZXJy b3IgdG8gZ2l2ZSBhIHNjaGVtYQotCQkgKiBkaWZmZXJlbnQgZnJvbSBjb250cm9sLT5zY2hlbWEg aWYgY29udHJvbC0+c2NoZW1hIGlzIHNwZWNpZmllZC4KLQkJICovCi0JCWlmIChzY2hlbWFOYW1l ICYmIHN0cmNtcChjb250cm9sLT5zY2hlbWEsIHNjaGVtYU5hbWUpICE9IDAgJiYKLQkJCSFjYXNj YWRlKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJleHRlbnNpb24gXCIlc1wiIG11c3QgYmUgaW5z dGFsbGVkIGluIHNjaGVtYSBcIiVzXCIiLAotCQkJCQkJCWNvbnRyb2wtPm5hbWUsCi0JCQkJCQkJ Y29udHJvbC0+c2NoZW1hKSkpOwotCi0JCS8qIEFsd2F5cyB1c2UgdGhlIHNjaGVtYSBmcm9tIGNv bnRyb2wgZmlsZSBmb3IgY3VycmVudCBleHRlbnNpb24uICovCi0JCXNjaGVtYU5hbWUgPSBjb250 cm9sLT5zY2hlbWE7Ci0KLQkJLyogRmluZCBvciBjcmVhdGUgdGhlIHNjaGVtYSBpbiBjYXNlIGl0 IGRvZXMgbm90IGV4aXN0LiAqLwotCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hl bWFOYW1lLCB0cnVlKTsKLQotCQlpZiAoIU9pZElzVmFsaWQoc2NoZW1hT2lkKSkKKwkJc3dpdGNo X3RvX3N1cGVydXNlciA9IGNoZWNrX2V4dGVuc2lvbl9zdXBlcnVzZXJfcmVxdWlyZW1lbnRzKGNv bnRyb2wsIE5VTEwpOworCQlpZiAoc3dpdGNoX3RvX3N1cGVydXNlcikKIAkJewotCQkJQ3JlYXRl U2NoZW1hU3RtdCAqY3NzdG10ID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hU3RtdCk7Ci0KLQkJCWNz c3RtdC0+c2NoZW1hbmFtZSA9IHNjaGVtYU5hbWU7Ci0JCQljc3N0bXQtPmF1dGhyb2xlID0gTlVM TDsJLyogd2lsbCBiZSBjcmVhdGVkIGJ5IGN1cnJlbnQgdXNlciAqLwotCQkJY3NzdG10LT5zY2hl bWFFbHRzID0gTklMOwotCQkJY3NzdG10LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7Ci0JCQlDcmVh dGVTY2hlbWFDb21tYW5kKGNzc3RtdCwgIihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5k KSIsCi0JCQkJCQkJCS0xLCAtMSk7Ci0KLQkJCS8qCi0JCQkgKiBDcmVhdGVTY2hlbWFDb21tYW5k IGluY2x1ZGVzIENvbW1hbmRDb3VudGVySW5jcmVtZW50LCBzbyBuZXcKLQkJCSAqIHNjaGVtYSBp cyBub3cgdmlzaWJsZS4KLQkJCSAqLwotCQkJc2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQo c2NoZW1hTmFtZSwgZmFsc2UpOworCQkJR2V0VXNlcklkQW5kU2VjQ29udGV4dCgmc2F2ZV91c2Vy aWQsICZzYXZlX3NlY19jb250ZXh0KTsKKwkJCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoQk9PVFNU UkFQX1NVUEVSVVNFUklELAorCQkJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlf TE9DQUxfVVNFUklEX0NIQU5HRSk7CiAJCX0KIAl9Ci0JZWxzZSBpZiAoIU9pZElzVmFsaWQoc2No ZW1hT2lkKSkKLQl7Ci0JCS8qCi0JCSAqIE5laXRoZXIgdXNlciBub3IgYXV0aG9yIG9mIHRoZSBl eHRlbnNpb24gc3BlY2lmaWVkIHNjaGVtYTsgdXNlIHRoZQotCQkgKiBjdXJyZW50IGRlZmF1bHQg Y3JlYXRpb24gbmFtZXNwYWNlLCB3aGljaCBpcyB0aGUgZmlyc3QgZXhwbGljaXQKLQkJICogZW50 cnkgaW4gdGhlIHNlYXJjaF9wYXRoLgotCQkgKi8KLQkJTGlzdAkgICAqc2VhcmNoX3BhdGggPSBm ZXRjaF9zZWFyY2hfcGF0aChmYWxzZSk7CiAKLQkJaWYgKHNlYXJjaF9wYXRoID09IE5JTCkgLyog bm90aGluZyB2YWxpZCBpbiBzZWFyY2hfcGF0aD8gKi8KLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCi0JCQkJCSBlcnJtc2coIm5vIHNj aGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVhdGUgaW4iKSkpOwotCQlzY2hlbWFPaWQgPSBs aW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOwotCQlzY2hlbWFOYW1lID0gZ2V0X25hbWVzcGFjZV9u YW1lKHNjaGVtYU9pZCk7Ci0JCWlmIChzY2hlbWFOYW1lID09IE5VTEwpIC8qIHJlY2VudGx5LWRl bGV0ZWQgbmFtZXNwYWNlPyAqLwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfU0NIRU1BKSwKLQkJCQkJIGVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVu IHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7CisJc2NoZW1hT2lkID0gR2V0T3JDcmVhdGVTY2hl bWFGb3JFeHRlbnNpb24oJnNjaGVtYU5hbWUsIGNvbnRyb2wsIGNhc2NhZGUpOwogCi0JCWxpc3Rf ZnJlZShzZWFyY2hfcGF0aCk7Ci0JfQorCS8qIFJlc3RvcmUgYXV0aGVudGljYXRpb24gc3RhdGUg YWZ0ZXIgc2NoZW1hIGNyZWF0aW9uIGlmIG5lZWRlZCAqLworCWlmIChzd2l0Y2hfdG9fc3VwZXJ1 c2VyKQorCQlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250 ZXh0KTsKIAogCS8qCiAJICogTWFrZSBub3RlIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBoYXMg YmVlbiBhY2Nlc3NlZCBpbiB0aGlzCkBAIC0yMDMzLDYgKzIxNzAsNyBAQCBDcmVhdGVFeHRlbnNp b25JbnRlcm5hbChjaGFyICpleHRlbnNpb25OYW1lLAogCSAqLwogCWFkZHJlc3MgPSBJbnNlcnRF eHRlbnNpb25UdXBsZShjb250cm9sLT5uYW1lLCBleHRvd25lciwKIAkJCQkJCQkJICAgc2NoZW1h T2lkLCBjb250cm9sLT5yZWxvY2F0YWJsZSwKKwkJCQkJCQkJICAgY29udHJvbC0+b3duZWRfc2No ZW1hLAogCQkJCQkJCQkgICB2ZXJzaW9uTmFtZSwKIAkJCQkJCQkJICAgUG9pbnRlckdldERhdHVt KE5VTEwpLAogCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oTlVMTCksCkBAIC0yMjM4LDcgKzIz NzYsOCBAQCBDcmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVFeHRlbnNp b25TdG10ICpzdG10KQogICovCiBPYmplY3RBZGRyZXNzCiBJbnNlcnRFeHRlbnNpb25UdXBsZShj b25zdCBjaGFyICpleHROYW1lLCBPaWQgZXh0T3duZXIsCi0JCQkJCSBPaWQgc2NoZW1hT2lkLCBi b29sIHJlbG9jYXRhYmxlLCBjb25zdCBjaGFyICpleHRWZXJzaW9uLAorCQkJCQkgT2lkIHNjaGVt YU9pZCwgYm9vbCByZWxvY2F0YWJsZSwgYm9vbCBvd25lZFNjaGVtYSwKKwkJCQkJIGNvbnN0IGNo YXIgKmV4dFZlcnNpb24sCiAJCQkJCSBEYXR1bSBleHRDb25maWcsIERhdHVtIGV4dENvbmRpdGlv biwKIAkJCQkJIExpc3QgKnJlcXVpcmVkRXh0ZW5zaW9ucykKIHsKQEAgLTIyNjgsNiArMjQwNyw3 IEBAIEluc2VydEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIgKmV4dE5hbWUsIE9pZCBleHRPd25l ciwKIAl2YWx1ZXNbQW51bV9wZ19leHRlbnNpb25fZXh0b3duZXIgLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0oZXh0T3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHRuYW1lc3BhY2Ug LSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc2NoZW1hT2lkKTsKIAl2YWx1ZXNbQW51bV9wZ19leHRl bnNpb25fZXh0cmVsb2NhdGFibGUgLSAxXSA9IEJvb2xHZXREYXR1bShyZWxvY2F0YWJsZSk7CisJ dmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dG93bmVkc2NoZW1hIC0gMV0gPSBCb29sR2V0RGF0 dW0ob3duZWRTY2hlbWEpOwogCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHR2ZXJzaW9uIC0g MV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGV4dFZlcnNpb24pOwogCiAJaWYgKGV4dENvbmZpZyA9 PSBQb2ludGVyR2V0RGF0dW0oTlVMTCkpCkBAIC0yMzEyLDYgKzI0NTIsMTcgQEAgSW5zZXJ0RXh0 ZW5zaW9uVHVwbGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAogCXJlY29yZF9v YmplY3RfYWRkcmVzc19kZXBlbmRlbmNpZXMoJm15c2VsZiwgcmVmb2JqcywgREVQRU5ERU5DWV9O T1JNQUwpOwogCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhyZWZvYmpzKTsKIAorCWlmIChvd25lZFNj aGVtYSkKKwl7CisJCU9iamVjdEFkZHJlc3Mgc2NoZW1hQWRkcmVzcyA9IHsKKwkJCS5jbGFzc0lk ID0gTmFtZXNwYWNlUmVsYXRpb25JZCwKKwkJCS5vYmplY3RJZCA9IHNjaGVtYU9pZCwKKwkJfTsK KworCQlyZWNvcmREZXBlbmRlbmN5T24oJnNjaGVtYUFkZHJlc3MsICZteXNlbGYsIERFUEVOREVO Q1lfRVhURU5TSU9OKTsKKwl9CisKKwogCS8qIFBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGV4 dGVuc2lvbiAqLwogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKEV4dGVuc2lvblJlbGF0aW9u SWQsIGV4dGVuc2lvbk9pZCwgMCk7CiAKQEAgLTMyNDYsMTIgKzMzOTcsMTYgQEAgZXh0ZW5zaW9u X2NvbmZpZ19yZW1vdmUoT2lkIGV4dGVuc2lvbm9pZCwgT2lkIHRhYmxlb2lkKQogCiAvKgogICog RXhlY3V0ZSBBTFRFUiBFWFRFTlNJT04gU0VUIFNDSEVNQQorICoKKyAqIEZvciBvd25lZCBzY2hl bWFzLCB0aGlzIGJvaWxzIGRvd24gdG8gY2hhbmdpbmcgdGhlIG5hbWUgb2YgaXRzIHNjaGVtYS4g Rm9yCisgKiBub24tb3duZWQgc2NoZW1hcyB0aGlzIHJlcXVpcmVzIG1vdmluZyBhbGwgdGhlIG1l bWJlciBvYmplY3RzIGludG8gdGhlIG5ldworICogc2NoZW1hLgogICovCiBPYmplY3RBZGRyZXNz CiBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFyICpleHRlbnNpb25OYW1lLCBjb25z dCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqb2xkc2NoZW1hKQogewogCU9pZAkJCWV4dGVuc2lvbk9p ZDsKLQlPaWQJCQluc3BPaWQ7CisJT2lkCQkJbnNwT2lkID0gSW52YWxpZE9pZDsKIAlPaWQJCQlv bGROc3BPaWQ7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlSZWxhdGlvbglleHRSZWw7CkBAIC0z MjY0LDExICszNDE5LDEwIEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4 dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJSGVhcFR1cGxlCWRl cFR1cDsKIAlPYmplY3RBZGRyZXNzZXMgKm9ianNNb3ZlZDsKIAlPYmplY3RBZGRyZXNzIGV4dEFk ZHI7CisJYm9vbAkJb3duZWRTY2hlbWE7CiAKIAlleHRlbnNpb25PaWQgPSBnZXRfZXh0ZW5zaW9u X29pZChleHRlbnNpb25OYW1lLCBmYWxzZSk7CiAKLQluc3BPaWQgPSBMb29rdXBDcmVhdGlvbk5h bWVzcGFjZShuZXdzY2hlbWEpOwotCiAJLyoKIAkgKiBQZXJtaXNzaW9uIGNoZWNrOiBtdXN0IG93 biBleHRlbnNpb24uICBOb3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHRvCiAJICogY2hlY2sgb3du ZXJzaGlwIG9mIHRoZSBpbmRpdmlkdWFsIG1lbWJlciBvYmplY3RzIC4uLgpAQCAtMzI3NywyMiAr MzQzMSw2IEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5h bWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENI RUNLX05PVF9PV05FUiwgT0JKRUNUX0VYVEVOU0lPTiwKIAkJCQkJICAgZXh0ZW5zaW9uTmFtZSk7 CiAKLQkvKiBQZXJtaXNzaW9uIGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24gcmlnaHRzIGluIHRh cmdldCBuYW1lc3BhY2UgKi8KLQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soTmFtZXNwYWNl UmVsYXRpb25JZCwgbnNwT2lkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7Ci0JaWYgKGFjbHJl c3VsdCAhPSBBQ0xDSEVDS19PSykKLQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1Rf U0NIRU1BLCBuZXdzY2hlbWEpOwotCi0JLyoKLQkgKiBJZiB0aGUgc2NoZW1hIGlzIGN1cnJlbnRs eSBhIG1lbWJlciBvZiB0aGUgZXh0ZW5zaW9uLCBkaXNhbGxvdyBtb3ZpbmcKLQkgKiB0aGUgZXh0 ZW5zaW9uIGludG8gdGhlIHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeSBs b29wLgotCSAqLwotCWlmIChnZXRFeHRlbnNpb25PZk9iamVjdChOYW1lc3BhY2VSZWxhdGlvbklk LCBuc3BPaWQpID09IGV4dGVuc2lvbk9pZCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkgZXJybXNn KCJjYW5ub3QgbW92ZSBleHRlbnNpb24gXCIlc1wiIGludG8gc2NoZW1hIFwiJXNcIiAiCi0JCQkJ CQkiYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIGNvbnRhaW5zIHRoZSBzY2hlbWEiLAotCQkJCQkJZXh0 ZW5zaW9uTmFtZSwgbmV3c2NoZW1hKSkpOwotCiAJLyogTG9jYXRlIHRoZSBwZ19leHRlbnNpb24g dHVwbGUgKi8KIAlleHRSZWwgPSB0YWJsZV9vcGVuKEV4dGVuc2lvblJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOwogCkBAIC0zMzE2LDE0ICszNDU0LDQzIEBAIEFsdGVyRXh0ZW5zaW9uTmFt ZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwg T2lkICpvCiAKIAlzeXN0YWJsZV9lbmRzY2FuKGV4dFNjYW4pOwogCisJb3duZWRTY2hlbWEgPSBl eHRGb3JtLT5leHRvd25lZHNjaGVtYTsKKwogCS8qCi0JICogSWYgdGhlIGV4dGVuc2lvbiBpcyBh bHJlYWR5IGluIHRoZSB0YXJnZXQgc2NoZW1hLCBqdXN0IHNpbGVudGx5IGRvCi0JICogbm90aGlu Zy4KKwkgKiBGb3Igbm9uLW93bmVkIHNjaGVtYXMsIHdlIHNob3VsZCBub3cgZXZhbHVhdGUgaWYg dGhlIHRhcmdldCBzY2hlbWEgaXMgYQorCSAqIHZhbGlkIHRhcmdldC4gRm9yIG93bmVkIHNjaGVt YXMsIG5vIHN1Y2ggY2hlY2tzIGFyZSBuZWVkZWQsIGJlY2F1c2UKKwkgKiB3ZSdsbCBzaW1wbHkg cmVuYW1lIHRoZSBleGlzdGluZyBzY2hlbWEuCiAJICovCi0JaWYgKGV4dEZvcm0tPmV4dG5hbWVz cGFjZSA9PSBuc3BPaWQpCisJaWYgKCFvd25lZFNjaGVtYSkKIAl7Ci0JCXRhYmxlX2Nsb3NlKGV4 dFJlbCwgUm93RXhjbHVzaXZlTG9jayk7Ci0JCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsK KwkJbnNwT2lkID0gTG9va3VwQ3JlYXRpb25OYW1lc3BhY2UobmV3c2NoZW1hKTsKKworCQkvKiBQ ZXJtaXNzaW9uIGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24gcmlnaHRzIGluIHRhcmdldCBuYW1l c3BhY2UgKi8KKwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKE5hbWVzcGFjZVJlbGF0aW9u SWQsIG5zcE9pZCwgR2V0VXNlcklkKCksIEFDTF9DUkVBVEUpOworCQlpZiAoYWNscmVzdWx0ICE9 IEFDTENIRUNLX09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfU0NIRU1B LCBuZXdzY2hlbWEpOworCisJCS8qCisJCSAqIElmIHRoZSBzY2hlbWEgaXMgY3VycmVudGx5IGEg bWVtYmVyIG9mIHRoZSBleHRlbnNpb24sIGRpc2FsbG93CisJCSAqIG1vdmluZyB0aGUgZXh0ZW5z aW9uIGludG8gdGhlIHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEKKwkJICogZGVwZW5kZW5j eSBsb29wLgorCQkgKi8KKwkJaWYgKGdldEV4dGVuc2lvbk9mT2JqZWN0KE5hbWVzcGFjZVJlbGF0 aW9uSWQsIG5zcE9pZCkgPT0gZXh0ZW5zaW9uT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ CSBlcnJtc2coImNhbm5vdCBtb3ZlIGV4dGVuc2lvbiBcIiVzXCIgaW50byBzY2hlbWEgXCIlc1wi ICIKKwkJCQkJCQkiYmVjYXVzZSB0aGUgZXh0ZW5zaW9uIGNvbnRhaW5zIHRoZSBzY2hlbWEiLAor CQkJCQkJCWV4dGVuc2lvbk5hbWUsIG5ld3NjaGVtYSkpKTsKKworCQkvKgorCQkgKiBJZiB0aGUg ZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gdGhlIHRhcmdldCBzY2hlbWEsIGp1c3Qgc2lsZW50bHkg ZG8KKwkJICogbm90aGluZy4KKwkJICovCisJCWlmIChleHRGb3JtLT5leHRuYW1lc3BhY2UgPT0g bnNwT2lkKQorCQl7CisJCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CQkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCQl9CiAJfQogCiAJLyogQ2hlY2sgZXh0 ZW5zaW9uIGlzIHN1cHBvc2VkIHRvIGJlIHJlbG9jYXRhYmxlICovCkBAIC0zMzk2LDYgKzM1NjMs MTMgQEAgQWx0ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29uc3QgY2hhciAqZXh0ZW5zaW9uTmFtZSwg Y29uc3QgY2hhciAqbmV3c2NoZW1hLCBPaWQgKm8KIAkJCX0KIAkJfQogCisJCS8qCisJCSAqIFdl IGRvbid0IGFjdHVhbGx5IG1vdmUgYW55IG9iamVjdHMgZm9yIG93bmVkIHNjaGVtYXMgYmVjYXVz ZSB3ZQorCQkgKiBzaW1wbHkgcmVuYW1lIHRoZSBzY2hlbWEgdGhhdCB0aGVzZSBvYmplY3RzIGFy ZSBhbHJlYWR5IGluLgorCQkgKi8KKwkJaWYgKG93bmVkU2NoZW1hKQorCQkJY29udGludWU7CisK IAkJLyoKIAkJICogT3RoZXJ3aXNlLCBpZ25vcmUgbm9uLW1lbWJlcnNoaXAgZGVwZW5kZW5jaWVz LiAgKEN1cnJlbnRseSwgdGhlCiAJCSAqIG9ubHkgb3RoZXIgY2FzZSB3ZSBjb3VsZCBzZWUgaGVy ZSBpcyBhIG5vcm1hbCBkZXBlbmRlbmN5IGZyb20KQEAgLTM0MzksMTggKzM2MTMsMzUgQEAgQWx0 ZXJFeHRlbnNpb25OYW1lc3BhY2UoY29uc3QgY2hhciAqZXh0ZW5zaW9uTmFtZSwgY29uc3QgY2hh ciAqbmV3c2NoZW1hLCBPaWQgKm8KIAogCXJlbGF0aW9uX2Nsb3NlKGRlcFJlbCwgQWNjZXNzU2hh cmVMb2NrKTsKIAotCS8qIE5vdyBhZGp1c3QgcGdfZXh0ZW5zaW9uLmV4dG5hbWVzcGFjZSAqLwot CWV4dEZvcm0tPmV4dG5hbWVzcGFjZSA9IG5zcE9pZDsKKwkvKiBOb3cgYWN0dWFsbHkgdXBkYXRl IHRoZSBzY2hlbWEgb2YgdGhlIGV4dGVuc2lvbi4gKi8KKwlpZiAob3duZWRTY2hlbWEpCisJewor CQkvKgorCQkgKiBGb3Igb3duZWQgc2NoZW1hcywgd2Ugc2ltcGx5IHJlbmFtZSB0aGUgc2NoZW1h LiBUaGlzIG1lYW5zIHRoYXQgd2UKKwkJICogZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhlIGV4dGVu c2lvbiBpdHMgY2F0YWxvZyBlbnRyeSwgYmVjYXVzZSB0aGUKKwkJICogb2lkIG9mIHRoZSBzY2hl bWEgd2lsbCBzdGF5IHRoZSBzYW1lLgorCQkgKi8KKwkJUmVuYW1lU2NoZW1hKGdldF9uYW1lc3Bh Y2VfbmFtZShvbGROc3BPaWQpLCBuZXdzY2hlbWEpOworCQl0YWJsZV9jbG9zZShleHRSZWwsIFJv d0V4Y2x1c2l2ZUxvY2spOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGb3Igbm9uLW93bmVk IHNjaGVtYXMsIHdlIG5vdyBoYXZlIHRvIHVwZGF0ZSB0aGUgZXh0ZW5zaW9uJ3Mgc2NoZW1hCisJ CSAqIGVudHJ5LCBhbmQgYWxzbyB1cGRhdGUgdGhlIGRlcGVuZGVuY2llcy4KKwkJICovCisJCWV4 dEZvcm0tPmV4dG5hbWVzcGFjZSA9IG5zcE9pZDsKIAotCUNhdGFsb2dUdXBsZVVwZGF0ZShleHRS ZWwsICZleHRUdXAtPnRfc2VsZiwgZXh0VHVwKTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKGV4dFJl bCwgJmV4dFR1cC0+dF9zZWxmLCBleHRUdXApOwogCi0JdGFibGVfY2xvc2UoZXh0UmVsLCBSb3dF eGNsdXNpdmVMb2NrKTsKKwkJdGFibGVfY2xvc2UoZXh0UmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsK IAotCS8qIHVwZGF0ZSBkZXBlbmRlbmN5IHRvIHBvaW50IHRvIHRoZSBuZXcgc2NoZW1hICovCi0J aWYgKGNoYW5nZURlcGVuZGVuY3lGb3IoRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5zaW9uT2lk LAotCQkJCQkJCU5hbWVzcGFjZVJlbGF0aW9uSWQsIG9sZE5zcE9pZCwgbnNwT2lkKSAhPSAxKQot CQllbG9nKEVSUk9SLCAiY291bGQgbm90IGNoYW5nZSBzY2hlbWEgZGVwZW5kZW5jeSBmb3IgZXh0 ZW5zaW9uICVzIiwKLQkJCSBOYW1lU3RyKGV4dEZvcm0tPmV4dG5hbWUpKTsKKwkJLyogdXBkYXRl IGRlcGVuZGVuY3kgdG8gcG9pbnQgdG8gdGhlIG5ldyBzY2hlbWEgKi8KKwkJaWYgKGNoYW5nZURl cGVuZGVuY3lGb3IoRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5zaW9uT2lkLAorCQkJCQkJCQlO YW1lc3BhY2VSZWxhdGlvbklkLCBvbGROc3BPaWQsIG5zcE9pZCkgIT0gMSkKKwkJCWVsb2coRVJS T1IsICJjb3VsZCBub3QgY2hhbmdlIHNjaGVtYSBkZXBlbmRlbmN5IGZvciBleHRlbnNpb24gJXMi LAorCQkJCSBOYW1lU3RyKGV4dEZvcm0tPmV4dG5hbWUpKTsKKwl9CiAKIAlJbnZva2VPYmplY3RQ b3N0QWx0ZXJIb29rKEV4dGVuc2lvblJlbGF0aW9uSWQsIGV4dGVuc2lvbk9pZCwgMCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwppbmRleCBiNTA1YTZiNGZl ZS4uYTBkYmYxMTlkZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdy YWRlX3N1cHBvcnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBw b3J0LmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlv bl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5k cy9leHRlbnNpb24uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgpAQCAtMTg1LDEyICsxODYsMTQgQEAg RGF0dW0KIGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdfRlVOQ1RJT05f QVJHUykKIHsKIAl0ZXh0CSAgICpleHROYW1lOwotCXRleHQJICAgKnNjaGVtYU5hbWU7CisJY2hh cgkgICAqc2NoZW1hTmFtZTsKIAlib29sCQlyZWxvY2F0YWJsZTsKKwlib29sCQlvd25lZHNjaGVt YTsKIAl0ZXh0CSAgICpleHRWZXJzaW9uOwogCURhdHVtCQlleHRDb25maWc7CiAJRGF0dW0JCWV4 dENvbmRpdGlvbjsKIAlMaXN0CSAgICpyZXF1aXJlZEV4dGVuc2lvbnM7CisJT2lkCQkJc2NoZW1h T2lkOwogCiAJQ0hFQ0tfSVNfQklOQVJZX1VQR1JBREU7CiAKQEAgLTE5OCwyOCArMjAxLDMwIEBA IGJpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdfRlVOQ1RJT05fQVJHUykK IAlpZiAoUEdfQVJHSVNOVUxMKDApIHx8CiAJCVBHX0FSR0lTTlVMTCgxKSB8fAogCQlQR19BUkdJ U05VTEwoMikgfHwKLQkJUEdfQVJHSVNOVUxMKDMpKQorCQlQR19BUkdJU05VTEwoMykgfHwKKwkJ UEdfQVJHSVNOVUxMKDQpKQogCQllbG9nKEVSUk9SLCAibnVsbCBhcmd1bWVudCB0byBiaW5hcnlf dXBncmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uIGlzIG5vdCBhbGxvd2VkIik7CiAKIAlleHRO YW1lID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7Ci0Jc2NoZW1hTmFtZSA9IFBHX0dFVEFSR19URVhU X1BQKDEpOworCXNjaGVtYU5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAo MSkpOwogCXJlbG9jYXRhYmxlID0gUEdfR0VUQVJHX0JPT0woMik7Ci0JZXh0VmVyc2lvbiA9IFBH X0dFVEFSR19URVhUX1BQKDMpOworCW93bmVkc2NoZW1hID0gUEdfR0VUQVJHX0JPT0woMyk7CisJ ZXh0VmVyc2lvbiA9IFBHX0dFVEFSR19URVhUX1BQKDQpOwogCi0JaWYgKFBHX0FSR0lTTlVMTCg0 KSkKKwlpZiAoUEdfQVJHSVNOVUxMKDUpKQogCQlleHRDb25maWcgPSBQb2ludGVyR2V0RGF0dW0o TlVMTCk7CiAJZWxzZQotCQlleHRDb25maWcgPSBQR19HRVRBUkdfREFUVU0oNCk7CisJCWV4dENv bmZpZyA9IFBHX0dFVEFSR19EQVRVTSg1KTsKIAotCWlmIChQR19BUkdJU05VTEwoNSkpCisJaWYg KFBHX0FSR0lTTlVMTCg2KSkKIAkJZXh0Q29uZGl0aW9uID0gUG9pbnRlckdldERhdHVtKE5VTEwp OwogCWVsc2UKLQkJZXh0Q29uZGl0aW9uID0gUEdfR0VUQVJHX0RBVFVNKDUpOworCQlleHRDb25k aXRpb24gPSBQR19HRVRBUkdfREFUVU0oNik7CiAKIAlyZXF1aXJlZEV4dGVuc2lvbnMgPSBOSUw7 Ci0JaWYgKCFQR19BUkdJU05VTEwoNikpCisJaWYgKCFQR19BUkdJU05VTEwoNykpCiAJewotCQlB cnJheVR5cGUgICp0ZXh0QXJyYXkgPSBQR19HRVRBUkdfQVJSQVlUWVBFX1AoNik7CisJCUFycmF5 VHlwZSAgKnRleHRBcnJheSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCg3KTsKIAkJRGF0dW0JICAg KnRleHREYXR1bXM7CiAJCWludAkJCW5kYXR1bXM7CiAJCWludAkJCWk7CkBAIC0yMzQsMTAgKzIz OSwyOCBAQCBiaW5hcnlfdXBncmFkZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCX0KIAl9CiAKKwlpZiAob3duZWRzY2hlbWEpCisJeworCQlDcmVhdGVTY2hlbWFT dG10ICpjc3N0bXQgPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFTdG10KTsKKworCQljc3N0bXQtPnNj aGVtYW5hbWUgPSBzY2hlbWFOYW1lOworCQljc3N0bXQtPmF1dGhyb2xlID0gTlVMTDsJLyogd2ls bCBiZSBjcmVhdGVkIGJ5IGN1cnJlbnQgdXNlciAqLworCQljc3N0bXQtPnNjaGVtYUVsdHMgPSBO SUw7CisJCWNzc3RtdC0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQlzY2hlbWFPaWQgPSBDcmVh dGVTY2hlbWFDb21tYW5kKGNzc3RtdCwgIihnZW5lcmF0ZWQgQ1JFQVRFIFNDSEVNQSBjb21tYW5k KSIsCisJCQkJCQkJCQkJLTEsIC0xKTsKKworCX0KKwllbHNlCisJeworCQlzY2hlbWFPaWQgPSBn ZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1lLCBmYWxzZSk7CisJfQorCiAJSW5zZXJ0RXh0ZW5z aW9uVHVwbGUodGV4dF90b19jc3RyaW5nKGV4dE5hbWUpLAogCQkJCQkJIEdldFVzZXJJZCgpLAot CQkJCQkJIGdldF9uYW1lc3BhY2Vfb2lkKHRleHRfdG9fY3N0cmluZyhzY2hlbWFOYW1lKSwgZmFs c2UpLAorCQkJCQkJIHNjaGVtYU9pZCwKIAkJCQkJCSByZWxvY2F0YWJsZSwKKwkJCQkJCSBvd25l ZHNjaGVtYSwKIAkJCQkJCSB0ZXh0X3RvX2NzdHJpbmcoZXh0VmVyc2lvbiksCiAJCQkJCQkgZXh0 Q29uZmlnLAogCQkJCQkJIGV4dENvbmRpdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDJjMzc1NGQwMjBm Li5mMjc0OTBmYTgyNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xOTUxLDYgKzE5NTEsMTkgQEAgY2hlY2tF eHRlbnNpb25NZW1iZXJzaGlwKER1bXBhYmxlT2JqZWN0ICpkb2JqLCBBcmNoaXZlICpmb3V0KQog CWlmIChleHQgPT0gTlVMTCkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBJZiB0aGlzIGlz IHRoZSAib3duZWRfc2NoZW1hIiBvZiB0aGUgZXh0ZW5zaW9uLCB0aGVuIHdlIGRvbid0IHdhbnQg dG8KKwkgKiBjcmVhdGUgaXQgbWFudWFsbHksIGJlY2F1c2UgaXQgZ2V0cyBjcmVhdGVkIHRvZ2V0 aGVyIHdpdGggdGhlCisJICogZXh0ZW5zaW9uLgorCSAqLworCWlmIChkb2JqLT5vYmpUeXBlID09 IERPX05BTUVTUEFDRSAmJgorCQlleHQtPm93bmVkc2NoZW1hICYmIHN0cmNtcChleHQtPm5hbWVz cGFjZSwgZG9iai0+bmFtZSkgPT0gMCkKKwl7CisJCU5hbWVzcGFjZUluZm8gKm5zaW5mbyA9IChO YW1lc3BhY2VJbmZvICopIGRvYmo7CisKKwkJbnNpbmZvLT5jcmVhdGUgPSBmYWxzZTsKKwl9CisK IAlkb2JqLT5leHRfbWVtYmVyID0gdHJ1ZTsKIAogCS8qIFJlY29yZCBkZXBlbmRlbmN5IHNvIHRo YXQgZ2V0RGVwZW5kZW5jaWVzIG5lZWRuJ3QgZGVhbCB3aXRoIHRoYXQgKi8KQEAgLTU5NTEsNyAr NTk2NCw3IEBAIGJpbmFyeV91cGdyYWRlX2V4dGVuc2lvbl9tZW1iZXIoUFFFeHBCdWZmZXIgdXBn cmFkZV9idWZmZXIsCiAJCQkJCQkJCWNvbnN0IGNoYXIgKm9iam5hbWUsCiAJCQkJCQkJCWNvbnN0 IGNoYXIgKm9iam5hbWVzcGFjZSkKIHsKLQlEdW1wYWJsZU9iamVjdCAqZXh0b2JqID0gTlVMTDsK KwlFeHRlbnNpb25JbmZvICpleHQgPSBOVUxMOwogCWludAkJCWk7CiAKIAlpZiAoIWRvYmotPmV4 dF9tZW1iZXIpCkBAIC01OTY1LDE5ICs1OTc4LDMzIEBAIGJpbmFyeV91cGdyYWRlX2V4dGVuc2lv bl9tZW1iZXIoUFFFeHBCdWZmZXIgdXBncmFkZV9idWZmZXIsCiAJICovCiAJZm9yIChpID0gMDsg aSA8IGRvYmotPm5EZXBzOyBpKyspCiAJewotCQlleHRvYmogPSBmaW5kT2JqZWN0QnlEdW1wSWQo ZG9iai0+ZGVwZW5kZW5jaWVzW2ldKTsKKwkJRHVtcGFibGVPYmplY3QgKmV4dG9iaiA9IGZpbmRP YmplY3RCeUR1bXBJZChkb2JqLT5kZXBlbmRlbmNpZXNbaV0pOworCiAJCWlmIChleHRvYmogJiYg ZXh0b2JqLT5vYmpUeXBlID09IERPX0VYVEVOU0lPTikKKwkJeworCQkJZXh0ID0gKEV4dGVuc2lv bkluZm8gKikgZXh0b2JqOwogCQkJYnJlYWs7Ci0JCWV4dG9iaiA9IE5VTEw7CisJCX0KIAl9Ci0J aWYgKGV4dG9iaiA9PSBOVUxMKQorCWlmIChleHQgPT0gTlVMTCkKIAkJcGdfZmF0YWwoImNvdWxk IG5vdCBmaW5kIHBhcmVudCBleHRlbnNpb24gZm9yICVzICVzIiwKIAkJCQkgb2JqdHlwZSwgb2Jq bmFtZSk7CiAKKwkvKgorCSAqIElmIHRoZSBvYmplY3QgaXMgdGhlICJvd25lZF9zY2hlbWEiIG9m IHRoZSBleHRlbnNpb24sIHdlIGRvbid0IG5lZWQgdG8KKwkgKiBhZGQgaXQgdG8gdGhlIGV4dGVu c2lvbiBiZWNhdXNlIGl0IHdhcyBhbHJlYWR5IG1hZGUgYSBtZW1iZXIgb2YgdGhlCisJICogZXh0 ZW5zaW9uIHdoZW4gdGhlIGV4dGVuc2lvbiB3YXMgY3JlYXRlZC4KKwkgKi8KKwlpZiAoZG9iai0+ b2JqVHlwZSA9PSBET19OQU1FU1BBQ0UgJiYKKwkJZXh0LT5vd25lZHNjaGVtYSAmJiBzdHJjbXAo ZXh0LT5uYW1lc3BhY2UsIGRvYmotPm5hbWUpID09IDApCisJeworCQlyZXR1cm47CisJfQorCiAJ YXBwZW5kUFFFeHBCdWZmZXJTdHIodXBncmFkZV9idWZmZXIsCiAJCQkJCQkgIlxuLS0gRm9yIGJp bmFyeSB1cGdyYWRlLCBoYW5kbGUgZXh0ZW5zaW9uIG1lbWJlcnNoaXAgdGhlIGhhcmQgd2F5XG4i KTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcih1cGdyYWRlX2J1ZmZlciwgIkFMVEVSIEVYVEVOU0lPTiAl cyBBREQgJXMgIiwKLQkJCQkJICBmbXRJZChleHRvYmotPm5hbWUpLAorCQkJCQkgIGZtdElkKGV4 dC0+ZG9iai5uYW1lKSwKIAkJCQkJICBvYmp0eXBlKTsKIAlpZiAob2JqbmFtZXNwYWNlICYmICpv YmpuYW1lc3BhY2UpCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHVwZ3JhZGVfYnVmZmVyLCAiJXMuIiwg Zm10SWQob2JqbmFtZXNwYWNlKSk7CkBAIC02MTM0LDYgKzYxNjEsNyBAQCBnZXRFeHRlbnNpb25z KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtRXh0ZW5zaW9ucykKIAlpbnQJCQlpX2V4dG5hbWU7CiAJ aW50CQkJaV9uc3BuYW1lOwogCWludAkJCWlfZXh0cmVsb2NhdGFibGU7CisJaW50CQkJaV9leHRv d25lZHNjaGVtYTsKIAlpbnQJCQlpX2V4dHZlcnNpb247CiAJaW50CQkJaV9leHRjb25maWc7CiAJ aW50CQkJaV9leHRjb25kaXRpb247CkBAIC02MTQyLDcgKzYxNzAsMTQgQEAgZ2V0RXh0ZW5zaW9u cyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMpCiAKIAlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIlNFTEVDVCB4LnRhYmxlb2lkLCB4Lm9pZCwgIgogCQkJCQkJICJ4LmV4dG5h bWUsIG4ubnNwbmFtZSwgeC5leHRyZWxvY2F0YWJsZSwgeC5leHR2ZXJzaW9uLCB4LmV4dGNvbmZp ZywgeC5leHRjb25kaXRpb24gIgotCQkJCQkJICJGUk9NIHBnX2V4dGVuc2lvbiB4ICIKKwkJKTsK KworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE4MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIHguZXh0b3duZWRzY2hlbWEgIik7CisJZWxzZQorCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiwgZmFsc2UgQVMgZXh0b3duZWRzY2hlbWEgIik7CisKKwlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIkZST00gcGdfZXh0ZW5zaW9uIHggIgogCQkJCQkJICJK T0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0geC5leHRuYW1lc3BhY2UiKTsKIAogCXJlcyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAg LTYxNTgsNiArNjE5Myw3IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1F eHRlbnNpb25zKQogCWlfZXh0bmFtZSA9IFBRZm51bWJlcihyZXMsICJleHRuYW1lIik7CiAJaV9u c3BuYW1lID0gUFFmbnVtYmVyKHJlcywgIm5zcG5hbWUiKTsKIAlpX2V4dHJlbG9jYXRhYmxlID0g UFFmbnVtYmVyKHJlcywgImV4dHJlbG9jYXRhYmxlIik7CisJaV9leHRvd25lZHNjaGVtYSA9IFBR Zm51bWJlcihyZXMsICJleHRvd25lZHNjaGVtYSIpOwogCWlfZXh0dmVyc2lvbiA9IFBRZm51bWJl cihyZXMsICJleHR2ZXJzaW9uIik7CiAJaV9leHRjb25maWcgPSBQUWZudW1iZXIocmVzLCAiZXh0 Y29uZmlnIik7CiAJaV9leHRjb25kaXRpb24gPSBQUWZudW1iZXIocmVzLCAiZXh0Y29uZGl0aW9u Iik7CkBAIC02MTcxLDYgKzYyMDcsNyBAQCBnZXRFeHRlbnNpb25zKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtRXh0ZW5zaW9ucykKIAkJZXh0aW5mb1tpXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFn ZXR2YWx1ZShyZXMsIGksIGlfZXh0bmFtZSkpOwogCQlleHRpbmZvW2ldLm5hbWVzcGFjZSA9IHBn X3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9uc3BuYW1lKSk7CiAJCWV4dGluZm9baV0ucmVs b2NhdGFibGUgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dHJlbG9jYXRhYmxlKSkgPT0gJ3Qn OworCQlleHRpbmZvW2ldLm93bmVkc2NoZW1hID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9leHRv d25lZHNjaGVtYSkpID09ICd0JzsKIAkJZXh0aW5mb1tpXS5leHR2ZXJzaW9uID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dHZlcnNpb24pKTsKIAkJZXh0aW5mb1tpXS5leHRjb25m aWcgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfZXh0Y29uZmlnKSk7CiAJCWV4dGlu Zm9baV0uZXh0Y29uZGl0aW9uID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dGNv bmRpdGlvbikpOwpAQCAtMTE4ODQsOSArMTE5MjEsOSBAQCBkdW1wTmFtZXNwYWNlKEFyY2hpdmUg KmZvdXQsIGNvbnN0IE5hbWVzcGFjZUluZm8gKm5zcGluZm8pCiAJewogCQkvKiBzZWUgc2VsZWN0 RHVtcGFibGVOYW1lc3BhY2UoKSAqLwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZWxxLAotCQkJ CQkJCSAiLS0gKm5vdCogZHJvcHBpbmcgc2NoZW1hLCBzaW5jZSBpbml0ZGIgY3JlYXRlcyBpdFxu Iik7CisJCQkJCQkJICItLSAqbm90KiBkcm9wcGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBvciBD UkVBVEUgRVhURU5TSU9OIGNyZWF0ZXMgaXRcbiIpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx LAotCQkJCQkJCSAiLS0gKm5vdCogY3JlYXRpbmcgc2NoZW1hLCBzaW5jZSBpbml0ZGIgY3JlYXRl cyBpdFxuIik7CisJCQkJCQkJICItLSAqbm90KiBjcmVhdGluZyBzY2hlbWEsIHNpbmNlIGluaXRk YiBvciBDUkVBVEUgRVhURU5TSU9OIGNyZWF0ZXMgaXRcbiIpOwogCX0KIAogCWlmIChkb3B0LT5i aW5hcnlfdXBncmFkZSkKQEAgLTExOTk4LDYgKzEyMDM1LDcgQEAgZHVtcEV4dGVuc2lvbihBcmNo aXZlICpmb3V0LCBjb25zdCBFeHRlbnNpb25JbmZvICpleHRpbmZvKQogCQlhcHBlbmRTdHJpbmdM aXRlcmFsQUgocSwgZXh0aW5mby0+bmFtZXNwYWNlLCBmb3V0KTsKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocSwgIiwgIik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcywgIiwgZXh0aW5mby0+ cmVsb2NhdGFibGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocSwg IiVzLCAiLCBleHRpbmZvLT5vd25lZHNjaGVtYSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCQlhcHBl bmRTdHJpbmdMaXRlcmFsQUgocSwgZXh0aW5mby0+ZXh0dmVyc2lvbiwgZm91dCk7CiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHEsICIsICIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA0YzRiMTRlNWZjNy4u ZWY3NDAyMGQxNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtMTk1LDYgKzE5NSw3IEBAIHR5cGVkZWYgc3Ry dWN0IF9leHRlbnNpb25JbmZvCiAJRHVtcGFibGVPYmplY3QgZG9iajsKIAljaGFyCSAgICpuYW1l c3BhY2U7CQkvKiBzY2hlbWEgY29udGFpbmluZyBleHRlbnNpb24ncyBvYmplY3RzICovCiAJYm9v bAkJcmVsb2NhdGFibGU7CisJYm9vbAkJb3duZWRzY2hlbWE7CiAJY2hhcgkgICAqZXh0dmVyc2lv bjsKIAljaGFyCSAgICpleHRjb25maWc7CQkvKiBpbmZvIGFib3V0IGNvbmZpZ3VyYXRpb24gdGFi bGVzICovCiAJY2hhcgkgICAqZXh0Y29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19leHRlbnNpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9u LmgKaW5kZXggOGFiNWUzMTQxZDAuLmJiYzc5NzczZTZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2V4dGVuc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0 ZW5zaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAgQ0FUQUxPRyhwZ19leHRlbnNpb24sMzA3OSxFeHRl bnNpb25SZWxhdGlvbklkKQogCU9pZAkJCWV4dG5hbWVzcGFjZSBCS0lfTE9PS1VQKHBnX25hbWVz cGFjZSk7CS8qIG5hbWVzcGFjZSBvZgogCQkJCQkJCQkJCQkJCQkgKiBjb250YWluZWQgb2JqZWN0 cyAqLwogCWJvb2wJCWV4dHJlbG9jYXRhYmxlOyAvKiBpZiB0cnVlLCBhbGxvdyBBTFRFUiBFWFRF TlNJT04gU0VUIFNDSEVNQSAqLworCWJvb2wJCWV4dG93bmVkc2NoZW1hOyAvKiBpZiB0cnVlLCBz Y2hlbWEgaXMgb3duZWQgYnkgZXh0ZW5zaW9uICovCiAKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJ CS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIGV4dHZlcnNpb24g bWF5IG5ldmVyIGJlIG51bGwsIGJ1dCB0aGUgb3RoZXJzIGNhbiBiZS4gKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IDgzZjY1MDFkZjM4Li5lYTBlZjU3YjdlMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC0xMTgwNSw3ICsxMTgwNSw3IEBACiB7IG9pZCA9PiAnMzU5MScsIGRlc2Ny ID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUnLAogICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFk ZV9jcmVhdGVfZW1wdHlfZXh0ZW5zaW9uJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm92b2xh dGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCi0g IHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRleHQgYm9vbCB0ZXh0IF9vaWQgX3RleHQgX3RleHQnLAor ICBwcm9hcmd0eXBlcyA9PiAndGV4dCB0ZXh0IGJvb2wgYm9vbCB0ZXh0IF9vaWQgX3RleHQgX3Rl eHQnLAogICBwcm9zcmMgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24n IH0sCiB7IG9pZCA9PiAnNDA4MycsIGRlc2NyID0+ICdmb3IgdXNlIGJ5IHBnX3VwZ3JhZGUnLAog ICBwcm9uYW1lID0+ICdiaW5hcnlfdXBncmFkZV9zZXRfcmVjb3JkX2luaXRfcHJpdnMnLCBwcm92 b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNp b24uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCmluZGV4IDdhNzZiZGViY2Zh Li4wMzE2NmI3NTUwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKQEAgLTM4LDcgKzM4LDkg QEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlRXh0ZW5zaW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlRXh0ZW5zaW9uU3RtdCAqc3QKIGV4dGVybiB2b2lkIFJlbW92ZUV4dGVuc2lvbkJ5 SWQoT2lkIGV4dElkKTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgSW5zZXJ0RXh0ZW5zaW9uVHVw bGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAotCQkJCQkJCQkJCSAgT2lkIHNj aGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwgY29uc3QgY2hhciAqZXh0VmVyc2lvbiwKKwkJCQkJ CQkJCQkgIE9pZCBzY2hlbWFPaWQsIGJvb2wgcmVsb2NhdGFibGUsCisJCQkJCQkJCQkJICBib29s IG93bmVkU2NoZW1hLAorCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZXh0VmVyc2lvbiwKIAkJCQkJ CQkJCQkgIERhdHVtIGV4dENvbmZpZywgRGF0dW0gZXh0Q29uZGl0aW9uLAogCQkJCQkJCQkJCSAg TGlzdCAqcmVxdWlyZWRFeHRlbnNpb25zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy9NYWtlZmlsZQppbmRleCBhMzU5MWJmM2QyZi4uMGE3Y2Y2OTIyMTQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlCkBAIC05LDcgKzksOSBAQCBFWFRFTlNJ T04gPSB0ZXN0X2V4dDEgdGVzdF9leHQyIHRlc3RfZXh0MyB0ZXN0X2V4dDQgdGVzdF9leHQ1IHRl c3RfZXh0NiBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9leHRzY2hlbWEgXAogICAgICAgICAgICAg dGVzdF9leHRfZXZ0dHJpZyBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9zZXRfc2NoZW1hIFwKLSAg ICAgICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWExIHRlc3RfZXh0X3JlcV9zY2hlbWEyIHRlc3Rf ZXh0X3JlcV9zY2hlbWEzCisgICAgICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMSB0ZXN0X2V4 dF9yZXFfc2NoZW1hMiB0ZXN0X2V4dF9yZXFfc2NoZW1hMyBcCisgICAgICAgICAgICB0ZXN0X2V4 dF9vd25lZF9zY2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyIFwKKyAgICAg ICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkIHRlc3RfZXh0X293bmVkX3NjaGVt YV9yZWxvY2F0YWJsZQogCiBEQVRBID0gdGVzdF9leHQxLS0xLjAuc3FsIHRlc3RfZXh0Mi0tMS4w LnNxbCB0ZXN0X2V4dDMtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0NC0tMS4wLnNxbCB0ZXN0 X2V4dDUtLTEuMC5zcWwgdGVzdF9leHQ2LS0xLjAuc3FsIFwKQEAgLTI1LDcgKzI3LDE0IEBAIERB VEEgPSB0ZXN0X2V4dDEtLTEuMC5zcWwgdGVzdF9leHQyLS0xLjAuc3FsIHRlc3RfZXh0My0tMS4w LnNxbCBcCiAgICAgICAgdGVzdF9leHRfc2V0X3NjaGVtYS0tMS4wLnNxbCBcCiAgICAgICAgdGVz dF9leHRfcmVxX3NjaGVtYTEtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEy LS0xLjAuc3FsIFwKLSAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMy0tMS4wLnNxbAorICAgICAg IHRlc3RfZXh0X3JlcV9zY2hlbWEzLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9z Y2hlbWEtLTEuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLS0xLjEu c3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC5zcWwg XAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci0tMS4wLS0xLjEuc3Fs IFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC0tMS4wLnNxbCBcCisgICAg ICAgdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC0tMS4xLnNxbCBcCisgICAgICAg dGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsCiAKIFJFR1JFU1MgPSB0 ZXN0X2V4dGVuc2lvbnMgdGVzdF9leHRkZXBlbmQKIFRBUF9URVNUUyA9IDEKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9u cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4 dGVuc2lvbnMub3V0CmluZGV4IGZkYWU1MmQ2YWIyLi4xODIwZTc2ZDc0NiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25z Lm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0 X2V4dGVuc2lvbnMub3V0CkBAIC05LDYgKzksNyBAQCBDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0 MSBTQ0hFTUEgdGVzdF9leHQ7CiBFUlJPUjogIHNjaGVtYSAidGVzdF9leHQiIGRvZXMgbm90IGV4 aXN0CiBDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0MSBTQ0hFTUEgaGFzJGRvbGxhcjsKIEVSUk9S OiAgZXh0ZW5zaW9uICJ0ZXN0X2V4dDEiIG11c3QgYmUgaW5zdGFsbGVkIGluIHNjaGVtYSAidGVz dF9leHQxIgorSElOVDogIERvIG5vdCBzcGVjaWZ5IFNDSEVNQSB3aGVuIHJ1bm5pbmcgQ1JFQVRF IEVYVEVOU0lPTiBmb3IgZXh0ZW5zaW9uICJ0ZXN0X2V4dDEiCiAtLSBmaW5hbGx5IHN1Y2Nlc3MK IENSRUFURSBFWFRFTlNJT04gdGVzdF9leHQxIFNDSEVNQSBoYXMkZG9sbGFyIENBU0NBREU7CiBO T1RJQ0U6ICBpbnN0YWxsaW5nIHJlcXVpcmVkIGV4dGVuc2lvbiAidGVzdF9leHQyIgpAQCAtNjY3 LDMgKzY2OCwxNTkgQEAgU0VMRUNUIHRlc3Rfc19kZXAuZGVwX3JlcTIoKTsKIAogRFJPUCBFWFRF TlNJT04gdGVzdF9leHRfcmVxX3NjaGVtYTEgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2Fk ZXMgdG8gZXh0ZW5zaW9uIHRlc3RfZXh0X3JlcV9zY2hlbWEyCistLQorLS0gVGVzdCBvd25lZCBz Y2hlbWEgZXh0ZW5zaW9ucworLS0KK0NSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1h OworLS0gRmFpbHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2NoZW1hIHRvIGJlIHByb3ZpZGVk CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBTQ0hFTUEgdGVzdF9leHRf b3duZWRfc2NoZW1hOworRVJST1I6ICBzY2hlbWEgInRlc3RfZXh0X293bmVkX3NjaGVtYSIgYWxy ZWFkeSBleGlzdHMKK0hJTlQ6ICBEcm9wIHNjaGVtYSAidGVzdF9leHRfb3duZWRfc2NoZW1hIiBv ciBzcGVjaWZ5IGFub3RoZXIgc2NoZW1hIHVzaW5nIENSRUFURSBFWFRFTlNJT04gLi4uIFNDSEVN QSAuLi4KKy0tIEZhaWxzIGJlY2F1c2UgYSBkaWZmZXJlbnQgc2NoZW1hIGlzIHNldCBpbiBjb250 cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hIFNDSEVNQSB0 ZXN0X3NjaGVtYTsKK0VSUk9SOiAgZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiIG11 c3QgYmUgaW5zdGFsbGVkIGluIHNjaGVtYSAidGVzdF9leHRfb3duZWRfc2NoZW1hIgorSElOVDog IERvIG5vdCBzcGVjaWZ5IFNDSEVNQSB3aGVuIHJ1bm5pbmcgQ1JFQVRFIEVYVEVOU0lPTiBmb3Ig ZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiCitEUk9QIFNDSEVNQSB0ZXN0X2V4dF9v d25lZF9zY2hlbWE7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK1xk eCsgdGVzdF9leHRfb3duZWRfc2NoZW1hOworT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0 X293bmVkX3NjaGVtYSIKKyAgICAgICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHRl c3RfZXh0X293bmVkX3NjaGVtYS5vd25lZDEoKQorIHNjaGVtYSB0ZXN0X2V4dF9vd25lZF9zY2hl bWEKKygyIHJvd3MpCisKKy0tIFRlc3QgQUxURVIgRVhURU5TSU9OIFVQREFURSB3aXRoIG93bmVk IHNjaGVtYQorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBVUERBVEUgVE8g JzEuMSc7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK09iamVjdHMgaW4gZXh0ZW5zaW9u ICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiCisgICAgICAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBm dW5jdGlvbiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEub3duZWQxKCkKKyBmdW5jdGlvbiB0ZXN0X2V4 dF9vd25lZF9zY2hlbWEub3duZWQyKCkKKyBzY2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hCiso MyByb3dzKQorCistLSBWZXJpZnkgdGhhdCB0aGUgb3duZWQgc2NoZW1hIGlzIGRyb3BwZWQgdG9n ZXRoZXIgd2l0aCB0aGUgZXh0ZW5zaW9uCitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9z Y2hlbWE7CitTRUxFQ1QgQ09VTlQoKikgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9 ICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEnOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSBy b3cpCisKKy0tIFRlc3QgZHJvcCBiZWhhdmlvciB3aXRoIG5vbi1leHRlbnNpb24gb2JqZWN0cyBp biB0aGUgb3duZWQgc2NoZW1hCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVt YTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEubm9uX2V4dF9mdW5jKCkg UkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOworLS0gRmFpbHMgYmVj YXVzZSBvZiB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgZXh0ZW5zaW9uIHRlc3RfZXh0X293 bmVkX3NjaGVtYSBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBm dW5jdGlvbiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEubm9uX2V4dF9mdW5jKCkgZGVwZW5kcyBvbiBz Y2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUg dG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLS0gU3VjY2VlZHMgYW5kIGNhc2Nh ZGVzIHRvIHRoZSBub24tZXh0ZW5zaW9uIG9iamVjdAorRFJPUCBFWFRFTlNJT04gdGVzdF9leHRf b3duZWRfc2NoZW1hIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9u IHRlc3RfZXh0X293bmVkX3NjaGVtYS5ub25fZXh0X2Z1bmMoKQorQ1JFQVRFIFNDSEVNQSBhbHJl YWR5X2V4aXN0aW5nOworLS0gRmFpbHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2NoZW1hIHRv IGJlIHByb3ZpZGVkCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZSBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKK0VSUk9SOiAgc2NoZW1hICJhbHJlYWR5 X2V4aXN0aW5nIiBhbHJlYWR5IGV4aXN0cworSElOVDogIERyb3Agc2NoZW1hICJhbHJlYWR5X2V4 aXN0aW5nIiBvciBzcGVjaWZ5IGFub3RoZXIgc2NoZW1hIHVzaW5nIENSRUFURSBFWFRFTlNJT04g Li4uIFNDSEVNQSAuLi4KKy0tIEZhaWxzIGJlY2F1c2Ugbm8gc2NoZW1hIGlzIHNldCBpbiBjb250 cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRh YmxlOworRVJST1I6ICBubyBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gY3JlYXRlIGluCitD UkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTQ0hFTUEg dGVzdF9zY2hlbWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZQorT2Jq ZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSIKKyAg ICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBmdW5jdGlvbiB0ZXN0X3NjaGVtYS5vd25lZDIoKQorIHNjaGVtYSB0ZXN0X3NjaGVt YQorKDIgcm93cykKKworLS0gRmFpbHMgYmVjYXVzZSBzY2hlbWEgYWxyZWFkeSBleGlzdHMKK0FM VEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVN QSBhbHJlYWR5X2V4aXN0aW5nOworRVJST1I6ICBzY2hlbWEgImFscmVhZHlfZXhpc3RpbmciIGFs cmVhZHkgZXhpc3RzCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9j YXRhYmxlIFNFVCBTQ0hFTUEgc29tZV9vdGhlcl9uYW1lOworXGR4KyB0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUiCisgICAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiBzb21lX290aGVy X25hbWUub3duZWQyKCkKKyBzY2hlbWEgc29tZV9vdGhlcl9uYW1lCisoMiByb3dzKQorCitEUk9Q IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGU7CistLSBWZXJpZnkg dGhlIHNjaGVtYSB3YXMgZHJvcHBlZCB3aXRoIHRoZSBleHRlbnNpb24KK0RST1AgU0NIRU1BIHNv bWVfb3RoZXJfbmFtZTsKK0VSUk9SOiAgc2NoZW1hICJzb21lX290aGVyX25hbWUiIGRvZXMgbm90 IGV4aXN0CistLSBUZXN0IG93bmVkX3NjaGVtYSArIHN1cGVydXNlcj1mYWxzZSBleHRlbnNpb24K K0NSRUFURSBVU0VSIHRlc3RfZXh0X3VzZXI7CitHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgcmVn cmVzc2lvbl90ZXN0X2V4dGVuc2lvbnMgVE8gdGVzdF9leHRfdXNlcjsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gdGVzdF9leHRfdXNlcjsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3du ZWRfc2NoZW1hX25vc3VwZXJ1c2VyOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBl cnVzZXI7CitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3Vw ZXJ1c2VyIgorICAgICAgICAgICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1 bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLm93bmVkMSgpCisgc2NoZW1hIHRl c3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyCisoMiByb3dzKQorCistLSBDaGVjayB0aGF0IHNj aGVtYSBpcyBvd25lZCBieSB0aGUgY3JlYXRpbmcgdXNlciAobm90IGJvb3RzdHJhcCBzdXBlcnVz ZXIpCitTRUxFQ1Qgbi5uc3BuYW1lLCBuLm5zcG93bmVyID0gY3VycmVudF91c2VyOjpyZWdyb2xl IGFzIG93bmVkX2J5X2N1cnJlbnRfdXNlcgorRlJPTSBwZ19uYW1lc3BhY2UgbgorV0hFUkUgbi5u c3BuYW1lID0gJ3Rlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyJzsKKyAgICAgICAgICAgIG5z cG5hbWUgICAgICAgICAgICB8IG93bmVkX2J5X2N1cnJlbnRfdXNlciAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ZXN0X293bmVkX3Nj aGVtYV9ub3N1cGVydXNlciB8IHQKKygxIHJvdykKKworLS0gVXBncmFkZXMgc2hvdWxkIHdvcmsg Zm9yIHN1cGVydXNlcj1mYWxzZSBleHRlbnNpb25zCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRf b3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyIFVQREFURSBUTyAnMS4xJzsKK1xkeCsgdGVzdF9leHRf b3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyOworT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0 X293bmVkX3NjaGVtYV9ub3N1cGVydXNlciIKKyAgICAgICAgICAgICAgIE9iamVjdCBkZXNjcmlw dGlvbiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlci5v d25lZDEoKQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLm93bmVkMigp Cisgc2NoZW1hIHRlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyCisoMyByb3dzKQorCitEUk9Q IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXI7CitSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CistLSBUZXN0IG93bmVkX3NjaGVtYSArIHRydXN0ZWQ9dHJ1ZSBl eHRlbnNpb24KK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gdGVzdF9leHRfdXNlcjsKK0NSRUFU RSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitcZHgrIHRlc3RfZXh0 X293bmVkX3NjaGVtYV90cnVzdGVkOworT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0X293 bmVkX3NjaGVtYV90cnVzdGVkIgorICAgICAgICAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBmdW5jdGlvbiB0ZXN0X293bmVkX3NjaGVtYV90cnVzdGVkLm93bmVkMSgpCisgc2NoZW1hIHRl c3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQKKygyIHJvd3MpCisKKy0tIENoZWNrIHRoYXQgc2NoZW1h IGlzIG93bmVkIGJ5IGJvb3RzdHJhcCBzdXBlcnVzZXIgZm9yIHRydXN0ZWQgZXh0ZW5zaW9uLAor LS0gZXZlbiB0aG91Z2ggdGhlIGV4dGVuc2lvbiBpcyBvd25lZCBieSB0ZXN0X2V4dF91c2VyCitT RUxFQ1Qgbi5uc3BuYW1lLCBuLm5zcG93bmVyID0gMTAgYXMgb3duZWRfYnlfYm9vdHN0cmFwX3N1 cGVydXNlcgorRlJPTSBwZ19uYW1lc3BhY2UgbgorV0hFUkUgbi5uc3BuYW1lID0gJ3Rlc3Rfb3du ZWRfc2NoZW1hX3RydXN0ZWQnOworICAgICAgICAgIG5zcG5hbWUgICAgICAgICAgfCBvd25lZF9i eV9ib290c3RyYXBfc3VwZXJ1c2VyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQgfCB0 CisoMSByb3cpCisKKy0tIFVwZGF0aW5nIHRydXN0ZWQgZXh0ZW5zaW9ucyBzaG91bGQgd29yayBu b3JtYWxseQorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkIFVQ REFURSBUTyAnMS4xJzsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitPYmpl Y3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQiCisgICAgICAg ICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1h X3RydXN0ZWQub3duZWQxKCkKKyBmdW5jdGlvbiB0ZXN0X293bmVkX3NjaGVtYV90cnVzdGVkLm93 bmVkMigpCisgc2NoZW1hIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQKKygzIHJvd3MpCisKK0RS T1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkOworUkVTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OOworUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uX3Rl c3RfZXh0ZW5zaW9ucyBGUk9NIHRlc3RfZXh0X3VzZXI7CitEUk9QIFVTRVIgdGVzdF9leHRfdXNl cjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1 aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKaW5kZXgg YmU5YzlhZTU5M2YuLjAxOWUwZDJhMjQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy9tZXNvbi5idWlsZApAQCAtNDQsNiArNDQsMTcgQEAgdGVzdF9pbnN0YWxsX2RhdGEg Kz0gZmlsZXMoCiAgICd0ZXN0X2V4dF9yZXFfc2NoZW1hMy5jb250cm9sJywKICAgJ3Rlc3RfZXh0 X3NldF9zY2hlbWEtLTEuMC5zcWwnLAogICAndGVzdF9leHRfc2V0X3NjaGVtYS5jb250cm9sJywK KyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9vd25lZF9z Y2hlbWEtLTEuMC0tMS4xLnNxbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbCcs CisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC5zcWwnLAorICAndGVz dF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0xLjAtLTEuMS5zcWwnLAorICAndGVzdF9l eHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3duZWRf c2NoZW1hX3RydXN0ZWQtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0 ZWQtLTEuMC0tMS4xLnNxbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZC5jb250 cm9sJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbCcsCisg ICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCcsCiApCiAKIHRlc3Rz ICs9IHsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3NxbC90 ZXN0X2V4dGVuc2lvbnMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3Fs L3Rlc3RfZXh0ZW5zaW9ucy5zcWwKaW5kZXggYjU4NzhmNmY4MGYuLjcwMDAzM2ZjMTNiIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNp b25zLnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9l eHRlbnNpb25zLnNxbApAQCAtMzAzLDMgKzMwMyw3OCBAQCBBTFRFUiBFWFRFTlNJT04gdGVzdF9l eHRfcmVxX3NjaGVtYTEgU0VUIFNDSEVNQSB0ZXN0X3NfZGVwMjsgIC0tIG5vdyBvawogU0VMRUNU IHRlc3Rfc19kZXAyLmRlcF9yZXExKCk7CiBTRUxFQ1QgdGVzdF9zX2RlcC5kZXBfcmVxMigpOwog RFJPUCBFWFRFTlNJT04gdGVzdF9leHRfcmVxX3NjaGVtYTEgQ0FTQ0FERTsKKworLS0KKy0tIFRl c3Qgb3duZWQgc2NoZW1hIGV4dGVuc2lvbnMKKy0tCisKK0NSRUFURSBTQ0hFTUEgdGVzdF9leHRf b3duZWRfc2NoZW1hOworLS0gRmFpbHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2NoZW1hIHRv IGJlIHByb3ZpZGVkCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBTQ0hF TUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOworLS0gRmFpbHMgYmVjYXVzZSBhIGRpZmZlcmVudCBz Y2hlbWEgaXMgc2V0IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9v d25lZF9zY2hlbWEgU0NIRU1BIHRlc3Rfc2NoZW1hOworRFJPUCBTQ0hFTUEgdGVzdF9leHRfb3du ZWRfc2NoZW1hOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitcZHgr IHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIFRlc3QgQUxURVIgRVhURU5TSU9OIFVQREFURSB3 aXRoIG93bmVkIHNjaGVtYQorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBV UERBVEUgVE8gJzEuMSc7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIFZlcmlmeSB0 aGF0IHRoZSBvd25lZCBzY2hlbWEgaXMgZHJvcHBlZCB0b2dldGhlciB3aXRoIHRoZSBleHRlbnNp b24KK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK1NFTEVDVCBDT1VOVCgq KSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0gJ3Rlc3RfZXh0X293bmVkX3NjaGVt YSc7CisKKy0tIFRlc3QgZHJvcCBiZWhhdmlvciB3aXRoIG5vbi1leHRlbnNpb24gb2JqZWN0cyBp biB0aGUgb3duZWQgc2NoZW1hCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVt YTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEubm9uX2V4dF9mdW5jKCkg UkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOworLS0gRmFpbHMgYmVj YXVzZSBvZiB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYTsKKy0tIFN1Y2NlZWRzIGFuZCBjYXNjYWRlcyB0byB0aGUgbm9uLWV4dGVu c2lvbiBvYmplY3QKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBDQVNDQURF OworCitDUkVBVEUgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CistLSBGYWlscyBmb3IgYW4gYWxy ZWFkeSBleGlzdGluZyBzY2hlbWEgdG8gYmUgcHJvdmlkZWQKK0NSRUFURSBFWFRFTlNJT04gdGVz dF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5nOwor LS0gRmFpbHMgYmVjYXVzZSBubyBzY2hlbWEgaXMgc2V0IGluIGNvbnRyb2wgZmlsZQorQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGU7CitDUkVBVEUgRVhU RU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTQ0hFTUEgdGVzdF9zY2hl bWE7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZQorLS0gRmFpbHMgYmVj YXVzZSBzY2hlbWEgYWxyZWFkeSBleGlzdHMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25l ZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VUIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5nOworQUxURVIg RVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTRVQgU0NIRU1BIHNv bWVfb3RoZXJfbmFtZTsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCitE Uk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGU7CistLSBWZXJp ZnkgdGhlIHNjaGVtYSB3YXMgZHJvcHBlZCB3aXRoIHRoZSBleHRlbnNpb24KK0RST1AgU0NIRU1B IHNvbWVfb3RoZXJfbmFtZTsKKworLS0gVGVzdCBvd25lZF9zY2hlbWEgKyBzdXBlcnVzZXI9ZmFs c2UgZXh0ZW5zaW9uCitDUkVBVEUgVVNFUiB0ZXN0X2V4dF91c2VyOworR1JBTlQgQ1JFQVRFIE9O IERBVEFCQVNFIHJlZ3Jlc3Npb25fdGVzdF9leHRlbnNpb25zIFRPIHRlc3RfZXh0X3VzZXI7CitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHRlc3RfZXh0X3VzZXI7CitDUkVBVEUgRVhURU5TSU9O IHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsKK1xkeCsgdGVzdF9leHRfb3duZWRf c2NoZW1hX25vc3VwZXJ1c2VyOworLS0gQ2hlY2sgdGhhdCBzY2hlbWEgaXMgb3duZWQgYnkgdGhl IGNyZWF0aW5nIHVzZXIgKG5vdCBib290c3RyYXAgc3VwZXJ1c2VyKQorU0VMRUNUIG4ubnNwbmFt ZSwgbi5uc3Bvd25lciA9IGN1cnJlbnRfdXNlcjo6cmVncm9sZSBhcyBvd25lZF9ieV9jdXJyZW50 X3VzZXIKK0ZST00gcGdfbmFtZXNwYWNlIG4KK1dIRVJFIG4ubnNwbmFtZSA9ICd0ZXN0X293bmVk X3NjaGVtYV9ub3N1cGVydXNlcic7CistLSBVcGdyYWRlcyBzaG91bGQgd29yayBmb3Igc3VwZXJ1 c2VyPWZhbHNlIGV4dGVuc2lvbnMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfbm9zdXBlcnVzZXIgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hl bWFfbm9zdXBlcnVzZXI7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKKy0tIFRlc3Qgb3duZWRf c2NoZW1hICsgdHJ1c3RlZD10cnVlIGV4dGVuc2lvbgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiB0ZXN0X2V4dF91c2VyOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFf dHJ1c3RlZDsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CistLSBDaGVjayB0 aGF0IHNjaGVtYSBpcyBvd25lZCBieSBib290c3RyYXAgc3VwZXJ1c2VyIGZvciB0cnVzdGVkIGV4 dGVuc2lvbiwKKy0tIGV2ZW4gdGhvdWdoIHRoZSBleHRlbnNpb24gaXMgb3duZWQgYnkgdGVzdF9l eHRfdXNlcgorU0VMRUNUIG4ubnNwbmFtZSwgbi5uc3Bvd25lciA9IDEwIGFzIG93bmVkX2J5X2Jv b3RzdHJhcF9zdXBlcnVzZXIKK0ZST00gcGdfbmFtZXNwYWNlIG4KK1dIRVJFIG4ubnNwbmFtZSA9 ICd0ZXN0X293bmVkX3NjaGVtYV90cnVzdGVkJzsKKy0tIFVwZGF0aW5nIHRydXN0ZWQgZXh0ZW5z aW9ucyBzaG91bGQgd29yayBub3JtYWxseQorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYV90cnVzdGVkIFVQREFURSBUTyAnMS4xJzsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2No ZW1hX3RydXN0ZWQ7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3Rl ZDsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK1JFVk9LRSBDUkVBVEUgT04gREFUQUJB U0UgcmVncmVzc2lvbl90ZXN0X2V4dGVuc2lvbnMgRlJPTSB0ZXN0X2V4dF91c2VyOworRFJPUCBV U0VSIHRlc3RfZXh0X3VzZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY3MmFiOGU2MDdmCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2No ZW1hLS0xLjAuc3FsCkBAIC0wLDAgKzEsMiBAQAorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMSgpIFJF VFVSTlMgdGV4dAorTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLmNv bnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9z Y2hlbWEuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTMx YzM4ZGFlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbApAQCAtMCwwICsxLDUgQEAKK2NvbW1l bnQgPSAnVGVzdCBleHRlbnNpb24gd2l0aCBhbiBvd25lZCBzY2hlbWEnCitkZWZhdWx0X3ZlcnNp b24gPSAnMS4wJworcmVsb2NhdGFibGUgPSBmYWxzZQorc2NoZW1hID0gdGVzdF9leHRfb3duZWRf c2NoZW1hCitvd25lZF9zY2hlbWEgPSB0cnVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5z cWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hl bWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmJmY2NhZjRhZjgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3Fs CkBAIC0wLDAgKzEsMiBAQAorQ1JFQVRFIEZVTkNUSU9OIG93bmVkMigpIFJFVFVSTlMgdGV4dAor TEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNv bnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uM2NkYTFlMTIzNDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJv bApAQCAtMCwwICsxLDQgQEAKK2NvbW1lbnQgPSAnVGVzdCBleHRlbnNpb24gd2l0aCBhbiBvd25l ZCBzY2hlbWEnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworcmVsb2NhdGFibGUgPSB0cnVlCitv d25lZF9zY2hlbWEgPSB0cnVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcGdf ZHVtcC90LzAwMV9iYXNlLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFf YmFzZS5wbAppbmRleCAzZDY1Y2U0NDk3YS4uNGRiMjk1NzMxOGQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9wZ19kdW1wL3QvMDAxX2Jhc2UucGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3BnX2R1bXAvdC8wMDFfYmFzZS5wbApAQCAtMzgxLDYgKzM4MSwzOCBAQCBteSAl dGVzdHMgPSAoCiAJCX0sCiAJfSwKIAorCSdDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gMSwKKwkJY3JlYXRlX3NxbCA9PiAnQ1JF QVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfZXh0X293bmVkX3NjaGVt YSBXSVRIIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7XEUKKwkJCVxuL3htLAorCQlsaWtl ID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQlzY2hlbWFfb25seSA9PiAxLAorCQkJc2VjdGlvbl9w cmVfZGF0YSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJYmluYXJ5X3VwZ3JhZGUgPT4g MSwKKwkJCXdpdGhfZXh0ZW5zaW9uID0+IDEsCisJCQl3aXRob3V0X2V4dGVuc2lvbiA9PiAxCisJ CX0KKwl9LAorCisJJ0NSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1hJyA9PiB7CisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBTQ0hFTUEgdGVzdF9leHRfb3duZWRfc2NoZW1h O1xFCisJCQlcbi94bSwKKwkJbGlrZSA9PiB7fSwKKwl9LAorCisJJ0FMVEVSIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vd25lZF9zY2hlbWEgQUREIFNDSEVNQSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEnID0+ IHsKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYSBBREQgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTtcRQorCQkJXG4veG0sCisJ CWxpa2UgPT4ge30sCisJfSwKKwogCSdDUkVBVEUgUk9MRSByZWdyZXNzX2R1bXBfdGVzdF9yb2xl JyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiAxLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUk9M RSByZWdyZXNzX2R1bXBfdGVzdF9yb2xlOycsCgpiYXNlLWNvbW1pdDogYWRiYWQ4MzNmM2Q5ZTkx NzZlOGQ3MDA1ZjE1ZWE2MDU2OTAwMjI3ZAotLSAKMi41Mi4wCgo= --1ad9528f3ab6d58eabbc2943cbed7ca9847d17d403c06ae72e580b346164 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot.changes.diff Content-Type: text/x-patch; charset=utf-8; name=nocfbot.changes.diff Y29tbWl0IGE3Mzg3NDU2ODFhYjQzNWQ5MTU1N2YwNWU2YzhiZGFkMTVmODk4ZDkKQXV0aG9yOiBK ZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5sPgpEYXRlOiAgIFR1ZSBGZWIgMTAg MjM6MjM6NTUgMjAyNiArMDEwMAoKICAgIEFkZCB0ZXN0CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24u YwppbmRleCA3N2JjNmE4Mjk4Ny4uMDNiM2RlMzU3YmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lv bi5jCkBAIC0xMjQzLDYgKzEyNDMsNDQgQEAgZXh0ZW5zaW9uX2lzX3RydXN0ZWQoRXh0ZW5zaW9u Q29udHJvbEZpbGUgKmNvbnRyb2wpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogRW5mb3Jj ZSBzdXBlcnVzZXIgcmVxdWlyZW1lbnRzIGZvciBleHRlbnNpb24gb3BlcmF0aW9ucy4KKyAqCisg KiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHN3aXRjaCB0byBzdXBlcnVzZXIgZm9yIHRydXN0 ZWQgZXh0ZW5zaW9ucy4KKyAqIFRocm93cyBhbiBlcnJvciBpZiBzdXBlcnVzZXIgaXMgcmVxdWly ZWQgYnV0IG5vdCBhdmFpbGFibGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBi ZSBjYWxsZWQgYWZ0ZXIgY2hvb3NpbmcgdGhlIGFwcHJvcHJpYXRlCisgKiBjb250cm9sIGZpbGUg KGluY2x1ZGluZyBhbnkgc2Vjb25kYXJ5IGNvbnRyb2wgZmlsZXMgZm9yIHVwZGF0ZXMpLgorICov CitzdGF0aWMgYm9vbAorY2hlY2tfZXh0ZW5zaW9uX3N1cGVydXNlcl9yZXF1aXJlbWVudHMoRXh0 ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCisJCQkJCQkJCQkgICBjb25zdCBjaGFyICpmcm9t X3ZlcnNpb24pCit7CisJaWYgKGNvbnRyb2wtPnN1cGVydXNlciAmJiAhc3VwZXJ1c2VyKCkpCisJ eworCQlpZiAoZXh0ZW5zaW9uX2lzX3RydXN0ZWQoY29udHJvbCkpCisJCQlyZXR1cm4gdHJ1ZTsK KwkJZWxzZSBpZiAoZnJvbV92ZXJzaW9uID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJybXNn KCJwZXJtaXNzaW9uIGRlbmllZCB0byBjcmVhdGUgZXh0ZW5zaW9uIFwiJXNcIiIsCisJCQkJCQkJ Y29udHJvbC0+bmFtZSksCisJCQkJCSBjb250cm9sLT50cnVzdGVkCisJCQkJCSA/IGVycmhpbnQo Ik11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGN1cnJlbnQgZGF0YWJhc2UgdG8gY3JlYXRl IHRoaXMgZXh0ZW5zaW9uLiIpCisJCQkJCSA6IGVycmhpbnQoIk11c3QgYmUgc3VwZXJ1c2VyIHRv IGNyZWF0ZSB0aGlzIGV4dGVuc2lvbi4iKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJy bXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byB1cGRhdGUgZXh0ZW5zaW9uIFwiJXNcIiIsCisJCQkJ CQkJY29udHJvbC0+bmFtZSksCisJCQkJCSBjb250cm9sLT50cnVzdGVkCisJCQkJCSA/IGVycmhp bnQoIk11c3QgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIG9uIGN1cnJlbnQgZGF0YWJhc2UgdG8gdXBk YXRlIHRoaXMgZXh0ZW5zaW9uLiIpCisJCQkJCSA6IGVycmhpbnQoIk11c3QgYmUgc3VwZXJ1c2Vy IHRvIHVwZGF0ZSB0aGlzIGV4dGVuc2lvbi4iKSkpOworCX0KKworCXJldHVybiBmYWxzZTsKK30K KwogLyoKICAqIEV4ZWN1dGUgdGhlIGFwcHJvcHJpYXRlIHNjcmlwdCBmaWxlIGZvciBpbnN0YWxs aW5nIG9yIHVwZGF0aW5nIHRoZSBleHRlbnNpb24KICAqCkBAIC0xMjcxLDI3ICsxMzA5LDcgQEAg ZXhlY3V0ZV9leHRlbnNpb25fc2NyaXB0KE9pZCBleHRlbnNpb25PaWQsIEV4dGVuc2lvbkNvbnRy b2xGaWxlICpjb250cm9sLAogCSAqIGhlcmUgc28gdGhhdCB0aGUgY29udHJvbCBmbGFncyBhcmUg Y29ycmVjdGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmlnaHQKIAkgKiBzY3JpcHQocykgaWYgdGhl eSBoYXBwZW4gdG8gYmUgc2V0IGluIHNlY29uZGFyeSBjb250cm9sIGZpbGVzLgogCSAqLwotCWlm IChjb250cm9sLT5zdXBlcnVzZXIgJiYgIXN1cGVydXNlcigpKQotCXsKLQkJaWYgKGV4dGVuc2lv bl9pc190cnVzdGVkKGNvbnRyb2wpKQotCQkJc3dpdGNoX3RvX3N1cGVydXNlciA9IHRydWU7Ci0J CWVsc2UgaWYgKGZyb21fdmVyc2lvbiA9PSBOVUxMKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKLQkJCQkJIGVycm1zZygi cGVybWlzc2lvbiBkZW5pZWQgdG8gY3JlYXRlIGV4dGVuc2lvbiBcIiVzXCIiLAotCQkJCQkJCWNv bnRyb2wtPm5hbWUpLAotCQkJCQkgY29udHJvbC0+dHJ1c3RlZAotCQkJCQkgPyBlcnJoaW50KCJN dXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBjdXJyZW50IGRhdGFiYXNlIHRvIGNyZWF0ZSB0 aGlzIGV4dGVuc2lvbi4iKQotCQkJCQkgOiBlcnJoaW50KCJNdXN0IGJlIHN1cGVydXNlciB0byBj cmVhdGUgdGhpcyBleHRlbnNpb24uIikpKTsKLQkJZWxzZQotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKLQkJCQkJIGVycm1z ZygicGVybWlzc2lvbiBkZW5pZWQgdG8gdXBkYXRlIGV4dGVuc2lvbiBcIiVzXCIiLAotCQkJCQkJ CWNvbnRyb2wtPm5hbWUpLAotCQkJCQkgY29udHJvbC0+dHJ1c3RlZAotCQkJCQkgPyBlcnJoaW50 KCJNdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBjdXJyZW50IGRhdGFiYXNlIHRvIHVwZGF0 ZSB0aGlzIGV4dGVuc2lvbi4iKQotCQkJCQkgOiBlcnJoaW50KCJNdXN0IGJlIHN1cGVydXNlciB0 byB1cGRhdGUgdGhpcyBleHRlbnNpb24uIikpKTsKLQl9CisJc3dpdGNoX3RvX3N1cGVydXNlciA9 IGNoZWNrX2V4dGVuc2lvbl9zdXBlcnVzZXJfcmVxdWlyZW1lbnRzKGNvbnRyb2wsIGZyb21fdmVy c2lvbik7CiAKIAlmaWxlbmFtZSA9IGdldF9leHRlbnNpb25fc2NyaXB0X2ZpbGVuYW1lKGNvbnRy b2wsIGZyb21fdmVyc2lvbiwgdmVyc2lvbik7CiAKQEAgLTE4NTQsNyArMTg3Miw3IEBAIENyZWF0 ZVNjaGVtYUZvckV4dGVuc2lvbihjaGFyICpzY2hlbWFOYW1lKQogfQogCiAvKgotICogQ3JlYXRl IGEgb3duZWQgc2NoZW1hIHdpdGggdGhlIGdpdmVuIG5hbWUsIGFzIHBhcnQgb2YgQ1JFQVRFIEVY VEVOU0lPTiwgYW5kCisgKiBDcmVhdGUgYW4gb3duZWQgc2NoZW1hIHdpdGggdGhlIGdpdmVuIG5h bWUsIGFzIHBhcnQgb2YgQ1JFQVRFIEVYVEVOU0lPTiwgYW5kCiAgKiBmYWlscyBpZiB0aGUgc2No ZW1hIGFscmVhZHkgZXhpc3QuCiAgKi8KIHN0YXRpYyBPaWQKQEAgLTIwMTcsNiArMjAzNSw5IEBA IENyZWF0ZUV4dGVuc2lvbkludGVybmFsKGNoYXIgKmV4dGVuc2lvbk5hbWUsCiAJT2lkCQkJZXh0 ZW5zaW9uT2lkOwogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAlMaXN0Q2VsbCAgICpsYzsKKwli b29sCQlzd2l0Y2hfdG9fc3VwZXJ1c2VyID0gZmFsc2U7CisJT2lkCQkJc2F2ZV91c2VyaWQgPSAw OworCWludAkJCXNhdmVfc2VjX2NvbnRleHQgPSAwOwogCiAJLyoKIAkgKiBSZWFkIHRoZSBwcmlt YXJ5IGNvbnRyb2wgZmlsZS4gIE5vdGUgd2UgYXNzdW1lIHRoYXQgaXQgZG9lcyBub3QgY29udGFp bgpAQCAtMjA4NCw4ICsyMTA1LDI3IEBAIENyZWF0ZUV4dGVuc2lvbkludGVybmFsKGNoYXIgKmV4 dGVuc2lvbk5hbWUsCiAJICovCiAJY29udHJvbCA9IHJlYWRfZXh0ZW5zaW9uX2F1eF9jb250cm9s X2ZpbGUocGNvbnRyb2wsIHZlcnNpb25OYW1lKTsKIAorCS8qCisJICogRm9yIHRydXN0ZWQgZXh0 ZW5zaW9ucyB3aXRoIG93bmVkIHNjaGVtYXMsIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBzY2hlbWEK KwkgKiBhcyBzdXBlcnVzZXIgdG8gZW5zdXJlIHByb3BlciBvd25lcnNoaXAuCisJICovCisJaWYg KGNvbnRyb2wtPm93bmVkX3NjaGVtYSkKKwl7CisJCXN3aXRjaF90b19zdXBlcnVzZXIgPSBjaGVj a19leHRlbnNpb25fc3VwZXJ1c2VyX3JlcXVpcmVtZW50cyhjb250cm9sLCBOVUxMKTsKKwkJaWYg KHN3aXRjaF90b19zdXBlcnVzZXIpCisJCXsKKwkJCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNh dmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJCQlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KEJPT1RTVFJBUF9TVVBFUlVTRVJJRCwKKwkJCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNF Q1VSSVRZX0xPQ0FMX1VTRVJJRF9DSEFOR0UpOworCQl9CisJfQorCiAJc2NoZW1hT2lkID0gR2V0 T3JDcmVhdGVTY2hlbWFGb3JFeHRlbnNpb24oJnNjaGVtYU5hbWUsIGNvbnRyb2wsIGNhc2NhZGUp OwogCisJLyogUmVzdG9yZSBhdXRoZW50aWNhdGlvbiBzdGF0ZSBhZnRlciBzY2hlbWEgY3JlYXRp b24gaWYgbmVlZGVkICovCisJaWYgKHN3aXRjaF90b19zdXBlcnVzZXIpCisJCVNldFVzZXJJZEFu ZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworCiAJLyoKIAkgKiBN YWtlIG5vdGUgaWYgYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGhhcyBiZWVuIGFjY2Vzc2VkIGluIHRo aXMKIAkgKiB0cmFuc2FjdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFr ZWZpbGUKaW5kZXggYTY1OTRjMTlkN2UuLjBhN2NmNjkyMjE0IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy9NYWtlZmlsZQpAQCAtMTAsNyArMTAsOCBAQCBFWFRFTlNJT04gPSB0 ZXN0X2V4dDEgdGVzdF9leHQyIHRlc3RfZXh0MyB0ZXN0X2V4dDQgdGVzdF9leHQ1IHRlc3RfZXh0 NiBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9ldnR0cmlnIFwKICAgICAgICAgICAgIHRlc3RfZXh0 X3NldF9zY2hlbWEgXAogICAgICAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVtYTEgdGVzdF9leHRf cmVxX3NjaGVtYTIgdGVzdF9leHRfcmVxX3NjaGVtYTMgXAotICAgICAgICAgICAgdGVzdF9leHRf b3duZWRfc2NoZW1hIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZQorICAgICAgICAg ICAgdGVzdF9leHRfb3duZWRfc2NoZW1hIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl ciBcCisgICAgICAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZCB0ZXN0X2V4dF9v d25lZF9zY2hlbWFfcmVsb2NhdGFibGUKIAogREFUQSA9IHRlc3RfZXh0MS0tMS4wLnNxbCB0ZXN0 X2V4dDItLTEuMC5zcWwgdGVzdF9leHQzLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dDQtLTEu MC5zcWwgdGVzdF9leHQ1LS0xLjAuc3FsIHRlc3RfZXh0Ni0tMS4wLnNxbCBcCkBAIC0yOCw2ICsy OSwxMSBAQCBEQVRBID0gdGVzdF9leHQxLS0xLjAuc3FsIHRlc3RfZXh0Mi0tMS4wLnNxbCB0ZXN0 X2V4dDMtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEyLS0xLjAuc3FsIFwK ICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMy0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRf b3duZWRfc2NoZW1hLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEu MC0tMS4xLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0x LjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXItLTEuMC0t MS4xLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC5zcWwg XAorICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkLS0xLjAtLTEuMS5zcWwgXAog ICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbAogCiBSRUdS RVNTID0gdGVzdF9leHRlbnNpb25zIHRlc3RfZXh0ZGVwZW5kCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0IGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25z Lm91dAppbmRleCBiODJiMzk3OWE5MC4uMTgyMGU3NmQ3NDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNp b25zLm91dApAQCAtNjkwLDcgKzY5MCwzNiBAQCBPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9l eHRfb3duZWRfc2NoZW1hIgogIHNjaGVtYSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEKICgyIHJvd3Mp CiAKKy0tIFRlc3QgQUxURVIgRVhURU5TSU9OIFVQREFURSB3aXRoIG93bmVkIHNjaGVtYQorQUxU RVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBVUERBVEUgVE8gJzEuMSc7CitcZHgr IHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9v d25lZF9zY2hlbWEiCisgICAgICAgICAgIE9iamVjdCBkZXNjcmlwdGlvbiAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmdW5jdGlvbiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWEub3duZWQxKCkKKyBmdW5jdGlvbiB0ZXN0X2V4dF9vd25lZF9zY2hl bWEub3duZWQyKCkKKyBzY2hlbWEgdGVzdF9leHRfb3duZWRfc2NoZW1hCisoMyByb3dzKQorCist LSBWZXJpZnkgdGhhdCB0aGUgb3duZWQgc2NoZW1hIGlzIGRyb3BwZWQgdG9nZXRoZXIgd2l0aCB0 aGUgZXh0ZW5zaW9uCiBEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitTRUxF Q1QgQ09VTlQoKikgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9ICd0ZXN0X2V4dF9v d25lZF9zY2hlbWEnOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKKy0tIFRl c3QgZHJvcCBiZWhhdmlvciB3aXRoIG5vbi1leHRlbnNpb24gb2JqZWN0cyBpbiB0aGUgb3duZWQg c2NoZW1hCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0NSRUFURSBG VU5DVElPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEubm9uX2V4dF9mdW5jKCkgUkVUVVJOUyBpbnQg TEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQkOworLS0gRmFpbHMgYmVjYXVzZSBvZiB0aGUg bm9uLWV4dGVuc2lvbiBvYmplY3QKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVt YTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgZXh0ZW5zaW9uIHRlc3RfZXh0X293bmVkX3NjaGVtYSBi ZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBmdW5jdGlvbiB0ZXN0 X2V4dF9vd25lZF9zY2hlbWEubm9uX2V4dF9mdW5jKCkgZGVwZW5kcyBvbiBzY2hlbWEgdGVzdF9l eHRfb3duZWRfc2NoZW1hCitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUg ZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLS0gU3VjY2VlZHMgYW5kIGNhc2NhZGVzIHRvIHRoZSBu b24tZXh0ZW5zaW9uIG9iamVjdAorRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1h IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHRlc3RfZXh0X293 bmVkX3NjaGVtYS5ub25fZXh0X2Z1bmMoKQogQ1JFQVRFIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5n OwogLS0gRmFpbHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2NoZW1hIHRvIGJlIHByb3ZpZGVk CiBDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTQ0hF TUEgYWxyZWFkeV9leGlzdGluZzsKQEAgLTcyMSwzICs3NTAsNzcgQEAgT2JqZWN0cyBpbiBleHRl bnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSIKICgyIHJvd3MpCiAKIERS T1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKKy0tIFZlcmlm eSB0aGUgc2NoZW1hIHdhcyBkcm9wcGVkIHdpdGggdGhlIGV4dGVuc2lvbgorRFJPUCBTQ0hFTUEg c29tZV9vdGhlcl9uYW1lOworRVJST1I6ICBzY2hlbWEgInNvbWVfb3RoZXJfbmFtZSIgZG9lcyBu b3QgZXhpc3QKKy0tIFRlc3Qgb3duZWRfc2NoZW1hICsgc3VwZXJ1c2VyPWZhbHNlIGV4dGVuc2lv bgorQ1JFQVRFIFVTRVIgdGVzdF9leHRfdXNlcjsKK0dSQU5UIENSRUFURSBPTiBEQVRBQkFTRSBy ZWdyZXNzaW9uX3Rlc3RfZXh0ZW5zaW9ucyBUTyB0ZXN0X2V4dF91c2VyOworU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiB0ZXN0X2V4dF91c2VyOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9v d25lZF9zY2hlbWFfbm9zdXBlcnVzZXI7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1 cGVydXNlcjsKK09iamVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9z dXBlcnVzZXIiCisgICAgICAgICAgICAgICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ZnVuY3Rpb24gdGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIub3duZWQxKCkKKyBzY2hlbWEg dGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIKKygyIHJvd3MpCisKKy0tIENoZWNrIHRoYXQg c2NoZW1hIGlzIG93bmVkIGJ5IHRoZSBjcmVhdGluZyB1c2VyIChub3QgYm9vdHN0cmFwIHN1cGVy dXNlcikKK1NFTEVDVCBuLm5zcG5hbWUsIG4ubnNwb3duZXIgPSBjdXJyZW50X3VzZXI6OnJlZ3Jv bGUgYXMgb3duZWRfYnlfY3VycmVudF91c2VyCitGUk9NIHBnX25hbWVzcGFjZSBuCitXSEVSRSBu Lm5zcG5hbWUgPSAndGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXInOworICAgICAgICAgICAg bnNwbmFtZSAgICAgICAgICAgIHwgb3duZWRfYnlfY3VycmVudF91c2VyIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRlc3Rfb3duZWRf c2NoZW1hX25vc3VwZXJ1c2VyIHwgdAorKDEgcm93KQorCistLSBVcGdyYWRlcyBzaG91bGQgd29y ayBmb3Igc3VwZXJ1c2VyPWZhbHNlIGV4dGVuc2lvbnMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4 dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4 dF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXI7CitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9l eHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyIgorICAgICAgICAgICAgICAgT2JqZWN0IGRlc2Ny aXB0aW9uICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2Vy Lm93bmVkMSgpCisgZnVuY3Rpb24gdGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIub3duZWQy KCkKKyBzY2hlbWEgdGVzdF9vd25lZF9zY2hlbWFfbm9zdXBlcnVzZXIKKygzIHJvd3MpCisKK0RS T1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsKK1JFU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTjsKKy0tIFRlc3Qgb3duZWRfc2NoZW1hICsgdHJ1c3RlZD10cnVl IGV4dGVuc2lvbgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiB0ZXN0X2V4dF91c2VyOworQ1JF QVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsKK1xkeCsgdGVzdF9l eHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitPYmplY3RzIGluIGV4dGVuc2lvbiAidGVzdF9leHRf b3duZWRfc2NoZW1hX3RydXN0ZWQiCisgICAgICAgICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQub3duZWQxKCkKKyBzY2hlbWEg dGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZAorKDIgcm93cykKKworLS0gQ2hlY2sgdGhhdCBzY2hl bWEgaXMgb3duZWQgYnkgYm9vdHN0cmFwIHN1cGVydXNlciBmb3IgdHJ1c3RlZCBleHRlbnNpb24s CistLSBldmVuIHRob3VnaCB0aGUgZXh0ZW5zaW9uIGlzIG93bmVkIGJ5IHRlc3RfZXh0X3VzZXIK K1NFTEVDVCBuLm5zcG5hbWUsIG4ubnNwb3duZXIgPSAxMCBhcyBvd25lZF9ieV9ib290c3RyYXBf c3VwZXJ1c2VyCitGUk9NIHBnX25hbWVzcGFjZSBuCitXSEVSRSBuLm5zcG5hbWUgPSAndGVzdF9v d25lZF9zY2hlbWFfdHJ1c3RlZCc7CisgICAgICAgICAgbnNwbmFtZSAgICAgICAgICB8IG93bmVk X2J5X2Jvb3RzdHJhcF9zdXBlcnVzZXIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZCB8 IHQKKygxIHJvdykKKworLS0gVXBkYXRpbmcgdHJ1c3RlZCBleHRlbnNpb25zIHNob3VsZCB3b3Jr IG5vcm1hbGx5CitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQg VVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsKK09i amVjdHMgaW4gZXh0ZW5zaW9uICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZCIKKyAgICAg ICAgICAgICBPYmplY3QgZGVzY3JpcHRpb24gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZnVuY3Rpb24gdGVzdF9vd25lZF9zY2hl bWFfdHJ1c3RlZC5vd25lZDEoKQorIGZ1bmN0aW9uIHRlc3Rfb3duZWRfc2NoZW1hX3RydXN0ZWQu b3duZWQyKCkKKyBzY2hlbWEgdGVzdF9vd25lZF9zY2hlbWFfdHJ1c3RlZAorKDMgcm93cykKKwor RFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQ7CitSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CitSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Npb25f dGVzdF9leHRlbnNpb25zIEZST00gdGVzdF9leHRfdXNlcjsKK0RST1AgVVNFUiB0ZXN0X2V4dF91 c2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvbWVzb24u YnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZAppbmRl eCAzZTI1YzQ0NjZlYy4uMDE5ZTBkMmEyNDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL21lc29uLmJ1aWxkCkBAIC00NSw3ICs0NSwxNCBAQCB0ZXN0X2luc3RhbGxfZGF0 YSArPSBmaWxlcygKICAgJ3Rlc3RfZXh0X3NldF9zY2hlbWEtLTEuMC5zcWwnLAogICAndGVzdF9l eHRfc2V0X3NjaGVtYS5jb250cm9sJywKICAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLnNx bCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC0tMS4xLnNxbCcsCiAgICd0ZXN0X2V4 dF9vd25lZF9zY2hlbWEuY29udHJvbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBl cnVzZXItLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLS0x LjAtLTEuMS5zcWwnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX25vc3VwZXJ1c2VyLmNvbnRy b2wnLAorICAndGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC5zcWwnLAorICAndGVz dF9leHRfb3duZWRfc2NoZW1hX3RydXN0ZWQtLTEuMC0tMS4xLnNxbCcsCisgICd0ZXN0X2V4dF9v d25lZF9zY2hlbWFfdHJ1c3RlZC5jb250cm9sJywKICAgJ3Rlc3RfZXh0X293bmVkX3NjaGVtYV9y ZWxvY2F0YWJsZS0tMS4wLnNxbCcsCiAgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFi bGUuY29udHJvbCcsCiApCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3NxbC90ZXN0X2V4dGVuc2lvbnMuc3FsCmluZGV4IGE5Nzg2NmQwMGVhLi43MDAwMzNm YzEzYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rl c3RfZXh0ZW5zaW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv c3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwKQEAgLTMxNiw3ICszMTYsMjAgQEAgQ1JFQVRFIEVYVEVO U0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgU0NIRU1BIHRlc3Rfc2NoZW1hOwogRFJPUCBTQ0hF TUEgdGVzdF9leHRfb3duZWRfc2NoZW1hOwogQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25l ZF9zY2hlbWE7CiBcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIFRlc3QgQUxURVIgRVhU RU5TSU9OIFVQREFURSB3aXRoIG93bmVkIHNjaGVtYQorQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0 X293bmVkX3NjaGVtYSBVUERBVEUgVE8gJzEuMSc7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVt YTsKKy0tIFZlcmlmeSB0aGF0IHRoZSBvd25lZCBzY2hlbWEgaXMgZHJvcHBlZCB0b2dldGhlciB3 aXRoIHRoZSBleHRlbnNpb24KK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYTsK K1NFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0gJ3Rlc3Rf ZXh0X293bmVkX3NjaGVtYSc7CisKKy0tIFRlc3QgZHJvcCBiZWhhdmlvciB3aXRoIG5vbi1leHRl bnNpb24gb2JqZWN0cyBpbiB0aGUgb3duZWQgc2NoZW1hCitDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X293bmVkX3NjaGVtYTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEu bm9uX2V4dF9mdW5jKCkgUkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIEFTICQkIFNFTEVDVCAxICQk OworLS0gRmFpbHMgYmVjYXVzZSBvZiB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKIERST1AgRVhU RU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKKy0tIFN1Y2NlZWRzIGFuZCBjYXNjYWRlcyB0 byB0aGUgbm9uLWV4dGVuc2lvbiBvYmplY3QKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVk X3NjaGVtYSBDQVNDQURFOwogCiBDUkVBVEUgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CiAtLSBG YWlscyBmb3IgYW4gYWxyZWFkeSBleGlzdGluZyBzY2hlbWEgdG8gYmUgcHJvdmlkZWQKQEAgLTMz MCwzICszNDMsMzggQEAgQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZSBTRVQgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CiBBTFRFUiBFWFRFTlNJT04gdGVz dF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNFVCBTQ0hFTUEgc29tZV9vdGhlcl9uYW1l OwogXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKIERST1AgRVhURU5TSU9O IHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKKy0tIFZlcmlmeSB0aGUgc2NoZW1h IHdhcyBkcm9wcGVkIHdpdGggdGhlIGV4dGVuc2lvbgorRFJPUCBTQ0hFTUEgc29tZV9vdGhlcl9u YW1lOworCistLSBUZXN0IG93bmVkX3NjaGVtYSArIHN1cGVydXNlcj1mYWxzZSBleHRlbnNpb24K K0NSRUFURSBVU0VSIHRlc3RfZXh0X3VzZXI7CitHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgcmVn cmVzc2lvbl90ZXN0X2V4dGVuc2lvbnMgVE8gdGVzdF9leHRfdXNlcjsKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gdGVzdF9leHRfdXNlcjsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3du ZWRfc2NoZW1hX25vc3VwZXJ1c2VyOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfbm9zdXBl cnVzZXI7CistLSBDaGVjayB0aGF0IHNjaGVtYSBpcyBvd25lZCBieSB0aGUgY3JlYXRpbmcgdXNl ciAobm90IGJvb3RzdHJhcCBzdXBlcnVzZXIpCitTRUxFQ1Qgbi5uc3BuYW1lLCBuLm5zcG93bmVy ID0gY3VycmVudF91c2VyOjpyZWdyb2xlIGFzIG93bmVkX2J5X2N1cnJlbnRfdXNlcgorRlJPTSBw Z19uYW1lc3BhY2UgbgorV0hFUkUgbi5uc3BuYW1lID0gJ3Rlc3Rfb3duZWRfc2NoZW1hX25vc3Vw ZXJ1c2VyJzsKKy0tIFVwZ3JhZGVzIHNob3VsZCB3b3JrIGZvciBzdXBlcnVzZXI9ZmFsc2UgZXh0 ZW5zaW9ucworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl ciBVUERBVEUgVE8gJzEuMSc7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNl cjsKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9ub3N1cGVydXNlcjsKK1JF U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworLS0gVGVzdCBvd25lZF9zY2hlbWEgKyB0cnVz dGVkPXRydWUgZXh0ZW5zaW9uCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHRlc3RfZXh0X3Vz ZXI7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkOworXGR4 KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsKKy0tIENoZWNrIHRoYXQgc2NoZW1hIGlz IG93bmVkIGJ5IGJvb3RzdHJhcCBzdXBlcnVzZXIgZm9yIHRydXN0ZWQgZXh0ZW5zaW9uLAorLS0g ZXZlbiB0aG91Z2ggdGhlIGV4dGVuc2lvbiBpcyBvd25lZCBieSB0ZXN0X2V4dF91c2VyCitTRUxF Q1Qgbi5uc3BuYW1lLCBuLm5zcG93bmVyID0gMTAgYXMgb3duZWRfYnlfYm9vdHN0cmFwX3N1cGVy dXNlcgorRlJPTSBwZ19uYW1lc3BhY2UgbgorV0hFUkUgbi5uc3BuYW1lID0gJ3Rlc3Rfb3duZWRf c2NoZW1hX3RydXN0ZWQnOworLS0gVXBkYXRpbmcgdHJ1c3RlZCBleHRlbnNpb25zIHNob3VsZCB3 b3JrIG5vcm1hbGx5CitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3RydXN0 ZWQgVVBEQVRFIFRPICcxLjEnOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfdHJ1c3RlZDsK K0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV90cnVzdGVkOworUkVTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OOworUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9u X3Rlc3RfZXh0ZW5zaW9ucyBGUk9NIHRlc3RfZXh0X3VzZXI7CitEUk9QIFVTRVIgdGVzdF9leHRf dXNlcjsK --1ad9528f3ab6d58eabbc2943cbed7ca9847d17d403c06ae72e580b346164--