Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rm8qR-006FfT-Ka for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 08:59:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rm8qQ-00H9LN-6c for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 08:59:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rm8qP-00H9LE-M8 for pgsql-hackers@lists.postgresql.org; Mon, 18 Mar 2024 08:59:46 +0000 Received: from mail-il1-x135.google.com ([2607:f8b0:4864:20::135]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rm8qL-0059VU-Lt for pgsql-hackers@lists.postgresql.org; Mon, 18 Mar 2024 08:59:45 +0000 Received: by mail-il1-x135.google.com with SMTP id e9e14a558f8ab-366b97b5796so3418805ab.1 for ; Mon, 18 Mar 2024 01:59:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710752380; x=1711357180; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pENjx2CK0KcZKuaU9xNRsCpE6+He8JWxJfijdU2dmjE=; b=msS4TXPRd9lfoJ58L5gJt92gDxMyMul46VJ4mFIPJMEQ5YDP97MYo3CuM5qoKYT0NA KsLZjrYV7fAZ03P9F7xhW2Dria9rAeJ27xRGOPbfjIhgetO34KAsukctXKTu9s3gEdiI 7/U+7ouR5WY11ywAAC2D/xmrxF3tXDNuU8MwCB8LZHBemX+KgzbGewaIkP+JzohXcQVH m4HH66rcV8SvHJIb/ciQlI5a3rmH8jeUID6Z/uDuPCZO2lOlQJXI2Qccyw189jAMNsi7 4wafVRqQJ+SmdlOm/MzPyxFnOeMhW8LGdM9/uTDhEDkvbUOfMwLXb/8Dgl/oquQJ47M6 OOeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710752380; x=1711357180; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pENjx2CK0KcZKuaU9xNRsCpE6+He8JWxJfijdU2dmjE=; b=aKlnjseT3ZQ7IT7skNFNYvhElT+NPkIbenMeDiI4tG3ZGC+uhNpKrKPzzDg7dZWQdW qS9d6AXK7C0NPolVuPFyf9qgujLNCnIr2A5+y8MWYJ4q3KOBHOmyVeX6qepkZVbcwS92 1J7TZynrDCZxDBTYXYbsluSlxz4XXVVZbhjMQ5k3ursvfFQyoAT8s2qy0U3fHBfeNicE suwzkNAdkcF3VzaBAzGb1wReiZHX0Q5gbgw2QeuwUPxLUudoGHmU7dAlTuCbyilkHFfs 3D29JLNLkSf4JXXkPwb+GFkYzmrsAC9bykNmMtr9GXtgWuZqLwOn+ij7hpMQD+NgHeWl BGxA== X-Forwarded-Encrypted: i=1; AJvYcCVNYsSx1PgUT83gv7qH7JoWBd3Dq9sLvch3eWFT5dsV8CYhPqa0sRTvcpYF4E8YggmCRg1tZ+lcvQkyFfs1xPzi0aNs1BirfoyAc7K16NANXX0H X-Gm-Message-State: AOJu0YwgZmchw8g6wj1jG/J+CPhi3eY6JSm6kIKtfjfszgNXjTx6fybo wQCXdfO11plckwk7J3kgRsrd/DhxyoNl7z9lKzw+PJdW6tGR6haKJTdCePxcW6g4aBarUXD16Dk rK7YvJcpk8ktyqYm9227tNc2usqQ= X-Google-Smtp-Source: AGHT+IG1/Mc4U5WVaLSCW9zjqBClxOCqBtOb6eRWyr+7DABJFioRA38dgJz9bK6iAue3LnMz8Bm3FxJY37FGnQfhCks= X-Received: by 2002:a05:6e02:1a6b:b0:366:61b8:6ced with SMTP id w11-20020a056e021a6b00b0036661b86cedmr11560246ilv.13.1710752379879; Mon, 18 Mar 2024 01:59:39 -0700 (PDT) MIME-Version: 1.0 References: <202401261557.4uvwutsn5dwa@alvherre.pgsql> In-Reply-To: From: Dean Rasheed Date: Mon, 18 Mar 2024 08:59:28 +0000 Message-ID: Subject: Re: MERGE ... WHEN NOT MATCHED BY SOURCE To: Alvaro Herrera Cc: Peter Smith , Vik Fearing , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e6e8420613eb9350" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e6e8420613eb9350 Content-Type: text/plain; charset="UTF-8" On Wed, 13 Mar 2024 at 14:32, Dean Rasheed wrote: > > Rebased version attached. > Rebased version attached, on top of c649fa24a4 (MERGE ... RETURNING support). Aside from some cosmetic stuff, I've updated several tests to test this together with RETURNING. The updated isolation test tests the new interesting case where a concurrent update causes a matched case to become not matched, and there are both NOT MATCHED BY SOURCE and NOT MATCHED BY TARGET actions to execute, and RETURNING is specified so that it is forced to defer the NOT MATCHED BY TARGET action until the next invocation of ExecModifyTable(), in order to return the rows from both not matched actions. I also tried to tidy up ExecMergeMatched() a little --- since we know that it's only ever called with matched = true, it's simpler to just Assert that at the top, and then only touch it in the few cases where it needs to be changed to false. A lot of the updates are comment updates, to try to make it clearer how concurrent updates are handled, since that's a little more complex with this patch. Regards, Dean --000000000000e6e8420613eb9350 Content-Type: text/x-patch; charset="US-ASCII"; name="support-merge-when-not-matched-by-source-v12.patch" Content-Disposition: attachment; filename="support-merge-when-not-matched-by-source-v12.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltwpn1ce0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tdmNjLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbXZjYy5z Z21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjgzZDQuLjM4MGQwYzkKLS0tIGEvZG9j L3NyYy9zZ21sL212Y2Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbXZjYy5zZ21sCkBAIC0zOTQs MTAgKzM5NCwxNCBAQAogICAgIGNvbmRpdGlvbnMgZm9yIGVhY2ggYWN0aW9uIGFyZSByZS1ldmFs dWF0ZWQgb24gdGhlIHVwZGF0ZWQgdmVyc2lvbiBvZgogICAgIHRoZSByb3csIHN0YXJ0aW5nIGZy b20gdGhlIGZpcnN0IGFjdGlvbiwgZXZlbiBpZiB0aGUgYWN0aW9uIHRoYXQgaGFkCiAgICAgb3Jp Z2luYWxseSBtYXRjaGVkIGFwcGVhcnMgbGF0ZXIgaW4gdGhlIGxpc3Qgb2YgYWN0aW9ucy4KLSAg ICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIHJvdyBpcyBjb25jdXJyZW50bHkgdXBkYXRlZCBv ciBkZWxldGVkIHNvCi0gICAgdGhhdCB0aGUgam9pbiBjb25kaXRpb24gZmFpbHMsIHRoZW4gPGNv bW1hbmQ+TUVSR0U8L2NvbW1hbmQ+IHdpbGwKLSAgICBldmFsdWF0ZSB0aGUgY29uZGl0aW9uJ3Mg PGxpdGVyYWw+Tk9UIE1BVENIRUQ8L2xpdGVyYWw+IGFjdGlvbnMgbmV4dCwKLSAgICBhbmQgZXhl Y3V0ZSB0aGUgZmlyc3Qgb25lIHRoYXQgc3VjY2VlZHMuCisgICAgT24gdGhlIG90aGVyIGhhbmQs IGlmIHRoZSByb3cgaXMgY29uY3VycmVudGx5IHVwZGF0ZWQgc28gdGhhdCB0aGUgam9pbgorICAg IGNvbmRpdGlvbiBmYWlscywgdGhlbiA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4gd2lsbCBldmFs dWF0ZSB0aGUKKyAgICBjb21tYW5kJ3MgPGxpdGVyYWw+Tk9UIE1BVENIRUQgQlkgU09VUkNFPC9s aXRlcmFsPiBhbmQKKyAgICA8bGl0ZXJhbD5OT1QgTUFUQ0hFRCBbQlkgVEFSR0VUXTwvbGl0ZXJh bD4gYWN0aW9ucyBuZXh0LCBhbmQgZXhlY3V0ZQorICAgIHRoZSBmaXJzdCBvbmUgb2YgZWFjaCBr aW5kIHRoYXQgc3VjY2VlZHMuCisgICAgSWYgdGhlIHJvdyBpcyBjb25jdXJyZW50bHkgZGVsZXRl ZCwgdGhlbiA8Y29tbWFuZD5NRVJHRTwvY29tbWFuZD4KKyAgICB3aWxsIGV2YWx1YXRlIHRoZSBj b21tYW5kJ3MgPGxpdGVyYWw+Tk9UIE1BVENIRUQgW0JZIFRBUkdFVF08L2xpdGVyYWw+CisgICAg YWN0aW9ucywgYW5kIGV4ZWN1dGUgdGhlIGZpcnN0IG9uZSB0aGF0IHN1Y2NlZWRzLgogICAgIElm IDxjb21tYW5kPk1FUkdFPC9jb21tYW5kPiBhdHRlbXB0cyBhbiA8Y29tbWFuZD5JTlNFUlQ8L2Nv bW1hbmQ+CiAgICAgYW5kIGEgdW5pcXVlIGluZGV4IGlzIHByZXNlbnQgYW5kIGEgZHVwbGljYXRl IHJvdyBpcyBjb25jdXJyZW50bHkKICAgICBpbnNlcnRlZCwgdGhlbiBhIHVuaXF1ZW5lc3Mgdmlv bGF0aW9uIGVycm9yIGlzIHJhaXNlZDsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbWVy Z2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvbWVyZ2Uuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA0NGU1ZWMwLi4xNmYwYWE5Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvbWVyZ2Uuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL21lcmdlLnNnbWwKQEAgLTM0LDcgKzM0LDggQEAgVVNJ TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdAogPHBocmFzZT5hbmQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndoZW5fY2xhdXNlPC9yZXBsYWNlYWJsZT4gaXM6PC9w aHJhc2U+CiAKIHsgV0hFTiBNQVRDSEVEIFsgQU5EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb25kaXRpb248L3JlcGxhY2VhYmxlPiBdIFRIRU4geyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bWVyZ2VfdXBkYXRlPC9yZXBsYWNlYWJsZT4gfCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bWVyZ2VfZGVsZXRlPC9yZXBsYWNlYWJsZT4gfCBETyBOT1RISU5HIH0g fAotICBXSEVOIE5PVCBNQVRDSEVEIFsgQU5EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb25kaXRpb248L3JlcGxhY2VhYmxlPiBdIFRIRU4geyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bWVyZ2VfaW5zZXJ0PC9yZXBsYWNlYWJsZT4gfCBETyBOT1RISU5HIH0gfQorICBX SEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBbIEFORCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gXSBUSEVOIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm1lcmdlX3VwZGF0ZTwvcmVwbGFjZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm1lcmdlX2RlbGV0ZTwvcmVwbGFjZWFibGU+IHwgRE8gTk9USElORyB9 IHwKKyAgV0hFTiBOT1QgTUFUQ0hFRCBbQlkgVEFSR0VUXSBbIEFORCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gXSBUSEVOIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1lcmdlX2luc2VydDwvcmVwbGFjZWFibGU+IHwgRE8gTk9U SElORyB9IH0KIAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1l cmdlX2luc2VydDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCkBAIC03Myw3ICs3NCw5IEBA IERFTEVURQogICAgZnJvbSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV9zb3Vy Y2U8L3JlcGxhY2VhYmxlPiB0bwogICAgdGhlIHRhcmdldCB0YWJsZQogICAgcHJvZHVjaW5nIHpl cm8gb3IgbW9yZSBjYW5kaWRhdGUgY2hhbmdlIHJvd3MuICBGb3IgZWFjaCBjYW5kaWRhdGUgY2hh bmdlCi0gICByb3csIHRoZSBzdGF0dXMgb2YgPGxpdGVyYWw+TUFUQ0hFRDwvbGl0ZXJhbD4gb3Ig PGxpdGVyYWw+Tk9UIE1BVENIRUQ8L2xpdGVyYWw+CisgICByb3csIHRoZSBzdGF0dXMgb2YgPGxp dGVyYWw+TUFUQ0hFRDwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5OT1QgTUFUQ0hFRCBCWSBTT1VS Q0U8L2xpdGVyYWw+LAorICAgb3IgPGxpdGVyYWw+Tk9UIE1BVENIRUQgW0JZIFRBUkdFVF08L2xp dGVyYWw+CiAgICBpcyBzZXQganVzdCBvbmNlLCBhZnRlciB3aGljaCA8bGl0ZXJhbD5XSEVOPC9s aXRlcmFsPiBjbGF1c2VzIGFyZSBldmFsdWF0ZWQKICAgIGluIHRoZSBvcmRlciBzcGVjaWZpZWQu ICBGb3IgZWFjaCBjYW5kaWRhdGUgY2hhbmdlIHJvdywgdGhlIGZpcnN0IGNsYXVzZSB0bwogICAg ZXZhbHVhdGUgYXMgdHJ1ZSBpcyBleGVjdXRlZC4gIE5vIG1vcmUgdGhhbiBvbmUgPGxpdGVyYWw+ V0hFTjwvbGl0ZXJhbD4KQEAgLTI2OCwxOCArMjcxLDQwIEBAIERFTEVURQogICAgICAgQXQgbGVh c3Qgb25lIDxsaXRlcmFsPldIRU48L2xpdGVyYWw+IGNsYXVzZSBpcyByZXF1aXJlZC4KICAgICAg PC9wYXJhPgogICAgICA8cGFyYT4KKyAgICAgIFRoZSA8bGl0ZXJhbD5XSEVOPC9saXRlcmFsPiBj bGF1c2UgbWF5IHNwZWNpZnkgPGxpdGVyYWw+V0hFTiBNQVRDSEVEPC9saXRlcmFsPiwKKyAgICAg IDxsaXRlcmFsPldIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFPC9saXRlcmFsPiwgb3IKKyAgICAg IDxsaXRlcmFsPldIRU4gTk9UIE1BVENIRUQgW0JZIFRBUkdFVF08L2xpdGVyYWw+LgorICAgICAg Tm90ZSB0aGF0IHRoZSA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IHN0YW5kYXJkIG9ubHkgZGVmaW5l cworICAgICAgPGxpdGVyYWw+V0hFTiBNQVRDSEVEPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+V0hF TiBOT1QgTUFUQ0hFRDwvbGl0ZXJhbD4KKyAgICAgICh3aGljaCBpcyBkZWZpbmVkIHRvIG1lYW4g bm8gbWF0Y2hpbmcgdGFyZ2V0IHJvdykuCisgICAgICA8bGl0ZXJhbD5XSEVOIE5PVCBNQVRDSEVE IEJZIFNPVVJDRTwvbGl0ZXJhbD4gaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZQorICAgICAgPGFjcm9u eW0+U1FMPC9hY3JvbnltPiBzdGFuZGFyZCwgYXMgaXMgdGhlIG9wdGlvbiB0byBhcHBlbmQKKyAg ICAgIDxsaXRlcmFsPkJZIFRBUkdFVDwvbGl0ZXJhbD4gdG8gPGxpdGVyYWw+V0hFTiBOT1QgTUFU Q0hFRDwvbGl0ZXJhbD4sIHRvCisgICAgICBtYWtlIGl0cyBtZWFuaW5nIG1vcmUgZXhwbGljaXQu CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CiAgICAgICBJZiB0aGUgPGxpdGVyYWw+V0hFTjwv bGl0ZXJhbD4gY2xhdXNlIHNwZWNpZmllcyA8bGl0ZXJhbD5XSEVOIE1BVENIRUQ8L2xpdGVyYWw+ CiAgICAgICBhbmQgdGhlIGNhbmRpZGF0ZSBjaGFuZ2Ugcm93IG1hdGNoZXMgYSByb3cgaW4gdGhl Ci0gICAgICB0YXJnZXQgdGFibGUsCi0gICAgICB0aGUgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4g Y2xhdXNlIGlzIGV4ZWN1dGVkIGlmIHRoZQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmRhdGFfc291cmNlPC9yZXBsYWNlYWJsZT4gdG8gYSByb3cgaW4gdGhlCisgICAgICB0 YXJnZXQgdGFibGUsIHRoZSA8bGl0ZXJhbD5XSEVOPC9saXRlcmFsPiBjbGF1c2UgaXMgZXhlY3V0 ZWQgaWYgdGhlCiAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9u PC9yZXBsYWNlYWJsZT4gaXMKICAgICAgIGFic2VudCBvciBpdCBldmFsdWF0ZXMgdG8gPGxpdGVy YWw+dHJ1ZTwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBDb252 ZXJzZWx5LCBpZiB0aGUgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4gY2xhdXNlIHNwZWNpZmllcwot ICAgICAgPGxpdGVyYWw+V0hFTiBOT1QgTUFUQ0hFRDwvbGl0ZXJhbD4KLSAgICAgIGFuZCB0aGUg Y2FuZGlkYXRlIGNoYW5nZSByb3cgZG9lcyBub3QgbWF0Y2ggYSByb3cgaW4gdGhlCi0gICAgICB0 YXJnZXQgdGFibGUsCisgICAgICBJZiB0aGUgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4gY2xhdXNl IHNwZWNpZmllcworICAgICAgPGxpdGVyYWw+V0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0U8L2xp dGVyYWw+IGFuZCB0aGUgY2FuZGlkYXRlIGNoYW5nZQorICAgICAgcm93IHJlcHJlc2VudHMgYSBy b3cgaW4gdGhlIHRhcmdldCB0YWJsZSB0aGF0IGRvZXMgbm90IG1hdGNoIGEgcm93IGluIHRoZQor ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfc291cmNlPC9yZXBsYWNl YWJsZT4sIHRoZQorICAgICAgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4gY2xhdXNlIGlzIGV4ZWN1 dGVkIGlmIHRoZQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmRpdGlv bjwvcmVwbGFjZWFibGU+IGlzCisgICAgICBhYnNlbnQgb3IgaXQgZXZhbHVhdGVzIHRvIDxsaXRl cmFsPnRydWU8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYg dGhlIDxsaXRlcmFsPldIRU48L2xpdGVyYWw+IGNsYXVzZSBzcGVjaWZpZXMKKyAgICAgIDxsaXRl cmFsPldIRU4gTk9UIE1BVENIRUQgW0JZIFRBUkdFVF08L2xpdGVyYWw+IGFuZCB0aGUgY2FuZGlk YXRlIGNoYW5nZQorICAgICAgcm93IHJlcHJlc2VudHMgYSByb3cgaW4gdGhlCisgICAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV9zb3VyY2U8L3JlcGxhY2VhYmxlPiB0aGF0 IGRvZXMgbm90CisgICAgICBtYXRjaCBhIHJvdyBpbiB0aGUgdGFyZ2V0IHRhYmxlLAogICAgICAg dGhlIDxsaXRlcmFsPldIRU48L2xpdGVyYWw+IGNsYXVzZSBpcyBleGVjdXRlZCBpZiB0aGUKICAg ICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxhY2VhYmxl PiBpcwogICAgICAgYWJzZW50IG9yIGl0IGV2YWx1YXRlcyB0byA8bGl0ZXJhbD50cnVlPC9saXRl cmFsPi4KQEAgLTI5OSw3ICszMjQsMTAgQEAgREVMRVRFCiAgICAgIDxwYXJhPgogICAgICAgQSBj b25kaXRpb24gb24gYSA8bGl0ZXJhbD5XSEVOIE1BVENIRUQ8L2xpdGVyYWw+IGNsYXVzZSBjYW4g cmVmZXIgdG8gY29sdW1ucwogICAgICAgaW4gYm90aCB0aGUgc291cmNlIGFuZCB0aGUgdGFyZ2V0 IHJlbGF0aW9ucy4gQSBjb25kaXRpb24gb24gYQotICAgICAgPGxpdGVyYWw+V0hFTiBOT1QgTUFU Q0hFRDwvbGl0ZXJhbD4gY2xhdXNlIGNhbiBvbmx5IHJlZmVyIHRvIGNvbHVtbnMgZnJvbQorICAg ICAgPGxpdGVyYWw+V0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0U8L2xpdGVyYWw+IGNsYXVzZSBj YW4gb25seSByZWZlciB0bworICAgICAgY29sdW1ucyBmcm9tIHRoZSB0YXJnZXQgcmVsYXRpb24s IHNpbmNlIGJ5IGRlZmluaXRpb24gdGhlcmUgaXMgbm8gbWF0Y2hpbmcKKyAgICAgIHNvdXJjZSBy b3cuIEEgY29uZGl0aW9uIG9uIGEgPGxpdGVyYWw+V0hFTiBOT1QgTUFUQ0hFRCBbQlkgVEFSR0VU XTwvbGl0ZXJhbD4KKyAgICAgIGNsYXVzZSBjYW4gb25seSByZWZlciB0byBjb2x1bW5zIGZyb20K ICAgICAgIHRoZSBzb3VyY2UgcmVsYXRpb24sIHNpbmNlIGJ5IGRlZmluaXRpb24gdGhlcmUgaXMg bm8gbWF0Y2hpbmcgdGFyZ2V0IHJvdy4KICAgICAgIE9ubHkgdGhlIHN5c3RlbSBhdHRyaWJ1dGVz IGZyb20gdGhlIHRhcmdldCB0YWJsZSBhcmUgYWNjZXNzaWJsZS4KICAgICAgPC9wYXJhPgpAQCAt NDIzLDggKzQ1MSwxMCBAQCBERUxFVEUKICAgICAgIDxsaXRlcmFsPldIRU4gTUFUQ0hFRDwvbGl0 ZXJhbD4gY2xhdXNlLCB0aGUgZXhwcmVzc2lvbiBjYW4gdXNlIHZhbHVlcwogICAgICAgZnJvbSB0 aGUgb3JpZ2luYWwgcm93IGluIHRoZSB0YXJnZXQgdGFibGUsIGFuZCB2YWx1ZXMgZnJvbSB0aGUK ICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3NvdXJjZTwvcmVwbGFj ZWFibGU+IHJvdy4KLSAgICAgIElmIHVzZWQgaW4gYSA8bGl0ZXJhbD5XSEVOIE5PVCBNQVRDSEVE PC9saXRlcmFsPiBjbGF1c2UsIHRoZQotICAgICAgZXhwcmVzc2lvbiBjYW4gdXNlIHZhbHVlcyBm cm9tIHRoZQorICAgICAgSWYgdXNlZCBpbiBhIDxsaXRlcmFsPldIRU4gTk9UIE1BVENIRUQgQlkg U09VUkNFPC9saXRlcmFsPiBjbGF1c2UsIHRoZQorICAgICAgZXhwcmVzc2lvbiBjYW4gb25seSB1 c2UgdmFsdWVzIGZyb20gdGhlIG9yaWdpbmFsIHJvdyBpbiB0aGUgdGFyZ2V0IHRhYmxlLgorICAg ICAgSWYgdXNlZCBpbiBhIDxsaXRlcmFsPldIRU4gTk9UIE1BVENIRUQgW0JZIFRBUkdFVF08L2xp dGVyYWw+IGNsYXVzZSwgdGhlCisgICAgICBleHByZXNzaW9uIGNhbiBvbmx5IHVzZSB2YWx1ZXMg ZnJvbSB0aGUKICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3NvdXJj ZTwvcmVwbGFjZWFibGU+IHJvdy4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CkBAIC01 MzUsOCArNTY1LDkgQEAgTUVSR0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRvdAog ICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgRXZhbHVhdGUgd2hldGhlciBlYWNoIHJvdyBpcyA8bGl0ZXJhbD5NQVRDSEVE PC9saXRlcmFsPiBvcgotICAgICAgICAgIDxsaXRlcmFsPk5PVCBNQVRDSEVEPC9saXRlcmFsPi4K KyAgICAgICAgICBFdmFsdWF0ZSB3aGV0aGVyIGVhY2ggcm93IGlzIDxsaXRlcmFsPk1BVENIRUQ8 L2xpdGVyYWw+LAorICAgICAgICAgIDxsaXRlcmFsPk5PVCBNQVRDSEVEIEJZIFNPVVJDRTwvbGl0 ZXJhbD4sIG9yCisgICAgICAgICAgPGxpdGVyYWw+Tk9UIE1BVENIRUQgW0JZIFRBUkdFVF08L2xp dGVyYWw+LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICA8 bGlzdGl0ZW0+CkBAIC02MTUsNyArNjQ2LDggQEAgTUVSR0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRvdAogICA8cGFyYT4KICAgIElmIGEgPGxpdGVyYWw+V0hFTjwvbGl0ZXJhbD4g Y2xhdXNlIG9taXRzIGFuIDxsaXRlcmFsPkFORDwvbGl0ZXJhbD4KICAgIHN1Yi1jbGF1c2UsIGl0 IGJlY29tZXMgdGhlIGZpbmFsIHJlYWNoYWJsZSBjbGF1c2Ugb2YgdGhhdAotICAga2luZCAoPGxp dGVyYWw+TUFUQ0hFRDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Tk9UIE1BVENIRUQ8L2xpdGVyYWw+ KS4KKyAgIGtpbmQgKDxsaXRlcmFsPk1BVENIRUQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5OT1QgTUFU Q0hFRCBCWSBTT1VSQ0U8L2xpdGVyYWw+LAorICAgb3IgPGxpdGVyYWw+Tk9UIE1BVENIRUQgW0JZ IFRBUkdFVF08L2xpdGVyYWw+KS4KICAgIElmIGEgbGF0ZXIgPGxpdGVyYWw+V0hFTjwvbGl0ZXJh bD4gY2xhdXNlIG9mIHRoYXQga2luZAogICAgaXMgc3BlY2lmaWVkIGl0IHdvdWxkIGJlIHByb3Zh Ymx5IHVucmVhY2hhYmxlIGFuZCBhbiBlcnJvciBpcyByYWlzZWQuCiAgICBJZiBubyBmaW5hbCBy ZWFjaGFibGUgY2xhdXNlIGlzIHNwZWNpZmllZCBvZiBlaXRoZXIga2luZCwgaXQgaXMKQEAgLTcw MSw2ICs3MzMsMjMgQEAgUkVUVVJOSU5HIG1lcmdlX2FjdGlvbigpLCB3Lio7CiAgICB0ZW1wb3Jh cnkgdGFibGUgcmVjZW50bHkgbG9hZGVkIGludG8gdGhlIGRhdGFiYXNlLgogICA8L3BhcmE+CiAK KyAgPHBhcmE+CisgICBVcGRhdGUgPGxpdGVyYWw+d2luZXM8L2xpdGVyYWw+IGJhc2VkIG9uIGEg cmVwbGFjZW1lbnQgd2luZSBsaXN0LCBpbnNlcnRpbmcKKyAgIHJvd3MgZm9yIGFueSBuZXcgc3Rv Y2ssIHVwZGF0aW5nIG1vZGlmaWVkIHN0b2NrIGVudHJpZXMsIGFuZCBkZWxldGluZyBhbnkKKyAg IHdpbmVzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgbGlzdC4KKzxwcm9ncmFtbGlzdGluZz4KK01F UkdFIElOVE8gd2luZXMgdworVVNJTkcgbmV3X3dpbmVfbGlzdCBzCitPTiBzLndpbmVuYW1lID0g dy53aW5lbmFtZQorV0hFTiBOT1QgTUFUQ0hFRCBCWSBUQVJHRVQgVEhFTgorICBJTlNFUlQgVkFM VUVTKHMud2luZW5hbWUsIHMuc3RvY2spCitXSEVOIE1BVENIRUQgQU5EIHcuc3RvY2sgIT0gcy5z dG9jayBUSEVOCisgIFVQREFURSBTRVQgc3RvY2sgPSBzLnN0b2NrCitXSEVOIE5PVCBNQVRDSEVE IEJZIFNPVVJDRSBUSEVOCisgIERFTEVURTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4K KwogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CkBAIC03MDksNyArNzU4LDkgQEAgUkVUVVJO SU5HIG1lcmdlX2FjdGlvbigpLCB3Lio7CiAgICAgVGhpcyBjb21tYW5kIGNvbmZvcm1zIHRvIHRo ZSA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IHN0YW5kYXJkLgogICA8L3BhcmE+CiAgICA8cGFyYT4K LSAgICBUaGUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD4gY2xhdXNlLCA8bGl0ZXJhbD5ETyBOT1RI SU5HPC9saXRlcmFsPiBhY3Rpb24sCisgICAgVGhlIDxsaXRlcmFsPldJVEg8L2xpdGVyYWw+IGNs YXVzZSwgPGxpdGVyYWw+QlkgU09VUkNFPC9saXRlcmFsPiBhbmQKKyAgICA8bGl0ZXJhbD5CWSBU QVJHRVQ8L2xpdGVyYWw+IHF1YWxpZmllcnMgdG8KKyAgICA8bGl0ZXJhbD5XSEVOIE5PVCBNQVRD SEVEPC9saXRlcmFsPiwgPGxpdGVyYWw+RE8gTk9USElORzwvbGl0ZXJhbD4gYWN0aW9uLAogICAg IGFuZCA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBhcmUgZXh0ZW5zaW9ucyB0 byB0aGUKICAgICA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IHN0YW5kYXJkLgogICA8L3BhcmE+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWIxZjdkLi40 ZDdjOTJkCi0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTI1MSw4ICsxMjUxLDEwIEBAIEluaXRSZXN1 bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFIKIAlyZXN1bHRSZWxJbmZvLT5yaV9SZXR1 cm5pbmdTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xvdCA9IE5VTEw7 CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwotCXJlc3VsdFJlbEluZm8t PnJpX21hdGNoZWRNZXJnZUFjdGlvbiA9IE5JTDsKLQlyZXN1bHRSZWxJbmZvLT5yaV9ub3RNYXRj aGVkTWVyZ2VBY3Rpb24gPSBOSUw7CisJcmVzdWx0UmVsSW5mby0+cmlfTWVyZ2VBY3Rpb25zW01F UkdFX1dIRU5fTUFUQ0hFRF0gPSBOSUw7CisJcmVzdWx0UmVsSW5mby0+cmlfTWVyZ2VBY3Rpb25z W01FUkdFX1dIRU5fTk9UX01BVENIRURfQllfU09VUkNFXSA9IE5JTDsKKwlyZXN1bHRSZWxJbmZv LT5yaV9NZXJnZUFjdGlvbnNbTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9UQVJHRVRdID0gTklM OworCXJlc3VsdFJlbEluZm8tPnJpX01lcmdlSm9pbkNvbmRpdGlvbiA9IE5VTEw7CiAKIAkvKgog CSAqIE9ubHkgRXhlY0luaXRQYXJ0aXRpb25JbmZvKCkgYW5kIEV4ZWNJbml0UGFydGl0aW9uRGlz cGF0Y2hJbmZvKCkgcGFzcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDY0ZmNiMDEuLmY1MTEwOTIKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwpAQCAtODgwLDYgKzg4MCw3IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhNb2RpZnlU YWJsZVN0YXRlICoKIAkJTGlzdAkgICAqZmlyc3RNZXJnZUFjdGlvbkxpc3QgPSBsaW5pdGlhbChu b2RlLT5tZXJnZUFjdGlvbkxpc3RzKTsKIAkJTGlzdENlbGwgICAqbGM7CiAJCUV4cHJDb250ZXh0 ICplY29udGV4dCA9IG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0OworCQlOb2RlCSAgICpqb2lu Q29uZGl0aW9uOwogCiAJCWlmIChwYXJ0X2F0dG1hcCA9PSBOVUxMKQogCQkJcGFydF9hdHRtYXAg PQpAQCAtODkwLDIzICs4OTEsMzEgQEAgRXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxl U3RhdGUgKgogCQlpZiAodW5saWtlbHkoIWxlYWZfcGFydF9ycmktPnJpX3Byb2plY3ROZXdJbmZv VmFsaWQpKQogCQkJRXhlY0luaXRNZXJnZVR1cGxlU2xvdHMobXRzdGF0ZSwgbGVhZl9wYXJ0X3Jy aSk7CiAKKwkJLyogSW5pdGlhbGl6ZSBzdGF0ZSBmb3Igam9pbiBjb25kaXRpb24tY2hlY2tpbmcu ICovCisJCWpvaW5Db25kaXRpb24gPQorCQkJbWFwX3ZhcmlhYmxlX2F0dG5vcyhsaW5pdGlhbChu b2RlLT5tZXJnZUpvaW5Db25kaXRpb25zKSwKKwkJCQkJCQkJZmlyc3RWYXJubywgMCwKKwkJCQkJ CQkJcGFydF9hdHRtYXAsCisJCQkJCQkJCVJlbGF0aW9uR2V0Rm9ybShwYXJ0cmVsKS0+cmVsdHlw ZSwKKwkJCQkJCQkJJmZvdW5kX3dob2xlX3Jvdyk7CisJCS8qIFdlIGlnbm9yZSB0aGUgdmFsdWUg b2YgZm91bmRfd2hvbGVfcm93LiAqLworCQlsZWFmX3BhcnRfcnJpLT5yaV9NZXJnZUpvaW5Db25k aXRpb24gPQorCQkJRXhlY0luaXRRdWFsKChMaXN0ICopIGpvaW5Db25kaXRpb24sICZtdHN0YXRl LT5wcyk7CisKIAkJZm9yZWFjaChsYywgZmlyc3RNZXJnZUFjdGlvbkxpc3QpCiAJCXsKIAkJCS8q IE1ha2UgYSBjb3B5IGZvciB0aGlzIHJlbGF0aW9uIHRvIGJlIHNhZmUuICAqLwogCQkJTWVyZ2VB Y3Rpb24gKmFjdGlvbiA9IGNvcHlPYmplY3QobGZpcnN0KGxjKSk7CiAJCQlNZXJnZUFjdGlvblN0 YXRlICphY3Rpb25fc3RhdGU7Ci0JCQlMaXN0CSAgKipsaXN0OwogCiAJCQkvKiBHZW5lcmF0ZSB0 aGUgYWN0aW9uJ3Mgc3RhdGUgZm9yIHRoaXMgcmVsYXRpb24gKi8KIAkJCWFjdGlvbl9zdGF0ZSA9 IG1ha2VOb2RlKE1lcmdlQWN0aW9uU3RhdGUpOwogCQkJYWN0aW9uX3N0YXRlLT5tYXNfYWN0aW9u ID0gYWN0aW9uOwogCiAJCQkvKiBBbmQgcHV0IHRoZSBhY3Rpb24gaW4gdGhlIGFwcHJvcHJpYXRl IGxpc3QgKi8KLQkJCWlmIChhY3Rpb24tPm1hdGNoZWQpCi0JCQkJbGlzdCA9ICZsZWFmX3BhcnRf cnJpLT5yaV9tYXRjaGVkTWVyZ2VBY3Rpb247Ci0JCQllbHNlCi0JCQkJbGlzdCA9ICZsZWFmX3Bh cnRfcnJpLT5yaV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247Ci0JCQkqbGlzdCA9IGxhcHBlbmQoKmxp c3QsIGFjdGlvbl9zdGF0ZSk7CisJCQlsZWFmX3BhcnRfcnJpLT5yaV9NZXJnZUFjdGlvbnNbYWN0 aW9uLT5tYXRjaEtpbmRdID0KKwkJCQlsYXBwZW5kKGxlYWZfcGFydF9ycmktPnJpX01lcmdlQWN0 aW9uc1thY3Rpb24tPm1hdGNoS2luZF0sCisJCQkJCQlhY3Rpb25fc3RhdGUpOwogCiAJCQlzd2l0 Y2ggKGFjdGlvbi0+Y29tbWFuZFR5cGUpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYmZlODIuLmZmNzY4MzAKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTI0LDEzICsyNCwxNSBAQAogICoJCXZh bHVlcyBwbHVzIHJvdy1sb2NhdGluZyBpbmZvIGZvciBVUERBVEUgYW5kIE1FUkdFIGNhc2VzLCBv ciBqdXN0IHRoZQogICoJCXJvdy1sb2NhdGluZyBpbmZvIGZvciBERUxFVEUgY2FzZXMuCiAgKgot ICoJCU1FUkdFIHJ1bnMgYSBqb2luIGJldHdlZW4gdGhlIHNvdXJjZSByZWxhdGlvbiBhbmQgdGhl IHRhcmdldAotICoJCXRhYmxlOyBpZiBhbnkgV0hFTiBOT1QgTUFUQ0hFRCBjbGF1c2VzIGFyZSBw cmVzZW50LCB0aGVuIHRoZQotICoJCWpvaW4gaXMgYW4gb3V0ZXIgam9pbi4gIEluIHRoaXMgY2Fz ZSwgYW55IHVubWF0Y2hlZCB0dXBsZXMgd2lsbAotICoJCWhhdmUgTlVMTCByb3ctbG9jYXRpbmcg aW5mbywgYW5kIG9ubHkgSU5TRVJUIGNhbiBiZSBydW4uIEJ1dCBmb3IKLSAqCQltYXRjaGVkIHR1 cGxlcywgdGhlbiByb3ctbG9jYXRpbmcgaW5mbyBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUKLSAq CQl0dXBsZSB0byBVUERBVEUgb3IgREVMRVRFLiBXaGVuIGFsbCBjbGF1c2VzIGFyZSBXSEVOIE1B VENIRUQsCi0gKgkJdGhlbiBhbiBpbm5lciBqb2luIGlzIHVzZWQsIHNvIGFsbCB0dXBsZXMgY29u dGFpbiByb3ctbG9jYXRpbmcgaW5mby4KKyAqCQlNRVJHRSBydW5zIGEgam9pbiBiZXR3ZWVuIHRo ZSBzb3VyY2UgcmVsYXRpb24gYW5kIHRoZSB0YXJnZXQgdGFibGUuCisgKgkJSWYgYW55IFdIRU4g Tk9UIE1BVENIRUQgW0JZIFRBUkdFVF0gY2xhdXNlcyBhcmUgcHJlc2VudCwgdGhlbiB0aGUgam9p bgorICoJCWlzIGFuIG91dGVyIGpvaW4gdGhhdCBtaWdodCBvdXRwdXQgdHVwbGVzIHdpdGhvdXQg YSBtYXRjaGluZyB0YXJnZXQKKyAqCQl0dXBsZS4gIEluIHRoaXMgY2FzZSwgYW55IHVubWF0Y2hl ZCB0YXJnZXQgdHVwbGVzIHdpbGwgaGF2ZSBOVUxMCisgKgkJcm93LWxvY2F0aW5nIGluZm8sIGFu ZCBvbmx5IElOU0VSVCBjYW4gYmUgcnVuLiAgQnV0IGZvciBtYXRjaGVkCisgKgkJdGFyZ2V0IHR1 cGxlcywgdGhlIHJvdy1sb2NhdGluZyBpbmZvIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0dXBs ZQorICoJCXRvIFVQREFURSBvciBERUxFVEUuICBXaGVuIGFsbCBjbGF1c2VzIGFyZSBXSEVOIE1B VENIRUQgb3IgV0hFTiBOT1QKKyAqCQlNQVRDSEVEIEJZIFNPVVJDRSwgYWxsIHR1cGxlcyBwcm9k dWNlZCBieSB0aGUgam9pbiB3aWxsIGluY2x1ZGUgYQorICoJCW1hdGNoaW5nIHRhcmdldCB0dXBs ZSwgc28gYWxsIHR1cGxlcyBjb250YWluIHJvdy1sb2NhdGluZyBpbmZvLgogICoKICAqCQlJZiB0 aGUgcXVlcnkgc3BlY2lmaWVzIFJFVFVSTklORywgdGhlbiB0aGUgTW9kaWZ5VGFibGUgcmV0dXJu cyBhCiAgKgkJUkVUVVJOSU5HIHR1cGxlIGFmdGVyIGNvbXBsZXRpbmcgZWFjaCByb3cgaW5zZXJ0 LCB1cGRhdGUsIG9yIGRlbGV0ZS4KQEAgLTI3MTQsNDggKzI3MTYsNjEgQEAgRXhlY01lcmdlKE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUgogCWJvb2wJCW1hdGNoZWQ7CiAKIAkvKi0tLS0t Ci0JICogSWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIFdIRU4gTUFUQ0hFRCBjYXNlICh0dXBsZWlk IG9yIG9sZHR1cGxlIGlzCi0JICogdmFsaWQsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSByZXN1 bHQgcmVsYXRpb24gaXMgYSB0YWJsZSBvciBhIHZpZXcpLAotCSAqIHdlIGV4ZWN1dGUgdGhlIGZp cnN0IGFjdGlvbiBmb3Igd2hpY2ggdGhlIGFkZGl0aW9uYWwgV0hFTiBNQVRDSEVEIEFORAorCSAq IElmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBXSEVOIE1BVENIRUQgY2FzZSwgdHVwbGVpZCBvciBv bGR0dXBsZSBpcworCSAqIHZhbGlkLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgcmVzdWx0IHJl bGF0aW9uIGlzIGEgdGFibGUgb3IgYSB2aWV3LgorCSAqIFdlIGV4ZWN1dGUgdGhlIGZpcnN0IGFj dGlvbiBmb3Igd2hpY2ggdGhlIGFkZGl0aW9uYWwgV0hFTiBNQVRDSEVEIEFORAogCSAqIHF1YWxz IHBhc3MuICBJZiBhbiBhY3Rpb24gd2l0aG91dCBxdWFscyBpcyBmb3VuZCwgdGhhdCBhY3Rpb24g aXMKIAkgKiBleGVjdXRlZC4KIAkgKgotCSAqIFNpbWlsYXJseSwgaWYgd2UgYXJlIGRlYWxpbmcg d2l0aCBXSEVOIE5PVCBNQVRDSEVEIGNhc2UsIHdlIGxvb2sgYXQKLQkgKiB0aGUgZ2l2ZW4gV0hF TiBOT1QgTUFUQ0hFRCBhY3Rpb25zIGluIHNlcXVlbmNlIHVudGlsIG9uZSBwYXNzZXMuCisJICog U2ltaWxhcmx5LCBpbiB0aGUgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgY2FzZSwgdHVwbGVp ZCBvciBvbGR0dXBsZQorCSAqIGlzIHZhbGlkLCBhbmQgd2UgbG9vayBhdCB0aGUgZ2l2ZW4gV0hF TiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgYWN0aW9ucworCSAqIGluIHNlcXVlbmNlIHVudGlsIG9u ZSBwYXNzZXMuICBUaGlzIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gdGhlIFdIRU4KKwkgKiBNQVRD SEVEIGNhc2UsIGFuZCBib3RoIGNhc2VzIGFyZSBoYW5kbGVkIGJ5IEV4ZWNNZXJnZU1hdGNoZWQo KS4KKwkgKgorCSAqIEZpbmFsbHksIGluIHRoZSBXSEVOIE5PVCBNQVRDSEVEIFtCWSBUQVJHRVRd IGNhc2UsIGJvdGggdHVwbGVpZCBhbmQKKwkgKiBvbGR0dXBsZSBhcmUgaW52YWxpZCwgYW5kIHdl IGxvb2sgYXQgdGhlIGdpdmVuIFdIRU4gTk9UIE1BVENIRUQgW0JZCisJICogVEFSR0VUXSBhY3Rp b25zIGluIHNlcXVlbmNlIHVudGlsIG9uZSBwYXNzZXMuCiAJICoKIAkgKiBUaGluZ3MgZ2V0IGlu dGVyZXN0aW5nIGluIGNhc2Ugb2YgY29uY3VycmVudCB1cGRhdGUvZGVsZXRlIG9mIHRoZQogCSAq IHRhcmdldCB0dXBsZS4gU3VjaCBjb25jdXJyZW50IHVwZGF0ZS9kZWxldGUgaXMgZGV0ZWN0ZWQg d2hpbGUgd2UgYXJlCi0JICogZXhlY3V0aW5nIGEgV0hFTiBNQVRDSEVEIGFjdGlvbi4KKwkgKiBl eGVjdXRpbmcgYSBXSEVOIE1BVENIRUQgb3IgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgYWN0 aW9uLgogCSAqCiAJICogQSBjb25jdXJyZW50IHVwZGF0ZSBjYW46CiAJICoKIAkgKiAxLiBtb2Rp ZnkgdGhlIHRhcmdldCB0dXBsZSBzbyB0aGF0IGl0IG5vIGxvbmdlciBzYXRpc2ZpZXMgdGhlCi0J ICogICAgYWRkaXRpb25hbCBxdWFscyBhdHRhY2hlZCB0byB0aGUgY3VycmVudCBXSEVOIE1BVENI RUQgYWN0aW9uCisJICogICAgYWRkaXRpb25hbCBxdWFscyBhdHRhY2hlZCB0byB0aGUgY3VycmVu dCBXSEVOIE1BVENIRUQgb3IgV0hFTiBOT1QKKwkgKiAgICBNQVRDSEVEIEJZIFNPVVJDRSBhY3Rp b24sIGJ1dCBzdGlsbCBzYXRpc2ZpZXMgdGhlIGpvaW4gcXVhbHMuCiAJICoKLQkgKiAgICBJbiB0 aGlzIGNhc2UsIHdlIGFyZSBzdGlsbCBkZWFsaW5nIHdpdGggYSBXSEVOIE1BVENIRUQgY2FzZS4K LQkgKiAgICBXZSByZWNoZWNrIHRoZSBsaXN0IG9mIFdIRU4gTUFUQ0hFRCBhY3Rpb25zIGZyb20g dGhlIHN0YXJ0IGFuZAotCSAqICAgIGNob29zZSB0aGUgZmlyc3Qgb25lIHRoYXQgc2F0aXNmaWVz IHRoZSBuZXcgdGFyZ2V0IHR1cGxlLgorCSAqICAgIEluIHRoaXMgY2FzZSwgd2UgYXJlIHN0aWxs IGRlYWxpbmcgd2l0aCB0aGUgc2FtZSBraW5kIG9mIG1hdGNoCisJICogICAgKE1BVENIRUQgb3Ig Tk9UIE1BVENIRUQgQlkgU09VUkNFKS4gIFdlIHJlY2hlY2sgdGhlIHNhbWUgbGlzdCBvZgorCSAq ICAgIGFjdGlvbnMgZnJvbSB0aGUgc3RhcnQgYW5kIGNob29zZSB0aGUgZmlyc3Qgb25lIHRoYXQg c2F0aXNmaWVzIHRoZQorCSAqICAgIG5ldyB0YXJnZXQgdHVwbGUuCiAJICoKIAkgKiAyLiBtb2Rp ZnkgdGhlIHRhcmdldCB0dXBsZSBzbyB0aGF0IHRoZSBqb2luIHF1YWxzIG5vIGxvbmdlciBwYXNz IGFuZAotCSAqICAgIGhlbmNlIHRoZSBzb3VyY2UgdHVwbGUgbm8gbG9uZ2VyIGhhcyBhIG1hdGNo LgorCSAqICAgIGhlbmNlIHRoZSBzb3VyY2UgYW5kIHRhcmdldCB0dXBsZXMgbm8gbG9uZ2VyIG1h dGNoLgogCSAqCi0JICogICAgSW4gdGhpcyBjYXNlLCB0aGUgc291cmNlIHR1cGxlIG5vIGxvbmdl ciBtYXRjaGVzIHRoZSB0YXJnZXQgdHVwbGUsCi0JICogICAgc28gd2Ugbm93IGluc3RlYWQgZmlu ZCBhIHF1YWxpZnlpbmcgV0hFTiBOT1QgTUFUQ0hFRCBhY3Rpb24gdG8KLQkgKiAgICBleGVjdXRl LgorCSAqICAgIEluIHRoaXMgY2FzZSwgd2UgYXJlIG5vdyBkZWFsaW5nIHdpdGggYSBOT1QgTUFU Q0hFRCBjYXNlLCBhbmQgd2UKKwkgKiAgICBwcm9jZXNzIGJvdGggV0hFTiBOT1QgTUFUQ0hFRCBC WSBTT1VSQ0UgYW5kIFdIRU4gTk9UIE1BVENIRUQgW0JZCisJICogICAgVEFSR0VUXSBhY3Rpb25z LiAgRmlyc3QgRXhlY01lcmdlTWF0Y2hlZCgpIHByb2Nlc3NlcyB0aGUgbGlzdCBvZgorCSAqICAg IFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIGFjdGlvbnMgaW4gc2VxdWVuY2UgdW50aWwgb25l IHBhc3NlcywKKwkgKiAgICB0aGVuIEV4ZWNNZXJnZU5vdE1hdGNoZWQoKSBwcm9jZXNzZXMgYW55 IFdIRU4gTk9UIE1BVENIRUQgW0JZCisJICogICAgVEFSR0VUXSBhY3Rpb25zIGluIHNlcXVlbmNl IHVudGlsIG9uZSBwYXNzZXMuICBUaHVzIHdlIG1heSBleGVjdXRlCisJICogICAgdHdvIGFjdGlv bnM7IG9uZSBvZiBlYWNoIGtpbmQuCiAJICoKIAkgKiBYWFggSG1tbSwgd2hhdCBpZiB0aGUgdXBk YXRlZCB0dXBsZSB3b3VsZCBub3cgbWF0Y2ggb25lIHRoYXQgd2FzCiAJICogY29uc2lkZXJlZCBO T1QgTUFUQ0hFRCBzbyBmYXI/CiAJICoKLQkgKiBBIGNvbmN1cnJlbnQgZGVsZXRlIGNoYW5nZXMg YSBXSEVOIE1BVENIRUQgY2FzZSB0byBXSEVOIE5PVCBNQVRDSEVELgorCSAqIEEgY29uY3VycmVu dCBkZWxldGUgY2hhbmdlcyBhIFdIRU4gTUFUQ0hFRCBjYXNlIHRvIFdIRU4gTk9UIE1BVENIRUQK KwkgKiBbQlkgVEFSR0VUXS4KIAkgKgogCSAqIEV4ZWNNZXJnZU1hdGNoZWQgdGFrZXMgY2FyZSBv ZiBmb2xsb3dpbmcgdGhlIHVwZGF0ZSBjaGFpbiBhbmQKLQkgKiByZS1maW5kaW5nIHRoZSBxdWFs aWZ5aW5nIFdIRU4gTUFUQ0hFRCBhY3Rpb24sIGFzIGxvbmcgYXMgdGhlIHVwZGF0ZWQKLQkgKiB0 YXJnZXQgdHVwbGUgc3RpbGwgc2F0aXNmaWVzIHRoZSBqb2luIHF1YWxzLCBpLmUuLCBpdCByZW1h aW5zIGEgV0hFTgotCSAqIE1BVENIRUQgY2FzZS4gSWYgdGhlIHR1cGxlIGdldHMgZGVsZXRlZCBv ciB0aGUgam9pbiBxdWFscyBmYWlsLCBpdAotCSAqIHJldHVybnMgYW5kIHdlIHRyeSBFeGVjTWVy Z2VOb3RNYXRjaGVkLiBHaXZlbiB0aGF0IEV4ZWNNZXJnZU1hdGNoZWQKLQkgKiBhbHdheXMgbWFr ZSBwcm9ncmVzcyBieSBmb2xsb3dpbmcgdGhlIHVwZGF0ZSBjaGFpbiBhbmQgd2UgbmV2ZXIgc3dp dGNoCi0JICogZnJvbSBFeGVjTWVyZ2VOb3RNYXRjaGVkIHRvIEV4ZWNNZXJnZU1hdGNoZWQsIHRo ZXJlIGlzIG5vIHJpc2sgb2YgYQotCSAqIGxpdmVsb2NrLgorCSAqIHJlLWZpbmRpbmcgdGhlIHF1 YWxpZnlpbmcgV0hFTiBNQVRDSEVEIG9yIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFCisJICog YWN0aW9uLCBhcyBsb25nIGFzIHRoZSB0YXJnZXQgdHVwbGUgc3RpbGwgZXhpc3RzLiBJZiB0aGUg dGFyZ2V0IHR1cGxlCisJICogZ2V0cyBkZWxldGVkIG9yIGEgY29uY3VycmVudCB1cGRhdGUgY2F1 c2VzIHRoZSBqb2luIHF1YWxzIHRvIGZhaWwsIGl0CisJICogcmV0dXJucyBhIG1hdGNoZWQgc3Rh dHVzIG9mIGZhbHNlIGFuZCB3ZSBjYWxsIEV4ZWNNZXJnZU5vdE1hdGNoZWQuCisJICogR2l2ZW4g dGhhdCBFeGVjTWVyZ2VNYXRjaGVkIGFsd2F5cyBtYWtlcyBwcm9ncmVzcyBieSBmb2xsb3dpbmcg dGhlCisJICogdXBkYXRlIGNoYWluIGFuZCB3ZSBuZXZlciBzd2l0Y2ggZnJvbSBFeGVjTWVyZ2VO b3RNYXRjaGVkIHRvCisJICogRXhlY01lcmdlTWF0Y2hlZCwgdGhlcmUgaXMgbm8gcmlzayBvZiBh IGxpdmVsb2NrLgogCSAqLwogCW1hdGNoZWQgPSB0dXBsZWlkICE9IE5VTEwgfHwgb2xkdHVwbGUg IT0gTlVMTDsKIAlpZiAobWF0Y2hlZCkKQEAgLTI3NjgsMzMgKzI3ODMsNTIgQEAgRXhlY01lcmdl KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUgogCSAqICJtYXRjaGVkIiB0byBmYWxzZSwg aW5kaWNhdGluZyB0aGF0IGl0IG5vIGxvbmdlciBtYXRjaGVzKS4KIAkgKi8KIAlpZiAoIW1hdGNo ZWQpCi0JCXJzbG90ID0gRXhlY01lcmdlTm90TWF0Y2hlZChjb250ZXh0LCByZXN1bHRSZWxJbmZv LCBjYW5TZXRUYWcpOworCXsKKwkJLyoKKwkJICogSWYgYSBjb25jdXJyZW50IHVwZGF0ZSB0dXJu ZWQgYSBNQVRDSEVEIGNhc2UgaW50byBhIE5PVCBNQVRDSEVECisJCSAqIGNhc2UsIGFuZCB3ZSBo YXZlIGJvdGggV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgYW5kIFdIRU4gTk9UCisJCSAqIE1B VENIRUQgW0JZIFRBUkdFVF0gYWN0aW9ucywgYW5kIHRoZXJlIGlzIGEgUkVUVVJOSU5HIGNsYXVz ZSwKKwkJICogRXhlY01lcmdlTWF0Y2hlZCgpIG1heSBoYXZlIGFscmVhZHkgZXhlY3V0ZWQgYSBX SEVOIE5PVCBNQVRDSEVEIEJZCisJCSAqIFNPVVJDRSBhY3Rpb24sIGFuZCBjb21wdXRlZCB0aGUg cm93IHRvIHJldHVybi4gIElmIHNvLCB3ZSBjYW5ub3QKKwkJICogZXhlY3V0ZSB0aGUgV0hFTiBO T1QgTUFUQ0hFRCBbQlkgVEFSR0VUXSBhY3Rpb24gbm93LCBzbyBtYXJrIGl0IGFzCisJCSAqIHBl bmRpbmcgKHRvIGJlIHByb2Nlc3NlZCBvbiB0aGUgbmV4dCBjYWxsIHRvIEV4ZWNNb2RpZnlUYWJs ZSgpKS4KKwkJICogT3RoZXJ3aXNlLCBqdXN0IHByb2Nlc3MgdGhlIGFjdGlvbiBub3cuCisJCSAq LworCQlpZiAocnNsb3QgPT0gTlVMTCkKKwkJCXJzbG90ID0gRXhlY01lcmdlTm90TWF0Y2hlZChj b250ZXh0LCByZXN1bHRSZWxJbmZvLCBjYW5TZXRUYWcpOworCQllbHNlCisJCQljb250ZXh0LT5t dHN0YXRlLT5tdF9tZXJnZV9wZW5kaW5nX25vdF9tYXRjaGVkID0gY29udGV4dC0+cGxhblNsb3Q7 CisJfQogCiAJcmV0dXJuIHJzbG90OwogfQogCiAvKgotICogQ2hlY2sgYW5kIGV4ZWN1dGUgdGhl IGZpcnN0IHF1YWxpZnlpbmcgTUFUQ0hFRCBhY3Rpb24uICBJZiB0aGUgdGFyZ2V0CisgKiBDaGVj ayBhbmQgZXhlY3V0ZSB0aGUgZmlyc3QgcXVhbGlmeWluZyBNQVRDSEVEIG9yIE5PVCBNQVRDSEVE IEJZIFNPVVJDRQorICogYWN0aW9uLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgam9pbiBxdWFs cyBhcmUgc2F0aXNmaWVkLiAgSWYgdGhlIHRhcmdldAogICogcmVsYXRpb24gaXMgYSB0YWJsZSwg dGhlIGN1cnJlbnQgdGFyZ2V0IHR1cGxlIGlzIGlkZW50aWZpZWQgYnkgdHVwbGVpZC4KICAqIE90 aGVyd2lzZSwgaWYgdGhlIHRhcmdldCByZWxhdGlvbiBpcyBhIHZpZXcsIG9sZHR1cGxlIGlzIHRo ZSBjdXJyZW50IHRhcmdldAogICogdHVwbGUgZnJvbSB0aGUgdmlldy4KICAqCi0gKiBXZSBzdGFy dCBmcm9tIHRoZSBmaXJzdCBXSEVOIE1BVENIRUQgYWN0aW9uIGFuZCBjaGVjayBpZiB0aGUgV0hF TiBxdWFscwotICogcGFzcywgaWYgYW55LiBJZiB0aGUgV0hFTiBxdWFscyBmb3IgdGhlIGZpcnN0 IGFjdGlvbiBkbyBub3QgcGFzcywgd2UKLSAqIGNoZWNrIHRoZSBzZWNvbmQsIHRoZW4gdGhlIHRo aXJkIGFuZCBzbyBvbi4gSWYgd2UgcmVhY2ggdG8gdGhlIGVuZCwgbm8KLSAqIGFjdGlvbiBpcyB0 YWtlbiBhbmQgIm1hdGNoZWQiIGlzIHNldCB0byB0cnVlLCBpbmRpY2F0aW5nIHRoYXQgbm8gZnVy dGhlcgotICogYWN0aW9uIGlzIHJlcXVpcmVkIGZvciB0aGlzIHR1cGxlLgorICogV2Ugc3RhcnQg ZnJvbSB0aGUgZmlyc3QgV0hFTiBNQVRDSEVEIG9yIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNF IGFjdGlvbgorICogYW5kIGNoZWNrIGlmIHRoZSBXSEVOIHF1YWxzIHBhc3MsIGlmIGFueS4gSWYg dGhlIFdIRU4gcXVhbHMgZm9yIHRoZSBmaXJzdAorICogYWN0aW9uIGRvIG5vdCBwYXNzLCB3ZSBj aGVjayB0aGUgc2Vjb25kLCB0aGVuIHRoZSB0aGlyZCBhbmQgc28gb24uIElmIHdlCisgKiByZWFj aCB0aGUgZW5kIHdpdGhvdXQgZmluZGluZyBhIHF1YWxpZnlpbmcgYWN0aW9uLCB3ZSByZXR1cm4g TlVMTC4KKyAqIE90aGVyd2lzZSwgd2UgZXhlY3V0ZSB0aGUgcXVhbGlmeWluZyBhY3Rpb24gYW5k IHJldHVybiBpdHMgUkVUVVJOSU5HCisgKiByZXN1bHQsIGlmIGFueSwgb3IgTlVMTC4KICAqCi0g KiBJZiB3ZSBkbyBmaW5kIGEgcXVhbGlmeWluZyBhY3Rpb24sIHRoZW4gd2UgYXR0ZW1wdCB0byBl eGVjdXRlIHRoZSBhY3Rpb24uCisgKiBPbiBlbnRyeSwgIiptYXRjaGVkIiBpcyBhc3N1bWVkIHRv IGJlIHRydWUuICBJZiBhIGNvbmN1cnJlbnQgdXBkYXRlIG9yCisgKiBkZWxldGUgaXMgZGV0ZWN0 ZWQgdGhhdCBjYXVzZXMgdGhlIGpvaW4gcXVhbHMgdG8gbm8gbG9uZ2VyIHBhc3MsIHdlIHNldCBp dAorICogdG8gZmFsc2UsIGluZGljYXRpbmcgdGhhdCB0aGUgY2FsbGVyIHNob3VsZCBwcm9jZXNz IGFueSBOT1QgTUFUQ0hFRCBbQlkKKyAqIFRBUkdFVF0gYWN0aW9ucy4KICAqCi0gKiBJZiB0aGUg dHVwbGUgaXMgY29uY3VycmVudGx5IHVwZGF0ZWQsIEV2YWxQbGFuUXVhbCBpcyBydW4gd2l0aCB0 aGUgdXBkYXRlZAotICogdHVwbGUgdG8gcmVjaGVjayB0aGUgam9pbiBxdWFscy4gTm90ZSB0aGF0 IHRoZSBhZGRpdGlvbmFsIHF1YWxzIGFzc29jaWF0ZWQKLSAqIHdpdGggaW5kaXZpZHVhbCBhY3Rp b25zIGFyZSBldmFsdWF0ZWQgYnkgdGhpcyByb3V0aW5lIHZpYSBFeGVjUXVhbCwgd2hpbGUKLSAq IEV2YWxQbGFuUXVhbCBjaGVja3MgZm9yIHRoZSBqb2luIHF1YWxzLiBJZiBFdmFsUGxhblF1YWwg dGVsbHMgdXMgdGhhdCB0aGUKLSAqIHVwZGF0ZWQgdHVwbGUgc3RpbGwgcGFzc2VzIHRoZSBqb2lu IHF1YWxzLCB0aGVuIHdlIHJlc3RhcnQgZnJvbSB0aGUgZmlyc3QKLSAqIGFjdGlvbiB0byBsb29r IGZvciBhIHF1YWxpZnlpbmcgYWN0aW9uLiBPdGhlcndpc2UsICJtYXRjaGVkIiBpcyBzZXQgdG8K LSAqIGZhbHNlIC0tIG1lYW5pbmcgdGhhdCBhIE5PVCBNQVRDSEVEIGFjdGlvbiBtdXN0IG5vdyBi ZSBleGVjdXRlZCBmb3IgdGhlCi0gKiBjdXJyZW50IHNvdXJjZSB0dXBsZS4KKyAqIEFmdGVyIGEg Y29uY3VycmVudCB1cGRhdGUsIHdlIHJlc3RhcnQgZnJvbSB0aGUgZmlyc3QgYWN0aW9uIHRvIGxv b2sgZm9yIGEKKyAqIG5ldyBxdWFsaWZ5aW5nIGFjdGlvbiB0byBleGVjdXRlLiBJZiB0aGUgam9p biBxdWFscyBvcmlnaW5hbGx5IHBhc3NlZCwgYW5kCisgKiB0aGUgY29uY3VycmVudCB1cGRhdGUg Y2F1c2VkIHRoZW0gdG8gbm8gbG9uZ2VyIHBhc3MsIHRoZW4gd2Ugc3dpdGNoIGZyb20KKyAqIHRo ZSBNQVRDSEVEIHRvIHRoZSBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgbGlzdCBvZiBhY3Rpb25zIGJl Zm9yZSByZXN0YXJ0aW5nCisgKiAoYW5kIHNldHRpbmcgIiptYXRjaGVkIiB0byBmYWxzZSkuICBB cyBhIHJlc3VsdCB3ZSBtYXkgZXhlY3V0ZSBhIFdIRU4gTk9UCisgKiBNQVRDSEVEIEJZIFNPVVJD RSBhY3Rpb24sIGFuZCBzZXQgIiptYXRjaGVkIiB0byBmYWxzZSwgY2F1c2luZyB0aGUgY2FsbGVy CisgKiB0byBhbHNvIGV4ZWN1dGUgYSBXSEVOIE5PVCBNQVRDSEVEIFtCWSBUQVJHRVRdIGFjdGlv bi4KICAqLwogc3RhdGljIFR1cGxlVGFibGVTbG90ICoKIEV4ZWNNZXJnZU1hdGNoZWQoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLApAQCAt MjgwMiw2ICsyODM2LDggQEAgRXhlY01lcmdlTWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNv bgogCQkJCSBib29sICptYXRjaGVkKQogewogCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSBj b250ZXh0LT5tdHN0YXRlOworCUxpc3QJICAqKm1lcmdlQWN0aW9ucyA9IHJlc3VsdFJlbEluZm8t PnJpX01lcmdlQWN0aW9uczsKKwlMaXN0CSAgICphY3Rpb25TdGF0ZXM7CiAJVHVwbGVUYWJsZVNs b3QgKm5ld3Nsb3QgPSBOVUxMOwogCVR1cGxlVGFibGVTbG90ICpyc2xvdCA9IE5VTEw7CiAJRVN0 YXRlCSAgICplc3RhdGUgPSBjb250ZXh0LT5lc3RhdGU7CkBAIC0yODEwLDU0ICsyODQ2LDU4IEBA IEV4ZWNNZXJnZU1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb24KIAlFUFFTdGF0ZSAgICpl cHFzdGF0ZSA9ICZtdHN0YXRlLT5tdF9lcHFzdGF0ZTsKIAlMaXN0Q2VsbCAgICpsOwogCisJLyog RXhwZWN0IG1hdGNoZWQgdG8gYmUgdHJ1ZSBvbiBlbnRyeSAqLworCUFzc2VydCgqbWF0Y2hlZCA9 PSB0cnVlKTsKKwogCS8qCi0JICogSWYgdGhlcmUgYXJlIG5vIFdIRU4gTUFUQ0hFRCBhY3Rpb25z LCB3ZSBhcmUgZG9uZS4KKwkgKiBJZiB0aGVyZSBhcmUgbm8gV0hFTiBNQVRDSEVEIG9yIFdIRU4g Tk9UIE1BVENIRUQgQlkgU09VUkNFIGFjdGlvbnMsIHdlCisJICogYXJlIGRvbmUuCiAJICovCi0J aWYgKHJlc3VsdFJlbEluZm8tPnJpX21hdGNoZWRNZXJnZUFjdGlvbiA9PSBOSUwpCi0JewotCQkq bWF0Y2hlZCA9IHRydWU7CisJaWYgKG1lcmdlQWN0aW9uc1tNRVJHRV9XSEVOX01BVENIRURdID09 IE5JTCAmJgorCQltZXJnZUFjdGlvbnNbTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9TT1VSQ0Vd ID09IE5JTCkKIAkJcmV0dXJuIE5VTEw7Ci0JfQogCiAJLyoKIAkgKiBNYWtlIHR1cGxlIGFuZCBh bnkgbmVlZGVkIGpvaW4gdmFyaWFibGVzIGF2YWlsYWJsZSB0byBFeGVjUXVhbCBhbmQKIAkgKiBF eGVjUHJvamVjdC4gVGhlIHRhcmdldCdzIGV4aXN0aW5nIHR1cGxlIGlzIGluc3RhbGxlZCBpbiB0 aGUgc2NhbnR1cGxlLgotCSAqIEFnYWluLCB0aGlzIHRhcmdldCByZWxhdGlvbidzIHNsb3QgaXMg cmVxdWlyZWQgb25seSBpbiB0aGUgY2FzZSBvZiBhCi0JICogTUFUQ0hFRCB0dXBsZSBhbmQgVVBE QVRFL0RFTEVURSBhY3Rpb25zLgorCSAqIFRoaXMgdGFyZ2V0IHJlbGF0aW9uJ3Mgc2xvdCBpcyBy ZXF1aXJlZCBvbmx5IGluIHRoZSBjYXNlIG9mIGEgTUFUQ0hFRAorCSAqIG9yIE5PVCBNQVRDSEVE IEJZIFNPVVJDRSB0dXBsZSBhbmQgVVBEQVRFL0RFTEVURSBhY3Rpb25zLgogCSAqLwogCWVjb250 ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xvdDsKIAll Y29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlID0gY29udGV4dC0+cGxhblNsb3Q7CiAJZWNvbnRleHQt PmVjeHRfb3V0ZXJ0dXBsZSA9IE5VTEw7CiAKIAkvKgotCSAqIFRoaXMgcm91dGluZSBpcyBvbmx5 IGludm9rZWQgZm9yIG1hdGNoZWQgcm93cywgc28gd2Ugc2hvdWxkIGVpdGhlciBoYXZlCi0JICog dGhlIHR1cGxlaWQgb2YgdGhlIHRhcmdldCByb3csIG9yIGFuIG9sZCB0dXBsZSBmcm9tIHRoZSB0 YXJnZXQgd2hvbGVyb3cKLQkgKiBqdW5rIGF0dHIuCisJICogVGhpcyByb3V0aW5lIGlzIG9ubHkg aW52b2tlZCBmb3IgbWF0Y2hlZCB0YXJnZXQgcm93cywgc28gd2Ugc2hvdWxkCisJICogZWl0aGVy IGhhdmUgdGhlIHR1cGxlaWQgb2YgdGhlIHRhcmdldCByb3csIG9yIGFuIG9sZCB0dXBsZSBmcm9t IHRoZQorCSAqIHRhcmdldCB3aG9sZXJvdyBqdW5rIGF0dHIuCiAJICovCiAJQXNzZXJ0KHR1cGxl aWQgIT0gTlVMTCB8fCBvbGR0dXBsZSAhPSBOVUxMKTsKIAlpZiAob2xkdHVwbGUgIT0gTlVMTCkK IAkJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUob2xkdHVwbGUsIHJlc3VsdFJlbEluZm8tPnJpX29s ZFR1cGxlU2xvdCwKIAkJCQkJCQkJZmFsc2UpOwotCi1sbWVyZ2VfbWF0Y2hlZDoKKwllbHNlIGlm ICghdGFibGVfdHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRp b25EZXNjLAorCQkJCQkJCQkJCQl0dXBsZWlkLAorCQkJCQkJCQkJCQlTbmFwc2hvdEFueSwKKwkJ CQkJCQkJCQkJcmVzdWx0UmVsSW5mby0+cmlfb2xkVHVwbGVTbG90KSkKKwkJZWxvZyhFUlJPUiwg ImZhaWxlZCB0byBmZXRjaCB0aGUgdGFyZ2V0IHR1cGxlIik7CiAKIAkvKgotCSAqIElmIHBhc3Nl ZCBhIHR1cGxlaWQsIHVzZSBpdCB0byBmZXRjaCB0aGUgb2xkIHRhcmdldCByb3cuCisJICogVGVz dCB0aGUgam9pbiBjb25kaXRpb24uICBJZiBpdCdzIHNhdGlzZmllZCwgcGVyZm9ybSBhIE1BVENI RUQgYWN0aW9uOworCSAqIG90aGVyd2lzZSwgcGVyZm9ybSBhIE5PVCBNQVRDSEVEIEJZIFNPVVJD RSBhY3Rpb24uCiAJICoKLQkgKiBXZSB1c2UgU25hcHNob3RBbnkgZm9yIHRoaXMgYmVjYXVzZSB3 ZSBtaWdodCBnZXQgY2FsbGVkIGFnYWluIGFmdGVyCi0JICogRXZhbFBsYW5RdWFsIHJldHVybnMg dXMgYSBuZXcgdHVwbGUsIHdoaWNoIG1heSBub3QgYmUgdmlzaWJsZSB0byBvdXIKLQkgKiBNVkND IHNuYXBzaG90LgorCSAqIE5vdGUgdGhhdCB0aGlzIGpvaW4gY29uZGl0aW9uIHdpbGwgYmUgTlVM TCBpZiB0aGVyZSBhcmUgbm8gTk9UIE1BVENIRUQKKwkgKiBCWSBTT1VSQ0UgYWN0aW9ucyAtLS0g c2VlIHRyYW5zZm9ybV9NRVJHRV90b19qb2luKCkuICBJbiB0aGF0IGNhc2UsIHdlCisJICogbmVl ZCBvbmx5IGNvbnNpZGVyIE1BVENIRUQgYWN0aW9ucyBoZXJlLgogCSAqLwotCWlmICh0dXBsZWlk ICE9IE5VTEwpCi0JewotCQlpZiAoIXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJlc3Vs dFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKLQkJCQkJCQkJCQkgICB0dXBsZWlkLAotCQkJCQkJ CQkJCSAgIFNuYXBzaG90QW55LAotCQkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8tPnJpX29sZFR1 cGxlU2xvdCkpCi0JCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGZldGNoIHRoZSB0YXJnZXQgdHVw bGUiKTsKLQl9CisJaWYgKEV4ZWNRdWFsKHJlc3VsdFJlbEluZm8tPnJpX01lcmdlSm9pbkNvbmRp dGlvbiwgZWNvbnRleHQpKQorCQlhY3Rpb25TdGF0ZXMgPSBtZXJnZUFjdGlvbnNbTUVSR0VfV0hF Tl9NQVRDSEVEXTsKKwllbHNlCisJCWFjdGlvblN0YXRlcyA9IG1lcmdlQWN0aW9uc1tNRVJHRV9X SEVOX05PVF9NQVRDSEVEX0JZX1NPVVJDRV07CiAKLQlmb3JlYWNoKGwsIHJlc3VsdFJlbEluZm8t PnJpX21hdGNoZWRNZXJnZUFjdGlvbikKK2xtZXJnZV9tYXRjaGVkOgorCisJZm9yZWFjaChsLCBh Y3Rpb25TdGF0ZXMpCiAJewogCQlNZXJnZUFjdGlvblN0YXRlICpyZWxhY3Rpb24gPSAoTWVyZ2VB Y3Rpb25TdGF0ZSAqKSBsZmlyc3QobCk7CiAJCUNtZFR5cGUJCWNvbW1hbmRUeXBlID0gcmVsYWN0 aW9uLT5tYXNfYWN0aW9uLT5jb21tYW5kVHlwZTsKQEAgLTI5MTIsMTAgKzI5NTIsOCBAQCBsbWVy Z2VfbWF0Y2hlZDoKIAkJCQkJCQkJCQl0dXBsZWlkLCBOVUxMLCBuZXdzbG90LCAmcmVzdWx0KSkK IAkJCQl7CiAJCQkJCWlmIChyZXN1bHQgPT0gVE1fT2spCi0JCQkJCXsKLQkJCQkJCSptYXRjaGVk ID0gdHJ1ZTsKIAkJCQkJCXJldHVybiBOVUxMOwkvKiAiZG8gbm90aGluZyIgKi8KLQkJCQkJfQor CiAJCQkJCWJyZWFrOwkJLyogY29uY3VycmVudCB1cGRhdGUvZGVsZXRlICovCiAJCQkJfQogCkBA IC0yOTI1LDEwICsyOTYzLDcgQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJewogCQkJCQlpZiAoIUV4 ZWNJUlVwZGF0ZVRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJCQkJICBv bGR0dXBsZSwgbmV3c2xvdCkpCi0JCQkJCXsKLQkJCQkJCSptYXRjaGVkID0gdHJ1ZTsKIAkJCQkJ CXJldHVybiBOVUxMOwkvKiAiZG8gbm90aGluZyIgKi8KLQkJCQkJfQogCQkJCX0KIAkJCQllbHNl CiAJCQkJewpAQCAtMjk0OCw3ICsyOTgzLDYgQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJCWlmICh1 cGRhdGVDeHQuY3Jvc3NQYXJ0VXBkYXRlKQogCQkJCQl7CiAJCQkJCQltdHN0YXRlLT5tdF9tZXJn ZV91cGRhdGVkICs9IDE7Ci0JCQkJCQkqbWF0Y2hlZCA9IHRydWU7CiAJCQkJCQlyZXR1cm4gY29u dGV4dC0+Y3BVcGRhdGVSZXR1cm5pbmdTbG90OwogCQkJCQl9CiAJCQkJfQpAQCAtMjk2NywxMCAr MzAwMSw4IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJCQkJCQkJCU5VTEwsIE5VTEwsICZyZXN1bHQp KQogCQkJCXsKIAkJCQkJaWYgKHJlc3VsdCA9PSBUTV9PaykKLQkJCQkJewotCQkJCQkJKm1hdGNo ZWQgPSB0cnVlOwogCQkJCQkJcmV0dXJuIE5VTEw7CS8qICJkbyBub3RoaW5nIiAqLwotCQkJCQl9 CisKIAkJCQkJYnJlYWs7CQkvKiBjb25jdXJyZW50IHVwZGF0ZS9kZWxldGUgKi8KIAkJCQl9CiAK QEAgLTI5ODAsMTAgKzMwMTIsNyBAQCBsbWVyZ2VfbWF0Y2hlZDoKIAkJCQl7CiAJCQkJCWlmICgh RXhlY0lSRGVsZXRlVHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkg IG9sZHR1cGxlKSkKLQkJCQkJewotCQkJCQkJKm1hdGNoZWQgPSB0cnVlOwogCQkJCQkJcmV0dXJu IE5VTEw7CS8qICJkbyBub3RoaW5nIiAqLwotCQkJCQl9CiAJCQkJfQogCQkJCWVsc2UKIAkJCQkJ cmVzdWx0ID0gRXhlY0RlbGV0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLApA QCAtMzAwMyw3ICszMDMyLDcgQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJYnJlYWs7CiAKIAkJCWRl ZmF1bHQ6Ci0JCQkJZWxvZyhFUlJPUiwgInVua25vd24gYWN0aW9uIGluIE1FUkdFIFdIRU4gTUFU Q0hFRCBjbGF1c2UiKTsKKwkJCQllbG9nKEVSUk9SLCAidW5rbm93biBhY3Rpb24gaW4gTUVSR0Ug V0hFTiBjbGF1c2UiKTsKIAkJfQogCiAJCXN3aXRjaCAocmVzdWx0KQpAQCAtMzA2MCwxNCArMzA4 OSwxNSBAQCBsbWVyZ2VfbWF0Y2hlZDoKIAkJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VyaWFs aXplIGFjY2VzcyBkdWUgdG8gY29uY3VycmVudCBkZWxldGUiKSkpOwogCiAJCQkJLyoKLQkJCQkg KiBJZiB0aGUgdHVwbGUgd2FzIGFscmVhZHkgZGVsZXRlZCwgcmV0dXJuIHRvIGxldCBjYWxsZXIK LQkJCQkgKiBoYW5kbGUgaXQgdW5kZXIgTk9UIE1BVENIRUQgY2xhdXNlcy4KKwkJCQkgKiBJZiB0 aGUgdHVwbGUgd2FzIGFscmVhZHkgZGVsZXRlZCwgc2V0IG1hdGNoZWQgdG8gZmFsc2UgdG8KKwkJ CQkgKiBsZXQgY2FsbGVyIGhhbmRsZSBpdCB1bmRlciBOT1QgTUFUQ0hFRCBbQlkgVEFSR0VUXSBj bGF1c2VzLgogCQkJCSAqLwogCQkJCSptYXRjaGVkID0gZmFsc2U7CiAJCQkJcmV0dXJuIE5VTEw7 CiAKIAkJCWNhc2UgVE1fVXBkYXRlZDoKIAkJCQl7CisJCQkJCWJvb2wJCXdhc19tYXRjaGVkOwog CQkJCQlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAJCQkJCVR1cGxlVGFibGVTbG90ICpl cHFzbG90LAogCQkJCQkJCSAgICppbnB1dHNsb3Q7CkBAIC0zMDc1LDE5ICszMTA1LDIzIEBAIGxt ZXJnZV9tYXRjaGVkOgogCiAJCQkJCS8qCiAJCQkJCSAqIFRoZSB0YXJnZXQgdHVwbGUgd2FzIGNv bmN1cnJlbnRseSB1cGRhdGVkIGJ5IHNvbWUgb3RoZXIKLQkJCQkJICogdHJhbnNhY3Rpb24uIFJ1 biBFdmFsUGxhblF1YWwoKSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBvZgotCQkJCQkgKiB0aGUgdHVw bGUuIElmIGl0IGRvZXMgbm90IHJldHVybiBhIHR1cGxlLCB0aGVuIHdlCi0JCQkJCSAqIHN3aXRj aCB0byB0aGUgTk9UIE1BVENIRUQgbGlzdCBvZiBhY3Rpb25zLiBJZiBpdCBkb2VzCi0JCQkJCSAq IHJldHVybiBhIHR1cGxlIGFuZCB0aGUgam9pbiBxdWFsIGlzIHN0aWxsIHNhdGlzZmllZCwKLQkJ CQkJICogdGhlbiB3ZSBqdXN0IG5lZWQgdG8gcmVjaGVjayB0aGUgTUFUQ0hFRCBhY3Rpb25zLAot CQkJCQkgKiBzdGFydGluZyBmcm9tIHRoZSB0b3AsIGFuZCBleGVjdXRlIHRoZSBmaXJzdCBxdWFs aWZ5aW5nCi0JCQkJCSAqIGFjdGlvbi4KKwkJCQkJICogdHJhbnNhY3Rpb24uICBJZiB3ZSBhcmUg Y3VycmVudGx5IHByb2Nlc3NpbmcgYSBNQVRDSEVECisJCQkJCSAqIGFjdGlvbiwgdXNlIEV2YWxQ bGFuUXVhbCgpIHdpdGggdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZQorCQkJCQkgKiB0dXBsZSBhbmQg cmVjaGVjayB0aGUgam9pbiBxdWFsLCB0byBkZXRlY3QgYSBjaGFuZ2UKKwkJCQkJICogZnJvbSB0 aGUgTUFUQ0hFRCB0byB0aGUgTk9UIE1BVENIRUQgY2FzZXMuICBJZiB3ZSBhcmUKKwkJCQkJICog YWxyZWFkeSBwcm9jZXNzaW5nIGEgTk9UIE1BVENIRUQgQlkgU09VUkNFIGFjdGlvbiwgd2UKKwkJ CQkJICogc2tpcCB0aGlzIChjYW5ub3Qgc3dpdGNoIGZyb20gTk9UIE1BVENIRUQgQlkgU09VUkNF IHRvCisJCQkJCSAqIE1BVENIRUQpLgogCQkJCQkgKi8KKwkJCQkJd2FzX21hdGNoZWQgPSByZWxh Y3Rpb24tPm1hc19hY3Rpb24tPm1hdGNoS2luZCA9PSBNRVJHRV9XSEVOX01BVENIRUQ7CiAJCQkJ CXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKIAkJ CQkJbG9ja21vZGUgPSBFeGVjVXBkYXRlTG9ja01vZGUoZXN0YXRlLCByZXN1bHRSZWxJbmZvKTsK IAotCQkJCQlpbnB1dHNsb3QgPSBFdmFsUGxhblF1YWxTbG90KGVwcXN0YXRlLCByZXN1bHRSZWxh dGlvbkRlc2MsCi0JCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4 KTsKKwkJCQkJaWYgKHdhc19tYXRjaGVkKQorCQkJCQkJaW5wdXRzbG90ID0gRXZhbFBsYW5RdWFs U2xvdChlcHFzdGF0ZSwgcmVzdWx0UmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCQkJCSByZXN1bHRS ZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXgpOworCQkJCQllbHNlCisJCQkJCQlpbnB1dHNsb3Qg PSByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3Q7CiAKIAkJCQkJcmVzdWx0ID0gdGFibGVf dHVwbGVfbG9jayhyZXN1bHRSZWxhdGlvbkRlc2MsIHR1cGxlaWQsCiAJCQkJCQkJCQkJCSAgZXN0 YXRlLT5lc19zbmFwc2hvdCwKQEAgLTMwOTgsMzQgKzMxMzIsOSBAQCBsbWVyZ2VfbWF0Y2hlZDoK IAkJCQkJc3dpdGNoIChyZXN1bHQpCiAJCQkJCXsKIAkJCQkJCWNhc2UgVE1fT2s6Ci0JCQkJCQkJ ZXBxc2xvdCA9IEV2YWxQbGFuUXVhbChlcHFzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgIHJlc3VsdFJl bGF0aW9uRGVzYywKLQkJCQkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJ bmRleCwKLQkJCQkJCQkJCQkJCSAgIGlucHV0c2xvdCk7CiAKIAkJCQkJCQkvKgotCQkJCQkJCSAq IElmIHdlIGdvdCBubyB0dXBsZSwgb3IgdGhlIHR1cGxlIHdlIGdldCBoYXMgYQotCQkJCQkJCSAq IE5VTEwgY3RpZCwgZ28gYmFjayB0byBjYWxsZXI6IHRoaXMgb25lIGlzIG5vdCBhCi0JCQkJCQkJ ICogTUFUQ0hFRCB0dXBsZSBhbnltb3JlLCBzbyB0aGV5IGNhbiByZXRyeSB3aXRoCi0JCQkJCQkJ ICogTk9UIE1BVENIRUQgYWN0aW9ucy4KLQkJCQkJCQkgKi8KLQkJCQkJCQlpZiAoVHVwSXNOdWxs KGVwcXNsb3QpKQotCQkJCQkJCXsKLQkJCQkJCQkJKm1hdGNoZWQgPSBmYWxzZTsKLQkJCQkJCQkJ cmV0dXJuIE5VTEw7Ci0JCQkJCQkJfQotCi0JCQkJCQkJKHZvaWQpIEV4ZWNHZXRKdW5rQXR0cmli dXRlKGVwcXNsb3QsCi0JCQkJCQkJCQkJCQkJCXJlc3VsdFJlbEluZm8tPnJpX1Jvd0lkQXR0Tm8s Ci0JCQkJCQkJCQkJCQkJCSZpc051bGwpOwotCQkJCQkJCWlmIChpc051bGwpCi0JCQkJCQkJewot CQkJCQkJCQkqbWF0Y2hlZCA9IGZhbHNlOwotCQkJCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJCQl9 Ci0KLQkJCQkJCQkvKgotCQkJCQkJCSAqIFdoZW4gYSB0dXBsZSB3YXMgdXBkYXRlZCBhbmQgbWln cmF0ZWQgdG8KKwkJCQkJCQkgKiBJZiB0aGUgdHVwbGUgd2FzIHVwZGF0ZWQgYW5kIG1pZ3JhdGVk IHRvCiAJCQkJCQkJICogYW5vdGhlciBwYXJ0aXRpb24gY29uY3VycmVudGx5LCB0aGUgY3VycmVu dAogCQkJCQkJCSAqIE1FUkdFIGltcGxlbWVudGF0aW9uIGNhbid0IGZvbGxvdy4gIFRoZXJlJ3MK IAkJCQkJCQkgKiBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMgY2FzZSwgYnV0 CkBAIC0zMTM2LDI2ICszMTQ1LDcyIEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJCQkJCWlmIChJdGVt UG9pbnRlckluZGljYXRlc01vdmVkUGFydGl0aW9ucygmY29udGV4dC0+dG1mZC5jdGlkKSkKIAkJ CQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJ QUxJWkFUSU9OX0ZBSUxVUkUpLAotCQkJCQkJCQkJCSBlcnJtc2coInR1cGxlIHRvIGJlIGRlbGV0 ZWQgd2FzIGFscmVhZHkgbW92ZWQgdG8gYW5vdGhlciBwYXJ0aXRpb24gZHVlIHRvIGNvbmN1cnJl bnQgdXBkYXRlIikpKTsKKwkJCQkJCQkJCQkgZXJybXNnKCJ0dXBsZSB0byBiZSBtZXJnZWQgd2Fz IGFscmVhZHkgbW92ZWQgdG8gYW5vdGhlciBwYXJ0aXRpb24gZHVlIHRvIGNvbmN1cnJlbnQgdXBk YXRlIikpKTsKIAogCQkJCQkJCS8qCi0JCQkJCQkJICogQSBub24tTlVMTCBjdGlkIG1lYW5zIHRo YXQgd2UgYXJlIHN0aWxsIGRlYWxpbmcKLQkJCQkJCQkgKiB3aXRoIE1BVENIRUQgY2FzZS4gUmVz dGFydCB0aGUgbG9vcCBzbyB0aGF0IHdlCi0JCQkJCQkJICogYXBwbHkgYWxsIHRoZSBNQVRDSEVE IHJ1bGVzIGFnYWluLCB0byBlbnN1cmUKLQkJCQkJCQkgKiB0aGF0IHRoZSBmaXJzdCBxdWFsaWZ5 aW5nIFdIRU4gTUFUQ0hFRCBhY3Rpb24KLQkJCQkJCQkgKiBpcyBleGVjdXRlZC4KLQkJCQkJCQkg KgotCQkJCQkJCSAqIFVwZGF0ZSB0dXBsZWlkIHRvIHRoYXQgb2YgdGhlIG5ldyB0dXBsZSwgZm9y Ci0JCQkJCQkJICogdGhlIHJlZmV0Y2ggd2UgZG8gYXQgdGhlIHRvcC4KKwkJCQkJCQkgKiBJZiB0 aGlzIHdhcyBhIE1BVENIRUQgY2FzZSwgdXNlIEV2YWxQbGFuUXVhbCgpCisJCQkJCQkJICogdG8g cmVjaGVjayB0aGUgam9pbiBjb25kaXRpb24uCisJCQkJCQkJICovCisJCQkJCQkJaWYgKHdhc19t YXRjaGVkKQorCQkJCQkJCXsKKwkJCQkJCQkJZXBxc2xvdCA9IEV2YWxQbGFuUXVhbChlcHFzdGF0 ZSwKKwkJCQkJCQkJCQkJCQkgICByZXN1bHRSZWxhdGlvbkRlc2MsCisJCQkJCQkJCQkJCQkJICAg cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4LAorCQkJCQkJCQkJCQkJCSAgIGlucHV0 c2xvdCk7CisKKwkJCQkJCQkJLyoKKwkJCQkJCQkJICogSWYgdGhlIHN1YnBsYW4gZGlkbid0IHJl dHVybiBhIHR1cGxlLCB0aGVuCisJCQkJCQkJCSAqIHdlIG11c3QgYmUgZGVhbGluZyB3aXRoIGFu IGlubmVyIGpvaW4gZm9yCisJCQkJCQkJCSAqIHdoaWNoIHRoZSBqb2luIGNvbmRpdGlvbiBubyBs b25nZXIgbWF0Y2hlcy4KKwkJCQkJCQkJICogVGhpcyBjYW4gb25seSBoYXBwZW4gaWYgdGhlcmUg YXJlIG5vIE5PVAorCQkJCQkJCQkgKiBNQVRDSEVEIGFjdGlvbnMsIGFuZCBzbyB0aGVyZSBpcyBu b3RoaW5nCisJCQkJCQkJCSAqIG1vcmUgdG8gZG8uCisJCQkJCQkJCSAqLworCQkJCQkJCQlpZiAo VHVwSXNOdWxsKGVwcXNsb3QpKQorCQkJCQkJCQkJcmV0dXJuIE5VTEw7CisKKwkJCQkJCQkJLyoK KwkJCQkJCQkJICogSWYgd2UgZ290IGEgTlVMTCBjdGlkIGZyb20gdGhlIHN1YnBsYW4sIHRoZQor CQkJCQkJCQkgKiBqb2luIHF1YWxzIG5vIGxvbmdlciBwYXNzIGFuZCB3ZSBzd2l0Y2ggdG8KKwkJ CQkJCQkJICogdGhlIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBjYXNlLgorCQkJCQkJCQkgKi8KKwkJ CQkJCQkJKHZvaWQpIEV4ZWNHZXRKdW5rQXR0cmlidXRlKGVwcXNsb3QsCisJCQkJCQkJCQkJCQkJ CQlyZXN1bHRSZWxJbmZvLT5yaV9Sb3dJZEF0dE5vLAorCQkJCQkJCQkJCQkJCQkJJmlzTnVsbCk7 CisJCQkJCQkJCWlmIChpc051bGwpCisJCQkJCQkJCQkqbWF0Y2hlZCA9IGZhbHNlOworCisJCQkJ CQkJCS8qCisJCQkJCQkJCSAqIE90aGVyd2lzZSwgcmVjaGVjayB0aGUgam9pbiBxdWFscyB0byBz ZWUgaWYKKwkJCQkJCQkJICogd2UgbmVlZCB0byBzd2l0Y2ggdG8gdGhlIE5PVCBNQVRDSEVEIEJZ CisJCQkJCQkJCSAqIFNPVVJDRSBjYXNlLgorCQkJCQkJCQkgKi8KKwkJCQkJCQkJaWYgKCF0YWJs ZV90dXBsZV9mZXRjaF9yb3dfdmVyc2lvbihyZXN1bHRSZWxhdGlvbkRlc2MsCisJCQkJCQkJCQkJ CQkJCQkJICAgJmNvbnRleHQtPnRtZmQuY3RpZCwKKwkJCQkJCQkJCQkJCQkJCQkgICBTbmFwc2hv dEFueSwKKwkJCQkJCQkJCQkJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3Qp KQorCQkJCQkJCQkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBmZXRjaCB0aGUgdGFyZ2V0IHR1cGxl Iik7CisKKwkJCQkJCQkJaWYgKCptYXRjaGVkKQorCQkJCQkJCQkJKm1hdGNoZWQgPSBFeGVjUXVh bChyZXN1bHRSZWxJbmZvLT5yaV9NZXJnZUpvaW5Db25kaXRpb24sCisJCQkJCQkJCQkJCQkJCWVj b250ZXh0KTsKKworCQkJCQkJCQkvKiBTd2l0Y2ggbGlzdHMsIGlmIG5lY2Vzc2FyeSAqLworCQkJ CQkJCQlpZiAoISptYXRjaGVkKQorCQkJCQkJCQkJYWN0aW9uU3RhdGVzID0gbWVyZ2VBY3Rpb25z W01FUkdFX1dIRU5fTk9UX01BVENIRURfQllfU09VUkNFXTsKKwkJCQkJCQl9CisKKwkJCQkJCQkv KgorCQkJCQkJCSAqIExvb3AgYmFjayBhbmQgcHJvY2VzcyB0aGUgTUFUQ0hFRCBvciBOT1QKKwkJ CQkJCQkgKiBNQVRDSEVEIEJZIFNPVVJDRSBhY3Rpb25zIGZyb20gdGhlIHN0YXJ0LgogCQkJCQkJ CSAqLwotCQkJCQkJCUl0ZW1Qb2ludGVyQ29weSgmY29udGV4dC0+dG1mZC5jdGlkLCB0dXBsZWlk KTsKIAkJCQkJCQlnb3RvIGxtZXJnZV9tYXRjaGVkOwogCiAJCQkJCQljYXNlIFRNX0RlbGV0ZWQ6 CiAKIAkJCQkJCQkvKgogCQkJCQkJCSAqIHR1cGxlIGFscmVhZHkgZGVsZXRlZDsgdGVsbCBjYWxs ZXIgdG8gcnVuIE5PVAotCQkJCQkJCSAqIE1BVENIRUQgYWN0aW9ucworCQkJCQkJCSAqIE1BVENI RUQgW0JZIFRBUkdFVF0gYWN0aW9ucwogCQkJCQkJCSAqLwogCQkJCQkJCSptYXRjaGVkID0gZmFs c2U7CiAJCQkJCQkJcmV0dXJuIE5VTEw7CkBAIC0zMjM5LDEzICszMjk0LDExIEBAIGxtZXJnZV9t YXRjaGVkOgogCS8qCiAJICogU3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIGFuIGFjdGlvbiBvciBubyBx dWFsaWZ5aW5nIGFjdGlvbiB3YXMgZm91bmQuCiAJICovCi0JKm1hdGNoZWQgPSB0cnVlOwotCiAJ cmV0dXJuIHJzbG90OwogfQogCiAvKgotICogRXhlY3V0ZSB0aGUgZmlyc3QgcXVhbGlmeWluZyBO T1QgTUFUQ0hFRCBhY3Rpb24uCisgKiBFeGVjdXRlIHRoZSBmaXJzdCBxdWFsaWZ5aW5nIE5PVCBN QVRDSEVEIFtCWSBUQVJHRVRdIGFjdGlvbi4KICAqLwogc3RhdGljIFR1cGxlVGFibGVTbG90ICoK IEV4ZWNNZXJnZU5vdE1hdGNoZWQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLApAQCAtMzI1Myw3ICszMzA2LDcgQEAgRXhlY01lcmdlTm90 TWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKgogewogCU1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUgPSBjb250ZXh0LT5tdHN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dCA9IG10c3RhdGUt PnBzLnBzX0V4cHJDb250ZXh0OwotCUxpc3QJICAgKmFjdGlvblN0YXRlcyA9IE5JTDsKKwlMaXN0 CSAgICphY3Rpb25TdGF0ZXM7CiAJVHVwbGVUYWJsZVNsb3QgKnJzbG90ID0gTlVMTDsKIAlMaXN0 Q2VsbCAgICpsOwogCkBAIC0zMjY2LDcgKzMzMTksNyBAQCBFeGVjTWVyZ2VOb3RNYXRjaGVkKE1v ZGlmeVRhYmxlQ29udGV4dCAqCiAJICogWFhYIGRvZXMgdGhpcyBtZWFuIHRoYXQgd2UgY2FuIGF2 b2lkIGNyZWF0aW5nIGNvcGllcyBvZiBhY3Rpb25TdGF0ZXMgb24KIAkgKiBwYXJ0aXRpb25lZCB0 YWJsZXMsIGZvciBub3QtbWF0Y2hlZCBhY3Rpb25zPwogCSAqLwotCWFjdGlvblN0YXRlcyA9IHJl c3VsdFJlbEluZm8tPnJpX25vdE1hdGNoZWRNZXJnZUFjdGlvbjsKKwlhY3Rpb25TdGF0ZXMgPSBy ZXN1bHRSZWxJbmZvLT5yaV9NZXJnZUFjdGlvbnNbTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9U QVJHRVRdOwogCiAJLyoKIAkgKiBNYWtlIHNvdXJjZSB0dXBsZSBhdmFpbGFibGUgdG8gRXhlY1F1 YWwgYW5kIEV4ZWNQcm9qZWN0LiBXZSBkb24ndCBuZWVkCkBAIC0zMzYwLDkgKzM0MTMsMTEgQEAg RXhlY0luaXRNZXJnZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCWZvcmVhY2gobGMsIG5v ZGUtPm1lcmdlQWN0aW9uTGlzdHMpCiAJewogCQlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3QgPSBs Zmlyc3QobGMpOworCQlOb2RlCSAgICpqb2luQ29uZGl0aW9uOwogCQlUdXBsZURlc2MJcmVsYXRp b25EZXNjOwogCQlMaXN0Q2VsbCAgICpsOwogCisJCWpvaW5Db25kaXRpb24gPSAoTm9kZSAqKSBs aXN0X250aChub2RlLT5tZXJnZUpvaW5Db25kaXRpb25zLCBpKTsKIAkJcmVzdWx0UmVsSW5mbyA9 IG10c3RhdGUtPnJlc3VsdFJlbEluZm8gKyBpOwogCQlpKys7CiAJCXJlbGF0aW9uRGVzYyA9IFJl bGF0aW9uR2V0RGVzY3IocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjKTsKQEAgLTMzNzEs MTMgKzM0MjYsMTYgQEAgRXhlY0luaXRNZXJnZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAog CQlpZiAodW5saWtlbHkoIXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3ROZXdJbmZvVmFsaWQpKQog CQkJRXhlY0luaXRNZXJnZVR1cGxlU2xvdHMobXRzdGF0ZSwgcmVzdWx0UmVsSW5mbyk7CiAKKwkJ LyogaW5pdGlhbGl6ZSBzdGF0ZSBmb3Igam9pbiBjb25kaXRpb24tY2hlY2tpbmcgKi8KKwkJcmVz dWx0UmVsSW5mby0+cmlfTWVyZ2VKb2luQ29uZGl0aW9uID0KKwkJCUV4ZWNJbml0UXVhbCgoTGlz dCAqKSBqb2luQ29uZGl0aW9uLCAmbXRzdGF0ZS0+cHMpOworCiAJCWZvcmVhY2gobCwgbWVyZ2VB Y3Rpb25MaXN0KQogCQl7CiAJCQlNZXJnZUFjdGlvbiAqYWN0aW9uID0gKE1lcmdlQWN0aW9uICop IGxmaXJzdChsKTsKIAkJCU1lcmdlQWN0aW9uU3RhdGUgKmFjdGlvbl9zdGF0ZTsKIAkJCVR1cGxl VGFibGVTbG90ICp0Z3RzbG90OwogCQkJVHVwbGVEZXNjCXRndGRlc2M7Ci0JCQlMaXN0CSAgKips aXN0OwogCiAJCQkvKgogCQkJICogQnVpbGQgYWN0aW9uIG1lcmdlIHN0YXRlIGZvciB0aGlzIHJl bC4gIChGb3IgcGFydGl0aW9ucywKQEAgLTMzODksMTUgKzM0NDcsMTIgQEAgRXhlY0luaXRNZXJn ZShNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCQkJCQkJCSAgJm10c3RhdGUtPnBz KTsKIAogCQkJLyoKLQkJCSAqIFdlIGNyZWF0ZSB0d28gbGlzdHMgLSBvbmUgZm9yIFdIRU4gTUFU Q0hFRCBhY3Rpb25zIGFuZCBvbmUgZm9yCi0JCQkgKiBXSEVOIE5PVCBNQVRDSEVEIGFjdGlvbnMg LSBhbmQgc3RpY2sgdGhlIE1lcmdlQWN0aW9uU3RhdGUgaW50bwotCQkJICogdGhlIGFwcHJvcHJp YXRlIGxpc3QuCisJCQkgKiBXZSBjcmVhdGUgdGhyZWUgbGlzdHMgLSBvbmUgZm9yIGVhY2ggTWVy Z2VNYXRjaEtpbmQgLSBhbmQgc3RpY2sKKwkJCSAqIHRoZSBNZXJnZUFjdGlvblN0YXRlIGludG8g dGhlIGFwcHJvcHJpYXRlIGxpc3QuCiAJCQkgKi8KLQkJCWlmIChhY3Rpb25fc3RhdGUtPm1hc19h Y3Rpb24tPm1hdGNoZWQpCi0JCQkJbGlzdCA9ICZyZXN1bHRSZWxJbmZvLT5yaV9tYXRjaGVkTWVy Z2VBY3Rpb247Ci0JCQllbHNlCi0JCQkJbGlzdCA9ICZyZXN1bHRSZWxJbmZvLT5yaV9ub3RNYXRj aGVkTWVyZ2VBY3Rpb247Ci0JCQkqbGlzdCA9IGxhcHBlbmQoKmxpc3QsIGFjdGlvbl9zdGF0ZSk7 CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9NZXJnZUFjdGlvbnNbYWN0aW9uLT5tYXRjaEtpbmRdID0K KwkJCQlsYXBwZW5kKHJlc3VsdFJlbEluZm8tPnJpX01lcmdlQWN0aW9uc1thY3Rpb24tPm1hdGNo S2luZF0sCisJCQkJCQlhY3Rpb25fc3RhdGUpOwogCiAJCQlzd2l0Y2ggKGFjdGlvbi0+Y29tbWFu ZFR5cGUpCiAJCQl7CkBAIC0zNzU0LDYgKzM4MDksMzEgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5T dGF0ZSAqcHN0YXRlKQogCQlpZiAocHN0YXRlLT5wc19FeHByQ29udGV4dCkKIAkJCVJlc2V0RXhw ckNvbnRleHQocHN0YXRlLT5wc19FeHByQ29udGV4dCk7CiAKKwkJLyoKKwkJICogSWYgdGhlcmUg aXMgYSBwZW5kaW5nIE1FUkdFIC4uLiBXSEVOIE5PVCBNQVRDSEVEIFtCWSBUQVJHRVRdIGFjdGlv bgorCQkgKiB0byBleGVjdXRlLCBkbyBzbyBub3cgLS0tIHNlZSB0aGUgY29tbWVudHMgaW4gRXhl Y01lcmdlKCkuCisJCSAqLworCQlpZiAobm9kZS0+bXRfbWVyZ2VfcGVuZGluZ19ub3RfbWF0Y2hl ZCAhPSBOVUxMKQorCQl7CisJCQljb250ZXh0LnBsYW5TbG90ID0gbm9kZS0+bXRfbWVyZ2VfcGVu ZGluZ19ub3RfbWF0Y2hlZDsKKworCQkJc2xvdCA9IEV4ZWNNZXJnZU5vdE1hdGNoZWQoJmNvbnRl eHQsIG5vZGUtPnJlc3VsdFJlbEluZm8sCisJCQkJCQkJCQkgICBub2RlLT5jYW5TZXRUYWcpOwor CisJCQkvKiBDbGVhciB0aGUgcGVuZGluZyBhY3Rpb24gKi8KKwkJCW5vZGUtPm10X21lcmdlX3Bl bmRpbmdfbm90X21hdGNoZWQgPSBOVUxMOworCisJCQkvKgorCQkJICogSWYgd2UgZ290IGEgUkVU VVJOSU5HIHJlc3VsdCwgcmV0dXJuIGl0IHRvIHRoZSBjYWxsZXIuICBXZSdsbAorCQkJICogY29u dGludWUgdGhlIHdvcmsgb24gbmV4dCBjYWxsLgorCQkJICovCisJCQlpZiAoc2xvdCkKKwkJCQly ZXR1cm4gc2xvdDsKKworCQkJY29udGludWU7CQkJLyogY29udGludWUgd2l0aCB0aGUgbmV4dCB0 dXBsZSAqLworCQl9CisKKwkJLyogRmV0Y2ggdGhlIG5leHQgcm93IGZyb20gc3VicGxhbiAqLwog CQljb250ZXh0LnBsYW5TbG90ID0gRXhlY1Byb2NOb2RlKHN1YnBsYW5zdGF0ZSk7CiAKIAkJLyog Tm8gbW9yZSB0dXBsZXMgdG8gcHJvY2Vzcz8gKi8KQEAgLTQxMzksNiArNDIxOSw3IEBAIEV4ZWNJ bml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEUKIAltdHN0YXRlLT5yZXN1bHRSZWxJ bmZvID0gKFJlc3VsdFJlbEluZm8gKikKIAkJcGFsbG9jKG5yZWxzICogc2l6ZW9mKFJlc3VsdFJl bEluZm8pKTsKIAorCW10c3RhdGUtPm10X21lcmdlX3BlbmRpbmdfbm90X21hdGNoZWQgPSBOVUxM OwogCW10c3RhdGUtPm10X21lcmdlX2luc2VydGVkID0gMDsKIAltdHN0YXRlLT5tdF9tZXJnZV91 cGRhdGVkID0gMDsKIAltdHN0YXRlLT5tdF9tZXJnZV9kZWxldGVkID0gMDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3MDI4MC4uNGUwY2Q2MwotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYwpAQCAtMjU5Niw2ICsyNTk2LDggQEAgcXVlcnlfdHJlZV93YWxrZXJfaW1wbChRdWVy eSAqcXVlcnksCiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5tZXJnZUFjdGlvbkxp c3QpKQogCQlyZXR1cm4gdHJ1ZTsKKwlpZiAoV0FMSyhxdWVyeS0+bWVyZ2VKb2luQ29uZGl0aW9u KSkKKwkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPnJldHVybmluZ0xpc3QpKQogCQly ZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+am9pbnRyZWUpKQpAQCAtMzYyMSw2ICszNjIz LDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2ltcGwoUXVlcnkgKnF1ZXJ5LAogCU1VVEFURShxdWVy eS0+d2l0aENoZWNrT3B0aW9ucywgcXVlcnktPndpdGhDaGVja09wdGlvbnMsIExpc3QgKik7CiAJ TVVUQVRFKHF1ZXJ5LT5vbkNvbmZsaWN0LCBxdWVyeS0+b25Db25mbGljdCwgT25Db25mbGljdEV4 cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIHF1ZXJ5LT5tZXJnZUFjdGlv bkxpc3QsIExpc3QgKik7CisJTVVUQVRFKHF1ZXJ5LT5tZXJnZUpvaW5Db25kaXRpb24sIHF1ZXJ5 LT5tZXJnZUpvaW5Db25kaXRpb24sIE5vZGUgKik7CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdM aXN0LCBxdWVyeS0+cmV0dXJuaW5nTGlzdCwgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50 cmVlLCBxdWVyeS0+am9pbnRyZWUsIEZyb21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3Bl cmF0aW9ucywgcXVlcnktPnNldE9wZXJhdGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9jcmVhdGVwbGFuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjEwZjRhNS4u MWQzNjY2NQotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMTEsNyArMzEx LDggQEAgc3RhdGljIE1vZGlmeVRhYmxlICptYWtlX21vZGlmeXRhYmxlKFBsYQogCQkJCQkJCQkJ IExpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJCQkJIExpc3QgKndpdGhDaGVja09wdGlv bkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICpyb3dNYXJrcywg T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25M aXN0cywgaW50IGVwcVBhcmFtKTsKKwkJCQkJCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBM aXN0ICptZXJnZUpvaW5Db25kaXRpb25zLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBzdGF0 aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApAQCAtMjgzNSw2 ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lckluZm8gKnJvbwogCQkJ CQkJCWJlc3RfcGF0aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAog CQkJCQkJCWJlc3RfcGF0aC0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPm1l cmdlSm9pbkNvbmRpdGlvbnMsCiAJCQkJCQkJYmVzdF9wYXRoLT5lcHFQYXJhbSk7CiAKIAljb3B5 X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAmYmVzdF9wYXRoLT5wYXRoKTsKQEAgLTcw MTQsNyArNzAxNiw4IEBAIG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4K IAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhDaGVja09wdGlv bkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29u ZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQg ZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIExpc3QgKm1lcmdlSm9pbkNv bmRpdGlvbnMsCisJCQkJIGludCBlcHFQYXJhbSkKIHsKIAlNb2RpZnlUYWJsZSAqbm9kZSA9IG1h a2VOb2RlKE1vZGlmeVRhYmxlKTsKIAlMaXN0CSAgICpmZHdfcHJpdmF0ZV9saXN0OwpAQCAtNzA4 NCw2ICs3MDg3LDcgQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbgog CW5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlzdHM7CiAJbm9kZS0+cm93TWFya3Mg PSByb3dNYXJrczsKIAlub2RlLT5tZXJnZUFjdGlvbkxpc3RzID0gbWVyZ2VBY3Rpb25MaXN0czsK Kwlub2RlLT5tZXJnZUpvaW5Db25kaXRpb25zID0gbWVyZ2VKb2luQ29uZGl0aW9uczsKIAlub2Rl LT5lcHFQYXJhbSA9IGVwcVBhcmFtOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTY0ODI2Li42MzE4YjE4Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTkwNSw2ICs5MDUsOSBAQCBzdWJxdWVyeV9wbGFubmVy KFBsYW5uZXJHbG9iYWwgKmdsb2IsIFF1CiAJCQkJCQkJCSAgRVhQUktJTkRfUVVBTCk7CiAJfQog CisJcGFyc2UtPm1lcmdlSm9pbkNvbmRpdGlvbiA9CisJCXByZXByb2Nlc3NfZXhwcmVzc2lvbihy b290LCBwYXJzZS0+bWVyZ2VKb2luQ29uZGl0aW9uLCBFWFBSS0lORF9RVUFMKTsKKwogCXJvb3Qt PmFwcGVuZF9yZWxfbGlzdCA9IChMaXN0ICopCiAJCXByZXByb2Nlc3NfZXhwcmVzc2lvbihyb290 LCAoTm9kZSAqKSByb290LT5hcHBlbmRfcmVsX2xpc3QsCiAJCQkJCQkJICBFWFBSS0lORF9BUFBJ TkZPKTsKQEAgLTE3ODcsNiArMTc5MCw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8g KnJvb3QsIGRvdWIKIAkJCUxpc3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzID0gTklMOwogCQkJ TGlzdAkgICAqcmV0dXJuaW5nTGlzdHMgPSBOSUw7CiAJCQlMaXN0CSAgICptZXJnZUFjdGlvbkxp c3RzID0gTklMOworCQkJTGlzdAkgICAqbWVyZ2VKb2luQ29uZGl0aW9ucyA9IE5JTDsKIAkJCUxp c3QJICAgKnJvd01hcmtzOwogCiAJCQlpZiAoYm1zX21lbWJlcnNoaXAocm9vdC0+YWxsX3Jlc3Vs dF9yZWxpZHMpID09IEJNU19NVUxUSVBMRSkKQEAgLTE4OTMsNiArMTg5NywxOSBAQCBncm91cGlu Z19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3ViCiAJCQkJCQltZXJnZUFjdGlvbkxpc3Rz ID0gbGFwcGVuZChtZXJnZUFjdGlvbkxpc3RzLAogCQkJCQkJCQkJCQkJICAgbWVyZ2VBY3Rpb25M aXN0KTsKIAkJCQkJfQorCQkJCQlpZiAocGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9NRVJHRSkK KwkJCQkJeworCQkJCQkJTm9kZQkgICAqbWVyZ2VKb2luQ29uZGl0aW9uID0gcGFyc2UtPm1lcmdl Sm9pbkNvbmRpdGlvbjsKKworCQkJCQkJaWYgKHRoaXNfcmVzdWx0X3JlbCAhPSB0b3BfcmVzdWx0 X3JlbCkKKwkJCQkJCQltZXJnZUpvaW5Db25kaXRpb24gPQorCQkJCQkJCQlhZGp1c3RfYXBwZW5k cmVsX2F0dHJzX211bHRpbGV2ZWwocm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkgIG1lcmdlSm9pbkNv bmRpdGlvbiwKKwkJCQkJCQkJCQkJCQkJCQkgIHRoaXNfcmVzdWx0X3JlbCwKKwkJCQkJCQkJCQkJ CQkJCQkgIHRvcF9yZXN1bHRfcmVsKTsKKwkJCQkJCW1lcmdlSm9pbkNvbmRpdGlvbnMgPSBsYXBw ZW5kKG1lcmdlSm9pbkNvbmRpdGlvbnMsCisJCQkJCQkJCQkJCQkJICBtZXJnZUpvaW5Db25kaXRp b24pOworCQkJCQl9CiAJCQkJfQogCiAJCQkJaWYgKHJlc3VsdFJlbGF0aW9ucyA9PSBOSUwpCkBA IC0xOTE3LDYgKzE5MzQsOCBAQCBncm91cGluZ19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBk b3ViCiAJCQkJCQlyZXR1cm5pbmdMaXN0cyA9IGxpc3RfbWFrZTEocGFyc2UtPnJldHVybmluZ0xp c3QpOwogCQkJCQlpZiAocGFyc2UtPm1lcmdlQWN0aW9uTGlzdCkKIAkJCQkJCW1lcmdlQWN0aW9u TGlzdHMgPSBsaXN0X21ha2UxKHBhcnNlLT5tZXJnZUFjdGlvbkxpc3QpOworCQkJCQlpZiAocGFy c2UtPmNvbW1hbmRUeXBlID09IENNRF9NRVJHRSkKKwkJCQkJCW1lcmdlSm9pbkNvbmRpdGlvbnMg PSBsaXN0X21ha2UxKHBhcnNlLT5tZXJnZUpvaW5Db25kaXRpb24pOwogCQkJCX0KIAkJCX0KIAkJ CWVsc2UKQEAgLTE5MzIsNiArMTk1MSw4IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8g KnJvb3QsIGRvdWIKIAkJCQkJcmV0dXJuaW5nTGlzdHMgPSBsaXN0X21ha2UxKHBhcnNlLT5yZXR1 cm5pbmdMaXN0KTsKIAkJCQlpZiAocGFyc2UtPm1lcmdlQWN0aW9uTGlzdCkKIAkJCQkJbWVyZ2VB Y3Rpb25MaXN0cyA9IGxpc3RfbWFrZTEocGFyc2UtPm1lcmdlQWN0aW9uTGlzdCk7CisJCQkJaWYg KHBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfTUVSR0UpCisJCQkJCW1lcmdlSm9pbkNvbmRpdGlv bnMgPSBsaXN0X21ha2UxKHBhcnNlLT5tZXJnZUpvaW5Db25kaXRpb24pOwogCQkJfQogCiAJCQkv KgpAQCAtMTk1OSw2ICsxOTgwLDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9v dCwgZG91YgogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5vbkNvbmZsaWN0 LAogCQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJbWVyZ2VKb2luQ29uZGl0 aW9ucywKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVjX3BhcmFtKHJvb3QpKTsKIAkJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggNDI2MDNkYi4uMzdhYmNiNAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0xMTQz LDcgKzExNDMsOSBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwCiAJ CQkJICovCiAJCQkJaWYgKHNwbGFuLT5tZXJnZUFjdGlvbkxpc3RzICE9IE5JTCkKIAkJCQl7CisJ CQkJCUxpc3QJICAgKm5ld01KQyA9IE5JTDsKIAkJCQkJTGlzdENlbGwgICAqbGNhLAorCQkJCQkJ CSAgICpsY2osCiAJCQkJCQkJICAgKmxjcjsKIAogCQkJCQkvKgpAQCAtMTE2NCwxMCArMTE2Niwx MiBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwCiAKIAkJCQkJaXRs aXN0ID0gYnVpbGRfdGxpc3RfaW5kZXgoc3VicGxhbi0+dGFyZ2V0bGlzdCk7CiAKLQkJCQkJZm9y Ym90aChsY2EsIHNwbGFuLT5tZXJnZUFjdGlvbkxpc3RzLAotCQkJCQkJCWxjciwgc3BsYW4tPnJl c3VsdFJlbGF0aW9ucykKKwkJCQkJZm9ydGhyZWUobGNhLCBzcGxhbi0+bWVyZ2VBY3Rpb25MaXN0 cywKKwkJCQkJCQkgbGNqLCBzcGxhbi0+bWVyZ2VKb2luQ29uZGl0aW9ucywKKwkJCQkJCQkgbGNy LCBzcGxhbi0+cmVzdWx0UmVsYXRpb25zKQogCQkJCQl7CiAJCQkJCQlMaXN0CSAgICptZXJnZUFj dGlvbkxpc3QgPSBsZmlyc3QobGNhKTsKKwkJCQkJCU5vZGUJICAgKm1lcmdlSm9pbkNvbmRpdGlv biA9IGxmaXJzdChsY2opOwogCQkJCQkJSW5kZXgJCXJlc3VsdHJlbCA9IGxmaXJzdF9pbnQobGNy KTsKIAogCQkJCQkJZm9yZWFjaChsLCBtZXJnZUFjdGlvbkxpc3QpCkBAIC0xMTkyLDcgKzExOTYs MTkgQEAgc2V0X3BsYW5fcmVmcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcAogCQkJCQkJCQkJ CQkJCQkJCSAgTlJNX0VRVUFMLAogCQkJCQkJCQkJCQkJCQkJCSAgTlVNX0VYRUNfUVVBTChwbGFu KSk7CiAJCQkJCQl9CisKKwkJCQkJCS8qIEZpeCBqb2luIGNvbmRpdGlvbiB0b28uICovCisJCQkJ CQltZXJnZUpvaW5Db25kaXRpb24gPSAoTm9kZSAqKQorCQkJCQkJCWZpeF9qb2luX2V4cHIocm9v dCwKKwkJCQkJCQkJCQkgIChMaXN0ICopIG1lcmdlSm9pbkNvbmRpdGlvbiwKKwkJCQkJCQkJCQkg IE5VTEwsIGl0bGlzdCwKKwkJCQkJCQkJCQkgIHJlc3VsdHJlbCwKKwkJCQkJCQkJCQkgIHJ0b2Zm c2V0LAorCQkJCQkJCQkJCSAgTlJNX0VRVUFMLAorCQkJCQkJCQkJCSAgTlVNX0VYRUNfUVVBTChw bGFuKSk7CisJCQkJCQluZXdNSkMgPSBsYXBwZW5kKG5ld01KQywgbWVyZ2VKb2luQ29uZGl0aW9u KTsKIAkJCQkJfQorCQkJCQlzcGxhbi0+bWVyZ2VKb2luQ29uZGl0aW9ucyA9IG5ld01KQzsKIAkJ CQl9CiAKIAkJCQlzcGxhbi0+bm9taW5hbFJlbGF0aW9uICs9IHJ0b2Zmc2V0OwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAzMDA2OTFjLi4yZDg5NTZkCi0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBq b2ludHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5j CkBAIC0xNTMsOSArMTUzLDExIEBAIHRyYW5zZm9ybV9NRVJHRV90b19qb2luKFF1ZXJ5ICpwYXJz ZSkKIHsKIAlSYW5nZVRibEVudHJ5ICpqb2lucnRlOwogCUpvaW5FeHByICAgKmpvaW5leHByOwor CWJvb2wJCWhhdmVfYWN0aW9uWzNdOwogCUpvaW5UeXBlCWpvaW50eXBlOwogCWludAkJCWpvaW5y dGk7CiAJTGlzdAkgICAqdmFyczsKKwlSYW5nZVRibFJlZiAqcnRyOwogCiAJaWYgKHBhcnNlLT5j b21tYW5kVHlwZSAhPSBDTURfTUVSR0UpCiAJCXJldHVybjsKQEAgLTE2NCwxMSArMTY2LDI3IEBA IHRyYW5zZm9ybV9NRVJHRV90b19qb2luKFF1ZXJ5ICpwYXJzZSkKIAl2YXJzID0gTklMOwogCiAJ LyoKLQkgKiBXaGVuIGFueSBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIGNsYXVzZXMgZXhp c3QsIHdlIG5lZWQgdG8gdXNlIGFuCi0JICogb3V0ZXIgam9pbiBzbyB0aGF0IHdlIHByb2Nlc3Mg YWxsIHVubWF0Y2hlZCB0dXBsZXMgZnJvbSB0aGUgc291cmNlCi0JICogcmVsYXRpb24uICBJZiBu b25lIGV4aXN0LCB3ZSBjYW4gdXNlIGFuIGlubmVyIGpvaW4uCisJICogV29yayBvdXQgd2hhdCBr aW5kIG9mIGpvaW4gaXMgcmVxdWlyZWQuICBJZiB0aGVyZSBhbnkgV0hFTiBOT1QgTUFUQ0hFRAor CSAqIEJZIFNPVVJDRS9UQVJHRVQgYWN0aW9ucywgYW4gb3V0ZXIgam9pbiBpcyByZXF1aXJlZCBz byB0aGF0IHdlIHByb2Nlc3MKKwkgKiBhbGwgdW5tYXRjaGVkIHR1cGxlcyBmcm9tIHRoZSBzb3Vy Y2UgYW5kL29yIHRhcmdldCByZWxhdGlvbnMuCisJICogT3RoZXJ3aXNlLCB3ZSBjYW4gdXNlIGFu IGlubmVyIGpvaW4uCiAJICovCi0JaWYgKHBhcnNlLT5tZXJnZVVzZU91dGVySm9pbikKKwloYXZl X2FjdGlvbltNRVJHRV9XSEVOX01BVENIRURdID0gZmFsc2U7CisJaGF2ZV9hY3Rpb25bTUVSR0Vf V0hFTl9OT1RfTUFUQ0hFRF9CWV9TT1VSQ0VdID0gZmFsc2U7CisJaGF2ZV9hY3Rpb25bTUVSR0Vf V0hFTl9OT1RfTUFUQ0hFRF9CWV9UQVJHRVRdID0gZmFsc2U7CisKKwlmb3JlYWNoX25vZGUoTWVy Z2VBY3Rpb24sIGFjdGlvbiwgcGFyc2UtPm1lcmdlQWN0aW9uTGlzdCkKKwl7CisJCWlmIChhY3Rp b24tPmNvbW1hbmRUeXBlICE9IENNRF9OT1RISU5HKQorCQkJaGF2ZV9hY3Rpb25bYWN0aW9uLT5t YXRjaEtpbmRdID0gdHJ1ZTsKKwl9CisKKwlpZiAoaGF2ZV9hY3Rpb25bTUVSR0VfV0hFTl9OT1Rf TUFUQ0hFRF9CWV9TT1VSQ0VdICYmCisJCWhhdmVfYWN0aW9uW01FUkdFX1dIRU5fTk9UX01BVENI RURfQllfVEFSR0VUXSkKKwkJam9pbnR5cGUgPSBKT0lOX0ZVTEw7CisJZWxzZSBpZiAoaGF2ZV9h Y3Rpb25bTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9TT1VSQ0VdKQorCQlqb2ludHlwZSA9IEpP SU5fTEVGVDsKKwllbHNlIGlmIChoYXZlX2FjdGlvbltNRVJHRV9XSEVOX05PVF9NQVRDSEVEX0JZ X1RBUkdFVF0pCiAJCWpvaW50eXBlID0gSk9JTl9SSUdIVDsKIAllbHNlCiAJCWpvaW50eXBlID0g Sk9JTl9JTk5FUjsKQEAgLTIwNCwxNiArMjIyLDE2IEBAIHRyYW5zZm9ybV9NRVJHRV90b19qb2lu KFF1ZXJ5ICpwYXJzZSkKIAkgKiB0cmlnZ2VyLXVwZGF0YWJsZSB2aWV3LCBpdCB3aWxsIGJlIHRo ZSBleHBhbmRlZCB2aWV3IHN1YnF1ZXJ5IHRoYXQgd2UKIAkgKiBuZWVkIHRvIHB1bGwgZGF0YSBm cm9tLgogCSAqLworCXJ0ciA9IG1ha2VOb2RlKFJhbmdlVGJsUmVmKTsKKwlydHItPnJ0aW5kZXgg PSBwYXJzZS0+bWVyZ2VUYXJnZXRSZWxhdGlvbjsKIAlqb2luZXhwciA9IG1ha2VOb2RlKEpvaW5F eHByKTsKIAlqb2luZXhwci0+am9pbnR5cGUgPSBqb2ludHlwZTsKIAlqb2luZXhwci0+aXNOYXR1 cmFsID0gZmFsc2U7Ci0Jam9pbmV4cHItPmxhcmcgPSAoTm9kZSAqKSBtYWtlTm9kZShSYW5nZVRi bFJlZik7Ci0JKChSYW5nZVRibFJlZiAqKSBqb2luZXhwci0+bGFyZyktPnJ0aW5kZXggPSBwYXJz ZS0+bWVyZ2VUYXJnZXRSZWxhdGlvbjsKLQlqb2luZXhwci0+cmFyZyA9IGxpbml0aWFsKHBhcnNl LT5qb2ludHJlZS0+ZnJvbWxpc3QpOwkvKiBvcmlnaW5hbCBqb2luICovCisJam9pbmV4cHItPmxh cmcgPSAoTm9kZSAqKSBtYWtlRnJvbUV4cHIobGlzdF9tYWtlMShydHIpLCBwYXJzZS0+am9pbnRy ZWUtPnF1YWxzKTsKKwlqb2luZXhwci0+cmFyZyA9IGxpbml0aWFsKHBhcnNlLT5qb2ludHJlZS0+ ZnJvbWxpc3QpOwkvKiBzb3VyY2UgcmVsICovCiAJam9pbmV4cHItPnVzaW5nQ2xhdXNlID0gTklM OwogCWpvaW5leHByLT5qb2luX3VzaW5nX2FsaWFzID0gTlVMTDsKLQkvKiBUaGUgcXVhbHMgYXJl IHJlbW92ZWQgZnJvbSB0aGUgam9pbnRyZWUgYW5kIGludG8gdGhpcyBzcGVjaWZpYyBqb2luICov Ci0Jam9pbmV4cHItPnF1YWxzID0gcGFyc2UtPmpvaW50cmVlLT5xdWFsczsKKwlqb2luZXhwci0+ cXVhbHMgPSBwYXJzZS0+bWVyZ2VKb2luQ29uZGl0aW9uOwogCWpvaW5leHByLT5hbGlhcyA9IE5V TEw7CiAJam9pbmV4cHItPnJ0aW5kZXggPSBqb2lucnRpOwogCkBAIC0yMzMsNiArMjUxLDE1IEBA IHRyYW5zZm9ybV9NRVJHRV90b19qb2luKFF1ZXJ5ICpwYXJzZSkKIAkJCWFkZF9udWxsaW5nX3Jl bGlkcygoTm9kZSAqKSBwYXJzZS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkgICBibXNfbWFrZV9zaW5n bGV0b24ocGFyc2UtPm1lcmdlVGFyZ2V0UmVsYXRpb24pLAogCQkJCQkJCSAgIGJtc19tYWtlX3Np bmdsZXRvbihqb2lucnRpKSk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBhbnkgV0hFTiBOT1Qg TUFUQ0hFRCBCWSBTT1VSQ0UgYWN0aW9ucywgdGhlIGV4ZWN1dG9yIHdpbGwKKwkgKiB1c2UgdGhl IGpvaW4gY29uZGl0aW9uIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gTUFUQ0hFRCBhbmQgTk9UIE1B VENIRUQKKwkgKiBCWSBTT1VSQ0UgY2FzZXMuICBPdGhlcndpc2UsIGl0J3Mgbm8gbG9uZ2VyIG5l ZWRlZCwgYW5kIHdlIHNldCBpdCB0bworCSAqIE5VTEwsIHNhdmluZyBjeWNsZXMgZHVyaW5nIHBs YW5uaW5nIGFuZCBleGVjdXRpb24uCisJICovCisJaWYgKCFoYXZlX2FjdGlvbltNRVJHRV9XSEVO X05PVF9NQVRDSEVEX0JZX1NPVVJDRV0pCisJCXBhcnNlLT5tZXJnZUpvaW5Db25kaXRpb24gPSBO VUxMOwogfQogCiAvKgpAQCAtMjE3Myw2ICsyMjAwLDggQEAgcGVyZm9ybV9wdWxsdXBfcmVwbGFj ZV92YXJzKFBsYW5uZXJJbmZvCiAJCQkJcHVsbHVwX3JlcGxhY2VfdmFycygoTm9kZSAqKSBhY3Rp b24tPnRhcmdldExpc3QsIHJ2Y29udGV4dCk7CiAJCX0KIAl9CisJcGFyc2UtPm1lcmdlSm9pbkNv bmRpdGlvbiA9IHB1bGx1cF9yZXBsYWNlX3ZhcnMocGFyc2UtPm1lcmdlSm9pbkNvbmRpdGlvbiwK KwkJCQkJCQkJCQkJCQlydmNvbnRleHQpOwogCXJlcGxhY2VfdmFyc19pbl9qb2ludHJlZSgoTm9k ZSAqKSBwYXJzZS0+am9pbnRyZWUsIHJ2Y29udGV4dCk7CiAJQXNzZXJ0KHBhcnNlLT5zZXRPcGVy YXRpb25zID09IE5VTEwpOwogCXBhcnNlLT5oYXZpbmdRdWFsID0gcHVsbHVwX3JlcGxhY2VfdmFy cyhwYXJzZS0+aGF2aW5nUXVhbCwgcnZjb250ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wcmVwL3ByZXB0bGlzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAv cHJlcHRsaXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5OGJmYS4uOTMxYjljMAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwpAQCAtMTM0LDYgKzEzNCw3IEBAIHByZXBy b2Nlc3NfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCkKIAlpZiAoY29tbWFuZF90eXBlID09 IENNRF9NRVJHRSkKIAl7CiAJCUxpc3RDZWxsICAgKmw7CisJCUxpc3QJICAgKnZhcnM7CiAKIAkJ LyoKIAkJICogRm9yIE1FUkdFLCBoYW5kbGUgdGFyZ2V0bGlzdCBvZiBlYWNoIE1lcmdlQWN0aW9u IHNlcGFyYXRlbHkuIEdpdmUKQEAgLTE0NCw3ICsxNDUsNiBAQCBwcmVwcm9jZXNzX3RhcmdldGxp c3QoUGxhbm5lckluZm8gKnJvb3QpCiAJCWZvcmVhY2gobCwgcGFyc2UtPm1lcmdlQWN0aW9uTGlz dCkKIAkJewogCQkJTWVyZ2VBY3Rpb24gKmFjdGlvbiA9IChNZXJnZUFjdGlvbiAqKSBsZmlyc3Qo bCk7Ci0JCQlMaXN0CSAgICp2YXJzOwogCQkJTGlzdENlbGwgICAqbDI7CiAKIAkJCWlmIChhY3Rp b24tPmNvbW1hbmRUeXBlID09IENNRF9JTlNFUlQpCkBAIC0xODIsNiArMTgyLDMwIEBAIHByZXBy b2Nlc3NfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCkKIAkJCX0KIAkJCWxpc3RfZnJlZSh2 YXJzKTsKIAkJfQorCisJCS8qCisJCSAqIEFkZCByZXNqdW5rIGVudHJpZXMgZm9yIGFueSBWYXJz IGFuZCBQbGFjZUhvbGRlclZhcnMgdXNlZCBpbiB0aGUKKwkJICogam9pbiBjb25kaXRpb24gdGhh dCBiZWxvbmcgdG8gcmVsYXRpb25zIG90aGVyIHRoYW4gdGhlIHRhcmdldC4gIFdlCisJCSAqIGRv bid0IGV4cGVjdCB0byBzZWUgYW55IGFnZ3JlZ2F0ZXMgb3Igd2luZG93IGZ1bmN0aW9ucyBoZXJl LgorCQkgKi8KKwkJdmFycyA9IHB1bGxfdmFyX2NsYXVzZShwYXJzZS0+bWVyZ2VKb2luQ29uZGl0 aW9uLAorCQkJCQkJCSAgIFBWQ19JTkNMVURFX1BMQUNFSE9MREVSUyk7CisJCWZvcmVhY2gobCwg dmFycykKKwkJeworCQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBsZmlyc3QobCk7CisJCQlUYXJn ZXRFbnRyeSAqdGxlOworCisJCQlpZiAoSXNBKHZhciwgVmFyKSAmJiB2YXItPnZhcm5vID09IHJl c3VsdF9yZWxhdGlvbikKKwkJCQljb250aW51ZTsJCS8qIGRvbid0IG5lZWQgaXQgKi8KKworCQkJ aWYgKHRsaXN0X21lbWJlcigoRXhwciAqKSB2YXIsIHRsaXN0KSkKKwkJCQljb250aW51ZTsJCS8q IGFscmVhZHkgZ290IGl0ICovCisKKwkJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSB2 YXIsCisJCQkJCQkJCSAgbGlzdF9sZW5ndGgodGxpc3QpICsgMSwKKwkJCQkJCQkJICBOVUxMLCB0 cnVlKTsKKwkJCXRsaXN0ID0gbGFwcGVuZCh0bGlzdCwgdGxlKTsKKwkJfQogCX0KIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAyNDZjZDhmLi5lNzNiODgzCi0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhu b2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMzcw Miw2ICszNzAyLDcgQEAgY3JlYXRlX2xvY2tyb3dzX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAg KiAnb25jb25mbGljdCcgaXMgdGhlIE9OIENPTkZMSUNUIGNsYXVzZSwgb3IgTlVMTAogICogJ2Vw cVBhcmFtJyBpcyB0aGUgSUQgb2YgUGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsCiAgKiAn bWVyZ2VBY3Rpb25MaXN0cycgaXMgYSBsaXN0IG9mIGxpc3RzIG9mIE1FUkdFIGFjdGlvbnMgKG9u ZSBwZXIgcmVsKQorICogJ21lcmdlSm9pbkNvbmRpdGlvbnMnIGlzIGEgbGlzdCBvZiBqb2luIGNv bmRpdGlvbnMgZm9yIE1FUkdFIChvbmUgcGVyIHJlbCkKICAqLwogTW9kaWZ5VGFibGVQYXRoICoK IGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCkBAIC0zNzEzLDcgKzM3MTQsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVy SW5mbyAqcm9vCiAJCQkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJCUxpc3QgKndp dGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkJCUxpc3QgKnJv d01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKLQkJCQkJCUxpc3QgKm1lcmdlQWN0 aW9uTGlzdHMsIGludCBlcHFQYXJhbSkKKwkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIExp c3QgKm1lcmdlSm9pbkNvbmRpdGlvbnMsCisJCQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5 VGFibGVQYXRoICpwYXRobm9kZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3 ODEsNiArMzc4Myw3IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb28K IAlwYXRobm9kZS0+b25jb25mbGljdCA9IG9uY29uZmxpY3Q7CiAJcGF0aG5vZGUtPmVwcVBhcmFt ID0gZXBxUGFyYW07CiAJcGF0aG5vZGUtPm1lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxp c3RzOworCXBhdGhub2RlLT5tZXJnZUpvaW5Db25kaXRpb25zID0gbWVyZ2VKb2luQ29uZGl0aW9u czsKIAogCXJldHVybiBwYXRobm9kZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDM5YTgwMWEuLmRkMjY4YmMKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNzUsNiArMjc1LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYQogCXN0cnVjdCBTZWxlY3RMaW1pdCAq c2VsZWN0bGltaXQ7CiAJU2V0UXVhbnRpZmllciBzZXRxdWFudGlmaWVyOwogCXN0cnVjdCBHcm91 cENsYXVzZSAqZ3JvdXBjbGF1c2U7CisJTWVyZ2VNYXRjaEtpbmQgbWVyZ2VtYXRjaDsKIAlNZXJn ZVdoZW5DbGF1c2UgKm1lcmdld2hlbjsKIAlzdHJ1Y3QgS2V5QWN0aW9ucyAqa2V5YWN0aW9uczsK IAlzdHJ1Y3QgS2V5QWN0aW9uICprZXlhY3Rpb247CkBAIC01MTYsNiArNTE3LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYQogJXR5cGUgPG9uY29uZmxpY3Q+IG9w dF9vbl9jb25mbGljdAogJXR5cGUgPG1lcmdld2hlbj4JbWVyZ2VfaW5zZXJ0IG1lcmdlX3VwZGF0 ZSBtZXJnZV9kZWxldGUKIAorJXR5cGUgPG1lcmdlbWF0Y2g+IG1lcmdlX3doZW5fdGd0X21hdGNo ZWQgbWVyZ2Vfd2hlbl90Z3Rfbm90X21hdGNoZWQKICV0eXBlIDxub2RlPgltZXJnZV93aGVuX2Ns YXVzZSBvcHRfbWVyZ2Vfd2hlbl9jb25kaXRpb24KICV0eXBlIDxsaXN0PgltZXJnZV93aGVuX2xp c3QKIApAQCAtNzYwLDExICs3NjIsMTEgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYQogCVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJD SCBTRUNPTkRfUCBTRUNVUklUWSBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMKIAlTRVJJQUxJ WkFCTEUgU0VSVkVSIFNFU1NJT04gU0VTU0lPTl9VU0VSIFNFVCBTRVRTIFNFVE9GIFNIQVJFIFNI T1cKLQlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU1FMX1AgU1RB QkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1Qg U09NRSBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBT VEFUSVNUSUNTIFNURElOIFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJUF9QCiAJ U1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBT WVNURU1fVVNFUgogCi0JVEFCTEUgVEFCTEVTIFRBQkxFU0FNUExFIFRBQkxFU1BBQ0UgVEVNUCBU RU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KKwlUQUJMRSBUQUJMRVMgVEFCTEVTQU1QTEUg VEFCTEVTUEFDRSBUQVJHRVQgVEVNUCBURU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KIAlU SUVTIFRJTUUgVElNRVNUQU1QIFRPIFRSQUlMSU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9STQogCVRS RUFUIFRSSUdHRVIgVFJJTSBUUlVFX1AKIAlUUlVOQ0FURSBUUlVTVEVEIFRZUEVfUCBUWVBFU19Q CkBAIC0xMjM5NCw1MCArMTIzOTYsNjYgQEAgbWVyZ2Vfd2hlbl9saXN0OgogCQkJfCBtZXJnZV93 aGVuX2xpc3QgbWVyZ2Vfd2hlbl9jbGF1c2UJCXsgJCQgPSBsYXBwZW5kKCQxLCQyKTsgfQogCQk7 CiAKKy8qCisgKiBBIFdIRU4gY2xhdXNlIG1heSBiZSBXSEVOIE1BVENIRUQsIFdIRU4gTk9UIE1B VENIRUQgQlkgU09VUkNFLCBvciBXSEVOIE5PVAorICogTUFUQ0hFRCBbQlkgVEFSR0VUXS4gVGhl IGZpcnN0IHR3byBjYXNlcyBtYXRjaCB0YXJnZXQgdHVwbGVzLCBhbmQgc3VwcG9ydAorICogVVBE QVRFL0RFTEVURS9ETyBOT1RISU5HIGFjdGlvbnMuIFRoZSB0aGlyZCBjYXNlIGRvZXMgbm90IG1h dGNoIHRhcmdldAorICogdHVwbGVzLCBhbmQgb25seSBzdXBwb3J0cyBJTlNFUlQvRE8gTk9USElO RyBhY3Rpb25zLgorICovCiBtZXJnZV93aGVuX2NsYXVzZToKLQkJCVdIRU4gTUFUQ0hFRCBvcHRf bWVyZ2Vfd2hlbl9jb25kaXRpb24gVEhFTiBtZXJnZV91cGRhdGUKKwkJCW1lcmdlX3doZW5fdGd0 X21hdGNoZWQgb3B0X21lcmdlX3doZW5fY29uZGl0aW9uIFRIRU4gbWVyZ2VfdXBkYXRlCiAJCQkJ ewotCQkJCQkkNS0+bWF0Y2hlZCA9IHRydWU7Ci0JCQkJCSQ1LT5jb25kaXRpb24gPSAkMzsKKwkJ CQkJJDQtPm1hdGNoS2luZCA9ICQxOworCQkJCQkkNC0+Y29uZGl0aW9uID0gJDI7CiAKLQkJCQkJ JCQgPSAoTm9kZSAqKSAkNTsKKwkJCQkJJCQgPSAoTm9kZSAqKSAkNDsKIAkJCQl9Ci0JCQl8IFdI RU4gTUFUQ0hFRCBvcHRfbWVyZ2Vfd2hlbl9jb25kaXRpb24gVEhFTiBtZXJnZV9kZWxldGUKKwkJ CXwgbWVyZ2Vfd2hlbl90Z3RfbWF0Y2hlZCBvcHRfbWVyZ2Vfd2hlbl9jb25kaXRpb24gVEhFTiBt ZXJnZV9kZWxldGUKIAkJCQl7Ci0JCQkJCSQ1LT5tYXRjaGVkID0gdHJ1ZTsKLQkJCQkJJDUtPmNv bmRpdGlvbiA9ICQzOworCQkJCQkkNC0+bWF0Y2hLaW5kID0gJDE7CisJCQkJCSQ0LT5jb25kaXRp b24gPSAkMjsKIAotCQkJCQkkJCA9IChOb2RlICopICQ1OworCQkJCQkkJCA9IChOb2RlICopICQ0 OwogCQkJCX0KLQkJCXwgV0hFTiBOT1QgTUFUQ0hFRCBvcHRfbWVyZ2Vfd2hlbl9jb25kaXRpb24g VEhFTiBtZXJnZV9pbnNlcnQKKwkJCXwgbWVyZ2Vfd2hlbl90Z3Rfbm90X21hdGNoZWQgb3B0X21l cmdlX3doZW5fY29uZGl0aW9uIFRIRU4gbWVyZ2VfaW5zZXJ0CiAJCQkJewotCQkJCQkkNi0+bWF0 Y2hlZCA9IGZhbHNlOwotCQkJCQkkNi0+Y29uZGl0aW9uID0gJDQ7CisJCQkJCSQ0LT5tYXRjaEtp bmQgPSAkMTsKKwkJCQkJJDQtPmNvbmRpdGlvbiA9ICQyOwogCi0JCQkJCSQkID0gKE5vZGUgKikg JDY7CisJCQkJCSQkID0gKE5vZGUgKikgJDQ7CiAJCQkJfQotCQkJfCBXSEVOIE1BVENIRUQgb3B0 X21lcmdlX3doZW5fY29uZGl0aW9uIFRIRU4gRE8gTk9USElORworCQkJfCBtZXJnZV93aGVuX3Rn dF9tYXRjaGVkIG9wdF9tZXJnZV93aGVuX2NvbmRpdGlvbiBUSEVOIERPIE5PVEhJTkcKIAkJCQl7 CiAJCQkJCU1lcmdlV2hlbkNsYXVzZSAqbSA9IG1ha2VOb2RlKE1lcmdlV2hlbkNsYXVzZSk7CiAK LQkJCQkJbS0+bWF0Y2hlZCA9IHRydWU7CisJCQkJCW0tPm1hdGNoS2luZCA9ICQxOwogCQkJCQlt LT5jb21tYW5kVHlwZSA9IENNRF9OT1RISU5HOwotCQkJCQltLT5jb25kaXRpb24gPSAkMzsKKwkJ CQkJbS0+Y29uZGl0aW9uID0gJDI7CiAKIAkJCQkJJCQgPSAoTm9kZSAqKSBtOwogCQkJCX0KLQkJ CXwgV0hFTiBOT1QgTUFUQ0hFRCBvcHRfbWVyZ2Vfd2hlbl9jb25kaXRpb24gVEhFTiBETyBOT1RI SU5HCisJCQl8IG1lcmdlX3doZW5fdGd0X25vdF9tYXRjaGVkIG9wdF9tZXJnZV93aGVuX2NvbmRp dGlvbiBUSEVOIERPIE5PVEhJTkcKIAkJCQl7CiAJCQkJCU1lcmdlV2hlbkNsYXVzZSAqbSA9IG1h a2VOb2RlKE1lcmdlV2hlbkNsYXVzZSk7CiAKLQkJCQkJbS0+bWF0Y2hlZCA9IGZhbHNlOworCQkJ CQltLT5tYXRjaEtpbmQgPSAkMTsKIAkJCQkJbS0+Y29tbWFuZFR5cGUgPSBDTURfTk9USElORzsK LQkJCQkJbS0+Y29uZGl0aW9uID0gJDQ7CisJCQkJCW0tPmNvbmRpdGlvbiA9ICQyOwogCiAJCQkJ CSQkID0gKE5vZGUgKikgbTsKIAkJCQl9CiAJCTsKIAorbWVyZ2Vfd2hlbl90Z3RfbWF0Y2hlZDoK KwkJCVdIRU4gTUFUQ0hFRAkJCQkJeyAkJCA9IE1FUkdFX1dIRU5fTUFUQ0hFRDsgfQorCQkJfCBX SEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRQl7ICQkID0gTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9C WV9TT1VSQ0U7IH0KKwkJOworCittZXJnZV93aGVuX3RndF9ub3RfbWF0Y2hlZDoKKwkJCVdIRU4g Tk9UIE1BVENIRUQJCQkJeyAkJCA9IE1FUkdFX1dIRU5fTk9UX01BVENIRURfQllfVEFSR0VUOyB9 CisJCQl8IFdIRU4gTk9UIE1BVENIRUQgQlkgVEFSR0VUCXsgJCQgPSBNRVJHRV9XSEVOX05PVF9N QVRDSEVEX0JZX1RBUkdFVDsgfQorCQk7CisKIG9wdF9tZXJnZV93aGVuX2NvbmRpdGlvbjoKIAkJ CUFORCBhX2V4cHIJCQkJeyAkJCA9ICQyOyB9CiAJCQl8CQkJCQkJeyAkJCA9IE5VTEw7IH0KQEAg LTE3NDA0LDYgKzE3NDIyLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBTSU1QTEUKIAkJ CXwgU0tJUAogCQkJfCBTTkFQU0hPVAorCQkJfCBTT1VSQ0UKIAkJCXwgU1FMX1AKIAkJCXwgU1RB QkxFCiAJCQl8IFNUQU5EQUxPTkVfUApAQCAtMTc0MjIsNiArMTc0NDEsNyBAQCB1bnJlc2VydmVk X2tleXdvcmQ6CiAJCQl8IFNZU1RFTV9QCiAJCQl8IFRBQkxFUwogCQkJfCBUQUJMRVNQQUNFCisJ CQl8IFRBUkdFVAogCQkJfCBURU1QCiAJCQl8IFRFTVBMQVRFCiAJCQl8IFRFTVBPUkFSWQpAQCAt MTgwMTksNiArMTgwMzksNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNNQUxMSU5UCiAJ CQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUKKwkJCXwgU09VUkNFCiAJCQl8IFNRTF9QCiAJCQl8IFNU QUJMRQogCQkJfCBTVEFOREFMT05FX1AKQEAgLTE4MDQyLDYgKzE4MDYzLDcgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBUQUJMRVMKIAkJCXwgVEFCTEVTQU1QTEUKIAkJCXwgVEFCTEVTUEFD RQorCQkJfCBUQVJHRVQKIAkJCXwgVEVNUAogCQkJfCBURU1QTEFURQogCQkJfCBURU1QT1JBUlkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRlZDVl Ni4uYmNlMTFkNQotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwpAQCAtNDAsOSArNDAsOSBAQCBzdGF0aWMg dm9pZCBzZXROYW1lc3BhY2VWaXNpYmlsaXR5Rm9yUlRFCiAgKiBNYWtlIGFwcHJvcHJpYXRlIGNo YW5nZXMgdG8gdGhlIG5hbWVzcGFjZSB2aXNpYmlsaXR5IHdoaWxlIHRyYW5zZm9ybWluZwogICog aW5kaXZpZHVhbCBhY3Rpb24ncyBxdWFscyBhbmQgdGFyZ2V0bGlzdCBleHByZXNzaW9ucy4gSW4g cGFydGljdWxhciwgZm9yCiAgKiBJTlNFUlQgYWN0aW9ucyB3ZSBtdXN0IG9ubHkgc2VlIHRoZSBz b3VyY2UgcmVsYXRpb24gKHNpbmNlIElOU0VSVCBhY3Rpb24gaXMKLSAqIGludm9rZWQgZm9yIE5P VCBNQVRDSEVEIHR1cGxlcyBhbmQgaGVuY2UgdGhlcmUgaXMgbm8gdGFyZ2V0IHR1cGxlIHRvIGRl YWwKLSAqIHdpdGgpLiBPbiB0aGUgb3RoZXIgaGFuZCwgVVBEQVRFIGFuZCBERUxFVEUgYWN0aW9u cyBjYW4gc2VlIGJvdGggc291cmNlIGFuZAotICogdGFyZ2V0IHJlbGF0aW9ucy4KKyAqIGludm9r ZWQgZm9yIE5PVCBNQVRDSEVEIFtCWSBUQVJHRVRdIHR1cGxlcyBhbmQgaGVuY2UgdGhlcmUgaXMg bm8gdGFyZ2V0CisgKiB0dXBsZSB0byBkZWFsIHdpdGgpLiBPbiB0aGUgb3RoZXIgaGFuZCwgVVBE QVRFIGFuZCBERUxFVEUgYWN0aW9ucyBjYW4gc2VlCisgKiBib3RoIHNvdXJjZSBhbmQgdGFyZ2V0 IHJlbGF0aW9ucywgdW5sZXNzIGludm9rZWQgZm9yIE5PVCBNQVRDSEVEIEJZIFNPVVJDRS4KICAq CiAgKiBBbHNvLCBzaW5jZSB0aGUgaW50ZXJuYWwgam9pbiBub2RlIGNhbiBoaWRlIHRoZSBzb3Vy Y2UgYW5kIHRhcmdldAogICogcmVsYXRpb25zLCB3ZSBtdXN0IGV4cGxpY2l0bHkgbWFrZSB0aGUg cmVzcGVjdGl2ZSByZWxhdGlvbiBhcyB2aXNpYmxlIHNvCkBAIC01OCw3ICs1OCw3IEBAIHNldE5h bWVzcGFjZUZvck1lcmdlV2hlbihQYXJzZVN0YXRlICpwc3QKIAl0YXJnZXRSZWxSVEUgPSBydF9m ZXRjaCh0YXJnZXRSVEksIHBzdGF0ZS0+cF9ydGFibGUpOwogCXNvdXJjZVJlbFJURSA9IHJ0X2Zl dGNoKHNvdXJjZVJUSSwgcHN0YXRlLT5wX3J0YWJsZSk7CiAKLQlpZiAobWVyZ2VXaGVuQ2xhdXNl LT5tYXRjaGVkKQorCWlmIChtZXJnZVdoZW5DbGF1c2UtPm1hdGNoS2luZCA9PSBNRVJHRV9XSEVO X01BVENIRUQpCiAJewogCQlBc3NlcnQobWVyZ2VXaGVuQ2xhdXNlLT5jb21tYW5kVHlwZSA9PSBD TURfVVBEQVRFIHx8CiAJCQkgICBtZXJnZVdoZW5DbGF1c2UtPmNvbW1hbmRUeXBlID09IENNRF9E RUxFVEUgfHwKQEAgLTcwLDExICs3MCwyNSBAQCBzZXROYW1lc3BhY2VGb3JNZXJnZVdoZW4oUGFy c2VTdGF0ZSAqcHN0CiAJCXNldE5hbWVzcGFjZVZpc2liaWxpdHlGb3JSVEUocHN0YXRlLT5wX25h bWVzcGFjZSwKIAkJCQkJCQkJCSBzb3VyY2VSZWxSVEUsIHRydWUsIHRydWUpOwogCX0KLQllbHNl CisJZWxzZSBpZiAobWVyZ2VXaGVuQ2xhdXNlLT5tYXRjaEtpbmQgPT0gTUVSR0VfV0hFTl9OT1Rf TUFUQ0hFRF9CWV9TT1VSQ0UpCiAJewogCQkvKgotCQkgKiBOT1QgTUFUQ0hFRCBhY3Rpb25zIGNh bid0IHNlZSB0YXJnZXQgcmVsYXRpb24sIGJ1dCB0aGV5IGNhbiBzZWUKLQkJICogc291cmNlIHJl bGF0aW9uLgorCQkgKiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgYWN0aW9ucyBjYW4gc2VlIHRoZSB0 YXJnZXQgcmVsYXRpb24sIGJ1dCB0aGV5CisJCSAqIGNhbid0IHNlZSB0aGUgc291cmNlIHJlbGF0 aW9uLgorCQkgKi8KKwkJQXNzZXJ0KG1lcmdlV2hlbkNsYXVzZS0+Y29tbWFuZFR5cGUgPT0gQ01E X1VQREFURSB8fAorCQkJICAgbWVyZ2VXaGVuQ2xhdXNlLT5jb21tYW5kVHlwZSA9PSBDTURfREVM RVRFIHx8CisJCQkgICBtZXJnZVdoZW5DbGF1c2UtPmNvbW1hbmRUeXBlID09IENNRF9OT1RISU5H KTsKKwkJc2V0TmFtZXNwYWNlVmlzaWJpbGl0eUZvclJURShwc3RhdGUtPnBfbmFtZXNwYWNlLAor CQkJCQkJCQkJIHRhcmdldFJlbFJURSwgdHJ1ZSwgdHJ1ZSk7CisJCXNldE5hbWVzcGFjZVZpc2li aWxpdHlGb3JSVEUocHN0YXRlLT5wX25hbWVzcGFjZSwKKwkJCQkJCQkJCSBzb3VyY2VSZWxSVEUs IGZhbHNlLCBmYWxzZSk7CisJfQorCWVsc2UJCQkJCQkvKiBNRVJHRV9XSEVOX05PVF9NQVRDSEVE X0JZX1RBUkdFVCAqLworCXsKKwkJLyoKKwkJICogTk9UIE1BVENIRUQgW0JZIFRBUkdFVF0gYWN0 aW9ucyBjYW4ndCBzZWUgdGFyZ2V0IHJlbGF0aW9uLCBidXQgdGhleQorCQkgKiBjYW4gc2VlIHNv dXJjZSByZWxhdGlvbi4KIAkJICovCiAJCUFzc2VydChtZXJnZVdoZW5DbGF1c2UtPmNvbW1hbmRU eXBlID09IENNRF9JTlNFUlQgfHwKIAkJCSAgIG1lcmdlV2hlbkNsYXVzZS0+Y29tbWFuZFR5cGUg PT0gQ01EX05PVEhJTkcpOwpAQCAtOTUsMTAgKzEwOSw5IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIE0KIAlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOwog CUxpc3RDZWxsICAgKmw7CiAJQWNsTW9kZQkJdGFyZ2V0UGVybXMgPSBBQ0xfTk9fUklHSFRTOwot CWJvb2wJCWlzX3Rlcm1pbmFsWzJdOworCWJvb2wJCWlzX3Rlcm1pbmFsWzNdOwogCUluZGV4CQlz b3VyY2VSVEk7CiAJTGlzdAkgICAqbWVyZ2VBY3Rpb25MaXN0OwotCU5vZGUJICAgKmpvaW5FeHBy OwogCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOwogCiAJLyogVGhlcmUgY2FuJ3QgYmUgYW55 IG91dGVyIFdJVEggdG8gd29ycnkgYWJvdXQgKi8KQEAgLTEyMiwxMiArMTM1LDEyIEBAIHRyYW5z Zm9ybU1lcmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE0KIAkvKgogCSAqIENoZWNrIFdIRU4g Y2xhdXNlcyBmb3IgcGVybWlzc2lvbnMgYW5kIHNhbml0eQogCSAqLwotCWlzX3Rlcm1pbmFsWzBd ID0gZmFsc2U7Ci0JaXNfdGVybWluYWxbMV0gPSBmYWxzZTsKKwlpc190ZXJtaW5hbFtNRVJHRV9X SEVOX01BVENIRURdID0gZmFsc2U7CisJaXNfdGVybWluYWxbTUVSR0VfV0hFTl9OT1RfTUFUQ0hF RF9CWV9TT1VSQ0VdID0gZmFsc2U7CisJaXNfdGVybWluYWxbTUVSR0VfV0hFTl9OT1RfTUFUQ0hF RF9CWV9UQVJHRVRdID0gZmFsc2U7CiAJZm9yZWFjaChsLCBzdG10LT5tZXJnZVdoZW5DbGF1c2Vz KQogCXsKIAkJTWVyZ2VXaGVuQ2xhdXNlICptZXJnZVdoZW5DbGF1c2UgPSAoTWVyZ2VXaGVuQ2xh dXNlICopIGxmaXJzdChsKTsKLQkJaW50CQkJd2hlbl90eXBlID0gKG1lcmdlV2hlbkNsYXVzZS0+ bWF0Y2hlZCA/IDAgOiAxKTsKIAogCQkvKgogCQkgKiBDb2xsZWN0IHBlcm1pc3Npb25zIHRvIGNo ZWNrLCBhY2NvcmRpbmcgdG8gYWN0aW9uIHR5cGVzLiBXZSByZXF1aXJlCkBAIC0xNTcsMTIgKzE3 MCwxMiBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBNCiAJCS8qCiAJ CSAqIENoZWNrIGZvciB1bnJlYWNoYWJsZSBXSEVOIGNsYXVzZXMKIAkJICovCi0JCWlmIChpc190 ZXJtaW5hbFt3aGVuX3R5cGVdKQorCQlpZiAoaXNfdGVybWluYWxbbWVyZ2VXaGVuQ2xhdXNlLT5t YXRjaEtpbmRdKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAogCQkJCQkgZXJybXNnKCJ1bnJlYWNoYWJsZSBXSEVOIGNsYXVzZSBzcGVjaWZp ZWQgYWZ0ZXIgdW5jb25kaXRpb25hbCBXSEVOIGNsYXVzZSIpKSk7CiAJCWlmIChtZXJnZVdoZW5D bGF1c2UtPmNvbmRpdGlvbiA9PSBOVUxMKQotCQkJaXNfdGVybWluYWxbd2hlbl90eXBlXSA9IHRy dWU7CisJCQlpc190ZXJtaW5hbFttZXJnZVdoZW5DbGF1c2UtPm1hdGNoS2luZF0gPSB0cnVlOwog CX0KIAogCS8qCkBAIC0yMjMsMTYgKzIzNiwxNSBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBNCiAJICogc2lkZSwgc28gYWRkIHRoYXQgdG8gdGhlIG5hbWVzcGFjZS4K IAkgKi8KIAlhZGROU0l0ZW1Ub1F1ZXJ5KHBzdGF0ZSwgcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0s IGZhbHNlLCB0cnVlLCB0cnVlKTsKLQlqb2luRXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBz dG10LT5qb2luQ29uZGl0aW9uLAotCQkJCQkJCSBFWFBSX0tJTkRfSk9JTl9PTik7CisJcXJ5LT5t ZXJnZUpvaW5Db25kaXRpb24gPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgc3RtdC0+am9pbkNvbmRp dGlvbiwKKwkJCQkJCQkJCQkJRVhQUl9LSU5EX0pPSU5fT04pOwogCiAJLyoKIAkgKiBDcmVhdGUg dGhlIHRlbXBvcmFyeSBxdWVyeSdzIGpvaW50cmVlIHVzaW5nIHRoZSBqb2lubGlzdCB3ZSBidWls dCB1c2luZwotCSAqIGp1c3QgdGhlIHNvdXJjZSByZWxhdGlvbjsgdGhlIHRhcmdldCByZWxhdGlv biBpcyBub3QgaW5jbHVkZWQuICBUaGUKLQkgKiBxdWFscyB3ZSB1c2UgYXJlIHRoZSBqb2luIGNv bmRpdGlvbnMgdG8gdGhlIG1lcmdlIHRhcmdldC4gIFRoZSBqb2luCisJICoganVzdCB0aGUgc291 cmNlIHJlbGF0aW9uOyB0aGUgdGFyZ2V0IHJlbGF0aW9uIGlzIG5vdCBpbmNsdWRlZC4gVGhlIGpv aW4KIAkgKiB3aWxsIGJlIGNvbnN0cnVjdGVkIGZ1bGx5IGJ5IHRyYW5zZm9ybV9NRVJHRV90b19q b2luLgogCSAqLwotCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5s aXN0LCBqb2luRXhwcik7CisJcXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBf am9pbmxpc3QsIE5VTEwpOwogCiAJLyogVHJhbnNmb3JtIHRoZSBSRVRVUk5JTkcgbGlzdCwgaWYg YW55ICovCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChwc3Rh dGUsIHN0bXQtPnJldHVybmluZ0xpc3QsCkBAIC0yNjAsMTEgKzI3Miw3IEBAIHRyYW5zZm9ybU1l cmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE0KIAogCQlhY3Rpb24gPSBtYWtlTm9kZShNZXJn ZUFjdGlvbik7CiAJCWFjdGlvbi0+Y29tbWFuZFR5cGUgPSBtZXJnZVdoZW5DbGF1c2UtPmNvbW1h bmRUeXBlOwotCQlhY3Rpb24tPm1hdGNoZWQgPSBtZXJnZVdoZW5DbGF1c2UtPm1hdGNoZWQ7Ci0K LQkJLyogVXNlIGFuIG91dGVyIGpvaW4gaWYgYW55IElOU0VSVCBhY3Rpb25zIGV4aXN0IGluIHRo ZSBjb21tYW5kLiAqLwotCQlpZiAoYWN0aW9uLT5jb21tYW5kVHlwZSA9PSBDTURfSU5TRVJUKQot CQkJcXJ5LT5tZXJnZVVzZU91dGVySm9pbiA9IHRydWU7CisJCWFjdGlvbi0+bWF0Y2hLaW5kID0g bWVyZ2VXaGVuQ2xhdXNlLT5tYXRjaEtpbmQ7CiAKIAkJLyoKIAkJICogU2V0IG5hbWVzcGFjZSBm b3IgdGhlIHNwZWNpZmljIGFjdGlvbi4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI4OTNkNC4uNGQz NjM3NQotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC03MDkzLDYgKzcwOTMsNyBAQCBnZXRfbWVy Z2VfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzCiAJU3RyaW5nSW5mbwlidWYgPSBjb250 ZXh0LT5idWY7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlOwogCUxpc3RDZWxsICAgKmxjOworCWJvb2wJ CWhhdmVOb3RNYXRjaGVkQnlTb3VyY2U7CiAKIAkvKiBJbnNlcnQgdGhlIFdJVEggY2xhdXNlIGlm IGdpdmVuICovCiAJZ2V0X3dpdGhfY2xhdXNlKHF1ZXJ5LCBjb250ZXh0KTsKQEAgLTcxMTgsNyAr NzExOSwyNiBAQCBnZXRfbWVyZ2VfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzCiAJZ2V0 X2Zyb21fY2xhdXNlKHF1ZXJ5LCAiIFVTSU5HICIsIGNvbnRleHQpOwogCWFwcGVuZENvbnRleHRL ZXl3b3JkKGNvbnRleHQsICIgT04gIiwKIAkJCQkJCSAtUFJFVFRZSU5ERU5UX1NURCwgUFJFVFRZ SU5ERU5UX1NURCwgMik7Ci0JZ2V0X3J1bGVfZXhwcihxdWVyeS0+am9pbnRyZWUtPnF1YWxzLCBj b250ZXh0LCBmYWxzZSk7CisJZ2V0X3J1bGVfZXhwcihxdWVyeS0+bWVyZ2VKb2luQ29uZGl0aW9u LCBjb250ZXh0LCBmYWxzZSk7CisKKwkvKgorCSAqIFRlc3QgZm9yIGFueSBOT1QgTUFUQ0hFRCBC WSBTT1VSQ0UgYWN0aW9ucy4gIElmIHRoZXJlIGFyZSBub25lLCB0aGVuCisJICogYW55IE5PVCBN QVRDSEVEIEJZIFRBUkdFVCBhY3Rpb25zIGFyZSBvdXRwdXQgYXMgIldIRU4gTk9UIE1BVENIRUQi LCBwZXIKKwkgKiBTUUwgc3RhbmRhcmQuICBPdGhlcndpc2UsIHdlIGhhdmUgYSBub24tU1FMLXN0 YW5kYXJkIHF1ZXJ5LCBzbyBvdXRwdXQKKwkgKiAiQlkgU09VUkNFIiAvICJCWSBUQVJHRVQiIHF1 YWxpZmllcnMgZm9yIGFsbCBOT1QgTUFUQ0hFRCBhY3Rpb25zLCB0byBiZQorCSAqIG1vcmUgZXhw bGljaXQuCisJICovCisJaGF2ZU5vdE1hdGNoZWRCeVNvdXJjZSA9IGZhbHNlOworCWZvcmVhY2go bGMsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QpCisJeworCQlNZXJnZUFjdGlvbiAqYWN0aW9uID0g bGZpcnN0X25vZGUoTWVyZ2VBY3Rpb24sIGxjKTsKKworCQlpZiAoYWN0aW9uLT5tYXRjaEtpbmQg PT0gTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9TT1VSQ0UpCisJCXsKKwkJCWhhdmVOb3RNYXRj aGVkQnlTb3VyY2UgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CiAKIAkvKiBQcmludCBlYWNo IG1lcmdlIGFjdGlvbiAqLwogCWZvcmVhY2gobGMsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QpCkBA IC03MTI3LDcgKzcxNDcsMjQgQEAgZ2V0X21lcmdlX3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRl cGFycwogCiAJCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICIgV0hFTiAiLAogCQkJCQkJ CSAtUFJFVFRZSU5ERU5UX1NURCwgUFJFVFRZSU5ERU5UX1NURCwgMik7Ci0JCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiJXNNQVRDSEVEIiwgYWN0aW9uLT5tYXRjaGVkID8gIiIgOiAiTk9UICIpOwor CQlzd2l0Y2ggKGFjdGlvbi0+bWF0Y2hLaW5kKQorCQl7CisJCQljYXNlIE1FUkdFX1dIRU5fTUFU Q0hFRDoKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIk1BVENIRUQiKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9TT1VSQ0U6CisJCQkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICJOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UiKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgTUVSR0VfV0hFTl9OT1RfTUFUQ0hFRF9CWV9UQVJHRVQ6CisJCQkJaWYgKGhhdmVOb3RNYXRj aGVkQnlTb3VyY2UpCisJCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiTk9UIE1BVENIRUQgQlkg VEFSR0VUIik7CisJCQkJZWxzZQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIk5PVCBNQVRD SEVEIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgbWF0Y2hLaW5kOiAlZCIsCisJCQkJCSAoaW50KSBhY3Rpb24tPm1hdGNoS2luZCk7CisJ CX0KIAogCQlpZiAoYWN0aW9uLT5xdWFsKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNTZkNzIzZC4uYzY5NzdhNgotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC00MzM1LDE3ICs0 MzM1LDM1IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3QKIAkJCSBU YWlsTWF0Y2hlcygiVVNJTkciLCBNYXRjaEFueSwgTWF0Y2hBbnksICJPTiIsIE1hdGNoQW55LCBN YXRjaEFueSwgTWF0Y2hBbnksICJXSEVOIikpCiAJCUNPTVBMRVRFX1dJVEgoIk1BVENIRUQiLCAi Tk9UIE1BVENIRUQiKTsKIAotCS8qIENvbXBsZXRlIC4uLiBXSEVOIFtOT1RdIE1BVENIRUQgd2l0 aCBUSEVOL0FORCAqLworCS8qCisJICogQ29tcGxldGUgLi4uIFdIRU4gTUFUQ0hFRCBhbmQgV0hF TiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0V8VEFSR0VUIHdpdGgKKwkgKiBUSEVOL0FORAorCSAqLwog CWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJXSEVOIiwgIk1BVENIRUQiKSB8fAotCQkJIFRhaWxNYXRj aGVzKCJXSEVOIiwgIk5PVCIsICJNQVRDSEVEIikpCisJCQkgVGFpbE1hdGNoZXMoIldIRU4iLCAi Tk9UIiwgIk1BVENIRUQiLCAiQlkiLCAiU09VUkNFfFRBUkdFVCIpKQogCQlDT01QTEVURV9XSVRI KCJUSEVOIiwgIkFORCIpOwogCi0JLyogQ29tcGxldGUgLi4uIFdIRU4gTUFUQ0hFRCBUSEVOIHdp dGggVVBEQVRFIFNFVC9ERUxFVEUvRE8gTk9USElORyAqLwotCWVsc2UgaWYgKFRhaWxNYXRjaGVz KCJXSEVOIiwgIk1BVENIRUQiLCAiVEhFTiIpKQorCS8qIENvbXBsZXRlIC4uLiBXSEVOIE5PVCBN QVRDSEVEIHdpdGggQlkvVEhFTi9BTkQgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiV0hFTiIs ICJOT1QiLCAiTUFUQ0hFRCIpKQorCQlDT01QTEVURV9XSVRIKCJCWSIsICJUSEVOIiwgIkFORCIp OworCisJLyogQ29tcGxldGUgLi4uIFdIRU4gTk9UIE1BVENIRUQgQlkgd2l0aCBTT1VSQ0UvVEFS R0VUICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIldIRU4iLCAiTk9UIiwgIk1BVENIRUQiLCAi QlkiKSkKKwkJQ09NUExFVEVfV0lUSCgiU09VUkNFIiwgIlRBUkdFVCIpOworCisJLyoKKwkgKiBD b21wbGV0ZSAuLi4gV0hFTiBNQVRDSEVEIFRIRU4gYW5kIFdIRU4gTk9UIE1BVENIRUQgQlkgU09V UkNFIFRIRU4gd2l0aAorCSAqIFVQREFURSBTRVQvREVMRVRFL0RPIE5PVEhJTkcKKwkgKi8KKwll bHNlIGlmIChUYWlsTWF0Y2hlcygiV0hFTiIsICJNQVRDSEVEIiwgIlRIRU4iKSB8fAorCQkJIFRh aWxNYXRjaGVzKCJXSEVOIiwgIk5PVCIsICJNQVRDSEVEIiwgIkJZIiwgIlNPVVJDRSIsICJUSEVO IikpCiAJCUNPTVBMRVRFX1dJVEgoIlVQREFURSBTRVQiLCAiREVMRVRFIiwgIkRPIE5PVEhJTkci KTsKIAotCS8qIENvbXBsZXRlIC4uLiBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gd2l0aCBJTlNFUlQv RE8gTk9USElORyAqLwotCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJXSEVOIiwgIk5PVCIsICJNQVRD SEVEIiwgIlRIRU4iKSkKKwkvKgorCSAqIENvbXBsZXRlIC4uLiBXSEVOIE5PVCBNQVRDSEVEIFtC WSBUQVJHRVRdIFRIRU4gd2l0aCBJTlNFUlQvRE8gTk9USElORworCSAqLworCWVsc2UgaWYgKFRh aWxNYXRjaGVzKCJXSEVOIiwgIk5PVCIsICJNQVRDSEVEIiwgIlRIRU4iKSB8fAorCQkJIFRhaWxN YXRjaGVzKCJXSEVOIiwgIk5PVCIsICJNQVRDSEVEIiwgIkJZIiwgIlRBUkdFVCIsICJUSEVOIikp CiAJCUNPTVBMRVRFX1dJVEgoIklOU0VSVCIsICJETyBOT1RISU5HIik7CiAKIC8qIE5PVElGWSAt LS0gY2FuIGJlIGluc2lkZSBFWFBMQUlOLCBSVUxFLCBldGMgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI1OTM1Mi4uYzJkMDQ3ZAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aApAQCAtNTQ0LDkgKzU0NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJLyog T04gQ09ORkxJQ1QgZXZhbHVhdGlvbiBzdGF0ZSAqLwogCU9uQ29uZmxpY3RTZXRTdGF0ZSAqcmlf b25Db25mbGljdDsKIAotCS8qIGZvciBNRVJHRSwgbGlzdHMgb2YgTWVyZ2VBY3Rpb25TdGF0ZSAq LwotCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKLQlMaXN0CSAgICpyaV9ub3RNYXRj aGVkTWVyZ2VBY3Rpb247CisJLyogZm9yIE1FUkdFLCBsaXN0cyBvZiBNZXJnZUFjdGlvblN0YXRl IChvbmUgcGVyIE1lcmdlTWF0Y2hLaW5kKSAqLworCUxpc3QJICAgKnJpX01lcmdlQWN0aW9uc1sz XTsKKworCS8qIGZvciBNRVJHRSwgam9pbiBjb25kaXRpb24tY2hlY2tpbmcgZXhwciBzdGF0ZSAq LworCUV4cHJTdGF0ZSAgKnJpX01lcmdlSm9pbkNvbmRpdGlvbjsKIAogCS8qIHBhcnRpdGlvbiBj aGVjayBleHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQgdXAgeWV0KSAqLwogCUV4cHJT dGF0ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKQEAgLTEzMjgsNiArMTMzMCwxMyBAQCB0eXBl ZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVN0YXRlCiAJLyogRm9yIE1FUkdFLCB0aGUgYWN0aW9uIGN1 cnJlbnRseSBiZWluZyBleGVjdXRlZCAqLwogCU1lcmdlQWN0aW9uU3RhdGUgKm10X21lcmdlX2Fj dGlvbjsKIAorCS8qCisJICogRm9yIE1FUkdFLCBpZiB0aGVyZSBpcyBhIHBlbmRpbmcgTk9UIE1B VENIRUQgW0JZIFRBUkdFVF0gYWN0aW9uIHRvIGJlCisJICogcGVyZm9ybWVkLCB0aGlzIHdpbGwg YmUgdGhlIGxhc3QgdHVwbGUgcmVhZCBmcm9tIHRoZSBzdWJwbGFuOyBvdGhlcndpc2UKKwkgKiBp dCB3aWxsIGJlIE5VTEwgLS0tIHNlZSB0aGUgY29tbWVudHMgaW4gRXhlY01lcmdlKCkuCisJICov CisJVHVwbGVUYWJsZVNsb3QgKm10X21lcmdlX3BlbmRpbmdfbm90X21hdGNoZWQ7CisKIAkvKiB0 dXBsZSBjb3VudGVycyBmb3IgTUVSR0UgKi8KIAlkb3VibGUJCW10X21lcmdlX2luc2VydGVkOwog CWRvdWJsZQkJbXRfbWVyZ2VfdXBkYXRlZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA3YjU3ZmRkLi42YjQ3ZWI3Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE3 Niw4ICsxNzYsNiBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeQogCQkJCQkJCQkgKiBhbHNvIFVTSU5H IGNsYXVzZSBmb3IgTUVSR0UgKi8KIAogCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdDsJLyogbGlz dCBvZiBhY3Rpb25zIGZvciBNRVJHRSAob25seSkgKi8KLQkvKiB3aGV0aGVyIHRvIHVzZSBvdXRl ciBqb2luICovCi0JYm9vbAkJbWVyZ2VVc2VPdXRlckpvaW4gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9pZ25vcmUpOwogCiAJLyoKIAkgKiBydGFibGUgaW5kZXggb2YgdGFyZ2V0IHJlbGF0aW9u IGZvciBNRVJHRSB0byBwdWxsIGRhdGEuIEluaXRpYWxseSwgdGhpcwpAQCAtMTg3LDYgKzE4NSw5 IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJICovCiAJaW50CQkJbWVyZ2VUYXJnZXRSZWxhdGlv biBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKKwkvKiBqb2luIGNvbmRpdGlv biBiZXR3ZWVuIHNvdXJjZSBhbmQgdGFyZ2V0IGZvciBNRVJHRSAqLworCU5vZGUJICAgKm1lcmdl Sm9pbkNvbmRpdGlvbjsKKwogCUxpc3QJICAgKnRhcmdldExpc3Q7CQkvKiB0YXJnZXQgbGlzdCAo b2YgVGFyZ2V0RW50cnkpICovCiAKIAkvKiBPVkVSUklESU5HIGNsYXVzZSAqLwpAQCAtMTY3Nyw3 ICsxNjc4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29tbW9uVGFibGVFeHByCiB0eXBlZGVmIHN0cnVj dCBNZXJnZVdoZW5DbGF1c2UKIHsKIAlOb2RlVGFnCQl0eXBlOwotCWJvb2wJCW1hdGNoZWQ7CQkv KiB0cnVlPU1BVENIRUQsIGZhbHNlPU5PVCBNQVRDSEVEICovCisJTWVyZ2VNYXRjaEtpbmQgbWF0 Y2hLaW5kOwkvKiBNQVRDSEVEL05PVCBNQVRDSEVEIEJZIFNPVVJDRS9UQVJHRVQgKi8KIAlDbWRU eXBlCQljb21tYW5kVHlwZTsJLyogSU5TRVJUL1VQREFURS9ERUxFVEUvRE8gTk9USElORyAqLwog CU92ZXJyaWRpbmdLaW5kIG92ZXJyaWRlOwkvKiBPVkVSUklESU5HIGNsYXVzZSAqLwogCU5vZGUJ ICAgKmNvbmRpdGlvbjsJCS8qIFdIRU4gY29uZGl0aW9ucyAocmF3IHBhcnNlcikgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0NjkyYi4uNWNjZmE1Zgot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaApAQCAtMjM2Nyw2ICsyMzY3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5 VGFibGVQYXRoCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5R dWFsIHJlLWV2YWwgKi8KIAlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFyZ2V0 LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMgZm9yCiAJCQkJCQkJCQkgKiBNRVJHRSAqLworCUxpc3QJ ICAgKm1lcmdlSm9pbkNvbmRpdGlvbnM7CS8qIHBlci10YXJnZXQtdGFibGUgam9pbiBjb25kaXRp b25zCisJCQkJCQkJCQkJICogZm9yIE1FUkdFICovCiB9IE1vZGlmeVRhYmxlUGF0aDsKIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRlZjZiYy4uZWJl ZmQ2NQotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjUxLDYgKzI1MSw4IEBAIHR5cGVkZWYgc3RydWN0IE1v ZGlmeVRhYmxlCiAJTGlzdAkgICAqZXhjbFJlbFRsaXN0OwkvKiB0bGlzdCBvZiB0aGUgRVhDTFVE RUQgcHNldWRvIHJlbGF0aW9uICovCiAJTGlzdAkgICAqbWVyZ2VBY3Rpb25MaXN0czsJLyogcGVy LXRhcmdldC10YWJsZSBsaXN0cyBvZiBhY3Rpb25zIGZvcgogCQkJCQkJCQkJICogTUVSR0UgKi8K KwlMaXN0CSAgICptZXJnZUpvaW5Db25kaXRpb25zOwkvKiBwZXItdGFyZ2V0LXRhYmxlIGpvaW4g Y29uZGl0aW9ucworCQkJCQkJCQkJCSAqIGZvciBNRVJHRSAqLwogfSBNb2RpZnlUYWJsZTsKIAog c3RydWN0IFBhcnRpdGlvblBydW5lSW5mbzsJCS8qIGZvcndhcmQgcmVmZXJlbmNlIHRvIHN0cnVj dCBiZWxvdyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4 ZGY4ODg0Li4zYjdiOGRlCi0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xNzUzLDEwICsxNzUzLDE4IEBAIHR5 cGVkZWYgc3RydWN0IEJvb2xlYW5UZXN0CiAgKgogICogVHJhbnNmb3JtZWQgcmVwcmVzZW50YXRp b24gb2YgYSBXSEVOIGNsYXVzZSBpbiBhIE1FUkdFIHN0YXRlbWVudAogICovCisKK3R5cGVkZWYg ZW51bSBNZXJnZU1hdGNoS2luZAoreworCU1FUkdFX1dIRU5fTUFUQ0hFRCwKKwlNRVJHRV9XSEVO X05PVF9NQVRDSEVEX0JZX1NPVVJDRSwKKwlNRVJHRV9XSEVOX05PVF9NQVRDSEVEX0JZX1RBUkdF VAorfSBNZXJnZU1hdGNoS2luZDsKKwogdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBY3Rpb24KIHsKIAlO b2RlVGFnCQl0eXBlOwotCWJvb2wJCW1hdGNoZWQ7CQkvKiB0cnVlPU1BVENIRUQsIGZhbHNlPU5P VCBNQVRDSEVEICovCisJTWVyZ2VNYXRjaEtpbmQgbWF0Y2hLaW5kOwkvKiBNQVRDSEVEL05PVCBN QVRDSEVEIEJZIFNPVVJDRS9UQVJHRVQgKi8KIAlDbWRUeXBlCQljb21tYW5kVHlwZTsJLyogSU5T RVJUL1VQREFURS9ERUxFVEUvRE8gTk9USElORyAqLwogCS8qIE9WRVJSSURJTkcgY2xhdXNlICov CiAJT3ZlcnJpZGluZ0tpbmQgb3ZlcnJpZGUgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25v cmUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj NDNkOTdiLi4xYjNkZDUyCi0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0yODMsNyArMjgzLDggQEAg ZXh0ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3JlYXRlX21vZGlmeXRhYgogCQkJCQkJCQkJCQkJTGlz dCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25M aXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICpyb3dNYXJrcywg T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlv bkxpc3RzLCBpbnQgZXBxUGFyYW0pOworCQkJCQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0 cywgTGlzdCAqbWVyZ2VKb2luQ29uZGl0aW9ucywKKwkJCQkJCQkJCQkJCWludCBlcHFQYXJhbSk7 CiBleHRlcm4gTGltaXRQYXRoICpjcmVhdGVfbGltaXRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJUGF0aCAqc3VicGF0aCwKIAkJCQkJCQkJCU5vZGUg KmxpbWl0T2Zmc2V0LCBOb2RlICpsaW1pdENvdW50LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDA5OTM1MzQuLjQ1MjI5ZWQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtNDA0LDYgKzQw NCw3IEBAIFBHX0tFWVdPUkQoInNraXAiLCBTS0lQLCBVTlJFU0VSVkVEX0tFWVcKIFBHX0tFWVdP UkQoInNtYWxsaW50IiwgU01BTExJTlQsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJzbmFwc2hvdCIsIFNOQVBTSE9ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJzb21lIiwgU09NRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKK1BHX0tFWVdPUkQoInNvdXJjZSIsIFNPVVJDRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtNDI3LDYgKzQyOCw3IEBAIFBHX0tF WVdPUkQoInRhYmxlIiwgVEFCTEUsIFJFU0VSVkVEX0tFWVcKIFBHX0tFWVdPUkQoInRhYmxlcyIs IFRBQkxFUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidGFi bGVzYW1wbGUiLCBUQUJMRVNBTVBMRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInRhYmxlc3BhY2UiLCBUQUJMRVNQQUNFLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJ0YXJnZXQiLCBUQVJHRVQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRlbXAiLCBURU1QLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0ZW1wbGF0ZSIsIFRFTVBMQVRFLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0ZW1wb3JhcnkiLCBU RU1QT1JBUlksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9tZXJnZS11cGRhdGUub3V0IGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2V4cGVjdGVkL21lcmdlLXVwZGF0ZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZjVmN2UzYi4uMzA2M2MwYwotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbWVy Z2UtdXBkYXRlLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbWVyZ2UtdXBk YXRlLm91dApAQCAtMzcsMTMgKzM3LDIyIEBAIHN0ZXAgbWVyZ2UyYToKICAgV0hFTiBOT1QgTUFU Q0hFRCBUSEVOCiAJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQogICBXSEVOIE1BVENIRUQg VEhFTgotCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0 ZWQgYnkgJyB8fCBzLnZhbDsKKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52 YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52YWwKKyAgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VS Q0UgVEhFTgorCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHNv dXJjZSBub3QgbWF0Y2hlZCBieSBtZXJnZTJhJworICBSRVRVUk5JTkcgbWVyZ2VfYWN0aW9uKCks IHQuKjsKKworbWVyZ2VfYWN0aW9ufGtleXx2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitVUERBVEUgICAgICB8ICAz fHNldHVwMSB1cGRhdGVkIGJ5IG1lcmdlMSBzb3VyY2Ugbm90IG1hdGNoZWQgYnkgbWVyZ2UyYQor SU5TRVJUICAgICAgfCAgMXxtZXJnZTJhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKygyIHJvd3MpCiAKIHN0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJPTSB0 YXJnZXQ7Ci1rZXl8dmFsICAgICAgICAgICAgICAgICAgICAgCi0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gIDJ8c2V0dXAxIHVwZGF0ZWQgYnkgbWVyZ2UxCi0gIDF8bWVyZ2UyYSAgICAg ICAgICAgICAgICAgCitrZXl8dmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgIDN8c2V0dXAxIHVwZGF0ZWQgYnkgbWVyZ2UxIHNvdXJjZSBu b3QgbWF0Y2hlZCBieSBtZXJnZTJhCisgIDF8bWVyZ2UyYSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAoMiByb3dzKQogCiBzdGVwIGMyOiBDT01NSVQ7CkBA IC04NiwxNSArOTUsMjQgQEAgc3RlcCBtZXJnZTJhOgogICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4K IAlJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCiAgIFdIRU4gTUFUQ0hFRCBUSEVOCi0JVVBE QVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8 IHMudmFsOworCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVw ZGF0ZWQgYnkgJyB8fCBzLnZhbAorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisJ VVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgc291cmNlIG5vdCBt YXRjaGVkIGJ5IG1lcmdlMmEnCisgIFJFVFVSTklORyBtZXJnZV9hY3Rpb24oKSwgdC4qOwogIDx3 YWl0aW5nIC4uLj4KIHN0ZXAgYzE6IENPTU1JVDsKIHN0ZXAgbWVyZ2UyYTogPC4uLiBjb21wbGV0 ZWQ+CittZXJnZV9hY3Rpb258a2V5fHZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1VQREFURSAgICAgIHwgIDN8c2V0 dXAxIHVwZGF0ZWQgYnkgbWVyZ2UxIHNvdXJjZSBub3QgbWF0Y2hlZCBieSBtZXJnZTJhCitJTlNF UlQgICAgICB8ICAxfG1lcmdlMmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorKDIgcm93cykKKwogc3RlcCBzZWxlY3QyOiBTRUxFQ1QgKiBGUk9NIHRhcmdl dDsKLWtleXx2YWwgICAgICAgICAgICAgICAgICAgICAKLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSAgMnxzZXR1cDEgdXBkYXRlZCBieSBtZXJnZTEKLSAgMXxtZXJnZTJhICAgICAgICAg ICAgICAgICAKK2tleXx2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgM3xzZXR1cDEgdXBkYXRlZCBieSBtZXJnZTEgc291cmNlIG5vdCBt YXRjaGVkIGJ5IG1lcmdlMmEKKyAgMXxtZXJnZTJhICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICgyIHJvd3MpCiAKIHN0ZXAgYzI6IENPTU1JVDsKQEAgLTEx NiwxMCArMTM0LDE4IEBAIHN0ZXAgbWVyZ2UyYToKICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCiAJ SU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQogICBXSEVOIE1BVENIRUQgVEhFTgotCVVQREFU RSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBz LnZhbDsKKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52YWwgfHwgJyB1cGRh dGVkIGJ5ICcgfHwgcy52YWwKKyAgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorCVVQ REFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHNvdXJjZSBub3QgbWF0 Y2hlZCBieSBtZXJnZTJhJworICBSRVRVUk5JTkcgbWVyZ2VfYWN0aW9uKCksIHQuKjsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGExOiBBQk9SVDsKIHN0ZXAgbWVyZ2UyYTogPC4uLiBjb21wbGV0ZWQ+ CittZXJnZV9hY3Rpb258a2V5fHZhbCAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVVBEQVRFICAgICAgfCAgMnxzZXR1cDEg dXBkYXRlZCBieSBtZXJnZTJhCisoMSByb3cpCisKIHN0ZXAgc2VsZWN0MjogU0VMRUNUICogRlJP TSB0YXJnZXQ7CiBrZXl8dmFsICAgICAgICAgICAgICAgICAgICAgIAogLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KQEAgLTIwNSwxNSArMjMxLDI0IEBAIHN0ZXAgcGFfbWVyZ2UyYToKICAg V0hFTiBOT1QgTUFUQ0hFRCBUSEVOCiAJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQogICBX SEVOIE1BVENIRUQgVEhFTgotCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZh bCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsg MSwgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52YWwKKyAgV0hFTiBOT1QgTUFU Q0hFRCBCWSBTT1VSQ0UgVEhFTgorCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0 LnZhbCB8fCAnIHNvdXJjZSBub3QgbWF0Y2hlZCBieSBwYV9tZXJnZTJhJworICBSRVRVUk5JTkcg bWVyZ2VfYWN0aW9uKCksIHQuKjsKICA8d2FpdGluZyAuLi4+CiBzdGVwIGMxOiBDT01NSVQ7CiBz dGVwIHBhX21lcmdlMmE6IDwuLi4gY29tcGxldGVkPgorbWVyZ2VfYWN0aW9ufGtleXx2YWwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t Ky0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor VVBEQVRFICAgICAgfCAgMnxpbml0aWFsIHVwZGF0ZWQgYnkgcGFfbWVyZ2UxIHVwZGF0ZWQgYnkg cGFfbWVyZ2UyYQorVVBEQVRFICAgICAgfCAgM3xpbml0aWFsIHNvdXJjZSBub3QgbWF0Y2hlZCBi eSBwYV9tZXJnZTJhICAgICAgICAgIAorKDIgcm93cykKKwogc3RlcCBwYV9zZWxlY3QyOiBTRUxF Q1QgKiBGUk9NIHBhX3RhcmdldDsKIGtleXx2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gIDJ8aW5pdGlhbCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgMnxpbml0aWFsIHVwZGF0ZWQgYnkgcGFfbWVyZ2UxIHVwZGF0 ZWQgYnkgcGFfbWVyZ2UyYQorICAzfGluaXRpYWwgc291cmNlIG5vdCBtYXRjaGVkIGJ5IHBhX21l cmdlMmEgICAgICAgICAgCiAoMiByb3dzKQogCiBzdGVwIGMyOiBDT01NSVQ7CkBAIC0yMzUsNyAr MjcwLDEwIEBAIHN0ZXAgcGFfbWVyZ2UyYToKICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCiAJSU5T RVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQogICBXSEVOIE1BVENIRUQgVEhFTgotCVVQREFURSBz ZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZh bDsKKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwgdmFsID0gdC52YWwgfHwgJyB1cGRhdGVk IGJ5ICcgfHwgcy52YWwKKyAgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorCVVQREFU RSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHNvdXJjZSBub3QgbWF0Y2hl ZCBieSBwYV9tZXJnZTJhJworICBSRVRVUk5JTkcgbWVyZ2VfYWN0aW9uKCksIHQuKjsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGMxOiBDT01NSVQ7CiBzdGVwIHBhX21lcmdlMmE6IDwuLi4gY29tcGxl dGVkPgpAQCAtMjYyLDE0ICszMDAsMjQgQEAgc3RlcCBwYV9tZXJnZTJhOgogICBXSEVOIE5PVCBN QVRDSEVEIFRIRU4KIAlJTlNFUlQgVkFMVUVTIChzLmtleSwgcy52YWwpCiAgIFdIRU4gTUFUQ0hF RCBUSEVOCi0JVVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBk YXRlZCBieSAnIHx8IHMudmFsOworCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0 LnZhbCB8fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbAorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNP VVJDRSBUSEVOCisJVVBEQVRFIHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcg c291cmNlIG5vdCBtYXRjaGVkIGJ5IHBhX21lcmdlMmEnCisgIFJFVFVSTklORyBtZXJnZV9hY3Rp b24oKSwgdC4qOworCittZXJnZV9hY3Rpb258a2V5fHZhbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLSstLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorVVBEQVRFICAgICAgfCAgM3xpbml0aWFsIHNvdXJjZSBub3QgbWF0Y2hlZCBieSBwYV9tZXJn ZTJhICAgICAgICAgICAgICAgICAgICAgCitVUERBVEUgICAgICB8ICAzfGluaXRpYWwgdXBkYXRl ZCBieSBwYV9tZXJnZTIgc291cmNlIG5vdCBtYXRjaGVkIGJ5IHBhX21lcmdlMmEKK0lOU0VSVCAg ICAgIHwgIDF8cGFfbWVyZ2UyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorKDMgcm93cykKIAogc3RlcCBwYV9zZWxlY3QyOiBTRUxFQ1QgKiBGUk9N IHBhX3RhcmdldDsKLWtleXx2YWwgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAxfHBhX21lcmdlMmEgICAgICAgICAgICAgICAgICAK LSAgMnxpbml0aWFsICAgICAgICAgICAgICAgICAgICAgCi0gIDJ8aW5pdGlhbCB1cGRhdGVkIGJ5 IHBhX21lcmdlMgora2V5fHZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDF8cGFfbWVyZ2UyYSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAzfGluaXRpYWwgc291 cmNlIG5vdCBtYXRjaGVkIGJ5IHBhX21lcmdlMmEgICAgICAgICAgICAgICAgICAgICAKKyAgM3xp bml0aWFsIHVwZGF0ZWQgYnkgcGFfbWVyZ2UyIHNvdXJjZSBub3QgbWF0Y2hlZCBieSBwYV9tZXJn ZTJhCiAoMyByb3dzKQogCiBzdGVwIGMyOiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvbWVyZ2UtdXBkYXRlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvbWVyZ2UtdXBkYXRlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NjZDQ2Ni4u YTMzZGNkYgotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvbWVyZ2UtdXBkYXRlLnNwZWMK KysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL21lcmdlLXVwZGF0ZS5zcGVjCkBAIC05Miw3 ICs5MiwxMCBAQCBzdGVwICJtZXJnZTJhIgogICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KIAlJTlNF UlQgVkFMVUVTIChzLmtleSwgcy52YWwpCiAgIFdIRU4gTUFUQ0hFRCBUSEVOCi0JVVBEQVRFIHNl dCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgdXBkYXRlZCBieSAnIHx8IHMudmFs OworCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8fCAnIHVwZGF0ZWQg YnkgJyB8fCBzLnZhbAorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisJVVBEQVRF IHNldCBrZXkgPSB0LmtleSArIDEsIHZhbCA9IHQudmFsIHx8ICcgc291cmNlIG5vdCBtYXRjaGVk IGJ5IG1lcmdlMmEnCisgIFJFVFVSTklORyBtZXJnZV9hY3Rpb24oKSwgdC4qOwogfQogc3RlcCAi bWVyZ2UyYiIKIHsKQEAgLTEyMiw3ICsxMjUsMTAgQEAgc3RlcCAicGFfbWVyZ2UyYSIKICAgV0hF TiBOT1QgTUFUQ0hFRCBUSEVOCiAJSU5TRVJUIFZBTFVFUyAocy5rZXksIHMudmFsKQogICBXSEVO IE1BVENIRUQgVEhFTgotCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZhbCB8 fCAnIHVwZGF0ZWQgYnkgJyB8fCBzLnZhbDsKKwlVUERBVEUgc2V0IGtleSA9IHQua2V5ICsgMSwg dmFsID0gdC52YWwgfHwgJyB1cGRhdGVkIGJ5ICcgfHwgcy52YWwKKyAgV0hFTiBOT1QgTUFUQ0hF RCBCWSBTT1VSQ0UgVEhFTgorCVVQREFURSBzZXQga2V5ID0gdC5rZXkgKyAxLCB2YWwgPSB0LnZh bCB8fCAnIHNvdXJjZSBub3QgbWF0Y2hlZCBieSBwYV9tZXJnZTJhJworICBSRVRVUk5JTkcgbWVy Z2VfYWN0aW9uKCksIHQuKjsKIH0KICMgTUVSR0UgcHJvY2VlZHMgb25seSBpZiAndmFsJyB1bmNo YW5nZWQKIHN0ZXAgInBhX21lcmdlMmJfd2hlbiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvbWVyZ2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZXJnZS5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc1NjFmMC4uNTkwMzVhNwotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lcmdlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL21lcmdlLm91dApAQCAtNzIsNiArNzIsMTUgQEAgV0hFTiBNQVRDSEVEIFRIRU4KIEVS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIklOU0VSVCIKIExJTkUgNTogIElOU0VSVCBE RUZBVUxUIFZBTFVFUzsKICAgICAgICAgIF4KKy0tIE5PVCBNQVRDSEVEIEJZIFNPVVJDRS9JTlNF UlQgZXJyb3IKK01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRp ZCA9IHMuc2lkCitXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisJSU5TRVJUIERFRkFV TFQgVkFMVUVTOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiSU5TRVJUIgorTElO RSA1OiAgSU5TRVJUIERFRkFVTFQgVkFMVUVTOworICAgICAgICAgXgogLS0gaW5jb3JyZWN0bHkg c3BlY2lmeWluZyBJTlRPIHRhcmdldAogTUVSR0UgSU5UTyB0YXJnZXQgdAogVVNJTkcgc291cmNl IEFTIHMKQEAgLTEwOCw2ICsxMTcsMTUgQEAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCiBFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJVUERBVEUiCiBMSU5FIDU6ICBVUERBVEUgU0VUIGJh bGFuY2UgPSAwOwogICAgICAgICAgXgorLS0gTk9UIE1BVENIRUQgQlkgVEFSR0VUL1VQREFURQor TUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQK K1dIRU4gTk9UIE1BVENIRUQgQlkgVEFSR0VUIFRIRU4KKwlVUERBVEUgU0VUIGJhbGFuY2UgPSAw OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiVVBEQVRFIgorTElORSA1OiAgVVBE QVRFIFNFVCBiYWxhbmNlID0gMDsKKyAgICAgICAgIF4KIC0tIFVQREFURSB0YWJsZW5hbWUKIE1F UkdFIElOVE8gdGFyZ2V0IHQKIFVTSU5HIHNvdXJjZSBBUyBzCkBAIC0yNzAsNiArMjg4LDMxIEBA IFNFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsKICg0IHJvd3MpCiAKIFJPTExCQUNL OworLS0gREVMRVRFL0lOU0VSVCBub3QgbWF0Y2hlZCBieSBzb3VyY2UvdGFyZ2V0CitCRUdJTjsK K01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lk CitXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisJREVMRVRFCitXSEVOIE5PVCBNQVRD SEVEIEJZIFRBUkdFVCBUSEVOCisJSU5TRVJUIFZBTFVFUyAocy5zaWQsIHMuZGVsdGEpCitSRVRV Uk5JTkcgbWVyZ2VfYWN0aW9uKCksIHQuKjsKKyBtZXJnZV9hY3Rpb24gfCB0aWQgfCBiYWxhbmNl IAorLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgREVMRVRFICAgICAgIHwgICAxIHwg ICAgICAxMAorIERFTEVURSAgICAgICB8ICAgMiB8ICAgICAgMjAKKyBERUxFVEUgICAgICAgfCAg IDMgfCAgICAgIDMwCisgSU5TRVJUICAgICAgIHwgICA0IHwgICAgICA0MAorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSB0YXJnZXQgT1JERVIgQlkgdGlkOworIHRpZCB8IGJhbGFuY2UgCistLS0t LSstLS0tLS0tLS0KKyAgIDQgfCAgICAgIDQwCisoMSByb3cpCisKK1JPTExCQUNLOwogLS0gaW5k ZXggcGxhbnMKIElOU0VSVCBJTlRPIHRhcmdldCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEwMDAs MjUwMCksIDA7CiBBTFRFUiBUQUJMRSB0YXJnZXQgQUREIFBSSU1BUlkgS0VZICh0aWQpOwpAQCAt NzM3LDYgKzc4MCwxOSBAQCBTRUxFQ1QgKiBGUk9NIHdxX3RhcmdldDsKICAgIDEgfCAgICAgIC0x CiAoMSByb3cpCiAKKy0tIGNvbmRpdGlvbnMgaW4gTk9UIE1BVENIRUQgQlkgU09VUkNFIGNsYXVz ZSBjYW4gb25seSByZWZlciB0byB0YXJnZXQgY29sdW1ucworTUVSR0UgSU5UTyB3cV90YXJnZXQg dAorVVNJTkcgd3Ffc291cmNlIHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBC WSBTT1VSQ0UgQU5EIHMuYmFsYW5jZSA9IDEwMCBUSEVOCisJREVMRVRFOworRVJST1I6ICBpbnZh bGlkIHJlZmVyZW5jZSB0byBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgInMiCitMSU5FIDM6 IFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIEFORCBzLmJhbGFuY2UgPSAxMDAgVEhFTgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgVGhlcmUgaXMg YW4gZW50cnkgZm9yIHRhYmxlICJzIiwgYnV0IGl0IGNhbm5vdCBiZSByZWZlcmVuY2VkIGZyb20g dGhpcyBwYXJ0IG9mIHRoZSBxdWVyeS4KK01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdx X3NvdXJjZSBzIE9OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIEFO RCB0LmJhbGFuY2UgPSAxMDAgVEhFTgorICAgIERFTEVURTsKIC0tIGNvbmRpdGlvbnMgaW4gTUFU Q0hFRCBjbGF1c2UgY2FuIHJlZmVyIHRvIGJvdGggc291cmNlIGFuZCB0YXJnZXQKIFNFTEVDVCAq IEZST00gd3Ffc291cmNlOwogIGJhbGFuY2UgfCBzaWQgCkBAIC05MjIsNiArOTc4LDU0IEBAIFNF TEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsKICgzIHJvd3MpCiAKIFJPTExCQUNLOwor LS0gVVBTRVJUIHdpdGggVVBEQVRFL0RFTEVURSB3aGVuIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZQor QkVHSU47CitERUxFVEUgRlJPTSBTT1VSQ0UgV0hFUkUgc2lkID0gMjsKK01FUkdFIElOVE8gdGFy Z2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lkCitXSEVOIE1BVENIRUQg QU5EIHQuYmFsYW5jZSA+IHMuZGVsdGEgVEhFTgorICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IHQu YmFsYW5jZSAtIHMuZGVsdGEKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNl ID0gMAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisgICAgSU5TRVJUIFZBTFVFUyAocy5zaWQsIHMu ZGVsdGEpCitXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBBTkQgdGlkID0gMSBUSEVOCisJVVBE QVRFIFNFVCBiYWxhbmNlID0gMAorV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorCURF TEVURQorUkVUVVJOSU5HIG1lcmdlX2FjdGlvbigpLCB0Lio7CitOT1RJQ0U6ICBCRUZPUkUgSU5T RVJUIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJQ0U6ICBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVCB0 cmlnZ2VyCitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJQ0U6 ICBCRUZPUkUgVVBEQVRFIFJPVyB0cmlnZ2VyIHJvdzogKDMsMzApIC0+ICgzLDEwKQorTk9USUNF OiAgQkVGT1JFIElOU0VSVCBST1cgdHJpZ2dlciByb3c6ICg0LDQwKQorTk9USUNFOiAgQkVGT1JF IERFTEVURSBST1cgdHJpZ2dlciByb3c6ICgyLDIwKQorTk9USUNFOiAgQkVGT1JFIFVQREFURSBS T1cgdHJpZ2dlciByb3c6ICgxLDEwKSAtPiAoMSwwKQorTk9USUNFOiAgQUZURVIgVVBEQVRFIFJP VyB0cmlnZ2VyIHJvdzogKDMsMzApIC0+ICgzLDEwKQorTk9USUNFOiAgQUZURVIgSU5TRVJUIFJP VyB0cmlnZ2VyIHJvdzogKDQsNDApCitOT1RJQ0U6ICBBRlRFUiBERUxFVEUgUk9XIHRyaWdnZXIg cm93OiAoMiwyMCkKK05PVElDRTogIEFGVEVSIFVQREFURSBST1cgdHJpZ2dlciByb3c6ICgxLDEw KSAtPiAoMSwwKQorTk9USUNFOiAgQUZURVIgREVMRVRFIFNUQVRFTUVOVCB0cmlnZ2VyCitOT1RJ Q0U6ICBBRlRFUiBVUERBVEUgU1RBVEVNRU5UIHRyaWdnZXIKK05PVElDRTogIEFGVEVSIElOU0VS VCBTVEFURU1FTlQgdHJpZ2dlcgorIG1lcmdlX2FjdGlvbiB8IHRpZCB8IGJhbGFuY2UgCistLS0t LS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyBVUERBVEUgICAgICAgfCAgIDMgfCAgICAgIDEw CisgSU5TRVJUICAgICAgIHwgICA0IHwgICAgICA0MAorIERFTEVURSAgICAgICB8ICAgMiB8ICAg ICAgMjAKKyBVUERBVEUgICAgICAgfCAgIDEgfCAgICAgICAwCisoNCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CisgdGlkIHwgYmFsYW5jZSAKKy0tLS0tKy0tLS0t LS0tLQorICAgMSB8ICAgICAgIDAKKyAgIDMgfCAgICAgIDEwCisgICA0IHwgICAgICA0MAorKDMg cm93cykKKworUk9MTEJBQ0s7CiAtLSBUZXN0IGJlaGF2aW9yIG9mIHRyaWdnZXJzIHRoYXQgdHVy biBVUERBVEUvREVMRVRFIGludG8gbm8tb3BzCiBjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBz a2lwX21lcmdlX29wKCkgcmV0dXJucyB0cmlnZ2VyCiBsYW5ndWFnZSBwbHBnc3FsIGFzCkBAIC0x NjM2LDYgKzE3NDAsNTAgQEAgV0hFTiBOT1QgTUFUQ0hFRCBBTkQgcy5hIDwgMjAgVEhFTgogICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4X210YXJnZXQgdCAoYWN0dWFsIHJvd3M9NDkg bG9vcHM9MSkKICgxMiByb3dzKQogCistLSBub3QgbWF0Y2hlZCBieSBzb3VyY2UKK1NFTEVDVCBl eHBsYWluX21lcmdlKCcKK01FUkdFIElOVE8gZXhfbXRhcmdldCB0IFVTSU5HIGV4X21zb3VyY2Ug cyBPTiB0LmEgPSBzLmEKK1dIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIGFuZCB0LmEgPCAxMCBU SEVOCisJREVMRVRFJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9tZXJn ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2Ugb24g ZXhfbXRhcmdldCB0IChhY3R1YWwgcm93cz0wIGxvb3BzPTEpCisgICBUdXBsZXM6IHNraXBwZWQ9 NTQKKyAgIC0+ICBNZXJnZSBMZWZ0IEpvaW4gKGFjdHVhbCByb3dzPTU0IGxvb3BzPTEpCisgICAg ICAgICBNZXJnZSBDb25kOiAodC5hID0gcy5hKQorICAgICAgICAgLT4gIFNvcnQgKGFjdHVhbCBy b3dzPTU0IGxvb3BzPTEpCisgICAgICAgICAgICAgICBTb3J0IEtleTogdC5hCisgICAgICAgICAg ICAgICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IHh4eAorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGV4X210YXJnZXQgdCAoYWN0dWFsIHJvd3M9NTQgbG9vcHM9MSkKKyAg ICAgICAgIC0+ICBTb3J0IChhY3R1YWwgcm93cz0xMDAgbG9vcHM9MSkKKyAgICAgICAgICAgICAg IFNvcnQgS2V5OiBzLmEKKyAgICAgICAgICAgICAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1l bW9yeTogeHh4CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZXhfbXNvdXJjZSBzIChh Y3R1YWwgcm93cz0xMDAgbG9vcHM9MSkKKygxMiByb3dzKQorCistLSBub3QgbWF0Y2hlZCBieSBz b3VyY2UgYW5kIHRhcmdldAorU0VMRUNUIGV4cGxhaW5fbWVyZ2UoJworTUVSR0UgSU5UTyBleF9t dGFyZ2V0IHQgVVNJTkcgZXhfbXNvdXJjZSBzIE9OIHQuYSA9IHMuYQorV0hFTiBOT1QgTUFUQ0hF RCBCWSBTT1VSQ0UgQU5EIHQuYSA8IDEwIFRIRU4KKwlERUxFVEUKK1dIRU4gTk9UIE1BVENIRUQg QlkgVEFSR0VUIEFORCBzLmEgPCAyMCBUSEVOCisJSU5TRVJUIFZBTFVFUyAoYSwgYiknKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX21lcmdlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBvbiBleF9tdGFyZ2V0IHQgKGFjdHVh bCByb3dzPTAgbG9vcHM9MSkKKyAgIFR1cGxlczogc2tpcHBlZD0xMDAKKyAgIC0+ICBNZXJnZSBG dWxsIEpvaW4gKGFjdHVhbCByb3dzPTEwMCBsb29wcz0xKQorICAgICAgICAgTWVyZ2UgQ29uZDog KHQuYSA9IHMuYSkKKyAgICAgICAgIC0+ICBTb3J0IChhY3R1YWwgcm93cz01NCBsb29wcz0xKQor ICAgICAgICAgICAgICAgU29ydCBLZXk6IHQuYQorICAgICAgICAgICAgICAgU29ydCBNZXRob2Q6 IHF1aWNrc29ydCAgTWVtb3J5OiB4eHgKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBl eF9tdGFyZ2V0IHQgKGFjdHVhbCByb3dzPTU0IGxvb3BzPTEpCisgICAgICAgICAtPiAgU29ydCAo YWN0dWFsIHJvd3M9MTAwIGxvb3BzPTEpCisgICAgICAgICAgICAgICBTb3J0IEtleTogcy5hCisg ICAgICAgICAgICAgICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IHh4eAorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4X21zb3VyY2UgcyAoYWN0dWFsIHJvd3M9MTAwIGxv b3BzPTEpCisoMTIgcm93cykKKwogLS0gbm90aGluZwogU0VMRUNUIGV4cGxhaW5fbWVyZ2UoJwog TUVSR0UgSU5UTyBleF9tdGFyZ2V0IHQgVVNJTkcgZXhfbXNvdXJjZSBzIE9OIHQuYSA9IHMuYSBB TkQgdC5hIDwgLTEwMDAKQEAgLTE3NjUsNyArMTkxMyw3IEBAIENSRUFURSBUQUJMRSBwYV9zb3Vy Y2UgKHNpZCBpbnRlZ2VyLCBkZWwKIC0tIGluc2VydCBtYW55IHJvd3MgdG8gdGhlIHNvdXJjZSB0 YWJsZQogSU5TRVJUIElOVE8gcGFfc291cmNlIFNFTEVDVCBpZCwgaWQgKiAxMCAgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxNCkgQVMgaWQ7CiAtLSBpbnNlcnQgYSBmZXcgcm93cyBpbiB0aGUgdGFy Z2V0IHRhYmxlIChvZGQgbnVtYmVyZWQgdGlkKQotSU5TRVJUIElOVE8gcGFfdGFyZ2V0IFNFTEVD VCBpZCwgaWQgKiAxMDAsICdpbml0aWFsJyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDE0LDIpIEFT IGlkOworSU5TRVJUIElOVE8gcGFfdGFyZ2V0IFNFTEVDVCBpZCwgaWQgKiAxMDAsICdpbml0aWFs JyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDE1LDIpIEFTIGlkOwogLS0gdHJ5IHNpbXBsZSBNRVJH RQogQkVHSU47CiBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CkBAIC0xNzc0LDEwICsxOTIyLDEyIEBA IE1FUkdFIElOVE8gcGFfdGFyZ2V0IHQKICAgV0hFTiBNQVRDSEVEIFRIRU4KICAgICBVUERBVEUg U0VUIGJhbGFuY2UgPSBiYWxhbmNlICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkg bWVyZ2UnCiAgIFdIRU4gTk9UIE1BVENIRUQgVEhFTgotICAgIElOU0VSVCBWQUxVRVMgKHNpZCwg ZGVsdGEsICdpbnNlcnRlZCBieSBtZXJnZScpOwotU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JE RVIgQlkgdGlkOwotIHRpZCB8IGJhbGFuY2UgfCAgICAgICAgICAgdmFsICAgICAgICAgICAgCi0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBJTlNFUlQgVkFM VUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKQorICBXSEVOIE5PVCBNQVRDSEVE IEJZIFNPVVJDRSBUSEVOCisgICAgVVBEQVRFIFNFVCB2YWwgPSB2YWwgfHwgJyBub3QgbWF0Y2hl ZCBieSBzb3VyY2UnOworU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkLCB2YWw7 CisgdGlkIHwgYmFsYW5jZSB8ICAgICAgICAgICAgICB2YWwgICAgICAgICAgICAgIAorLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIDEgfCAgICAgMTEw IHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCiAgICAyIHwgICAgICAyMCB8IGluc2VydGVkIGJ5 IG1lcmdlCiAgICAzIHwgICAgIDMzMCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQpAQCAtMTc5 Miw3ICsxOTQyLDggQEAgU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOwogICAx MiB8ICAgICAxMjAgfCBpbnNlcnRlZCBieSBtZXJnZQogICAxMyB8ICAgIDE0MzAgfCBpbml0aWFs IHVwZGF0ZWQgYnkgbWVyZ2UKICAgMTQgfCAgICAgMTQwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKLSgx NCByb3dzKQorICAxNSB8ICAgIDE1MDAgfCBpbml0aWFsIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZQor KDE1IHJvd3MpCiAKIFJPTExCQUNLOwogLS0gc2FtZSB3aXRoIGEgY29uc3RhbnQgcXVhbApAQCAt MTgwMywzMSArMTk1NCwzNCBAQCBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CiAgIFdIRU4gTUFUQ0hF RCBUSEVOCiAgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2 YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwogICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KLSAgICBJ TlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsKLVNFTEVDVCAq IEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsKLSB0aWQgfCBiYWxhbmNlIHwgICAgICAgICAg IHZhbCAgICAgICAgICAgIAotLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJykK KyAgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorICAgIFVQREFURSBTRVQgdmFsID0g dmFsIHx8ICcgbm90IG1hdGNoZWQgYnkgc291cmNlJzsKK1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0 IE9SREVSIEJZIHRpZCwgdmFsOworIHRpZCB8IGJhbGFuY2UgfCAgICAgICAgICAgICAgdmFsICAg ICAgICAgICAgICAKKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICAxIHwgICAgIDExMCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQogICAgMiB8ICAg ICAgMjAgfCBpbnNlcnRlZCBieSBtZXJnZQorICAgMyB8ICAgICAzMDAgfCBpbml0aWFsIG5vdCBt YXRjaGVkIGJ5IHNvdXJjZQogICAgMyB8ICAgICAgMzAgfCBpbnNlcnRlZCBieSBtZXJnZQotICAg MyB8ICAgICAzMDAgfCBpbml0aWFsCiAgICA0IHwgICAgICA0MCB8IGluc2VydGVkIGJ5IG1lcmdl Ci0gICA1IHwgICAgIDUwMCB8IGluaXRpYWwKKyAgIDUgfCAgICAgNTAwIHwgaW5pdGlhbCBub3Qg bWF0Y2hlZCBieSBzb3VyY2UKICAgIDUgfCAgICAgIDUwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKICAg IDYgfCAgICAgIDYwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKLSAgIDcgfCAgICAgNzAwIHwgaW5pdGlh bAorICAgNyB8ICAgICA3MDAgfCBpbml0aWFsIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZQogICAgNyB8 ICAgICAgNzAgfCBpbnNlcnRlZCBieSBtZXJnZQogICAgOCB8ICAgICAgODAgfCBpbnNlcnRlZCBi eSBtZXJnZQorICAgOSB8ICAgICA5MDAgfCBpbml0aWFsIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZQog ICAgOSB8ICAgICAgOTAgfCBpbnNlcnRlZCBieSBtZXJnZQotICAgOSB8ICAgICA5MDAgfCBpbml0 aWFsCiAgIDEwIHwgICAgIDEwMCB8IGluc2VydGVkIGJ5IG1lcmdlCi0gIDExIHwgICAgMTEwMCB8 IGluaXRpYWwKKyAgMTEgfCAgICAxMTAwIHwgaW5pdGlhbCBub3QgbWF0Y2hlZCBieSBzb3VyY2UK ICAgMTEgfCAgICAgMTEwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKICAgMTIgfCAgICAgMTIwIHwgaW5z ZXJ0ZWQgYnkgbWVyZ2UKLSAgMTMgfCAgICAxMzAwIHwgaW5pdGlhbAorICAxMyB8ICAgIDEzMDAg fCBpbml0aWFsIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZQogICAxMyB8ICAgICAxMzAgfCBpbnNlcnRl ZCBieSBtZXJnZQogICAxNCB8ICAgICAxNDAgfCBpbnNlcnRlZCBieSBtZXJnZQotKDIwIHJvd3Mp CisgIDE1IHwgICAgMTUwMCB8IGluaXRpYWwgbm90IG1hdGNoZWQgYnkgc291cmNlCisoMjEgcm93 cykKIAogUk9MTEJBQ0s7CiAtLSB0cnkgdXBkYXRpbmcgdGhlIHBhcnRpdGlvbiBrZXkgY29sdW1u CkBAIC0xODQyLDcgKzE5OTYsOSBAQCBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CiAgIFdIRU4gTUFU Q0hFRCBUSEVOCiAgICAgVVBEQVRFIFNFVCB0aWQgPSB0aWQgKyAxLCBiYWxhbmNlID0gYmFsYW5j ZSArIGRlbHRhLCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwogICBXSEVOIE5PVCBN QVRDSEVEIFRIRU4KLSAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkg bWVyZ2UnKTsKKyAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVy Z2UnKQorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisgICAgVVBEQVRFIFNFVCB0 aWQgPSAxLCB2YWwgPSB2YWwgfHwgJyBub3QgbWF0Y2hlZCBieSBzb3VyY2UnOwogSUYgRk9VTkQg VEhFTgogICBHRVQgRElBR05PU1RJQ1MgcmVzdWx0IDo9IFJPV19DT1VOVDsKIEVORCBJRjsKQEAg LTE4NTIsMjcgKzIwMDgsMjggQEAgJCQ7CiBTRUxFQ1QgbWVyZ2VfZnVuYygpOwogIG1lcmdlX2Z1 bmMgCiAtLS0tLS0tLS0tLS0KLSAgICAgICAgIDE0CisgICAgICAgICAxNQogKDEgcm93KQogCi1T RUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7Ci0gdGlkIHwgYmFsYW5jZSB8ICAg ICAgICAgICB2YWwgICAgICAgICAgICAKLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkLCB2YWw7Cisg dGlkIHwgYmFsYW5jZSB8ICAgICAgICAgICAgICB2YWwgICAgICAgICAgICAgIAorLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDEgfCAgICAxNTAwIHwg aW5pdGlhbCBub3QgbWF0Y2hlZCBieSBzb3VyY2UKICAgIDIgfCAgICAgMTEwIHwgaW5pdGlhbCB1 cGRhdGVkIGJ5IG1lcmdlCiAgICAyIHwgICAgICAyMCB8IGluc2VydGVkIGJ5IG1lcmdlCi0gICA0 IHwgICAgICA0MCB8IGluc2VydGVkIGJ5IG1lcmdlCiAgICA0IHwgICAgIDMzMCB8IGluaXRpYWwg dXBkYXRlZCBieSBtZXJnZQorICAgNCB8ICAgICAgNDAgfCBpbnNlcnRlZCBieSBtZXJnZQogICAg NiB8ICAgICA1NTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKICAgIDYgfCAgICAgIDYwIHwg aW5zZXJ0ZWQgYnkgbWVyZ2UKLSAgIDggfCAgICAgIDgwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKICAg IDggfCAgICAgNzcwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgICA4IHwgICAgICA4MCB8 IGluc2VydGVkIGJ5IG1lcmdlCiAgIDEwIHwgICAgIDk5MCB8IGluaXRpYWwgdXBkYXRlZCBieSBt ZXJnZQogICAxMCB8ICAgICAxMDAgfCBpbnNlcnRlZCBieSBtZXJnZQogICAxMiB8ICAgIDEyMTAg fCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKICAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQgYnkg bWVyZ2UKICAgMTQgfCAgICAxNDMwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCiAgIDE0IHwg ICAgIDE0MCB8IGluc2VydGVkIGJ5IG1lcmdlCi0oMTQgcm93cykKKygxNSByb3dzKQogCiBST0xM QkFDSzsKIC0tIHVwZGF0ZSBwYXJ0aXRpb24ga2V5IHRvIHBhcnRpdGlvbiBub3QgaW5pdGlhbGx5 IHNjYW5uZWQKQEAgLTE4OTgsNyArMjA1NSw4IEBAIFNFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9S REVSIEJZIHRpZDsKICAgIDkgfCAgICAgOTAwIHwgaW5pdGlhbAogICAxMSB8ICAgIDExMDAgfCBp bml0aWFsCiAgIDEzIHwgICAgMTMwMCB8IGluaXRpYWwKLSg3IHJvd3MpCisgIDE1IHwgICAgMTUw MCB8IGluaXRpYWwKKyg4IHJvd3MpCiAKIFJPTExCQUNLOwogRFJPUCBUQUJMRSBwYV90YXJnZXQg Q0FTQ0FERTsKQEAgLTE5MjAsNyArMjA3OCw3IEBAIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRB Q0ggUEFSVElUSU9OIHAKIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFSVElUSU9OIHBh cnQzIEZPUiBWQUxVRVMgSU4gKDMsOCw5KTsKIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0gg UEFSVElUSU9OIHBhcnQ0IERFRkFVTFQ7CiAtLSBpbnNlcnQgYSBmZXcgcm93cyBpbiB0aGUgdGFy Z2V0IHRhYmxlIChvZGQgbnVtYmVyZWQgdGlkKQotSU5TRVJUIElOVE8gcGFfdGFyZ2V0IFNFTEVD VCBpZCwgaWQgKiAxMDAsICdpbml0aWFsJyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDE0LDIpIEFT IGlkOworSU5TRVJUIElOVE8gcGFfdGFyZ2V0IFNFTEVDVCBpZCwgaWQgKiAxMDAsICdpbml0aWFs JyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDE1LDIpIEFTIGlkOwogLS0gdHJ5IHNpbXBsZSBNRVJH RQogQkVHSU47CiBETyAkJApAQCAtMTkzMywxNSArMjA5MSwxNyBAQCBNRVJHRSBJTlRPIHBhX3Rh cmdldCB0CiAgIFdIRU4gTUFUQ0hFRCBUSEVOCiAgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFs YW5jZSArIGRlbHRhLCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwogICBXSEVOIE5P VCBNQVRDSEVEIFRIRU4KLSAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQg YnkgbWVyZ2UnKTsKKyAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkg bWVyZ2UnKQorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisgICAgVVBEQVRFIFNF VCB2YWwgPSB2YWwgfHwgJyBub3QgbWF0Y2hlZCBieSBzb3VyY2UnOwogR0VUIERJQUdOT1NUSUNT IHJlc3VsdCA6PSBST1dfQ09VTlQ7CiBSQUlTRSBOT1RJQ0UgJ1JPV19DT1VOVCA9ICUnLCByZXN1 bHQ7CiBFTkQ7CiAkJDsKLU5PVElDRTogIFJPV19DT1VOVCA9IDE0Ci1TRUxFQ1QgKiBGUk9NIHBh X3RhcmdldCBPUkRFUiBCWSB0aWQ7Ci0gdGlkIHwgYmFsYW5jZSB8ICAgICAgICAgICB2YWwgICAg ICAgICAgICAKLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTk9U SUNFOiAgUk9XX0NPVU5UID0gMTUKK1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRp ZCwgdmFsOworIHRpZCB8IGJhbGFuY2UgfCAgICAgICAgICAgICAgdmFsICAgICAgICAgICAgICAK Ky0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAxIHwg ICAgIDExMCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQogICAgMiB8ICAgICAgMjAgfCBpbnNl cnRlZCBieSBtZXJnZQogICAgMyB8ICAgICAzMzAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UK QEAgLTE5NTYsNyArMjExNiw4IEBAIFNFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRp ZDsKICAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKICAgMTMgfCAgICAxNDMwIHwg aW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCiAgIDE0IHwgICAgIDE0MCB8IGluc2VydGVkIGJ5IG1l cmdlCi0oMTQgcm93cykKKyAgMTUgfCAgICAxNTAwIHwgaW5pdGlhbCBub3QgbWF0Y2hlZCBieSBz b3VyY2UKKygxNSByb3dzKQogCiBST0xMQkFDSzsKIC0tIHNhbWUgd2l0aCBhIGNvbnN0YW50IHF1 YWwKQEAgLTE5NjgsMjkgKzIxMjksMzIgQEAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAogICBXSEVO IE1BVENIRUQgVEhFTgogICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IGJhbGFuY2UgKyBkZWx0YSwg dmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVO Ci0gICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7Ci1T RUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7Ci0gdGlkIHwgYmFsYW5jZSB8ICAg ICAgICAgICB2YWwgICAgICAgICAgICAKLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBt ZXJnZScpCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4KKyAgICBVUERBVEUgU0VU IHZhbCA9IHZhbCB8fCAnIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZSc7CitTRUxFQ1QgKiBGUk9NIHBh X3RhcmdldCBPUkRFUiBCWSB0aWQsIHZhbDsKKyB0aWQgfCBiYWxhbmNlIHwgICAgICAgICAgICAg IHZhbCAgICAgICAgICAgICAgCistLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgMSB8ICAgICAxMTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKICAg IDIgfCAgICAgIDIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgIDMgfCAgICAgMzAwIHwgaW5pdGlh bCBub3QgbWF0Y2hlZCBieSBzb3VyY2UKICAgIDMgfCAgICAgIDMwIHwgaW5zZXJ0ZWQgYnkgbWVy Z2UKLSAgIDMgfCAgICAgMzAwIHwgaW5pdGlhbAogICAgNCB8ICAgICAgNDAgfCBpbnNlcnRlZCBi eSBtZXJnZQogICAgNiB8ICAgICAgNjAgfCBpbnNlcnRlZCBieSBtZXJnZQotICAgNyB8ICAgICA3 MDAgfCBpbml0aWFsCisgICA3IHwgICAgIDcwMCB8IGluaXRpYWwgbm90IG1hdGNoZWQgYnkgc291 cmNlCiAgICA3IHwgICAgICA3MCB8IGluc2VydGVkIGJ5IG1lcmdlCiAgICA4IHwgICAgICA4MCB8 IGluc2VydGVkIGJ5IG1lcmdlCi0gICA5IHwgICAgIDkwMCB8IGluaXRpYWwKKyAgIDkgfCAgICAg OTAwIHwgaW5pdGlhbCBub3QgbWF0Y2hlZCBieSBzb3VyY2UKICAgIDkgfCAgICAgIDkwIHwgaW5z ZXJ0ZWQgYnkgbWVyZ2UKICAgMTAgfCAgICAgMTAwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKKyAgMTEg fCAgICAxMTAwIHwgaW5pdGlhbCBub3QgbWF0Y2hlZCBieSBzb3VyY2UKICAgMTEgfCAgICAgMTEw IHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKLSAgMTEgfCAgICAxMTAwIHwgaW5pdGlhbAogICAxMiB8ICAg ICAxMjAgfCBpbnNlcnRlZCBieSBtZXJnZQotICAxMyB8ICAgIDEzMDAgfCBpbml0aWFsCisgIDEz IHwgICAgMTMwMCB8IGluaXRpYWwgbm90IG1hdGNoZWQgYnkgc291cmNlCiAgIDEzIHwgICAgIDEz MCB8IGluc2VydGVkIGJ5IG1lcmdlCiAgIDE0IHwgICAgIDE0MCB8IGluc2VydGVkIGJ5IG1lcmdl Ci0oMTggcm93cykKKyAgMTUgfCAgICAxNTAwIHwgaW5pdGlhbCBub3QgbWF0Y2hlZCBieSBzb3Vy Y2UKKygxOSByb3dzKQogCiBST0xMQkFDSzsKIC0tIHRyeSB1cGRhdGluZyB0aGUgcGFydGl0aW9u IGtleSBjb2x1bW4KQEAgLTIwMDUsMzAgKzIxNjksMzMgQEAgTUVSR0UgSU5UTyBwYV90YXJnZXQg dAogICBXSEVOIE1BVENIRUQgVEhFTgogICAgIFVQREFURSBTRVQgdGlkID0gdGlkICsgMSwgYmFs YW5jZSA9IGJhbGFuY2UgKyBkZWx0YSwgdmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScK ICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCi0gICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwg J2luc2VydGVkIGJ5IG1lcmdlJyk7CisgICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2lu c2VydGVkIGJ5IG1lcmdlJykKKyAgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorICAg IFVQREFURSBTRVQgdGlkID0gMSwgdmFsID0gdmFsIHx8ICcgbm90IG1hdGNoZWQgYnkgc291cmNl JzsKIEdFVCBESUFHTk9TVElDUyByZXN1bHQgOj0gUk9XX0NPVU5UOwogUkFJU0UgTk9USUNFICdS T1dfQ09VTlQgPSAlJywgcmVzdWx0OwogRU5EOwogJCQ7Ci1OT1RJQ0U6ICBST1dfQ09VTlQgPSAx NAotU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOwotIHRpZCB8IGJhbGFuY2Ug fCAgICAgICAgICAgdmFsICAgICAgICAgICAgCi0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK05PVElDRTogIFJPV19DT1VOVCA9IDE1CitTRUxFQ1QgKiBGUk9NIHBh X3RhcmdldCBPUkRFUiBCWSB0aWQsIHZhbDsKKyB0aWQgfCBiYWxhbmNlIHwgICAgICAgICAgICAg IHZhbCAgICAgICAgICAgICAgCistLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgMSB8ICAgIDE1MDAgfCBpbml0aWFsIG5vdCBtYXRjaGVkIGJ5IHNvdXJj ZQogICAgMiB8ICAgICAxMTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKICAgIDIgfCAgICAg IDIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKLSAgIDQgfCAgICAgIDQwIHwgaW5zZXJ0ZWQgYnkgbWVy Z2UKICAgIDQgfCAgICAgMzMwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCisgICA0IHwgICAg ICA0MCB8IGluc2VydGVkIGJ5IG1lcmdlCiAgICA2IHwgICAgIDU1MCB8IGluaXRpYWwgdXBkYXRl ZCBieSBtZXJnZQogICAgNiB8ICAgICAgNjAgfCBpbnNlcnRlZCBieSBtZXJnZQotICAgOCB8ICAg ICAgODAgfCBpbnNlcnRlZCBieSBtZXJnZQogICAgOCB8ICAgICA3NzAgfCBpbml0aWFsIHVwZGF0 ZWQgYnkgbWVyZ2UKKyAgIDggfCAgICAgIDgwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKICAgMTAgfCAg ICAgOTkwIHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCiAgIDEwIHwgICAgIDEwMCB8IGluc2Vy dGVkIGJ5IG1lcmdlCiAgIDEyIHwgICAgMTIxMCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQog ICAxMiB8ICAgICAxMjAgfCBpbnNlcnRlZCBieSBtZXJnZQogICAxNCB8ICAgIDE0MzAgfCBpbml0 aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKICAgMTQgfCAgICAgMTQwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UK LSgxNCByb3dzKQorKDE1IHJvd3MpCiAKIFJPTExCQUNLOwogLS0gYXMgYWJvdmUsIGJ1dCBibG9j a2VkIGJ5IEJFRk9SRSBERUxFVEUgUk9XIHRyaWdnZXIKQEAgLTIwNDcsMTUgKzIyMTQsMTcgQEAg TUVSR0UgSU5UTyBwYV90YXJnZXQgdAogICBXSEVOIE1BVENIRUQgVEhFTgogICAgIFVQREFURSBT RVQgdGlkID0gdGlkICsgMSwgYmFsYW5jZSA9IGJhbGFuY2UgKyBkZWx0YSwgdmFsID0gdmFsIHx8 ICcgdXBkYXRlZCBieSBtZXJnZScKICAgV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCi0gICAgSU5TRVJU IFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7CisgICAgSU5TRVJUIFZB TFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJykKKyAgV0hFTiBOT1QgTUFUQ0hF RCBCWSBTT1VSQ0UgVEhFTgorICAgIFVQREFURSBTRVQgdmFsID0gdmFsIHx8ICcgbm90IG1hdGNo ZWQgYnkgc291cmNlJzsKIEdFVCBESUFHTk9TVElDUyByZXN1bHQgOj0gUk9XX0NPVU5UOwogUkFJ U0UgTk9USUNFICdST1dfQ09VTlQgPSAlJywgcmVzdWx0OwogRU5EOwogJCQ7Ci1OT1RJQ0U6ICBS T1dfQ09VTlQgPSAxMAotU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOwotIHRp ZCB8IGJhbGFuY2UgfCAgICAgICAgICAgdmFsICAgICAgICAgICAgCi0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05PVElDRTogIFJPV19DT1VOVCA9IDExCitTRUxF Q1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQsIHZhbDsKKyB0aWQgfCBiYWxhbmNlIHwg ICAgICAgICAgICAgIHZhbCAgICAgICAgICAgICAgCistLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgMSB8ICAgICAxMDAgfCBpbml0aWFsCiAgICAyIHwg ICAgICAyMCB8IGluc2VydGVkIGJ5IG1lcmdlCiAgICAzIHwgICAgIDMwMCB8IGluaXRpYWwKQEAg LTIwNzAsNyArMjIzOSw4IEBAIFNFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsK ICAgMTIgfCAgICAgMTIwIHwgaW5zZXJ0ZWQgYnkgbWVyZ2UKICAgMTQgfCAgICAxNDMwIHwgaW5p dGlhbCB1cGRhdGVkIGJ5IG1lcmdlCiAgIDE0IHwgICAgIDE0MCB8IGluc2VydGVkIGJ5IG1lcmdl Ci0oMTQgcm93cykKKyAgMTUgfCAgICAxNTAwIHwgaW5pdGlhbCBub3QgbWF0Y2hlZCBieSBzb3Vy Y2UKKygxNSByb3dzKQogCiBST0xMQkFDSzsKIC0tIGFzIGFib3ZlLCBidXQgYmxvY2tlZCBieSBC RUZPUkUgSU5TRVJUIFJPVyB0cmlnZ2VyCkBAIC0yMDg5LDE5ICsyMjU5LDIyIEBAIE1FUkdFIElO VE8gcGFfdGFyZ2V0IHQKICAgV0hFTiBNQVRDSEVEIFRIRU4KICAgICBVUERBVEUgU0VUIHRpZCA9 IHRpZCArIDEsIGJhbGFuY2UgPSBiYWxhbmNlICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0 ZWQgYnkgbWVyZ2UnCiAgIFdIRU4gTk9UIE1BVENIRUQgVEhFTgotICAgIElOU0VSVCBWQUxVRVMg KHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBtZXJnZScpOworICAgIElOU0VSVCBWQUxVRVMgKHNp ZCwgZGVsdGEsICdpbnNlcnRlZCBieSBtZXJnZScpCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09V UkNFIFRIRU4KKyAgICBVUERBVEUgU0VUIHZhbCA9IHZhbCB8fCAnIG5vdCBtYXRjaGVkIGJ5IHNv dXJjZSc7CiBHRVQgRElBR05PU1RJQ1MgcmVzdWx0IDo9IFJPV19DT1VOVDsKIFJBSVNFIE5PVElD RSAnUk9XX0NPVU5UID0gJScsIHJlc3VsdDsKIEVORDsKICQkOwotTk9USUNFOiAgUk9XX0NPVU5U ID0gMwotU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOwotIHRpZCB8IGJhbGFu Y2UgfCAgICAgICAgICAgdmFsICAgICAgICAgICAgCi0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK05PVElDRTogIFJPV19DT1VOVCA9IDQKK1NFTEVDVCAqIEZST00g cGFfdGFyZ2V0IE9SREVSIEJZIHRpZCwgdmFsOworIHRpZCB8IGJhbGFuY2UgfCAgICAgICAgICAg ICAgdmFsICAgICAgICAgICAgICAKKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgICA2IHwgICAgIDU1MCB8IGluaXRpYWwgdXBkYXRlZCBieSBtZXJnZQog ICAxMiB8ICAgIDEyMTAgfCBpbml0aWFsIHVwZGF0ZWQgYnkgbWVyZ2UKICAgMTQgfCAgICAxNDMw IHwgaW5pdGlhbCB1cGRhdGVkIGJ5IG1lcmdlCi0oMyByb3dzKQorICAxNSB8ICAgIDE1MDAgfCBp bml0aWFsIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZQorKDQgcm93cykKIAogUk9MTEJBQ0s7CiAtLSB0 ZXN0IFJMUyBlbmZvcmNlbWVudApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA4NGUzNTlmLi4zNWQ0ZWI2Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CkBAIC0zNzI2LDcgKzM3MjYsMzkgQEAgQkVHSU4gQVRPTUlDCiAgICAgIHQuZGF0YSwK ICAgICAgdC5maWxsaW5nOwogRU5ECitDUkVBVEUgRlVOQ1RJT04gbWVyZ2Vfc2ZfdGVzdDIoKQor IFJFVFVSTlMgdm9pZAorIExBTkdVQUdFIHNxbAorQkVHSU4gQVRPTUlDCisgTUVSR0UgSU5UTyBz Zl90YXJnZXQgdAorICAgVVNJTkcgcnVsZV9tZXJnZTEgcworICAgT04gKHMuYSA9IHQuaWQpCitX SEVOIE5PVCBNQVRDSEVECisgICBUSEVOIElOU0VSVCAoZGF0YSwgaWQpCisgICBWQUxVRVMgKHMu YSwgcy5hKQorV0hFTiBNQVRDSEVECisgICBUSEVOIFVQREFURSBTRVQgZGF0YSA9IHMuYgorV0hF TiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UKKyAgIFRIRU4gREVMRVRFOworRU5EOworXHNmIG1lcmdl X3NmX3Rlc3QyCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwdWJsaWMubWVyZ2Vfc2ZfdGVz dDIoKQorIFJFVFVSTlMgdm9pZAorIExBTkdVQUdFIHNxbAorQkVHSU4gQVRPTUlDCisgTUVSR0Ug SU5UTyBzZl90YXJnZXQgdAorICAgIFVTSU5HIHJ1bGVfbWVyZ2UxIHMKKyAgICBPTiAocy5hID0g dC5pZCkKKyAgICBXSEVOIE5PVCBNQVRDSEVEIEJZIFRBUkdFVAorICAgICBUSEVOIElOU0VSVCAo ZGF0YSwgaWQpCisgICAgICBWQUxVRVMgKHMuYSwgcy5hKQorICAgIFdIRU4gTUFUQ0hFRAorICAg ICBUSEVOIFVQREFURSBTRVQgZGF0YSA9IHMuYgorICAgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09V UkNFCisgICAgIFRIRU4gREVMRVRFOworRU5ECiBEUk9QIEZVTkNUSU9OIG1lcmdlX3NmX3Rlc3Q7 CitEUk9QIEZVTkNUSU9OIG1lcmdlX3NmX3Rlc3QyOwogRFJPUCBUQUJMRSBzZl90YXJnZXQ7CiAt LQogLS0gVGVzdCBlbmFibGluZy9kaXNhYmxpbmcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDYyYzM0 Li4zOTEzNjc0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQK QEAgLTQ5OSw2ICs0OTksMzIgQEAgU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBhOwog ICA1IHwgVW5zcGVjaWZpZWQKICg2IHJvd3MpCiAKK01FUkdFIElOVE8gcndfdmlldzEgdAorICBV U0lORyAoVkFMVUVTICgwLCAnUjAnKSwgKDEsICdSMScpLAorICAgICAgICAgICAgICAgICgyLCAn UjInKSwgKDMsICdSMycpKSBBUyB2KGEsYikgT04gdC5hID0gdi5hCisgIFdIRU4gTUFUQ0hFRCBB TkQgdC5hIDw9IDEgVEhFTiBVUERBVEUgU0VUIGIgPSB2LmIKKyAgV0hFTiBNQVRDSEVEIFRIRU4g REVMRVRFCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4gREVMRVRFCisgIFdIRU4g Tk9UIE1BVENIRUQgQU5EIGEgPiAwIFRIRU4gSU5TRVJUIChhKSBWQUxVRVMgKHYuYSkKKyAgUkVU VVJOSU5HIG1lcmdlX2FjdGlvbigpLCB2LiosIHQuKjsKKyBtZXJnZV9hY3Rpb24gfCBhIHwgYiAg fCBhIHwgICAgICBiICAgICAgCistLS0tLS0tLS0tLS0tLSstLS0rLS0tLSstLS0rLS0tLS0tLS0t LS0tLQorIFVQREFURSAgICAgICB8IDEgfCBSMSB8IDEgfCBSMQorIERFTEVURSAgICAgICB8ICAg fCAgICB8IDUgfCBVbnNwZWNpZmllZAorIERFTEVURSAgICAgICB8IDIgfCBSMiB8IDIgfCBVbnNw ZWNpZmllZAorIElOU0VSVCAgICAgICB8IDMgfCBSMyB8IDMgfCBVbnNwZWNpZmllZAorKDQgcm93 cykKKworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBhOworIGEgIHwgICAgICBiICAg ICAgCistLS0tKy0tLS0tLS0tLS0tLS0KKyAtMiB8IFJvdyAtMgorIC0xIHwgUm93IC0xCisgIDAg fCBSb3cgMAorICAxIHwgUjEKKyAgMyB8IFVuc3BlY2lmaWVkCisoNSByb3dzKQorCiBFWFBMQUlO IChjb3N0cyBvZmYpIFVQREFURSByd192aWV3MSBTRVQgYT02IFdIRVJFIGE9NTsKICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTQ1LDYgKzU3MSwyMyBA QCBNRVJHRSBJTlRPIHJ3X3ZpZXcxIHQKIEVYUExBSU4gKGNvc3RzIG9mZikKIE1FUkdFIElOVE8g cndfdmlldzEgdAogICBVU0lORyAoU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSkg QVMgcyhhKSBPTiB0LmEgPSBzLmEKKyAgV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTiBE RUxFVEU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2Ugb24gYmFzZV90YmwKKyAgIC0+ ICBIYXNoIExlZnQgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoYmFzZV90YmwuYSA9IGdlbmVy YXRlX3Nlcmllcy5nZW5lcmF0ZV9zZXJpZXMpCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2Nh biBvbiBiYXNlX3RibAorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA+IDApCisgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYmFzZV90YmxfcGtleQorICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPiAwKQorICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcworKDkgcm93 cykKKworRVhQTEFJTiAoY29zdHMgb2ZmKQorTUVSR0UgSU5UTyByd192aWV3MSB0CisgIFVTSU5H IChTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpKSBBUyBzKGEpIE9OIHQuYSA9IHMu YQogICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIChhKSBWQUxVRVMgKHMuYSk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02NTYsNiArNjk5LDI5IEBAIFNFTEVDVCAqIEZST00gcndf dmlldzIgT1JERVIgQlkgYWFhOwogICAgNSB8IFVuc3BlY2lmaWVkCiAoMyByb3dzKQogCitNRVJH RSBJTlRPIHJ3X3ZpZXcyIHQKKyAgVVNJTkcgKFZBTFVFUyAoNCwgJ3I0JyksICg1LCAncjUnKSwg KDYsICdyNicpKSBBUyB2KGEsYikgT04gYWFhID0gdi5hCisgIFdIRU4gTUFUQ0hFRCBBTkQgYWFh ID0gNCBUSEVOIERFTEVURQorICBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIGJiYiA9IHYu YgorICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4gSU5TRVJUIChhYWEpIFZBTFVFUyAodi5hKQorICBX SEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOIFVQREFURSBTRVQgYmJiID0gJ05vdCBtYXRj aGVkIGJ5IHNvdXJjZScKKyAgUkVUVVJOSU5HIG1lcmdlX2FjdGlvbigpLCB2LiosIHQuKjsKKyBt ZXJnZV9hY3Rpb24gfCBhIHwgYiAgfCBhYWEgfCAgICAgICAgICBiYmIgICAgICAgICAgCistLS0t LS0tLS0tLS0tLSstLS0rLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVQREFU RSAgICAgICB8ICAgfCAgICB8ICAgMSB8IE5vdCBtYXRjaGVkIGJ5IHNvdXJjZQorIERFTEVURSAg ICAgICB8IDQgfCByNCB8ICAgNCB8IFI0CisgVVBEQVRFICAgICAgIHwgNSB8IHI1IHwgICA1IHwg cjUKKyBJTlNFUlQgICAgICAgfCA2IHwgcjYgfCAgIDYgfCBVbnNwZWNpZmllZAorKDQgcm93cykK KworU0VMRUNUICogRlJPTSByd192aWV3MiBPUkRFUiBCWSBhYWE7CisgYWFhIHwgICAgICAgICAg YmJiICAgICAgICAgIAorLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDEgfCBOb3Qg bWF0Y2hlZCBieSBzb3VyY2UKKyAgIDUgfCByNQorICAgNiB8IFVuc3BlY2lmaWVkCisoMyByb3dz KQorCiBFWFBMQUlOIChjb3N0cyBvZmYpIFVQREFURSByd192aWV3MiBTRVQgYWFhPTUgV0hFUkUg YWFhPTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTExMDYsNiArMTE3MiwzMCBAQCBTRUxFQ1QgKiBGUk9NIGJhc2VfdGJsIE9S REVSIEJZIGE7CiAgIDMgfCBSMwogKDUgcm93cykKIAorTUVSR0UgSU5UTyByd192aWV3MiB0Cisg IFVTSU5HIChTRUxFQ1QgeCwgJ3InfHx4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsMikgeCkgQVMg cyhhLGIpIE9OIHQuYSA9IHMuYQorICBXSEVOIE1BVENIRUQgVEhFTiBVUERBVEUgU0VUIGIgPSBz LmIKKyAgV0hFTiBOT1QgTUFUQ0hFRCBBTkQgcy5hID4gMCBUSEVOIElOU0VSVCBWQUxVRVMgKHMu YSwgcy5iKQorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOIFVQREFURSBTRVQgYiA9 ICdOb3QgbWF0Y2hlZCBieSBzb3VyY2UnCisgIFJFVFVSTklORyBtZXJnZV9hY3Rpb24oKSwgcy4q LCB0Lio7CisgbWVyZ2VfYWN0aW9uIHwgYSB8IGIgIHwgYSB8ICAgICAgICAgICBiICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tKy0tLSstLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFVQREFURSAgICAgICB8IDIgfCByMiB8IDIgfCByMgorIFVQREFURSAgICAgICB8ICAgfCAgICB8 IDMgfCBOb3QgbWF0Y2hlZCBieSBzb3VyY2UKKyBJTlNFUlQgICAgICAgfCAxIHwgcjEgfCAxIHwg cjEKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsKKyBhICB8 ICAgICAgICAgICBiICAgICAgICAgICAKKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAt MiB8IFJvdyAtMgorIC0xIHwgUm93IC0xCisgIDAgfCBSb3cgMAorICAxIHwgcjEKKyAgMiB8IHIy CisgIDMgfCBOb3QgbWF0Y2hlZCBieSBzb3VyY2UKKyg2IHJvd3MpCisKIEVYUExBSU4gKGNvc3Rz IG9mZikgVVBEQVRFIHJ3X3ZpZXcyIFNFVCBhPTMgV0hFUkUgYT0yOwogICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv bWVyZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NWNmNmYuLjNkNWQ4NTQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVyZ2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL21lcmdlLnNxbApAQCAtNTMsNiArNTMsMTIgQEAgVVNJTkcgc291cmNlIEFTIHMKIE9OIHQu dGlkID0gcy5zaWQKIFdIRU4gTUFUQ0hFRCBUSEVOCiAJSU5TRVJUIERFRkFVTFQgVkFMVUVTOwor LS0gTk9UIE1BVENIRUQgQlkgU09VUkNFL0lOU0VSVCBlcnJvcgorTUVSR0UgSU5UTyB0YXJnZXQg dAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQudGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQg QlkgU09VUkNFIFRIRU4KKwlJTlNFUlQgREVGQVVMVCBWQUxVRVM7CiAtLSBpbmNvcnJlY3RseSBz cGVjaWZ5aW5nIElOVE8gdGFyZ2V0CiBNRVJHRSBJTlRPIHRhcmdldCB0CiBVU0lORyBzb3VyY2Ug QVMgcwpAQCAtNzcsNiArODMsMTIgQEAgVVNJTkcgc291cmNlIEFTIHMKIE9OIHQudGlkID0gcy5z aWQKIFdIRU4gTk9UIE1BVENIRUQgVEhFTgogCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7CistLSBO T1QgTUFUQ0hFRCBCWSBUQVJHRVQvVVBEQVRFCitNRVJHRSBJTlRPIHRhcmdldCB0CitVU0lORyBz b3VyY2UgQVMgcworT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBCWSBUQVJHRVQg VEhFTgorCVVQREFURSBTRVQgYmFsYW5jZSA9IDA7CiAtLSBVUERBVEUgdGFibGVuYW1lCiBNRVJH RSBJTlRPIHRhcmdldCB0CiBVU0lORyBzb3VyY2UgQVMgcwpAQCAtMjE0LDYgKzIyNiwxOSBAQCBX SEVOIE5PVCBNQVRDSEVEIFRIRU4KIFNFTEVDVCAqIEZST00gdGFyZ2V0IE9SREVSIEJZIHRpZDsK IFJPTExCQUNLOwogCistLSBERUxFVEUvSU5TRVJUIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZS90YXJn ZXQKK0JFR0lOOworTUVSR0UgSU5UTyB0YXJnZXQgdAorVVNJTkcgc291cmNlIEFTIHMKK09OIHQu dGlkID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4KKwlERUxFVEUKK1dI RU4gTk9UIE1BVENIRUQgQlkgVEFSR0VUIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChzLnNpZCwgcy5k ZWx0YSkKK1JFVFVSTklORyBtZXJnZV9hY3Rpb24oKSwgdC4qOworU0VMRUNUICogRlJPTSB0YXJn ZXQgT1JERVIgQlkgdGlkOworUk9MTEJBQ0s7CisKIC0tIGluZGV4IHBsYW5zCiBJTlNFUlQgSU5U TyB0YXJnZXQgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDAwLDI1MDApLCAwOwogQUxURVIgVEFC TEUgdGFyZ2V0IEFERCBQUklNQVJZIEtFWSAodGlkKTsKQEAgLTQ5OCw2ICs1MjMsMTcgQEAgV0hF TiBOT1QgTUFUQ0hFRCBBTkQgcy5iYWxhbmNlID0gMTAwIFRIRQogCUlOU0VSVCAodGlkKSBWQUxV RVMgKHMuc2lkKTsKIFNFTEVDVCAqIEZST00gd3FfdGFyZ2V0OwogCistLSBjb25kaXRpb25zIGlu IE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBjbGF1c2UgY2FuIG9ubHkgcmVmZXIgdG8gdGFyZ2V0IGNv bHVtbnMKK01FUkdFIElOVE8gd3FfdGFyZ2V0IHQKK1VTSU5HIHdxX3NvdXJjZSBzIE9OIHQudGlk ID0gcy5zaWQKK1dIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIEFORCBzLmJhbGFuY2UgPSAxMDAg VEhFTgorCURFTEVURTsKKworTUVSR0UgSU5UTyB3cV90YXJnZXQgdAorVVNJTkcgd3Ffc291cmNl IHMgT04gdC50aWQgPSBzLnNpZAorV0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgQU5EIHQuYmFs YW5jZSA9IDEwMCBUSEVOCisgICAgREVMRVRFOworCiAtLSBjb25kaXRpb25zIGluIE1BVENIRUQg Y2xhdXNlIGNhbiByZWZlciB0byBib3RoIHNvdXJjZSBhbmQgdGFyZ2V0CiBTRUxFQ1QgKiBGUk9N IHdxX3NvdXJjZTsKIE1FUkdFIElOVE8gd3FfdGFyZ2V0IHQKQEAgLTYyNSw2ICs2NjEsMjYgQEAg V0hFTiBOT1QgTUFUQ0hFRCBUSEVOCiBTRUxFQ1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7 CiBST0xMQkFDSzsKIAorLS0gVVBTRVJUIHdpdGggVVBEQVRFL0RFTEVURSB3aGVuIG5vdCBtYXRj aGVkIGJ5IHNvdXJjZQorQkVHSU47CitERUxFVEUgRlJPTSBTT1VSQ0UgV0hFUkUgc2lkID0gMjsK K01FUkdFIElOVE8gdGFyZ2V0IHQKK1VTSU5HIHNvdXJjZSBBUyBzCitPTiB0LnRpZCA9IHMuc2lk CitXSEVOIE1BVENIRUQgQU5EIHQuYmFsYW5jZSA+IHMuZGVsdGEgVEhFTgorICAgIFVQREFURSBT RVQgYmFsYW5jZSA9IHQuYmFsYW5jZSAtIHMuZGVsdGEKK1dIRU4gTUFUQ0hFRCBUSEVOCisJVVBE QVRFIFNFVCBiYWxhbmNlID0gMAorV0hFTiBOT1QgTUFUQ0hFRCBUSEVOCisgICAgSU5TRVJUIFZB TFVFUyAocy5zaWQsIHMuZGVsdGEpCitXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBBTkQgdGlk ID0gMSBUSEVOCisJVVBEQVRFIFNFVCBiYWxhbmNlID0gMAorV0hFTiBOT1QgTUFUQ0hFRCBCWSBT T1VSQ0UgVEhFTgorCURFTEVURQorUkVUVVJOSU5HIG1lcmdlX2FjdGlvbigpLCB0Lio7CitTRUxF Q1QgKiBGUk9NIHRhcmdldCBPUkRFUiBCWSB0aWQ7CitST0xMQkFDSzsKKwogLS0gVGVzdCBiZWhh dmlvciBvZiB0cmlnZ2VycyB0aGF0IHR1cm4gVVBEQVRFL0RFTEVURSBpbnRvIG5vLW9wcwogY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc2tpcF9tZXJnZV9vcCgpIHJldHVybnMgdHJpZ2dlcgog bGFuZ3VhZ2UgcGxwZ3NxbCBhcwpAQCAtMTA2MSw2ICsxMTE3LDIwIEBAIFdIRU4gTUFUQ0hFRCBB TkQgdC5hID49IDMwIEFORCB0LmEgPD0gNDAKIFdIRU4gTk9UIE1BVENIRUQgQU5EIHMuYSA8IDIw IFRIRU4KIAlJTlNFUlQgVkFMVUVTIChhLCBiKScpOwogCistLSBub3QgbWF0Y2hlZCBieSBzb3Vy Y2UKK1NFTEVDVCBleHBsYWluX21lcmdlKCcKK01FUkdFIElOVE8gZXhfbXRhcmdldCB0IFVTSU5H IGV4X21zb3VyY2UgcyBPTiB0LmEgPSBzLmEKK1dIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIGFu ZCB0LmEgPCAxMCBUSEVOCisJREVMRVRFJyk7CisKKy0tIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZSBh bmQgdGFyZ2V0CitTRUxFQ1QgZXhwbGFpbl9tZXJnZSgnCitNRVJHRSBJTlRPIGV4X210YXJnZXQg dCBVU0lORyBleF9tc291cmNlIHMgT04gdC5hID0gcy5hCitXSEVOIE5PVCBNQVRDSEVEIEJZIFNP VVJDRSBBTkQgdC5hIDwgMTAgVEhFTgorCURFTEVURQorV0hFTiBOT1QgTUFUQ0hFRCBCWSBUQVJH RVQgQU5EIHMuYSA8IDIwIFRIRU4KKwlJTlNFUlQgVkFMVUVTIChhLCBiKScpOworCiAtLSBub3Ro aW5nCiBTRUxFQ1QgZXhwbGFpbl9tZXJnZSgnCiBNRVJHRSBJTlRPIGV4X210YXJnZXQgdCBVU0lO RyBleF9tc291cmNlIHMgT04gdC5hID0gcy5hIEFORCB0LmEgPCAtMTAwMApAQCAtMTEzMyw3ICsx MjAzLDcgQEAgQ1JFQVRFIFRBQkxFIHBhX3NvdXJjZSAoc2lkIGludGVnZXIsIGRlbAogLS0gaW5z ZXJ0IG1hbnkgcm93cyB0byB0aGUgc291cmNlIHRhYmxlCiBJTlNFUlQgSU5UTyBwYV9zb3VyY2Ug U0VMRUNUIGlkLCBpZCAqIDEwICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDE0KSBBUyBpZDsKIC0t IGluc2VydCBhIGZldyByb3dzIGluIHRoZSB0YXJnZXQgdGFibGUgKG9kZCBudW1iZXJlZCB0aWQp Ci1JTlNFUlQgSU5UTyBwYV90YXJnZXQgU0VMRUNUIGlkLCBpZCAqIDEwMCwgJ2luaXRpYWwnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTQsMikgQVMgaWQ7CitJTlNFUlQgSU5UTyBwYV90YXJnZXQg U0VMRUNUIGlkLCBpZCAqIDEwMCwgJ2luaXRpYWwnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTUs MikgQVMgaWQ7CiAKIC0tIHRyeSBzaW1wbGUgTUVSR0UKIEJFR0lOOwpAQCAtMTE0Myw4ICsxMjEz LDEwIEBAIE1FUkdFIElOVE8gcGFfdGFyZ2V0IHQKICAgV0hFTiBNQVRDSEVEIFRIRU4KICAgICBV UERBVEUgU0VUIGJhbGFuY2UgPSBiYWxhbmNlICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0 ZWQgYnkgbWVyZ2UnCiAgIFdIRU4gTk9UIE1BVENIRUQgVEhFTgotICAgIElOU0VSVCBWQUxVRVMg KHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBtZXJnZScpOwotU0VMRUNUICogRlJPTSBwYV90YXJn ZXQgT1JERVIgQlkgdGlkOworICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRl ZCBieSBtZXJnZScpCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4KKyAgICBVUERB VEUgU0VUIHZhbCA9IHZhbCB8fCAnIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZSc7CitTRUxFQ1QgKiBG Uk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQsIHZhbDsKIFJPTExCQUNLOwogCiAtLSBzYW1lIHdp dGggYSBjb25zdGFudCBxdWFsCkBAIC0xMTU1LDggKzEyMjcsMTAgQEAgTUVSR0UgSU5UTyBwYV90 YXJnZXQgdAogICBXSEVOIE1BVENIRUQgVEhFTgogICAgIFVQREFURSBTRVQgYmFsYW5jZSA9IGJh bGFuY2UgKyBkZWx0YSwgdmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKICAgV0hFTiBO T1QgTUFUQ0hFRCBUSEVOCi0gICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVk IGJ5IG1lcmdlJyk7Ci1TRUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7CisgICAg SU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJykKKyAgV0hFTiBO T1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorICAgIFVQREFURSBTRVQgdmFsID0gdmFsIHx8ICcg bm90IG1hdGNoZWQgYnkgc291cmNlJzsKK1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZ IHRpZCwgdmFsOwogUk9MTEJBQ0s7CiAKIC0tIHRyeSB1cGRhdGluZyB0aGUgcGFydGl0aW9uIGtl eSBjb2x1bW4KQEAgLTExNzEsNyArMTI0NSw5IEBAIE1FUkdFIElOVE8gcGFfdGFyZ2V0IHQKICAg V0hFTiBNQVRDSEVEIFRIRU4KICAgICBVUERBVEUgU0VUIHRpZCA9IHRpZCArIDEsIGJhbGFuY2Ug PSBiYWxhbmNlICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCiAgIFdI RU4gTk9UIE1BVENIRUQgVEhFTgotICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNl cnRlZCBieSBtZXJnZScpOworICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRl ZCBieSBtZXJnZScpCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4KKyAgICBVUERB VEUgU0VUIHRpZCA9IDEsIHZhbCA9IHZhbCB8fCAnIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZSc7CiBJ RiBGT1VORCBUSEVOCiAgIEdFVCBESUFHTk9TVElDUyByZXN1bHQgOj0gUk9XX0NPVU5UOwogRU5E IElGOwpAQCAtMTE3OSw3ICsxMjU1LDcgQEAgUkVUVVJOIHJlc3VsdDsKIEVORDsKICQkOwogU0VM RUNUIG1lcmdlX2Z1bmMoKTsKLVNFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsK K1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZCwgdmFsOwogUk9MTEJBQ0s7CiAK IC0tIHVwZGF0ZSBwYXJ0aXRpb24ga2V5IHRvIHBhcnRpdGlvbiBub3QgaW5pdGlhbGx5IHNjYW5u ZWQKQEAgLTEyMTYsNyArMTI5Miw3IEBAIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFS VElUSU9OIHAKIEFMVEVSIFRBQkxFIHBhX3RhcmdldCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQ0IERF RkFVTFQ7CiAKIC0tIGluc2VydCBhIGZldyByb3dzIGluIHRoZSB0YXJnZXQgdGFibGUgKG9kZCBu dW1iZXJlZCB0aWQpCi1JTlNFUlQgSU5UTyBwYV90YXJnZXQgU0VMRUNUIGlkLCBpZCAqIDEwMCwg J2luaXRpYWwnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTQsMikgQVMgaWQ7CitJTlNFUlQgSU5U TyBwYV90YXJnZXQgU0VMRUNUIGlkLCBpZCAqIDEwMCwgJ2luaXRpYWwnIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTUsMikgQVMgaWQ7CiAKIC0tIHRyeSBzaW1wbGUgTUVSR0UKIEJFR0lOOwpAQCAt MTIzMCwxMiArMTMwNiwxNCBAQCBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CiAgIFdIRU4gTUFUQ0hF RCBUSEVOCiAgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRhLCB2YWwgPSB2 YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwogICBXSEVOIE5PVCBNQVRDSEVEIFRIRU4KLSAgICBJ TlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsKKyAgICBJTlNF UlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKQorICBXSEVOIE5PVCBN QVRDSEVEIEJZIFNPVVJDRSBUSEVOCisgICAgVVBEQVRFIFNFVCB2YWwgPSB2YWwgfHwgJyBub3Qg bWF0Y2hlZCBieSBzb3VyY2UnOwogR0VUIERJQUdOT1NUSUNTIHJlc3VsdCA6PSBST1dfQ09VTlQ7 CiBSQUlTRSBOT1RJQ0UgJ1JPV19DT1VOVCA9ICUnLCByZXN1bHQ7CiBFTkQ7CiAkJDsKLVNFTEVD VCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsKK1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0 IE9SREVSIEJZIHRpZCwgdmFsOwogUk9MTEJBQ0s7CiAKIC0tIHNhbWUgd2l0aCBhIGNvbnN0YW50 IHF1YWwKQEAgLTEyNDcsOCArMTMyNSwxMCBAQCBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CiAgIFdI RU4gTUFUQ0hFRCBUSEVOCiAgICAgVVBEQVRFIFNFVCBiYWxhbmNlID0gYmFsYW5jZSArIGRlbHRh LCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwogICBXSEVOIE5PVCBNQVRDSEVEIFRI RU4KLSAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKTsK LVNFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsKKyAgICBJTlNFUlQgVkFMVUVT IChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2UnKQorICBXSEVOIE5PVCBNQVRDSEVEIEJZ IFNPVVJDRSBUSEVOCisgICAgVVBEQVRFIFNFVCB2YWwgPSB2YWwgfHwgJyBub3QgbWF0Y2hlZCBi eSBzb3VyY2UnOworU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkLCB2YWw7CiBS T0xMQkFDSzsKIAogLS0gdHJ5IHVwZGF0aW5nIHRoZSBwYXJ0aXRpb24ga2V5IGNvbHVtbgpAQCAt MTI2MywxMiArMTM0MywxNCBAQCBNRVJHRSBJTlRPIHBhX3RhcmdldCB0CiAgIFdIRU4gTUFUQ0hF RCBUSEVOCiAgICAgVVBEQVRFIFNFVCB0aWQgPSB0aWQgKyAxLCBiYWxhbmNlID0gYmFsYW5jZSAr IGRlbHRhLCB2YWwgPSB2YWwgfHwgJyB1cGRhdGVkIGJ5IG1lcmdlJwogICBXSEVOIE5PVCBNQVRD SEVEIFRIRU4KLSAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVy Z2UnKTsKKyAgICBJTlNFUlQgVkFMVUVTIChzaWQsIGRlbHRhLCAnaW5zZXJ0ZWQgYnkgbWVyZ2Un KQorICBXSEVOIE5PVCBNQVRDSEVEIEJZIFNPVVJDRSBUSEVOCisgICAgVVBEQVRFIFNFVCB0aWQg PSAxLCB2YWwgPSB2YWwgfHwgJyBub3QgbWF0Y2hlZCBieSBzb3VyY2UnOwogR0VUIERJQUdOT1NU SUNTIHJlc3VsdCA6PSBST1dfQ09VTlQ7CiBSQUlTRSBOT1RJQ0UgJ1JPV19DT1VOVCA9ICUnLCBy ZXN1bHQ7CiBFTkQ7CiAkJDsKLVNFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZDsK K1NFTEVDVCAqIEZST00gcGFfdGFyZ2V0IE9SREVSIEJZIHRpZCwgdmFsOwogUk9MTEJBQ0s7CiAK IC0tIGFzIGFib3ZlLCBidXQgYmxvY2tlZCBieSBCRUZPUkUgREVMRVRFIFJPVyB0cmlnZ2VyCkBA IC0xMjg3LDEyICsxMzY5LDE0IEBAIE1FUkdFIElOVE8gcGFfdGFyZ2V0IHQKICAgV0hFTiBNQVRD SEVEIFRIRU4KICAgICBVUERBVEUgU0VUIHRpZCA9IHRpZCArIDEsIGJhbGFuY2UgPSBiYWxhbmNl ICsgZGVsdGEsIHZhbCA9IHZhbCB8fCAnIHVwZGF0ZWQgYnkgbWVyZ2UnCiAgIFdIRU4gTk9UIE1B VENIRUQgVEhFTgotICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBt ZXJnZScpOworICAgIElOU0VSVCBWQUxVRVMgKHNpZCwgZGVsdGEsICdpbnNlcnRlZCBieSBtZXJn ZScpCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4KKyAgICBVUERBVEUgU0VUIHZh bCA9IHZhbCB8fCAnIG5vdCBtYXRjaGVkIGJ5IHNvdXJjZSc7CiBHRVQgRElBR05PU1RJQ1MgcmVz dWx0IDo9IFJPV19DT1VOVDsKIFJBSVNFIE5PVElDRSAnUk9XX0NPVU5UID0gJScsIHJlc3VsdDsK IEVORDsKICQkOwotU0VMRUNUICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkOworU0VMRUNU ICogRlJPTSBwYV90YXJnZXQgT1JERVIgQlkgdGlkLCB2YWw7CiBST0xMQkFDSzsKIAogLS0gYXMg YWJvdmUsIGJ1dCBibG9ja2VkIGJ5IEJFRk9SRSBJTlNFUlQgUk9XIHRyaWdnZXIKQEAgLTEzMTEs MTIgKzEzOTUsMTQgQEAgTUVSR0UgSU5UTyBwYV90YXJnZXQgdAogICBXSEVOIE1BVENIRUQgVEhF TgogICAgIFVQREFURSBTRVQgdGlkID0gdGlkICsgMSwgYmFsYW5jZSA9IGJhbGFuY2UgKyBkZWx0 YSwgdmFsID0gdmFsIHx8ICcgdXBkYXRlZCBieSBtZXJnZScKICAgV0hFTiBOT1QgTUFUQ0hFRCBU SEVOCi0gICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJyk7 CisgICAgSU5TRVJUIFZBTFVFUyAoc2lkLCBkZWx0YSwgJ2luc2VydGVkIGJ5IG1lcmdlJykKKyAg V0hFTiBOT1QgTUFUQ0hFRCBCWSBTT1VSQ0UgVEhFTgorICAgIFVQREFURSBTRVQgdmFsID0gdmFs IHx8ICcgbm90IG1hdGNoZWQgYnkgc291cmNlJzsKIEdFVCBESUFHTk9TVElDUyByZXN1bHQgOj0g Uk9XX0NPVU5UOwogUkFJU0UgTk9USUNFICdST1dfQ09VTlQgPSAlJywgcmVzdWx0OwogRU5EOwog JCQ7Ci1TRUxFQ1QgKiBGUk9NIHBhX3RhcmdldCBPUkRFUiBCWSB0aWQ7CitTRUxFQ1QgKiBGUk9N IHBhX3RhcmdldCBPUkRFUiBCWSB0aWQsIHZhbDsKIFJPTExCQUNLOwogCiAtLSB0ZXN0IFJMUyBl bmZvcmNlbWVudApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnVsZXMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnVsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDI3MzQwYmEuLjRhNWZhNTAKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnVsZXMuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3J1bGVzLnNxbApAQCAtMTMzOCw3ICsxMzM4LDI2IEBA IEVORDsKIAogXHNmIG1lcmdlX3NmX3Rlc3QKIAorQ1JFQVRFIEZVTkNUSU9OIG1lcmdlX3NmX3Rl c3QyKCkKKyBSRVRVUk5TIHZvaWQKKyBMQU5HVUFHRSBzcWwKK0JFR0lOIEFUT01JQworIE1FUkdF IElOVE8gc2ZfdGFyZ2V0IHQKKyAgIFVTSU5HIHJ1bGVfbWVyZ2UxIHMKKyAgIE9OIChzLmEgPSB0 LmlkKQorV0hFTiBOT1QgTUFUQ0hFRAorICAgVEhFTiBJTlNFUlQgKGRhdGEsIGlkKQorICAgVkFM VUVTIChzLmEsIHMuYSkKK1dIRU4gTUFUQ0hFRAorICAgVEhFTiBVUERBVEUgU0VUIGRhdGEgPSBz LmIKK1dIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFCisgICBUSEVOIERFTEVURTsKK0VORDsKKwor XHNmIG1lcmdlX3NmX3Rlc3QyCisKIERST1AgRlVOQ1RJT04gbWVyZ2Vfc2ZfdGVzdDsKK0RST1Ag RlVOQ1RJT04gbWVyZ2Vfc2ZfdGVzdDI7CiBEUk9QIFRBQkxFIHNmX3RhcmdldDsKIAogLS0KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGFmZGYzMzEuLmUwYWI5MjMKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRh YmxlX3ZpZXdzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Mu c3FsCkBAIC0xNzksNiArMTc5LDE2IEBAIE1FUkdFIElOVE8gcndfdmlldzEgdAogICBSRVRVUk5J TkcgbWVyZ2VfYWN0aW9uKCksIHYuKiwgdC4qOwogU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRF UiBCWSBhOwogCitNRVJHRSBJTlRPIHJ3X3ZpZXcxIHQKKyAgVVNJTkcgKFZBTFVFUyAoMCwgJ1Iw JyksICgxLCAnUjEnKSwKKyAgICAgICAgICAgICAgICAoMiwgJ1IyJyksICgzLCAnUjMnKSkgQVMg dihhLGIpIE9OIHQuYSA9IHYuYQorICBXSEVOIE1BVENIRUQgQU5EIHQuYSA8PSAxIFRIRU4gVVBE QVRFIFNFVCBiID0gdi5iCisgIFdIRU4gTUFUQ0hFRCBUSEVOIERFTEVURQorICBXSEVOIE5PVCBN QVRDSEVEIEJZIFNPVVJDRSBUSEVOIERFTEVURQorICBXSEVOIE5PVCBNQVRDSEVEIEFORCBhID4g MCBUSEVOIElOU0VSVCAoYSkgVkFMVUVTICh2LmEpCisgIFJFVFVSTklORyBtZXJnZV9hY3Rpb24o KSwgdi4qLCB0Lio7CitTRUxFQ1QgKiBGUk9NIGJhc2VfdGJsIE9SREVSIEJZIGE7CisKIEVYUExB SU4gKGNvc3RzIG9mZikgVVBEQVRFIHJ3X3ZpZXcxIFNFVCBhPTYgV0hFUkUgYT01OwogRVhQTEFJ TiAoY29zdHMgb2ZmKSBERUxFVEUgRlJPTSByd192aWV3MSBXSEVSRSBhPTU7CiAKQEAgLTE5NCw2 ICsyMDQsMTEgQEAgTUVSR0UgSU5UTyByd192aWV3MSB0CiBFWFBMQUlOIChjb3N0cyBvZmYpCiBN RVJHRSBJTlRPIHJ3X3ZpZXcxIHQKICAgVVNJTkcgKFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsNSkpIEFTIHMoYSkgT04gdC5hID0gcy5hCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09V UkNFIFRIRU4gREVMRVRFOworCitFWFBMQUlOIChjb3N0cyBvZmYpCitNRVJHRSBJTlRPIHJ3X3Zp ZXcxIHQKKyAgVVNJTkcgKFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNSkpIEFTIHMo YSkgT04gdC5hID0gcy5hCiAgIFdIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgKGEpIFZBTFVF UyAocy5hKTsKIAogLS0gaXQncyBzdGlsbCB1cGRhdGFibGUgaWYgd2UgYWRkIGEgRE8gQUxTTyBy dWxlCkBAIC0yNTEsNiArMjY2LDE1IEBAIE1FUkdFIElOVE8gcndfdmlldzIgdAogICBSRVRVUk5J TkcgbWVyZ2VfYWN0aW9uKCksIHYuKiwgdC4qOwogU0VMRUNUICogRlJPTSByd192aWV3MiBPUkRF UiBCWSBhYWE7CiAKK01FUkdFIElOVE8gcndfdmlldzIgdAorICBVU0lORyAoVkFMVUVTICg0LCAn cjQnKSwgKDUsICdyNScpLCAoNiwgJ3I2JykpIEFTIHYoYSxiKSBPTiBhYWEgPSB2LmEKKyAgV0hF TiBNQVRDSEVEIEFORCBhYWEgPSA0IFRIRU4gREVMRVRFCisgIFdIRU4gTUFUQ0hFRCBUSEVOIFVQ REFURSBTRVQgYmJiID0gdi5iCisgIFdIRU4gTk9UIE1BVENIRUQgVEhFTiBJTlNFUlQgKGFhYSkg VkFMVUVTICh2LmEpCisgIFdIRU4gTk9UIE1BVENIRUQgQlkgU09VUkNFIFRIRU4gVVBEQVRFIFNF VCBiYmIgPSAnTm90IG1hdGNoZWQgYnkgc291cmNlJworICBSRVRVUk5JTkcgbWVyZ2VfYWN0aW9u KCksIHYuKiwgdC4qOworU0VMRUNUICogRlJPTSByd192aWV3MiBPUkRFUiBCWSBhYWE7CisKIEVY UExBSU4gKGNvc3RzIG9mZikgVVBEQVRFIHJ3X3ZpZXcyIFNFVCBhYWE9NSBXSEVSRSBhYWE9NDsK IEVYUExBSU4gKGNvc3RzIG9mZikgREVMRVRFIEZST00gcndfdmlldzIgV0hFUkUgYWFhPTQ7CiAK QEAgLTQ2NCw2ICs0ODgsMTQgQEAgTUVSR0UgSU5UTyByd192aWV3MiB0CiAgIFJFVFVSTklORyBt ZXJnZV9hY3Rpb24oKSwgcy4qLCB0Lio7CiBTRUxFQ1QgKiBGUk9NIGJhc2VfdGJsIE9SREVSIEJZ IGE7CiAKK01FUkdFIElOVE8gcndfdmlldzIgdAorICBVU0lORyAoU0VMRUNUIHgsICdyJ3x8eCBG Uk9NIGdlbmVyYXRlX3NlcmllcygwLDIpIHgpIEFTIHMoYSxiKSBPTiB0LmEgPSBzLmEKKyAgV0hF TiBNQVRDSEVEIFRIRU4gVVBEQVRFIFNFVCBiID0gcy5iCisgIFdIRU4gTk9UIE1BVENIRUQgQU5E IHMuYSA+IDAgVEhFTiBJTlNFUlQgVkFMVUVTIChzLmEsIHMuYikKKyAgV0hFTiBOT1QgTUFUQ0hF RCBCWSBTT1VSQ0UgVEhFTiBVUERBVEUgU0VUIGIgPSAnTm90IG1hdGNoZWQgYnkgc291cmNlJwor ICBSRVRVUk5JTkcgbWVyZ2VfYWN0aW9uKCksIHMuKiwgdC4qOworU0VMRUNUICogRlJPTSBiYXNl X3RibCBPUkRFUiBCWSBhOworCiBFWFBMQUlOIChjb3N0cyBvZmYpIFVQREFURSByd192aWV3MiBT RVQgYT0zIFdIRVJFIGE9MjsKIEVYUExBSU4gKGNvc3RzIG9mZikgREVMRVRFIEZST00gcndfdmll dzIgV0hFUkUgYT0yOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDZjYTkzYjEuLmY3YjcwZGIKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE1NzUs NiArMTU3NSw3IEBAIE1lcmdlQXBwZW5kU3RhdGUKIE1lcmdlSm9pbgogTWVyZ2VKb2luQ2xhdXNl CiBNZXJnZUpvaW5TdGF0ZQorTWVyZ2VNYXRjaEtpbmQKIE1lcmdlUGF0aAogTWVyZ2VTY2FuU2Vs Q2FjaGUKIE1lcmdlU3RtdAo= --000000000000e6e8420613eb9350--