From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id B4EB61C043 for ; Thu, 5 Jul 2018 10:38:43 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jul 2018 01:38:41 -0700 Message-Id: <0590c7$22vgme@orsmga001.jf.intel.com> Date: 05 Jul 2018 01:38:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,311,1526367600"; d="scan'208";a="70238926" Received: from unknown (HELO [127.0.1.1]) ([10.240.176.154]) by orsmga001.jf.intel.com with ESMTP; 05 Jul 2018 01:38:24 -0700 Content-Type: multipart/alternative; boundary="===============6528417529507118550==" MIME-Version: 1.0 From: sys_stv@intel.com To: test-report@dpdk.org Cc: Subject: [dpdk-test-report] |FAILURE| pw37426[dpdk-dev] ethdev: return diagnostic when setting MAC address X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jul 2018 08:38:44 -0000 --===============6528417529507118550== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogSW50ZWwtY29tcGlsYXRpb24KVGVzdC1TdGF0dXM6IEZBSUxVUkUKaHR0cDov L2RwZGsub3JnL3BhdGNoLzM3NDI2CgpfYXBwbHkgaXNzdWVzXwoKU3VibWl0dGVyOiBPbGl2aWVy IE1hdHogPG9saXZpZXIubWF0ekA2d2luZC5jb20+CkRhdGU6IDIwMTgtMDQtMDYgMTU6MjE6NDgK RFBESyBnaXQgYmFzZWxpbmU6CglSZXBvOmRwZGstbWFzdGVyLCBDb21taXRJRDogMDVlMGVlZTAw MDFjYjE5NjcxZWI3ZThkM2RkNjg2ODBhNjk1ZmVhMgoJUmVwbzpkcGRrLW5leHQtZXZlbnRkZXYs IENvbW1pdElEOiBhYTljYmZjOGNkMWNhZTNlOTFlNDc0MWVkYzJhYWYzZDA4MDU2YTM5CglSZXBv OmRwZGstbmV4dC1uZXQsIENvbW1pdElEOiAwYjhiOTJlMzhjZDU1YzY4ZTRkYzQ5ZGQ1OTdmNjIz Mjc3OThlYzc0CglSZXBvOmRwZGstbmV4dC1jcnlwdG8sIENvbW1pdElEOiBhNTIwM2UwOGE1ZTli NmVlOWZmYmJmNGMxNTBiNzc3NmRlODMzYjA4CglSZXBvOmRwZGstbmV4dC12aXJ0aW8sIENvbW1p dElEOiA5Yjk1NGY5YzQ1NWE3NjMwNDYwMWRlYjg4ZTJkZjE1NDlkYzllMDlhCgoqUmVwbzogZHBk ay1tYXN0ZXIKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9yZWxfbm90ZXMvZGVwcmVjYXRpb24u cnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogIGJldHdlZW4gdGhlIFZGIHJlcHJl c2VudG9yIGFuZCB0aGUgVkYgb3IgdGhlIHBhcmVudCBQRi4gVGhvc2UgbmV3IGZpZWxkcwogIGFy ZSB0byBiZSBpbmNsdWRlZCBpbiBgYHJ0ZV9ldGhfZGV2X2luZm9gYCBzdHJ1Y3QuCgoqIGV0aGRl djogVGhlIHByb3RvdHlwZSBhbmQgdGhlIGJlaGF2aW9yIG9mCiAgYGBkZXZfb3BzLT5ldGhfbWFj X2FkZHJfc2V0KClgYCB3aWxsIGNoYW5nZSBpbiB2MTguMDUuIEEgcmV0dXJuIGNvZGUKICB3aWxs IGJlIGFkZGVkIHRvIG5vdGlmeSB0aGUgY2FsbGVyIGlmIGFuIGVycm9yIG9jY3VycmVkIGluIHRo ZSBQTUQuIEluCiAgYGBydGVfZXRoX2Rldl9kZWZhdWx0X21hY19hZGRyX3NldCgpYGAsIHRoZSBu ZXcgZGVmYXVsdCBNQUMgYWRkcmVzcwogIHdpbGwgYmUgY29waWVkIGluIGBgZGV2LT5kYXRhLT5t YWNfYWRkcnNbMF1gYCBvbmx5IGlmIHRoZSBvcGVyYXRpb24gaXMKICBzdWNjZXNzZnVsLiBUaGlz IG1vZGlmaWNhdGlvbiB3aWxsIG9ubHkgaW1wYWN0IHRoZSBQTURzLCBub3QgdGhlCiAgYXBwbGlj YXRpb25zLgoKKiBpNDBlOiBUaGUgZGVmYXVsdCBmbGV4aWJsZSBwYXlsb2FkIGNvbmZpZ3VyYXRp b24gd2hpY2ggZXh0cmFjdHMgdGhlIGZpcnN0IDE2CiAgYnl0ZXMgb2YgdGhlIHBheWxvYWQgZm9y IFJTUyB3aWxsIGJlIGRlcHJlY2F0ZWQgc3RhcnRpbmcgZnJvbSAxOC4wMi4gSWYKICByZXF1aXJl ZCB0aGUgcHJldmlvdXMgYmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgZXhpc3Rpbmcg ZmxvdwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9yZWxfbm90ZXMvZGVwcmVjYXRp b24ucnN0OjEzMQplcnJvcjogZG9jL2d1aWRlcy9yZWxfbm90ZXMvZGVwcmVjYXRpb24ucnN0OiBw YXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9hcmsvYXJrX2V0 aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50IGV0aF9hcmtf ZGV2X3N0YXRzX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCSAgc3RydWN0IHJ0ZV9l dGhfc3RhdHMgKnN0YXRzKTsKc3RhdGljIHZvaWQgZXRoX2Fya19kZXZfc3RhdHNfcmVzZXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwpzdGF0aWMgdm9pZCBldGhfYXJrX3NldF9kZWZhdWx0X21h Y19hZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCSBzdHJ1Y3QgZXRoZXJfYWRkciAq bWFjX2FkZHIpOwpzdGF0aWMgaW50IGV0aF9hcmtfbWFjYWRkcl9hZGQoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsCgkJCSAgICAgICBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIsCgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9hcmsvYXJrX2V0aGRldi5jOjY5CmVycm9yOiBkcml2 ZXJzL25ldC9hcmsvYXJrX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9hdmYvYXZmX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgpzdGF0aWMgaW50IGF2Zl9kZXZfcnNzX2hhc2hfY29uZl9nZXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsCgkJCQkgICAgIHN0cnVjdCBydGVfZXRoX3Jzc19jb25mICpyc3NfY29uZik7 CnN0YXRpYyBpbnQgYXZmX2Rldl9tdHVfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50 MTZfdCBtdHUpOwpzdGF0aWMgdm9pZCBhdmZfZGV2X3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCSBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpz dGF0aWMgaW50IGF2Zl9kZXZfcnhfcXVldWVfaW50cl9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsCgkJCQkJdWludDE2X3QgcXVldWVfaWQpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvYXZmL2F2Zl9ldGhkZXYuYzo2NQplcnJvcjogZHJpdmVycy9uZXQvYXZmL2F2Zl9l dGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv Ym54dC9ibnh0X2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJu IDA7Cn0KCnN0YXRpYyB2b2lkCmJueHRfc2V0X2RlZmF1bHRfbWFjX2FkZHJfb3Aoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICphZGRyKQp7CglzdHJ1Y3QgYm54dCAq YnAgPSAoc3RydWN0IGJueHQgKilkZXYtPmRhdGEtPmRldl9wcml2YXRlOwoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC9ibnh0X2V0aGRldi5jOjEzNzAKZXJyb3I6IGRyaXZl cnMvbmV0L2JueHQvYm54dF9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvYm9uZGluZy9ydGVfZXRoX2JvbmRfcG1kLmMuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKYm9uZF9ldGhkZXZf bWFjX2FkZHJlc3Nfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRk ciAqYWRkcikKLS0KCQlSVEVfQk9ORF9MT0coRVJSLCAiRmFpbGVkIHRvIHVwZGF0ZSBNQUMgYWRk cmVzcyIpOwp9Cgpjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgZGVmYXVsdF9kZXZfb3BzID0gewoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm9uZGluZy9ydGVfZXRoX2JvbmRfcG1k LmM6Mjg3MgplcnJvcjogZHJpdmVycy9uZXQvYm9uZGluZy9ydGVfZXRoX2JvbmRfcG1kLmM6IHBh dGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2Jl X2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnZv aWQgY3hnYmVfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRo ZXJfYWRkciAqYWRkcikKewoJc3RydWN0IHBvcnRfaW5mbyAqcGkgPSAoc3RydWN0IHBvcnRfaW5m byAqKShkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0g cGktPmFkYXB0ZXI7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9jeGdiZS9jeGdi ZV9ldGhkZXYuYzoxMDU4CmVycm9yOiBkcml2ZXJzL25ldC9jeGdiZS9jeGdiZV9ldGhkZXYuYzog cGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvY3hnYmUvY3hn YmVfcGZ2Zi5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp2b2lkIGN4Z2JlX2Rldl9w cm9taXNjdW91c19kaXNhYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2Rldik7CnZvaWQgY3hn YmVfZGV2X2FsbG11bHRpY2FzdF9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsK dm9pZCBjeGdiZV9kZXZfYWxsbXVsdGljYXN0X2Rpc2FibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpl dGhfZGV2KTsKdm9pZCBjeGdiZV9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs IHN0cnVjdCBldGhlcl9hZGRyICphZGRyKTsKaW50IGN4Z2JlX2Rldl9jb25maWd1cmUoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsKaW50IGN4Z2JlX2Rldl90eF9xdWV1ZV9zZXR1cChzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYsIHVpbnQxNl90IHF1ZXVlX2lkeCwKCQkJICAgICB1aW50 MTZfdCBuYl9kZXNjLCB1bnNpZ25lZCBpbnQgc29ja2V0X2lkLAoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVfcGZ2Zi5oOjE2CmVycm9yOiBkcml2ZXJzL25ldC9j eGdiZS9jeGdiZV9wZnZmLmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L2RwYWEvZHBhYV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKCWZtYW5faWZfY2xlYXJfbWFjX2FkZHIoZHBhYV9pbnRmLT5maWYsIGluZGV4KTsKfQoKc3Rh dGljIHZvaWQKZHBhYV9kZXZfc2V0X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJ CSAgICAgICBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikKewoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvZHBhYS9kcGFhX2V0aGRldi5jOjgxMwplcnJvcjogZHJpdmVycy9uZXQvZHBh YS9kcGFhX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9kcGFhMi9kcGFhMl9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKCQkJImVycm9yOiBSZW1vdmluZyB0aGUgTUFDIEFERFIgZmFpbGVkOiBlcnIgPSAlZCIsIHJl dCk7Cn0KCnN0YXRpYyB2b2lkCmRwYWEyX2Rldl9zZXRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsCgkJICAgICAgIHN0cnVjdCBldGhlcl9hZGRyICphZGRyKQp7CgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9kcGFhMi9kcGFhMl9ldGhkZXYuYzoxMDE5CmVycm9yOiBk cml2ZXJzL25ldC9kcGFhMi9kcGFhMl9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZTEwMDAvaWdiX2V0aGRldi5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoJCQkgICBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIsCgkJCSAg IHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwb29sKTsKc3RhdGljIHZvaWQgZXRoX2lnYl9yYXJf Y2xlYXIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGluZGV4KTsKc3RhdGljIHZv aWQgZXRoX2lnYl9kZWZhdWx0X21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwK CQlzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcik7CgpzdGF0aWMgdm9pZCBpZ2J2Zl9pbnRyX2Rpc2Fi bGUoc3RydWN0IGUxMDAwX2h3ICpodyk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25l dC9lMTAwMC9pZ2JfZXRoZGV2LmM6MTQ1CmVycm9yOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZXRo ZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Zh aWxzYWZlL2ZhaWxzYWZlX29wcy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0 dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCmZzX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKQotLQoJZnNfdW5sb2NrKGRldiwgMCk7 Cn0KCnN0YXRpYyBpbnQKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2ZhaWxzYWZl L2ZhaWxzYWZlX29wcy5jOjk5NwplcnJvcjogZHJpdmVycy9uZXQvZmFpbHNhZmUvZmFpbHNhZmVf b3BzLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2k0 MGUvaTQwZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGlu dCBpNDBlX2dldF9lZXByb20oc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCSAgIHN0cnVjdCBy dGVfZGV2X2VlcHJvbV9pbmZvICplZXByb20pOwoKc3RhdGljIHZvaWQgaTQwZV9zZXRfZGVmYXVs dF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCSAgICAgIHN0cnVjdCBldGhl cl9hZGRyICptYWNfYWRkcik7CgpzdGF0aWMgaW50IGk0MGVfZGV2X210dV9zZXQoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IG10dSk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmM6MzY5CmVycm9yOiBkcml2ZXJzL25ldC9pNDBlL2k0 MGVfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L2k0MGUvaTQwZV9ldGhkZXZfdmYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK c3RhdGljIGludCBpNDBldmZfZGV2X3Jzc19oYXNoX2NvbmZfZ2V0KHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LAoJCQkJCXN0cnVjdCBydGVfZXRoX3Jzc19jb25mICpyc3NfY29uZik7CnN0YXRpYyBp bnQgaTQwZXZmX2Rldl9tdHVfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBt dHUpOwpzdGF0aWMgdm9pZCBpNDBldmZfc2V0X2RlZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsCgkJCQkJc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKTsKc3RhdGljIGlu dAppNDBldmZfZGV2X3J4X3F1ZXVlX2ludHJfZW5hYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LCB1aW50MTZfdCBxdWV1ZV9pZCk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9p NDBlL2k0MGVfZXRoZGV2X3ZmLmM6MTIwCmVycm9yOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRo ZGV2X3ZmLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2l4Z2JlL2l4Z2JlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0 aWMgaW50IGl4Z2JlX2FkZF9yYXIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhl cl9hZGRyICptYWNfYWRkciwKCQkJIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwb29sKTsKc3Rh dGljIHZvaWQgaXhnYmVfcmVtb3ZlX3JhcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDMy X3QgaW5kZXgpOwpzdGF0aWMgdm9pZCBpeGdiZV9zZXRfZGVmYXVsdF9tYWNfYWRkcihzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwKCQkJCQkgICBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpz dGF0aWMgdm9pZCBpeGdiZV9kY2JfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3LCBzdHJ1Y3QgaXhn YmVfZGNiX2NvbmZpZyAqZGNiX2NvbmZpZyk7CnN0YXRpYyBib29sIGlzX2RldmljZV9zdXBwb3J0 ZWQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzoyMjcKZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4 Z2JlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9tbHg0L21seDQuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKdm9pZCBtbHg0 X21hY19hZGRyX3JlbW92ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDMyX3QgaW5kZXgp OwppbnQgbWx4NF9tYWNfYWRkcl9hZGQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBl dGhlcl9hZGRyICptYWNfYWRkciwKCQkgICAgICB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qgdm1k cSk7CnZvaWQgbWx4NF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVj dCBldGhlcl9hZGRyICptYWNfYWRkcik7CmludCBtbHg0X3ZsYW5fZmlsdGVyX3NldChzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3Qgdmxhbl9pZCwgaW50IG9uKTsKaW50IG1seDRfc3Rh dHNfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgcnRlX2V0aF9zdGF0cyAqc3Rh dHMpOwp2b2lkIG1seDRfc3RhdHNfcmVzZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwoKZXJy b3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NC9tbHg0Lmg6MTMxCmVycm9yOiBkcml2 ZXJzL25ldC9tbHg0L21seDQuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2gg ZHJpdmVycy9uZXQvbWx4NC9tbHg0X2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgogKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2aWNlIHN0cnVjdHVyZS4KICogQHBhcmFt IG1hY19hZGRyCiAqICAgTUFDIGFkZHJlc3MgdG8gcmVnaXN0ZXIuCiAqLwp2b2lkCi0tCgltbHg0 X21hY19hZGRyX2FkZChkZXYsIG1hY19hZGRyLCAwLCAwKTsKfQoKLyoqCgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg0L21seDRfZXRoZGV2LmM6NTM0CmVycm9yOiBkcml2ZXJz L25ldC9tbHg0L21seDRfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L21seDUvbWx4NS5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y Ogp2b2lkIG1seDVfbWFjX2FkZHJfcmVtb3ZlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50 MzJfdCBpbmRleCk7CmludCBtbHg1X21hY19hZGRyX2FkZChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwgc3RydWN0IGV0aGVyX2FkZHIgKm1hYywKCQkgICAgICB1aW50MzJfdCBpbmRleCwgdWludDMy X3Qgdm1kcSk7CnZvaWQgbWx4NV9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs IHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CgovKiBtbHg1X3Jzcy5jICovCgoKZXJyb3I6 IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NS9tbHg1Lmg6MTk1CmVycm9yOiBkcml2ZXJz L25ldC9tbHg1L21seDUuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvbWx4NS9tbHg1X21hYy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgog KiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2aWNlIHN0cnVjdHVyZS4KICogQHBhcmFtIG1hY19h ZGRyCiAqICAgTUFDIGFkZHJlc3MgdG8gcmVnaXN0ZXIuCiAqLwp2b2lkCm1seDVfbWFjX2FkZHJf c2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIp CnsKCWludCByZXQ7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg1L21seDVf bWFjLmM6MTI0CmVycm9yOiBkcml2ZXJzL25ldC9tbHg1L21seDVfbWFjLmM6IHBhdGNoIGRvZXMg bm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L212cHAyL21ydmxfZXRoZGV2LmMu Li4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAqICAgUG9pbnRlciB0byBFdGhlcm5ldCBk ZXZpY2Ugc3RydWN0dXJlLgogKiBAcGFyYW0gbWFjX2FkZHIKICogICBNQUMgYWRkcmVzcyB0byBy ZWdpc3Rlci4KICovCnN0YXRpYyB2b2lkCi0tCgkJcmV0dXJuOwoKCXJldCA9IHBwMl9wcGlvX3Nl dF9tYWNfYWRkcihwcml2LT5wcGlvLCBtYWNfYWRkci0+YWRkcl9ieXRlcyk7CglpZiAocmV0KSB7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tdnBwMi9tcnZsX2V0aGRldi5jOjEw NjEKZXJyb3I6IGRyaXZlcnMvbmV0L212cHAyL21ydmxfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L251bGwvcnRlX2V0aF9udWxsLmMuLi4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKZXRo X21hY19hZGRyZXNzX3NldChfX3J0ZV91bnVzZWQgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCi0t CnsKfQoKc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBvcHMgPSB7CgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9udWxsL3J0ZV9ldGhfbnVsbC5jOjQ1OQplcnJvcjogZHJp dmVycy9uZXQvbnVsbC9ydGVfZXRoX251bGwuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvb2N0ZW9udHgvb2N0ZW9udHhfZXRoZGV2LmMuLi4KZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CglvY3Rlb250eF9wb3J0X3N0YXRzX2NscihuaWMpOwp9Cgpz dGF0aWMgdm9pZApvY3Rlb250eF9kZXZfZGVmYXVsdF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsCgkJCQkJc3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCnsKCmVycm9yOiBwYXRj aCBmYWlsZWQ6IGRyaXZlcnMvbmV0L29jdGVvbnR4L29jdGVvbnR4X2V0aGRldi5jOjU4NgplcnJv cjogZHJpdmVycy9uZXQvb2N0ZW9udHgvb2N0ZW9udHhfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3FlZGUvcWVkZV9ldGhkZXYuYy4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXFlZGVfbWFjX2ludF9vcHMoZXRoX2RldiwgJnVj YXN0LCBmYWxzZSk7Cn0KCnN0YXRpYyB2b2lkCnFlZGVfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVf ZXRoX2RldiAqZXRoX2Rldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKQp7CglzdHJ1Y3Qg cWVkZV9kZXYgKnFkZXYgPSBRRURFX0lOSVRfUURFVihldGhfZGV2KTsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L3FlZGUvcWVkZV9ldGhkZXYuYzoxMDQxCmVycm9yOiBkcml2ZXJz L25ldC9xZWRlL3FlZGVfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L3NmYy9zZmNfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CglTRkNfQVNTRVJUKHJjID4gMCk7CglyZXR1cm4gLXJjOwp9CnN0YXRpYyB2b2lkCnNm Y19tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRy ICptYWNfYWRkcikKLS0KCWludCByYzsKCglzZmNfYWRhcHRlcl9sb2NrKHNhKTsKCgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9zZmMvc2ZjX2V0aGRldi5jOjkxNQplcnJvcjogZHJp dmVycy9uZXQvc2ZjL3NmY19ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvc3plZGF0YTIvcnRlX2V0aF9zemVkYXRhMi5jLi4uCmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCmV0aF9tYWNfYWRk cl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgX19ydGVfdW51c2VkLAotLQp7Cn0KCnN0YXRp YyB2b2lkCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9zemVkYXRhMi9ydGVfZXRo X3N6ZWRhdGEyLmM6MTM2MQplcnJvcjogZHJpdmVycy9uZXQvc3plZGF0YTIvcnRlX2V0aF9zemVk YXRhMi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC90 YXAvcnRlX2V0aF90YXAuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQl0YXBfZmxv d19pbXBsaWNpdF9kZXN0cm95KHBtZCwgVEFQX1JFTU9URV9BTExNVUxUSSk7Cn0KCnN0YXRpYyB2 b2lkCnRhcF9tYWNfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRk ciAqbWFjX2FkZHIpCi0tCgl9Cn0KCnN0YXRpYyBpbnQKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5jOjkzNAplcnJvcjogZHJpdmVycy9uZXQvdGFwL3J0 ZV9ldGhfdGFwLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkJCQlzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIsCgkJCQl1aW50MzJfdCBpbmRleCwgdWlu dDMyX3Qgdm1kcSk7CnN0YXRpYyB2b2lkIHZpcnRpb19tYWNfYWRkcl9yZW1vdmUoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGluZGV4KTsKc3RhdGljIHZvaWQgdmlydGlvX21hY19h ZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCXN0cnVjdCBldGhlcl9hZGRyICpt YWNfYWRkcik7CgpzdGF0aWMgaW50IHZpcnRpb19pbnRyX2VuYWJsZShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldik7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlv X2V0aGRldi5jOjY3CmVycm9yOiBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5jOiBw YXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC92bXhuZXQzL3Zt eG5ldDNfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnN0YXRpYyBpbnQg dm14bmV0M19kZXZfdmxhbl9maWx0ZXJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJ ICAgICAgIHVpbnQxNl90IHZpZCwgaW50IG9uKTsKc3RhdGljIGludCB2bXhuZXQzX2Rldl92bGFu X29mZmxvYWRfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBpbnQgbWFzayk7CnN0YXRpYyB2 b2lkIHZteG5ldDNfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJIHN0 cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CnN0YXRpYyB2b2lkIHZteG5ldDNfaW50ZXJydXB0 X2hhbmRsZXIodm9pZCAqcGFyYW0pOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L3ZteG5ldDMvdm14bmV0M19ldGhkZXYuYzo3MgplcnJvcjogZHJpdmVycy9uZXQvdm14bmV0My92 bXhuZXQzX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIv bGlicnRlX2V0aGVyL3J0ZV9ldGhkZXYuYy4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVf ZXRoZGV2LmM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xp YnJ0ZV9ldGhlci9ydGVfZXRoZGV2X2NvcmUuaC4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9y dGVfZXRoZGV2X2NvcmUuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpDaGVja2luZyBwYXRj aCB0ZXN0L3Rlc3QvdmlydHVhbF9wbWQuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK dmlydHVhbF9ldGhkZXZfcHJvbWlzY3VvdXNfbW9kZV9kaXNhYmxlKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2IF9fcnRlX3VudXNlZCkKe30KCnN0YXRpYyB2b2lkCnZpcnR1YWxfZXRoZGV2X21hY19h ZGRyZXNzX3NldChfX3J0ZV91bnVzZWQgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCi0tCnsKfQoK c3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyB2aXJ0dWFsX2V0aGRldl9kZWZhdWx0X2Rl dl9vcHMgPSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiB0ZXN0L3Rlc3QvdmlydHVhbF9wbWQuYzoy MTYKZXJyb3I6IHRlc3QvdGVzdC92aXJ0dWFsX3BtZC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQoq UmVwbzogZHBkay1uZXh0LWV2ZW50ZGV2CkNoZWNraW5nIHBhdGNoIGRvYy9ndWlkZXMvcmVsX25v dGVzL2RlcHJlY2F0aW9uLnJzdC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICBiZXR3 ZWVuIHRoZSBWRiByZXByZXNlbnRvciBhbmQgdGhlIFZGIG9yIHRoZSBwYXJlbnQgUEYuIFRob3Nl IG5ldyBmaWVsZHMKICBhcmUgdG8gYmUgaW5jbHVkZWQgaW4gYGBydGVfZXRoX2Rldl9pbmZvYGAg c3RydWN0LgoKKiBldGhkZXY6IFRoZSBwcm90b3R5cGUgYW5kIHRoZSBiZWhhdmlvciBvZgogIGBg ZGV2X29wcy0+ZXRoX21hY19hZGRyX3NldCgpYGAgd2lsbCBjaGFuZ2UgaW4gdjE4LjA1LiBBIHJl dHVybiBjb2RlCiAgd2lsbCBiZSBhZGRlZCB0byBub3RpZnkgdGhlIGNhbGxlciBpZiBhbiBlcnJv ciBvY2N1cnJlZCBpbiB0aGUgUE1ELiBJbgogIGBgcnRlX2V0aF9kZXZfZGVmYXVsdF9tYWNfYWRk cl9zZXQoKWBgLCB0aGUgbmV3IGRlZmF1bHQgTUFDIGFkZHJlc3MKICB3aWxsIGJlIGNvcGllZCBp biBgYGRldi0+ZGF0YS0+bWFjX2FkZHJzWzBdYGAgb25seSBpZiB0aGUgb3BlcmF0aW9uIGlzCiAg c3VjY2Vzc2Z1bC4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBvbmx5IGltcGFjdCB0aGUgUE1Ecywg bm90IHRoZQogIGFwcGxpY2F0aW9ucy4KCiogaTQwZTogVGhlIGRlZmF1bHQgZmxleGlibGUgcGF5 bG9hZCBjb25maWd1cmF0aW9uIHdoaWNoIGV4dHJhY3RzIHRoZSBmaXJzdCAxNgogIGJ5dGVzIG9m IHRoZSBwYXlsb2FkIGZvciBSU1Mgd2lsbCBiZSBkZXByZWNhdGVkIHN0YXJ0aW5nIGZyb20gMTgu MDIuIElmCiAgcmVxdWlyZWQgdGhlIHByZXZpb3VzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVk IHVzaW5nIGV4aXN0aW5nIGZsb3cKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvcmVs X25vdGVzL2RlcHJlY2F0aW9uLnJzdDoxMzEKZXJyb3I6IGRvYy9ndWlkZXMvcmVsX25vdGVzL2Rl cHJlY2F0aW9uLnJzdDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvYXJrL2Fya19ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3Rh dGljIGludCBldGhfYXJrX2Rldl9zdGF0c19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJ CQkgIHN0cnVjdCBydGVfZXRoX3N0YXRzICpzdGF0cyk7CnN0YXRpYyB2b2lkIGV0aF9hcmtfZGV2 X3N0YXRzX3Jlc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKc3RhdGljIHZvaWQgZXRoX2Fy a19zZXRfZGVmYXVsdF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCQkgc3Ry dWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKTsKc3RhdGljIGludCBldGhfYXJrX21hY2FkZHJfYWRk KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkgICAgICAgc3RydWN0IGV0aGVyX2FkZHIgKm1h Y19hZGRyLAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYXJrL2Fya19ldGhkZXYu Yzo2OQplcnJvcjogZHJpdmVycy9uZXQvYXJrL2Fya19ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3Qg YXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYXZmL2F2Zl9ldGhkZXYuYy4uLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGludCBhdmZfZGV2X3Jzc19oYXNoX2NvbmZf Z2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJICAgICBzdHJ1Y3QgcnRlX2V0aF9yc3Nf Y29uZiAqcnNzX2NvbmYpOwpzdGF0aWMgaW50IGF2Zl9kZXZfbXR1X3NldChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwgdWludDE2X3QgbXR1KTsKc3RhdGljIHZvaWQgYXZmX2Rldl9zZXRfZGVmYXVs dF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCQkgc3RydWN0IGV0aGVyX2Fk ZHIgKm1hY19hZGRyKTsKc3RhdGljIGludCBhdmZfZGV2X3J4X3F1ZXVlX2ludHJfZW5hYmxlKHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCXVpbnQxNl90IHF1ZXVlX2lkKTsKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2F2Zi9hdmZfZXRoZGV2LmM6NjUKZXJyb3I6IGRyaXZl cnMvbmV0L2F2Zi9hdmZfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L2JueHQvYm54dF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZApibnh0X3NldF9kZWZhdWx0X21hY19h ZGRyX29wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikK ewoJc3RydWN0IGJueHQgKmJwID0gKHN0cnVjdCBibnh0ICopZGV2LT5kYXRhLT5kZXZfcHJpdmF0 ZTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvYm54dF9ldGhkZXYuYzox MzcwCmVycm9yOiBkcml2ZXJzL25ldC9ibnh0L2JueHRfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2JvbmRpbmcvcnRlX2V0aF9ib25kX3Bt ZC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2 b2lkCmJvbmRfZXRoZGV2X21hY19hZGRyZXNzX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg c3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCi0tCgkJUlRFX0JPTkRfTE9HKEVSUiwgIkZhaWxlZCB0 byB1cGRhdGUgTUFDIGFkZHJlc3MiKTsKfQoKY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIGRlZmF1 bHRfZGV2X29wcyA9IHsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JvbmRpbmcv cnRlX2V0aF9ib25kX3BtZC5jOjI4NzIKZXJyb3I6IGRyaXZlcnMvbmV0L2JvbmRpbmcvcnRlX2V0 aF9ib25kX3BtZC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9jeGdiZS9jeGdiZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CXJldHVybiAwOwp9Cgp2b2lkIGN4Z2JlX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCnsKCXN0cnVjdCBwb3J0X2luZm8gKnBpID0g KHN0cnVjdCBwb3J0X2luZm8gKikoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7CglzdHJ1Y3QgYWRh cHRlciAqYWRhcHRlciA9IHBpLT5hZGFwdGVyOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvY3hnYmUvY3hnYmVfZXRoZGV2LmM6MTA1OAplcnJvcjogZHJpdmVycy9uZXQvY3hnYmUv Y3hnYmVfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvbmV0L2N4Z2JlL2N4Z2JlX3BmdmYuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK dm9pZCBjeGdiZV9kZXZfcHJvbWlzY3VvdXNfZGlzYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0 aF9kZXYpOwp2b2lkIGN4Z2JlX2Rldl9hbGxtdWx0aWNhc3RfZW5hYmxlKHN0cnVjdCBydGVfZXRo X2RldiAqZXRoX2Rldik7CnZvaWQgY3hnYmVfZGV2X2FsbG11bHRpY2FzdF9kaXNhYmxlKHN0cnVj dCBydGVfZXRoX2RldiAqZXRoX2Rldik7CnZvaWQgY3hnYmVfbWFjX2FkZHJfc2V0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcik7CmludCBjeGdiZV9kZXZf Y29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2Rldik7CmludCBjeGdiZV9kZXZfdHhf cXVldWVfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2LCB1aW50MTZfdCBxdWV1ZV9p ZHgsCgkJCSAgICAgdWludDE2X3QgbmJfZGVzYywgdW5zaWduZWQgaW50IHNvY2tldF9pZCwKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2JlX3BmdmYuaDoxNgplcnJv cjogZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVfcGZ2Zi5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9kcGFhL2RwYWFfZXRoZGV2LmMuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CglmbWFuX2lmX2NsZWFyX21hY19hZGRyKGRwYWFfaW50Zi0+Zmlm LCBpbmRleCk7Cn0KCnN0YXRpYyB2b2lkCmRwYWFfZGV2X3NldF9tYWNfYWRkcihzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwKCQkgICAgICAgc3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCnsKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2RwYWEvZHBhYV9ldGhkZXYuYzo4MTMKZXJyb3I6 IGRyaXZlcnMvbmV0L2RwYWEvZHBhYV9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZHBhYTIvZHBhYTJfZXRoZGV2LmMuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CgkJCSJlcnJvcjogUmVtb3ZpbmcgdGhlIE1BQyBBRERSIGZhaWxl ZDogZXJyID0gJWQiLCByZXQpOwp9CgpzdGF0aWMgdm9pZApkcGFhMl9kZXZfc2V0X21hY19hZGRy KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCSAgICAgICBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRk cikKewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZHBhYTIvZHBhYTJfZXRoZGV2 LmM6MTAxOQplcnJvcjogZHJpdmVycy9uZXQvZHBhYTIvZHBhYTJfZXRoZGV2LmM6IHBhdGNoIGRv ZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYu Yy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJICAgc3RydWN0IGV0aGVyX2FkZHIg Km1hY19hZGRyLAoJCQkgICB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG9vbCk7CnN0YXRpYyB2 b2lkIGV0aF9pZ2JfcmFyX2NsZWFyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBp bmRleCk7CnN0YXRpYyB2b2lkIGV0aF9pZ2JfZGVmYXVsdF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsCgkJc3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpOwoKc3RhdGljIHZvaWQg aWdidmZfaW50cl9kaXNhYmxlKHN0cnVjdCBlMTAwMF9odyAqaHcpOwoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2V0aGRldi5jOjE0NQplcnJvcjogZHJpdmVycy9u ZXQvZTEwMDAvaWdiX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9mYWlsc2FmZS9mYWlsc2FmZV9vcHMuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZApmc19tYWNfYWRkcl9zZXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcikKLS0KCWZz X3VubG9jayhkZXYsIDApOwp9CgpzdGF0aWMgaW50CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9mYWlsc2FmZS9mYWlsc2FmZV9vcHMuYzo5OTcKZXJyb3I6IGRyaXZlcnMvbmV0L2Zh aWxzYWZlL2ZhaWxzYWZlX29wcy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CnN0YXRpYyBpbnQgaTQwZV9nZXRfZWVwcm9tKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LAoJCQkgICBzdHJ1Y3QgcnRlX2Rldl9lZXByb21faW5mbyAqZWVwcm9tKTsKCnN0YXRpYyB2b2lk IGk0MGVfc2V0X2RlZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkg ICAgICBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwoKc3RhdGljIGludCBpNDBlX2Rldl9t dHVfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBtdHUpOwoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jOjM2OQplcnJvcjogZHJp dmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2X3ZmLmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CnN0YXRpYyBpbnQgaTQwZXZmX2Rldl9yc3NfaGFzaF9jb25mX2dldChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCQlzdHJ1Y3QgcnRlX2V0aF9yc3NfY29uZiAqcnNz X2NvbmYpOwpzdGF0aWMgaW50IGk0MGV2Zl9kZXZfbXR1X3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwgdWludDE2X3QgbXR1KTsKc3RhdGljIHZvaWQgaTQwZXZmX3NldF9kZWZhdWx0X21hY19h ZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCXN0cnVjdCBldGhlcl9hZGRyICptYWNf YWRkcik7CnN0YXRpYyBpbnQKaTQwZXZmX2Rldl9yeF9xdWV1ZV9pbnRyX2VuYWJsZShzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQpOwoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldl92Zi5jOjEyMAplcnJvcjogZHJpdmVycy9u ZXQvaTQwZS9pNDBlX2V0aGRldl92Zi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKc3RhdGljIGludCBpeGdiZV9hZGRfcmFyKHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIsCgkJCSB1aW50MzJfdCBpbmRleCwgdWlu dDMyX3QgcG9vbCk7CnN0YXRpYyB2b2lkIGl4Z2JlX3JlbW92ZV9yYXIoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsIHVpbnQzMl90IGluZGV4KTsKc3RhdGljIHZvaWQgaXhnYmVfc2V0X2RlZmF1bHRf bWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkJICAgc3RydWN0IGV0aGVyX2Fk ZHIgKm1hY19hZGRyKTsKc3RhdGljIHZvaWQgaXhnYmVfZGNiX2luaXQoc3RydWN0IGl4Z2JlX2h3 ICpodywgc3RydWN0IGl4Z2JlX2RjYl9jb25maWcgKmRjYl9jb25maWcpOwpzdGF0aWMgYm9vbCBp c19kZXZpY2Vfc3VwcG9ydGVkKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmM6MjI3CmVycm9yOiBkcml2 ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NC9tbHg0LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CnZvaWQgbWx4NF9tYWNfYWRkcl9yZW1vdmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs IHVpbnQzMl90IGluZGV4KTsKaW50IG1seDRfbWFjX2FkZHJfYWRkKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIsCgkJICAgICAgdWludDMyX3QgaW5k ZXgsIHVpbnQzMl90IHZtZHEpOwp2b2lkIG1seDRfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwppbnQgbWx4NF92bGFuX2Zp bHRlcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHZsYW5faWQsIGludCBv bik7CmludCBtbHg0X3N0YXRzX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IHJ0 ZV9ldGhfc3RhdHMgKnN0YXRzKTsKdm9pZCBtbHg0X3N0YXRzX3Jlc2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2KTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NC5o OjEzMQplcnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5 CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4NF9ldGhkZXYuYy4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZSBzdHJ1 Y3R1cmUuCiAqIEBwYXJhbSBtYWNfYWRkcgogKiAgIE1BQyBhZGRyZXNzIHRvIHJlZ2lzdGVyLgog Ki8Kdm9pZAotLQoJbWx4NF9tYWNfYWRkcl9hZGQoZGV2LCBtYWNfYWRkciwgMCwgMCk7Cn0KCi8q KgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NC9tbHg0X2V0aGRldi5jOjUz NAplcnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg1L21seDUuaC4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKdm9pZCBtbHg1X21hY19hZGRyX3JlbW92ZShzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwgdWludDMyX3QgaW5kZXgpOwppbnQgbWx4NV9tYWNfYWRkcl9hZGQoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWMsCgkJICAgICAgdWludDMy X3QgaW5kZXgsIHVpbnQzMl90IHZtZHEpOwp2b2lkIG1seDVfbWFjX2FkZHJfc2V0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwoKLyogbWx4NV9y c3MuYyAqLwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NS5oOjE5 NQplcnJvcjogZHJpdmVycy9uZXQvbWx4NS9tbHg1Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDUvbWx4NV9tYWMuYy4uLgplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZSBzdHJ1Y3R1cmUu CiAqIEBwYXJhbSBtYWNfYWRkcgogKiAgIE1BQyBhZGRyZXNzIHRvIHJlZ2lzdGVyLgogKi8Kdm9p ZAptbHg1X21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVy X2FkZHIgKm1hY19hZGRyKQp7CglpbnQgcmV0OwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvbWx4NS9tbHg1X21hYy5jOjEyNAplcnJvcjogZHJpdmVycy9uZXQvbWx4NS9tbHg1X21h Yy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tdnBw Mi9tcnZsX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiAgIFBvaW50 ZXIgdG8gRXRoZXJuZXQgZGV2aWNlIHN0cnVjdHVyZS4KICogQHBhcmFtIG1hY19hZGRyCiAqICAg TUFDIGFkZHJlc3MgdG8gcmVnaXN0ZXIuCiAqLwpzdGF0aWMgdm9pZAotLQoJCXJldHVybjsKCgly ZXQgPSBwcDJfcHBpb19zZXRfbWFjX2FkZHIocHJpdi0+cHBpbywgbWFjX2FkZHItPmFkZHJfYnl0 ZXMpOwoJaWYgKHJldCkgewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbXZwcDIv bXJ2bF9ldGhkZXYuYzoxMDYxCmVycm9yOiBkcml2ZXJzL25ldC9tdnBwMi9tcnZsX2V0aGRldi5j OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9udWxsL3J0 ZV9ldGhfbnVsbC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0K CnN0YXRpYyB2b2lkCmV0aF9tYWNfYWRkcmVzc19zZXQoX19ydGVfdW51c2VkIHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LAotLQp7Cn0KCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgb3Bz ID0gewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbnVsbC9ydGVfZXRoX251bGwu Yzo0NTkKZXJyb3I6IGRyaXZlcnMvbmV0L251bGwvcnRlX2V0aF9udWxsLmM6IHBhdGNoIGRvZXMg bm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L29jdGVvbnR4L29jdGVvbnR4X2V0 aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJb2N0ZW9udHhfcG9ydF9zdGF0 c19jbHIobmljKTsKfQoKc3RhdGljIHZvaWQKb2N0ZW9udHhfZGV2X2RlZmF1bHRfbWFjX2FkZHJf c2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCXN0cnVjdCBldGhlcl9hZGRyICphZGRy KQp7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9vY3Rlb250eC9vY3Rlb250eF9l dGhkZXYuYzo1ODYKZXJyb3I6IGRyaXZlcnMvbmV0L29jdGVvbnR4L29jdGVvbnR4X2V0aGRldi5j OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9xZWRlL3Fl ZGVfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglxZWRlX21hY19pbnRf b3BzKGV0aF9kZXYsICZ1Y2FzdCwgZmFsc2UpOwp9CgpzdGF0aWMgdm9pZApxZWRlX21hY19hZGRy X3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNf YWRkcikKewoJc3RydWN0IHFlZGVfZGV2ICpxZGV2ID0gUUVERV9JTklUX1FERVYoZXRoX2Rldik7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9xZWRlL3FlZGVfZXRoZGV2LmM6MTA0 MQplcnJvcjogZHJpdmVycy9uZXQvcWVkZS9xZWRlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9zZmMvc2ZjX2V0aGRldi5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJU0ZDX0FTU0VSVChyYyA+IDApOwoJcmV0dXJuIC1yYzsK fQpzdGF0aWMgdm9pZApzZmNfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpCi0tCglpbnQgcmM7CgoJc2ZjX2FkYXB0ZXJfbG9j ayhzYSk7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvc2ZjL3NmY19ldGhkZXYu Yzo5MTUKZXJyb3I6IGRyaXZlcnMvbmV0L3NmYy9zZmNfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3N6ZWRhdGEyL3J0ZV9ldGhfc3plZGF0 YTIuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiAwOwp9CgpzdGF0aWMg dm9pZApldGhfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2IF9fcnRlX3VudXNl ZCwKLS0Kewp9CgpzdGF0aWMgdm9pZAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv c3plZGF0YTIvcnRlX2V0aF9zemVkYXRhMi5jOjEzNjEKZXJyb3I6IGRyaXZlcnMvbmV0L3N6ZWRh dGEyL3J0ZV9ldGhfc3plZGF0YTIuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9uZXQvdGFwL3J0ZV9ldGhfdGFwLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CgkJdGFwX2Zsb3dfaW1wbGljaXRfZGVzdHJveShwbWQsIFRBUF9SRU1PVEVfQUxMTVVM VEkpOwp9CgpzdGF0aWMgdm9pZAp0YXBfbWFjX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg c3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKQotLQoJfQp9CgpzdGF0aWMgaW50CgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC90YXAvcnRlX2V0aF90YXAuYzo5MzQKZXJyb3I6IGRy aXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoJCQkJc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyLAoJCQkJdWlu dDMyX3QgaW5kZXgsIHVpbnQzMl90IHZtZHEpOwpzdGF0aWMgdm9pZCB2aXJ0aW9fbWFjX2FkZHJf cmVtb3ZlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBpbmRleCk7CnN0YXRpYyB2 b2lkIHZpcnRpb19tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQlzdHJ1 Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwoKc3RhdGljIGludCB2aXJ0aW9faW50cl9lbmFibGUo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYzo2NwplcnJvcjogZHJpdmVycy9uZXQvdmlydGlvL3Zp cnRpb19ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvdm14bmV0My92bXhuZXQzX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgpzdGF0aWMgaW50IHZteG5ldDNfZGV2X3ZsYW5fZmlsdGVyX3NldChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwKCQkJCSAgICAgICB1aW50MTZfdCB2aWQsIGludCBvbik7CnN0YXRpYyBpbnQg dm14bmV0M19kZXZfdmxhbl9vZmZsb2FkX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50 IG1hc2spOwpzdGF0aWMgdm9pZCB2bXhuZXQzX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwKCQkJCSBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpzdGF0aWMgdm9pZCB2 bXhuZXQzX2ludGVycnVwdF9oYW5kbGVyKHZvaWQgKnBhcmFtKTsKCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZXRoZGV2LmM6NzIKZXJyb3I6IGRyaXZl cnMvbmV0L3ZteG5ldDMvdm14bmV0M19ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hl Y2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2LmMuLi4KZXJyb3I6IGxpYi9s aWJydGVfZXRoZXIvcnRlX2V0aGRldi5jOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CkNoZWNr aW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldl9jb3JlLmguLi4KZXJyb3I6IGxp Yi9saWJydGVfZXRoZXIvcnRlX2V0aGRldl9jb3JlLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv cnkKQ2hlY2tpbmcgcGF0Y2ggdGVzdC90ZXN0L3ZpcnR1YWxfcG1kLmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CnZpcnR1YWxfZXRoZGV2X3Byb21pc2N1b3VzX21vZGVfZGlzYWJsZShz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiBfX3J0ZV91bnVzZWQpCnt9CgpzdGF0aWMgdm9pZAp2aXJ0 dWFsX2V0aGRldl9tYWNfYWRkcmVzc19zZXQoX19ydGVfdW51c2VkIHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LAotLQp7Cn0KCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgdmlydHVhbF9l dGhkZXZfZGVmYXVsdF9kZXZfb3BzID0gewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogdGVzdC90ZXN0 L3ZpcnR1YWxfcG1kLmM6MjE2CmVycm9yOiB0ZXN0L3Rlc3QvdmlydHVhbF9wbWQuYzogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKKlJlcG86IGRwZGstbmV4dC1uZXQKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1 aWRlcy9yZWxfbm90ZXMvZGVwcmVjYXRpb24ucnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgogIGJldHdlZW4gdGhlIFZGIHJlcHJlc2VudG9yIGFuZCB0aGUgVkYgb3IgdGhlIHBhcmVu dCBQRi4gVGhvc2UgbmV3IGZpZWxkcwogIGFyZSB0byBiZSBpbmNsdWRlZCBpbiBgYHJ0ZV9ldGhf ZGV2X2luZm9gYCBzdHJ1Y3QuCgoqIGV0aGRldjogVGhlIHByb3RvdHlwZSBhbmQgdGhlIGJlaGF2 aW9yIG9mCiAgYGBkZXZfb3BzLT5ldGhfbWFjX2FkZHJfc2V0KClgYCB3aWxsIGNoYW5nZSBpbiB2 MTguMDUuIEEgcmV0dXJuIGNvZGUKICB3aWxsIGJlIGFkZGVkIHRvIG5vdGlmeSB0aGUgY2FsbGVy IGlmIGFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBQTUQuIEluCiAgYGBydGVfZXRoX2Rldl9kZWZh dWx0X21hY19hZGRyX3NldCgpYGAsIHRoZSBuZXcgZGVmYXVsdCBNQUMgYWRkcmVzcwogIHdpbGwg YmUgY29waWVkIGluIGBgZGV2LT5kYXRhLT5tYWNfYWRkcnNbMF1gYCBvbmx5IGlmIHRoZSBvcGVy YXRpb24gaXMKICBzdWNjZXNzZnVsLiBUaGlzIG1vZGlmaWNhdGlvbiB3aWxsIG9ubHkgaW1wYWN0 IHRoZSBQTURzLCBub3QgdGhlCiAgYXBwbGljYXRpb25zLgoKKiBpNDBlOiBUaGUgZGVmYXVsdCBm bGV4aWJsZSBwYXlsb2FkIGNvbmZpZ3VyYXRpb24gd2hpY2ggZXh0cmFjdHMgdGhlIGZpcnN0IDE2 CiAgYnl0ZXMgb2YgdGhlIHBheWxvYWQgZm9yIFJTUyB3aWxsIGJlIGRlcHJlY2F0ZWQgc3RhcnRp bmcgZnJvbSAxOC4wMi4gSWYKICByZXF1aXJlZCB0aGUgcHJldmlvdXMgYmVoYXZpb3IgY2FuIGJl IGNvbmZpZ3VyZWQgdXNpbmcgZXhpc3RpbmcgZmxvdwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9j L2d1aWRlcy9yZWxfbm90ZXMvZGVwcmVjYXRpb24ucnN0OjEzMQplcnJvcjogZG9jL2d1aWRlcy9y ZWxfbm90ZXMvZGVwcmVjYXRpb24ucnN0OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9hcmsvYXJrX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgpzdGF0aWMgaW50IGV0aF9hcmtfZGV2X3N0YXRzX2dldChzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwKCQkJCSAgc3RydWN0IHJ0ZV9ldGhfc3RhdHMgKnN0YXRzKTsKc3RhdGljIHZvaWQg ZXRoX2Fya19kZXZfc3RhdHNfcmVzZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwpzdGF0aWMg dm9pZCBldGhfYXJrX3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LAoJCQkJCSBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpzdGF0aWMgaW50IGV0aF9hcmtf bWFjYWRkcl9hZGQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCSAgICAgICBzdHJ1Y3QgZXRo ZXJfYWRkciAqbWFjX2FkZHIsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9hcmsv YXJrX2V0aGRldi5jOjY5CmVycm9yOiBkcml2ZXJzL25ldC9hcmsvYXJrX2V0aGRldi5jOiBwYXRj aCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9hdmYvYXZmX2V0aGRl di5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50IGF2Zl9kZXZfcnNz X2hhc2hfY29uZl9nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkgICAgIHN0cnVjdCBy dGVfZXRoX3Jzc19jb25mICpyc3NfY29uZik7CnN0YXRpYyBpbnQgYXZmX2Rldl9tdHVfc2V0KHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBtdHUpOwpzdGF0aWMgdm9pZCBhdmZfZGV2 X3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCSBzdHJ1 Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpzdGF0aWMgaW50IGF2Zl9kZXZfcnhfcXVldWVfaW50 cl9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkJdWludDE2X3QgcXVldWVfaWQp OwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYXZmL2F2Zl9ldGhkZXYuYzo2NQpl cnJvcjogZHJpdmVycy9uZXQvYXZmL2F2Zl9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm54dC9ibnh0X2V0aGRldi5jLi4uCmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCmJueHRfc2V0X2Rl ZmF1bHRfbWFjX2FkZHJfb3Aoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9h ZGRyICphZGRyKQp7CglzdHJ1Y3QgYm54dCAqYnAgPSAoc3RydWN0IGJueHQgKilkZXYtPmRhdGEt PmRldl9wcml2YXRlOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYm54dC9ibnh0 X2V0aGRldi5jOjEzNzAKZXJyb3I6IGRyaXZlcnMvbmV0L2JueHQvYm54dF9ldGhkZXYuYzogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYm9uZGluZy9ydGVf ZXRoX2JvbmRfcG1kLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsK fQoKc3RhdGljIHZvaWQKYm9uZF9ldGhkZXZfbWFjX2FkZHJlc3Nfc2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikKLS0KCQlSVEVfQk9ORF9MT0coRVJS LCAiRmFpbGVkIHRvIHVwZGF0ZSBNQUMgYWRkcmVzcyIpOwp9Cgpjb25zdCBzdHJ1Y3QgZXRoX2Rl dl9vcHMgZGVmYXVsdF9kZXZfb3BzID0gewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvYm9uZGluZy9ydGVfZXRoX2JvbmRfcG1kLmM6Mjg3MgplcnJvcjogZHJpdmVycy9uZXQvYm9u ZGluZy9ydGVfZXRoX2JvbmRfcG1kLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2JlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnZvaWQgY3hnYmVfbWFjX2FkZHJfc2V0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikKewoJc3RydWN0IHBvcnRf aW5mbyAqcGkgPSAoc3RydWN0IHBvcnRfaW5mbyAqKShkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsK CXN0cnVjdCBhZGFwdGVyICphZGFwdGVyID0gcGktPmFkYXB0ZXI7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9jeGdiZS9jeGdiZV9ldGhkZXYuYzoxMDU4CmVycm9yOiBkcml2ZXJz L25ldC9jeGdiZS9jeGdiZV9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVfcGZ2Zi5oLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgp2b2lkIGN4Z2JlX2Rldl9wcm9taXNjdW91c19kaXNhYmxlKHN0cnVjdCBydGVf ZXRoX2RldiAqZXRoX2Rldik7CnZvaWQgY3hnYmVfZGV2X2FsbG11bHRpY2FzdF9lbmFibGUoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsKdm9pZCBjeGdiZV9kZXZfYWxsbXVsdGljYXN0X2Rp c2FibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsKdm9pZCBjeGdiZV9tYWNfYWRkcl9z ZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICphZGRyKTsKaW50 IGN4Z2JlX2Rldl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsKaW50IGN4 Z2JlX2Rldl90eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYsIHVpbnQx Nl90IHF1ZXVlX2lkeCwKCQkJICAgICB1aW50MTZfdCBuYl9kZXNjLCB1bnNpZ25lZCBpbnQgc29j a2V0X2lkLAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVfcGZ2 Zi5oOjE2CmVycm9yOiBkcml2ZXJzL25ldC9jeGdiZS9jeGdiZV9wZnZmLmg6IHBhdGNoIGRvZXMg bm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2RwYWEvZHBhYV9ldGhkZXYuYy4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCWZtYW5faWZfY2xlYXJfbWFjX2FkZHIoZHBh YV9pbnRmLT5maWYsIGluZGV4KTsKfQoKc3RhdGljIHZvaWQKZHBhYV9kZXZfc2V0X21hY19hZGRy KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCSAgICAgICBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRk cikKewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZHBhYS9kcGFhX2V0aGRldi5j OjgxMwplcnJvcjogZHJpdmVycy9uZXQvZHBhYS9kcGFhX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5v dCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9kcGFhMi9kcGFhMl9ldGhkZXYuYy4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJImVycm9yOiBSZW1vdmluZyB0aGUgTUFD IEFERFIgZmFpbGVkOiBlcnIgPSAlZCIsIHJldCk7Cn0KCnN0YXRpYyB2b2lkCmRwYWEyX2Rldl9z ZXRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJICAgICAgIHN0cnVjdCBldGhl cl9hZGRyICphZGRyKQp7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9kcGFhMi9k cGFhMl9ldGhkZXYuYzoxMDE5CmVycm9yOiBkcml2ZXJzL25ldC9kcGFhMi9kcGFhMl9ldGhkZXYu YzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZTEwMDAv aWdiX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkgICBzdHJ1Y3Qg ZXRoZXJfYWRkciAqbWFjX2FkZHIsCgkJCSAgIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBwb29s KTsKc3RhdGljIHZvaWQgZXRoX2lnYl9yYXJfY2xlYXIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs IHVpbnQzMl90IGluZGV4KTsKc3RhdGljIHZvaWQgZXRoX2lnYl9kZWZhdWx0X21hY19hZGRyX3Nl dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQlzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcik7Cgpz dGF0aWMgdm9pZCBpZ2J2Zl9pbnRyX2Rpc2FibGUoc3RydWN0IGUxMDAwX2h3ICpodyk7CgplcnJv cjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZXRoZGV2LmM6MTQ1CmVycm9y OiBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2ZhaWxzYWZlL2ZhaWxzYWZlX29wcy5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCmZzX21hY19h ZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19h ZGRyKQotLQoJZnNfdW5sb2NrKGRldiwgMCk7Cn0KCnN0YXRpYyBpbnQKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L2ZhaWxzYWZlL2ZhaWxzYWZlX29wcy5jOjk5NwplcnJvcjogZHJp dmVycy9uZXQvZmFpbHNhZmUvZmFpbHNhZmVfb3BzLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGludCBpNDBlX2dldF9lZXByb20oc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsCgkJCSAgIHN0cnVjdCBydGVfZGV2X2VlcHJvbV9pbmZvICplZXByb20pOwoK c3RhdGljIHZvaWQgaTQwZV9zZXRfZGVmYXVsdF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwKCQkJCSAgICAgIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CgpzdGF0aWMgaW50 IGk0MGVfZGV2X210dV9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IG10dSk7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmM6MzY5 CmVycm9yOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFw cGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXZfdmYuYy4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGludCBpNDBldmZfZGV2X3Jzc19oYXNo X2NvbmZfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJCXN0cnVjdCBydGVfZXRoX3Jz c19jb25mICpyc3NfY29uZik7CnN0YXRpYyBpbnQgaTQwZXZmX2Rldl9tdHVfc2V0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBtdHUpOwpzdGF0aWMgdm9pZCBpNDBldmZfc2V0X2Rl ZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkJc3RydWN0IGV0aGVy X2FkZHIgKm1hY19hZGRyKTsKc3RhdGljIGludAppNDBldmZfZGV2X3J4X3F1ZXVlX2ludHJfZW5h YmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCk7CgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2X3ZmLmM6MTIwCmVycm9y OiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2X3ZmLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5 CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50IGl4Z2JlX2FkZF9yYXIoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkciwKCQkJIHVpbnQzMl90 IGluZGV4LCB1aW50MzJfdCBwb29sKTsKc3RhdGljIHZvaWQgaXhnYmVfcmVtb3ZlX3JhcihzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDMyX3QgaW5kZXgpOwpzdGF0aWMgdm9pZCBpeGdiZV9z ZXRfZGVmYXVsdF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCQkgICBzdHJ1 Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpzdGF0aWMgdm9pZCBpeGdiZV9kY2JfaW5pdChzdHJ1 Y3QgaXhnYmVfaHcgKmh3LCBzdHJ1Y3QgaXhnYmVfZGNiX2NvbmZpZyAqZGNiX2NvbmZpZyk7CnN0 YXRpYyBib29sIGlzX2RldmljZV9zdXBwb3J0ZWQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgpl cnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzoyMjcK ZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0L21seDQuaC4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKdm9pZCBtbHg0X21hY19hZGRyX3JlbW92ZShzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwgdWludDMyX3QgaW5kZXgpOwppbnQgbWx4NF9tYWNfYWRkcl9hZGQoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkciwKCQkgICAgICB1 aW50MzJfdCBpbmRleCwgdWludDMyX3Qgdm1kcSk7CnZvaWQgbWx4NF9tYWNfYWRkcl9zZXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CmludCBt bHg0X3ZsYW5fZmlsdGVyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3Qgdmxh bl9pZCwgaW50IG9uKTsKaW50IG1seDRfc3RhdHNfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LCBzdHJ1Y3QgcnRlX2V0aF9zdGF0cyAqc3RhdHMpOwp2b2lkIG1seDRfc3RhdHNfcmVzZXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv bWx4NC9tbHg0Lmg6MTMxCmVycm9yOiBkcml2ZXJzL25ldC9tbHg0L21seDQuaDogcGF0Y2ggZG9l cyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NC9tbHg0X2V0aGRldi5j Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQg ZGV2aWNlIHN0cnVjdHVyZS4KICogQHBhcmFtIG1hY19hZGRyCiAqICAgTUFDIGFkZHJlc3MgdG8g cmVnaXN0ZXIuCiAqLwp2b2lkCi0tCgltbHg0X21hY19hZGRyX2FkZChkZXYsIG1hY19hZGRyLCAw LCAwKTsKfQoKLyoqCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg0L21seDRf ZXRoZGV2LmM6NTM0CmVycm9yOiBkcml2ZXJzL25ldC9tbHg0L21seDRfZXRoZGV2LmM6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDUvbWx4NS5oLi4u CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp2b2lkIG1seDVfbWFjX2FkZHJfcmVtb3ZlKHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBpbmRleCk7CmludCBtbHg1X21hY19hZGRy X2FkZChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hYywKCQkg ICAgICB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qgdm1kcSk7CnZvaWQgbWx4NV9tYWNfYWRkcl9z ZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7 CgovKiBtbHg1X3Jzcy5jICovCgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4 NS9tbHg1Lmg6MTk1CmVycm9yOiBkcml2ZXJzL25ldC9tbHg1L21seDUuaDogcGF0Y2ggZG9lcyBu b3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NS9tbHg1X21hYy5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2aWNl IHN0cnVjdHVyZS4KICogQHBhcmFtIG1hY19hZGRyCiAqICAgTUFDIGFkZHJlc3MgdG8gcmVnaXN0 ZXIuCiAqLwp2b2lkCm1seDVfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpCnsKCWludCByZXQ7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9tbHg1L21seDVfbWFjLmM6MTI0CmVycm9yOiBkcml2ZXJzL25ldC9t bHg1L21seDVfbWFjLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvbmV0L212cHAyL21ydmxfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CiAqICAgUG9pbnRlciB0byBFdGhlcm5ldCBkZXZpY2Ugc3RydWN0dXJlLgogKiBAcGFyYW0gbWFj X2FkZHIKICogICBNQUMgYWRkcmVzcyB0byByZWdpc3Rlci4KICovCnN0YXRpYyB2b2lkCi0tCgkJ cmV0dXJuOwoKCXJldCA9IHBwMl9wcGlvX3NldF9tYWNfYWRkcihwcml2LT5wcGlvLCBtYWNfYWRk ci0+YWRkcl9ieXRlcyk7CglpZiAocmV0KSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9tdnBwMi9tcnZsX2V0aGRldi5jOjEwNjEKZXJyb3I6IGRyaXZlcnMvbmV0L212cHAyL21y dmxfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L251bGwvcnRlX2V0aF9udWxsLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cgly ZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKZXRoX21hY19hZGRyZXNzX3NldChfX3J0ZV91bnVzZWQg c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCi0tCnsKfQoKc3RhdGljIGNvbnN0IHN0cnVjdCBldGhf ZGV2X29wcyBvcHMgPSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9udWxsL3J0 ZV9ldGhfbnVsbC5jOjQ1OQplcnJvcjogZHJpdmVycy9uZXQvbnVsbC9ydGVfZXRoX251bGwuYzog cGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvb2N0ZW9udHgv b2N0ZW9udHhfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglvY3Rlb250 eF9wb3J0X3N0YXRzX2NscihuaWMpOwp9CgpzdGF0aWMgdm9pZApvY3Rlb250eF9kZXZfZGVmYXVs dF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkJc3RydWN0IGV0aGVy X2FkZHIgKmFkZHIpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L29jdGVvbnR4 L29jdGVvbnR4X2V0aGRldi5jOjU4NgplcnJvcjogZHJpdmVycy9uZXQvb2N0ZW9udHgvb2N0ZW9u dHhfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L3FlZGUvcWVkZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXFl ZGVfbWFjX2ludF9vcHMoZXRoX2RldiwgJnVjYXN0LCBmYWxzZSk7Cn0KCnN0YXRpYyB2b2lkCnFl ZGVfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2Rldiwgc3RydWN0IGV0aGVy X2FkZHIgKm1hY19hZGRyKQp7CglzdHJ1Y3QgcWVkZV9kZXYgKnFkZXYgPSBRRURFX0lOSVRfUURF VihldGhfZGV2KTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3FlZGUvcWVkZV9l dGhkZXYuYzoxMDQxCmVycm9yOiBkcml2ZXJzL25ldC9xZWRlL3FlZGVfZXRoZGV2LmM6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3NmYy9zZmNfZXRoZGV2 LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglTRkNfQVNTRVJUKHJjID4gMCk7Cgly ZXR1cm4gLXJjOwp9CnN0YXRpYyB2b2lkCnNmY19tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhf ZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcikKLS0KCWludCByYzsKCglzZmNf YWRhcHRlcl9sb2NrKHNhKTsKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9zZmMv c2ZjX2V0aGRldi5jOjkxNQplcnJvcjogZHJpdmVycy9uZXQvc2ZjL3NmY19ldGhkZXYuYzogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvc3plZGF0YTIvcnRl X2V0aF9zemVkYXRhMi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7 Cn0KCnN0YXRpYyB2b2lkCmV0aF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYg X19ydGVfdW51c2VkLAotLQp7Cn0KCnN0YXRpYyB2b2lkCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk cml2ZXJzL25ldC9zemVkYXRhMi9ydGVfZXRoX3N6ZWRhdGEyLmM6MTM2MQplcnJvcjogZHJpdmVy cy9uZXQvc3plZGF0YTIvcnRlX2V0aF9zemVkYXRhMi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC90YXAvcnRlX2V0aF90YXAuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCQl0YXBfZmxvd19pbXBsaWNpdF9kZXN0cm95KHBtZCwgVEFQX1JF TU9URV9BTExNVUxUSSk7Cn0KCnN0YXRpYyB2b2lkCnRhcF9tYWNfc2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpCi0tCgl9Cn0KCnN0YXRpYyBp bnQKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5jOjkz NAplcnJvcjogZHJpdmVycy9uZXQvdGFwL3J0ZV9ldGhfdGFwLmM6IHBhdGNoIGRvZXMgbm90IGFw cGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmMuLi4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCQlzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2Fk ZHIsCgkJCQl1aW50MzJfdCBpbmRleCwgdWludDMyX3Qgdm1kcSk7CnN0YXRpYyB2b2lkIHZpcnRp b19tYWNfYWRkcl9yZW1vdmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGluZGV4 KTsKc3RhdGljIHZvaWQgdmlydGlvX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwKCQkJCXN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CgpzdGF0aWMgaW50IHZpcnRpb19p bnRyX2VuYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5jOjY3CmVycm9yOiBkcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CnN0YXRpYyBpbnQgdm14bmV0M19kZXZfdmxhbl9maWx0ZXJfc2V0KHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJICAgICAgIHVpbnQxNl90IHZpZCwgaW50IG9uKTsK c3RhdGljIGludCB2bXhuZXQzX2Rldl92bGFuX29mZmxvYWRfc2V0KHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LCBpbnQgbWFzayk7CnN0YXRpYyB2b2lkIHZteG5ldDNfbWFjX2FkZHJfc2V0KHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LAoJCQkJIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CnN0 YXRpYyB2b2lkIHZteG5ldDNfaW50ZXJydXB0X2hhbmRsZXIodm9pZCAqcGFyYW0pOwoKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3ZteG5ldDMvdm14bmV0M19ldGhkZXYuYzo3Mgpl cnJvcjogZHJpdmVycy9uZXQvdm14bmV0My92bXhuZXQzX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5v dCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXYuYy4uLgpl cnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2LmM6IE5vIHN1Y2ggZmlsZSBvciBkaXJl Y3RvcnkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2X2NvcmUuaC4u LgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2X2NvcmUuaDogTm8gc3VjaCBmaWxl IG9yIGRpcmVjdG9yeQpDaGVja2luZyBwYXRjaCB0ZXN0L3Rlc3QvdmlydHVhbF9wbWQuYy4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKdmlydHVhbF9ldGhkZXZfcHJvbWlzY3VvdXNfbW9k ZV9kaXNhYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2IF9fcnRlX3VudXNlZCkKe30KCnN0YXRp YyB2b2lkCnZpcnR1YWxfZXRoZGV2X21hY19hZGRyZXNzX3NldChfX3J0ZV91bnVzZWQgc3RydWN0 IHJ0ZV9ldGhfZGV2ICpkZXYsCi0tCnsKfQoKc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29w cyB2aXJ0dWFsX2V0aGRldl9kZWZhdWx0X2Rldl9vcHMgPSB7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiB0ZXN0L3Rlc3QvdmlydHVhbF9wbWQuYzoyMTYKZXJyb3I6IHRlc3QvdGVzdC92aXJ0dWFsX3Bt ZC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQoqUmVwbzogZHBkay1uZXh0LWNyeXB0bwpDaGVja2lu ZyBwYXRjaCBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9kZXByZWNhdGlvbi5yc3QuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CiAgYmV0d2VlbiB0aGUgVkYgcmVwcmVzZW50b3IgYW5kIHRoZSBW RiBvciB0aGUgcGFyZW50IFBGLiBUaG9zZSBuZXcgZmllbGRzCiAgYXJlIHRvIGJlIGluY2x1ZGVk IGluIGBgcnRlX2V0aF9kZXZfaW5mb2BgIHN0cnVjdC4KCiogZXRoZGV2OiBUaGUgcHJvdG90eXBl IGFuZCB0aGUgYmVoYXZpb3Igb2YKICBgYGRldl9vcHMtPmV0aF9tYWNfYWRkcl9zZXQoKWBgIHdp bGwgY2hhbmdlIGluIHYxOC4wNS4gQSByZXR1cm4gY29kZQogIHdpbGwgYmUgYWRkZWQgdG8gbm90 aWZ5IHRoZSBjYWxsZXIgaWYgYW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIFBNRC4gSW4KICBgYHJ0 ZV9ldGhfZGV2X2RlZmF1bHRfbWFjX2FkZHJfc2V0KClgYCwgdGhlIG5ldyBkZWZhdWx0IE1BQyBh ZGRyZXNzCiAgd2lsbCBiZSBjb3BpZWQgaW4gYGBkZXYtPmRhdGEtPm1hY19hZGRyc1swXWBgIG9u bHkgaWYgdGhlIG9wZXJhdGlvbiBpcwogIHN1Y2Nlc3NmdWwuIFRoaXMgbW9kaWZpY2F0aW9uIHdp bGwgb25seSBpbXBhY3QgdGhlIFBNRHMsIG5vdCB0aGUKICBhcHBsaWNhdGlvbnMuCgoqIGk0MGU6 IFRoZSBkZWZhdWx0IGZsZXhpYmxlIHBheWxvYWQgY29uZmlndXJhdGlvbiB3aGljaCBleHRyYWN0 cyB0aGUgZmlyc3QgMTYKICBieXRlcyBvZiB0aGUgcGF5bG9hZCBmb3IgUlNTIHdpbGwgYmUgZGVw cmVjYXRlZCBzdGFydGluZyBmcm9tIDE4LjAyLiBJZgogIHJlcXVpcmVkIHRoZSBwcmV2aW91cyBi ZWhhdmlvciBjYW4gYmUgY29uZmlndXJlZCB1c2luZyBleGlzdGluZyBmbG93CgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9kZXByZWNhdGlvbi5yc3Q6MTMxCmVycm9y OiBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9kZXByZWNhdGlvbi5yc3Q6IHBhdGNoIGRvZXMgbm90IGFw cGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Fyay9hcmtfZXRoZGV2LmMuLi4KZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CnN0YXRpYyBpbnQgZXRoX2Fya19kZXZfc3RhdHNfZ2V0KHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkJICBzdHJ1Y3QgcnRlX2V0aF9zdGF0cyAqc3RhdHMp OwpzdGF0aWMgdm9pZCBldGhfYXJrX2Rldl9zdGF0c19yZXNldChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldik7CnN0YXRpYyB2b2lkIGV0aF9hcmtfc2V0X2RlZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsCgkJCQkJIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CnN0YXRp YyBpbnQgZXRoX2Fya19tYWNhZGRyX2FkZChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJICAg ICAgIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkciwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L2Fyay9hcmtfZXRoZGV2LmM6NjkKZXJyb3I6IGRyaXZlcnMvbmV0L2Fyay9hcmtf ZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2F2Zi9hdmZfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnN0YXRpYyBp bnQgYXZmX2Rldl9yc3NfaGFzaF9jb25mX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJ CSAgICAgc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mKTsKc3RhdGljIGludCBhdmZf ZGV2X210dV9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IG10dSk7CnN0YXRp YyB2b2lkIGF2Zl9kZXZfc2V0X2RlZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsCgkJCQkJIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CnN0YXRpYyBpbnQgYXZmX2Rl dl9yeF9xdWV1ZV9pbnRyX2VuYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCQl1aW50 MTZfdCBxdWV1ZV9pZCk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9hdmYvYXZm X2V0aGRldi5jOjY1CmVycm9yOiBkcml2ZXJzL25ldC9hdmYvYXZmX2V0aGRldi5jOiBwYXRjaCBk b2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ibnh0L2JueHRfZXRoZGV2 LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKc3RhdGljIHZv aWQKYm54dF9zZXRfZGVmYXVsdF9tYWNfYWRkcl9vcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg c3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCnsKCXN0cnVjdCBibnh0ICpicCA9IChzdHJ1Y3QgYm54 dCAqKWRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJz L25ldC9ibnh0L2JueHRfZXRoZGV2LmM6MTM3MAplcnJvcjogZHJpdmVycy9uZXQvYm54dC9ibnh0 X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9ib25kaW5nL3J0ZV9ldGhfYm9uZF9wbWQuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZApib25kX2V0aGRldl9tYWNfYWRkcmVzc19zZXQo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICphZGRyKQotLQoJCVJU RV9CT05EX0xPRyhFUlIsICJGYWlsZWQgdG8gdXBkYXRlIE1BQyBhZGRyZXNzIik7Cn0KCmNvbnN0 IHN0cnVjdCBldGhfZGV2X29wcyBkZWZhdWx0X2Rldl9vcHMgPSB7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9ib25kaW5nL3J0ZV9ldGhfYm9uZF9wbWQuYzoyODcyCmVycm9yOiBk cml2ZXJzL25ldC9ib25kaW5nL3J0ZV9ldGhfYm9uZF9wbWQuYzogcGF0Y2ggZG9lcyBub3QgYXBw bHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVfZXRoZGV2LmMuLi4KZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKdm9pZCBjeGdiZV9tYWNfYWRk cl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICphZGRyKQp7 CglzdHJ1Y3QgcG9ydF9pbmZvICpwaSA9IChzdHJ1Y3QgcG9ydF9pbmZvICopKGRldi0+ZGF0YS0+ ZGV2X3ByaXZhdGUpOwoJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSBwaS0+YWRhcHRlcjsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2JlX2V0aGRldi5jOjEwNTgK ZXJyb3I6IGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2JlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9jeGdiZS9jeGdiZV9wZnZmLmguLi4KZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnZvaWQgY3hnYmVfZGV2X3Byb21pc2N1b3VzX2Rpc2Fi bGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KTsKdm9pZCBjeGdiZV9kZXZfYWxsbXVsdGlj YXN0X2VuYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpOwp2b2lkIGN4Z2JlX2Rldl9h bGxtdWx0aWNhc3RfZGlzYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpOwp2b2lkIGN4 Z2JlX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2Fk ZHIgKmFkZHIpOwppbnQgY3hnYmVfZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0 aF9kZXYpOwppbnQgY3hnYmVfZGV2X3R4X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfZXRoX2RldiAq ZXRoX2RldiwgdWludDE2X3QgcXVldWVfaWR4LAoJCQkgICAgIHVpbnQxNl90IG5iX2Rlc2MsIHVu c2lnbmVkIGludCBzb2NrZXRfaWQsCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9j eGdiZS9jeGdiZV9wZnZmLmg6MTYKZXJyb3I6IGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2JlX3BmdmYu aDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZHBhYS9k cGFhX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJZm1hbl9pZl9jbGVh cl9tYWNfYWRkcihkcGFhX2ludGYtPmZpZiwgaW5kZXgpOwp9CgpzdGF0aWMgdm9pZApkcGFhX2Rl dl9zZXRfbWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJICAgICAgIHN0cnVjdCBl dGhlcl9hZGRyICphZGRyKQp7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9kcGFh L2RwYWFfZXRoZGV2LmM6ODEzCmVycm9yOiBkcml2ZXJzL25ldC9kcGFhL2RwYWFfZXRoZGV2LmM6 IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2RwYWEyL2Rw YWEyX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkiZXJyb3I6IFJl bW92aW5nIHRoZSBNQUMgQUREUiBmYWlsZWQ6IGVyciA9ICVkIiwgcmV0KTsKfQoKc3RhdGljIHZv aWQKZHBhYTJfZGV2X3NldF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkgICAg ICAgc3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2RwYWEyL2RwYWEyX2V0aGRldi5jOjEwMTkKZXJyb3I6IGRyaXZlcnMvbmV0L2RwYWEy L2RwYWEyX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9lMTAwMC9pZ2JfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkJCSAgIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkciwKCQkJICAgdWludDMyX3QgaW5kZXgs IHVpbnQzMl90IHBvb2wpOwpzdGF0aWMgdm9pZCBldGhfaWdiX3Jhcl9jbGVhcihzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwgdWludDMyX3QgaW5kZXgpOwpzdGF0aWMgdm9pZCBldGhfaWdiX2RlZmF1 bHRfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCXN0cnVjdCBldGhlcl9h ZGRyICphZGRyKTsKCnN0YXRpYyB2b2lkIGlnYnZmX2ludHJfZGlzYWJsZShzdHJ1Y3QgZTEwMDBf aHcgKmh3KTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhk ZXYuYzoxNDUKZXJyb3I6IGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYzogcGF0Y2ggZG9l cyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZmFpbHNhZmUvZmFpbHNhZmVf b3BzLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gMDsKfQoKc3RhdGlj IHZvaWQKZnNfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRo ZXJfYWRkciAqbWFjX2FkZHIpCi0tCglmc191bmxvY2soZGV2LCAwKTsKfQoKc3RhdGljIGludAoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZmFpbHNhZmUvZmFpbHNhZmVfb3BzLmM6 OTk3CmVycm9yOiBkcml2ZXJzL25ldC9mYWlsc2FmZS9mYWlsc2FmZV9vcHMuYzogcGF0Y2ggZG9l cyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5j Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50IGk0MGVfZ2V0X2VlcHJv bShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJICAgc3RydWN0IHJ0ZV9kZXZfZWVwcm9tX2lu Zm8gKmVlcHJvbSk7CgpzdGF0aWMgdm9pZCBpNDBlX3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LAoJCQkJICAgICAgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRy KTsKCnN0YXRpYyBpbnQgaTQwZV9kZXZfbXR1X3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg dWludDE2X3QgbXR1KTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2k0MGUvaTQw ZV9ldGhkZXYuYzozNjkKZXJyb3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYzogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0 aGRldl92Zi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50IGk0MGV2 Zl9kZXZfcnNzX2hhc2hfY29uZl9nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkJc3Ry dWN0IHJ0ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mKTsKc3RhdGljIGludCBpNDBldmZfZGV2X210 dV9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IG10dSk7CnN0YXRpYyB2b2lk IGk0MGV2Zl9zZXRfZGVmYXVsdF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJ CQlzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpzdGF0aWMgaW50Cmk0MGV2Zl9kZXZfcnhf cXVldWVfaW50cl9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHF1ZXVl X2lkKTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXZf dmYuYzoxMjAKZXJyb3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXZfdmYuYzogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRo ZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnN0YXRpYyBpbnQgaXhnYmVfYWRk X3JhcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRy LAoJCQkgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHBvb2wpOwpzdGF0aWMgdm9pZCBpeGdiZV9y ZW1vdmVfcmFyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBpbmRleCk7CnN0YXRp YyB2b2lkIGl4Z2JlX3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LAoJCQkJCSAgIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CnN0YXRpYyB2b2lkIGl4Z2Jl X2RjYl9pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcsIHN0cnVjdCBpeGdiZV9kY2JfY29uZmlnICpk Y2JfY29uZmlnKTsKc3RhdGljIGJvb2wgaXNfZGV2aWNlX3N1cHBvcnRlZChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldiwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2Jl X2V0aGRldi5jOjIyNwplcnJvcjogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmM6IHBh dGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4NC5o Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp2b2lkIG1seDRfbWFjX2FkZHJfcmVtb3Zl KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBpbmRleCk7CmludCBtbHg0X21hY19h ZGRyX2FkZChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19h ZGRyLAoJCSAgICAgIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCB2bWRxKTsKdm9pZCBtbHg0X21h Y19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1h Y19hZGRyKTsKaW50IG1seDRfdmxhbl9maWx0ZXJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2 LCB1aW50MTZfdCB2bGFuX2lkLCBpbnQgb24pOwppbnQgbWx4NF9zdGF0c19nZXQoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBydGVfZXRoX3N0YXRzICpzdGF0cyk7CnZvaWQgbWx4NF9z dGF0c19yZXNldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CgplcnJvcjogcGF0Y2ggZmFpbGVk OiBkcml2ZXJzL25ldC9tbHg0L21seDQuaDoxMzEKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4 NC5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0 L21seDRfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAqICAgUG9pbnRl ciB0byBFdGhlcm5ldCBkZXZpY2Ugc3RydWN0dXJlLgogKiBAcGFyYW0gbWFjX2FkZHIKICogICBN QUMgYWRkcmVzcyB0byByZWdpc3Rlci4KICovCnZvaWQKLS0KCW1seDRfbWFjX2FkZHJfYWRkKGRl diwgbWFjX2FkZHIsIDAsIDApOwp9CgovKioKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L21seDQvbWx4NF9ldGhkZXYuYzo1MzQKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9l dGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv bWx4NS9tbHg1LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnZvaWQgbWx4NV9tYWNf YWRkcl9yZW1vdmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGluZGV4KTsKaW50 IG1seDVfbWFjX2FkZHJfYWRkKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJf YWRkciAqbWFjLAoJCSAgICAgIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCB2bWRxKTsKdm9pZCBt bHg1X21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2Fk ZHIgKm1hY19hZGRyKTsKCi8qIG1seDVfcnNzLmMgKi8KCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk cml2ZXJzL25ldC9tbHg1L21seDUuaDoxOTUKZXJyb3I6IGRyaXZlcnMvbmV0L21seDUvbWx4NS5o OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg1L21s eDVfbWFjLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiAqICAgUG9pbnRlciB0byBF dGhlcm5ldCBkZXZpY2Ugc3RydWN0dXJlLgogKiBAcGFyYW0gbWFjX2FkZHIKICogICBNQUMgYWRk cmVzcyB0byByZWdpc3Rlci4KICovCnZvaWQKbWx4NV9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcikKewoJaW50IHJldDsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9tYWMuYzoxMjQKZXJyb3I6 IGRyaXZlcnMvbmV0L21seDUvbWx4NV9tYWMuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvbXZwcDIvbXJ2bF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZSBzdHJ1Y3R1cmUu CiAqIEBwYXJhbSBtYWNfYWRkcgogKiAgIE1BQyBhZGRyZXNzIHRvIHJlZ2lzdGVyLgogKi8Kc3Rh dGljIHZvaWQKLS0KCQlyZXR1cm47CgoJcmV0ID0gcHAyX3BwaW9fc2V0X21hY19hZGRyKHByaXYt PnBwaW8sIG1hY19hZGRyLT5hZGRyX2J5dGVzKTsKCWlmIChyZXQpIHsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L212cHAyL21ydmxfZXRoZGV2LmM6MTA2MQplcnJvcjogZHJpdmVy cy9uZXQvbXZwcDIvbXJ2bF9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvbnVsbC9ydGVfZXRoX251bGwuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZApldGhfbWFjX2FkZHJlc3Nfc2V0 KF9fcnRlX3VudXNlZCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKLS0Kewp9CgpzdGF0aWMgY29u c3Qgc3RydWN0IGV0aF9kZXZfb3BzIG9wcyA9IHsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L251bGwvcnRlX2V0aF9udWxsLmM6NDU5CmVycm9yOiBkcml2ZXJzL25ldC9udWxsL3J0 ZV9ldGhfbnVsbC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9vY3Rlb250eC9vY3Rlb250eF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCW9jdGVvbnR4X3BvcnRfc3RhdHNfY2xyKG5pYyk7Cn0KCnN0YXRpYyB2b2lkCm9jdGVv bnR4X2Rldl9kZWZhdWx0X21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJ CQlzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikKewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvb2N0ZW9udHgvb2N0ZW9udHhfZXRoZGV2LmM6NTg2CmVycm9yOiBkcml2ZXJzL25ldC9v Y3Rlb250eC9vY3Rlb250eF9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvcWVkZS9xZWRlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoJcWVkZV9tYWNfaW50X29wcyhldGhfZGV2LCAmdWNhc3QsIGZhbHNlKTsKfQoK c3RhdGljIHZvaWQKcWVkZV9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2 LCBzdHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpCnsKCXN0cnVjdCBxZWRlX2RldiAqcWRldiA9 IFFFREVfSU5JVF9RREVWKGV0aF9kZXYpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvcWVkZS9xZWRlX2V0aGRldi5jOjEwNDEKZXJyb3I6IGRyaXZlcnMvbmV0L3FlZGUvcWVkZV9l dGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv c2ZjL3NmY19ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVNGQ19BU1NF UlQocmMgPiAwKTsKCXJldHVybiAtcmM7Cn0Kc3RhdGljIHZvaWQKc2ZjX21hY19hZGRyX3NldChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKQotLQoJ aW50IHJjOwoKCXNmY19hZGFwdGVyX2xvY2soc2EpOwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L3NmYy9zZmNfZXRoZGV2LmM6OTE1CmVycm9yOiBkcml2ZXJzL25ldC9zZmMvc2Zj X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9zemVkYXRhMi9ydGVfZXRoX3N6ZWRhdGEyLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKZXRoX21hY19hZGRyX3NldChzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiBfX3J0ZV91bnVzZWQsCi0tCnsKfQoKc3RhdGljIHZvaWQKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3N6ZWRhdGEyL3J0ZV9ldGhfc3plZGF0YTIuYzoxMzYx CmVycm9yOiBkcml2ZXJzL25ldC9zemVkYXRhMi9ydGVfZXRoX3N6ZWRhdGEyLmM6IHBhdGNoIGRv ZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5j Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCXRhcF9mbG93X2ltcGxpY2l0X2Rlc3Ry b3kocG1kLCBUQVBfUkVNT1RFX0FMTE1VTFRJKTsKfQoKc3RhdGljIHZvaWQKdGFwX21hY19zZXQo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcikKLS0K CX0KfQoKc3RhdGljIGludAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvdGFwL3J0 ZV9ldGhfdGFwLmM6OTM0CmVycm9yOiBkcml2ZXJzL25ldC90YXAvcnRlX2V0aF90YXAuYzogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRp b19ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJCXN0cnVjdCBldGhl cl9hZGRyICptYWNfYWRkciwKCQkJCXVpbnQzMl90IGluZGV4LCB1aW50MzJfdCB2bWRxKTsKc3Rh dGljIHZvaWQgdmlydGlvX21hY19hZGRyX3JlbW92ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg dWludDMyX3QgaW5kZXgpOwpzdGF0aWMgdm9pZCB2aXJ0aW9fbWFjX2FkZHJfc2V0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LAoJCQkJc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKTsKCnN0YXRp YyBpbnQgdmlydGlvX2ludHJfZW5hYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmM6NjcKZXJy b3I6IGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFw cGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3ZteG5ldDMvdm14bmV0M19ldGhkZXYuYy4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGludCB2bXhuZXQzX2Rldl92bGFu X2ZpbHRlcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkgICAgICAgdWludDE2X3Qg dmlkLCBpbnQgb24pOwpzdGF0aWMgaW50IHZteG5ldDNfZGV2X3ZsYW5fb2ZmbG9hZF9zZXQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIGludCBtYXNrKTsKc3RhdGljIHZvaWQgdm14bmV0M19tYWNf YWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkgc3RydWN0IGV0aGVyX2FkZHIg Km1hY19hZGRyKTsKc3RhdGljIHZvaWQgdm14bmV0M19pbnRlcnJ1cHRfaGFuZGxlcih2b2lkICpw YXJhbSk7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvdm14bmV0My92bXhuZXQz X2V0aGRldi5jOjcyCmVycm9yOiBkcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZXRoZGV2LmM6 IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRl X2V0aGRldi5jLi4uCmVycm9yOiBsaWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXYuYzogTm8gc3Vj aCBmaWxlIG9yIGRpcmVjdG9yeQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRlX2V0aGVyL3J0ZV9l dGhkZXZfY29yZS5oLi4uCmVycm9yOiBsaWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXZfY29yZS5o OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CkNoZWNraW5nIHBhdGNoIHRlc3QvdGVzdC92aXJ0 dWFsX3BtZC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp2aXJ0dWFsX2V0aGRldl9w cm9taXNjdW91c19tb2RlX2Rpc2FibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgX19ydGVfdW51 c2VkKQp7fQoKc3RhdGljIHZvaWQKdmlydHVhbF9ldGhkZXZfbWFjX2FkZHJlc3Nfc2V0KF9fcnRl X3VudXNlZCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKLS0Kewp9CgpzdGF0aWMgY29uc3Qgc3Ry dWN0IGV0aF9kZXZfb3BzIHZpcnR1YWxfZXRoZGV2X2RlZmF1bHRfZGV2X29wcyA9IHsKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IHRlc3QvdGVzdC92aXJ0dWFsX3BtZC5jOjIxNgplcnJvcjogdGVzdC90 ZXN0L3ZpcnR1YWxfcG1kLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CipSZXBvOiBkcGRrLW5leHQt dmlydGlvCkNoZWNraW5nIHBhdGNoIGRvYy9ndWlkZXMvcmVsX25vdGVzL2RlcHJlY2F0aW9uLnJz dC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICBiZXR3ZWVuIHRoZSBWRiByZXByZXNl bnRvciBhbmQgdGhlIFZGIG9yIHRoZSBwYXJlbnQgUEYuIFRob3NlIG5ldyBmaWVsZHMKICBhcmUg dG8gYmUgaW5jbHVkZWQgaW4gYGBydGVfZXRoX2Rldl9pbmZvYGAgc3RydWN0LgoKKiBldGhkZXY6 IFRoZSBwcm90b3R5cGUgYW5kIHRoZSBiZWhhdmlvciBvZgogIGBgZGV2X29wcy0+ZXRoX21hY19h ZGRyX3NldCgpYGAgd2lsbCBjaGFuZ2UgaW4gdjE4LjA1LiBBIHJldHVybiBjb2RlCiAgd2lsbCBi ZSBhZGRlZCB0byBub3RpZnkgdGhlIGNhbGxlciBpZiBhbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUg UE1ELiBJbgogIGBgcnRlX2V0aF9kZXZfZGVmYXVsdF9tYWNfYWRkcl9zZXQoKWBgLCB0aGUgbmV3 IGRlZmF1bHQgTUFDIGFkZHJlc3MKICB3aWxsIGJlIGNvcGllZCBpbiBgYGRldi0+ZGF0YS0+bWFj X2FkZHJzWzBdYGAgb25seSBpZiB0aGUgb3BlcmF0aW9uIGlzCiAgc3VjY2Vzc2Z1bC4gVGhpcyBt b2RpZmljYXRpb24gd2lsbCBvbmx5IGltcGFjdCB0aGUgUE1Ecywgbm90IHRoZQogIGFwcGxpY2F0 aW9ucy4KCiogaTQwZTogVGhlIGRlZmF1bHQgZmxleGlibGUgcGF5bG9hZCBjb25maWd1cmF0aW9u IHdoaWNoIGV4dHJhY3RzIHRoZSBmaXJzdCAxNgogIGJ5dGVzIG9mIHRoZSBwYXlsb2FkIGZvciBS U1Mgd2lsbCBiZSBkZXByZWNhdGVkIHN0YXJ0aW5nIGZyb20gMTguMDIuIElmCiAgcmVxdWlyZWQg dGhlIHByZXZpb3VzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIGV4aXN0aW5nIGZs b3cKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvcmVsX25vdGVzL2RlcHJlY2F0aW9u LnJzdDoxMzEKZXJyb3I6IGRvYy9ndWlkZXMvcmVsX25vdGVzL2RlcHJlY2F0aW9uLnJzdDogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvYXJrL2Fya19ldGhk ZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RhdGljIGludCBldGhfYXJrX2Rl dl9zdGF0c19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkgIHN0cnVjdCBydGVfZXRo X3N0YXRzICpzdGF0cyk7CnN0YXRpYyB2b2lkIGV0aF9hcmtfZGV2X3N0YXRzX3Jlc2V0KHN0cnVj dCBydGVfZXRoX2RldiAqZGV2KTsKc3RhdGljIHZvaWQgZXRoX2Fya19zZXRfZGVmYXVsdF9tYWNf YWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCQkgc3RydWN0IGV0aGVyX2FkZHIgKm1h Y19hZGRyKTsKc3RhdGljIGludCBldGhfYXJrX21hY2FkZHJfYWRkKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LAoJCQkgICAgICAgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyLAoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvYXJrL2Fya19ldGhkZXYuYzo2OQplcnJvcjogZHJpdmVy cy9uZXQvYXJrL2Fya19ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0 Y2ggZHJpdmVycy9uZXQvYXZmL2F2Zl9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKc3RhdGljIGludCBhdmZfZGV2X3Jzc19oYXNoX2NvbmZfZ2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LAoJCQkJICAgICBzdHJ1Y3QgcnRlX2V0aF9yc3NfY29uZiAqcnNzX2NvbmYpOwpz dGF0aWMgaW50IGF2Zl9kZXZfbXR1X3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2 X3QgbXR1KTsKc3RhdGljIHZvaWQgYXZmX2Rldl9zZXRfZGVmYXVsdF9tYWNfYWRkcihzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwKCQkJCQkgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKTsKc3Rh dGljIGludCBhdmZfZGV2X3J4X3F1ZXVlX2ludHJfZW5hYmxlKHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2LAoJCQkJCXVpbnQxNl90IHF1ZXVlX2lkKTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2F2Zi9hdmZfZXRoZGV2LmM6NjUKZXJyb3I6IGRyaXZlcnMvbmV0L2F2Zi9hdmZfZXRo ZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2Ju eHQvYm54dF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiAw Owp9CgpzdGF0aWMgdm9pZApibnh0X3NldF9kZWZhdWx0X21hY19hZGRyX29wKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikKewoJc3RydWN0IGJueHQgKmJw ID0gKHN0cnVjdCBibnh0ICopZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L2JueHQvYm54dF9ldGhkZXYuYzoxMzcwCmVycm9yOiBkcml2ZXJz L25ldC9ibnh0L2JueHRfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L2JvbmRpbmcvcnRlX2V0aF9ib25kX3BtZC5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCmJvbmRfZXRoZGV2X21h Y19hZGRyZXNzX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIg KmFkZHIpCi0tCgkJUlRFX0JPTkRfTE9HKEVSUiwgIkZhaWxlZCB0byB1cGRhdGUgTUFDIGFkZHJl c3MiKTsKfQoKY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIGRlZmF1bHRfZGV2X29wcyA9IHsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2JvbmRpbmcvcnRlX2V0aF9ib25kX3BtZC5j OjI4NzIKZXJyb3I6IGRyaXZlcnMvbmV0L2JvbmRpbmcvcnRlX2V0aF9ib25kX3BtZC5jOiBwYXRj aCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9jeGdiZS9jeGdiZV9l dGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiAwOwp9Cgp2b2lk IGN4Z2JlX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVy X2FkZHIgKmFkZHIpCnsKCXN0cnVjdCBwb3J0X2luZm8gKnBpID0gKHN0cnVjdCBwb3J0X2luZm8g KikoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7CglzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IHBp LT5hZGFwdGVyOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVf ZXRoZGV2LmM6MTA1OAplcnJvcjogZHJpdmVycy9uZXQvY3hnYmUvY3hnYmVfZXRoZGV2LmM6IHBh dGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2Jl X3BmdmYuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKdm9pZCBjeGdiZV9kZXZfcHJv bWlzY3VvdXNfZGlzYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpOwp2b2lkIGN4Z2Jl X2Rldl9hbGxtdWx0aWNhc3RfZW5hYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2Rldik7CnZv aWQgY3hnYmVfZGV2X2FsbG11bHRpY2FzdF9kaXNhYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZXRo X2Rldik7CnZvaWQgY3hnYmVfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QgZXRoZXJfYWRkciAqYWRkcik7CmludCBjeGdiZV9kZXZfY29uZmlndXJlKHN0cnVjdCBy dGVfZXRoX2RldiAqZXRoX2Rldik7CmludCBjeGdiZV9kZXZfdHhfcXVldWVfc2V0dXAoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpldGhfZGV2LCB1aW50MTZfdCBxdWV1ZV9pZHgsCgkJCSAgICAgdWludDE2 X3QgbmJfZGVzYywgdW5zaWduZWQgaW50IHNvY2tldF9pZCwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2N4Z2JlL2N4Z2JlX3BmdmYuaDoxNgplcnJvcjogZHJpdmVycy9uZXQvY3hn YmUvY3hnYmVfcGZ2Zi5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9kcGFhL2RwYWFfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CglmbWFuX2lmX2NsZWFyX21hY19hZGRyKGRwYWFfaW50Zi0+ZmlmLCBpbmRleCk7Cn0KCnN0YXRp YyB2b2lkCmRwYWFfZGV2X3NldF9tYWNfYWRkcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkg ICAgICAgc3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L2RwYWEvZHBhYV9ldGhkZXYuYzo4MTMKZXJyb3I6IGRyaXZlcnMvbmV0L2RwYWEv ZHBhYV9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvZHBhYTIvZHBhYTJfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkJCSJlcnJvcjogUmVtb3ZpbmcgdGhlIE1BQyBBRERSIGZhaWxlZDogZXJyID0gJWQiLCByZXQp Owp9CgpzdGF0aWMgdm9pZApkcGFhMl9kZXZfc2V0X21hY19hZGRyKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LAoJCSAgICAgICBzdHJ1Y3QgZXRoZXJfYWRkciAqYWRkcikKewoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvZHBhYTIvZHBhYTJfZXRoZGV2LmM6MTAxOQplcnJvcjogZHJp dmVycy9uZXQvZHBhYTIvZHBhYTJfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKCQkJICAgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyLAoJCQkgICB1 aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG9vbCk7CnN0YXRpYyB2b2lkIGV0aF9pZ2JfcmFyX2Ns ZWFyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBpbmRleCk7CnN0YXRpYyB2b2lk IGV0aF9pZ2JfZGVmYXVsdF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJ c3RydWN0IGV0aGVyX2FkZHIgKmFkZHIpOwoKc3RhdGljIHZvaWQgaWdidmZfaW50cl9kaXNhYmxl KHN0cnVjdCBlMTAwMF9odyAqaHcpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv ZTEwMDAvaWdiX2V0aGRldi5jOjE0NQplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2V0aGRl di5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9mYWls c2FmZS9mYWlsc2FmZV9vcHMuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXJldHVy biAwOwp9CgpzdGF0aWMgdm9pZApmc19tYWNfYWRkcl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcikKLS0KCWZzX3VubG9jayhkZXYsIDApOwp9 CgpzdGF0aWMgaW50CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9mYWlsc2FmZS9m YWlsc2FmZV9vcHMuYzo5OTcKZXJyb3I6IGRyaXZlcnMvbmV0L2ZhaWxzYWZlL2ZhaWxzYWZlX29w cy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBl L2k0MGVfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnN0YXRpYyBpbnQg aTQwZV9nZXRfZWVwcm9tKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCQkgICBzdHJ1Y3QgcnRl X2Rldl9lZXByb21faW5mbyAqZWVwcm9tKTsKCnN0YXRpYyB2b2lkIGk0MGVfc2V0X2RlZmF1bHRf bWFjX2FkZHIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQkgICAgICBzdHJ1Y3QgZXRoZXJf YWRkciAqbWFjX2FkZHIpOwoKc3RhdGljIGludCBpNDBlX2Rldl9tdHVfc2V0KHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LCB1aW50MTZfdCBtdHUpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jOjM2OQplcnJvcjogZHJpdmVycy9uZXQvaTQwZS9pNDBl X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9pNDBlL2k0MGVfZXRoZGV2X3ZmLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnN0 YXRpYyBpbnQgaTQwZXZmX2Rldl9yc3NfaGFzaF9jb25mX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwKCQkJCQlzdHJ1Y3QgcnRlX2V0aF9yc3NfY29uZiAqcnNzX2NvbmYpOwpzdGF0aWMgaW50 IGk0MGV2Zl9kZXZfbXR1X3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgbXR1 KTsKc3RhdGljIHZvaWQgaTQwZXZmX3NldF9kZWZhdWx0X21hY19hZGRyKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LAoJCQkJCXN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcik7CnN0YXRpYyBpbnQK aTQwZXZmX2Rldl9yeF9xdWV1ZV9pbnRyX2VuYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg dWludDE2X3QgcXVldWVfaWQpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaTQw ZS9pNDBlX2V0aGRldl92Zi5jOjEyMAplcnJvcjogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRl dl92Zi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9p eGdiZS9peGdiZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKc3RhdGlj IGludCBpeGdiZV9hZGRfcmFyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJf YWRkciAqbWFjX2FkZHIsCgkJCSB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgcG9vbCk7CnN0YXRp YyB2b2lkIGl4Z2JlX3JlbW92ZV9yYXIoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90 IGluZGV4KTsKc3RhdGljIHZvaWQgaXhnYmVfc2V0X2RlZmF1bHRfbWFjX2FkZHIoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsCgkJCQkJICAgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKTsKc3Rh dGljIHZvaWQgaXhnYmVfZGNiX2luaXQoc3RydWN0IGl4Z2JlX2h3ICpodywgc3RydWN0IGl4Z2Jl X2RjYl9jb25maWcgKmRjYl9jb25maWcpOwpzdGF0aWMgYm9vbCBpc19kZXZpY2Vfc3VwcG9ydGVk KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9u ZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmM6MjI3CmVycm9yOiBkcml2ZXJzL25ldC9peGdiZS9peGdi ZV9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvbWx4NC9tbHg0LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnZvaWQgbWx4NF9t YWNfYWRkcl9yZW1vdmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGluZGV4KTsK aW50IG1seDRfbWFjX2FkZHJfYWRkKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRo ZXJfYWRkciAqbWFjX2FkZHIsCgkJICAgICAgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90IHZtZHEp Owp2b2lkIG1seDRfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3Qg ZXRoZXJfYWRkciAqbWFjX2FkZHIpOwppbnQgbWx4NF92bGFuX2ZpbHRlcl9zZXQoc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IHZsYW5faWQsIGludCBvbik7CmludCBtbHg0X3N0YXRz X2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IHJ0ZV9ldGhfc3RhdHMgKnN0YXRz KTsKdm9pZCBtbHg0X3N0YXRzX3Jlc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NC5oOjEzMQplcnJvcjogZHJpdmVy cy9uZXQvbWx4NC9tbHg0Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L21seDQvbWx4NF9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKICogICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZSBzdHJ1Y3R1cmUuCiAqIEBwYXJhbSBt YWNfYWRkcgogKiAgIE1BQyBhZGRyZXNzIHRvIHJlZ2lzdGVyLgogKi8Kdm9pZAotLQoJbWx4NF9t YWNfYWRkcl9hZGQoZGV2LCBtYWNfYWRkciwgMCwgMCk7Cn0KCi8qKgoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvbWx4NC9tbHg0X2V0aGRldi5jOjUzNAplcnJvcjogZHJpdmVycy9u ZXQvbWx4NC9tbHg0X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9tbHg1L21seDUuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK dm9pZCBtbHg1X21hY19hZGRyX3JlbW92ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDMy X3QgaW5kZXgpOwppbnQgbWx4NV9tYWNfYWRkcl9hZGQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs IHN0cnVjdCBldGhlcl9hZGRyICptYWMsCgkJICAgICAgdWludDMyX3QgaW5kZXgsIHVpbnQzMl90 IHZtZHEpOwp2b2lkIG1seDVfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBz dHJ1Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwoKLyogbWx4NV9yc3MuYyAqLwoKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NS5oOjE5NQplcnJvcjogZHJpdmVycy9u ZXQvbWx4NS9tbHg1Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvbmV0L21seDUvbWx4NV9tYWMuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICog ICBQb2ludGVyIHRvIEV0aGVybmV0IGRldmljZSBzdHJ1Y3R1cmUuCiAqIEBwYXJhbSBtYWNfYWRk cgogKiAgIE1BQyBhZGRyZXNzIHRvIHJlZ2lzdGVyLgogKi8Kdm9pZAptbHg1X21hY19hZGRyX3Nl dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyKQp7 CglpbnQgcmV0OwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NS9tbHg1X21h Yy5jOjEyNAplcnJvcjogZHJpdmVycy9uZXQvbWx4NS9tbHg1X21hYy5jOiBwYXRjaCBkb2VzIG5v dCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tdnBwMi9tcnZsX2V0aGRldi5jLi4u CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogKiAgIFBvaW50ZXIgdG8gRXRoZXJuZXQgZGV2 aWNlIHN0cnVjdHVyZS4KICogQHBhcmFtIG1hY19hZGRyCiAqICAgTUFDIGFkZHJlc3MgdG8gcmVn aXN0ZXIuCiAqLwpzdGF0aWMgdm9pZAotLQoJCXJldHVybjsKCglyZXQgPSBwcDJfcHBpb19zZXRf bWFjX2FkZHIocHJpdi0+cHBpbywgbWFjX2FkZHItPmFkZHJfYnl0ZXMpOwoJaWYgKHJldCkgewoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbXZwcDIvbXJ2bF9ldGhkZXYuYzoxMDYx CmVycm9yOiBkcml2ZXJzL25ldC9tdnBwMi9tcnZsX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9udWxsL3J0ZV9ldGhfbnVsbC5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCmV0aF9t YWNfYWRkcmVzc19zZXQoX19ydGVfdW51c2VkIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAotLQp7 Cn0KCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgb3BzID0gewoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvbnVsbC9ydGVfZXRoX251bGwuYzo0NTkKZXJyb3I6IGRyaXZl cnMvbmV0L251bGwvcnRlX2V0aF9udWxsLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L29jdGVvbnR4L29jdGVvbnR4X2V0aGRldi5jLi4uCmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgoJb2N0ZW9udHhfcG9ydF9zdGF0c19jbHIobmljKTsKfQoKc3Rh dGljIHZvaWQKb2N0ZW9udHhfZGV2X2RlZmF1bHRfbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LAoJCQkJCXN0cnVjdCBldGhlcl9hZGRyICphZGRyKQp7CgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9vY3Rlb250eC9vY3Rlb250eF9ldGhkZXYuYzo1ODYKZXJyb3I6 IGRyaXZlcnMvbmV0L29jdGVvbnR4L29jdGVvbnR4X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9xZWRlL3FlZGVfZXRoZGV2LmMuLi4KZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglxZWRlX21hY19pbnRfb3BzKGV0aF9kZXYsICZ1Y2Fz dCwgZmFsc2UpOwp9CgpzdGF0aWMgdm9pZApxZWRlX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmV0aF9kZXYsIHN0cnVjdCBldGhlcl9hZGRyICptYWNfYWRkcikKewoJc3RydWN0IHFl ZGVfZGV2ICpxZGV2ID0gUUVERV9JTklUX1FERVYoZXRoX2Rldik7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9xZWRlL3FlZGVfZXRoZGV2LmM6MTA0MQplcnJvcjogZHJpdmVycy9u ZXQvcWVkZS9xZWRlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9zZmMvc2ZjX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgoJU0ZDX0FTU0VSVChyYyA+IDApOwoJcmV0dXJuIC1yYzsKfQpzdGF0aWMgdm9pZApzZmNf bWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgZXRoZXJfYWRkciAq bWFjX2FkZHIpCi0tCglpbnQgcmM7CgoJc2ZjX2FkYXB0ZXJfbG9jayhzYSk7CgoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvc2ZjL3NmY19ldGhkZXYuYzo5MTUKZXJyb3I6IGRyaXZl cnMvbmV0L3NmYy9zZmNfZXRoZGV2LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L3N6ZWRhdGEyL3J0ZV9ldGhfc3plZGF0YTIuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZApldGhfbWFjX2FkZHJf c2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2IF9fcnRlX3VudXNlZCwKLS0Kewp9CgpzdGF0aWMg dm9pZAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvc3plZGF0YTIvcnRlX2V0aF9z emVkYXRhMi5jOjEzNjEKZXJyb3I6IGRyaXZlcnMvbmV0L3N6ZWRhdGEyL3J0ZV9ldGhfc3plZGF0 YTIuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvdGFw L3J0ZV9ldGhfdGFwLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJdGFwX2Zsb3df aW1wbGljaXRfZGVzdHJveShwbWQsIFRBUF9SRU1PVEVfQUxMTVVMVEkpOwp9CgpzdGF0aWMgdm9p ZAp0YXBfbWFjX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IGV0aGVyX2FkZHIg Km1hY19hZGRyKQotLQoJfQp9CgpzdGF0aWMgaW50CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC90YXAvcnRlX2V0aF90YXAuYzo5MzQKZXJyb3I6IGRyaXZlcnMvbmV0L3RhcC9ydGVf ZXRoX3RhcC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ CQkJc3RydWN0IGV0aGVyX2FkZHIgKm1hY19hZGRyLAoJCQkJdWludDMyX3QgaW5kZXgsIHVpbnQz Ml90IHZtZHEpOwpzdGF0aWMgdm9pZCB2aXJ0aW9fbWFjX2FkZHJfcmVtb3ZlKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LCB1aW50MzJfdCBpbmRleCk7CnN0YXRpYyB2b2lkIHZpcnRpb19tYWNfYWRk cl9zZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgkJCQlzdHJ1Y3QgZXRoZXJfYWRkciAqbWFj X2FkZHIpOwoKc3RhdGljIGludCB2aXJ0aW9faW50cl9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19l dGhkZXYuYzo2NwplcnJvcjogZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYzogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvdm14bmV0My92bXhu ZXQzX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMgaW50IHZt eG5ldDNfZGV2X3ZsYW5fZmlsdGVyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCSAg ICAgICB1aW50MTZfdCB2aWQsIGludCBvbik7CnN0YXRpYyBpbnQgdm14bmV0M19kZXZfdmxhbl9v ZmZsb2FkX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgaW50IG1hc2spOwpzdGF0aWMgdm9p ZCB2bXhuZXQzX21hY19hZGRyX3NldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQkJCSBzdHJ1 Y3QgZXRoZXJfYWRkciAqbWFjX2FkZHIpOwpzdGF0aWMgdm9pZCB2bXhuZXQzX2ludGVycnVwdF9o YW5kbGVyKHZvaWQgKnBhcmFtKTsKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC92 bXhuZXQzL3ZteG5ldDNfZXRoZGV2LmM6NzIKZXJyb3I6IGRyaXZlcnMvbmV0L3ZteG5ldDMvdm14 bmV0M19ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggbGliL2xp YnJ0ZV9ldGhlci9ydGVfZXRoZGV2LmMuLi4KZXJyb3I6IGxpYi9saWJydGVfZXRoZXIvcnRlX2V0 aGRldi5jOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJy dGVfZXRoZXIvcnRlX2V0aGRldl9jb3JlLmguLi4KZXJyb3I6IGxpYi9saWJydGVfZXRoZXIvcnRl X2V0aGRldl9jb3JlLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKQ2hlY2tpbmcgcGF0Y2gg dGVzdC90ZXN0L3ZpcnR1YWxfcG1kLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CnZp cnR1YWxfZXRoZGV2X3Byb21pc2N1b3VzX21vZGVfZGlzYWJsZShzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiBfX3J0ZV91bnVzZWQpCnt9CgpzdGF0aWMgdm9pZAp2aXJ0dWFsX2V0aGRldl9tYWNfYWRk cmVzc19zZXQoX19ydGVfdW51c2VkIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAotLQp7Cn0KCnN0 YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgdmlydHVhbF9ldGhkZXZfZGVmYXVsdF9kZXZf b3BzID0gewoKZXJyb3I6IHBhdGNoIGZhaWxlZDogdGVzdC90ZXN0L3ZpcnR1YWxfcG1kLmM6MjE2 CmVycm9yOiB0ZXN0L3Rlc3QvdmlydHVhbF9wbWQuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKCkRQ REsgU1RWIHRlYW0= --===============6528417529507118550==--