From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1J1dzq-0002kJ-6h for qemu-devel@nongnu.org; Mon, 10 Dec 2007 03:28:14 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1J1dzn-0002hx-L3 for qemu-devel@nongnu.org; Mon, 10 Dec 2007 03:28:13 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1J1dzn-0002hV-Bb for qemu-devel@nongnu.org; Mon, 10 Dec 2007 03:28:11 -0500 Received: from mx20.gnu.org ([199.232.41.8]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1J1dzk-0002Av-F8 for qemu-devel@nongnu.org; Mon, 10 Dec 2007 03:28:11 -0500 Received: from wa-out-1112.google.com ([209.85.146.183]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1J1dzh-0006n0-7a for qemu-devel@nongnu.org; Mon, 10 Dec 2007 03:28:07 -0500 Received: by wa-out-1112.google.com with SMTP id k22so3457550waf for ; Mon, 10 Dec 2007 00:28:01 -0800 (PST) Message-ID: Date: Mon, 10 Dec 2007 10:28:01 +0200 From: "Yuval Kashtan" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_28919_27884902.1197275281233" Subject: [Qemu-devel] [RFC] QEMU Dbus support - a proposal management API Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_28919_27884902.1197275281233 Content-Type: multipart/alternative; boundary="----=_Part_28920_19776859.1197275281234" ------=_Part_28920_19776859.1197275281234 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello All, Attached is a proposed patch which adds DBus support to QEMU. DBus is a standard message bus for linux ( http://www.freedesktop.org/wiki/Software/dbus ) The idea behind this is to allow for external programs such as controlling GUI or HyperVisors to communicate and control QEMU, in a standard manner. Although it is possible to connect to the monitor, an API is more standard, theres no need to parse texts and error messages, no internationalization problems and in general is a much better idea. Implementation: This is done by creating a DBus server from QEMU which raise signals and act upon methods. Methods mainly implement same logic as the current command line options and monitor does. How to use: To enable DBus support you'll have to add --enable-dbus when you execure configure script. Then when you execute QEMU, you'll have to add -dbus-service where service_name follows the DBus naming convention ( xxx.xxx.xxx....) To support QEMU configuration through DBus, you'll also have to add -dbus_configuration which will cause QEMU to wait until ConfigDone is called through the DBus interface. this allows external programs time to call DBus methods starting with Config_ which changes configuration (just as the CLI does) thus enabling invocation of QEMU without parameters (beside the DBus ones). With that, we have implemented a nice python script that reads VM's configuration from INI file. To compile this you will also have to compile the attached freedesktop.orgdsrv library (it is also attach for those who can't handle GIT) from: git://people.freedesktop.org/~shaharf/dsrv Features: Currently support was added to all important CLI configuration and some online monitor functions (such as connecting and disconnecting usb devices). configuration methods begins with Config_ prefix and monitor ones with Monitor_. For a complete list you can just execute qemu and connect with dbus-viewer to see what is supported. All the dbus handling routines can be found in dbus-monitor.c. I have two different implementations of this: 1) A single threaded version. which comply to the qemu standard of not opening additional threads. 2) A multi threaded version which open an additional, single, thread which handles all the DBus load. I actually believe this version is better as it allows QEMU to continue execution of guest operations even when there are DBus methods/signals to handle, whereas in the first option, DBus is integrated into QEMU mainloop. Also this makes it possible to monitor even during long operations (like monitoring the progress of savevm) Please comment both on the idea of management API and the proposed implementation. Attached are: RFC-QEMU-Dbus.patch - patch file including all necessary changes to qemu. was made against QEMU HEAD as of 23/9 morning. RFC-QEMU-Dbus-Interface.xml - the xml description of the DBus interface that I suggest. dsrv.tar.gz.txt - the dbus server library. BR, Yuval Kashtan, Qumranet Development Team. ------=_Part_28920_19776859.1197275281234 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello All,
Attached is a proposed patch which adds DBus support to QEMU. DBus is a standard message bus for linux (http://www.freedesktop.org/wiki/Software/dbus )
The idea behind this is to allow for external programs such as controlling GUI or HyperVisors to communicate and control QEMU, in a standard manner. Although it is possible to connect to the monitor, an API is more standard, theres no need to parse texts and error messages, no internationalization problems and in general is a much better idea.

Implementation:
This is done by creating a DBus server from QEMU which raise signals and act upon methods.
Methods mainly implement same logic as the current command line options and monitor does.

How to use:
To enable DBus support you'll have to add --enable-dbus when you execure configure script.
Then when you execute QEMU, you'll have to add -dbus-service <service_name> where service_name follows the DBus naming convention ( xxx.xxx.xxx....)
To support QEMU configuration through DBus,  you'll also have to add -dbus_configuration which will cause QEMU to wait until ConfigDone is called through the DBus interface. this allows external programs time to call DBus methods starting with Config_ which changes configuration (just as the CLI does) thus enabling invocation of QEMU without parameters (beside the DBus ones).
With that, we have implemented a nice python script that reads VM's configuration from INI file.

To compile this you will also have to compile the attached freedesktop.org dsrv library (it is also attach for those who can't handle GIT) from: git://people.freedesktop.org/~shaharf/dsrv

Features:
Currently support was added to all important CLI configuration and some online monitor functions (such as connecting and disconnecting usb devices).
configuration methods begins with Config_ prefix and monitor ones with Monitor_.
For a complete list you can just execute qemu and connect with dbus-viewer to see what is supported.


All the dbus handling routines can be found in dbus-monitor.c.
I have two different implementations of this:
1) A single threaded version. which comply to the qemu standard of not opening additional threads.
2) A multi threaded version which open an additional, single, thread which handles all the DBus load. I actually believe this version is better as it allows QEMU to continue execution of guest operations even when there are DBus methods/signals to handle, whereas in the first option, DBus is integrated into QEMU mainloop. Also this makes it possible to monitor even during long operations (like monitoring the progress of savevm)


Please comment both on the idea of management API and the proposed implementation.


Attached are:
RFC-QEMU-Dbus.patch - patch file including all necessary changes to qemu. was made against QEMU HEAD as of 23/9 morning.
RFC-QEMU-Dbus-Interface.xml - the xml description of the DBus interface that I suggest.
dsrv.tar.gz.txt - the dbus server library.



BR,
Yuval                        Kashtan,
Qumranet Development Team.
------=_Part_28920_19776859.1197275281234-- ------=_Part_28919_27884902.1197275281233 Content-Type: application/octet-stream; name=RFC-QEMU-DBus.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_f9zeuco50 Content-Disposition: attachment; filename=RFC-QEMU-DBus.patch ZGlmZiAtTmF1ciAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvY29uZmlndXJlIC95dXZhbC9EZXYv cWVtdS1kYnVzL3FlbXUvY29uZmlndXJlCi0tLSAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvY29u ZmlndXJlCTIwMDctMDktMjIgMTg6NDk6MTQuMDAwMDAwMDAwICswMjAwCisrKyAveXV2YWwvRGV2 L3FlbXUtZGJ1cy9xZW11L2NvbmZpZ3VyZQkyMDA3LTA5LTIzIDEyOjU5OjU0LjAwMDAwMDAwMCAr MDIwMApAQCAtMTAyLDYgKzEwMiw4IEBACiBkYXJ3aW5fdXNlcj0ibm8iCiBidWlsZF9kb2NzPSJu byIKIHVuYW1lX3JlbGVhc2U9IiIKK2RidXM9InllcyIKK2RidXNfc2VydmljZT0ib3JnLnFlbXUi CiAKICMgT1Mgc3BlY2lmaWMKIHRhcmdldG9zPWB1bmFtZSAtc2AKQEAgLTI5MSw2ICsyOTMsMTIg QEAKICAgOzsKICAgLS1lbmFibGUtdW5hbWUtcmVsZWFzZT0qKSB1bmFtZV9yZWxlYXNlPSIkb3B0 YXJnIgogICA7OworICAtLWRpc2FibGUtZGJ1cykgZGJ1cz0ibm8iCisgIDs7CisgIC0tZW5hYmxl LWRidXMpIGRidXM9InllcyIKKyAgOzsKKyAgLS1kYnVzLXNlcnZpY2U9KikgZGJ1c19zZXJ2aWNl PSIkb3B0YXJnIgorICA7OwogICAtLXNwYXJjX2NwdT0qKQogICAgICAgc3BhcmNfY3B1PSIkb3B0 YXJnIgogICAgICAgY2FzZSAkc3BhcmNfY3B1IGluCkBAIC0zOTEsNiArMzk5LDkgQEAKIGVjaG8g IiAgLS1mbW9kLWxpYiAgICAgICAgICAgICAgIHBhdGggdG8gRk1PRCBsaWJyYXJ5IgogZWNobyAi ICAtLWZtb2QtaW5jICAgICAgICAgICAgICAgcGF0aCB0byBGTU9EIGluY2x1ZGVzIgogZWNobyAi ICAtLWVuYWJsZS11bmFtZS1yZWxlYXNlPVIgUmV0dXJuIFIgZm9yIHVuYW1lIC1yIGluIHVzZXJt b2RlIGVtdWxhdGlvbiIKK2VjaG8gIiAgLS1lbmFibGUtZGJ1cyAgICAgICAgICAgIGVuYWJsZSBE QnVzIG1vbml0b3Igc2VydmljZSIKK2VjaG8gIiAgLS1kaXNhYmxlLWRidXMgICAgICAgICAgIGRp c2FibGUgREJ1cyBtb25pdG9yIHNlcnZpY2UiCitlY2hvICIgIC0tZGJ1cy1zZXJ2aWNlPXNlcnZp Y2UgICBzZXQgdGhlIGRidXMgc2VydmljZSBuYW1lIgogZWNobyAiICAtLXNwYXJjX2NwdT1WICAg ICAgICAgICAgQnVpbGQgcWVtdSBmb3IgU3BhcmMgYXJjaGl0ZWN0dXJlIHY3LCB2OCwgdjhwbHVz LCB2OHBsdXNhLCB2OSIKIGVjaG8gIiIKIGVjaG8gIk5PVEU6IFRoZSBvYmplY3QgZmlsZXMgYXJl IGJ1aWx0IGF0IHRoZSBwbGFjZSB3aGVyZSBjb25maWd1cmUgaXMgbGF1bmNoZWQiCkBAIC03MTQs NiArNzI1LDcgQEAKICAgICBlY2hvICJUYXJnZXQgU3BhcmMgQXJjaCAkc3BhcmNfY3B1IgogZmkK IGVjaG8gImtxZW11IHN1cHBvcnQgICAgICRrcWVtdSIKK2VjaG8gIkRCVVMgc3VwcG9ydAkkZGJ1 cyIKIGVjaG8gIkRvY3VtZW50YXRpb24gICAgICRidWlsZF9kb2NzIgogWyAhIC16ICIkdW5hbWVf cmVsZWFzZSIgXSAmJiBcCiBlY2hvICJ1bmFtZSAtciAgICAgICAgICAkdW5hbWVfcmVsZWFzZSIK QEAgLTg4OCw2ICs5MDAsMTEgQEAKICAgZWNobyAiQ09ORklHX1ZOQ19UTFNfTElCUz0kdm5jX3Rs c19saWJzIiA+PiAkY29uZmlnX21hawogICBlY2hvICIjZGVmaW5lIENPTkZJR19WTkNfVExTIDEi ID4+ICRjb25maWdfaAogZmkKK2lmIHRlc3QgIiRkYnVzIiA9ICJ5ZXMiIDsgdGhlbgorICBlY2hv ICJDT05GSUdfREJVUz15ZXMiID4+ICRjb25maWdfbWFrCisgIGVjaG8gIiNkZWZpbmUgQ09ORklH X0RCVVMgMSIgPj4gJGNvbmZpZ19oCisgIGVjaG8gIiNkZWZpbmUgREJVU19TRVJWSUNFIFwiJGRi dXNfc2VydmljZVwiIiA+PiAkY29uZmlnX2gKK2ZpCiBxZW11X3ZlcnNpb249YGhlYWQgJHNvdXJj ZV9wYXRoL1ZFUlNJT05gCiBlY2hvICJWRVJTSU9OPSRxZW11X3ZlcnNpb24iID4+JGNvbmZpZ19t YWsKIGVjaG8gIiNkZWZpbmUgUUVNVV9WRVJTSU9OIFwiJHFlbXVfdmVyc2lvblwiIiA+PiAkY29u ZmlnX2gKZGlmZiAtTmF1ciAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvZGJ1cy9tb25pdG9yLWRi dXMuYyAveXV2YWwvRGV2L3FlbXUtZGJ1cy9xZW11L2RidXMvbW9uaXRvci1kYnVzLmMKLS0tIC95 dXZhbC9EZXYvcWVtdS1jdnMvcWVtdS9kYnVzL21vbml0b3ItZGJ1cy5jCTE5NzAtMDEtMDEgMDI6 MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyAveXV2YWwvRGV2L3FlbXUtZGJ1cy9xZW11L2RidXMv bW9uaXRvci1kYnVzLmMJMjAwNy0wOS0yMyAxMzowMDo0Ny4wMDAwMDAwMDAgKzAyMDAKQEAgLTAs MCArMSwxNTA2IEBACisvKgorICogRXhhbXBsZS9Vbml0LXRlc3QgRC1CdXMgc2VydmVyIGNvZGUu CisgKiBXcml0dGVuIGJ5IFNoYWhhciBGcmFuayA8c2hhaGFyZkBxdW1yYW5ldC5jb20+CisgKgor ICogVGhpcyBjb2RlIGhhcyBiZWVuIHJlbGVhc2VkIGludG8gdGhlIFB1YmxpYyBEb21haW4uCisg KiBZb3UgbWF5IGRvIHdoYXRldmVyIHlvdSBsaWtlIHdpdGggaXQuCisgKi8KKyNpbmNsdWRlIDxk c3J2Lmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1 ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cisj aW5jbHVkZSA8cHRocmVhZC5oPgorCisjaW5jbHVkZSAidmwuaCIKKyNpbmNsdWRlICJlcnJvci5o IgorI2luY2x1ZGUgIm1vbml0b3IuaCIKKyNpbmNsdWRlICJtb25pdG9yLWRidXMuaCIKKworcHRo cmVhZF90IGRidXNfdGhyZWFkOworY2hhciBnX0RldmljZXNbM11bNl07IC8vdG1wCisKK3N0YXRp YyB2b2xhdGlsZSBpbnQgY29uZmlndXJlZCA9IDA7CisKK3B0aHJlYWRfbXV0ZXhfdCBjb25mX211 dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKK3B0aHJlYWRfY29uZF90IGNvbmZfY29u ZCA9IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKKworLy8KKy8vIERlYnVnIGludGVyZmFjZSBm dW5jdGlvbnMKKy8vCisKK2NoYXIgKlNldExvZ0xldmVsKERTcnZNZXRob2QgKiBtZXRob2QsIERC dXNNZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgaW50IG5Mb2dMZXZlbDsKKworICAg IGRzcnZfbWV0aG9kX2FyZyhtZXRob2QsICJMb2dMZXZlbCIsICZuTG9nTGV2ZWwpOworCisgICAg RFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAg IERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglYykgbWV0aG9kIGNhbGxlZCIsIAorICAg ICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIG5Mb2dMZXZlbAorICAgICk7CisKKyAgICBkc3J2 X2xvZ19sZXZlbCA9IG5Mb2dMZXZlbDsKKworICAgIHJldHVybiBOVUxMOworfQorCisvLworLy8g Q29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZnVuY3Rpb25zCisvLworCitjaGFyICpDb25maWdfYm9v dChEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgewor ICAgIGludCBuUkMgPSAwOworICAgIGludCBuRGV2aWNlTGV0dGVyOworCisgICAgZHNydl9tZXRo b2RfYXJnKG1ldGhvZCwgIkRldmljZUxldHRlciIsICZuRGV2aWNlTGV0dGVyKTsKKworICAgIERT UlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBE U1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJWMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAg ICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBuRGV2aWNlTGV0dGVyCisgICAgKTsKKworICAgIGlm ICgKKyAgICAgICAgYm9vdF9kZXZpY2UgIT0gJ2EnICYmIAorI2lmIGRlZmluZWQoVEFSR0VUX1NQ QVJDKSB8fCBkZWZpbmVkKFRBUkdFVF9JMzg2KQorICAgICAgICAvLyBOZXR3b3JrIGJvb3QKKyAg ICAgICAgYm9vdF9kZXZpY2UgIT0gJ24nICYmCisjZW5kaWYKKyAgICAgICAgYm9vdF9kZXZpY2Ug IT0gJ2MnICYmIAorICAgICAgICBib290X2RldmljZSAhPSAnZCcKKyAgICApIHsKKyAgICAgICAg blJDID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBib290X2RldmljZSA9IG5EZXZpY2VMZXR0 ZXI7CisgICAgfQorCisgICAgZHNydl9tZXRob2RfcmV0dXJuKG1ldGhvZCwgIlJldHVybkNvZGUi LCAmblJDKTsKKworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICpNb25pdG9yX3VzYl9hZGQo RFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKyAg ICBpbnQgblJDOworICAgIGNoYXIgKnN6RGV2TmFtZTsKKworICAgIGRzcnZfbWV0aG9kX2FyZyht ZXRob2QsICJEZXZpY2VOYW1lIiwgJnN6RGV2TmFtZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAg ICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9T RSwKKyAgICAgICAgIiVzKCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFt ZSwKKyAgICAgICAgc3pEZXZOYW1lCisgICAgKTsKKworICAgIG5SQyA9IHVzYl9kZXZpY2VfYWRk KHN6RGV2TmFtZSk7CisKKyAgICBkc3J2X21ldGhvZF9yZXR1cm4obWV0aG9kLCAiUmV0dXJuQ29k ZSIsICZuUkMpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKk1vbml0b3JfdXNiX2Rl bChEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgewor ICAgIGludCBuUkM7CisgICAgY2hhciAqc3pEZXZOYW1lOworCisgICAgZHNydl9tZXRob2RfYXJn KG1ldGhvZCwgIkRldmljZU5hbWUiLCAmc3pEZXZOYW1lKTsKKworICAgIERTUlZfTE9HICgKKyAg ICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJC T1NFLAorICAgICAgICAiJXMoJXMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5u YW1lLAorICAgICAgICBzekRldk5hbWUKKyAgICApOworCisgICAgblJDID0gdXNiX2RldmljZV9k ZWwoc3pEZXZOYW1lKTsKKworICAgIGRzcnZfbWV0aG9kX3JldHVybihtZXRob2QsICJSZXR1cm5D b2RlIiwgJm5SQyk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqQ29uZmlnX3VzYihE U3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworLy8g ICAgaW50IG5TdGF0ZTsKKyAgICBib29sIGZVU0I7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0 aG9kLCAiU3RhdGUiLCAmZlVTQik7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0 aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAg IiVzKCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAg ZlVTQiA/ICJUcnVlIiA6ICJGYWxzZSIKKyAgICApOworCisgICAgdXNiX2VuYWJsZWQgPSAoaW50 KSBmVVNCOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKk1vbml0b3JfTGlzdFVzYkRl dmljZXMoRFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIp IHsKKyAgICBVU0JEZXZpY2UgKmRldjsKKyAgICBVU0JQb3J0ICpwb3J0OworICAgIGNvbnN0IGNo YXIgKnNwZWVkX3N0cjsKKyAgICBpbnQgbiA9IDEwOworCisgICAgRFNydkFycmF5ICphcnJheTsK KyAgICBjaGFyIHN6VXNiRGV2aWNlWzI1Nl07CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRz cnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAg ICAgICAgIiVzKCkgbWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUKKyAgICAp OworCisgICAgaWYgKCEoYXJyYXkgPSBkc3J2X21ldGhvZF9iYXNpY19hcnJheV9yZXR1cm4gKG1l dGhvZCwgIkluZm8iLCBOVUxMLCAmbikpKQorICAgICAgICBEU1JWX1BBTklDIChOVUxMLCAiZHNy dl9tZXRob2RfYmFzaWNfYXJyYXkgZmFpbGVkIik7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAg IGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwK KyAgICAgICAgIiVzIC0gYWZ0ZXIgZHNydl9tZXRob2RfYmFzaWNfYXJyYXlfcmV0dXJuIiwgCisg ICAgICAgIG1ldGhvZC0+bmFtZQorICAgICk7CisKKyAgICBpZiAoIXVzYl9lbmFibGVkKSB7Cisg ICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoCisgICAgICAgIHBvcnQgPSB1 c2VkX3VzYl9wb3J0czsgCisgICAgICAgIHBvcnQ7IAorICAgICAgICBwb3J0ID0gcG9ydC0+bmV4 dAorICAgICkgeworICAgICAgICBkZXYgPSBwb3J0LT5kZXY7CisgICAgICAgIGlmICghZGV2KSB7 CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaChkZXYt PnNwZWVkKSB7CisgICAgICAgICAgICBjYXNlIFVTQl9TUEVFRF9MT1c6IAorICAgICAgICAgICAg ICAgIHNwZWVkX3N0ciA9ICIxLjUiOyAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg Y2FzZSBVU0JfU1BFRURfRlVMTDogCisgICAgICAgICAgICAgICAgc3BlZWRfc3RyID0gIjEyIjsg CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVVNCX1NQRUVEX0hJR0g6IAor ICAgICAgICAgICAgICAgIHNwZWVkX3N0ciA9ICI0ODAiOyAKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBzcGVlZF9zdHIgPSAiPyI7IAor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzbnByaW50ZiAoCisgICAg ICAgICAgICBzelVzYkRldmljZSwKKyAgICAgICAgICAgIDI1NiwKKyAgICAgICAgICAgICIgIERl dmljZSAlZC4lZCwgU3BlZWQgJXMgTWIvcywgUHJvZHVjdCAlc1xuIiwKKyAgICAgICAgICAgIDAs IAorICAgICAgICAgICAgZGV2LT5hZGRyLCAKKyAgICAgICAgICAgIHNwZWVkX3N0ciwgCisgICAg ICAgICAgICBkZXYtPmRldm5hbWUKKyAgICAgICAgKTsKKworICAgICAgICBEU1JWX0xPRyAoCisg ICAgICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgICAgICBEU1JW X0xPR19WRVJCT1NFLAorICAgICAgICAgICAgIiVzIC0gYWRkaW5nIGluZm86ICVzIiwgCisgICAg ICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgICAgICBzelVzYkRldmljZQorICAgICAgICAp OworCisgICAgICAgIGRzcnZfYXJyYXlfYXBwZW5kX2Jhc2ljIChhcnJheSwgc3pVc2JEZXZpY2Up OworICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICpNb25pdG9yX0xpc3ROZXR3 b3JrRGV2aWNlcyhEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAq dXNlcikgeworICAgIGludCBuID0gMTA7CisgICAgVkxBTlN0YXRlICp2c0ZpcnN0VkxBTjsKKyAg ICBWTEFOU3RhdGUgKnZsYW47CisgICAgVkxBTkNsaWVudFN0YXRlICp2YzsKKworICAgIERTcnZB cnJheSAqYXJyYXk7CisgICAgY2hhciBzekJ1ZlsyNTZdOworCisgICAgRFNSVl9MT0cgKAorICAg ICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJP U0UsCisgICAgICAgICIlcygpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1l CisgICAgKTsKKworICAgIGlmICghKGFycmF5ID0gZHNydl9tZXRob2RfYmFzaWNfYXJyYXlfcmV0 dXJuIChtZXRob2QsICJJbmZvIiwgTlVMTCwgJm4pKSkKKyAgICAgICAgRFNSVl9QQU5JQyAoTlVM TCwgImRzcnZfbWV0aG9kX2Jhc2ljX2FycmF5IGZhaWxlZCIpOworCisgICAgRFNSVl9MT0cgKAor ICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZF UkJPU0UsCisgICAgICAgICIlcyAtIGFmdGVyIGRzcnZfbWV0aG9kX2Jhc2ljX2FycmF5X3JldHVy biIsIAorICAgICAgICBtZXRob2QtPm5hbWUKKyAgICApOworCisgICAgdnNGaXJzdFZMQU4gPSBn ZXRfZmlyc3RfdmxhbigpOworCisgICAgZm9yKHZsYW4gPSB2c0ZpcnN0VkxBTjsgdmxhbiAhPSBO VUxMOyB2bGFuID0gdmxhbi0+bmV4dCkgeworICAgICAgICBmb3IodmMgPSB2bGFuLT5maXJzdF9j bGllbnQ7IHZjICE9IE5VTEw7IHZjID0gdmMtPm5leHQpIHsKKyAgICAgICAgICAgIHNucHJpbnRm ICgKKyAgICAgICAgICAgICAgICBzekJ1ZiwKKyAgICAgICAgICAgICAgICAyNTYsCisgICAgICAg ICAgICAgICAgIlZMQU4gJWQ6ICVzIiwKKyAgICAgICAgICAgICAgICB2bGFuLT5pZCwKKyAgICAg ICAgICAgICAgICB2Yy0+aW5mb19zdHIKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIERT UlZfTE9HICgKKyAgICAgICAgICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisg ICAgICAgICAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgICAgICAgICAiJXMgLSBh ZGRpbmcgaW5mbzogJXMiLCAKKyAgICAgICAgICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAg ICAgICAgICAgc3pCdWYKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGRzcnZfYXJyYXlf YXBwZW5kX2Jhc2ljIChhcnJheSwgc3pCdWYpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0 dXJuIE5VTEw7Cit9CisKK2NoYXIgKkNvbmZpZ19TZXRMb2NhbHRpbWUoRFNydk1ldGhvZCAqIG1l dGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKy8vICAgIGludCBuU3RhdGU7 CisgICAgYm9vbCBmVVRDOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIklzVVRDIiwg JmZVVEMpOworCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0 aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykgbWV0aG9k IGNhbGxlZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIGZVVEMgPyAiVHJ1ZSIg OiAiRmFsc2UiCisgICAgKTsKKworICAgIHJ0Y191dGMgPSAoaW50KSBmVVRDOworCisgICAgcmV0 dXJuIE5VTEw7Cit9CisKK2NoYXIgKkNvbmZpZ19TZXRGdWxsU2NyZWVuKERTcnZNZXRob2QgKiBt ZXRob2QsIERCdXNNZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisvLyAgICBpbnQgblN0YXRl OworICAgIGJvb2wgZklzRnVsbFNjcmVlbjsKKworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRob2Qs ICJJc0Z1bGxTY3JlZW4iLCAmZklzRnVsbFNjcmVlbik7CisKKyAgICBEU1JWX0xPRyAoCisgICAg ICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9T RSwKKyAgICAgICAgIiVzKCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFt ZSwKKyAgICAgICAgZklzRnVsbFNjcmVlbiA/ICJUcnVlIiA6ICJGYWxzZSIKKyAgICApOworCisg ICAgZnVsbF9zY3JlZW4gPSAoaW50KSBmSXNGdWxsU2NyZWVuOworCisgICAgcmV0dXJuIE5VTEw7 Cit9CisKK2NoYXIgKkNvbmZpZ19TZXRfc3RkX3ZnYShEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVz TWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworLy8gICAgaW50IG5TdGF0ZTsKKyAgICBib29s IGZJc1NURFZHQTsKKworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRob2QsICJJc19zdGRfdmdhIiwg JmZJc1NURFZHQSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZl cihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVzKSBt ZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgZklzU1REVkdB ID8gIlRydWUiIDogIkZhbHNlIgorICAgICk7CisKKyAgICBjaXJydXNfdmdhX2VuYWJsZWQgPSAo aW50KSBmSXNTVERWR0E7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqQ29uZmlnX1Nl dE5vQUNQSShEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNl cikgeworLy8gICAgaW50IG5TdGF0ZTsKKyAgICBib29sIGZJc05vQUNQSTsKKworICAgIGRzcnZf bWV0aG9kX2FyZyhtZXRob2QsICJJc05vQUNQSSIsICZmSXNOb0FDUEkpOworCisgICAgRFNSVl9M T0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZf TE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykgbWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBt ZXRob2QtPm5hbWUsCisgICAgICAgIGZJc05vQUNQSSA/ICJUcnVlIiA6ICJGYWxzZSIKKyAgICAp OworCisgICAgYWNwaV9lbmFibGVkID0gKGludCkgZklzTm9BQ1BJOworCisgICAgcmV0dXJuIE5V TEw7Cit9CisKK2NoYXIgKkNvbmZpZ19TZXROb1F1aXQoRFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1 c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKy8vICAgIGludCBuU3RhdGU7CisgICAgYm9v bCBmSXNOb1F1aXQ7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiSXNOb1F1aXQiLCAm ZklzTm9RdWl0KTsKKworICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVy KG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJXMpIG1l dGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBmSXNOb1F1aXQg PyAiVHJ1ZSIgOiAiRmFsc2UiCisgICAgKTsKKworICAgIG5vX3F1aXQgPSAoaW50KSBmSXNOb1F1 aXQ7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqQ29uZmlnX1NldE5vR3JhcGhpYyhE U3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworLy8g ICAgaW50IG5TdGF0ZTsKKyAgICBib29sIGZJc05vR3JhcGhpYzsKKworICAgIGRzcnZfbWV0aG9k X2FyZyhtZXRob2QsICJJc05vR3JhcGhpYyIsICZmSXNOb0dyYXBoaWMpOworCisgICAgRFNSVl9M T0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZf TE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykgbWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBt ZXRob2QtPm5hbWUsCisgICAgICAgIGZJc05vR3JhcGhpYyA/ICJUcnVlIiA6ICJGYWxzZSIKKyAg ICApOworCisgICAgbm9ncmFwaGljID0gKGludCkgZklzTm9HcmFwaGljOworCisgICAgcmV0dXJu IE5VTEw7Cit9CisKK2NoYXIgKkNvbmZpZ19kYWVtb25pemUoRFNydk1ldGhvZCAqIG1ldGhvZCwg REJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKy8vICAgIGludCBuU3RhdGU7CisgICAg Ym9vbCBmSXNEYWVtb25pemU7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiSXNEYWVt b25pemUiLCAmZklzRGFlbW9uaXplKTsKKworICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9t ZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAg ICAiJXMoJXMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAorICAgICAg ICBmSXNEYWVtb25pemUgPyAiVHJ1ZSIgOiAiRmFsc2UiCisgICAgKTsKKworICAgIGRhZW1vbml6 ZSA9IChpbnQpIGZJc0RhZW1vbml6ZTsKKworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICpD b25maWdfU2V0Tm9SZWJvb3QoRFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2cs IHZvaWQgKnVzZXIpIHsKKy8vICAgIGludCBuU3RhdGU7CisgICAgYm9vbCBmSXNOb1JlYm9vdDsK KworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRob2QsICJJc05vUmVib290IiwgJmZJc05vUmVib290 KTsKKworICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCks IAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJXMpIG1ldGhvZCBjYWxs ZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBmSXNOb1JlYm9vdCA/ICJUcnVl IiA6ICJGYWxzZSIKKyAgICApOworCisgICAgbm9fcmVib290ID0gKGludCkgZklzTm9SZWJvb3Q7 CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqQ29uZmlnX1NldE5vRkRCb290Q2hlY2so RFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKy8v ICAgIGludCBuU3RhdGU7CisgICAgYm9vbCBmSXNOb0ZEQm9vdENoZWNrOworCisgICAgZHNydl9t ZXRob2RfYXJnKG1ldGhvZCwgIklzTm9GREJvb3RDaGVjayIsICZmSXNOb0ZEQm9vdENoZWNrKTsK KworICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAor ICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJXMpIG1ldGhvZCBjYWxsZWQi LCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBmSXNOb0ZEQm9vdENoZWNrID8gIlRy dWUiIDogIkZhbHNlIgorICAgICk7CisKKyAgICBmZF9ib290Y2hrID0gKGludCkgZklzTm9GREJv b3RDaGVjazsKKworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICpDb25maWdfc25hcHNob3Qo RFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKyAg ICBpbnQgblN0YXRlOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIlN0YXRlIiwgJm5T dGF0ZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRo b2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVkKSBtZXRob2Qg Y2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgblN0YXRlCisgICAgKTsK KworICAgIHNuYXBzaG90ID0gblN0YXRlOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIg KkNvbmZpZ19tb25pdG9yKERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNNZXNzYWdlICogbXNnLCB2 b2lkICp1c2VyKSB7CisgICAgY2hhciAqc3pEZXZpY2VOYW1lOworCisgICAgZHNydl9tZXRob2Rf YXJnKG1ldGhvZCwgIkRldmljZU5hbWUiLCAmc3pEZXZpY2VOYW1lKTsKKworICAgIERTUlZfTE9H ICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xP R19WRVJCT1NFLAorICAgICAgICAiJXMoJXMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0 aG9kLT5uYW1lLAorICAgICAgICBzekRldmljZU5hbWUKKyAgICApOworCisgICAgcHN0cmNweSht b25pdG9yX2RldmljZSwgc2l6ZW9mKG1vbml0b3JfZGV2aWNlKSwgc3pEZXZpY2VOYW1lKTsKKwor ICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICpNb25pdG9yX0FkZFNlcmlhbChEU3J2TWV0aG9k ICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworICAgIGludCBuUkMg PSAwOworICAgIGNoYXIgKnN6RGV2aWNlTmFtZTsKKworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRo b2QsICJEZXZpY2VOYW1lIiwgJnN6RGV2aWNlTmFtZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAg ICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9T RSwKKyAgICAgICAgIiVzKCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFt ZSwKKyAgICAgICAgc3pEZXZpY2VOYW1lCisgICAgKTsKKworCisgICAgaWYgKHNlcmlhbF9kZXZp Y2VfaW5kZXggPj0gTUFYX1NFUklBTF9QT1JUUykgeworICAgICAgICBuUkMgPSAxOworICAgIH0g ZWxzZSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmRldm5hbWU7CisgICAgICAgIGlmIChkZXZuYW1l WzBdICE9ICdcMCcpIHsKKyAgICAgICAgICAgIC8vQ2xvc2UgZGV2aWNlIGJlZm9yZSBjcmVhdGlu ZyBhbmQgb3BlbmluZyBhIG5ldyBvbmUuCisgICAgICAgIH0KKworICAgICAgICBwc3RyY3B5ICgK KyAgICAgICAgICAgIHNlcmlhbF9kZXZpY2VzW3NlcmlhbF9kZXZpY2VfaW5kZXhdLCAKKyAgICAg ICAgICAgIHNpemVvZihzZXJpYWxfZGV2aWNlc1swXSksIAorICAgICAgICAgICAgb3B0YXJnCisg ICAgICAgICk7CisgICAgICAgIGRldm5hbWUgPSBzZXJpYWxfZGV2aWNlc1tzZXJpYWxfZGV2aWNl X2luZGV4XTsKKworICAgICAgICBzZXJpYWxfaGRzW3NlcmlhbF9kZXZpY2VfaW5kZXhdID0gcWVt dV9jaHJfb3BlbihkZXZuYW1lKTsKKyAgICAgICAgaWYgKCFzZXJpYWxfaGRzW3NlcmlhbF9kZXZp Y2VfaW5kZXhdKSB7CisgICAgICAgICAgICBuUkMgPSAyOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgaWYgKCFzdHJjbXAoZGV2bmFtZSwgInZjIikpIHsKKyAgICAgICAgICAgICAgICBx ZW11X2Nocl9wcmludGYoc2VyaWFsX2hkc1tzZXJpYWxfZGV2aWNlX2luZGV4XSwgInNlcmlhbCVk IGNvbnNvbGVcclxuIiwgc2VyaWFsX2RldmljZV9pbmRleCk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBzZXJpYWxfZGV2aWNlX2luZGV4Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBk c3J2X21ldGhvZF9yZXR1cm4gKG1ldGhvZCwgIlJldHVybkNvZGUiLCAmblJDKTsKKworICAgIHJl dHVybiBOVUxMOworfQorCitjaGFyICpNb25pdG9yX1JlbW92ZVNlcmlhbChEU3J2TWV0aG9kICog bWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworICAgIGludCBuSW5kZXg7 CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiRGV2aWNlSUQiLCAmbkluZGV4KTsKKwor ICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAg ICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJWQpIG1ldGhvZCBjYWxsZWQiLCAK KyAgICAgICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBuSW5kZXgKKyAgICApOworCisgICAgcWVt dV9jaHJfY2xvc2Uoc2VyaWFsX2hkc1tuSW5kZXhdKTsKKworICAgIHJldHVybiBOVUxMOworfQor CitjaGFyICpNb25pdG9yX0FkZFBhcmFsbGVsKERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNNZXNz YWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgaW50IG5SQyA9IDA7CisgICAgY2hhciAqc3pE ZXZpY2VOYW1lOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkRldmljZU5hbWUiLCAm c3pEZXZpY2VOYW1lKTsKKworICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2Vy dmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJXMp IG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBzekRldmlj ZU5hbWUKKyAgICApOworCisKKyAgICBpZiAocGFyYWxsZWxfZGV2aWNlX2luZGV4ID49IE1BWF9T RVJJQUxfUE9SVFMpIHsKKyAgICAgICAgblJDID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBj b25zdCBjaGFyICpkZXZuYW1lOworICAgICAgICBpZiAoZGV2bmFtZVswXSAhPSAnXDAnKSB7Cisg ICAgICAgICAgICAvL0Nsb3NlIGRldmljZSBiZWZvcmUgY3JlYXRpbmcgYW5kIG9wZW5pbmcgYSBu ZXcgb25lLgorICAgICAgICB9CisKKyAgICAgICAgcHN0cmNweSAoCisgICAgICAgICAgICBwYXJh bGxlbF9kZXZpY2VzW3BhcmFsbGVsX2RldmljZV9pbmRleF0sIAorICAgICAgICAgICAgc2l6ZW9m KHBhcmFsbGVsX2RldmljZXNbMF0pLCAKKyAgICAgICAgICAgIG9wdGFyZworICAgICAgICApOwor ICAgICAgICBkZXZuYW1lID0gcGFyYWxsZWxfZGV2aWNlc1twYXJhbGxlbF9kZXZpY2VfaW5kZXhd OworCisgICAgICAgIHBhcmFsbGVsX2hkc1twYXJhbGxlbF9kZXZpY2VfaW5kZXhdID0gcWVtdV9j aHJfb3BlbihkZXZuYW1lKTsKKyAgICAgICAgaWYgKCFwYXJhbGxlbF9oZHNbcGFyYWxsZWxfZGV2 aWNlX2luZGV4XSkgeworICAgICAgICAgICAgblJDID0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgIGlmICghc3RyY21wKGRldm5hbWUsICJ2YyIpKSB7CisgICAgICAgICAgICAgICAg cWVtdV9jaHJfcHJpbnRmKHBhcmFsbGVsX2hkc1twYXJhbGxlbF9kZXZpY2VfaW5kZXhdLCAicGFy YWxsZWwlZCBjb25zb2xlXHJcbiIsIHBhcmFsbGVsX2RldmljZV9pbmRleCk7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBwYXJhbGxlbF9kZXZpY2VfaW5kZXgrKzsKKyAgICAgICAgfQorICAg IH0KKworICAgIGRzcnZfbWV0aG9kX3JldHVybiAobWV0aG9kLCAiUmV0dXJuQ29kZSIsICZuUkMp OworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKk1vbml0b3JfUmVtb3ZlUGFyYWxsZWwo RFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKyAg ICBpbnQgbkluZGV4OworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkRldmljZUlEIiwg Jm5JbmRleCk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZlciht ZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVkKSBtZXRo b2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgbkluZGV4CisgICAg KTsKKworICAgIHFlbXVfY2hyX2Nsb3NlKHBhcmFsbGVsX2hkc1tuSW5kZXhdKTsKKworICAgIHJl dHVybiBOVUxMOworfQorCitjaGFyICpDb25maWdfcmFtc2l6ZShEU3J2TWV0aG9kICogbWV0aG9k LCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworICAgIGludCBuUkMgPSAwOworICAg IHVuc2lnbmVkIG5TaXplOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIk1lZ2FCeXRl cyIsICZuU2l6ZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZl cihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVkKSBt ZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgblNpemUKKyAg ICApOworCisgICAgaWYgKChpbnQpKG5TaXplICogMTAyNCAqIDEwMjQpID4gUEhZU19SQU1fTUFY X1NJWkUpIHsKKyAgICAgICAgblJDID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICByYW1fc2l6 ZSA9IG5TaXplICogMTAyNCAqIDEwMjQ7CisgICAgfQorCisgICAgZHNydl9tZXRob2RfcmV0dXJu IChtZXRob2QsICJSZXR1cm5Db2RlIiwgJm5SQyk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwor Y2hhciAqQ29uZmlnX3NtcChEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywg dm9pZCAqdXNlcikgeworICAgIGludCBuUkMgPSAwOworICAgIHVuc2lnbmVkIG5DUFVzOworCisg ICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkNQVXMiLCAmbkNQVXMpOworCisgICAgRFNSVl9M T0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZf TE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglZCkgbWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBt ZXRob2QtPm5hbWUsCisgICAgICAgIG5DUFVzCisgICAgKTsKKworICAgIGlmICgKKyAgICAgICAg bkNQVXMgPCAxIHx8CisgICAgICAgIG5DUFVzID4gTUFYX0NQVVMKKyAgICApIHsKKyAgICAgICAg blJDID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbXBfY3B1cyA9IG5DUFVzOworICAgIH0K KworICAgIGRzcnZfbWV0aG9kX3JldHVybiAobWV0aG9kLCAiUmV0dXJuQ29kZSIsICZuUkMpOwor CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNpZmRlZiBIQVNfQVVESU8KK2NoYXIgKkNvbmZpZ19T b3VuZEhXU3RhdGUoRFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQg KnVzZXIpIHsKKyAgICBpbnQgblJDID0gMDsKKyAgICBjaGFyICpzek5hbWU7CisgICAgaW50IG5T dGF0ZTsKKyAgICBzdHJ1Y3Qgc291bmRodyAqYzsKKworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRo b2QsICJOYW1lIiwgJnN6TmFtZSk7CisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIlN0YXRl IiwgJm5TdGF0ZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZl cihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVzLCVk KSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgc3pOYW1l LAorICAgICAgICBuU3RhdGUKKyAgICApOworCisgICAgaWYgKCFzdHJjbXAgKHN6TmFtZSwgImFs bCIpKSB7CisgICAgICAgIGZvciAoYyA9IHNvdW5kaHc7IGMtPm5hbWU7ICsrYykgeworICAgICAg ICAgICAgYy0+ZW5hYmxlZCA9IG5TdGF0ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg ICAgIGZvciAoYyA9IHNvdW5kaHc7IGMtPm5hbWU7ICsrYykgeworICAgICAgICAgICAgaWYgKCFz dHJuY21wIChjLT5uYW1lLCBzek5hbWUsIGMtPm5hbWUgPiBzek5hbWUgPyBzaXplb2Yoc3pOYW1l KSA6IHNpemVvZihjLT5uYW1lKSkpIHsKKyAgICAgICAgICAgICAgICBjLT5lbmFibGVkID0gblN0 YXRlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghYy0+bmFtZSkgewor ICAgICAgICAgICAgblJDID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRzcnZfbWV0aG9k X3JldHVybiAobWV0aG9kLCAiUmV0dXJuQ29kZSIsICZuUkMpOworCisgICAgcmV0dXJuIE5VTEw7 Cit9CisjZW5kaWYgLy8gSEFTX0FVRElPCitjaGFyICpNb25pdG9yU2V0RmxvcHB5KERTcnZNZXRo b2QgKiBtZXRob2QsIERCdXNNZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgaW50IG5S QyA9IDA7CisgICAgaW50IG5JbmRleDsKKyAgICBjaGFyICpzekltYWdlTmFtZTsKKworICAgIGRz cnZfbWV0aG9kX2FyZyhtZXRob2QsICJJbmRleCIsICZuSW5kZXgpOworICAgIGRzcnZfbWV0aG9k X2FyZyhtZXRob2QsICJJbWFnZU5hbWUiLCAmc3pJbWFnZU5hbWUpOworCisgICAgRFNSVl9MT0cg KAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9H X1ZFUkJPU0UsCisgICAgICAgICIlcyglZCwlcykgbWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBt ZXRob2QtPm5hbWUsCisgICAgICAgIG5JbmRleCwKKyAgICAgICAgc3pJbWFnZU5hbWUKKyAgICAp OworCisgICAgaWYgKG5JbmRleCA+IE1BWF9GRCkgeworICAgICAgICBuUkMgPSAxOworICAgIH0g ZWxzZSB7CisgICAgICAgIGlmIChmZF90YWJsZVtuSW5kZXhdKSB7CisgICAgICAgICAgICBiZHJ2 X2Nsb3NlKGZkX3RhYmxlW25JbmRleF0pOworICAgICAgICB9CisKKyAgICAgICAgYmRydl9zZXRf dHlwZV9oaW50KGZkX3RhYmxlW25JbmRleF0sIEJEUlZfVFlQRV9GTE9QUFkpOworCisgICAgICAg IGlmICgKKyAgICAgICAgICAgIGJkcnZfb3BlbiAoCisgICAgICAgICAgICAgICAgZmRfdGFibGVb bkluZGV4XSwgCisgICAgICAgICAgICAgICAgc3pJbWFnZU5hbWUsIAorICAgICAgICAgICAgICAg IHNuYXBzaG90ID8gQkRSVl9PX1NOQVBTSE9UIDogMAorICAgICAgICAgICAgKSA8IDAKKyAgICAg ICAgKSB7CisgICAgICAgICAgICBuUkMgPSAyOworICAgICAgICB9CisgICAgfQorCisgICAgZHNy dl9tZXRob2RfcmV0dXJuIChtZXRob2QsICJSZXR1cm5Db2RlIiwgJm5SQyk7CisKKyAgICByZXR1 cm4gTlVMTDsKK30KKworY2hhciAqQ29uZmlnX1NldENkcm9tKERTcnZNZXRob2QgKm1ldGhvZCwg REJ1c01lc3NhZ2UgKm1zZywgdm9pZCAqdXNlcikgeworICAgIGludCBuUkMgPSAwOworICAgIGNo YXIgKnN6SW1hZ2VOYW1lOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkltYWdlTmFt ZSIsICZzekltYWdlTmFtZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9k X3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVz KCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgc3pJ bWFnZU5hbWUKKyAgICApOworCisgICAgaWYgKGNkcm9tX2luZGV4ID49IDApIHsKKyAgICAgICAg aGRfZmlsZW5hbWVbY2Ryb21faW5kZXhdID0gc3pJbWFnZU5hbWU7CisgICAgfQorCisgICAgRFNS Vl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERT UlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyByZXR1cm4gPSAlZCIsIAorICAgICAgICBtZXRo b2QtPm5hbWUsCisgICAgICAgIG5SQworICAgICk7CisgICAgZHNydl9tZXRob2RfcmV0dXJuICht ZXRob2QsICJSZXR1cm5Db2RlIiwgJm5SQyk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hh ciAqTW9uaXRvcl9TZXRCbG9ja0RldmljZShEU3J2TWV0aG9kICptZXRob2QsIERCdXNNZXNzYWdl ICptc2csIHZvaWQgKnVzZXIpIHsKKyAgICBpbnQgblJDID0gMDsKKyAgICBpbnQgbkluZGV4Owor ICAgIGNoYXIgKnN6SW1hZ2VOYW1lOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIklu ZGV4IiwgJm5JbmRleCk7CisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkltYWdlTmFtZSIs ICZzekltYWdlTmFtZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3Nl cnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVk LCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgbklu ZGV4LAorICAgICAgICBzekltYWdlTmFtZQorICAgICk7CisKKyAgICBpZiAobkluZGV4ID4gTUFY X0RJU0tTKSB7CisgICAgICAgIG5SQyA9IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaGRfZmls ZW5hbWVbbkluZGV4XSA9IHN6SW1hZ2VOYW1lOworICAgICAgICBpZiAobkluZGV4ID09IGNkcm9t X2luZGV4KSB7CisgICAgICAgICAgICBjZHJvbV9pbmRleCA9IC0xOworICAgICAgICB9CisgICAg fQorCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwg CisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyByZXR1cm4gPSAlZCIsIAor ICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIG5SQworICAgICk7CisgICAgZHNydl9tZXRo b2RfcmV0dXJuIChtZXRob2QsICJSZXR1cm5Db2RlIiwgJm5SQyk7CisKKyAgICByZXR1cm4gTlVM TDsKK30KKworY2hhciAqQ29uZmlnX0FkZE5ldChEU3J2TWV0aG9kICptZXRob2QsIERCdXNNZXNz YWdlICptc2csIHZvaWQgKnVzZXIpIHsKKyAgICBpbnQgblJDID0gMDsKKyAgICBjaGFyICpzelBh cmFtZXRlcnM7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiUGFyYW1ldGVycyIsICZz elBhcmFtZXRlcnMpOworCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2 ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykg bWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIHN6UGFyYW1l dGVycworICAgICk7CisKKyAgICBpZiAobmJfbmV0X2NsaWVudHMgPj0gTUFYX05FVF9DTElFTlRT KSB7CisgICAgICAgIG5SQyA9IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHN0cmNweSgKKyAg ICAgICAgICAgIG5ldF9jbGllbnRzW25iX25ldF9jbGllbnRzXSwKKyAgICAgICAgICAgIHNpemVv ZihuZXRfY2xpZW50c1swXSksCisgICAgICAgICAgICBzelBhcmFtZXRlcnMKKyAgICAgICAgKTsK KworICAgICAgICBuYl9uZXRfY2xpZW50cysrOworICAgIH0KKworICAgIERTUlZfTE9HICgKKyAg ICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJC T1NFLAorICAgICAgICAiJXMgcmV0dXJuID0gJWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAor ICAgICAgICBuUkMKKyAgICApOworICAgIGRzcnZfbWV0aG9kX3JldHVybiAobWV0aG9kLCAiUmV0 dXJuQ29kZSIsICZuUkMpOworCisgICAgcmV0dXJuIE5VTEw7CisKK30KKworY2hhciAqQ29uZmln X0JJT1NEaXIoRFNydk1ldGhvZCAqbWV0aG9kLCBEQnVzTWVzc2FnZSAqbXNnLCB2b2lkICp1c2Vy KSB7CisgICAgaW50IG5SQyA9IDA7CisgICAgY2hhciAqc3pEaXJlY3Rvcnk7CisKKyAgICBkc3J2 X21ldGhvZF9hcmcobWV0aG9kLCAiRGlyZWN0b3J5IiwgJnN6RGlyZWN0b3J5KTsKKworICAgIERT UlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBE U1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoJXMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAg ICAgbWV0aG9kLT5uYW1lLAorICAgICAgICBzekRpcmVjdG9yeQorICAgICk7CisKKyAgICBiaW9z X2RpciA9IHN6RGlyZWN0b3J5OworCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhv ZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIl cyByZXR1cm4gPSAlZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIG5SQworICAg ICk7CisgICAgZHNydl9tZXRob2RfcmV0dXJuIChtZXRob2QsICJSZXR1cm5Db2RlIiwgJm5SQyk7 CisKKyAgICByZXR1cm4gTlVMTDsKKworfQorCitjaGFyICpNb25pdG9yX0xvYWRWTShEU3J2TWV0 aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNlcikgeworICAgIGNoYXIg KnN6RmlsZW5hbWU7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiRmlsZW5hbWUiLCAm c3pGaWxlbmFtZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZl cihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVzKSBt ZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgc3pGaWxlbmFt ZQorICAgICk7CisKKyAgICBkb19sb2Fkdm0oc3pGaWxlbmFtZSk7CisKKyAgICByZXR1cm4gTlVM TDsKK30KKworY2hhciAqQ29uZmlnX3ZuYyhEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2Fn ZSAqIG1zZywgdm9pZCAqdXNlcikgeworICAgIGNoYXIgKnN6RGlzcGxheTsKKworICAgIGRzcnZf bWV0aG9kX2FyZyhtZXRob2QsICJEaXNwbGF5IiwgJnN6RGlzcGxheSk7CisKKyAgICBEU1JWX0xP RyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9M T0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVzKSBtZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1l dGhvZC0+bmFtZSwKKyAgICAgICAgc3pEaXNwbGF5CisgICAgKTsKKworICAgIHZuY19kaXNwbGF5 ID0gc3pEaXNwbGF5OworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKk1vbml0b3JfY29t bWl0KERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNNZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7 CisgICAgY2hhciAqc3pEZXZpY2VOYW1lOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwg IkRldmljZU5hbWUiLCAmc3pEZXZpY2VOYW1lKTsKKworICAgIERTUlZfTE9HICgKKyAgICAgICAg ZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAor ICAgICAgICAiJXMoJXMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lLAor ICAgICAgICBzekRldmljZU5hbWUKKyAgICApOworCisgICAgZG9fY29tbWl0KHN6RGV2aWNlTmFt ZSk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqTW9uaXRvcl9xdWl0KERTcnZNZXRo b2QgKiBtZXRob2QsIERCdXNNZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisKKyAgICBEU1JW X0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgRFNS Vl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCkgbWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBt ZXRob2QtPm5hbWUKKyAgICApOworCisgICAgZXhpdCgwKTsKKworICAgIHJldHVybiBOVUxMOwor fQorCitjaGFyICpNb25pdG9yX2VqZWN0KERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNNZXNzYWdl ICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgaW50IG5Gb3JjZTsKKyAgICBjaGFyICpzekZpbGVu YW1lOworCisgICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkZvcmNlIiwgJm5Gb3JjZSk7Cisg ICAgZHNydl9tZXRob2RfYXJnKG1ldGhvZCwgIkZpbGVuYW1lIiwgJnN6RmlsZW5hbWUpOworCisg ICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwgCisgICAg ICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglZCwlcykgbWV0aG9kIGNhbGxlZCIs IAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIG5Gb3JjZSwKKyAgICAgICAgc3pGaWxl bmFtZQorICAgICk7CisKKyAgICBkb19lamVjdChuRm9yY2UsIHN6RmlsZW5hbWUpOworCisgICAg cmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKk1vbml0b3JfY2hhbmdlKERTcnZNZXRob2QgKiBtZXRo b2QsIERCdXNNZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgY2hhciAqc3pEZXZpY2VO YW1lOworICAgIGNoYXIgKnN6RmlsZW5hbWU7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9k LCAiRGV2aWNlTmFtZSIsICZzekRldmljZU5hbWUpOworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRo b2QsICJGaWxlbmFtZSIsICZzekZpbGVuYW1lKTsKKworICAgIERTUlZfTE9HICgKKyAgICAgICAg ZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAor ICAgICAgICAiJXMoJXMsJXMpIG1ldGhvZCBjYWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1l LAorICAgICAgICBzekRldmljZU5hbWUsCisgICAgICAgIHN6RmlsZW5hbWUKKyAgICApOworCisg ICAgZG9fY2hhbmdlKHN6RGV2aWNlTmFtZSwgc3pGaWxlbmFtZSk7CisKKyAgICByZXR1cm4gTlVM TDsKK30KKworY2hhciAqTW9uaXRvcl9zYXZldm0oRFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01l c3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKyAgICBjaGFyICpzekRldmljZU5hbWU7CisgICAg aW50IG5SQzsKKworICAgIGRzcnZfbWV0aG9kX2FyZyhtZXRob2QsICJEZXZpY2VOYW1lIiwgJnN6 RGV2aWNlTmFtZSk7CisKKyAgICBEU1JWX0xPRyAoCisgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZl cihtZXRob2QpLCAKKyAgICAgICAgRFNSVl9MT0dfVkVSQk9TRSwKKyAgICAgICAgIiVzKCVzKSBt ZXRob2QgY2FsbGVkIiwgCisgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgc3pEZXZpY2VO YW1lCisgICAgKTsKKworICAgIG5SQyA9IG1nbXRfc2F2ZXZtKHN6RGV2aWNlTmFtZSk7CisKKyAg ICBpZiAoblJDICE9IDApIHsKKyAgICAgICAgRFNSVl9MT0cgKAorICAgICAgICAgICAgZHNydl9t ZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICAgICAgRFNSVl9MT0dfRVJST1IsCisgICAg ICAgICAgICAiJXMgZmFpbGVkOiAlcyIsIAorICAgICAgICAgICAgbWV0aG9kLT5uYW1lLAorICAg ICAgICAgICAgR2V0TGFzdEVycm9yKCkKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBkc3J2X21l dGhvZF9yZXR1cm4obWV0aG9kLCAiUmV0dXJuQ29kZSIsICZuUkMpOworCisgICAgcmV0dXJuIE5V TEw7Cit9CisKK2NoYXIgKk1vbml0b3JfbG9hZHZtKERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNN ZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgY2hhciAqc3pEZXZpY2VOYW1lOworICAg IGludCBuUkM7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiRGV2aWNlTmFtZSIsICZz ekRldmljZU5hbWUpOworCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2 ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykg bWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIHN6RGV2aWNl TmFtZQorICAgICk7CisKKyAgICBuUkMgPSBtZ210X2xvYWR2bShzekRldmljZU5hbWUpOworCisg ICAgaWYgKG5SQyAhPSAwKSB7CisgICAgICAgIERTUlZfTE9HICgKKyAgICAgICAgICAgIGRzcnZf bWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAgICAgICAgIERTUlZfTE9HX0VSUk9SLAorICAg ICAgICAgICAgIiVzIGZhaWxlZDogJXMiLCAKKyAgICAgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAg ICAgICAgICAgIEdldExhc3RFcnJvcigpCisgICAgICAgICk7CisgICAgfQorCisgICAgZHNydl9t ZXRob2RfcmV0dXJuKG1ldGhvZCwgIlJldHVybkNvZGUiLCAmblJDKTsKKworICAgIHJldHVybiBO VUxMOworfQorCitjaGFyICpNb25pdG9yX2RlbHZtKERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNN ZXNzYWdlICogbXNnLCB2b2lkICp1c2VyKSB7CisgICAgY2hhciAqc3pEZXZpY2VOYW1lOworICAg IGludCBuUkM7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiRGV2aWNlTmFtZSIsICZz ekRldmljZU5hbWUpOworCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2 ZXIobWV0aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykg bWV0aG9kIGNhbGxlZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIHN6RGV2aWNl TmFtZQorICAgICk7CisKKyAgICBuUkMgPSBtZ210X2RlbHZtKHN6RGV2aWNlTmFtZSk7CisKKyAg ICBpZiAoblJDICE9IDApIHsKKyAgICAgICAgRFNSVl9MT0cgKAorICAgICAgICAgICAgZHNydl9t ZXRob2Rfc2VydmVyKG1ldGhvZCksIAorICAgICAgICAgICAgRFNSVl9MT0dfRVJST1IsCisgICAg ICAgICAgICAiJXMgZmFpbGVkOiAlcyIsIAorICAgICAgICAgICAgbWV0aG9kLT5uYW1lLAorICAg ICAgICAgICAgR2V0TGFzdEVycm9yKCkKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBkc3J2X21l dGhvZF9yZXR1cm4obWV0aG9kLCAiUmV0dXJuQ29kZSIsICZuUkMpOworCisgICAgcmV0dXJuIE5V TEw7Cit9CisKK2NoYXIgKk1vbml0b3Jfc2VuZF9rZXkoRFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1 c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKyAgICBjaGFyICpzektleXM7CisgICAgaW50 IG5SQyA9IDA7CisKKyAgICBkc3J2X21ldGhvZF9hcmcobWV0aG9kLCAiS2V5cyIsICZzektleXMp OworCisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0aG9kKSwg CisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcyglcykgbWV0aG9kIGNhbGxl ZCIsIAorICAgICAgICBtZXRob2QtPm5hbWUsCisgICAgICAgIHN6S2V5cworICAgICk7CisKKyAg ICBkb19zZW5kX2tleShzektleXMpOworCisgICAgaWYgKG5SQyAhPSAwKSB7CisgICAgICAgIERT UlZfTE9HICgKKyAgICAgICAgICAgIGRzcnZfbWV0aG9kX3NlcnZlcihtZXRob2QpLCAKKyAgICAg ICAgICAgIERTUlZfTE9HX0VSUk9SLAorICAgICAgICAgICAgIiVzIGZhaWxlZDogJXMiLCAKKyAg ICAgICAgICAgIG1ldGhvZC0+bmFtZSwKKyAgICAgICAgICAgIEdldExhc3RFcnJvcigpCisgICAg ICAgICk7CisgICAgfQorCisgICAgZHNydl9tZXRob2RfcmV0dXJuKG1ldGhvZCwgIlJldHVybkNv ZGUiLCAmblJDKTsKKworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICpNb25pdG9yX3N5c3Rl bV9yZXNldChEU3J2TWV0aG9kICogbWV0aG9kLCBEQnVzTWVzc2FnZSAqIG1zZywgdm9pZCAqdXNl cikgeworICAgIERTUlZfTE9HICgKKyAgICAgICAgZHNydl9tZXRob2Rfc2VydmVyKG1ldGhvZCks IAorICAgICAgICBEU1JWX0xPR19WRVJCT1NFLAorICAgICAgICAiJXMoKSBtZXRob2QgY2FsbGVk IiwgCisgICAgICAgIG1ldGhvZC0+bmFtZQorICAgICk7CisKKyAgICBxZW11X3N5c3RlbV9yZXNl dF9yZXF1ZXN0KCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqTW9uaXRvcl9zeXN0 ZW1fcG93ZXJkb3duKERTcnZNZXRob2QgKiBtZXRob2QsIERCdXNNZXNzYWdlICogbXNnLCB2b2lk ICp1c2VyKSB7CisgICAgRFNSVl9MT0cgKAorICAgICAgICBkc3J2X21ldGhvZF9zZXJ2ZXIobWV0 aG9kKSwgCisgICAgICAgIERTUlZfTE9HX1ZFUkJPU0UsCisgICAgICAgICIlcygpIG1ldGhvZCBj YWxsZWQiLCAKKyAgICAgICAgbWV0aG9kLT5uYW1lCisgICAgKTsKKworICAgIHFlbXVfc3lzdGVt X3Bvd2VyZG93bigpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKkNvbmZpZ0RvbmUo RFNydk1ldGhvZCAqIG1ldGhvZCwgREJ1c01lc3NhZ2UgKiBtc2csIHZvaWQgKnVzZXIpIHsKKyAg ICBwdGhyZWFkX211dGV4X2xvY2soJmNvbmZfbXV0ZXgpOworICAgIGNvbmZpZ3VyZWQgPSAxOwor ICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjb25mX211dGV4KTsKKworICAgIHB0aHJlYWRfY29u ZF9zaWduYWwoJmNvbmZfY29uZCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCAqZGJ1 c19tYWluKHZvaWQgKmFyZykKK3sKKyAgICBEU3J2U2VydmVyICpzZXJ2ZXI7CisgICAgRFNydk9i amVjdCAqb2JqZWN0OworICAgIERTcnZJbnRlcmZhY2UgKmludGVyZmFjZTsKKyAgICBEU3J2TWV0 aG9kICptZXRob2Q7CisgICAgY2hhciAqZXJyOworICAgIGNoYXIgc3pTZXJ2aWNlTmFtZVsyNTZd OworICAgIAorICAgIGRzcnZfbG9nX2xldmVsID0gRFNSVl9MT0dfV0FSTjsKKyAgICAKKyAgICAv LyBDcmVhdGUgc2VydmljZSBuYW1lLgorICAgIGlmIChzekRCdXNTZXJ2aWNlTmFtZSA9PSBOVUxM KSB7CisgICAgICAgIHNucHJpbnRmICgKKyAgICAgICAgICAgIHN6U2VydmljZU5hbWUsCisgICAg ICAgICAgICAyNTYsCisgICAgICAgICAgICAicWVtdS5vcmcuJWQiLAorICAgICAgICAgICAgZ2V0 cGlkKCkKKyAgICAgICAgKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHJuY3B5IChzelNlcnZp Y2VOYW1lLCBzekRCdXNTZXJ2aWNlTmFtZSwgMjU2KTsKKyAgICB9CisKKyAgICAvLyBJbml0aWFs aXplIHRoZSBzZXJ2ZXIgc3RydWN0dXJlICAgICAgCisgICAgaWYgKCEoc2VydmVyID0gZHNydl9z ZXJ2ZXJfbmV3KHN6U2VydmljZU5hbWUpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVy LCAiY2FuJ3Qgc2V0dXAgYSBzZXJ2ZXIiKTsKKworICAgIC8vIEluaXRpYWxpemUgYW4gb2JqZWN0 IC0gdGhpcyBpcyBvcHRpb25hbCwgaW50ZXJhZmFjZXMgY2FuIHVzZSByb290b2JqZWN0CisgICAg aWYgKCEob2JqZWN0ID0gZHNydl9vYmplY3RfbmV3KHNlcnZlciwgTlVMTCwgIi9NYW5hZ2VtZW50 IikpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhbGxvYyBhbiBvYmpl Y3QiKTsKKworICAgIC8vIERlYnVnIGludGVyZmFjZQorICAgIGlmICghKGludGVyZmFjZSA9IGRz cnZfaW50ZXJmYWNlX25ldyhvYmplY3QsICJvcmcucWVtdS5EZWJ1ZyIpKSkKKyAgICAgICAgICAg IERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIERlYnVnIGludGVyZmFjZSIpOworCisg ICAgLy8gU2V0TG9nTGV2ZWwgZGVjbGFyYXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhv ZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJTZXRMb2dMZXZlbCIsIFNldExvZ0xldmVs LCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBT ZXRMb2dMZXZlbCBtZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQo bWV0aG9kLCBkc3J2X3BhcmFtX25ldygiTG9nTGV2ZWwiLCAnaScsIE5VTEwsIDApKSkpCisgICAg ICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKwor ICAgIC8vIENhcHR1cmUgaW50ZXJmYWNlCisgICAgaWYgKCEoaW50ZXJmYWNlID0gZHNydl9pbnRl cmZhY2VfbmV3KG9iamVjdCwgIm9yZy5xZW11LkNvbmZpZ3VyYXRpb24iKSkpCisgICAgICAgICAg ICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBDYXB0dXJlIGludGVyZmFjZSIpOwor CisgICAgLy8gQ29uZmlnRG9uZSBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0 aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIkNvbmZpZ0RvbmUiLCBDb25maWdEb25l LCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBD b25maWdEb25lIG1ldGhvZCIpOworCisgICAgLy8gQ29uZmlnRG9uZSBkZWNsYXJhdGlvbiBhbmQg cGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIkNv bmZpZ19Vc2JTdGF0ZSIsIENvbmZpZ191c2IsIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFO SUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIENvbmZpZ19TZXRVc2JTdGF0ZSBtZXRob2QiKTsKKyAg ICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygi U3RhdGUiLCAnYicsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwg ImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIENvbmZpZ0RvbmUgZGVjbGFyYXRp b24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZh Y2UsICJDb25maWdfU2V0TG9jYWx0aW1lIiwgQ29uZmlnX1NldExvY2FsdGltZSwgTlVMTCkpKQor ICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgQ29uZmlnX1NldFVz YlN0YXRlIG1ldGhvZCIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRo b2QsIGRzcnZfcGFyYW1fbmV3KCJJc1VUQyIsICdiJywgTlVMTCwgMCkpKSkKKyAgICAgICAgICAg IERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAgLy8g Q29uZmlnRG9uZSBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNy dl9tZXRob2RfbmV3KGludGVyZmFjZSwgIkNvbmZpZ19TZXRGdWxsU2NyZWVuIiwgQ29uZmlnX1Nl dEZ1bGxTY3JlZW4sIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2Fu J3QgY3JlYXRlIENvbmZpZ19TZXRGdWxsU2NyZWVuIG1ldGhvZCIpOworICAgIGlmICgoZXJyID0g ZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJJc0Z1bGxTY3JlZW4i LCAnYicsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0 IGFkZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIENvbmZpZ19TZXRfc3RkX3ZnYSBkZWNsYXJh dGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVy ZmFjZSwgIkNvbmZpZ19TZXRfc3RkX3ZnYSIsIENvbmZpZ19TZXRfc3RkX3ZnYSwgTlVMTCkpKQor ICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgQ29uZmlnX1NldF9z dGRfdmdhIG1ldGhvZCIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRo b2QsIGRzcnZfcGFyYW1fbmV3KCJJc19zdGRfdmdhIiwgJ2InLCBOVUxMLCAwKSkpKQorICAgICAg ICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAg ICAvLyBDb25maWdfU2V0X3N0ZF92Z2EgZGVjbGFyYXRpb24gYW5kIHBhcmFtcworICAgIGlmICgh KG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJDb25maWdfU2V0Tm9BQ1BJIiwg Q29uZmlnX1NldE5vQUNQSSwgTlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIs ICJjYW4ndCBjcmVhdGUgQ29uZmlnX1NldE5vQUNQSSBtZXRob2QiKTsKKyAgICBpZiAoKGVyciA9 IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiSXNfTm9BQ1BJIiwg J2InLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBh ZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBDb25maWdfU2V0Tm9RdWl0IGRlY2xhcmF0aW9u IGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2X21ldGhvZF9uZXcoaW50ZXJmYWNl LCAiQ29uZmlnX1NldE5vUXVpdCIsIENvbmZpZ19TZXROb1F1aXQsIE5VTEwpKSkKKyAgICAgICAg ICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIENvbmZpZ19TZXROb1F1aXQgbWV0 aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9w YXJhbV9uZXcoIklzTm9RdWl0IiwgJ2InLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9Q QU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBDb25maWdf U2V0Tm9GREJvb3RDaGVjayBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9k ID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIkNvbmZpZ19TZXROb0ZEQm9vdENoZWNrIiwg Q29uZmlnX1NldE5vRkRCb290Q2hlY2ssIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMo c2VydmVyLCAiY2FuJ3QgY3JlYXRlIENvbmZpZ19TZXROb0ZEQm9vdENoZWNrIG1ldGhvZCIpOwor ICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3 KCJJc05vRkRCb290Q2hlY2siLCAnYicsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BB TklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIENvbmZpZ19T ZXROb0dyYXBoaWMgZGVjbGFyYXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRz cnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJDb25maWdfU2V0Tm9HcmFwaGljIiwgQ29uZmlnX1Nl dE5vR3JhcGhpYywgTlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4n dCBjcmVhdGUgQ29uZmlnX1NldE5vR3JhcGhpYyBtZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRz cnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiSXNOb0dyYXBoaWMiLCAn YicsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFk ZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIENvbmZpZ19TZXROb1JlYm9vdCBkZWNsYXJhdGlv biBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFj ZSwgIkNvbmZpZ19TZXROb1JlYm9vdCIsIENvbmZpZ19TZXROb1JlYm9vdCwgTlVMTCkpKQorICAg ICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgQ29uZmlnX1NldE5vUmVi b290IG1ldGhvZCIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2Qs IGRzcnZfcGFyYW1fbmV3KCJJc05vUmVib290IiwgJ2InLCBOVUxMLCAwKSkpKQorICAgICAgICAg ICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAv LyBDb25maWdfZGFlbW9uaXplIGRlY2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRo b2QgPSBkc3J2X21ldGhvZF9uZXcoaW50ZXJmYWNlLCAiQ29uZmlnX2RhZW1vbml6ZSIsIENvbmZp Z19kYWVtb25pemUsIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2Fu J3QgY3JlYXRlIENvbmZpZ19kYWVtb25pemUgbWV0aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2 X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIklzRGFlbW5vaXplIiwgJ3Mn LCBOVUxMLCAyNTYpKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFk ZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIENvbmZpZ0RvbmUgZGVjbGFyYXRpb24gYW5kIHBh cmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJ1c2Jf YWRkIiwgTW9uaXRvcl91c2JfYWRkLCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNl cnZlciwgImNhbid0IGNyZWF0ZSBNb25pdG9yX3VzYl9hZGQgbWV0aG9kIik7CisgICAgaWYgKChl cnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkRldmljZU5h bWUiLCAncycsIE5VTEwsIDI1NikpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAi Y2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfcmV0 dXJuX2FkZCAobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiUmV0dXJuQ29kZSIsICdpJywgTlVMTCwg MCkpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBw YXJhbSIpOworCisgICAgLy8gQ29uZmlnRG9uZSBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAg aWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgInVzYl9kZWwiLCBNb25p dG9yX3VzYl9kZWwsIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2Fu J3QgY3JlYXRlIE1vbml0b3JfdXNiX2FkZCBtZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRzcnZf bWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiRGV2aWNlTmFtZSIsICdzJywg TlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQg bWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9yZXR1cm5fYWRkICht ZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5Db2RlIiwgJ2knLCBOVUxMLCAwKSkpKQorICAg ICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisK KyAgICAvLyBDb25maWdEb25lIGRlY2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRo b2QgPSBkc3J2X21ldGhvZF9uZXcoaW50ZXJmYWNlLCAiQ29uZmlnX2Jvb3QiLCBDb25maWdfYm9v dCwgTlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUg Q29uZmlnX2Jvb3QgbWV0aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRk KG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkRldmljZUxldHRlciIsICd5JywgTlVMTCwgMCkpKSkK KyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIp OworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfcmV0dXJuX2FkZCAobWV0aG9kLCBkc3J2X3Bh cmFtX25ldygiUmV0dXJuQ29kZSIsICdpJywgTlVMTCwgMCkpKSkKKyAgICAgICAgICAgIERTUlZf UEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAgLy8gQ29uZmln RG9uZSBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRo b2RfbmV3KGludGVyZmFjZSwgIkNvbmZpZ19zbmFwc2hvdCIsIENvbmZpZ19zbmFwc2hvdCwgTlVM TCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgQ29uZmln X3NuYXBzaG90IG1ldGhvZCIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZCht ZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJTdGF0ZSIsICd1JywgTlVMTCwgMCkpKSkKKyAgICAgICAg ICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAg Ly8gQ29uZmlnRG9uZSBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0g ZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIkNvbmZpZ19yYW1zaXplIiwgQ29uZmlnX3JhbXNp emUsIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRl IENvbmZpZ19zbmFwc2hvdCBtZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2Fy Z19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiTWVnYUJ5dGVzIiwgJ3UnLCBOVUxMLCAwKSkp KQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFt Iik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9yZXR1cm5fYWRkIChtZXRob2QsIGRzcnZf cGFyYW1fbmV3KCJSZXR1cm5Db2RlIiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNS Vl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBDb25m aWdEb25lIGRlY2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2X21l dGhvZF9uZXcoaW50ZXJmYWNlLCAiQ29uZmlnX3NtcCIsIENvbmZpZ19zbXAsIE5VTEwpKSkKKyAg ICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIENvbmZpZ19zbXAgbWV0 aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9w YXJhbV9uZXcoIkNQVXMiLCAndScsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklD KHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKyAgICBpZiAoKGVyciA9IGRzcnZf bWV0aG9kX3JldHVybl9hZGQgKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIlJldHVybkNvZGUiLCAn aScsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFk ZCBtZXRob2QgcGFyYW0iKTsKKworI2lmZGVmIEhBU19BVURJTworICAgIC8vIENvbmZpZ19Tb3Vu ZEhXU3RhdGUgZGVjbGFyYXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZf bWV0aG9kX25ldyhpbnRlcmZhY2UsICJDb25maWdfU291bmRIV1N0YXRlIiwgQ29uZmlnX1NvdW5k SFdTdGF0ZSwgTlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBj cmVhdGUgQ29uZmlnX1NvdW5kSFdTdGF0ZSBtZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRzcnZf bWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiTmFtZSIsICdzJywgTlVMTCwg MjU2KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9k IHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNy dl9wYXJhbV9uZXcoIlN0YXRlIiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9Q QU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBk c3J2X21ldGhvZF9yZXR1cm5fYWRkIChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5Db2Rl IiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4n dCBhZGQgbWV0aG9kIHBhcmFtIik7CisjZW5kaWYgLy9IQVMgQVVESU8KKworICAgIC8vIE1vbml0 b3JTZXRGbG9wcHkgZGVjbGFyYXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRz cnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJNb25pdG9yX1NldEZsb3BweSIsIE1vbml0b3JTZXRG bG9wcHksIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3Jl YXRlIE1vbml0b3JTZXRGbG9wcHkgbWV0aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhv ZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkluZGV4IiwgJ3UnLCBOVUxMLCAwKSkp KQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFt Iik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9wYXJh bV9uZXcoIkltYWdlTmFtZSIsICdzJywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9Q QU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBk c3J2X21ldGhvZF9yZXR1cm5fYWRkIChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5Db2Rl IiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4n dCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBNb25pdG9yX1NldEJsb2NrRGV2aWNlIGRl Y2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2X21ldGhvZF9uZXco aW50ZXJmYWNlLCAiTW9uaXRvcl9TZXRCbG9ja0RldmljZSIsIE1vbml0b3JfU2V0QmxvY2tEZXZp Y2UsIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRl IE1vbml0b3JfU2V0QmxvY2tEZXZpY2UgbWV0aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21l dGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkluZGV4IiwgJ3UnLCBOVUxMLCAw KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBh cmFtIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9w YXJhbV9uZXcoIkltYWdlTmFtZSIsICdzJywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNS Vl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIg PSBkc3J2X21ldGhvZF9yZXR1cm5fYWRkIChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5D b2RlIiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJj YW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBDb25maWdfU2V0Q2Ryb20gZGVjbGFy YXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRl cmZhY2UsICJDb25maWdfU2V0Q2Ryb20iLCBDb25maWdfU2V0Q2Ryb20sIE5VTEwpKSkKKyAgICAg ICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIENvbmZpZ19TZXRDZHJvbSBt ZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2 X3BhcmFtX25ldygiSW1hZ2VOYW1lIiwgJ3MnLCBOVUxMLCAyNTYpKSkpCisgICAgICAgICAgICBE U1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKyAgICBpZiAoKGVy ciA9IGRzcnZfbWV0aG9kX3JldHVybl9hZGQgKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIlJldHVy bkNvZGUiLCAnaScsIE5VTEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwg ImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIENvbmZpZ19BZGROZXQgZGVjbGFy YXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRl cmZhY2UsICJDb25maWdfQWRkTmV0IiwgQ29uZmlnX0FkZE5ldCwgTlVMTCkpKQorICAgICAgICAg ICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgQ29uZmlnX0FkZE5ldCBtZXRob2Qi KTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFt X25ldygiUGFyYW1ldGVycyIsICdzJywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9Q QU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBk c3J2X21ldGhvZF9yZXR1cm5fYWRkIChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5Db2Rl IiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4n dCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBDb25maWdfQklPU0RpciBkZWNsYXJhdGlv biBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFj ZSwgIkNvbmZpZ19CSU9TRGlyIiwgQ29uZmlnX0JJT1NEaXIsIE5VTEwpKSkKKyAgICAgICAgICAg IERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIENvbmZpZ19CSU9TRGlyIG1ldGhvZCIp OworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1f bmV3KCJEaXJlY3RvcnkiLCAncycsIE5VTEwsIDI1NikpKSkKKyAgICAgICAgICAgIERTUlZfUEFO SUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworICAgIGlmICgoZXJyID0gZHNy dl9tZXRob2RfcmV0dXJuX2FkZCAobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiUmV0dXJuQ29kZSIs ICdpJywgTlVMTCwgMCkpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3Qg YWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAgLy8gQ29uZmlnX21vbml0b3IgZGVjbGFyYXRpb24g YW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZhY2Us ICJDb25maWdfbW9uaXRvciIsIENvbmZpZ19tb25pdG9yLCBOVUxMKSkpCisgICAgICAgICAgICBE U1JWX1BBTklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBDb25maWdfbW9uaXRvciBtZXRob2QiKTsK KyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25l dygiRGV2aWNlTmFtZSIsICdzJywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5J QyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBNb25pdG9yX0Fk ZFNlcmlhbCBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9t ZXRob2RfbmV3KGludGVyZmFjZSwgIk1vbml0b3JfQWRkU2VyaWFsIiwgTW9uaXRvcl9BZGRTZXJp YWwsIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRl IE1vbml0b3JfQWRkU2VyaWFsIG1ldGhvZCIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2Rf YXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJEZXZpY2VOYW1lIiwgJ3MnLCBOVUxMLCAy NTYpKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2Qg cGFyYW0iKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX3JldHVybl9hZGQgKG1ldGhvZCwg ZHNydl9wYXJhbV9uZXcoIlJldHVybkNvZGUiLCAnaScsIE5VTEwsIDApKSkpCisgICAgICAgICAg ICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8v IE1vbml0b3JfQWRkU2VyaWFsIGRlY2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRo b2QgPSBkc3J2X21ldGhvZF9uZXcoaW50ZXJmYWNlLCAiTW9uaXRvcl9SZW1vdmVTZXJpYWwiLCBN b25pdG9yX1JlbW92ZVNlcmlhbCwgTlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2 ZXIsICJjYW4ndCBjcmVhdGUgTW9uaXRvcl9SZW1vdmVTZXJpYWwgbWV0aG9kIik7CisgICAgaWYg KChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRkKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkRldmlj ZUlEIiwgJ2knLCBOVUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJj YW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBNb25pdG9yX0FkZFBhcmFsbGVsIGRl Y2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2X21ldGhvZF9uZXco aW50ZXJmYWNlLCAiTW9uaXRvcl9BZGRQYXJhbGxlbCIsIE1vbml0b3JfQWRkUGFyYWxsZWwsIE5V TEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIE1vbml0 b3JfQWRkUGFyYWxsZWwgbWV0aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdf YWRkKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkRldmljZU5hbWUiLCAncycsIE5VTEwsIDI1Nikp KSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJh bSIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfcmV0dXJuX2FkZCAobWV0aG9kLCBkc3J2 X3BhcmFtX25ldygiUmV0dXJuQ29kZSIsICdpJywgTlVMTCwgMCkpKSkKKyAgICAgICAgICAgIERT UlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAgLy8gTW9u aXRvcl9BZGRQYXJhbGxlbCBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9k ID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIk1vbml0b3JfUmVtb3ZlUGFyYWxsZWwiLCBN b25pdG9yX1JlbW92ZVBhcmFsbGVsLCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNl cnZlciwgImNhbid0IGNyZWF0ZSBNb25pdG9yX1JlbW92ZVBhcmFsbGVsIG1ldGhvZCIpOworICAg IGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJE ZXZpY2VJRCIsICdpJywgTlVMTCwgMCkpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVy LCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAgLy8gTW9uaXRvcl9Mb2FkVk0gZGVj bGFyYXRpb24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhp bnRlcmZhY2UsICJNb25pdG9yX0xvYWRWTSIsIE1vbml0b3JfTG9hZFZNLCBOVUxMKSkpCisgICAg ICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBNb25pdG9yX0xvYWRWTSBt ZXRob2QiKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2 X3BhcmFtX25ldygiRmlsZW5hbWUiLCAncycsIE5VTEwsIDI1NikpKSkKKyAgICAgICAgICAgIERT UlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworCisgICAgLy8gQ29u ZmlnX3ZuYyBkZWNsYXJhdGlvbiBhbmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9t ZXRob2RfbmV3KGludGVyZmFjZSwgIkNvbmZpZ192bmMiLCBDb25maWdfdm5jLCBOVUxMKSkpCisg ICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBDb25maWdfdm5jIG1l dGhvZCIpOworICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZf cGFyYW1fbmV3KCJEaXNwbGF5IiwgJ3MnLCBOVUxMLCAyNTYpKSkpCisgICAgICAgICAgICBEU1JW X1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKworICAgIC8vIE1vbml0 b3JfY29tbWl0IGRlY2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2 X21ldGhvZF9uZXcoaW50ZXJmYWNlLCAiTW9uaXRvcl9jb21taXQiLCBNb25pdG9yX2NvbW1pdCwg TlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgTW9u aXRvcl9jb21taXQgbWV0aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9hcmdfYWRk KG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIkRldmljZU5hbWUiLCAncycsIE5VTEwsIDI1NikpKSkK KyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIp OworCisgICAgLy8gTW9uaXRvcl9xdWl0IGRlY2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAo IShtZXRob2QgPSBkc3J2X21ldGhvZF9uZXcoaW50ZXJmYWNlLCAiTW9uaXRvcl9xdWl0IiwgTW9u aXRvcl9xdWl0LCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0 IGNyZWF0ZSBNb25pdG9yX3F1aXQgbWV0aG9kIik7CisKKyAgICAvLyBNb25pdG9yX2VqZWN0IGRl Y2xhcmF0aW9uIGFuZCBwYXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2X21ldGhvZF9uZXco aW50ZXJmYWNlLCAiTW9uaXRvcl9lamVjdCIsIE1vbml0b3JfZWplY3QsIE5VTEwpKSkKKyAgICAg ICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIE1vbml0b3JfZWplY3QgbWV0 aG9kIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9yZXR1cm5fYWRkIChtZXRob2QsIGRz cnZfcGFyYW1fbmV3KCJGb3JjZSIsICdpJywgTlVMTCwgMCkpKSkKKyAgICAgICAgICAgIERTUlZf UEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1ldGhvZCBwYXJhbSIpOworICAgIGlmICgoZXJyID0g ZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJGaWxlbmFtZSIsICdz JywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBh ZGQgbWV0aG9kIHBhcmFtIik7CisKKyAgICAvLyBNb25pdG9yX2NoYW5nZSBkZWNsYXJhdGlvbiBh bmQgcGFyYW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwg Ik1vbml0b3JfY2hhbmdlIiwgTW9uaXRvcl9jaGFuZ2UsIE5VTEwpKSkKKyAgICAgICAgICAgIERT UlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIE1vbml0b3JfY2hhbmdlIG1ldGhvZCIpOwor ICAgIGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3 KCJEZXZpY2VOYW1lIiwgJ3MnLCBOVUxMLCAyNTYpKSkpCisgICAgICAgICAgICBEU1JWX1BBTklD KHNlcnZlciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKyAgICBpZiAoKGVyciA9IGRzcnZf bWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiRmlsZW5hbWUiLCAncycsIE5V TEwsIDI1NikpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgYWRkIG1l dGhvZCBwYXJhbSIpOworCisgICAgLy8gTW9uaXRvcl9zYXZldm0gZGVjbGFyYXRpb24gYW5kIHBh cmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJNb25p dG9yX3NhdmV2bSIsIE1vbml0b3Jfc2F2ZXZtLCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BB TklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBNb25pdG9yX3NhdmV2bSBtZXRob2QiKTsKKyAgICBp ZiAoKGVyciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiRGV2 aWNlTmFtZSIsICdzJywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2 ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhv ZF9yZXR1cm5fYWRkIChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5Db2RlIiwgJ2knLCBO VUxMLCAwKSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0 aG9kIHBhcmFtIik7CisKKyAgICAvLyBNb25pdG9yX2xvYWR2bSBkZWNsYXJhdGlvbiBhbmQgcGFy YW1zCisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIk1vbml0 b3JfbG9hZHZtIiwgTW9uaXRvcl9sb2Fkdm0sIE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFO SUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIE1vbml0b3JfbG9hZHZtIG1ldGhvZCIpOworICAgIGlm ICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJEZXZp Y2VOYW1lIiwgJ3MnLCBOVUxMLCAyNTYpKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZl ciwgImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9k X3JldHVybl9hZGQgKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIlJldHVybkNvZGUiLCAnaScsIE5V TEwsIDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRo b2QgcGFyYW0iKTsKKworICAgIC8vIE1vbml0b3JfZGVsdm0gZGVjbGFyYXRpb24gYW5kIHBhcmFt cworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZhY2UsICJNb25pdG9y X2RlbHZtIiwgTW9uaXRvcl9kZWx2bSwgTlVMTCkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhz ZXJ2ZXIsICJjYW4ndCBjcmVhdGUgTW9uaXRvcl9kZWx2bSBtZXRob2QiKTsKKyAgICBpZiAoKGVy ciA9IGRzcnZfbWV0aG9kX2FyZ19hZGQobWV0aG9kLCBkc3J2X3BhcmFtX25ldygiRGV2aWNlTmFt ZSIsICdzJywgTlVMTCwgMjU2KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJj YW4ndCBhZGQgbWV0aG9kIHBhcmFtIik7CisgICAgaWYgKChlcnIgPSBkc3J2X21ldGhvZF9yZXR1 cm5fYWRkIChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJSZXR1cm5Db2RlIiwgJ2knLCBOVUxMLCAw KSkpKQorICAgICAgICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBhZGQgbWV0aG9kIHBh cmFtIik7CisKKyAgICAvLyBNb25pdG9yX3NlbmRfa2V5cyBkZWNsYXJhdGlvbiBhbmQgcGFyYW1z CisgICAgaWYgKCEobWV0aG9kID0gZHNydl9tZXRob2RfbmV3KGludGVyZmFjZSwgIk1vbml0b3Jf c2VuZF9rZXkiLCBNb25pdG9yX3NlbmRfa2V5LCBOVUxMKSkpCisgICAgICAgICAgICBEU1JWX1BB TklDKHNlcnZlciwgImNhbid0IGNyZWF0ZSBNb25pdG9yX3NlbmRfa2V5IG1ldGhvZCIpOworICAg IGlmICgoZXJyID0gZHNydl9tZXRob2RfYXJnX2FkZChtZXRob2QsIGRzcnZfcGFyYW1fbmV3KCJL ZXlzIiwgJ3MnLCBOVUxMLCAyNTYpKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwg ImNhbid0IGFkZCBtZXRob2QgcGFyYW0iKTsKKyAgICBpZiAoKGVyciA9IGRzcnZfbWV0aG9kX3Jl dHVybl9hZGQgKG1ldGhvZCwgZHNydl9wYXJhbV9uZXcoIlJldHVybkNvZGUiLCAnaScsIE5VTEws IDApKSkpCisgICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNhbid0IGFkZCBtZXRob2Qg cGFyYW0iKTsKKworICAgIC8vIE1vbml0b3Jfc3lzdGVtX3Jlc2V0IGRlY2xhcmF0aW9uIGFuZCBw YXJhbXMKKyAgICBpZiAoIShtZXRob2QgPSBkc3J2X21ldGhvZF9uZXcoaW50ZXJmYWNlLCAiTW9u aXRvcl9zeXN0ZW1fcmVzZXQiLCBNb25pdG9yX3N5c3RlbV9yZXNldCwgTlVMTCkpKQorICAgICAg ICAgICAgRFNSVl9QQU5JQyhzZXJ2ZXIsICJjYW4ndCBjcmVhdGUgTW9uaXRvcl9zeXN0ZW1fcmVz ZXQgbWV0aG9kIik7CisKKyAgICAvLyBNb25pdG9yX3N5c3RlbV9wb3dlcmRvd24gZGVjbGFyYXRp b24gYW5kIHBhcmFtcworICAgIGlmICghKG1ldGhvZCA9IGRzcnZfbWV0aG9kX25ldyhpbnRlcmZh Y2UsICJNb25pdG9yX3N5c3RlbV9wb3dlcmRvd24iLCBNb25pdG9yX3N5c3RlbV9wb3dlcmRvd24s IE5VTEwpKSkKKyAgICAgICAgICAgIERTUlZfUEFOSUMoc2VydmVyLCAiY2FuJ3QgY3JlYXRlIE1v bml0b3Jfc3lzdGVtX3Jlc2V0IG1ldGhvZCIpOworCisKKyAgICAvLyBDb25uZWN0IHRvIGJ1cyBk YWVtb24KKyAgICBpZiAoKGVyciA9IGRzcnZfc2VydmVyX2Nvbm5lY3Qoc2VydmVyLCAxKSkpCisg ICAgICAgICAgICBEU1JWX1BBTklDKHNlcnZlciwgImNvbm5lY3QgZmFpbGVkOiAlcyIsIGVycik7 CisKKyAgICBEU1JWX0xPRyhzZXJ2ZXIsIERTUlZfTE9HX0lORk8sICJEQnVzIHNlcnZlciBpcyBj b25uZWN0ZWQiKTsKKworICAgIC8vIHN0YXJ0IHRoZSBtYWluIGxvb3AKKyAgICBkc3J2X3NlcnZl cl9zZXJ2ZShzZXJ2ZXIpOworCisgICAgcmV0dXJuIDA7Cit9CisKKwordm9pZCBkYnVzX21vbml0 b3Jfd2FpdCh2b2lkKQoreworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmY29uZl9tdXRleCk7Cisg ICAgd2hpbGUgKCFjb25maWd1cmVkKSB7CisgICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZjb25m X2NvbmQsICZjb25mX211dGV4KTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmNv bmZfbXV0ZXgpOworfQorCit2b2lkIGRidXNfbW9uaXRvcl9pbml0KHZvaWQpCit7CisJaWYgKHB0 aHJlYWRfY3JlYXRlKCZkYnVzX3RocmVhZCwgTlVMTCwgZGJ1c19tYWluLCBOVUxMKSkKKwkJcGVy cm9yKCJkYnVzIHRocmVhZCBjcmVhdGUgZmFpbGVkIik7Cit9CmRpZmYgLU5hdXIgL3l1dmFsL0Rl di9xZW11LWN2cy9xZW11L2RidXMvbW9uaXRvci1kYnVzLmggL3l1dmFsL0Rldi9xZW11LWRidXMv cWVtdS9kYnVzL21vbml0b3ItZGJ1cy5oCi0tLSAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvZGJ1 cy9tb25pdG9yLWRidXMuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysg L3l1dmFsL0Rldi9xZW11LWRidXMvcWVtdS9kYnVzL21vbml0b3ItZGJ1cy5oCTIwMDctMDktMjMg MTM6MDA6NDcuMDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsNjAgQEAKKyNpZm5kZWYgX19tb25p dG9yX2RidXNfaAorI2RlZmluZSBfX21vbml0b3JfZGJ1c19oCisKKyNpbmNsdWRlICJ2bC5oIgor Cit2b2lkIGRidXNfbW9uaXRvcl9pbml0KHZvaWQpOwordm9pZCBkYnVzX21vbml0b3Jfd2FpdCh2 b2lkKTsKKworLy9taWdyYXRpb24gZnVuY3Rpb24gZGVjbGFyYXRpb24KK3ZvaWQgbWdtdF9taWdy YXRlX3NldF9zcGVlZCh1aW50MzJfdCBuQnl0ZXMpOwordm9pZCBkb19taWdyYXRlX3NldF9zcGVl ZChjb25zdCBjaGFyICp2YWx1ZSk7Cit2b2lkIGRvX21pZ3JhdGVfY2FuY2VsKHZvaWQpOworaW50 IG1nbXRfbWlncmF0ZShpbnQgZGV0YWNoLCBjb25zdCBjaGFyICp1cmkpOworCisvLyBFeHRlcm5h bCB2YXJpYWJsZXMsIGRlZmluZGVkIGluIHZsLmMgYW5kIHdlIG5lZWQgdG8gdXNlLgorZXh0ZXJu IGludCB1c2JfZW5hYmxlZDsKK2V4dGVybiBVU0JQb3J0ICp1c2VkX3VzYl9wb3J0czsKK2V4dGVy biBpbnQgYm9vdF9kZXZpY2U7CitleHRlcm4gaW50IHNuYXBzaG90OworZXh0ZXJuIGludCByYW1f c2l6ZTsKK2V4dGVybiBpbnQgc21wX2NwdXM7CisjaWZkZWYgSEFTX0FVRElPCitleHRlcm4gc3Ry dWN0IHNvdW5kaHcgc291bmRod1tdOworI2VuZGlmCitleHRlcm4gQmxvY2tEcml2ZXJTdGF0ZSAq ZmRfdGFibGVbTUFYX0ZEXTsKKy8qIE5vdGU6IGJzX3RhYmxlW01BWF9ESVNLU10gaXMgYSBkdW1t eSBibG9jayBkcml2ZXIgaWYgbm9uZSBhdmFpbGFibGUKKyAgIHRvIHN0b3JlIHRoZSBWTSBzbmFw c2hvdHMgKi8KK2V4dGVybiBCbG9ja0RyaXZlclN0YXRlICpic190YWJsZVtNQVhfRElTS1MgKyAx XTsKK2V4dGVybiBjaGFyICpoZF9maWxlbmFtZVtNQVhfRElTS1NdOworZXh0ZXJuIGNoYXIgKmZk X2ZpbGVuYW1lW01BWF9GRF07CitleHRlcm4gaW50IGN5bHM7CitleHRlcm4gaW50IGhlYWRzOwor ZXh0ZXJuIGludCBzZWNzOworZXh0ZXJuIGludCB0cmFuc2xhdGlvbjsKK2V4dGVybiBpbnQgcnRj X3V0YzsKK2V4dGVybiBpbnQgZnVsbF9zY3JlZW47CitleHRlcm4gaW50IHdpbjJrX2luc3RhbGxf aGFjazsKK2V4dGVybiBjaGFyIG5ldF9jbGllbnRzW01BWF9ORVRfQ0xJRU5UU11bMjU2XTsKK2V4 dGVybiBpbnQgbmJfbmV0X2NsaWVudHM7CitleHRlcm4gaW50IGNpcnJ1c192Z2FfZW5hYmxlZDsK K2V4dGVybiBpbnQgYWNwaV9lbmFibGVkOworZXh0ZXJuIGludCB0aW1lX2RyaWZ0X2ZpeDsKK2V4 dGVybiBpbnQgdXNlX3J0YzsKK2V4dGVybiBpbnQgbm9fcXVpdDsKK2V4dGVybiBpbnQgZmRfYm9v dGNoazsKK2V4dGVybiBpbnQgbm9ncmFwaGljOworZXh0ZXJuIGNoYXIgbW9uaXRvcl9kZXZpY2Vb MTI4XTsKK2V4dGVybiBjaGFyIHNlcmlhbF9kZXZpY2VzW01BWF9TRVJJQUxfUE9SVFNdWzEyOF07 CitleHRlcm4gaW50IHNlcmlhbF9kZXZpY2VfaW5kZXg7CitleHRlcm4gY2hhciBwYXJhbGxlbF9k ZXZpY2VzW01BWF9QQVJBTExFTF9QT1JUU11bMTI4XTsKK2V4dGVybiBpbnQgcGFyYWxsZWxfZGV2 aWNlX2luZGV4OworZXh0ZXJuIGludCBub19yZWJvb3Q7CitleHRlcm4gY29uc3QgY2hhciAqdm5j X2Rpc3BsYXk7CitleHRlcm4gaW50IGRhZW1vbml6ZTsKK2V4dGVybiBVU0JQb3J0ICp1c2VkX3Vz Yl9wb3J0czsKK2V4dGVybiBjb25zdCBjaGFyICpzekRCdXNTZXJ2aWNlTmFtZTsKK2V4dGVybiBp bnQgY2Ryb21faW5kZXg7CisKKyNlbmRpZiAvLyBfX21vbml0b3JfZGJ1c19oCisKZGlmZiAtTmF1 ciAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvZXJyb3IuYyAveXV2YWwvRGV2L3FlbXUtZGJ1cy9x ZW11L2Vycm9yLmMKLS0tIC95dXZhbC9EZXYvcWVtdS1jdnMvcWVtdS9lcnJvci5jCTE5NzAtMDEt MDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyAveXV2YWwvRGV2L3FlbXUtZGJ1cy9xZW11 L2Vycm9yLmMJMjAwNy0wOS0yMyAxMzowMDowOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTAsMCArMSwy NyBAQAorI2luY2x1ZGUgImVycm9yLmgiCisjaW5jbHVkZSAidmwuaCIKKworY2hhciBnX3N6TGFz dEVycm9yWzEwMjRdOworCit2b2lkIFNldExhc3RFcnJvcihjaGFyICpzekVycm9yTXNnKSB7CisJ c3RyY3B5IChnX3N6TGFzdEVycm9yLHN6RXJyb3JNc2cpOworfQorCit2b2lkIFNldExhc3RFcnJv cl92cHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKK3sKKyAgICBjaGFyIGJ1Zls0 MDk2XTsKKyAgICB2c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgZm10LCBhcCk7CisgICAgU2V0 TGFzdEVycm9yKGJ1Zik7Cit9CisKK3ZvaWQgU2V0TGFzdEVycm9yX3ByaW50Zihjb25zdCBjaGFy ICpmbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFwOworICAgIHZhX3N0YXJ0KGFwLCBmbXQpOwor ICAgIFNldExhc3RFcnJvcl92cHJpbnRmKGZtdCwgYXApOworICAgIHZhX2VuZChhcCk7Cit9CisK K2NvbnN0IGNoYXIgKkdldExhc3RFcnJvcigpIHsKKwlyZXR1cm4gZ19zekxhc3RFcnJvcjsKK30K ZGlmZiAtTmF1ciAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvZXJyb3IuaCAveXV2YWwvRGV2L3Fl bXUtZGJ1cy9xZW11L2Vycm9yLmgKLS0tIC95dXZhbC9EZXYvcWVtdS1jdnMvcWVtdS9lcnJvci5o CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyAveXV2YWwvRGV2L3FlbXUt ZGJ1cy9xZW11L2Vycm9yLmgJMjAwNy0wOS0yMyAxMzowMDowOC4wMDAwMDAwMDAgKzAyMDAKQEAg LTAsMCArMSwyNyBAQAorI2luY2x1ZGUgImVycm9yLmgiCisjaW5jbHVkZSAidmwuaCIKKworY2hh ciBnX3N6TGFzdEVycm9yWzEwMjRdOworCit2b2lkIFNldExhc3RFcnJvcihjaGFyICpzekVycm9y TXNnKSB7CisJc3RyY3B5IChnX3N6TGFzdEVycm9yLHN6RXJyb3JNc2cpOworfQorCit2b2lkIFNl dExhc3RFcnJvcl92cHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKK3sKKyAgICBj aGFyIGJ1Zls0MDk2XTsKKyAgICB2c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgZm10LCBhcCk7 CisgICAgU2V0TGFzdEVycm9yKGJ1Zik7Cit9CisKK3ZvaWQgU2V0TGFzdEVycm9yX3ByaW50Zihj b25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFwOworICAgIHZhX3N0YXJ0KGFw LCBmbXQpOworICAgIFNldExhc3RFcnJvcl92cHJpbnRmKGZtdCwgYXApOworICAgIHZhX2VuZChh cCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldExhc3RFcnJvcigpIHsKKwlyZXR1cm4gZ19zekxhc3RF cnJvcjsKK30KZGlmZiAtTmF1ciAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvTWFrZWZpbGUudGFy Z2V0IC95dXZhbC9EZXYvcWVtdS1kYnVzL3FlbXUvTWFrZWZpbGUudGFyZ2V0Ci0tLSAveXV2YWwv RGV2L3FlbXUtY3ZzL3FlbXUvTWFrZWZpbGUudGFyZ2V0CTIwMDctMDktMTYgMjM6MDc6NDcuMDAw MDAwMDAwICswMjAwCisrKyAveXV2YWwvRGV2L3FlbXUtZGJ1cy9xZW11L01ha2VmaWxlLnRhcmdl dAkyMDA3LTA5LTIzIDE1OjI5OjUyLjAwMDAwMDAwMCArMDIwMApAQCAtMzY4LDYgKzM2OCwxOSBA QAogCiAjIG11c3QgdXNlIHN0YXRpYyBsaW5raW5nIHRvIGF2b2lkIGxlYXZpbmcgc3R1ZmYgaW4g dmlydHVhbCBhZGRyZXNzIHNwYWNlCiBWTF9PQkpTPXZsLm8gb3NkZXAubyByZWFkbGluZS5vIG1v bml0b3IubyBwY2kubyBjb25zb2xlLm8gbG9hZGVyLm8gaXNhX21taW8ubworaWZkZWYgQ09ORklH X0RCVVMKK0NQUEZMQUdTKz0tSSQoU1JDX1BBVEgpL2RidXMKK1ZMX09CSlMrPS91c3IvbG9jYWwv bGliL2RzcnYubworCitEQlVTX1NFUlZFUiA6PSBtb25pdG9yLWRidXMKK0RCVVNfU0VSVk9CSiA6 PSQoREJVU19TRVJWRVIpLm8KK1ZMX09CSlMrPSQoREJVU19TRVJWT0JKKQorCitlcnJvci5vOiBl cnJvci5jCisJJChDQykgJChPUF9DRkxBR1MpICQoQ1BQRkxBR1MpIC1jIC1vICRAICQ8CisKK1ZM X09CSlMrPWVycm9yLm8KK2VuZGlmCiBWTF9PQkpTKz1jdXRpbHMubwogVkxfT0JKUys9aG9zdC11 dGlscy5vCiBWTF9PQkpTKz1ibG9jay5vIGJsb2NrLXJhdy5vCkBAIC02NTksNiArNjcyLDI3IEBA CiAlLm86ICUuYwogCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKEJBU0VfQ0ZMQUdTKSAt YyAtbyAkQCAkPAogCitpZmRlZiBDT05GSUdfREJVUworCitQS0dDT05GID89IHBrZy1jb25maWcK K0JJTkRUT09MID89IGRidXMtYmluZGluZy10b29sCisKK0RCVVNfQ0ZMQUdTICs9LUkkKFNSQ19Q QVRIKS9kYnVzLworREJVU19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR0NPTkYpIC0tY2ZsYWdzIGRi dXMtMSkKK0RCVVNfTERGTEFHUyArPSAkKHNoZWxsICQoUEtHQ09ORikgLS1saWJzIGRidXMtMSkK K0xJQlMgKz0gJChEQlVTX0xERkxBR1MpCisKK0RCVVNfU0VSVk9CSkVDVCA6PSBxZW11X21vbgor VkxfT0JKUys9JChEQlVTX1NFUlZPQkopCisKKyQoREJVU19TRVJWT0JKKTogZGJ1cy9tb25pdG9y LWRidXMuYyAkKERCVVNfU0VSVkhEUikKKwkkKENDKSAkKENGTEFHUykgJChDUFBGTEFHUykgJChC QVNFX0NGTEFHUykgJChEQlVTX0NGTEFHUykgLWMgLW8gJEAgJDwKKworIyQoREJVU19TRVJWSERS KTogZGJ1cy8kKERCVVNfU0VSVkVSKS54bWwKKyMJICQoQklORFRPT0wpIC0tcHJlZml4PSQoREJV U19TRVJWT0JKRUNUKSAtLW1vZGU9Z2xpYi1zZXJ2ZXIgLS1vdXRwdXQ9JEAgJDwJCisKK2VuZGlm CisKICUubzogJS5TCiAJJChDQykgJChDUFBGTEFHUykgLWMgLW8gJEAgJDwKIApkaWZmIC1OYXVy IC95dXZhbC9EZXYvcWVtdS1jdnMvcWVtdS9tb25pdG9yLmMgL3l1dmFsL0Rldi9xZW11LWRidXMv cWVtdS9tb25pdG9yLmMKLS0tIC95dXZhbC9EZXYvcWVtdS1jdnMvcWVtdS9tb25pdG9yLmMJMjAw Ny0wOS0xOSAwNzo0OToxMy4wMDAwMDAwMDAgKzAyMDAKKysrIC95dXZhbC9EZXYvcWVtdS1kYnVz L3FlbXUvbW9uaXRvci5jCTIwMDctMDktMjMgMTM6MDA6MDcuMDAwMDAwMDAwICswMjAwCkBAIC0x OTksNyArMTk5LDcgQEAKICAgICBoZWxwX2NtZChuYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZG9f Y29tbWl0KGNvbnN0IGNoYXIgKmRldmljZSkKK3ZvaWQgZG9fY29tbWl0KGNvbnN0IGNoYXIgKmRl dmljZSkKIHsKICAgICBpbnQgaSwgYWxsX2RldmljZXM7CiAKQEAgLTM3OCw3ICszNzgsNyBAQAog ICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBkb19lamVjdChpbnQgZm9yY2UsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKQordm9pZCBkb19lamVjdChpbnQgZm9yY2UsIGNvbnN0IGNoYXIgKmZp bGVuYW1lKQogewogICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJzOwogCkBAIC00MjAsNyArNDIwLDcg QEAKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGRvX2NoYW5nZShjb25zdCBjaGFyICpkZXZpY2Us IGNvbnN0IGNoYXIgKnRhcmdldCkKK3ZvaWQgZG9fY2hhbmdlKGNvbnN0IGNoYXIgKmRldmljZSwg Y29uc3QgY2hhciAqdGFyZ2V0KQogewogICAgIGlmIChzdHJjbXAoZGV2aWNlLCAidm5jIikgPT0g MCkgewogCWRvX2NoYW5nZV92bmModGFyZ2V0KTsKQEAgLTg3Myw3ICs4NzMsNyBAQAogICAgIHJl dHVybiAtMTsKIH0KIAotc3RhdGljIHZvaWQgZG9fc2VuZF9rZXkoY29uc3QgY2hhciAqc3RyaW5n KQordm9pZCBkb19zZW5kX2tleShjb25zdCBjaGFyICpzdHJpbmcpCiB7CiAgICAgY2hhciBrZXli dWZbMTZdLCAqcTsKICAgICB1aW50OF90IGtleWNvZGVzWzE2XTsKZGlmZiAtTmF1ciAveXV2YWwv RGV2L3FlbXUtY3ZzL3FlbXUvbW9uaXRvci5oIC95dXZhbC9EZXYvcWVtdS1kYnVzL3FlbXUvbW9u aXRvci5oCi0tLSAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvbW9uaXRvci5oCTE5NzAtMDEtMDEg MDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyAveXV2YWwvRGV2L3FlbXUtZGJ1cy9xZW11L21v bml0b3IuaAkyMDA3LTA5LTIzIDEzOjAwOjA3LjAwMDAwMDAwMCArMDIwMApAQCAtMCwwICsxLDEw IEBACisjaWZuZGVmIF9fbW9uaXRvcl9oCisjZGVmaW5lIF9fbW9uaXRvcl9oCisKK3ZvaWQgZG9f Y29tbWl0KGNvbnN0IGNoYXIgKmRldmljZSk7Cit2b2lkIGRvX2VqZWN0KGludCBmb3JjZSwgY29u c3QgY2hhciAqZmlsZW5hbWUpOwordm9pZCBkb19jaGFuZ2UoY29uc3QgY2hhciAqZGV2aWNlLCBj b25zdCBjaGFyICpmaWxlbmFtZSk7Cit2b2lkIGRvX3NlbmRfa2V5KGNvbnN0IGNoYXIgKnN0cmlu Zyk7CisKKyNlbmRpZiAvLyBfX21vbml0b3JfaAorCmRpZmYgLU5hdXIgL3l1dmFsL0Rldi9xZW11 LWN2cy9xZW11L3ZsLmMgL3l1dmFsL0Rldi9xZW11LWRidXMvcWVtdS92bC5jCi0tLSAveXV2YWwv RGV2L3FlbXUtY3ZzL3FlbXUvdmwuYwkyMDA3LTA5LTE3IDIzOjI1OjIwLjAwMDAwMDAwMCArMDIw MAorKysgL3l1dmFsL0Rldi9xZW11LWRidXMvcWVtdS92bC5jCTIwMDctMDktMjMgMTU6Mjk6NDcu MDAwMDAwMDAwICswMjAwCkBAIC0yMiw2ICsyMiw3IEBACiAgKiBUSEUgU09GVFdBUkUuCiAgKi8K ICNpbmNsdWRlICJ2bC5oIgorI2luY2x1ZGUgImVycm9yLmgiCiAKICNpbmNsdWRlIDx1bmlzdGQu aD4KICNpbmNsdWRlIDxmY250bC5oPgpAQCAtMTI1LDYgKzEyNiw3IEBACiAKIC8vI2RlZmluZSBE RUJVR19VTlVTRURfSU9QT1JUCiAvLyNkZWZpbmUgREVCVUdfSU9QT1JUCisjZGVmaW5lIERFQlVH X0FDUEkKIAogI2RlZmluZSBQSFlTX1JBTV9NQVhfU0laRSAoMjA0NyAqIDEwMjQgKiAxMDI0KQog CkBAIC0xNTAsMTEgKzE1MiwxOCBAQAogLyogTm90ZTogYnNfdGFibGVbTUFYX0RJU0tTXSBpcyBh IGR1bW15IGJsb2NrIGRyaXZlciBpZiBub25lIGF2YWlsYWJsZQogICAgdG8gc3RvcmUgdGhlIFZN IHNuYXBzaG90cyAqLwogQmxvY2tEcml2ZXJTdGF0ZSAqYnNfdGFibGVbTUFYX0RJU0tTICsgMV0s ICpmZF90YWJsZVtNQVhfRkRdOworY2hhciAqaGRfZmlsZW5hbWVbTUFYX0RJU0tTXSwgKmZkX2Zp bGVuYW1lW01BWF9GRF07CitpbnQgY3lscywgaGVhZHMsIHNlY3MsIHRyYW5zbGF0aW9uOwogQmxv Y2tEcml2ZXJTdGF0ZSAqcGZsYXNoX3RhYmxlW01BWF9QRkxBU0hdOwogQmxvY2tEcml2ZXJTdGF0 ZSAqc2RfYmRydjsKIEJsb2NrRHJpdmVyU3RhdGUgKm10ZF9iZHJ2OwogLyogcG9pbnQgdG8gdGhl IGJsb2NrIGRyaXZlciB3aGVyZSB0aGUgc25hcHNob3RzIGFyZSBtYW5hZ2VkICovCiBCbG9ja0Ry aXZlclN0YXRlICpic19zbmFwc2hvdHM7CitjaGFyIHNlcmlhbF9kZXZpY2VzW01BWF9TRVJJQUxf UE9SVFNdWzEyOF07CitpbnQgc2VyaWFsX2RldmljZV9pbmRleDsKK2NoYXIgcGFyYWxsZWxfZGV2 aWNlc1tNQVhfUEFSQUxMRUxfUE9SVFNdWzEyOF07CitpbnQgcGFyYWxsZWxfZGV2aWNlX2luZGV4 OworY2hhciBtb25pdG9yX2RldmljZVsxMjhdOwogaW50IHZnYV9yYW1fc2l6ZTsKIHN0YXRpYyBE aXNwbGF5U3RhdGUgZGlzcGxheV9zdGF0ZTsKIGludCBub2dyYXBoaWM7CkBAIC0xOTAsMTMgKzE5 OSw2IEBACiBzdGF0aWMgVkxBTlN0YXRlICpmaXJzdF92bGFuOwogaW50IHNtcF9jcHVzID0gMTsK IGNvbnN0IGNoYXIgKnZuY19kaXNwbGF5OwotI2lmIGRlZmluZWQoVEFSR0VUX1NQQVJDKQotI2Rl ZmluZSBNQVhfQ1BVUyAxNgotI2VsaWYgZGVmaW5lZChUQVJHRVRfSTM4NikKLSNkZWZpbmUgTUFY X0NQVVMgMjU1Ci0jZWxzZQotI2RlZmluZSBNQVhfQ1BVUyAxCi0jZW5kaWYKIGludCBhY3BpX2Vu YWJsZWQgPSAxOwogaW50IGZkX2Jvb3RjaGsgPSAxOwogaW50IG5vX3JlYm9vdCA9IDA7CkBAIC0y MTYsNiArMjE4LDEzIEBACiB1bnNpZ25lZCBpbnQgbmJfcHJvbV9lbnZzID0gMDsKIGNvbnN0IGNo YXIgKnByb21fZW52c1tNQVhfUFJPTV9FTlZTXTsKICNlbmRpZgoraW50IHNuYXBzaG90OworaW50 IG5iX25ldF9jbGllbnRzOworY2hhciBuZXRfY2xpZW50c1tNQVhfTkVUX0NMSUVOVFNdWzI1Nl07 CitpbnQgY2Ryb21faW5kZXg7CisjaWZkZWYgQ09ORklHX0RCVVMKK2NvbnN0IGNoYXIgKnN6REJ1 c1NlcnZpY2VOYW1lID0gTlVMTDsKKyNlbmRpZgogCiAjZGVmaW5lIFRGUihleHByKSBkbyB7IGlm ICgoZXhwcikgIT0gLTEpIGJyZWFrOyB9IHdoaWxlIChlcnJubyA9PSBFSU5UUikKIApAQCAtNDU5 LDYgKzQ2OCw3NyBAQAogICAgIGFib3J0KCk7CiB9CiAKKyNpZmRlZiBERUJVR19BQ1BJCisjZGVm aW5lIERCR19BQ1BJX01TRyhidWZmLCBsZW4pIHsgXAorICAgIGZwcmludGYoc3RkZXJyLCJIT1NU IGFjcGlkOiAiKTsgXAorICAgIHdyaXRlKDIsIGJ1ZmYsIGxlbik7ICAgICAgICAgICAgXAorICAg IGZwcmludGYoc3RkZXJyLCJcbiIpOyAgICAgICAgICAgXAorICAgIH0KKyNlbHNlCisjZGVmaW5l IERCR19BQ1BJX01TRyhidWZmLCBsZW4pIHsgfQorI2VuZGlmCisgICAgICAgICAgICAgCisKK3Zv aWQgYWNwaWRfY2hhbm5lbF9ldmVudCh2b2lkICpkdW1teSwgaW50IGV2ZW50KQoreworIC8vICAg cHJpbnRmKCJhY3BpZF9jaGFubmVsX2V2ZW50OiBldmVudD0lZFxuIiwgZXZlbnQpOworCXJldHVy bjsKK30KK2ludCBhY3BpZF9jaGFubmVsX3JlYWR5KHZvaWQgKmR1bW15KQoreworICAgIC8vcHJp bnRmKCJhY3BpZF9jaGFubmVsX3JlYWR5IC4uLiBcbiIpOworICAgIHJldHVybiAxMDI0OworfQor Cit1aW50OF90IGFjcGlfbGlkX3N0cyA9IDA7Cit1aW50OF90IGFjcGlfYWRwX3N0cyA9IDA7CisK K3ZvaWQgYWNwaWRfY2hhbm5lbF9oYW5kbGVyKHZvaWQgKmR1bW15LCBjb25zdCB1aW50OF90ICpi dWZmLCBpbnQgbGVuKQoreworICAgc3RhdGljIGludCBldmVudF9mbGFnPTA7ICAgLy8gcmVtb3Zl ISEhCisKKyAgICBEQkdfQUNQSV9NU0coYnVmZiwgbGVuKTsKKy8qICAKKyAgaWYgKHN0cnN0cihi dWZmLCJsaWQiKSAhPSBOVUxMKSB7CisgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVhZCByZWFsIExJ RCBzdGF0dXMgb3Blbi9jbG9zZQorICAgICAgICAvLyBhbmQgYWZ0ZXIgdGhhdCB1cGRhdGUgdGhl IGFjcGlfbGlkX3N0cworICAgICAgICBpZiAoIShldmVudF9mbGFnICYgKDE8PDApKSkgeworICAg ICAgICAgICAgZXZlbnRfZmxhZyB8PSAoMTw8MCk7CisgICAgICAgICAgICBhY3BpX2xpZF9zdHMg PSAweDVhOworICAgICAgICAgICAgY3B1X291dHcoTlVMTCwweGIwMGMsKDEgPDwgMTEpKTsgIC8v IExJRF9TVFMKKyAgICAgICAgfWVsc2UgeworICAgICAgICAgICAgZXZlbnRfZmxhZyAmPSB+KDE8 PDApOworICAgICAgICB9CisgICAgICAgREJHX0FDUElfTVNHKCJJdCdzIGEgTElEIGV2ZW50LiIs c3RybGVuKCJJdCdzIGEgTElEIGV2ZW50LiIpKTsKKyAgICB9ZWxzZSAKKyovCisgICAgaWYgKHN0 cnN0cihidWZmLCJhY19hZGFwdGVyIikgIT0gTlVMTCkgeworICAgICAgICAvLyBXZSBuZWVkIHRv IHJlYWQgcmVhbCBBQyBhZGFwdGVyIHN0YXR1cyBvbi9vZmYKKyAgICAgICAgLy8gYW5kIGFmdGVy IHRoYXQgdXBkYXRlIHRoZSBhY3BpX2FkcF9zdHMKKyAgICAgICAgaWYgKCEoZXZlbnRfZmxhZyAm ICgxPDwxKSkpIHsKKyAgICAgICAgICAgIGV2ZW50X2ZsYWcgfD0gKDE8PDEpOworICAgICAgICAg ICAgYWNwaV9hZHBfc3RzID0gMHhhNTsgIC8vIEFDIG9mZmxpbmUKKyAgICAgICAgfWVsc2Ugewor ICAgICAgICAgICAgZXZlbnRfZmxhZyAmPSB+KDE8PDEpOyAKKyAgICAgICAgICAgIGFjcGlfYWRw X3N0cyA9IDB4NWE7ICAvLyBBQyBvbmxpbmUKKyAgICAgICAgfQorICAgICAgICBEQkdfQUNQSV9N U0coIkl0J3MgYSBBRFAgZXZlbnQuIixzdHJsZW4oIkl0J3MgYSBBRFAgZXZlbnQuIikpOworICAg IH1lbHNleworICAgICAgIERCR19BQ1BJX01TRygiSXQncyB1bmtub3duIGV2ZW50LiIsc3RybGVu KCJJdCdzIHVua25vd24gZXZlbnQuIikpOworICAgIH0KK30KKworCit2b2lkIGFjcGlfbGlkX3N0 YXR1cyh1aW50OF90IHN0YXR1cykKK3sKKyAgICBEQkdfQUNQSV9NU0coIkl0J3MgYSByZWFsIExJ RCBldmVudC4iLHN0cmxlbigiSXQncyBhIHJlYWwgTElEIGV2ZW50LiIpKTsKKyAgICBpZiAoc3Rh dHVzKSB7CisgICAgICAgIGFjcGlfbGlkX3N0cyA9IDB4NWE7CisgICAgICAgIGNwdV9vdXR3KE5V TEwsMHhiMDBjLCgxIDw8IDExKSk7ICAvLyBMSURfU1RTCisgICAgfQorfQorCisKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8q IGtleWJvYXJkL21vdXNlICovCiAKQEAgLTMyNzYsNiArMzM1Niw5IEBACiAgICAgICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNpZmRlZiBERUJVR19BQ1BJCQor CXByaW50ZigiY29ubmVjdGVkKHJldD0lZCkgdG8gZmQgJWQgKGxvb2sgYXQgL3Byb2MvJWQvZmQv JWQpXG4iLHJldCwgZmQsIGdldHBpZCgpLGZkKTsKKyNlbmRpZgogICAgICAgICBzLT5mZCA9IGZk OwogICAgICAgICBzb2NrZXRfc2V0X25vZGVsYXkoZmQpOwogICAgICAgICBpZiAocy0+Y29ubmVj dGVkKQpAQCAtNDY3MCw2ICs0NzUzLDEwIEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorVkxBTlN0 YXRlICpnZXRfZmlyc3RfdmxhbiAodm9pZCkgeworCXJldHVybiBmaXJzdF92bGFuOworfQorCiB2 b2lkIGRvX2luZm9fbmV0d29yayh2b2lkKQogewogICAgIFZMQU5TdGF0ZSAqdmxhbjsKQEAgLTQ2 ODUsNyArNDc3Miw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCiAvKiBVU0IgZGV2aWNlcyAqLwogCi1zdGF0aWMgVVNCUG9y dCAqdXNlZF91c2JfcG9ydHM7CitVU0JQb3J0ICp1c2VkX3VzYl9wb3J0czsKIHN0YXRpYyBVU0JQ b3J0ICpmcmVlX3VzYl9wb3J0czsKIAogLyogPz8/IE1heWJlIGNoYW5nZSB0aGlzIHRvIHJlZ2lz dGVyIGEgaHViIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRvcG9sb2d5LiAgKi8KQEAgLTQ2OTksNyAr NDc4Niw3IEBACiAgICAgZnJlZV91c2JfcG9ydHMgPSBwb3J0OwogfQogCi1zdGF0aWMgaW50IHVz Yl9kZXZpY2VfYWRkKGNvbnN0IGNoYXIgKmRldm5hbWUpCitpbnQgdXNiX2RldmljZV9hZGQoY29u c3QgY2hhciAqZGV2bmFtZSkKIHsKICAgICBjb25zdCBjaGFyICpwOwogICAgIFVTQkRldmljZSAq ZGV2OwpAQCAtNDc0OCw3ICs0ODM1LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCB1c2JfZGV2aWNlX2RlbChjb25zdCBjaGFyICpkZXZuYW1lKQoraW50IHVzYl9kZXZpY2VfZGVs KGNvbnN0IGNoYXIgKmRldm5hbWUpCiB7CiAgICAgVVNCUG9ydCAqcG9ydDsKICAgICBVU0JQb3J0 ICoqbGFzdHA7CkBAIC01NDk4LDE0ICs1NTg1LDE0IEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAot dm9pZCBkb19zYXZldm0oY29uc3QgY2hhciAqbmFtZSkKLXsKK2ludCBtZ210X3NhdmV2bShjb25z dCBjaGFyICpuYW1lKSB7CiAgICAgQmxvY2tEcml2ZXJTdGF0ZSAqYnMsICpiczE7CiAgICAgUUVN VVNuYXBzaG90SW5mbyBzbjEsICpzbiA9ICZzbjEsIG9sZF9zbjEsICpvbGRfc24gPSAmb2xkX3Nu MTsKICAgICBpbnQgbXVzdF9kZWxldGUsIHJldCwgaTsKICAgICBCbG9ja0RyaXZlckluZm8gYmRp MSwgKmJkaSA9ICZiZGkxOwogICAgIFFFTVVGaWxlICpmOwogICAgIGludCBzYXZlZF92bV9ydW5u aW5nOworICAgIGludCBuUkMgPSAwOwogI2lmZGVmIF9XSU4zMgogICAgIHN0cnVjdCBfdGltZWIg dGI7CiAjZWxzZQpAQCAtNTUxNSw3ICs1NjAyLDcgQEAKICAgICBicyA9IGdldF9ic19zbmFwc2hv dHMoKTsKICAgICBpZiAoIWJzKSB7CiAgICAgICAgIHRlcm1fcHJpbnRmKCJObyBibG9jayBkZXZp Y2UgY2FuIGFjY2VwdCBzbmFwc2hvdHNcbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl dHVybiAxOwogICAgIH0KIAogICAgIC8qID8/PyBTaG91bGQgdGhpcyBvY2N1ciBhZnRlciB2bV9z dG9wPyAgKi8KQEAgLTU1NTMsMjIgKzU2NDAsMjUgQEAKICAgICBzbi0+dm1fY2xvY2tfbnNlYyA9 IHFlbXVfZ2V0X2Nsb2NrKHZtX2Nsb2NrKTsKIAogICAgIGlmIChiZHJ2X2dldF9pbmZvKGJzLCBi ZGkpIDwgMCB8fCBiZGktPnZtX3N0YXRlX29mZnNldCA8PSAwKSB7Ci0gICAgICAgIHRlcm1fcHJp bnRmKCJEZXZpY2UgJXMgZG9lcyBub3Qgc3VwcG9ydCBWTSBzdGF0ZSBzbmFwc2hvdHNcbiIsCisg ICAgICAgIFNldExhc3RFcnJvcl9wcmludGYoIkRldmljZSAlcyBkb2VzIG5vdCBzdXBwb3J0IFZN IHN0YXRlIHNuYXBzaG90c1xuIiwKICAgICAgICAgICAgICAgICAgICAgYmRydl9nZXRfZGV2aWNl X25hbWUoYnMpKTsKKyAgICAgICAgblJDID0gMjsKICAgICAgICAgZ290byB0aGVfZW5kOwogICAg IH0KIAogICAgIC8qIHNhdmUgdGhlIFZNIHN0YXRlICovCiAgICAgZiA9IHFlbXVfZm9wZW5fYmRy dihicywgYmRpLT52bV9zdGF0ZV9vZmZzZXQsIDEpOwogICAgIGlmICghZikgewotICAgICAgICB0 ZXJtX3ByaW50ZigiQ291bGQgbm90IG9wZW4gVk0gc3RhdGUgZmlsZVxuIik7CisgICAgICAgIFNl dExhc3RFcnJvcigiQ291bGQgbm90IG9wZW4gVk0gc3RhdGUgZmlsZVxuIik7CisgICAgICAgIG5S QyA9IDM7CiAgICAgICAgIGdvdG8gdGhlX2VuZDsKICAgICB9CiAgICAgcmV0ID0gcWVtdV9zYXZl dm1fc3RhdGUoZik7CiAgICAgc24tPnZtX3N0YXRlX3NpemUgPSBxZW11X2Z0ZWxsKGYpOwogICAg IHFlbXVfZmNsb3NlKGYpOwogICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgIHRlcm1fcHJpbnRm KCJFcnJvciAlZCB3aGlsZSB3cml0aW5nIFZNXG4iLCByZXQpOworICAgICAgICBTZXRMYXN0RXJy b3JfcHJpbnRmKCJFcnJvciAlZCB3aGlsZSB3cml0aW5nIFZNXG4iLCByZXQpOworICAgICAgICBu UkMgPSA0OwogICAgICAgICBnb3RvIHRoZV9lbmQ7CiAgICAgfQogCkBAIC01NTgwLDM1ICs1Njcw LDUwIEBACiAgICAgICAgICAgICBpZiAobXVzdF9kZWxldGUpIHsKICAgICAgICAgICAgICAgICBy ZXQgPSBiZHJ2X3NuYXBzaG90X2RlbGV0ZShiczEsIG9sZF9zbi0+aWRfc3RyKTsKICAgICAgICAg ICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgICAgICAgICB0ZXJtX3ByaW50Zigi RXJyb3Igd2hpbGUgZGVsZXRpbmcgc25hcHNob3Qgb24gJyVzJ1xuIiwKKyAgICAgICAgICAgICAg ICAgICAgU2V0TGFzdEVycm9yX3ByaW50ZigiRXJyb3Igd2hpbGUgZGVsZXRpbmcgc25hcHNob3Qg b24gJyVzJ1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmRydl9nZXRfZGV2 aWNlX25hbWUoYnMxKSk7CisgICAgICAgICAgICAgICAgICAgIG5SQyA9IDU7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0ID0gYmRydl9zbmFwc2hvdF9j cmVhdGUoYnMxLCBzbik7CiAgICAgICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAg ICAgIHRlcm1fcHJpbnRmKCJFcnJvciB3aGlsZSBjcmVhdGluZyBzbmFwc2hvdCBvbiAnJXMnXG4i LAorICAgICAgICAgICAgICAgIFNldExhc3RFcnJvcl9wcmludGYoIkVycm9yIHdoaWxlIGNyZWF0 aW5nIHNuYXBzaG90IG9uICclcydcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmRy dl9nZXRfZGV2aWNlX25hbWUoYnMxKSk7CisgICAgICAgICAgICAgICAgblJDID0gNjsKICAgICAg ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogIHRoZV9lbmQ6Ci0gICAgaWYgKHNhdmVkX3Zt X3J1bm5pbmcpCisgICAgaWYgKHNhdmVkX3ZtX3J1bm5pbmcpIHsKICAgICAgICAgdm1fc3RhcnQo KTsKKyAgICB9CisgICAgcmV0dXJuIChuUkMpOworfQorCit2b2lkIGRvX3NhdmV2bShjb25zdCBj aGFyICpuYW1lKSB7CisgICAgaW50IG5SQzsKKworICAgIG5SQyA9IG1nbXRfc2F2ZXZtKG5hbWUp OworCisgICAgaWYgKG5SQyAhPSAwKSB7CisgICAgICAgIHRlcm1fcHJpbnRmKCIlcyIsR2V0TGFz dEVycm9yKCkpOworICAgIH0KIH0KIAotdm9pZCBkb19sb2Fkdm0oY29uc3QgY2hhciAqbmFtZSkK K2ludCBtZ210X2xvYWR2bShjb25zdCBjaGFyICpuYW1lKQogewogICAgIEJsb2NrRHJpdmVyU3Rh dGUgKmJzLCAqYnMxOwogICAgIEJsb2NrRHJpdmVySW5mbyBiZGkxLCAqYmRpID0gJmJkaTE7CiAg ICAgUUVNVUZpbGUgKmY7CiAgICAgaW50IGksIHJldDsKICAgICBpbnQgc2F2ZWRfdm1fcnVubmlu ZzsKKyAgICBpbnQgblJDID0gMDsKIAogICAgIGJzID0gZ2V0X2JzX3NuYXBzaG90cygpOwogICAg IGlmICghYnMpIHsKLSAgICAgICAgdGVybV9wcmludGYoIk5vIGJsb2NrIGRldmljZSBzdXBwb3J0 cyBzbmFwc2hvdHNcbiIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIFNldExhc3RFcnJvcl9w cmludGYoIk5vIGJsb2NrIGRldmljZSBzdXBwb3J0cyBzbmFwc2hvdHNcbiIpOworICAgICAgICBy ZXR1cm4gMTsKICAgICB9CiAKICAgICAvKiBGbHVzaCBhbGwgSU8gcmVxdWVzdHMgc28gdGhleSBk b24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgbmV3IHN0YXRlLiAgKi8KQEAgLTU2MjIsNzYgKzU3Mjcs MTE0IEBACiAgICAgICAgIGlmIChiZHJ2X2hhc19zbmFwc2hvdChiczEpKSB7CiAgICAgICAgICAg ICByZXQgPSBiZHJ2X3NuYXBzaG90X2dvdG8oYnMxLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChy ZXQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJzICE9IGJzMSkKLSAgICAgICAgICAgICAg ICAgICAgdGVybV9wcmludGYoIldhcm5pbmc6ICIpOwogICAgICAgICAgICAgICAgIHN3aXRjaChy ZXQpIHsKICAgICAgICAgICAgICAgICBjYXNlIC1FTk9UU1VQOgotICAgICAgICAgICAgICAgICAg ICB0ZXJtX3ByaW50ZigiU25hcHNob3RzIG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlICclcydcbiIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJkcnZfZ2V0X2RldmljZV9uYW1lKGJz MSkpOworICAgICAgICAgICAgICAgICAgICBTZXRMYXN0RXJyb3JfcHJpbnRmKAorICAgICAgICAg ICAgICAgICAgICAgICAgIiVzU25hcHNob3RzIG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlICclcydc biIsCisgICAgICAgICAgICAgICAgICAgICAgICAoYnMgIT0gYnMxKSA/ICJXYXJuaW5nOiAiIDog IiIsCisgICAgICAgICAgICAgICAgICAgICAgICBiZHJ2X2dldF9kZXZpY2VfbmFtZShiczEpCisg ICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgIGNhc2UgLUVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgdGVybV9wcmludGYo IkNvdWxkIG5vdCBmaW5kIHNuYXBzaG90ICclcycgb24gZGV2aWNlICclcydcbiIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGJkcnZfZ2V0X2RldmljZV9uYW1lKGJzMSkp OworICAgICAgICAgICAgICAgICAgICBTZXRMYXN0RXJyb3JfcHJpbnRmKAorICAgICAgICAgICAg ICAgICAgICAgICAgIiVzQ291bGQgbm90IGZpbmQgc25hcHNob3QgJyVzJyBvbiBkZXZpY2UgJyVz J1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIChicyAhPSBiczEpID8gIldhcm5pbmc6ICIg OiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAg ICAgICBiZHJ2X2dldF9kZXZpY2VfbmFtZShiczEpCisgICAgICAgICAgICAgICAgICAgICk7CiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg ICAgICAgICAgICAgICAgIHRlcm1fcHJpbnRmKCJFcnJvciAlZCB3aGlsZSBhY3RpdmF0aW5nIHNu YXBzaG90IG9uICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCwg YmRydl9nZXRfZGV2aWNlX25hbWUoYnMxKSk7CisgICAgICAgICAgICAgICAgICAgIFNldExhc3RF cnJvcl9wcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiJXNFcnJvciAlZCB3aGlsZSBh Y3RpdmF0aW5nIHNuYXBzaG90IG9uICclcydcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAo YnMgIT0gYnMxKSA/ICJXYXJuaW5nOiAiIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBi ZHJ2X2dldF9kZXZpY2VfbmFtZShiczEpCisgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAv KiBmYXRhbCBvbiBzbmFwc2hvdCBibG9jayBkZXZpY2UgKi8KLSAgICAgICAgICAgICAgICBpZiAo YnMgPT0gYnMxKQorICAgICAgICAgICAgICAgIGlmIChicyA9PSBiczEpIHsKKyAgICAgICAgICAg ICAgICAgICAgblJDID0gMjsKICAgICAgICAgICAgICAgICAgICAgZ290byB0aGVfZW5kOworICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlm IChiZHJ2X2dldF9pbmZvKGJzLCBiZGkpIDwgMCB8fCBiZGktPnZtX3N0YXRlX29mZnNldCA8PSAw KSB7Ci0gICAgICAgIHRlcm1fcHJpbnRmKCJEZXZpY2UgJXMgZG9lcyBub3Qgc3VwcG9ydCBWTSBz dGF0ZSBzbmFwc2hvdHNcbiIsCisgICAgICAgIFNldExhc3RFcnJvcl9wcmludGYoIkRldmljZSAl cyBkb2VzIG5vdCBzdXBwb3J0IFZNIHN0YXRlIHNuYXBzaG90c1xuIiwKICAgICAgICAgICAgICAg ICAgICAgYmRydl9nZXRfZGV2aWNlX25hbWUoYnMpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg ICByZXR1cm4gMzsKICAgICB9CiAKICAgICAvKiByZXN0b3JlIHRoZSBWTSBzdGF0ZSAqLwogICAg IGYgPSBxZW11X2ZvcGVuX2JkcnYoYnMsIGJkaS0+dm1fc3RhdGVfb2Zmc2V0LCAwKTsKICAgICBp ZiAoIWYpIHsKLSAgICAgICAgdGVybV9wcmludGYoIkNvdWxkIG5vdCBvcGVuIFZNIHN0YXRlIGZp bGVcbiIpOworICAgICAgICBTZXRMYXN0RXJyb3JfcHJpbnRmKCJDb3VsZCBub3Qgb3BlbiBWTSBz dGF0ZSBmaWxlXG4iKTsKKyAgICAgICAgblJDID0gNDsKICAgICAgICAgZ290byB0aGVfZW5kOwog ICAgIH0KICAgICByZXQgPSBxZW11X2xvYWR2bV9zdGF0ZShmKTsKICAgICBxZW11X2ZjbG9zZShm KTsKICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICB0ZXJtX3ByaW50ZigiRXJyb3IgJWQgd2hp bGUgbG9hZGluZyBWTSBzdGF0ZVxuIiwgcmV0KTsKKyAgICAgICAgU2V0TGFzdEVycm9yX3ByaW50 ZigiRXJyb3IgJWQgd2hpbGUgbG9hZGluZyBWTSBzdGF0ZVxuIiwgcmV0KTsKKyAgICAgICAgblJD ID0gNTsKICAgICB9CiAgdGhlX2VuZDoKICAgICBpZiAoc2F2ZWRfdm1fcnVubmluZykKICAgICAg ICAgdm1fc3RhcnQoKTsKKyAgICByZXR1cm4gKG5SQyk7CiB9CiAKLXZvaWQgZG9fZGVsdm0oY29u c3QgY2hhciAqbmFtZSkKK2ludCBtZ210X2RlbHZtKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAg QmxvY2tEcml2ZXJTdGF0ZSAqYnMsICpiczE7CiAgICAgaW50IGksIHJldDsKKyAgICBpbnQgblJD ID0gMDsKIAogICAgIGJzID0gZ2V0X2JzX3NuYXBzaG90cygpOwogICAgIGlmICghYnMpIHsKLSAg ICAgICAgdGVybV9wcmludGYoIk5vIGJsb2NrIGRldmljZSBzdXBwb3J0cyBzbmFwc2hvdHNcbiIp OwotICAgICAgICByZXR1cm47CisgICAgICAgIFNldExhc3RFcnJvcl9wcmludGYoIk5vIGJsb2Nr IGRldmljZSBzdXBwb3J0cyBzbmFwc2hvdHNcbiIpOworICAgICAgICByZXR1cm4gMTsKICAgICB9 CiAKKyAgICBTZXRMYXN0RXJyb3IoIiIpOwogICAgIGZvcihpID0gMDsgaSA8PSBNQVhfRElTS1M7 IGkrKykgewogICAgICAgICBiczEgPSBic190YWJsZVtpXTsKICAgICAgICAgaWYgKGJkcnZfaGFz X3NuYXBzaG90KGJzMSkpIHsKICAgICAgICAgICAgIHJldCA9IGJkcnZfc25hcHNob3RfZGVsZXRl KGJzMSwgbmFtZSk7CiAgICAgICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgICAg IGlmIChyZXQgPT0gLUVOT1RTVVApCi0gICAgICAgICAgICAgICAgICAgIHRlcm1fcHJpbnRmKCJT bmFwc2hvdHMgbm90IHN1cHBvcnRlZCBvbiBkZXZpY2UgJyVzJ1xuIiwKKyAgICAgICAgICAgICAg ICBpZiAocmV0ID09IC1FTk9UU1VQKSB7CisgICAgICAgICAgICAgICAgICAgIFNldExhc3RFcnJv cl9wcmludGYoIiVzU25hcHNob3RzIG5vdCBzdXBwb3J0ZWQgb24gZGV2aWNlICclcydcbiIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJvcigpLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBiZHJ2X2dldF9kZXZpY2VfbmFtZShiczEpKTsKLSAgICAg ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRlcm1fcHJpbnRmKCJFcnJvciAl ZCB3aGlsZSBkZWxldGluZyBzbmFwc2hvdCBvbiAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAg ICBuUkMgPSAyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg IFNldExhc3RFcnJvcl9wcmludGYoIiVzRXJyb3IgJWQgd2hpbGUgZGVsZXRpbmcgc25hcHNob3Qg b24gJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0TGFzdEVycm9y KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCwgYmRydl9nZXRfZGV2aWNl X25hbWUoYnMxKSk7CisgICAgICAgICAgICAgICAgICAgIG5SQyA9IDM7CisgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJuIChuUkMp OworfQorCit2b2lkIGRvX2RlbHZtKGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgICBpbnQgblJDID0g MDsKKyAgICBuUkMgPSBtZ210X2RlbHZtKG5hbWUpOworCisgICAgaWYgKG5SQyAhPSAwKSB7Cisg ICAgICAgIHRlcm1fcHJpbnRmICgiJXMiLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorfQordm9p ZCBkb19sb2Fkdm0oY29uc3QgY2hhciAqbmFtZSkgeworICAgIGludCBuUkM7CisgICAgblJDID0g bWdtdF9sb2Fkdm0obmFtZSk7CisgICAgaWYgKG5SQyAhPSAwKSB7CisgICAgICAgIHRlcm1fcHJp bnRmICgiJXMiLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgfQogfQogCiB2b2lkIGRvX2luZm9fc25h cHNob3RzKHZvaWQpCkBAIC03MDY3LDYgKzcyMTAsMTAgQEAKICAgICAgICAgICAgIi1rZXJuZWwt a3FlbXUgICBlbmFibGUgS1FFTVUgZnVsbCB2aXJ0dWFsaXphdGlvbiAoZGVmYXVsdCBpcyB1c2Vy IG1vZGUgb25seSlcbiIKICAgICAgICAgICAgIi1uby1rcWVtdSAgICAgICBkaXNhYmxlIEtRRU1V IGtlcm5lbCBtb2R1bGUgdXNhZ2VcbiIKICNlbmRpZgorI2lmZGVmIENPTkZJR19EQlVTCisgICAg ICAgICAgICItZGJ1cy1zZXJ2aWNlIG5hbWUgIFNldCBkYnVzIHNlcnZpY2UgbmFtZSBhbmQgZW5h YmxlcyBEQnVzIHN1cHBvcnRcbiIKKyAgICAgICAgICAgIi1kYnVzLWRpc2FibGUtY29uZmlndXJh dGlvbiAgZG8gbm90IHdhaXQgZm9yIGRidXMgY29uZmlndXJhdGlvblxuIgorI2VuZGlmCiAjaWZk ZWYgVVNFX0NPREVfQ09QWQogICAgICAgICAgICAiLW5vLWNvZGUtY29weSAgIGRpc2FibGUgY29k ZSBjb3B5IGFjY2VsZXJhdGlvblxuIgogI2VuZGlmCkBAIC03MTg1LDYgKzczMzIsMTAgQEAKICAg ICBRRU1VX09QVElPTl9wcm9tX2VudiwKICAgICBRRU1VX09QVElPTl9vbGRfcGFyYW0sCiAgICAg UUVNVV9PUFRJT05fY2xvY2ssCisjaWZkZWYgQ09ORklHX0RCVVMKKyAgICBRRU1VX09QVElPTl9k YnVzX3NlcnZpY2UsCisgICAgUUVNVV9PUFRJT05fZGJ1c19kaXNhYmxlX2NvbmZpZ3VyYXRpb24s CisjZW5kaWYKIH07CiAKIHR5cGVkZWYgc3RydWN0IFFFTVVPcHRpb24gewpAQCAtNzI0OCw2ICs3 Mzk5LDEwIEBACiAgICAgeyAibm8ta3FlbXUiLCAwLCBRRU1VX09QVElPTl9ub19rcWVtdSB9LAog ICAgIHsgImtlcm5lbC1rcWVtdSIsIDAsIFFFTVVfT1BUSU9OX2tlcm5lbF9rcWVtdSB9LAogI2Vu ZGlmCisjaWZkZWYgQ09ORklHX0RCVVMKKyAgICB7ICJkYnVzX3NlcnZpY2UiLCBIQVNfQVJHLCBR RU1VX09QVElPTl9kYnVzX3NlcnZpY2UgfSwKKyAgICB7ICJkYnVzX2Rpc2FibGVfY29uZmlndXJh dGlvbiIsIDAsIFFFTVVfT1BUSU9OX2RidXNfZGlzYWJsZV9jb25maWd1cmF0aW9uIH0sCisjZW5k aWYKICNpZiBkZWZpbmVkKFRBUkdFVF9QUEMpIHx8IGRlZmluZWQoVEFSR0VUX1NQQVJDKQogICAg IHsgImciLCAxLCBRRU1VX09QVElPTl9nIH0sCiAjZW5kaWYKQEAgLTc1MjQsMjYgKzc2NzksMTgg QEAKICAgICBpbnQgdXNlX2dkYnN0dWI7CiAgICAgY29uc3QgY2hhciAqZ2Ric3R1Yl9wb3J0Owog I2VuZGlmCi0gICAgaW50IGksIGNkcm9tX2luZGV4LCBwZmxhc2hfaW5kZXg7Ci0gICAgaW50IHNu YXBzaG90LCBsaW51eF9ib290OworICAgIGludCBpLCBwZmxhc2hfaW5kZXg7CisgICAgaW50IGxp bnV4X2Jvb3Q7CiAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lOwotICAgIGNvbnN0IGNo YXIgKmhkX2ZpbGVuYW1lW01BWF9ESVNLU10sICpmZF9maWxlbmFtZVtNQVhfRkRdOwogICAgIGNv bnN0IGNoYXIgKnBmbGFzaF9maWxlbmFtZVtNQVhfUEZMQVNIXTsKICAgICBjb25zdCBjaGFyICpz ZF9maWxlbmFtZTsKICAgICBjb25zdCBjaGFyICptdGRfZmlsZW5hbWU7CiAgICAgY29uc3QgY2hh ciAqa2VybmVsX2ZpbGVuYW1lLCAqa2VybmVsX2NtZGxpbmU7CiAgICAgRGlzcGxheVN0YXRlICpk cyA9ICZkaXNwbGF5X3N0YXRlOwotICAgIGludCBjeWxzLCBoZWFkcywgc2VjcywgdHJhbnNsYXRp b247Ci0gICAgY2hhciBuZXRfY2xpZW50c1tNQVhfTkVUX0NMSUVOVFNdWzI1Nl07Ci0gICAgaW50 IG5iX25ldF9jbGllbnRzOwogICAgIGludCBvcHRpbmQ7CiAgICAgY29uc3QgY2hhciAqciwgKm9w dGFyZzsKICAgICBDaGFyRHJpdmVyU3RhdGUgKm1vbml0b3JfaGQ7Ci0gICAgY2hhciBtb25pdG9y X2RldmljZVsxMjhdOwotICAgIGNoYXIgc2VyaWFsX2RldmljZXNbTUFYX1NFUklBTF9QT1JUU11b MTI4XTsKLSAgICBpbnQgc2VyaWFsX2RldmljZV9pbmRleDsKLSAgICBjaGFyIHBhcmFsbGVsX2Rl dmljZXNbTUFYX1BBUkFMTEVMX1BPUlRTXVsxMjhdOwotICAgIGludCBwYXJhbGxlbF9kZXZpY2Vf aW5kZXg7CisgICAgQ2hhckRyaXZlclN0YXRlICphY3BpZF9jb25uOwogICAgIGNvbnN0IGNoYXIg KmxvYWR2bSA9IE5VTEw7CiAgICAgUUVNVU1hY2hpbmUgKm1hY2hpbmU7CiAgICAgY29uc3QgY2hh ciAqY3B1X21vZGVsOwpAQCAtNzU1Miw2ICs3Njk5LDEwIEBACiAgICAgaW50IGZkc1syXTsKICAg ICBjb25zdCBjaGFyICpwaWRfZmlsZSA9IE5VTEw7CiAgICAgVkxBTlN0YXRlICp2bGFuOworI2lm ZGVmIENPTkZJR19EQlVTCisgICAgaW50IGRidXNfYWxsb3dlZCA9IDA7CisgICAgaW50IGRidXNf d2FpdCA9IDE7CisjZW5kaWYKIAogICAgIExJU1RfSU5JVCAoJnZtX2NoYW5nZV9zdGF0ZV9oZWFk KTsKICNpZm5kZWYgX1dJTjMyCkBAIC04MDA1LDYgKzgxNTYsMTUgQEAKICAgICAgICAgICAgICAg ICBrcWVtdV9hbGxvd2VkID0gMjsKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgorI2lm ZGVmIENPTkZJR19EQlVTCisgICAgICAgICAgICBjYXNlIFFFTVVfT1BUSU9OX2RidXNfc2Vydmlj ZToKKyAgICAgICAgICAgICAgICBkYnVzX2FsbG93ZWQgPSAxOworICAgICAgICAgICAgICAgIHN6 REJ1c1NlcnZpY2VOYW1lID0gb3B0YXJnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICBjYXNlIFFFTVVfT1BUSU9OX2RidXNfZGlzYWJsZV9jb25maWd1cmF0aW9uOgorICAgICAgICAg ICAgICAgIGRidXNfd2FpdCA9IDA7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAg ICAgICAgY2FzZSBRRU1VX09QVElPTl91c2I6CiAgICAgICAgICAgICAgICAgdXNiX2VuYWJsZWQg PSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODA3Niw2ICs4MjM2LDE3IEBACiAgICAg ICAgIH0KICAgICB9CiAKKyNpZmRlZiBDT05GSUdfREJVUworICAgIC8vIFRoZSBEQnVzIHNlcnZp Y2Ugc2hvdWxkIGJlIGluaXRhbGl6ZWQgaGVyZSwgYWZ0ZXIgQ0xJIGlzIHJlYWQgYW5kIEJFRk9S RSBpdCBpcyBtYW5pcHVsYXRlZCAvIGFjdGVkIHVwb24uCisgICAgaWYgKGRidXNfYWxsb3dlZCkg eworICAgICAgICBkYnVzX21vbml0b3JfaW5pdCgpOworCisgICAgICAgIGlmIChkYnVzX3dhaXQp IHsKKwkJZGJ1c19tb25pdG9yX3dhaXQoKTsKKwl9CisgICAgfQorI2VuZGlmCisKICNpZm5kZWYg X1dJTjMyCiAgICAgaWYgKGRhZW1vbml6ZSAmJiAhbm9ncmFwaGljICYmIHZuY19kaXNwbGF5ID09 IE5VTEwpIHsKIAlmcHJpbnRmKHN0ZGVyciwgIkNhbiBvbmx5IGRhZW1vbml6ZSBpZiB1c2luZyAt bm9ncmFwaGljIG9yIC12bmNcbiIpOwpAQCAtODM4OCw2ICs4NTU5LDE1IEBACiAgICAgICAgIH0K ICAgICB9CiAKKyAgICBpZiAoYWNwaV9lbmFibGVkKSB7CisgICAgICAgIGFjcGlkX2Nvbm4gPSBx ZW11X2Nocl9vcGVuKCJ1bml4Oi92YXIvcnVuL2FjcGlkLnNvY2tldCIpOworICAgICAgICBpZiAo IWFjcGlkX2Nvbm4pCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGNvdWxkIG5v dCBjb25uZWN0IHRvIGFjcGlkIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcWVtdV9j aHJfYWRkX2hhbmRsZXJzKGFjcGlkX2Nvbm4sIGFjcGlkX2NoYW5uZWxfcmVhZHksIGFjcGlkX2No YW5uZWxfaGFuZGxlciwgYWNwaWRfY2hhbm5lbF9ldmVudCwgTlVMTCk7CisgICAgICAgIH0KKyAg ICB9CisKICAgICBtYWNoaW5lLT5pbml0KHJhbV9zaXplLCB2Z2FfcmFtX3NpemUsIGJvb3RfZGV2 aWNlLAogICAgICAgICAgICAgICAgICAgZHMsIGZkX2ZpbGVuYW1lLCBzbmFwc2hvdCwKICAgICAg ICAgICAgICAgICAgIGtlcm5lbF9maWxlbmFtZSwga2VybmVsX2NtZGxpbmUsIGluaXRyZF9maWxl bmFtZSwgY3B1X21vZGVsKTsKZGlmZiAtTmF1ciAveXV2YWwvRGV2L3FlbXUtY3ZzL3FlbXUvdmwu aCAveXV2YWwvRGV2L3FlbXUtZGJ1cy9xZW11L3ZsLmgKLS0tIC95dXZhbC9EZXYvcWVtdS1jdnMv cWVtdS92bC5oCTIwMDctMDktMjAgMTU6MjQ6NTMuMDAwMDAwMDAwICswMjAwCisrKyAveXV2YWwv RGV2L3FlbXUtZGJ1cy9xZW11L3ZsLmgJMjAwNy0wOS0yMyAxMjo1OTozOS4wMDAwMDAwMDAgKzAy MDAKQEAgLTM4LDYgKzM4LDE5IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMv c3RhdC5oPgogCisjZGVmaW5lIFBIWVNfUkFNX01BWF9TSVpFICgyMDQ3ICogMTAyNCAqIDEwMjQp CisKKyNkZWZpbmUgTUFYX05FVF9DTElFTlRTIDMyCisKKyNpZiBkZWZpbmVkKFRBUkdFVF9TUEFS QykKKyNkZWZpbmUgTUFYX0NQVVMgMTYKKyNlbGlmIGRlZmluZWQoVEFSR0VUX0kzODYpCisjZGVm aW5lIE1BWF9DUFVTIDI1NQorI2Vsc2UKKyNkZWZpbmUgTUFYX0NQVVMgMQorI2VuZGlmCisKKwog I2lmbmRlZiBPX0xBUkdFRklMRQogI2RlZmluZSBPX0xBUkdFRklMRSAwCiAjZW5kaWYKQEAgLTMy OSw2ICszNDIsNyBAQAogICAgIFFFTVVCSCAqYmg7CiB9IENoYXJEcml2ZXJTdGF0ZTsKIAordm9p ZCBxZW11X2Nocl9jbG9zZShDaGFyRHJpdmVyU3RhdGUgKmNocik7CiBDaGFyRHJpdmVyU3RhdGUg KnFlbXVfY2hyX29wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUpOwogdm9pZCBxZW11X2Nocl9wcmlu dGYoQ2hhckRyaXZlclN0YXRlICpzLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiBpbnQgcWVtdV9j aHJfd3JpdGUoQ2hhckRyaXZlclN0YXRlICpzLCBjb25zdCB1aW50OF90ICpidWYsIGludCBsZW4p OwpAQCAtNDEyLDYgKzQyNiw3IEBACiB2b2lkIHFlbXVfc2VuZF9wYWNrZXQoVkxBTkNsaWVudFN0 YXRlICp2YywgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6ZSk7CiB2b2lkIHFlbXVfaGFuZGxl cl90cnVlKHZvaWQgKm9wYXF1ZSk7CiAKK1ZMQU5TdGF0ZSAqZ2V0X2ZpcnN0X3ZsYW4gKHZvaWQp Owogdm9pZCBkb19pbmZvX25ldHdvcmsodm9pZCk7CiAKIC8qIFRBUCB3aW4zMiAqLwpAQCAtNTQ5 LDYgKzU2NCw5IEBACiB2b2lkIGNwdV9zYXZlKFFFTVVGaWxlICpmLCB2b2lkICpvcGFxdWUpOwog aW50IGNwdV9sb2FkKFFFTVVGaWxlICpmLCB2b2lkICpvcGFxdWUsIGludCB2ZXJzaW9uX2lkKTsK IAoraW50IG1nbXRfc2F2ZXZtKGNvbnN0IGNoYXIgKm5hbWUpOworaW50IG1nbXRfbG9hZHZtKGNv bnN0IGNoYXIgKm5hbWUpOworaW50IG1nbXRfZGVsdm0oY29uc3QgY2hhciAqbmFtZSk7CiB2b2lk IGRvX3NhdmV2bShjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQgZG9fbG9hZHZtKGNvbnN0IGNoYXIg Km5hbWUpOwogdm9pZCBkb19kZWx2bShjb25zdCBjaGFyICpuYW1lKTsKQEAgLTExNTgsNiArMTE3 Niw4IEBACiAKICNpbmNsdWRlICJody9zbWJ1cy5oIgogCit2b2lkIGFjcGlfbGlkX3N0YXR1cyh1 aW50OF90IHN0YXR1cyk7CisKIC8qIGFjcGkuYyAqLwogZXh0ZXJuIGludCBhY3BpX2VuYWJsZWQ7 CiBpMmNfYnVzICpwaWl4NF9wbV9pbml0KFBDSUJ1cyAqYnVzLCBpbnQgZGV2Zm4sIHVpbnQzMl90 IHNtYl9pb19iYXNlKTsKQEAgLTEzODQsNiArMTQwNCw4IEBACiAKICNkZWZpbmUgVk1fVVNCX0hV Ql9TSVpFIDgKIAoraW50IHVzYl9kZXZpY2VfYWRkKGNvbnN0IGNoYXIgKmRldm5hbWUpOworaW50 IHVzYl9kZXZpY2VfZGVsKGNvbnN0IGNoYXIgKmRldm5hbWUpOwogdm9pZCBkb191c2JfYWRkKGNv bnN0IGNoYXIgKmRldm5hbWUpOwogdm9pZCBkb191c2JfZGVsKGNvbnN0IGNoYXIgKmRldm5hbWUp Owogdm9pZCB1c2JfaW5mbyh2b2lkKTsK ------=_Part_28919_27884902.1197275281233 Content-Type: text/xml; name=RFC-QEMU-DBus-Interface.xml Content-Transfer-Encoding: base64 X-Attachment-Id: f_f9zeuw2y1 Content-Disposition: attachment; filename=RFC-QEMU-DBus-Interface.xml PCFET0NUWVBFIG5vZGUgUFVCTElDICItLy9mcmVlZGVza3RvcC8vRFREIEQtQlVTIE9iamVjdCBJ bnRyb3NwZWN0aW9uIDEuMC8vRU4iCiJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zdGFuZGFy ZHMvZGJ1cy8xLjAvaW50cm9zcGVjdC5kdGQiPgo8bm9kZT4KICAgICAgICA8aW50ZXJmYWNlIG5h bWU9Im9yZy5mcmVlZGVza3RvcC5EQnVzLkludHJvc3BlY3RhYmxlIj4KICAgICAgICAgICAgICAg IDxtZXRob2QgbmFtZT0iSW50cm9zcGVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcg bmFtZT0ieG1sIiB0eXBlPSJzIiBkaXJlY3Rpb249Im91dCIvPgogICAgICAgICAgICAgICAgPC9t ZXRob2Q+CiAgICAgICAgPC9pbnRlcmZhY2U+CiAgICAgICAgPGludGVyZmFjZSBuYW1lID0gIm9y Zy5xZW11LkNvbmZpZ3VyYXRpb24iPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIk1v bml0b3Jfc3lzdGVtX3Bvd2VyZG93biI+CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAg ICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9yX3N5c3RlbV9yZXNldCI+CiAgICAgICAg ICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9y X3NlbmRfa2V5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIktleXMiIHR5 cGUgPSAicyIgZGlyZWN0aW9uID0gImluIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJn IG5hbWUgPSAiUmV0dXJuQ29kZSIgdHlwZSA9ICJpIiBkaXJlY3Rpb24gPSAib3V0IiAvPgogICAg ICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAgICAgICAgICAgICA8bWV0aG9kIG5hbWUgPSAiTW9u aXRvcl9kZWx2bSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJEZXZpY2VO YW1lIiB0eXBlID0gInMiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgICAgICAg ICAgPGFyZyBuYW1lID0gIlJldHVybkNvZGUiIHR5cGUgPSAiaSIgZGlyZWN0aW9uID0gIm91dCIg Lz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1l ID0gIk1vbml0b3JfbG9hZHZtIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0g IkRldmljZU5hbWUiIHR5cGUgPSAicyIgZGlyZWN0aW9uID0gImluIiAvPgogICAgICAgICAgICAg ICAgICAgICAgICA8YXJnIG5hbWUgPSAiUmV0dXJuQ29kZSIgdHlwZSA9ICJpIiBkaXJlY3Rpb24g PSAib3V0IiAvPgogICAgICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAgICAgICAgICAgICA8bWV0 aG9kIG5hbWUgPSAiTW9uaXRvcl9zYXZldm0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJn IG5hbWUgPSAiRGV2aWNlTmFtZSIgdHlwZSA9ICJzIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJSZXR1cm5Db2RlIiB0eXBlID0gImkiIGRp cmVjdGlvbiA9ICJvdXQiIC8+CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAg ICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9yX2NoYW5nZSI+CiAgICAgICAgICAgICAgICAgICAg ICAgIDxhcmcgbmFtZSA9ICJEZXZpY2VOYW1lIiB0eXBlID0gInMiIGRpcmVjdGlvbiA9ICJpbiIg Lz4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIkZpbGVuYW1lIiB0eXBlID0g InMiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAg ICAgICAgICAgPG1ldGhvZCBuYW1lID0gIk1vbml0b3JfZWplY3QiPgogICAgICAgICAgICAgICAg ICAgICAgICA8YXJnIG5hbWUgPSAiRmlsZW5hbWUiIHR5cGUgPSAicyIgZGlyZWN0aW9uID0gImlu IiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiRm9yY2UiIHR5cGUgPSAi aSIgZGlyZWN0aW9uID0gIm91dCIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAg ICAgICAgICAgPG1ldGhvZCBuYW1lID0gIk1vbml0b3JfcXVpdCI+CiAgICAgICAgICAgICAgICA8 L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9yX2NvbW1pdCI+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJEZXZpY2VOYW1lIiB0eXBlID0g InMiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAg ICAgICAgICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ192bmMiPgogICAgICAgICAgICAgICAgICAg ICAgICA8YXJnIG5hbWUgPSAiRGlzcGxheSIgdHlwZSA9ICJzIiBkaXJlY3Rpb24gPSAiaW4iIC8+ CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9 ICJNb25pdG9yX0xvYWRWTSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJG aWxlbmFtZSIgdHlwZSA9ICJzIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICA8 L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9yX1JlbW92ZVBh cmFsbGVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIkRldmljZUlEIiB0 eXBlID0gImkiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgog ICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIk1vbml0b3JfQWRkUGFyYWxsZWwiPgogICAg ICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiRGV2aWNlTmFtZSIgdHlwZSA9ICJzIiBk aXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJS ZXR1cm5Db2RlIiB0eXBlID0gImkiIGRpcmVjdGlvbiA9ICJvdXQiIC8+CiAgICAgICAgICAgICAg ICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9yX1JlbW92 ZVNlcmlhbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJEZXZpY2VJRCIg dHlwZSA9ICJpIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICA8L21ldGhvZD4K ICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJNb25pdG9yX0FkZFNlcmlhbCI+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJEZXZpY2VOYW1lIiB0eXBlID0gInMiIGRp cmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIlJl dHVybkNvZGUiIHR5cGUgPSAiaSIgZGlyZWN0aW9uID0gIm91dCIgLz4KICAgICAgICAgICAgICAg IDwvbWV0aG9kPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19tb25pdG9y Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIkRldmljZU5hbWUiIHR5cGUg PSAicyIgZGlyZWN0aW9uID0gImluIiAvPgogICAgICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAg ICAgICAgICAgICA8bWV0aG9kIG5hbWUgPSAiQ29uZmlnX0JJT1NEaXIiPgogICAgICAgICAgICAg ICAgICAgICAgICA8YXJnIG5hbWUgPSAiRGlyZWN0b3J5IiB0eXBlID0gInMiIGRpcmVjdGlvbiA9 ICJpbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIlJldHVybkNvZGUi IHR5cGUgPSAiaSIgZGlyZWN0aW9uID0gIm91dCIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9k PgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19BZGROZXQiPgogICAgICAg ICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiUGFyYW1ldGVycyIgdHlwZSA9ICJzIiBkaXJl Y3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJSZXR1 cm5Db2RlIiB0eXBlID0gImkiIGRpcmVjdGlvbiA9ICJvdXQiIC8+CiAgICAgICAgICAgICAgICA8 L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJDb25maWdfU2V0Q2Ryb20i PgogICAgICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiSW1hZ2VOYW1lIiB0eXBlID0g InMiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1l ID0gIlJldHVybkNvZGUiIHR5cGUgPSAiaSIgZGlyZWN0aW9uID0gIm91dCIgLz4KICAgICAgICAg ICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIk1vbml0b3Jf U2V0QmxvY2tEZXZpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiSW5k ZXgiIHR5cGUgPSAidSIgZGlyZWN0aW9uID0gImluIiAvPgogICAgICAgICAgICAgICAgICAgICAg ICA8YXJnIG5hbWUgPSAiSW1hZ2VOYW1lIiB0eXBlID0gInMiIGRpcmVjdGlvbiA9ICJpbiIgLz4K ICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIlJldHVybkNvZGUiIHR5cGUgPSAi aSIgZGlyZWN0aW9uID0gIm91dCIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAg ICAgICAgICAgPG1ldGhvZCBuYW1lID0gIk1vbml0b3JfU2V0RmxvcHB5Ij4KICAgICAgICAgICAg ICAgICAgICAgICAgPGFyZyBuYW1lID0gIkluZGV4IiB0eXBlID0gInUiIGRpcmVjdGlvbiA9ICJp biIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIkltYWdlTmFtZSIgdHlw ZSA9ICJzIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcg bmFtZSA9ICJSZXR1cm5Db2RlIiB0eXBlID0gImkiIGRpcmVjdGlvbiA9ICJvdXQiIC8+CiAgICAg ICAgICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJDb25m aWdfU291bmRIV1N0YXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIk5h bWUiIHR5cGUgPSAicyIgZGlyZWN0aW9uID0gImluIiAvPgogICAgICAgICAgICAgICAgICAgICAg ICA8YXJnIG5hbWUgPSAiU3RhdGUiIHR5cGUgPSAiaSIgZGlyZWN0aW9uID0gImluIiAvPgogICAg ICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiUmV0dXJuQ29kZSIgdHlwZSA9ICJpIiBk aXJlY3Rpb24gPSAib3V0IiAvPgogICAgICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAgICAgICAg ICAgICA8bWV0aG9kIG5hbWUgPSAiQ29uZmlnX3NtcCI+CiAgICAgICAgICAgICAgICAgICAgICAg IDxhcmcgbmFtZSA9ICJDUFVzIiB0eXBlID0gInUiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAg ICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIlJldHVybkNvZGUiIHR5cGUgPSAiaSIgZGly ZWN0aW9uID0gIm91dCIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAg ICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19yYW1zaXplIj4KICAgICAgICAgICAgICAgICAgICAg ICAgPGFyZyBuYW1lID0gIk1lZ2FCeXRlcyIgdHlwZSA9ICJ1IiBkaXJlY3Rpb24gPSAiaW4iIC8+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJSZXR1cm5Db2RlIiB0eXBlID0g ImkiIGRpcmVjdGlvbiA9ICJvdXQiIC8+CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAg ICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJDb25maWdfc25hcHNob3QiPgogICAgICAgICAgICAg ICAgICAgICAgICA8YXJnIG5hbWUgPSAiU3RhdGUiIHR5cGUgPSAidSIgZGlyZWN0aW9uID0gImlu IiAvPgogICAgICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAgICAgICAgICAgICA8bWV0aG9kIG5h bWUgPSAiQ29uZmlnX2Jvb3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAi RGV2aWNlTGV0dGVyIiB0eXBlID0gInkiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAg ICAgICAgICAgICAgPGFyZyBuYW1lID0gIlJldHVybkNvZGUiIHR5cGUgPSAiaSIgZGlyZWN0aW9u ID0gIm91dCIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAgICAgPG1l dGhvZCBuYW1lID0gInVzYl9kZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUg PSAiRGV2aWNlTmFtZSIgdHlwZSA9ICJzIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAg ICAgICAgICAgICAgIDxhcmcgbmFtZSA9ICJSZXR1cm5Db2RlIiB0eXBlID0gImkiIGRpcmVjdGlv biA9ICJvdXQiIC8+CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxt ZXRob2QgbmFtZSA9ICJ1c2JfYWRkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1l ID0gIkRldmljZU5hbWUiIHR5cGUgPSAicyIgZGlyZWN0aW9uID0gImluIiAvPgogICAgICAgICAg ICAgICAgICAgICAgICA8YXJnIG5hbWUgPSAiUmV0dXJuQ29kZSIgdHlwZSA9ICJpIiBkaXJlY3Rp b24gPSAib3V0IiAvPgogICAgICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAgICAgICAgICAgICA8 bWV0aG9kIG5hbWUgPSAiQ29uZmlnX2RhZW1vbml6ZSI+CiAgICAgICAgICAgICAgICAgICAgICAg IDxhcmcgbmFtZSA9ICJJc0RhZW1ub2l6ZSIgdHlwZSA9ICJzIiBkaXJlY3Rpb24gPSAiaW4iIC8+ CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9 ICJDb25maWdfU2V0Tm9SZWJvb3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8YXJnIG5hbWUg PSAiSXNOb1JlYm9vdCIgdHlwZSA9ICJiIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAg ICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJDb25maWdfU2V0 Tm9HcmFwaGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIklzTm9HcmFw aGljIiB0eXBlID0gImIiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgIDwvbWV0 aG9kPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19TZXROb0ZEQm9vdENo ZWNrIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIklzTm9GREJvb3RDaGVj ayIgdHlwZSA9ICJiIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICA8L21ldGhv ZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJDb25maWdfU2V0Tm9RdWl0Ij4KICAg ICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIklzTm9RdWl0IiB0eXBlID0gImIiIGRp cmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAg ICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19TZXROb0FDUEkiPgogICAgICAgICAgICAgICAgICAg ICAgICA8YXJnIG5hbWUgPSAiSXNfTm9BQ1BJIiB0eXBlID0gImIiIGRpcmVjdGlvbiA9ICJpbiIg Lz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1l ID0gIkNvbmZpZ19TZXRfc3RkX3ZnYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhcmcgbmFt ZSA9ICJJc19zdGRfdmdhIiB0eXBlID0gImIiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAg ICAgICAgIDwvbWV0aG9kPgogICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19T ZXRGdWxsU2NyZWVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIklzRnVs bFNjcmVlbiIgdHlwZSA9ICJiIiBkaXJlY3Rpb24gPSAiaW4iIC8+CiAgICAgICAgICAgICAgICA8 L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZSA9ICJDb25maWdfU2V0TG9jYWx0 aW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFyZyBuYW1lID0gIklzVVRDIiB0eXBlID0g ImIiIGRpcmVjdGlvbiA9ICJpbiIgLz4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAg ICAgICAgICAgPG1ldGhvZCBuYW1lID0gIkNvbmZpZ19Vc2JTdGF0ZSI+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxhcmcgbmFtZSA9ICJTdGF0ZSIgdHlwZSA9ICJiIiBkaXJlY3Rpb24gPSAiaW4i IC8+CiAgICAgICAgICAgICAgICA8L21ldGhvZD4KICAgICAgICAgICAgICAgIDxtZXRob2QgbmFt ZSA9ICJDb25maWdEb25lIj4KICAgICAgICAgICAgICAgIDwvbWV0aG9kPgogICAgICAgIDwvaW50 ZXJmYWNlPgogICAgICAgIDxpbnRlcmZhY2UgbmFtZSA9ICJvcmcucWVtdS5EZWJ1ZyI+CiAgICAg ICAgICAgICAgICA8bWV0aG9kIG5hbWUgPSAiU2V0TG9nTGV2ZWwiPgogICAgICAgICAgICAgICAg ICAgICAgICA8YXJnIG5hbWUgPSAiTG9nTGV2ZWwiIHR5cGUgPSAiaSIgZGlyZWN0aW9uID0gImlu IiAvPgogICAgICAgICAgICAgICAgPC9tZXRob2Q+CiAgICAgICAgPC9pbnRlcmZhY2U+Cjwvbm9k ZT4K ------=_Part_28919_27884902.1197275281233 Content-Type: text/plain; name=dsrv.tar.gz.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_f9zevmy02 Content-Disposition: attachment; filename=dsrv.tar.gz.txt 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 ------=_Part_28919_27884902.1197275281233--