From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hPOch6O8; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id 353875A0265 for ; Wed, 17 Jun 2026 15:23:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781702586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lfpRJlMin+NWt7xjgoRzeNwas2f609oOdTBdvD7TbqA=; b=hPOch6O8NVhStP5kQPYtvf3wD6awDQ2Zf1ZBSsQVe03J2SlCETYx6cZpcEr5QZMazdd15H i1rs+x8BXS6MFecTNO6umlLC6rCM9dK6nDBuhpeElXOWfLWWcXpRt8UNhXRwRz702+NE2q XetA90bU2CzV5A30oRBeRm6SG5QyZ44= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-695-NAP9iDB2Nw2dsucMYJFLTA-1; Wed, 17 Jun 2026 09:23:02 -0400 X-MC-Unique: NAP9iDB2Nw2dsucMYJFLTA-1 X-Mimecast-MFC-AGG-ID: NAP9iDB2Nw2dsucMYJFLTA_1781702582 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 023E81800845; Wed, 17 Jun 2026 13:23:02 +0000 (UTC) Received: from anskuma-thinkpadp1gen7.bengluru.csb (unknown [10.74.64.105]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D2EBB180049F; Wed, 17 Jun 2026 13:22:58 +0000 (UTC) From: Anshu Kumari To: passt-dev@passt.top, anskuma@redhat.com, sbrivio@redhat.com Subject: [PATCH v4 3/4] dhcp: Add --dhcp-opt with option table and value parser Date: Wed, 17 Jun 2026 18:52:37 +0530 Message-ID: <20260617132243.1499556-4-anskuma@redhat.com> In-Reply-To: <20260617132243.1499556-1-anskuma@redhat.com> References: <20260617132243.1499556-1-anskuma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: -RBtTJWuF8DA4fJ6T2QzPRRvIHuw78r8X1CqVtR5uQ4_1781702582 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: HWCXIB2BQQIMWZBGWE24DYALYJAVMDKF X-Message-ID-Hash: HWCXIB2BQQIMWZBGWE24DYALYJAVMDKF X-MailFrom: anskuma@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: jmaloy@redhat.com, david@gibson.dropbear.id.au, lvivier@redhat.com X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: SW50cm9kdWNlIHRoZSAtLWRoY3Atb3B0IGZsYWcgdGhhdCBhbGxvd3Mgc2V0dGluZyBhcmJpdHJh cnkgREhDUA0Kb3B0aW9ucyBmcm9tIGNvbW1hbmQtbGluZSBpbiB0aGUgZm9ybSBbLS1kaGNwLW9w dCBDT0RFLFZBTFVFXS4NCg0KQWRkIGEgdHlwZSBsb29rdXAgdGFibGUgbWFwcGluZyBvcHRpb24g Y29kZXMgdG8gUkZDIDIxMzIgdmFsdWUgdHlwZXMNCihJUHY0LCBJUHY0IGxpc3QsIGludGVnZXIs IHN0cmluZykgYW5kIGRoY3Bfb3B0X3BhcnNlKCkgdG8gY29udmVydA0KQ0xJIHN0cmluZ3MgdG8g YmluYXJ5IHdpcmUgZm9ybWF0LiAgUGFyc2VkIG9wdGlvbnMgYXJlIHN0b3JlZCBpbg0Kc3RydWN0 IGN0eCBhbmQgaW5qZWN0ZWQgaW50byBESENQIHJlcGxpZXMuICBJZiB0aGUgc2FtZSBvcHRpb24g Y29kZQ0KaXMgZ2l2ZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIHdpbnMuDQoNCkxp bms6IGh0dHBzOi8vYnVncy5wYXNzdC50b3Avc2hvd19idWcuY2dpP2lkPTE5Mg0KU2lnbmVkLW9m Zi1ieTogQW5zaHUgS3VtYXJpIDxhbnNrdW1hQHJlZGhhdC5jb20+DQotLS0NCnY0Og0KICAtIFJl bmFtZWQgY3VzdG9tX29wdHMgdG8gZGhjcF9vcHRzLCAyNTYgZW50cmllcyBpbmRleGVkIGJ5IG9w dGlvbg0KICAgIGNvZGUsIHJlbW92ZWQgTUFYX0NVU1RPTV9ESENQX09QVFMgYW5kIGNvdW50IGZp ZWxkLg0KICAtIENoYW5nZWQgc3RyIGJ1ZmZlciBmcm9tIDI1NiB0byAyNTUgYnl0ZXMuDQogIC0g TW92ZWQgZnVuY3Rpb24gdG8gY29uZi5jIGFzIHN0YXRpYyBjb25mX2RoY3Bfb3B0aW9uKCksIHJl bmFtZWQNCiAgICBmcm9tIGRoY3BfYWRkX29wdGlvbigpLg0KICAtIE1hZGUgZGhjcF9vcHRfcGFy c2UoKSBub24tc3RhdGljLCBkZWNsYXJlZCBpbiBkaGNwLmgNCiAgLSBEcm9wcGVkIHZhbC9sZW4g ZnJvbSBjdHggc3RydWN0OyBjb25mX2RoY3Bfb3B0aW9uKCkgdmFsaWRhdGVzDQogICAgd2l0aCB0 ZW1wIGJ1ZmZlciwgZGhjcCgpIHBhcnNlcyBzdHIgZGlyZWN0bHkgaW50byBvcHRzW10gYXQNCiAg ICByZXBseSB0aW1lLg0KICAtIFJlcGxhY2VkIHN0cnRva19yKCkgKyAyNTYtYnl0ZSBidWZmZXIg d2l0aCBzdHJjc3BuKCkgKw0KICAgIElORVRfQUREUlNUUkxFTiBidWZmZXIuDQogIC0gQWRkZWQg REhDUF9PUFRfU0lOVDMyIGZvciBvcHRpb24gMiAoVGltZSBPZmZzZXQpLCB1c2VzIHN0cnRvbCgp DQogICAgcGVyIFJGQyAyMTMyIFNlY3Rpb24gOC4yLg0KICAtIEFsbCBlcnJvcnMgaW4gZGhjcF9v cHRfcGFyc2UoKSByZXR1cm4gLTEsIHJlbW92ZWQgZGllKCkgY2FsbHM7DQogICAgY2FsbGVyIGhh bmRsZXMgZXJyb3IgbWVzc2FnZSBjb25zaXN0ZW50bHkuDQogIC0gUmVtb3ZlZCByZWR1bmRhbnQg IXNsZW4gY2hlY2sgaW4gREhDUF9PUFRfU1RSIGNhc2UuDQogIC0gT21pdHRlZCBleHBsaWNpdCBh cnJheSBzaXplIGZvciBkaGNwX29wdF90eXBlc1tdLCBhcnJheWRkZWQgYm91bmRzDQogICAgY2hl Y2sgYmVmb3JlIGxvb2t1cC4NCiAgLSBBZGRlZCBlcnJubyA9IDAgKyBlcnJubyBjaGVjayBmb3Ig c3RydG91bCgpIGluIGNhc2UgMzQuDQogIC0gRml4ZWQgdXNhZ2UgdGV4dDogIlNldCBESENQIG9w dGlvbiBDT0RFIHRvIFZBTCIuDQogIC0gSW1wcm92ZWQgbWFuIHBhZ2U6IGFkZGVkIGZvcm1hdCBk ZXNjcmlwdGlvbiBhbmQgZXhhbXBsZXMNCg0KdjM6DQogIC0gUmVwbGFjZWQgREhDUF9PUFRfSU5U RUdFUiB3aXRoIHNlcGFyYXRlIERIQ1BfT1BUX0lOVDgvSU5UMTYvSU5UMzINCiAgICBlbnVtcywg cmVtb3ZlZCBkaGNwX29wdF9pbnRfd2lkdGhbXSBhcnJheS4NCiAgLSBTaGFyZWQgbG9naWMgYmV0 d2VlbiBESENQX09QVF9JUFY0IGFuZCBESENQX09QVF9JUFY0X0xJU1Qg4oCUIHBhcnNlDQogICAg Ym90aCBhcyBsaXN0LCBlcnJvciBpZiA+MSBpbiBzaW5nbGUgY2FzZS4NCiAgLSBBZGRlZCBlcnJu byA9IDAgYmVmb3JlIHN0cnRvdWwoKSBhbmQgY2hlY2sgYWZ0ZXIuDQogIC0gRml4ZWQgcmFuZ2Ug Y2hlY2s6IDFVTEwgPDwgKHdpZHRoICogOCkgZm9yIGFsbCB3aWR0aHMgaW5jbHVkaW5nDQogICAg d2lkdGg9PTQuDQogIC0gc3RybmNweSDihpIgbWVtY3B5IGZvciBESENQX09QVF9TVFIuDQogIC0g TW92ZWQgZW51bSB0byBkaGNwLmMgc2luY2Ugbm90IHVzZWQgaW4gb3RoZXIgZmlsZXMuDQogIC0g UmVtb3ZlZCBvcHRpb25zIDU1LCA2MSAoY2xpZW50LW9ubHkpLCAxMTkgKEROUyBjb21wcmVzc2lv biwgdXNlDQogICAgLS1kaGNwLXNlYXJjaCBpbnN0ZWFkKSwgMzMgKElQIHBhaXJzIG5vdCBzdXBw b3J0ZWQpLg0KICAtIERIQ1BfT1BUX1BBUlNFX0JVRiAxMDI0IOKGkiBjaGFyIHRtcFsyNTZdLg0K ICAtIFVwZ3JhZGVkIGRoY3BfYWRkX29wdGlvbigpIHRvIGNhbGwgZGhjcF9vcHRfcGFyc2UoKSBh bmQgcG9wdWxhdGUNCiAgICB2YWxbXS9sZW4uDQogIC0gQWxpZ25lZCBhcnJheSBlbnRyaWVzIGZv ciByZWFkYWJpbGl0eS4NCiAgLSBBZGRlZCB0YWIgYWZ0ZXIgQERIQ1BfT1BUX0lQVjRfTElTVDog aW4ga2VybmVsZG9jLg0KICAtIFJlamVjdCBlbXB0eSB2YWx1ZSBzdHJpbmdzIGJlZm9yZSBwYXJz aW5nDQogIC0gUmVqZWN0IGxlYWRpbmcvdHJhaWxpbmcvY29uc2VjdXRpdmUgY29tbWFzIGluIElQ IGxpc3QgdmFsdWVzLg0KDQp2MjoNCiAgLSBSZXBsYWNlZCBzdHJ1Y3QgbG9va3VwIHRhYmxlICsg ZGhjcF9vcHRfdHlwZV9sb29rdXAoKSBmdW5jdGlvbiB3aXRoIGZsYXQgZGhjcF9vcHRfdHlwZXNb MjU2XSBhcnJheSBpbmRleGVkIGJ5IGNvZGUuDQogIC0gQ29uc29saWRhdGVkIERIQ1BfT1BUX1VJ TlQ4L1VJTlQxNi9VSU5UMzIgaW50byBzaW5nbGUgREhDUF9PUFRfSU5URUdFUiB3aXRoIGRoY3Bf b3B0X2ludF93aWR0aFsyNTZdIHRhYmxlLg0KICAtIERyb3BwZWQgREhDUF9PUFRfUk9VVEVTIC8g b3B0aW9uIDEyMSBlbnRpcmVseS4NCiAgLSBBZGRlZCBrZXJuZWxkb2MgZm9yIGVudW0gZGhjcF9v cHRfdHlwZSB2YWx1ZXMuDQogIC0gUmVtb3ZlZCBjdXJseSBicmFjZXMgZnJvbSBzd2l0Y2ggY2Fz ZXMsIGRlY2xhcmF0aW9ucyBiZWZvcmUgc3dpdGNoLg0KICAtIEFkZGVkIG5ld2xpbmVzIGJlZm9y ZSByZXR1cm4gc3RhdGVtZW50cy4NCiAgLSBDaGFuZ2VkIElQIGxpc3QgZGVsaW1pdGVyIGZyb20g c3BhY2UgdG8gY29tbWEgKC0tZGhjcC1vcHQgNiwxLjEuMS4xLDguOC44LjgpLg0KICAtIERlZmlu ZWQgREhDUF9PUFRfUEFSU0VfQlVGIGNvbnN0YW50IGZvciBiYXJlIDEwMjQuDQogIC0gQWRkZWQg bGVuIGFuZCB2YWxbMjU1XSBmaWVsZHMgdG8gc3RydWN0IGhlcmUgKG1vdmVkIGZyb20gcGF0Y2gg MSkuDQogIC0gQWRkZWQga2VybmVsZG9jIGZvciBAY3VzdG9tX29wdHMubGVuIGFuZCBAY3VzdG9t X29wdHMudmFsLg0KICAtIFdpcmVkIGRoY3Bfb3B0X3BhcnNlKCkgaW50byBjYXNlIDMyICgtLWRo Y3AtYm9vdCkgdG8gcG9wdWxhdGUgdmFsL2xlbi4NCi0tLQ0KIGNvbmYuYyAgfCAgNDUgKysrKysr KysrKysrLQ0KIGRoY3AuYyAgfCAxOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysNCiBkaGNwLmggIHwgICAyICsNCiBwYXNzdC4xIHwgIDQy ICsrKysrKysrKysrKysNCiBwYXNzdC5oIHwgICA2ICsrDQogNSBmaWxlcyBjaGFuZ2VkLCAyODUg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KDQpkaWZmIC0tZ2l0IGEvY29uZi5jIGIvY29u Zi5jDQppbmRleCBjZDA1YWRmLi44MzZiMjk3IDEwMDY0NA0KLS0tIGEvY29uZi5jDQorKysgYi9j b25mLmMNCkBAIC00Nyw2ICs0Nyw3IEBADQogI2luY2x1ZGUgImxpbmVyZWFkLmgiDQogI2luY2x1 ZGUgImlzb2xhdGlvbi5oIg0KICNpbmNsdWRlICJsb2cuaCINCisjaW5jbHVkZSAiZGhjcC5oIg0K ICNpbmNsdWRlICJ2aG9zdF91c2VyLmgiDQogI2luY2x1ZGUgImVwb2xsX2N0bC5oIg0KICNpbmNs dWRlICJjb25mLmgiDQpAQCAtNjE2LDcgKzYxNyw4IEBAIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0 IGNoYXIgKm5hbWUsIEZJTEUgKmYsIGludCBzdGF0dXMpDQogCQkiICAtUywgLS1zZWFyY2ggTElT VAlTcGFjZS1zZXBhcmF0ZWQgbGlzdCwgc2VhcmNoIGRvbWFpbnNcbiINCiAJCSIgICAgYSBzaW5n bGUsIGVtcHR5IG9wdGlvbiBkaXNhYmxlcyB0aGUgRE5TIHNlYXJjaCBsaXN0XG4iDQogCQkiICAt SCwgLS1ob3N0bmFtZSBOQU1FIAlIb3N0bmFtZSB0byBjb25maWd1cmUgY2xpZW50IHdpdGhcbiIN Ci0JCSIgIC0tZnFkbiBOQU1FCQlGUUROIHRvIGNvbmZpZ3VyZSBjbGllbnQgd2l0aFxuIik7DQor CQkiICAtLWZxZG4gTkFNRQkJRlFETiB0byBjb25maWd1cmUgY2xpZW50IHdpdGhcbiINCisJCSIg IC0tZGhjcC1vcHQgQ09ERSxWQUwJU2V0IERIQ1Agb3B0aW9uIENPREUgdG8gVkFMXG4iKTsNCiAJ aWYgKHN0cnN0cihuYW1lLCAicGFzdGEiKSkNCiAJCUZQUklOVEYoZiwgIiAgICBkZWZhdWx0OiBk b24ndCB1c2UgYW55IHNlYXJjaCBsaXN0XG4iKTsNCiAJZWxzZQ0KQEAgLTg0NCw2ICs4NDYsMTAg QEAgc3RhdGljIHZvaWQgY29uZl9wcmludChjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KIAkJCWluZm8o IiAgICByb3V0ZXI6ICVzIiwNCiAJCQkgICAgIGluZXRfbnRvcChBRl9JTkVULCAmYy0+aXA0Lmd1 ZXN0X2d3LA0KIAkJCQkgICAgICAgYnVmLCBzaXplb2YoYnVmKSkpOw0KKwkJCWZvciAoaSA9IDE7 IGkgPCAyNTU7IGkrKykNCisJCQkJaWYgKCpjLT5kaGNwX29wdHNbaV0uc3RyKQ0KKwkJCQkJaW5m bygiICAgIG9wdGlvbiAldTogJXMiLCBpLA0KKwkJCQkJICAgICBjLT5kaGNwX29wdHNbaV0uc3Ry KTsNCiAJCX0NCiANCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGMtPmlwNC5kbnMpOyBp KyspIHsNCkBAIC0xMTUwLDYgKzExNTYsMjUgQEAgc3RhdGljIHZvaWQgY29uZl9zb2NrX2xpc3Rl bihjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KIAkJZGllX3BlcnJvcigiQ291bGRuJ3QgYWRkIGNvbmZp Z3VyYXRpb24gc29ja2V0IHRvIGVwb2xsIik7DQogfQ0KIA0KKy8qKg0KKyAqIGNvbmZfZGhjcF9v cHRpb24oKSAtIFNldCB2YWx1ZSBmb3IgYSBESENQIG9wdGlvbiBpbiBjb25maWd1cmF0aW9uDQor ICogQGM6CQlFeGVjdXRpb24gY29udGV4dA0KKyAqIEBjb2RlOglESENQIG9wdGlvbiBjb2RlDQor ICogQHZhbF9zdHI6CVZhbHVlIHN0cmluZyBmcm9tIGNvbW1hbmQgbGluZQ0KKyAqLw0KK3N0YXRp YyB2b2lkIGNvbmZfZGhjcF9vcHRpb24oc3RydWN0IGN0eCAqYywgdWludDhfdCBjb2RlLCBjb25z dCBjaGFyICp2YWxfc3RyKQ0KK3sNCisJdWludDhfdCB0bXBbMjU1XTsNCisNCisJaWYgKGRoY3Bf b3B0X3BhcnNlKGNvZGUsIHZhbF9zdHIsIHRtcCwgc2l6ZW9mKHRtcCkpIDwgMCkNCisJCWRpZSgi SW52YWxpZCB2YWx1ZSBmb3IgREhDUCBvcHRpb24gJXU6ICVzIiwgY29kZSwgdmFsX3N0cik7DQor DQorCWlmIChzbnByaW50Zl9jaGVjayhjLT5kaGNwX29wdHNbY29kZV0uc3RyLA0KKwkJCSAgIHNp emVvZihjLT5kaGNwX29wdHNbMF0uc3RyKSwNCisJCQkgICAiJXMiLCB2YWxfc3RyKSkNCisJCWRp ZSgiREhDUCBvcHRpb24gdmFsdWUgdG9vIGxvbmc6ICVzIiwgdmFsX3N0cik7DQorfQ0KKw0KIC8q Kg0KICAqIGNvbmYoKSAtIFByb2Nlc3MgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhbmQgc2V0IGNv bmZpZ3VyYXRpb24NCiAgKiBAYzoJCUV4ZWN1dGlvbiBjb250ZXh0DQpAQCAtMTIzMyw2ICsxMjU4 LDcgQEAgdm9pZCBjb25mKHN0cnVjdCBjdHggKmMsIGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJ CXsibWlncmF0ZS1uby1saW5nZXIiLCBub19hcmd1bWVudCwJTlVMTCwJCTMwIH0sDQogCQl7InN0 YXRzIiwgcmVxdWlyZWRfYXJndW1lbnQsCQlOVUxMLAkJMzEgfSwNCiAJCXsiY29uZi1wYXRoIiwJ cmVxdWlyZWRfYXJndW1lbnQsCU5VTEwsCQknYycgfSwNCisJCXsiZGhjcC1vcHQiLCByZXF1aXJl ZF9hcmd1bWVudCwJCU5VTEwsCQkzNCB9LA0KIAkJeyAwIH0sDQogCX07DQogCWNvbnN0IGNoYXIg Km9wdHN0cmluZyA9ICIrZHFmZWw6aHM6YzpGOkk6cDpQOm06YTpuOk06ZzppOm86RDpTOkg6NDYx dDp1OlQ6VToiOw0KQEAgLTEyNDgsMTAgKzEyNzQsMTMgQEAgdm9pZCBjb25mKHN0cnVjdCBjdHgg KmMsIGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJdWludDhfdCBwcmVmaXhfbGVuX2Zyb21fb3B0 ID0gMDsNCiAJdW5zaWduZWQgaW50IGlmaTQgPSAwLCBpZmk2ID0gMDsNCiAJY29uc3QgY2hhciAq bG9nZmlsZSA9IE5VTEw7DQorCXVuc2lnbmVkIGxvbmcgb3B0Y29kZTsNCiAJY2hhciAqcnVuYXMg PSBOVUxMOw0KIAlzaXplX3QgbG9nc2l6ZSA9IDA7DQorCWNvbnN0IGNoYXIgKmNvbW1hOw0KIAls b25nIGZkX3RhcF9vcHQ7DQogCWludCBuYW1lLCByZXQ7DQorCWNoYXIgKmVuZDsNCiAJdWlkX3Qg dWlkOw0KIAlnaWRfdCBnaWQ7DQogDQpAQCAtMTQ2Nyw2ICsxNDk2LDIwIEBAIHZvaWQgY29uZihz dHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCQkJCWRpZSgiQ2FuJ3QgZGlz cGxheSBzdGF0aXN0aWNzIGlmIG5vdCBydW5uaW5nIGluIGZvcmVncm91bmQiKTsNCiAJCQljLT5z dGF0cyA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDApOw0KIAkJCWJyZWFrOw0KKwkJY2FzZSAzNDoN CisJCQljb21tYSA9IHN0cmNocihvcHRhcmcsICcsJyk7DQorCQkJaWYgKCFjb21tYSkNCisJCQkJ ZGllKCItLWRoY3Atb3B0IHJlcXVpcmVzIENPREUsVkFMVUUgZm9ybWF0Iik7DQorDQorCQkJZXJy bm8gPSAwOw0KKwkJCW9wdGNvZGUgPSBzdHJ0b3VsKG9wdGFyZywgJmVuZCwgMCk7DQorCQkJaWYg KGVuZCAhPSBjb21tYSB8fCBlcnJubyB8fA0KKwkJCSAgICBvcHRjb2RlIDwgMSB8fCBvcHRjb2Rl ID4gMjU0KQ0KKwkJCQlkaWUoIkRIQ1Agb3B0aW9uIGNvZGUgbXVzdCBiZSAxLTI1NDogJXMiLA0K KwkJCQkgICAgb3B0YXJnKTsNCisNCisJCQljb25mX2RoY3Bfb3B0aW9uKGMsIG9wdGNvZGUsIGNv bW1hICsgMSk7DQorCQkJYnJlYWs7DQogCQljYXNlICdkJzoNCiAJCQljLT5kZWJ1ZyA9IDE7DQog CQkJYy0+cXVpZXQgPSAwOw0KZGlmZiAtLWdpdCBhL2RoY3AuYyBiL2RoY3AuYw0KaW5kZXggNzg3 OTBkOC4uNDdiYjUyNCAxMDA2NDQNCi0tLSBhL2RoY3AuYw0KKysrIGIvZGhjcC5jDQpAQCAtMjMs NiArMjMsNyBAQA0KICNpbmNsdWRlIDx1bmlzdGQuaD4NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQog I2luY2x1ZGUgPGxpbWl0cy5oPg0KKyNpbmNsdWRlIDxlcnJuby5oPg0KIA0KICNpbmNsdWRlICJ1 dGlsLmgiDQogI2luY2x1ZGUgImlwLmgiDQpAQCAtMTMwLDYgKzEzMSwxODkgQEAgc3RydWN0IG1z ZyB7DQogCXVpbnQ4X3Qgb1tPUFRfTUFYICsgMSAvKiBFbmQgb3B0aW9uICovIF07DQogfSBfX2F0 dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7DQogDQorLyoqDQorICogZW51bSBkaGNwX29wdF90eXBl IC0gREhDUCBvcHRpb24gdmFsdWUgdHlwZXMgcGVyIFJGQyAyMTMyDQorICogQERIQ1BfT1BUX05P TkU6CVVuc3VwcG9ydGVkIG9yIHVua25vd24gb3B0aW9uDQorICogQERIQ1BfT1BUX1NUUjoJVmFy aWFibGUtbGVuZ3RoIHN0cmluZw0KKyAqIEBESENQX09QVF9JUFY0OglTaW5nbGUgSVB2NCBhZGRy ZXNzDQorICogQERIQ1BfT1BUX0lQVjRfTElTVDoJTXVsdGlwbGUgSVB2NCBhZGRyZXNzZXMsIGNv bW1hLXNlcGFyYXRlZA0KKyAqIEBESENQX09QVF9JTlQ4OglVbnNpZ25lZCA4LWJpdCBpbnRlZ2Vy DQorICogQERIQ1BfT1BUX0lOVDE2OglVbnNpZ25lZCAxNi1iaXQgaW50ZWdlcg0KKyAqIEBESENQ X09QVF9JTlQzMjoJVW5zaWduZWQgMzItYml0IGludGVnZXINCisgKiBAREhDUF9PUFRfU0lOVDMy OglTaWduZWQgMzItYml0IGludGVnZXINCisgKi8NCitlbnVtIGRoY3Bfb3B0X3R5cGUgew0KKwlE SENQX09QVF9OT05FLA0KKwlESENQX09QVF9TVFIsDQorCURIQ1BfT1BUX0lQVjQsDQorCURIQ1Bf T1BUX0lQVjRfTElTVCwNCisJREhDUF9PUFRfSU5UOCwNCisJREhDUF9PUFRfSU5UMTYsDQorCURI Q1BfT1BUX0lOVDMyLA0KKwlESENQX09QVF9TSU5UMzIsDQorfTsNCisNCisvKioNCisgKiBkaGNw X29wdF90eXBlcyAtIE1hcHMgb3B0aW9uIGNvZGUgdG8gUkZDIDIxMzIgdmFsdWUgdHlwZSwgaW5k ZXhlZCBieSBjb2RlDQorICovDQorc3RhdGljIGNvbnN0IGVudW0gZGhjcF9vcHRfdHlwZSBkaGNw X29wdF90eXBlc1tdID0gew0KKwlbMV0gICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBTdWJuZXQgTWFz ayAqLw0KKwlbMl0gICA9IERIQ1BfT1BUX1NJTlQzMiwJLyogVGltZSBPZmZzZXQgKi8NCisJWzNd ICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIFJvdXRlciAqLw0KKwlbNF0gICA9IERIQ1BfT1BU X0lQVjRfTElTVCwJLyogVGltZSBTZXJ2ZXIgKi8NCisJWzVdICAgPSBESENQX09QVF9JUFY0X0xJ U1QsCS8qIE5hbWUgU2VydmVyICovDQorCVs2XSAgID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBE b21haW4gTmFtZSBTZXJ2ZXIgKi8NCisJWzddICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIExv ZyBTZXJ2ZXIgKi8NCisJWzhdICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIENvb2tpZSBTZXJ2 ZXIgKi8NCisJWzldICAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIExQUiBTZXJ2ZXIgKi8NCisJ WzEwXSAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIEltcHJlc3MgU2VydmVyICovDQorCVsxMV0g ID0gREhDUF9PUFRfSVBWNF9MSVNULAkvKiBSZXNvdXJjZSBMb2NhdGlvbiBTZXJ2ZXIgKi8NCisJ WzEyXSAgPSBESENQX09QVF9TVFIsCQkvKiBIb3N0IE5hbWUgKi8NCisJWzEzXSAgPSBESENQX09Q VF9JTlQxNiwJCS8qIEJvb3QgRmlsZSBTaXplICovDQorCVsxNV0gID0gREhDUF9PUFRfU1RSLAkJ LyogRG9tYWluIE5hbWUgKi8NCisJWzE2XSAgPSBESENQX09QVF9JUFY0LAkJLyogU3dhcCBTZXJ2 ZXIgKi8NCisJWzE3XSAgPSBESENQX09QVF9TVFIsCQkvKiBSb290IFBhdGggKi8NCisJWzE5XSAg PSBESENQX09QVF9JTlQ4LAkJLyogSVAgRm9yd2FyZGluZyAqLw0KKwlbMjNdICA9IERIQ1BfT1BU X0lOVDgsCQkvKiBEZWZhdWx0IElQIFRUTCAqLw0KKwlbMjZdICA9IERIQ1BfT1BUX0lOVDE2LAkJ LyogSW50ZXJmYWNlIE1UVSAqLw0KKwlbMjhdICA9IERIQ1BfT1BUX0lQVjQsCQkvKiBCcm9hZGNh c3QgQWRkcmVzcyAqLw0KKwlbMzddICA9IERIQ1BfT1BUX0lOVDgsCQkvKiBUQ1AgRGVmYXVsdCBU VEwgKi8NCisJWzM4XSAgPSBESENQX09QVF9JTlQzMiwJCS8qIFRDUCBLZWVwYWxpdmUgSW50ZXJ2 YWwgKi8NCisJWzQwXSAgPSBESENQX09QVF9TVFIsCQkvKiBOSVMgRG9tYWluIE5hbWUgKi8NCisJ WzQxXSAgPSBESENQX09QVF9JUFY0X0xJU1QsCS8qIE5JUyBTZXJ2ZXJzICovDQorCVs0Ml0gID0g REhDUF9PUFRfSVBWNF9MSVNULAkvKiBOVFAgU2VydmVycyAqLw0KKwlbNDRdICA9IERIQ1BfT1BU X0lQVjRfTElTVCwJLyogTmV0QklPUyBOYW1lIFNlcnZlciAqLw0KKwlbNTBdICA9IERIQ1BfT1BU X0lQVjQsCQkvKiBSZXF1ZXN0ZWQgSVAgQWRkcmVzcyAqLw0KKwlbNTFdICA9IERIQ1BfT1BUX0lO VDMyLAkJLyogSVAgQWRkcmVzcyBMZWFzZSBUaW1lICovDQorCVs1M10gID0gREhDUF9PUFRfSU5U OCwJCS8qIERIQ1AgTWVzc2FnZSBUeXBlICovDQorCVs1NF0gID0gREhDUF9PUFRfSVBWNCwJCS8q IFNlcnZlciBJZGVudGlmaWVyICovDQorCVs1N10gID0gREhDUF9PUFRfSU5UMTYsCQkvKiBNYXgg REhDUCBNZXNzYWdlIFNpemUgKi8NCisJWzU4XSAgPSBESENQX09QVF9JTlQzMiwJCS8qIFJlbmV3 YWwgKFQxKSBUaW1lICovDQorCVs1OV0gID0gREhDUF9PUFRfSU5UMzIsCQkvKiBSZWJpbmRpbmcg KFQyKSBUaW1lICovDQorCVs2MF0gID0gREhDUF9PUFRfU1RSLAkJLyogVmVuZG9yIENsYXNzIElk ZW50aWZpZXIgKi8NCisJWzY2XSAgPSBESENQX09QVF9TVFIsCQkvKiBURlRQIFNlcnZlciBOYW1l ICovDQorCVs2N10gID0gREhDUF9PUFRfU1RSLAkJLyogQm9vdGZpbGUgTmFtZSAqLw0KKwlbMjUy XSA9IERIQ1BfT1BUX1NUUiwJCS8qIFdQQUQgVVJMICovDQorfTsNCisNCisvKioNCisgKiBkaGNw X29wdF9wYXJzZSgpIC0gUGFyc2UgYSBESENQIG9wdGlvbiB2YWx1ZQ0KKyAqIEBjb2RlOglESENQ IG9wdGlvbiBjb2RlDQorICogQHN0cjoJVmFsdWUgc3RyaW5nIGZyb20gY29tbWFuZCBsaW5lDQor ICogQGJ1ZjoJT3V0cHV0IGJ1ZmZlciBmb3IgYmluYXJ5IHZhbHVlDQorICogQGJ1Zl9sZW46CVNp emUgb2Ygb3V0cHV0IGJ1ZmZlcg0KKyAqDQorICogUmV0dXJuOiBudW1iZXIgb2YgYnl0ZXMgd3Jp dHRlbiB0byBAYnVmLCBvciAtMSBvbiBlcnJvcg0KKyAqLw0KK2ludCBkaGNwX29wdF9wYXJzZSh1 aW50OF90IGNvZGUsIGNvbnN0IGNoYXIgKnN0ciwNCisJCSAgIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90 IGJ1Zl9sZW4pDQorew0KKwllbnVtIGRoY3Bfb3B0X3R5cGUgdHlwZTsNCisJdW5zaWduZWQgbG9u ZyB2YWw7DQorCXVuc2lnbmVkIGludCBpOw0KKwl1aW50OF90IHdpZHRoOw0KKwlzaXplX3Qgc2xl bjsNCisJY2hhciAqZW5kOw0KKwlpbnQgbGVuOw0KKw0KKwlpZiAoY29kZSA+PSBBUlJBWV9TSVpF KGRoY3Bfb3B0X3R5cGVzKSkNCisJCXJldHVybiAtMTsNCisNCisJdHlwZSA9IGRoY3Bfb3B0X3R5 cGVzW2NvZGVdOw0KKw0KKwlpZiAoISpzdHIpDQorCQlyZXR1cm4gLTE7DQorDQorCXN3aXRjaCAo dHlwZSkgew0KKwljYXNlIERIQ1BfT1BUX05PTkU6DQorCQlyZXR1cm4gLTE7DQorCWNhc2UgREhD UF9PUFRfSVBWNDoNCisJY2FzZSBESENQX09QVF9JUFY0X0xJU1Q6DQorCQlsZW4gPSAwOw0KKw0K KwkJd2hpbGUgKCpzdHIpIHsNCisJCQljaGFyIGlwYnVmW0lORVRfQUREUlNUUkxFTl07DQorCQkJ c2l6ZV90IGNodW5rOw0KKw0KKwkJCWNodW5rID0gc3RyY3NwbihzdHIsICIsIik7DQorDQorCQkJ aWYgKCFjaHVuayB8fCBjaHVuayA+PSBzaXplb2YoaXBidWYpKQ0KKwkJCQlyZXR1cm4gLTE7DQor DQorCQkJbWVtY3B5KGlwYnVmLCBzdHIsIGNodW5rKTsNCisJCQlpcGJ1ZltjaHVua10gPSAnXDAn Ow0KKw0KKwkJCWlmIChsZW4gKyAoaW50KXNpemVvZihzdHJ1Y3QgaW5fYWRkcikgPiAoaW50KWJ1 Zl9sZW4pDQorCQkJCXJldHVybiAtMTsNCisNCisJCQlpZiAoaW5ldF9wdG9uKEFGX0lORVQsIGlw YnVmLCBidWYgKyBsZW4pICE9IDEpDQorCQkJCXJldHVybiAtMTsNCisNCisJCQlsZW4gKz0gc2l6 ZW9mKHN0cnVjdCBpbl9hZGRyKTsNCisNCisJCQlpZiAodHlwZSA9PSBESENQX09QVF9JUFY0KSB7 DQorCQkJCWlmIChzdHJbY2h1bmtdID09ICcsJykNCisJCQkJCXJldHVybiAtMTsNCisJCQkJYnJl YWs7DQorCQkJfQ0KKw0KKwkJCXN0ciArPSBjaHVuayArIChzdHJbY2h1bmtdID09ICcsJyk7DQor CQl9DQorDQorCQlpZiAoIWxlbikNCisJCQlyZXR1cm4gLTE7DQorDQorCQlyZXR1cm4gbGVuOw0K KwljYXNlIERIQ1BfT1BUX0lOVDg6DQorCWNhc2UgREhDUF9PUFRfSU5UMTY6DQorCWNhc2UgREhD UF9PUFRfSU5UMzI6DQorCWNhc2UgREhDUF9PUFRfU0lOVDMyOg0KKwkJaWYgKHR5cGUgPT0gREhD UF9PUFRfSU5UOCkNCisJCQl3aWR0aCA9IDE7DQorCQllbHNlIGlmICh0eXBlID09IERIQ1BfT1BU X0lOVDE2KQ0KKwkJCXdpZHRoID0gMjsNCisJCWVsc2UNCisJCQl3aWR0aCA9IDQ7DQorDQorCQlp ZiAoYnVmX2xlbiA8IHdpZHRoKQ0KKwkJCXJldHVybiAtMTsNCisNCisJCWVycm5vID0gMDsNCisJ CWlmICh0eXBlID09IERIQ1BfT1BUX1NJTlQzMikgew0KKwkJCWxvbmcgc3ZhbDsNCisNCisJCQlz dmFsID0gc3RydG9sKHN0ciwgJmVuZCwgMCk7DQorCQkJaWYgKCplbmQgfHwgZXJybm8gfHwNCisJ CQkgICAgc3ZhbCA8IElOVDMyX01JTiB8fCBzdmFsID4gSU5UMzJfTUFYKQ0KKwkJCQlyZXR1cm4g LTE7DQorCQkJdmFsID0gKHVpbnQzMl90KXN2YWw7DQorCQl9IGVsc2Ugew0KKwkJCXZhbCA9IHN0 cnRvdWwoc3RyLCAmZW5kLCAwKTsNCisJCQlpZiAoKmVuZCB8fCBlcnJubyB8fA0KKwkJCSAgICB2 YWwgPj0gKDFVTEwgPDwgKHdpZHRoICogOCkpKQ0KKwkJCQlyZXR1cm4gLTE7DQorCQl9DQorDQor CQlmb3IgKGkgPSB3aWR0aDsgaSA+IDA7IGktLSkgew0KKwkJCWJ1ZltpIC0gMV0gPSB2YWwgJiAw eGZmOw0KKwkJCXZhbCA+Pj0gODsNCisJCX0NCisNCisJCXJldHVybiB3aWR0aDsNCisJY2FzZSBE SENQX09QVF9TVFI6DQorCQlzbGVuID0gc3RybGVuKHN0cik7DQorDQorCQlpZiAoc2xlbiA+PSBi dWZfbGVuKQ0KKwkJCXJldHVybiAtMTsNCisNCisJCW1lbWNweShidWYsIHN0ciwgc2xlbik7DQor DQorCQlyZXR1cm4gc2xlbjsNCisJfQ0KKw0KKwlyZXR1cm4gLTE7DQorfQ0KKw0KIC8qKg0KICAq IGZpbGxfb25lKCkgLSBGaWxsIGEgc2luZ2xlIG9wdGlvbiBpbnRvIGEgYnVmZmVyDQogICogQGJ1 ZjoJQnVmZmVyIHRvIHdyaXRlIG9wdGlvbg0KQEAgLTU0MSw2ICs3MjUsMTMgQEAgaW50IGRoY3Ao Y29uc3Qgc3RydWN0IGN0eCAqYywgc3RydWN0IGlvdl90YWlsICpkYXRhKQ0KIAlpZiAoIWMtPm5v X2RoY3BfZG5zX3NlYXJjaCkNCiAJCW9wdF9zZXRfZG5zX3NlYXJjaChjLCBPUFRfTUFYIC0gMyk7 DQogDQorCWZvciAoaSA9IDE7IGkgPCAyNTU7IGkrKykgew0KKwkJaWYgKCFjLT5kaGNwX29wdHNb aV0uc3RyWzBdKQ0KKwkJCWNvbnRpbnVlOw0KKwkJb3B0c1tpXS5zbGVuID0gZGhjcF9vcHRfcGFy c2UoaSwgYy0+ZGhjcF9vcHRzW2ldLnN0ciwNCisJCQkJCSAgICAgIG9wdHNbaV0ucywgc2l6ZW9m KG9wdHNbaV0ucykpOw0KKwl9DQorDQogCS8qIFJGQyAyMTMyLCBTZWN0aW9uIDkuNTogcHV0IGJv b3QgZmlsZSBuYW1lIGluIHRoZSAnZmlsZScgaGVhZGVyDQogCSAqIGZpZWxkLiAgU3VwcHJlc3Mg b3B0aW9uIDY3IGZyb20gdGhlIG9wdGlvbnMgYXJlYSBhbmQgcmVzZXJ2ZQ0KIAkgKiB0aGUgZmls ZSBmaWVsZCBmcm9tIG92ZXJsb2FkLg0KZGlmZiAtLWdpdCBhL2RoY3AuaCBiL2RoY3AuaA0KaW5k ZXggY2Q1MGM5OS4uY2M4ZDVkZCAxMDA2NDQNCi0tLSBhL2RoY3AuaA0KKysrIGIvZGhjcC5oDQpA QCAtOCw1ICs4LDcgQEANCiANCiBpbnQgZGhjcChjb25zdCBzdHJ1Y3QgY3R4ICpjLCBzdHJ1Y3Qg aW92X3RhaWwgKmRhdGEpOw0KIHZvaWQgZGhjcF9pbml0KHZvaWQpOw0KK2ludCBkaGNwX29wdF9w YXJzZSh1aW50OF90IGNvZGUsIGNvbnN0IGNoYXIgKnN0ciwNCisJCSAgIHVpbnQ4X3QgKmJ1Ziwg c2l6ZV90IGJ1Zl9sZW4pOw0KIA0KICNlbmRpZiAvKiBESENQX0ggKi8NCmRpZmYgLS1naXQgYS9w YXNzdC4xIGIvcGFzc3QuMQ0KaW5kZXggOTA4ZmQ0YS4uY2NkY2JiMiAxMDA2NDQNCi0tLSBhL3Bh c3N0LjENCisrKyBiL3Bhc3N0LjENCkBAIC00MzAsNiArNDMwLDQ4IEBAIFNlbmQgXGZJbmFtZVxm UiBhcyBESENQIG9wdGlvbiAxMiAoaG9zdG5hbWUpLg0KIEZRRE4gdG8gY29uZmlndXJlIHRoZSBj bGllbnQgd2l0aC4NCiBTZW5kIFxmSW5hbWVcZlIgYXMgQ2xpZW50IEZRRE46IERIQ1Agb3B0aW9u IDgxIGFuZCBESENQdjYgb3B0aW9uIDM5Lg0KIA0KKy5UUA0KKy5CUiBcLVwtZGhjcC1vcHQgIiAi IFxmSUNPREVcZlIsXGZJVkFMVUVcZlINCitTZXQgREhDUCBvcHRpb24gXGZJQ09ERVxmUiAoMVwt MjU0KSB0byBcZklWQUxVRVxmUi4gVGhlIHZhbHVlIGZvcm1hdCBkZXBlbmRzDQorb24gdGhlIG9w dGlvbiB0eXBlIGFuZCBpcyBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgb3B0aW9u IGNvZGUuDQorTXVsdGlwbGUgSVB2NCBhZGRyZXNzZXMgYXJlIGNvbW1hLXNlcGFyYXRlZC4NCitU aGlzIG9wdGlvbiBjYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzLiBJZiB0aGUgc2FtZSBv cHRpb24gY29kZSBpcw0KK2dpdmVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSB3aW5z LiBPcHRpb25zIHNldCB3aXRoDQorXGZCXC1cLWRoY3Atb3B0XGZSIG92ZXJyaWRlIGJ1aWx0LWlu IHZhbHVlcy4NCisuUFANCitFeGFtcGxlczoNCisubmYNCisgIFwtXC1kaGNwLW9wdCA2LDguOC44 LjgsNC40LjQuNA0KKyAgXC1cLWRoY3Atb3B0IDEyLG15aG9zdG5hbWUNCisuZmkNCisuUFANCitP bmx5IHRoZSBmb2xsb3dpbmcgb3B0aW9uIGNvZGVzIGFyZSBzdXBwb3J0ZWQgKHVuc3VwcG9ydGVk IGNvZGVzIGNhdXNlIGFuIGVycm9yKToNCisuUlMNCisuVFANCisuQiBJUHY0IGFkZHJlc3Mgb3B0 aW9ucw0KKzEgKFN1Ym5ldCBNYXNrKSwgMTYgKFN3YXAgU2VydmVyKSwgMjggKEJyb2FkY2FzdCBB ZGRyZXNzKSwgNTAgKFJlcXVlc3RlZCBJUCksDQorNTQgKFNlcnZlciBJZGVudGlmaWVyKQ0KKy5U UA0KKy5CIElQdjQgYWRkcmVzcyBsaXN0IG9wdGlvbnMgKGNvbW1hLXNlcGFyYXRlZCkNCiszIChS b3V0ZXIpLCA0IChUaW1lIFNlcnZlciksIDUgKE5hbWUgU2VydmVyKSwgNiAoRE5TKSwgNyAoTG9n IFNlcnZlciksDQorOCAoQ29va2llIFNlcnZlciksIDkgKExQUiBTZXJ2ZXIpLCAxMCAoSW1wcmVz cyBTZXJ2ZXIpLA0KKzExIChSZXNvdXJjZSBMb2NhdGlvbiBTZXJ2ZXIpLCA0MSAoTklTIFNlcnZl cnMpLA0KKzQyIChOVFAgU2VydmVycyksIDQ0IChOZXRCSU9TIE5hbWUgU2VydmVyKQ0KKy5UUA0K Ky5CIEludGVnZXIgb3B0aW9ucw0KKzIgKFRpbWUgT2Zmc2V0LCAzMi1iaXQpLCAxMyAoQm9vdCBG aWxlIFNpemUsIDE2LWJpdCksIDE5IChJUCBGb3J3YXJkaW5nLCA4LWJpdCksDQorMjMgKERlZmF1 bHQgSVAgVFRMLCA4LWJpdCksIDI2IChJbnRlcmZhY2UgTVRVLCAxNi1iaXQpLA0KKzM3IChUQ1Ag RGVmYXVsdCBUVEwsIDgtYml0KSwgMzggKFRDUCBLZWVwYWxpdmUgSW50ZXJ2YWwsIDMyLWJpdCks DQorNTEgKElQIEFkZHJlc3MgTGVhc2UgVGltZSwgMzItYml0KSwNCis1MyAoREhDUCBNZXNzYWdl IFR5cGUsIDgtYml0KSwgNTcgKE1heCBESENQIE1lc3NhZ2UgU2l6ZSwgMTYtYml0KSwNCis1OCAo UmVuZXdhbCBUaW1lLCAzMi1iaXQpLCA1OSAoUmViaW5kaW5nIFRpbWUsIDMyLWJpdCkNCisuVFAN CisuQiBTdHJpbmcgb3B0aW9ucw0KKzEyIChIb3N0IE5hbWUpLCAxNSAoRG9tYWluIE5hbWUpLCAx NyAoUm9vdCBQYXRoKSwgNDAgKE5JUyBEb21haW4gTmFtZSksDQorNjAgKFZlbmRvciBDbGFzcyBJ ZGVudGlmaWVyKSwgNjYgKFRGVFAgU2VydmVyIE5hbWUpLA0KKzY3IChCb290ZmlsZSBOYW1lKSwg MjUyIChXUEFEIFVSTCkNCisuUkUNCisNCiAuVFANCiAuQlIgXC10ICIsICIgXC1cLXRjcC1wb3J0 cyAiICIgXGZJc3BlYw0KIENvbmZpZ3VyZSBUQ1AgcG9ydCBmb3J3YXJkaW5nIHRvIGd1ZXN0IG9y IG5hbWVzcGFjZS4gXGZJc3BlY1xmUiBjYW4gYmUgb25lIG9mOg0KZGlmZiAtLWdpdCBhL3Bhc3N0 LmggYi9wYXNzdC5oDQppbmRleCAzYTA3Mjk0Li4xNWUyZDgzIDEwMDY0NA0KLS0tIGEvcGFzc3Qu aA0KKysrIGIvcGFzc3QuaA0KQEAgLTE4Miw2ICsxODIsOCBAQCBzdHJ1Y3QgaXA2X2N0eCB7DQog ICogQGRuc19zZWFyY2g6CQlETlMgc2VhcmNoIGxpc3QNCiAgKiBAaG9zdG5hbWU6CQlHdWVzdCBo b3N0bmFtZQ0KICAqIEBmcWRuOgkJR3Vlc3QgRlFETg0KKyAqIEBkaGNwX29wdHM6CQlVc2VyLXNw ZWNpZmllZCBESENQIG9wdGlvbnMgZnJvbSAtLWRoY3Atb3B0DQorICogQGRoY3Bfb3B0cy5zdHI6 CVN0cmluZyB2YWx1ZSBmcm9tIGNvbW1hbmQgbGluZQ0KICAqIEBpZmk2OgkJVGVtcGxhdGUgaW50 ZXJmYWNlIGZvciBJUHY2LCAtMTogbm9uZSwgMDogSVB2NiBkaXNhYmxlZA0KICAqIEBpcDY6CQlJ UHY2IGNvbmZpZ3VyYXRpb24NCiAgKiBAcGFzdGFfaWZuOgkJTmFtZSBvZiBuYW1lc3BhY2UgaW50 ZXJmYWNlIGZvciBwYXN0YQ0KQEAgLTI2NCw2ICsyNjYsMTAgQEAgc3RydWN0IGN0eCB7DQogCWNo YXIgaG9zdG5hbWVbUEFTU1RfTUFYRE5BTUVdOw0KIAljaGFyIGZxZG5bUEFTU1RfTUFYRE5BTUVd Ow0KIA0KKwlzdHJ1Y3Qgew0KKwkJY2hhciBzdHJbMjU1XTsNCisJfSBkaGNwX29wdHNbMjU2XTsN CisNCiAJaW50IGlmaTY7DQogCXN0cnVjdCBpcDZfY3R4IGlwNjsNCiANCi0tIA0KMi41NC4wDQoN Cg==