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=dlOXoduH; 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 210995A0269 for ; Tue, 06 Oct 2026 11:05:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1791277504; 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=iN66IHYSf41tFGgz/DHjAC2RQb1b+xyrXkg4btI4y2k=; b=dlOXoduHZgqgSWeTUaSuegL7fhVKmVm3ZuoeT8uexT5/G4yetgG1DkYYVxf5PlQwZn640O e2phaqLCj27hRdUV77789MD3y/u+VP0bRpP9piaLN8kKKdisMzC6TBZ/aiHDRz2i8Mpr/P QXky67Ej9lH8fCWIurgLqGt9GLuFTaE= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-nKKjjlWnPsmdMd-pCFayDg-1; Tue, 06 Oct 2026 05:05:02 -0400 X-MC-Unique: nKKjjlWnPsmdMd-pCFayDg-1 X-Mimecast-MFC-AGG-ID: nKKjjlWnPsmdMd-pCFayDg_1791277501 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A965E1953986 for ; Tue, 6 Oct 2026 09:05:01 +0000 (UTC) Received: from anskuma-thinkpadp1gen7.bengluru.csb (unknown [10.74.80.177]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A7E4330000E3; Tue, 6 Oct 2026 09:04:59 +0000 (UTC) From: Anshu Kumari To: sbrivio@redhat.com, passt-dev@passt.top Subject: [PATCH v4 1/2] dhcpv6: Add --dhcpv6-opt with option type table and value parser Date: Tue, 6 Oct 2026 14:34:52 +0530 Message-ID: <20261006090454.1474409-2-anskuma@redhat.com> In-Reply-To: <20261006090454.1474409-1-anskuma@redhat.com> References: <20261006090454.1474409-1-anskuma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ehg6-BNycv6UY6DMG_xVVHJYJLbrYCmAmXaj5Z2410U_1791277501 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-ID-Hash: WZXQN23X4KZWKJDM6JDKZ53COCCQOCZT X-Message-ID-Hash: WZXQN23X4KZWKJDM6JDKZ53COCCQOCZT 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: lvivier@redhat.com, anskuma@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: SW50cm9kdWNlIHRoZSAtLWRoY3B2Ni1vcHQgZmxhZyB0aGF0IGFsbG93cyBzZXR0aW5nIGFyYml0 cmFyeSBESENQdjYNCm9wdGlvbnMgZnJvbSBjb21tYW5kLWxpbmUgaW4gdGhlIGZvcm0gWy0tZGhj cHY2LW9wdCBDT0RFLFZBTFVFXS4NCg0KQWRkIGEgdHlwZSBsb29rdXAgdGFibGUgbWFwcGluZyBv cHRpb24gY29kZXMgdG8gdmFsdWUgdHlwZXMgKElQdjYsDQpJUHY2IGxpc3QsIGludGVnZXIsIHN0 cmluZywgdmVuZG9yIGNsYXNzLCBsZW5ndGgtcHJlZml4ZWQgc3RyaW5nDQpsaXN0KSBhbmQgZGhj cHY2X29wdF9wYXJzZSgpIHRvIGNvbnZlcnQgQ0xJIHN0cmluZ3MgdG8gYmluYXJ5IHdpcmUNCmZv cm1hdC4gSWYgdGhlIHNhbWUgb3B0aW9uIGNvZGUgaXMgZ2l2ZW4gbW9yZSB0aGFuIG9uY2UsIHRo ZQ0KbGFzdCB2YWx1ZSB3aW5zLg0KDQpMaW5rOiBodHRwczovL2J1Z3MucGFzc3QudG9wL3Nob3df YnVnLmNnaT9pZD0xOTINClNpZ25lZC1vZmYtYnk6IEFuc2h1IEt1bWFyaSA8YW5za3VtYUByZWRo YXQuY29tPg0KLS0tDQp2NDoNCiAgLSBUaGUgZGhjcHY2X29wdF9jb2RlIDwgMSBjaGVjayB3YXMg cmVwbGFjZWQgd2l0aCBwcm9wZXIgdmFsaWRhdGlvbjoNCiAgICBkaGNwdjZfb3B0X2NvZGUgPT0g MCB8fCBkaGNwdjZfb3B0X2NvZGUgPiBVSU5UMTZfTUFYIGluIGNvbmYuYw0KICAtIEFsbCB1aW50 MTZfdC91aW50MzJfdCB3cml0ZXMgdG8gYnl0ZSBidWZmZXJzIG5vdyB1c2UgaW50ZXJtZWRpYXRl DQogICAgdmFyaWFibGVzICsgbWVtY3B5KCkgaW5zdGVhZCBvZiBkaXJlY3QgcG9pbnRlciBjYXN0 cy4NCiAgLSBUaGUgREhDUFY2X09QVF9TVFIgY2FzZSBub3cgdXNlcyBzbGVuID4gYnVmX2xlbiBp bnN0ZWFkIG9mIHNsZW4gPj0gYnVmX2xlbi4NCiAgLSBPcHRpb24gMTcgKFZlbmRvci1zcGVjaWZp YyBJbmZvKSBleGNsdWRlZC4NCiAgLSBBIHNlcGFyYXRlIGNoYXIgb3B0YnVmWzUxMl0gd2FzIGFk ZGVkIGluIGNvbmZfcHJpbnQoKSBpbnN0ZWFkIG9mDQogICAgcmV1c2luZyB0aGUgc21hbGwgSU5B TllfQUREUlNUUkxFTi1zaXplZCBidWYgZm9yIG9wdGlvbiByZW5kZXJpbmcuDQogIC0gaW5ldF9u dG9wKCkgcmV0dXJuIHZhbHVlIGNoZWNrZWQuDQogIC0gVXNlcyBvZmYgKz0gc3RybGVuKGJ1ZiAr IG9mZikgaW5zdGVhZCBvZiBvZmYgPSBzdHJsZW4oYnVmKSBpbg0KICAgIHRoZSBJUHY2IGxpc3Qg cmVuZGVyaW5nIGxvb3AuDQogIC0gSXRlcmF0b3IgbWFjcm8gYWRkZWQg4oCUIGZvcl9lYWNoX2lu Nl9vZmYob2ZmLCBsZW4pLg0KICAtIFRoZSBhZGRyIGFuZCBhZiB2YXJpYWJsZXMgYXJlIGRlY2xh cmVkIGF0IGZ1bmN0aW9uIHNjb3BlDQogICAgaW4gZGhjcHY2X29wdF9wYXJzZSgpIHJhdGhlciB0 aGFuIGluc2lkZSBibG9jayB3cmFwcGVycy4NCiAgLSBzbnByaW50ZigpIGFsaWdubWVudCBhbmQg bGluZSBmb3JtYXR0aW5nLg0KDQp2MzoNCiAgLSBVc2UgcGFyc2VfdW5zaWduZWQoKSwgcGFyc2Vf bGl0ZXJhbCgpLCBwYXJzZV9lb2koKSBmcm9tIHBhcnNlLmMNCiAgICBpbnN0ZWFkIG9mIG1hbnVh bCBzdHJ0b3VsKCkvZXJybm8vc3RyY2hyKCkgaW4gZGhjcHY2X29wdF9wYXJzZSgpDQogICAgZm9y IFVJTlQgYW5kIFZFTkRPUl9DTEFTUyBjYXNlcy4NCiAgLSBTdG9yZSBvcHRpb25zIGFzIHByZS1w YXJzZWQgYmluYXJ5IGluIGEgc3RhdGljIGFycmF5IGluZGV4ZWQgYnkNCiAgICBvcHRpb24gY29k ZSwgaW5zdGVhZCBvZiBzdG9yaW5nIHJhdyBzdHJpbmdzLg0KICAtIEFkZCBkaGNwdjZfb3B0X3Rv X3N0cigpIHRvIHJlbmRlciBiaW5hcnkgb3B0aW9uIHZhbHVlcyBiYWNrIHRvDQogICAgcHJpbnRh YmxlIHN0cmluZ3MgZm9yIHN0YXJ0dXAgbG9nZ2luZyBpbiBjb25mX3ByaW50KCkuDQoNCnYyOg0K ICAtIFJlbmFtZWQgY3VzdG9tX3Y2b3B0cyB0byBkaGNwdjZfb3B0cywgTUFYX0NVU1RPTV9ESENQ VjZfT1BUUw0KICAgIHRvIE1BWF9ESENQVjZfT1BUUy4NCiAgLSBEcm9wcGVkIHZhbC9sZW4gZnJv bSBjdHggc3RydWN0Lg0KICAtIE1vdmVkIGRoY3B2Nl9hZGRfb3B0aW9uKCkgdG8gY29uZi5jIGFz IHN0YXRpYw0KICAgIGNvbmZfZGhjcHY2X29wdGlvbigpLg0KICAtIE1hZGUgZGhjcHY2X29wdF9w YXJzZSgpIG5vbi1zdGF0aWMsIGRlY2xhcmVkIGluIGRoY3B2Ni5oDQogIC0gT21pdHRlZCBleHBs aWNpdCBbMjU2XSBmcm9tIGRoY3B2Nl9vcHRfdHlwZXNbXS4NCiAgLSBNb3ZlZCBjaHVuayBkZWNs YXJhdGlvbiBpbnRvIHdoaWxlIGJsb2NrLg0KICAtIFJlbW92ZWQgcmVkdW5kYW50ICFzbGVuIGNo ZWNrIGluIERIQ1BWNl9PUFRfU1RSIGNhc2UuDQogIC0gQWxsIGVycm9ycyBpbiBkaGNwdjZfb3B0 X3BhcnNlKCkgcmV0dXJuIC0xLCByZW1vdmVkIGRpZSgpDQogICAgY2FsbHMuDQotLS0NCiBjb25m LmMgICB8ICAyNiArKysrLQ0KIGRoY3B2Ni5jIHwgMzM5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBkaGNwdjYuaCB8ICAgMiArDQogcGFz c3QuMSAgfCAgMzEgKysrKysNCiA0IGZpbGVzIGNoYW5nZWQsIDM5NyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pDQoNCmRpZmYgLS1naXQgYS9jb25mLmMgYi9jb25mLmMNCmluZGV4IGZhZjI2 ODE0Li5kYmE2MmJmOCAxMDA2NDQNCi0tLSBhL2NvbmYuYw0KKysrIGIvY29uZi5jDQpAQCAtNDcs NiArNDcsNyBAQA0KICNpbmNsdWRlICJsaW5lcmVhZC5oIg0KICNpbmNsdWRlICJpc29sYXRpb24u aCINCiAjaW5jbHVkZSAibG9nLmgiDQorI2luY2x1ZGUgImRoY3B2Ni5oIg0KICNpbmNsdWRlICJ2 aG9zdF91c2VyLmgiDQogI2luY2x1ZGUgImVwb2xsX2N0bC5oIg0KICNpbmNsdWRlICJjb25mLmgi DQpAQCAtNjMyLDcgKzYzMyw4IEBAIHN0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKm5hbWUs IEZJTEUgKmYsIGludCBzdGF0dXMpDQogCQkiICAtUywgLS1zZWFyY2ggTElTVAlTcGFjZS1zZXBh cmF0ZWQgbGlzdCwgc2VhcmNoIGRvbWFpbnNcbiINCiAJCSIgICAgYSBzaW5nbGUsIGVtcHR5IG9w dGlvbiBkaXNhYmxlcyB0aGUgRE5TIHNlYXJjaCBsaXN0XG4iDQogCQkiICAtSCwgLS1ob3N0bmFt ZSBOQU1FIAlIb3N0bmFtZSB0byBjb25maWd1cmUgY2xpZW50IHdpdGhcbiINCi0JCSIgIC0tZnFk biBOQU1FCQlGUUROIHRvIGNvbmZpZ3VyZSBjbGllbnQgd2l0aFxuIik7DQorCQkiICAtLWZxZG4g TkFNRQkJRlFETiB0byBjb25maWd1cmUgY2xpZW50IHdpdGhcbiINCisJCSIgIC0tZGhjcHY2LW9w dCBDT0RFLFZBTAlTZXQgREhDUHY2IG9wdGlvbiBDT0RFIHRvIFZBTFxuIik7DQogCWlmIChzdHJz dHIobmFtZSwgInBhc3RhIikpDQogCQlGUFJJTlRGKGYsICIgICAgZGVmYXVsdDogZG9uJ3QgdXNl IGFueSBzZWFyY2ggbGlzdFxuIik7DQogCWVsc2UNCkBAIC04MDAsNiArODAyLDcgQEAgZW51bSBw YXNzdF9tb2RlcyBjb25mX21vZGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCiBzdGF0aWMgdm9p ZCBjb25mX3ByaW50KGNvbnN0IHN0cnVjdCBjdHggKmMpDQogew0KIAljaGFyIGJ1ZltJTkFOWV9B RERSU1RSTEVOXTsNCisJY2hhciBvcHRidWZbNTEyXTsNCiAJaW50IGk7DQogDQogCWlmIChjLT5m ZF9jb250cm9sX2xpc3RlbiA+PSAwKQ0KQEAgLTkwMCw2ICs5MDMsMTAgQEAgc3RhdGljIHZvaWQg Y29uZl9wcmludChjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KIAkJaW5mbygiICAgIG91ciBsaW5rLWxv Y2FsOiAlcyIsDQogCQkgICAgIGluZXRfbnRvcChBRl9JTkVUNiwgJmMtPmlwNi5vdXJfdGFwX2xs LA0KIAkJCSAgICAgICBidWYsIHNpemVvZihidWYpKSk7DQorCQlmb3IgKGkgPSAxOyBpIDwgVUlO VDE2X01BWDsgaSsrKSB7DQorCQkJaWYgKGRoY3B2Nl9vcHRfdG9fc3RyKGksIG9wdGJ1Ziwgc2l6 ZW9mKG9wdGJ1ZikpKQ0KKwkJCQlpbmZvKCIgICAgb3B0aW9uICV1OiAlcyIsIGksIG9wdGJ1Zik7 DQorCQl9DQogDQogZG5zNjoNCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGMtPmlwNi5k bnMpOyBpKyspIHsNCkBAIC0xMzQ4LDYgKzEzNTUsNyBAQCB2b2lkIGNvbmYoc3RydWN0IGN0eCAq YywgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIAkJeyJzdGF0cyIsIHJlcXVpcmVkX2FyZ3VtZW50 LAkJTlVMTCwJCTMxIH0sDQogCQl7ImNvbmYtcGF0aCIsCXJlcXVpcmVkX2FyZ3VtZW50LAlOVUxM LAkJJ2MnIH0sDQogCQl7ImNocm9vdC1mYWxsYmFjayIsIG5vX2FyZ3VtZW50LAlOVUxMLCAJCTMy IH0sDQorCQl7ImRoY3B2Ni1vcHQiLCByZXF1aXJlZF9hcmd1bWVudCwJTlVMTCwJCTM1IH0sDQog CQl7IDAgfSwNCiAJfTsNCiAJY29uc3QgY2hhciAqb3B0c3RyaW5nID0gIitkcWZlbDpoczpjOkY6 STpwOlA6bTphOm46TTpnOmk6bzpEOlM6SDo0NjF0OnU6VDpVOiI7DQpAQCAtMTU4OSw2ICsxNTk3 LDIyIEBAIHZvaWQgY29uZihzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQog CQljYXNlIDMyOg0KIAkJCWMtPmNocm9vdF9mYWxsYmFjayA9IHRydWU7DQogCQkJYnJlYWs7DQor CQljYXNlIDM1OiB7DQorCQkJdW5zaWduZWQgbG9uZyBkaGNwdjZfb3B0X2NvZGU7DQorDQorCQkJ cCA9IG9wdGFyZzsNCisNCisJCQlpZiAoIXBhcnNlX3Vuc2lnbmVkKCZwLCAwLCAmZGhjcHY2X29w dF9jb2RlKSB8fA0KKwkJCSAgICAhcGFyc2VfbGl0ZXJhbCgmcCwgIiwiKSkNCisJCQkJZGllKCIt LWRoY3B2Ni1vcHQgcmVxdWlyZXMgQ09ERSxWQUxVRSBmb3JtYXQiKTsNCisNCisJCQlpZiAoZGhj cHY2X29wdF9jb2RlID09IDAgfHwNCisJCQkgICAgZGhjcHY2X29wdF9jb2RlID4gVUlOVDE2X01B WCkNCisJCQkJZGllKCJJbnZhbGlkIERIQ1B2NiBvcHRpb24gY29kZTogJXMiLCBvcHRhcmcpOw0K Kw0KKwkJCWRoY3B2Nl9zZXRfb3B0KGRoY3B2Nl9vcHRfY29kZSwgcCk7DQorCQkJYnJlYWs7DQor CQl9DQogCQljYXNlICdkJzoNCiAJCQljLT5kZWJ1ZyA9IDE7DQogCQkJYy0+cXVpZXQgPSAwOw0K ZGlmZiAtLWdpdCBhL2RoY3B2Ni5jIGIvZGhjcHY2LmMNCmluZGV4IDI5YzdlMzIwLi5hYmM0NTgx MyAxMDA2NDQNCi0tLSBhL2RoY3B2Ni5jDQorKysgYi9kaGNwdjYuYw0KQEAgLTMxLDYgKzMxLDgg QEANCiAjaW5jbHVkZSAicGFzc3QuaCINCiAjaW5jbHVkZSAidGFwLmgiDQogI2luY2x1ZGUgImxv Zy5oIg0KKyNpbmNsdWRlICJpbmFueS5oIg0KKyNpbmNsdWRlICJwYXJzZS5oIg0KIA0KIC8qKg0K ICAqIHN0cnVjdCBvcHRfaGRyIC0gREhDUHY2IG9wdGlvbiBoZWFkZXINCkBAIC02Myw2ICs2NSwx MSBAQCBzdHJ1Y3Qgb3B0X2hkciB7DQogI2RlZmluZSBPUFRfTUFYX1NJWkUJCUlQVjZfTUlOX01U VSAtIChzaXplb2Yoc3RydWN0IGlwdjZoZHIpICsgXA0KIAkJCQkJCVVEUF9NU0dfSERSX1NJWkUp DQogDQorI2RlZmluZSBmb3JfZWFjaF9pbjZfb2ZmKG9mZiwgbGVuKQkJCQkJXA0KKwlmb3IgKChv ZmYpID0gMDsJCQkJCQkJXA0KKwkgICAgIChvZmYpICsgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikg PD0gKHVuc2lnbmVkIGludCkobGVuKTsJXA0KKwkgICAgIChvZmYpICs9IHNpemVvZihzdHJ1Y3Qg aW42X2FkZHIpKQ0KKw0KIC8qKg0KICAqIHN0cnVjdCBvcHRfY2xpZW50X2lkIC0gREhDUHY2IENs aWVudCBJZGVudGlmaWVyIG9wdGlvbg0KICAqIEBoZHI6CQlPcHRpb24gaGVhZGVyDQpAQCAtMjc4 LDYgKzI4NSwzMzggQEAgc3RhdGljIHN0cnVjdCByZXNwX25vdF9vbl9saW5rX3Qgew0KIAl7IDAs IH0sDQogfTsNCiANCisvKioNCisgKiBlbnVtIGRoY3B2Nl9vcHRfdHlwZSAtIERIQ1B2NiBvcHRp b24gdmFsdWUgdHlwZXMNCisgKiBAREhDUFY2X09QVF9OT05FOgkJVW5zdXBwb3J0ZWQgb3IgdW5r bm93biBvcHRpb24NCisgKiBAREhDUFY2X09QVF9TVFI6CQlWYXJpYWJsZS1sZW5ndGggc3RyaW5n DQorICogQERIQ1BWNl9PUFRfSVBWNjoJCVNpbmdsZSBJUHY2IGFkZHJlc3MNCisgKiBAREhDUFY2 X09QVF9JUFY2X0xJU1Q6CU11bHRpcGxlIElQdjYgYWRkcmVzc2VzLCBjb21tYS1zZXBhcmF0ZWQN CisgKiBAREhDUFY2X09QVF9VSU5UODoJCVVuc2lnbmVkIDgtYml0IGludGVnZXINCisgKiBAREhD UFY2X09QVF9VSU5UMTY6CQlVbnNpZ25lZCAxNi1iaXQgaW50ZWdlcg0KKyAqIEBESENQVjZfT1BU X1VJTlQzMjoJCVVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyDQorICogQERIQ1BWNl9PUFRfVkVORE9S X0NMQVNTOglFbnRlcnByaXNlIG51bWJlciArIGxlbmd0aC1wcmVmaXhlZCBkYXRhDQorICogQERI Q1BWNl9PUFRfTEVOX1NUUl9MSVNUOglMZW5ndGgtcHJlZml4ZWQgc3RyaW5nIGxpc3QNCisgKi8N CitlbnVtIGRoY3B2Nl9vcHRfdHlwZSB7DQorCURIQ1BWNl9PUFRfTk9ORSwNCisJREhDUFY2X09Q VF9TVFIsDQorCURIQ1BWNl9PUFRfSVBWNiwNCisJREhDUFY2X09QVF9JUFY2X0xJU1QsDQorCURI Q1BWNl9PUFRfVUlOVDgsDQorCURIQ1BWNl9PUFRfVUlOVDE2LA0KKwlESENQVjZfT1BUX1VJTlQz MiwNCisJREhDUFY2X09QVF9WRU5ET1JfQ0xBU1MsDQorCURIQ1BWNl9PUFRfTEVOX1NUUl9MSVNU LA0KK307DQorDQorLyoqDQorICogZGhjcHY2X29wdF90eXBlcyAtIE1hcHMgREhDUHY2IG9wdGlv biBjb2RlIHRvIHZhbHVlIHR5cGUsIGluZGV4ZWQgYnkgY29kZQ0KKyAqIFJGQyA4NDE1IE9wdGlv bnM6IDcsIDE1LCAxNiwgMzIsIDgyLCA4Mw0KKyAqIFJGQyA1OTcwIE9wdGlvbnM6IDU5LCA2MA0K KyAqIFJGQyA0MDc1IE9wdGlvbnM6IDMxDQorICovDQorc3RhdGljIGNvbnN0IGVudW0gZGhjcHY2 X29wdF90eXBlIGRoY3B2Nl9vcHRfdHlwZXNbXSA9IHsNCisJWzddICAgPSBESENQVjZfT1BUX1VJ TlQ4LAkJLyogUHJlZmVyZW5jZSAqLw0KKwlbMTVdICA9IERIQ1BWNl9PUFRfTEVOX1NUUl9MSVNU LAkvKiBVc2VyIENsYXNzICovDQorCVsxNl0gID0gREhDUFY2X09QVF9WRU5ET1JfQ0xBU1MsCS8q IFZlbmRvciBDbGFzcyAqLw0KKwlbMzFdICA9IERIQ1BWNl9PUFRfSVBWNl9MSVNULAkJLyogU05U UCBTZXJ2ZXJzICovDQorCVszMl0gID0gREhDUFY2X09QVF9VSU5UMzIsCQkvKiBJbmZvcm1hdGlv biBSZWZyZXNoIFRpbWUgKi8NCisJWzU5XSAgPSBESENQVjZfT1BUX1NUUiwJCQkvKiBCb290IEZp bGUgVVJMICovDQorCVs2MF0gID0gREhDUFY2X09QVF9MRU5fU1RSX0xJU1QsCS8qIEJvb3QgRmls ZSBQYXJhbXMgKi8NCisJWzgyXSAgPSBESENQVjZfT1BUX1VJTlQzMiwJCS8qIFNPTF9NQVhfUlQg Ki8NCisJWzgzXSAgPSBESENQVjZfT1BUX1VJTlQzMiwJCS8qIElORl9NQVhfUlQgKi8NCit9Ow0K Kw0KKy8qKg0KKyAqIGRoY3B2Nl9vcHRfcGFyc2UoKSAtIFBhcnNlIGEgREhDUHY2IG9wdGlvbiB2 YWx1ZSBzdHJpbmcgaW50byBiaW5hcnkNCisgKiBAY29kZToJREhDUHY2IG9wdGlvbiBjb2RlDQor ICogQHN0cjoJVmFsdWUgc3RyaW5nIGZyb20gY29tbWFuZCBsaW5lDQorICogQGJ1ZjoJT3V0cHV0 IGJ1ZmZlciBmb3IgYmluYXJ5IHZhbHVlDQorICogQGJ1Zl9sZW46CVNpemUgb2Ygb3V0cHV0IGJ1 ZmZlcg0KKyAqDQorICogUmV0dXJuOiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byBAYnVmLCBv ciAtMSBvbiBlcnJvcg0KKyAqLw0KK3N0YXRpYyBpbnQgZGhjcHY2X29wdF9wYXJzZSh1aW50MTZf dCBjb2RlLCBjb25zdCBjaGFyICpzdHIsDQorCQkJICAgIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1 Zl9sZW4pDQorew0KKwllbnVtIGRoY3B2Nl9vcHRfdHlwZSB0eXBlOw0KKwl1bmlvbiBpbmFueV9h ZGRyIGFkZHI7DQorCXVuc2lnbmVkIGxvbmcgdmFsOw0KKwl1aW50MTZfdCBzbGVuX25ldDsNCisJ c2FfZmFtaWx5X3QgYWY7DQorCXVpbnQ4X3Qgd2lkdGg7DQorCXVpbnQzMl90IGVudDsNCisJc2l6 ZV90IHNsZW47DQorCWludCBsZW47DQorDQorCWlmICghKnN0cikNCisJCXJldHVybiAtMTsNCisN CisJaWYgKGNvZGUgPj0gQVJSQVlfU0laRShkaGNwdjZfb3B0X3R5cGVzKSkNCisJCXJldHVybiAt MTsNCisNCisJdHlwZSA9IGRoY3B2Nl9vcHRfdHlwZXNbY29kZV07DQorDQorCXN3aXRjaCAodHlw ZSkgew0KKwljYXNlIERIQ1BWNl9PUFRfTk9ORToNCisJCXJldHVybiAtMTsNCisJY2FzZSBESENQ VjZfT1BUX0lQVjY6DQorCWNhc2UgREhDUFY2X09QVF9JUFY2X0xJU1Q6DQorCQlsZW4gPSAwOw0K Kw0KKwkJZG8gew0KKwkJCWlmIChsZW4gKyBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSA+IGJ1Zl9s ZW4pDQorCQkJCXJldHVybiAtMTsNCisNCisJCQlpZiAoIXBhcnNlX2luYW55Xygmc3RyLCAmYWRk ciwgJmFmKSB8fCBhZiAhPSBBRl9JTkVUNikNCisJCQkJcmV0dXJuIC0xOw0KKw0KKwkJCW1lbWNw eShidWYgKyBsZW4sICZhZGRyLmE2LCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7DQorCQkJbGVu ICs9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpOw0KKw0KKwkJCWlmICh0eXBlID09IERIQ1BWNl9P UFRfSVBWNikNCisJCQkJYnJlYWs7DQorCQl9IHdoaWxlIChwYXJzZV9saXRlcmFsKCZzdHIsICIs IikpOw0KKw0KKwkJaWYgKCFsZW4gfHwgIXBhcnNlX2VvaShzdHIpKQ0KKwkJCXJldHVybiAtMTsN CisNCisJCXJldHVybiBsZW47DQorCWNhc2UgREhDUFY2X09QVF9VSU5UODoNCisJY2FzZSBESENQ VjZfT1BUX1VJTlQxNjoNCisJY2FzZSBESENQVjZfT1BUX1VJTlQzMjoNCisJCWlmICh0eXBlID09 IERIQ1BWNl9PUFRfVUlOVDgpDQorCQkJd2lkdGggPSAxOw0KKwkJZWxzZSBpZiAodHlwZSA9PSBE SENQVjZfT1BUX1VJTlQxNikNCisJCQl3aWR0aCA9IDI7DQorCQllbHNlDQorCQkJd2lkdGggPSA0 Ow0KKw0KKwkJaWYgKGJ1Zl9sZW4gPCB3aWR0aCkNCisJCQlyZXR1cm4gLTE7DQorDQorCQlpZiAo IXBhcnNlX3Vuc2lnbmVkKCZzdHIsIDAsICZ2YWwpIHx8ICFwYXJzZV9lb2koc3RyKSB8fA0KKwkJ ICAgIHZhbCA+PSAoMVVMTCA8PCAod2lkdGggKiA4KSkpDQorCQkJcmV0dXJuIC0xOw0KKw0KKwkJ aWYgKHR5cGUgPT0gREhDUFY2X09QVF9VSU5UMTYpIHsNCisJCQl1aW50MTZfdCB2MTYgPSBodG9u cyh2YWwpOw0KKwkJCW1lbWNweShidWYsICZ2MTYsIHNpemVvZih2MTYpKTsNCisJCX0gZWxzZSBp ZiAodHlwZSA9PSBESENQVjZfT1BUX1VJTlQzMikgew0KKwkJCXVpbnQzMl90IHYzMiA9IGh0b25s KHZhbCk7DQorCQkJbWVtY3B5KGJ1ZiwgJnYzMiwgc2l6ZW9mKHYzMikpOw0KKwkJfSBlbHNlIHsN CisJCQlidWZbMF0gPSB2YWw7DQorCQl9DQorDQorCQlyZXR1cm4gd2lkdGg7DQorCWNhc2UgREhD UFY2X09QVF9TVFI6DQorCQlzbGVuID0gc3RybGVuKHN0cik7DQorDQorCQlpZiAoc2xlbiA+IGJ1 Zl9sZW4pDQorCQkJcmV0dXJuIC0xOw0KKw0KKwkJbWVtY3B5KGJ1Ziwgc3RyLCBzbGVuKTsNCisN CisJCXJldHVybiBzbGVuOw0KKwljYXNlIERIQ1BWNl9PUFRfVkVORE9SX0NMQVNTOg0KKwkJaWYg KCFwYXJzZV91bnNpZ25lZCgmc3RyLCAwLCAmdmFsKSB8fA0KKwkJICAgICFwYXJzZV9saXRlcmFs KCZzdHIsICI6IikgfHwgdmFsID4gVUlOVDMyX01BWCkNCisJCQlyZXR1cm4gLTE7DQorDQorCQlz bGVuID0gc3RybGVuKHN0cik7DQorCQlpZiAoIXNsZW4pDQorCQkJcmV0dXJuIC0xOw0KKw0KKwkJ bGVuID0gc2l6ZW9mKHVpbnQzMl90KSArIHNpemVvZih1aW50MTZfdCkgKyBzbGVuOw0KKwkJaWYg KChzaXplX3QpbGVuID4gYnVmX2xlbikNCisJCQlyZXR1cm4gLTE7DQorDQorCQllbnQgPSBodG9u bCh2YWwpOw0KKwkJbWVtY3B5KGJ1ZiwgJmVudCwgc2l6ZW9mKGVudCkpOw0KKw0KKwkJc2xlbl9u ZXQgPSBodG9ucyhzbGVuKTsNCisJCW1lbWNweShidWYgKyBzaXplb2YodWludDMyX3QpLCAmc2xl bl9uZXQsIHNpemVvZihzbGVuX25ldCkpOw0KKw0KKwkJbWVtY3B5KGJ1ZiArIHNpemVvZih1aW50 MzJfdCkgKyBzaXplb2YodWludDE2X3QpLCBzdHIsIHNsZW4pOw0KKw0KKwkJcmV0dXJuIGxlbjsN CisJY2FzZSBESENQVjZfT1BUX0xFTl9TVFJfTElTVDoNCisJCWxlbiA9IDA7DQorDQorCQl3aGls ZSAoKnN0cikgew0KKwkJCXNsZW4gPSBzdHJjc3BuKHN0ciwgIiwiKTsNCisJCQlpZiAoIXNsZW4p DQorCQkJCXJldHVybiAtMTsNCisNCisJCQlpZiAobGVuICsgKGludCkoc2l6ZW9mKHVpbnQxNl90 KSArIHNsZW4pID4gKGludClidWZfbGVuKQ0KKwkJCQlyZXR1cm4gLTE7DQorDQorCQkJc2xlbl9u ZXQgPSBodG9ucyhzbGVuKTsNCisJCQltZW1jcHkoYnVmICsgbGVuLCAmc2xlbl9uZXQsIHNpemVv ZihzbGVuX25ldCkpOw0KKwkJCWxlbiArPSBzaXplb2YodWludDE2X3QpOw0KKw0KKwkJCW1lbWNw eShidWYgKyBsZW4sIHN0ciwgc2xlbik7DQorCQkJbGVuICs9IHNsZW47DQorDQorCQkJc3RyICs9 IHNsZW47DQorCQkJaWYgKCpzdHIgPT0gJywnKQ0KKwkJCQlzdHIrKzsNCisJCX0NCisNCisJCWlm ICghbGVuKQ0KKwkJCXJldHVybiAtMTsNCisNCisJCXJldHVybiBsZW47DQorCX0NCisNCisJcmV0 dXJuIC0xOw0KK30NCisNCisvKioNCisgKiBzdHJ1Y3QgZGhjcHY2X3VzZXJfb3B0cyAtIFVzZXIt c3BlY2lmaWVkIERIQ1B2NiBvcHRpb25zIGZyb20gLS1kaGNwdjYtb3B0DQorICogQHZhbDoJQmlu YXJ5IG9wdGlvbiB2YWx1ZSBpbiB3aXJlIGZvcm1hdA0KKyAqIEBsZW46CUxlbmd0aCBvZiBAdmFs IGluIGJ5dGVzLCAwIGlmIG5vdCBzZXQNCisgKi8NCitzdGF0aWMgc3RydWN0IHsNCisJdWludDhf dCB2YWxbVUlOVDE2X01BWF07DQorCWludCBsZW47DQorfSBkaGNwdjZfdXNlcl9vcHRzW0FSUkFZ X1NJWkUoZGhjcHY2X29wdF90eXBlcyldOw0KKw0KKy8qKg0KKyAqIGRoY3B2Nl9vcHRfdG9fc3Ry KCkgLSBSZW5kZXIgYSBiaW5hcnkgREhDUHY2IG9wdGlvbiB2YWx1ZSB0byBwcmludGFibGUgc3Ry aW5nDQorICogQGNvZGU6CURIQ1B2NiBvcHRpb24gY29kZQ0KKyAqIEBidWY6CU91dHB1dCBzdHJp bmcgYnVmZmVyDQorICogQGJ1Zl9sZW46CVNpemUgb2Ygb3V0cHV0IGJ1ZmZlcg0KKyAqDQorICog UmV0dXJuOiBwb2ludGVyIHRvIEBidWYgaWYgb3B0aW9uIGlzIHNldCwgTlVMTCBvdGhlcndpc2UN CisgKi8NCitjb25zdCBjaGFyICpkaGNwdjZfb3B0X3RvX3N0cih1aW50MTZfdCBjb2RlLCBjaGFy ICpidWYsIHNpemVfdCBidWZfbGVuKQ0KK3sNCisJZW51bSBkaGNwdjZfb3B0X3R5cGUgdHlwZTsN CisJdW5zaWduZWQgaW50IGk7DQorCXVpbnQxNl90IHNsZW47DQorCWludCBvZmYgPSAwOw0KKw0K KwlpZiAoY29kZSA+PSBBUlJBWV9TSVpFKGRoY3B2Nl91c2VyX29wdHMpIHx8DQorCSAgICAhZGhj cHY2X3VzZXJfb3B0c1tjb2RlXS5sZW4pDQorCQlyZXR1cm4gTlVMTDsNCisNCisJdHlwZSA9IGRo Y3B2Nl9vcHRfdHlwZXNbY29kZV07DQorDQorCXN3aXRjaCAodHlwZSkgew0KKwljYXNlIERIQ1BW Nl9PUFRfSVBWNjoNCisJY2FzZSBESENQVjZfT1BUX0lQVjZfTElTVDoNCisJCWZvcl9lYWNoX2lu Nl9vZmYoaSwgZGhjcHY2X3VzZXJfb3B0c1tjb2RlXS5sZW4pIHsNCisJCQlpZiAob2ZmKSB7DQor CQkJCWlmIChvZmYgKyAxID49IChpbnQpYnVmX2xlbikNCisJCQkJCXJldHVybiBOVUxMOw0KKwkJ CQlidWZbb2ZmKytdID0gJywnOw0KKwkJCX0NCisJCQlpZiAoIWluZXRfbnRvcChBRl9JTkVUNiwN CisJCQkJICAgICAgIGRoY3B2Nl91c2VyX29wdHNbY29kZV0udmFsICsgaSwNCisJCQkJICAgICAg IGJ1ZiArIG9mZiwgYnVmX2xlbiAtIG9mZikpDQorCQkJCXJldHVybiBOVUxMOw0KKwkJCW9mZiAr PSBzdHJsZW4oYnVmICsgb2ZmKTsNCisJCX0NCisJCXJldHVybiBidWY7DQorCWNhc2UgREhDUFY2 X09QVF9VSU5UODoNCisJY2FzZSBESENQVjZfT1BUX1VJTlQxNjoNCisJY2FzZSBESENQVjZfT1BU X1VJTlQzMjogew0KKwkJdWludDMyX3QgdmFsID0gMDsNCisNCisJCWlmIChkaGNwdjZfdXNlcl9v cHRzW2NvZGVdLmxlbiA9PSAxKSB7DQorCQkJdmFsID0gZGhjcHY2X3VzZXJfb3B0c1tjb2RlXS52 YWxbMF07DQorCQl9IGVsc2UgaWYgKGRoY3B2Nl91c2VyX29wdHNbY29kZV0ubGVuID09IDIpIHsN CisJCQl1aW50MTZfdCB2MTY7DQorCQkJbWVtY3B5KCZ2MTYsIGRoY3B2Nl91c2VyX29wdHNbY29k ZV0udmFsLCBzaXplb2YodjE2KSk7DQorCQkJdmFsID0gbnRvaHModjE2KTsNCisJCX0gZWxzZSBp ZiAoZGhjcHY2X3VzZXJfb3B0c1tjb2RlXS5sZW4gPT0gNCkgew0KKwkJCW1lbWNweSgmdmFsLCBk aGNwdjZfdXNlcl9vcHRzW2NvZGVdLnZhbCwgc2l6ZW9mKHZhbCkpOw0KKwkJCXZhbCA9IG50b2hs KHZhbCk7DQorCQl9DQorDQorCQkodm9pZClzbnByaW50ZihidWYsIGJ1Zl9sZW4sICIldSIsIHZh bCk7DQorCQlyZXR1cm4gYnVmOw0KKwl9DQorCWNhc2UgREhDUFY2X09QVF9TVFI6DQorCQkodm9p ZClzbnByaW50ZihidWYsIGJ1Zl9sZW4sICIlLipzIiwNCisJCSAgICAgICAgICAgICAgIGRoY3B2 Nl91c2VyX29wdHNbY29kZV0ubGVuLA0KKwkJICAgICAgICAgICAgICAgZGhjcHY2X3VzZXJfb3B0 c1tjb2RlXS52YWwpOw0KKwkJcmV0dXJuIGJ1ZjsNCisJY2FzZSBESENQVjZfT1BUX1ZFTkRPUl9D TEFTUzogew0KKwkJdWludDMyX3QgZW50Ow0KKwkJaW50IGRvZmY7DQorDQorCQlpZiAoZGhjcHY2 X3VzZXJfb3B0c1tjb2RlXS5sZW4gPA0KKwkJICAgIChpbnQpKHNpemVvZih1aW50MzJfdCkgKyBz aXplb2YodWludDE2X3QpKSkNCisJCQlyZXR1cm4gTlVMTDsNCisNCisJCW1lbWNweSgmZW50LCBk aGNwdjZfdXNlcl9vcHRzW2NvZGVdLnZhbCwgc2l6ZW9mKGVudCkpOw0KKwkJbWVtY3B5KCZzbGVu LCBkaGNwdjZfdXNlcl9vcHRzW2NvZGVdLnZhbCArIHNpemVvZih1aW50MzJfdCksDQorCQkgICAg ICAgc2l6ZW9mKHNsZW4pKTsNCisJCWRvZmYgPSBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVp bnQxNl90KTsNCisNCisJCSh2b2lkKXNucHJpbnRmKGJ1ZiwgYnVmX2xlbiwgIiV1OiUuKnMiLA0K KwkJICAgICAgICAgICAgICAgbnRvaGwoZW50KSwgbnRvaHMoc2xlbiksDQorCQkgICAgICAgICAg ICAgICBkaGNwdjZfdXNlcl9vcHRzW2NvZGVdLnZhbCArIGRvZmYpOw0KKwkJcmV0dXJuIGJ1ZjsN CisJfQ0KKwljYXNlIERIQ1BWNl9PUFRfTEVOX1NUUl9MSVNUOg0KKwkJb2ZmID0gMDsNCisJCWkg PSAwOw0KKw0KKwkJd2hpbGUgKGkgKyBzaXplb2YodWludDE2X3QpIDw9DQorCQkgICAgICAgKHVu c2lnbmVkIGludClkaGNwdjZfdXNlcl9vcHRzW2NvZGVdLmxlbikgew0KKwkJCW1lbWNweSgmc2xl biwgZGhjcHY2X3VzZXJfb3B0c1tjb2RlXS52YWwgKyBpLA0KKwkJCSAgICAgICBzaXplb2Yoc2xl bikpOw0KKwkJCXNsZW4gPSBudG9ocyhzbGVuKTsNCisJCQlpICs9IHNpemVvZih1aW50MTZfdCk7 DQorDQorCQkJaWYgKGkgKyBzbGVuID4gKHVuc2lnbmVkIGludClkaGNwdjZfdXNlcl9vcHRzW2Nv ZGVdLmxlbikNCisJCQkJYnJlYWs7DQorDQorCQkJaWYgKG9mZikgew0KKwkJCQlpZiAob2ZmICsg MSA+PSAoaW50KWJ1Zl9sZW4pDQorCQkJCQlyZXR1cm4gTlVMTDsNCisJCQkJYnVmW29mZisrXSA9 ICcsJzsNCisJCQl9DQorCQkJaWYgKG9mZiArIHNsZW4gPj0gKGludClidWZfbGVuKQ0KKwkJCQly ZXR1cm4gTlVMTDsNCisJCQltZW1jcHkoYnVmICsgb2ZmLCBkaGNwdjZfdXNlcl9vcHRzW2NvZGVd LnZhbCArIGksDQorCQkJICAgICAgIHNsZW4pOw0KKwkJCW9mZiArPSBzbGVuOw0KKwkJCWkgKz0g c2xlbjsNCisJCX0NCisJCWJ1ZltvZmZdID0gJ1wwJzsNCisJCXJldHVybiBidWY7DQorCWRlZmF1 bHQ6DQorCQlyZXR1cm4gTlVMTDsNCisJfQ0KK30NCisNCisvKioNCisgKiBkaGNwdjZfc2V0X29w dCgpIC0gUGFyc2UgYW5kIHN0b3JlIGEgdXNlci1zcGVjaWZpZWQgREhDUHY2IG9wdGlvbg0KKyAq IEBjb2RlOglESENQdjYgb3B0aW9uIGNvZGUNCisgKiBAdmFsX3N0cjoJVmFsdWUgc3RyaW5nIGZy b20gY29tbWFuZCBsaW5lDQorICovDQordm9pZCBkaGNwdjZfc2V0X29wdCh1aW50MTZfdCBjb2Rl LCBjb25zdCBjaGFyICp2YWxfc3RyKQ0KK3sNCisJaW50IHJldDsNCisNCisJaWYgKGNvZGUgPj0g QVJSQVlfU0laRShkaGNwdjZfb3B0X3R5cGVzKSB8fA0KKwkgICAgZGhjcHY2X29wdF90eXBlc1tj b2RlXSA9PSBESENQVjZfT1BUX05PTkUpDQorCQlkaWUoIkRIQ1B2NiBvcHRpb24gJXUgaXMgbm90 IHN1cHBvcnRlZCIsIGNvZGUpOw0KKw0KKwlyZXQgPSBkaGNwdjZfb3B0X3BhcnNlKGNvZGUsIHZh bF9zdHIsDQorCQkJICAgICAgIGRoY3B2Nl91c2VyX29wdHNbY29kZV0udmFsLA0KKwkJCSAgICAg ICBzaXplb2YoZGhjcHY2X3VzZXJfb3B0c1tjb2RlXS52YWwpKTsNCisJaWYgKHJldCA8IDApDQor CQlkaWUoIkludmFsaWQgdmFsdWUgZm9yIERIQ1B2NiBvcHRpb24gJXU6ICVzIiwgY29kZSwgdmFs X3N0cik7DQorDQorCWRoY3B2Nl91c2VyX29wdHNbY29kZV0ubGVuID0gcmV0Ow0KK30NCisNCiAv KioNCiAgKiBkaGNwdjZfb3B0KCkgLSBHZXQgb3B0aW9uIGZyb20gREhDUHY2IG1lc3NhZ2UNCiAg KiBAZGF0YToJQnVmZmVyIHdpdGggb3B0aW9ucywgc2V0IHRvIG1hdGNoaW5nIG9wdGlvbiBvbiBy ZXR1cm4NCmRpZmYgLS1naXQgYS9kaGNwdjYuaCBiL2RoY3B2Ni5oDQppbmRleCAxMDE1YTFhNy4u OTczYzQ3N2MgMTAwNjQ0DQotLS0gYS9kaGNwdjYuaA0KKysrIGIvZGhjcHY2LmgNCkBAIC05LDUg KzksNyBAQA0KIGludCBkaGNwdjYoc3RydWN0IGN0eCAqYywgc3RydWN0IGlvdl90YWlsICpkYXRh LA0KIAkgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyLCBjb25zdCBzdHJ1Y3QgaW42X2Fk ZHIgKmRhZGRyKTsNCiB2b2lkIGRoY3B2Nl9pbml0KGNvbnN0IHN0cnVjdCBjdHggKmMpOw0KK3Zv aWQgZGhjcHY2X3NldF9vcHQodWludDE2X3QgY29kZSwgY29uc3QgY2hhciAqdmFsX3N0cik7DQor Y29uc3QgY2hhciAqZGhjcHY2X29wdF90b19zdHIodWludDE2X3QgY29kZSwgY2hhciAqYnVmLCBz aXplX3QgYnVmX2xlbik7DQogDQogI2VuZGlmIC8qIERIQ1BWNl9IICovDQpkaWZmIC0tZ2l0IGEv cGFzc3QuMSBiL3Bhc3N0LjENCmluZGV4IDUzZTA3MmE5Li4yNDllZDVjZiAxMDA2NDQNCi0tLSBh L3Bhc3N0LjENCisrKyBiL3Bhc3N0LjENCkBAIC00NDAsNiArNDQwLDM3IEBAIFNlbmQgXGZJbmFt ZVxmUiBhcyBESENQIG9wdGlvbiAxMiAoaG9zdG5hbWUpLg0KIEZRRE4gdG8gY29uZmlndXJlIHRo ZSBjbGllbnQgd2l0aC4NCiBTZW5kIFxmSW5hbWVcZlIgYXMgQ2xpZW50IEZRRE46IERIQ1Agb3B0 aW9uIDgxIGFuZCBESENQdjYgb3B0aW9uIDM5Lg0KIA0KKy5UUA0KKy5CUiBcLVwtZGhjcHY2LW9w dCAiICIgXGZJQ09ERVxmUixcZklWQUxVRVxmUg0KK1NldCBESENQdjYgb3B0aW9uIFxmSUNPREVc ZlIgdG8gXGZJVkFMVUVcZlIuICBUaGUgdmFsdWUgZm9ybWF0IGRlcGVuZHMNCitvbiB0aGUgb3B0 aW9uIHR5cGUgYW5kIGlzIGRldGVybWluZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBvcHRpb24g Y29kZS4NCitNdWx0aXBsZSBJUHY2IGFkZHJlc3NlcyBhcmUgY29tbWEtc2VwYXJhdGVkLg0KK1Ro aXMgb3B0aW9uIGNhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMuICBJZiB0aGUgc2FtZSBv cHRpb24gY29kZSBpcw0KK2dpdmVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSB3aW5z Lg0KKy5SUw0KKy5UUA0KKy5CIFN0cmluZyBvcHRpb25zDQorNTkgKEJvb3QgRmlsZSBVUkwsIFJG QyA1OTcwKQ0KKy5UUA0KKy5CIExlbmd0aC1wcmVmaXhlZCBzdHJpbmcgbGlzdCBvcHRpb25zIChj b21tYS1zZXBhcmF0ZWQgZW50cmllcykNCisxNSAoVXNlciBDbGFzcywgUkZDIDg0MTUpLCA2MCAo Qm9vdCBGaWxlIFBhcmFtcywgUkZDIDU5NzApLg0KK0VhY2ggY29tbWEtc2VwYXJhdGVkIGVudHJ5 IGlzIGVuY29kZWQgd2l0aCBhIDItYnl0ZSBsZW5ndGggcHJlZml4Lg0KK0V4YW1wbGU6IFxmQlwt XC1kaGNwdjYtb3B0IDE1LGNsYXNzMSxjbGFzczJcZlIuDQorLlRQDQorLkIgVmVuZG9yIGNsYXNz IG9wdGlvbnMgKEVOVEVSUFJJU0U6REFUQSBmb3JtYXQpDQorMTYgKFZlbmRvciBDbGFzcywgUkZD IDg0MTUpLg0KK1ZBTFVFIGlzIFxmSUVOVEVSUFJJU0VcZlI6XGZJREFUQVxmUiB3aGVyZSBcZklF TlRFUlBSSVNFXGZSIGlzIHRoZSBJQU5BDQorUHJpdmF0ZSBFbnRlcnByaXNlIE51bWJlciBhbmQg XGZJREFUQVxmUiBpcyB0aGUgdmVuZG9yIGNsYXNzIHN0cmluZy4NCitFeGFtcGxlOiBcZkJcLVwt ZGhjcHY2LW9wdCAxNiwwOkhUVFBDbGllbnRcZlIgZm9yIFVFRkkgSFRUUCBCb290Lg0KKy5UUA0K Ky5CIElQdjYgYWRkcmVzcyBsaXN0IG9wdGlvbnMgKGNvbW1hLXNlcGFyYXRlZCkNCiszMSAoU05U UCBTZXJ2ZXJzKQ0KKy5UUA0KKy5CIEludGVnZXIgb3B0aW9ucw0KKzcgKFByZWZlcmVuY2UsIDgt Yml0KSwgMzIgKEluZm9ybWF0aW9uIFJlZnJlc2ggVGltZSwgMzItYml0KSwNCis4MiAoU09MX01B WF9SVCwgMzItYml0KSwgODMgKElORl9NQVhfUlQsIDMyLWJpdCkNCisuUkUNCisNCiAuVFANCiAu QlIgXC10ICIsICIgXC1cLXRjcC1wb3J0cyAiICIgXGZJc3BlYw0KIENvbmZpZ3VyZSBUQ1AgcG9y dCBmb3J3YXJkaW5nIHRvIGd1ZXN0IG9yIG5hbWVzcGFjZS4gXGZJc3BlY1xmUiBjYW4gYmUgZWl0 aGVyOg0KLS0gDQoyLjU1LjANCg0K