Subject: Re: port-arm/34684 (OMAP patch 5/5: OSK5912 board support)
To: None <christos@NetBSD.org, gnats-admin@netbsd.org,>
From: Bucky Katz <bucky@picovex.com>
List: netbsd-bugs
Date: 01/06/2007 05:30:02
The following reply was made to PR port-arm/34684; it has been noted by GNATS.

From: Bucky Katz <bucky@picovex.com>
To: gnats-bugs@NetBSD.org
Cc: christos@NetBSD.org, gnats-admin@netbsd.org,
	netbsd-bugs@netbsd.org, Bucky Katz <bucky@picovex.com>
Subject: Re: port-arm/34684 (OMAP patch 5/5: OSK5912 board support)
Date: Fri, 05 Jan 2007 20:21:41 -0800

 --=-=-=
 
 christos@zoulas.com (Christos Zoulas) writes:
 
 > The following reply was made to PR port-arm/34684; it has been noted by GNATS.
 >
 > From: christos@zoulas.com (Christos Zoulas)
 > To: gnats-bugs@NetBSD.org, gnats-admin@netbsd.org,
 > 	netbsd-bugs@netbsd.org, Bucky Katz <bucky@picovex.com>
 > Cc: 
 > Subject: Re: port-arm/34684 (OMAP patch 5/5: OSK5912 board support)
 > Date: Fri, 5 Jan 2007 23:13:01 -0500
 >
 >  On Jan 6,  3:55am, bucky@picovex.com (Bucky Katz) wrote:
 >  -- Subject: Re: port-arm/34684 (OMAP patch 5/5: OSK5912 board support)
 >  
 >  |  It's not part of that patch and it needs to be applied because it
 >  |  contains the board support for the OSK591 machdep as well as the conf
 >  |  files for that board.
 >  
 >  Bucky, can you please cvs update and send me an updated patch? I tried
 >  to apply patch 5 and it seems to have reversed another patch you send us.
 >  
 >  chridtos
 >  
 
 Here's the patch for the missing OSK files
 
 
 --=-=-=
 Content-Type: application/octet-stream
 Content-Disposition: attachment; filename=patch
 Content-Transfer-Encoding: base64
 Content-Description: New patch
 
 c3JjL3N5cy9hcmNoL2V2YmFybS9jb25mL09TSzU5MTIKLS0tIC4uL2N2cy9zcmMvc3lzL2FyY2gv
 ZXZiYXJtL2NvbmYvT1NLNTkxMgkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAor
 Kysgc3JjL3N5cy9hcmNoL2V2YmFybS9jb25mL09TSzU5MTIJMjAwNy0wMS0wNSAxODo0Njo1OC4w
 MDAwMDAwMDAgLTA4MDAKQEAgLTAsMCArMSwyMTUgQEAKKyMKKyMJT1NLNTkxMiAtLSBUSSBPTUFQ
 IDU5MTIgT1NLIEJvYXJkIEtlcm5lbAorIworCitpbmNsdWRlCSJhcmNoL2V2YmFybS9jb25mL3N0
 ZC5vc2s1OTEyIgorCisjIGVzdGltYXRlZCBudW1iZXIgb2YgdXNlcnMKKworbWF4dXNlcnMJMzIK
 KworIyBTdGFuZGFyZCBzeXN0ZW0gb3B0aW9ucworCitvcHRpb25zIAlSVENfT0ZGU0VUPTAJIyBo
 YXJkd2FyZSBjbG9jayBpcyB0aGlzIG1hbnkgbWlucy4gd2VzdCBvZiBHTVQKKyNvcHRpb25zIAlO
 VFAJCSMgTlRQIHBoYXNlL2ZyZXF1ZW5jeSBsb2NrZWQgbG9vcAorCisjIENQVSBvcHRpb25zCisK
 K29wdGlvbnMgCUNQVV9BUk05RQorCisjIEFyY2hpdGVjdHVyZSBvcHRpb25zCisKKyMgRmlsZSBz
 eXN0ZW1zCisKK2ZpbGUtc3lzdGVtCUZGUwkJIyBVRlMKKyNmaWxlLXN5c3RlbQlMRlMJCSMgbG9n
 LXN0cnVjdHVyZWQgZmlsZSBzeXN0ZW0KK2ZpbGUtc3lzdGVtCU1GUwkJIyBtZW1vcnkgZmlsZSBz
 eXN0ZW0KK2ZpbGUtc3lzdGVtCU5GUwkJIyBOZXR3b3JrIGZpbGUgc3lzdGVtCisjZmlsZS1zeXN0
 ZW0gCUFET1NGUwkJIyBBbWlnYURPUy1jb21wYXRpYmxlIGZpbGUgc3lzdGVtCisjZmlsZS1zeXN0
 ZW0gCUVYVDJGUwkJIyBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gKGxpbnV4KQorI2ZpbGUt
 c3lzdGVtCUNEOTY2MAkJIyBJU08gOTY2MCArIFJvY2sgUmlkZ2UgZmlsZSBzeXN0ZW0KK2ZpbGUt
 c3lzdGVtCU1TRE9TRlMJCSMgTVMtRE9TIGZpbGUgc3lzdGVtCisjZmlsZS1zeXN0ZW0JRkRFU0MJ
 CSMgL2Rldi9mZAorI2ZpbGUtc3lzdGVtCUtFUk5GUwkJIyAva2VybgorI2ZpbGUtc3lzdGVtCU5V
 TExGUwkJIyBsb29wYmFjayBmaWxlIHN5c3RlbQorI2ZpbGUtc3lzdGVtCVBPUlRBTAkJIyBwb3J0
 YWwgZmlsZXN5c3RlbSAoc3RpbGwgZXhwZXJpbWVudGFsKQorI2ZpbGUtc3lzdGVtCVBST0NGUwkJ
 IyAvcHJvYworI2ZpbGUtc3lzdGVtCVVNQVBGUwkJIyBOVUxMRlMgKyB1aWQgYW5kIGdpZCByZW1h
 cHBpbmcKKyNmaWxlLXN5c3RlbQlVTklPTgkJIyB1bmlvbiBmaWxlIHN5c3RlbQorZmlsZS1zeXN0
 ZW0JUFRZRlMJCSMgL2Rldi9wdHMvTiBzdXBwb3J0CisKKyMgRmlsZSBzeXN0ZW0gb3B0aW9ucwor
 I29wdGlvbnMgCVFVT1RBCQkjIFVGUyBxdW90YXMKKyNvcHRpb25zIAlGRlNfRUkJCSMgRkZTIEVu
 ZGlhbiBJbmRlcGVuZGFudCBzdXBwb3J0Cisjb3B0aW9ucyAJTkZTU0VSVkVSCitvcHRpb25zIAlT
 T0ZUREVQCisjb3B0aW9ucyAJRkZTX05PX1NOQVBTSE9UCSMgTm8gRkZTIHNuYXBzaG90IHN1cHBv
 cnQKKworIyBOZXR3b3JraW5nIG9wdGlvbnMKKworI29wdGlvbnMgCUdBVEVXQVkJCSMgcGFja2V0
 IGZvcndhcmRpbmcKK29wdGlvbnMgCUlORVQJCSMgSVAgKyBJQ01QICsgVENQICsgVURQCitvcHRp
 b25zIAlJTkVUNgkJIyBJUFY2Cisjb3B0aW9ucyAJSVBTRUMJCSMgSVAgc2VjdXJpdHkKKyNvcHRp
 b25zIAlJUFNFQ19FU1AJIyBJUCBzZWN1cml0eSAoZW5jcnlwdGlvbiBwYXJ0OyBkZWZpbmUgdy8g
 SVBTRUMpCisjb3B0aW9ucyAJSVBTRUNfTkFUX1QJIyBJUHNlYyBOQVQgdHJhdmVyc2FsIChOQVQt
 VCkKKyNvcHRpb25zIAlJUFNFQ19ERUJVRwkjIGRlYnVnIGZvciBJUCBzZWN1cml0eQorI29wdGlv
 bnMgCU1ST1VUSU5HCSMgSVAgbXVsdGljYXN0IHJvdXRpbmcKKyNvcHRpb25zIAlQSU0JCSMgUHJv
 dG9jb2wgSW5kZXBlbmRlbnQgTXVsdGljYXN0Cisjb3B0aW9ucyAJTlMJCSMgWE5TCisjb3B0aW9u
 cyAJTlNJUAkJIyBYTlMgdHVubmVsaW5nIG92ZXIgSVAKKyNvcHRpb25zIAlJU08sVFBJUAkjIE9T
 SQorI29wdGlvbnMgCUVPTgkJIyBPU0kgdHVubmVsaW5nIG92ZXIgSVAKKyNvcHRpb25zIAlDQ0lU
 VCxMTEMsSERMQwkjIFguMjUKKyNvcHRpb25zIAlORVRBVEFMSwkjIEFwcGxlVGFsayBuZXR3b3Jr
 aW5nCisjb3B0aW9ucyAJUEZJTF9IT09LUwkjIHBmaWwoOSkgcGFja2V0IGZpbHRlciBob29rcwor
 I29wdGlvbnMgCVBQUF9CU0RDT01QCSMgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uIHN1cHBvcnQg
 Zm9yIFBQUAorI29wdGlvbnMgCVBQUF9ERUZMQVRFCSMgRGVmbGF0ZSBjb21wcmVzc2lvbiBzdXBw
 b3J0IGZvciBQUFAKKyNvcHRpb25zIAlQUFBfRklMVEVSCSMgQWN0aXZlIGZpbHRlciBzdXBwb3J0
 IGZvciBQUFAgKHJlcXVpcmVzIGJwZikKKyNvcHRpb25zIAlUQ1BfREVCVUcJIyBSZWNvcmQgbGFz
 dCBUQ1BfTkRFQlVHIHBhY2tldHMgd2l0aCBTT19ERUJVRworCitvcHRpb25zIAlORlNfQk9PVF9C
 T09UUAorb3B0aW9ucyAJTkZTX0JPT1RfREhDUAorb3B0aW9ucwkJTkZTX0JPT1RfUldTSVpFPTEw
 MjQKKworIyBDb21wYXRpYmlsaXR5IG9wdGlvbnMKKworI29wdGlvbnMgCUNPTVBBVF80MwkjIDQu
 M0JTRCBjb21wYXRpYmlsaXR5Lgorb3B0aW9ucyAJQ09NUEFUXzMwCSMgTmV0QlNEIDMuMCBjb21w
 YXRpYmlsaXR5LgorI29wdGlvbnMgCUNPTVBBVF8yMAkjIE5ldEJTRCAyLjAgY29tcGF0aWJpbGl0
 eS4KKyNvcHRpb25zIAlDT01QQVRfMTYJIyBOZXRCU0QgMS42IGNvbXBhdGliaWxpdHkuCisjb3B0
 aW9ucyAJQ09NUEFUXzE1CSMgTmV0QlNEIDEuNSBjb21wYXRpYmlsaXR5LgorI29wdGlvbnMgCUNP
 TVBBVF8xNAkjIE5ldEJTRCAxLjQgY29tcGF0aWJpbGl0eS4KKyNvcHRpb25zIAlDT01QQVRfMTMJ
 IyBOZXRCU0QgMS4zIGNvbXBhdGliaWxpdHkuCisjb3B0aW9ucyAJQ09NUEFUXzEyCSMgTmV0QlNE
 IDEuMiBjb21wYXRpYmlsaXR5LgorI29wdGlvbnMgCUNPTVBBVF8xMQkjIE5ldEJTRCAxLjEgY29t
 cGF0aWJpbGl0eS4KKyNvcHRpb25zIAlDT01QQVRfMTAJIyBOZXRCU0QgMS4wIGNvbXBhdGliaWxp
 dHkuCisjb3B0aW9ucyAJQ09NUEFUXzA5CSMgTmV0QlNEIDAuOSBjb21wYXRpYmlsaXR5LgorI29w
 dGlvbnMgCVRDUF9DT01QQVRfNDIJIyA0LjJCU0QgVENQL0lQIGJ1ZyBjb21wYXQuIE5vdCByZWNv
 bW1lbmRlZC4KKyNvcHRpb25zCQlDT01QQVRfQlNEUFRZCSMgL2Rldi9bcHRddHk/PyBwdHlzLgor
 CisjIFNoYXJlZCBtZW1vcnkgb3B0aW9ucworCitvcHRpb25zIAlTWVNWTVNHCQkjIFN5c3RlbSBW
 LWxpa2UgbWVzc2FnZSBxdWV1ZXMKK29wdGlvbnMgCVNZU1ZTRU0JCSMgU3lzdGVtIFYtbGlrZSBz
 ZW1hcGhvcmVzCisjb3B0aW9ucyAJU0VNTU5JPTEwCSMgbnVtYmVyIG9mIHNlbWFwaG9yZSBpZGVu
 dGlmaWVycworI29wdGlvbnMgCVNFTU1OUz02MAkjIG51bWJlciBvZiBzZW1hcGhvcmVzIGluIHN5
 c3RlbQorI29wdGlvbnMgCVNFTVVNRT0xMAkjIG1heCBudW1iZXIgb2YgdW5kbyBlbnRyaWVzIHBl
 ciBwcm9jZXNzCisjb3B0aW9ucyAJU0VNTU5VPTMwCSMgbnVtYmVyIG9mIHVuZG8gc3RydWN0dXJl
 cyBpbiBzeXN0ZW0KK29wdGlvbnMgCVNZU1ZTSE0JCSMgU3lzdGVtIFYtbGlrZSBtZW1vcnkgc2hh
 cmluZworI29wdGlvbnMgCVNITU1BWFBHUz0xMDI0CSMgMTAyNCBwYWdlcyBpcyB0aGUgZGVmYXVs
 dAorCisjIERldmljZSBvcHRpb25zCisKKyNvcHRpb25zIAlNRU1PUllfRElTS19IT09LUwkjIGJv
 b3R0aW1lIHNldHVwIG9mIHJhbWRpc2sKKyNvcHRpb25zIAlNRU1PUllfRElTS19ST09UX1NJWkU9
 ODE5MgkjIFNpemUgaW4gYmxvY2tzCisjb3B0aW9ucyAJTUVNT1JZX0RJU0tfRFlOQU1JQworI29w
 dGlvbnMgCU1JTklST09UU0laRT0xMDAwCSMgU2l6ZSBpbiBibG9ja3MKKyNvcHRpb25zIAlNRU1P
 UllfRElTS19JU19ST09UCSMgdXNlIG1lbW9yeSBkaXNrIGFzIHJvb3QKKworIyBNaXNjZWxsYW5l
 b3VzIGtlcm5lbCBvcHRpb25zCitvcHRpb25zIAlLVFJBQ0UJCSMgc3lzdGVtIGNhbGwgdHJhY2lu
 ZywgYSBsYSBrdHJhY2UoMSkKKyNvcHRpb25zIAlMS00JCSMgbG9hZGFibGUga2VybmVsIG1vZHVs
 ZXMKKyNvcHRpb25zIAlLTUVNU1RBVFMJIyBrZXJuZWwgbWVtb3J5IHN0YXRpc3RpY3MKKyNvcHRp
 b25zIAlTQ1NJVkVSQk9TRQkjIFZlcmJvc2UgU0NTSSBlcnJvcnMKKyNvcHRpb25zIAlNSUlWRVJC
 T1NFCSMgVmVyYm9zZSBNSUkgYXV0b2NvbmZ1cmF0aW9uIG1lc3NhZ2VzCisjb3B0aW9ucyAJRERC
 X0tFWUNPREU9MHg0MAorI29wdGlvbnMgCVVTRVJDT05GCSMgdXNlcmNvbmYoNCkgc3VwcG9ydAor
 I29wdGlvbnMJUElQRV9TT0NLRVRQQUlSCSMgc21hbGxlciwgYnV0IHNsb3dlciBwaXBlKDIpCisK
 KyMgRGV2ZWxvcG1lbnQgYW5kIERlYnVnZ2luZyBvcHRpb25zCisKKyNvcHRpb25zIAlQRVJGQ1RS
 UwkjIHBlcmZvcm1hbmNlIGNvdW50ZXJzCitvcHRpb25zIAlESUFHTk9TVElDCSMgaW50ZXJuYWxs
 eSBjb25zaXN0ZW5jeSBjaGVja3MKKyNvcHRpb25zIAlERUJVRworI29wdGlvbnMgCVBNQVBfREVC
 VUcJIyBFbmFibGUgcG1hcF9kZWJ1Z19sZXZlbCBjb2RlCisjb3B0aW9ucyAJSVBLREIJCSMgcmVt
 b3RlIGtlcm5lbCBkZWJ1Z2dpbmcKK29wdGlvbnMgCVZFUkJPU0VfSU5JVF9BUk0gIyB2ZXJib3Nl
 IGJvb3RzdHJhcGluZyBtZXNzYWdlcworb3B0aW9ucyAJRERCCQkjIGluLWtlcm5lbCBkZWJ1Z2dl
 cgorb3B0aW9ucwkJRERCX09OUEFOSUM9MQorb3B0aW9ucyAJRERCX0hJU1RPUllfU0laRT0xMDAJ
 IyBFbmFibGUgaGlzdG9yeSBlZGl0aW5nIGluIEREQgorI29wdGlvbnMgCUtHREIKKyNtYWtlb3B0
 aW9ucwlERUJVRz0iLWciCSMgY29tcGlsZSBmdWxsIHN5bWJvbCB0YWJsZQorI29wdGlvbnMgCVNZ
 TVRBQl9TUEFDRT0yMDAwMDAKKworIyBWYWxpZCBvcHRpb25zIGZvciBCT09UX0FSR1M6CisjICBz
 aW5nbGUJCUJvb3QgdG8gc2luZ2xlIHVzZXIgb25seQorIyAga2RiCQkJR2l2ZSBjb250cm9sIHRv
 IGtlcm5lbCBkZWJ1Z2dlcgorIyAgYXNrCQkJQXNrIGZvciBmaWxlIG5hbWUgdG8gcmVib290IGZy
 b20KKyMgIHBtYXBkZWJ1Zz08bj4JSWYgUE1BUF9ERUJVRywgc2V0IHBtYXBfZGVidWdfbGV2ZWwg
 dG8gPG4+CisjICBtZW1vcnlkaXNrPTxuPglTZXQgbWVtb3J5ZGlzayBzaXplIHRvIDxuPiBLQgor
 IyAgcXVpZXQJCVNob3cgYXByaW50X25haXZlIG91dHB1dAorIyAgdmVyYm9zZQkJU2hvdyBhcHJp
 bnRfbm9ybWFsIGFuZCBhcHJpbnRfdmVyYm9zZSBvdXRwdXQKK29wdGlvbnMJCUJPT1RfQVJHUz0i
 XCJcIiIKKworY29uZmlnCQluZXRic2QJCXJvb3Qgb24gPyB0eXBlID8KK2NvbmZpZwkJbmV0YnNk
 LXNtMAlyb290IG9uIHNtMCB0eXBlIG5mcworCisjIFRoZSBtYWluIGJ1cyBkZXZpY2UKK21haW5i
 dXMwCWF0IHJvb3QKKworIyBUaGUgYm9vdCBjcHUKK2NwdTAJCWF0IG1haW5idXM/CisKKyMgU3Bl
 Y2lmeSB0aGUgbWVtb3J5IHNpemUgaW4gbWVnYWJ5dGVzLgorb3B0aW9ucwkJTUVNU0laRT0zMgor
 CisjIFRleGFzIEluc3RydW1lbnRzIFBlcmlwaGVyYWwgQnVzCit0aXBiMAkJYXQgbWFpbmJ1cz8K
 K29wdGlvbnMJCU9NQVBfVElQQl9QQkFTRT0weEZGRkIwMDAwLCBPTUFQX1RJUEJfU0laRT0weDAw
 MDQwMDAwCisKKyMgT24tYm9hcmQgMTY1NTAgVUFSVHMKKyMgT01BUCBVQVJUMiBpcyBub3QgY29u
 bmVjdGVkOyBVQVJUMyBicm91Z2h0IHRvIGV4cGFuc2lvbiBjb25uZWN0b3IgQiBwaW5zCisKK2Nv
 bTAJCWF0IHRpcGI/IGFkZHIgMHhmZmZiMDAwMCBpbnRyIDQ2IG11bHQgNAkjIFVBUlQxCitjb20x
 CQlhdCB0aXBiPyBhZGRyIDB4ZmZmYjk4MDAgaW50ciAxNSBtdWx0IDQJIyBVQVJUMworb3B0aW9u
 cyBDT05TQUREUj0weGZmZmIwMDAwLCBDT05TUEVFRD0xMTUyMDAKK29wdGlvbnMgS0dEQl9ERVZB
 RERSPTB4ZmZmYjk4MDAsIEtHREJfREVWUkFURT0xMTUyMDAJIyBVQVJUMworCisjIEludGVycnVw
 dCBjb250cm9sbGVyCitvbWFwNTkxMmludGMwCWF0IHRpcGI/CSMgSW50ZXJydXB0IGNvbnRyb2xs
 ZXIKKworIyBPcGVyYXRpbmcgU3lzdGVtIFRpbWVyCitvbWFwbXB1dG1yMAlhdCB0aXBiPyBhZGRy
 IDB4ZmZmZWM1MDAgaW50ciAyNgkjIE1QVSBUaW1lciAxCisjIFN0YXRpc3RpY3MgVGltZXIKK29t
 YXBtcHV0bXIxCWF0IHRpcGI/IGFkZHIgMHhmZmZlYzYwMCBpbnRyIDMwCSMgTVBVIFRpbWVyIDIK
 KyMgTWljcm90aW1lIFJlZmVyZW5jZSBUaW1lcgorb21hcG1wdXRtcjIJYXQgdGlwYj8gYWRkciAw
 eGZmZmVjNzAwIGludHIgMTYJIyBNUFUgVGltZXIgMworb3B0aW9ucyBPTUFQX01QVV9USU1FUl9D
 TE9DS19GUkVRPTEyMDAwMDAwCisKKyMgT24tYm9hcmQgR1BJTyBjb250cm9sbGVycworb21hcGdw
 aW8wCWF0IHRpcGI/IGFkZHIgMHhmZmZiZTQwMCBpbnRyIDE0CitvbWFwZ3BpbzEJYXQgdGlwYj8g
 YWRkciAweGZmZmJlYzAwIGludHIgNzIKK29tYXBncGlvMglhdCB0aXBiPyBhZGRyIDB4ZmZmYmI0
 MDAgaW50ciA3Mworb21hcGdwaW8zCWF0IHRpcGI/IGFkZHIgMHhmZmZiYmMwMCBpbnRyIDgwCisK
 KyMgUmVhbCBUaW1lIENsb2NrCitvbWFwcnRjMAlhdCB0aXBiPyBhZGRyIDB4ZmZmYjQ4MDAgaW50
 ciA1OAkjIGFsYXJtIGludGVycnVwdAorCisjIEV4dGVuZGVkIE1lbW9yeSBJbnRlckZhY2UgU2xv
 dyAoYmFzZSBpcyBhZGRyZXNzIG9mIEVNSUZTIFJlZ2lzdGVycykKK2VtaWZzMAkJYXQgbWFpbmJ1
 cz8gYmFzZSAweGZmZmVjYzAwCitvcHRpb25zIE9NQVBfVENfQ0xPQ0tfRlJFUT0xOTIwMDAwMDAK
 KworIyBPbi1ib2FyZCBTTVNDIExBTjkxQzk2IEV0aGVybmV0IENvbnRyb2xsZXIKK3NtMAkJYXQg
 ZW1pZnM/IGFkZHIgMHgwNDkwMDAwMCBpbnRyIDAgbXVsdCAxIG5vYnl0ZWFjYyAxCisKKyMgT0NQ
 CitvY3AwCQlhdCBtYWluYnVzPworCisjIFBzZXVkby1EZXZpY2VzCisKKyMgZGlzay9tYXNzIHN0
 b3JhZ2UgcHNldWRvLWRldmljZXMKK3BzZXVkby1kZXZpY2UJbWQJCTEJIyBtZW1vcnkgZGlzayBk
 ZXZpY2UgKHJhbWRpc2spCisjcHNldWRvLWRldmljZQl2bmQJCQkjIGRpc2stbGlrZSBpbnRlcmZh
 Y2UgdG8gZmlsZXMKKyNwc2V1ZG8tZGV2aWNlCWZzcwkJNAkjIGZpbGUgc3lzdGVtIHNuYXBzaG90
 IGRldmljZQorCisjIG5ldHdvcmsgcHNldWRvLWRldmljZXMKK3BzZXVkby1kZXZpY2UJYnBmaWx0
 ZXIJCSMgQmVya2VsZXkgcGFja2V0IGZpbHRlcgorcHNldWRvLWRldmljZQlsb29wCQkJIyBuZXR3
 b3JrIGxvb3BiYWNrCisjcHNldWRvLWRldmljZQlrdHRjcAkJCSMgbmV0d29yayBsb29wYmFjawor
 CisjIG1pc2NlbGxhbmVvdXMgcHNldWRvLWRldmljZXMKK3BzZXVkby1kZXZpY2UJcHR5CQkJIyBw
 c2V1ZG8tdGVybWluYWxzCitwc2V1ZG8tZGV2aWNlCXJuZAkJCSMgL2Rldi9yYW5kb20gYW5kIGlu
 LWtlcm5lbCBnZW5lcmF0b3IKKyNvcHRpb25zCVJORF9DT00KKyNwc2V1ZG8tZGV2aWNlCWNsb2Nr
 Y3RsCQkjIHVzZXIgY29udHJvbCBvZiBjbG9jayBzdWJzeXN0ZW0Kc3JjL3N5cy9hcmNoL2V2YmFy
 bS9jb25mL2ZpbGVzLm9zazU5MTIKLS0tIC4uL2N2cy9zcmMvc3lzL2FyY2gvZXZiYXJtL2NvbmYv
 ZmlsZXMub3NrNTkxMgkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgc3Jj
 L3N5cy9hcmNoL2V2YmFybS9jb25mL2ZpbGVzLm9zazU5MTIJMjAwNy0wMS0wNSAxODo0Njo1OC4w
 MDAwMDAwMDAgLTA4MDAKQEAgLTAsMCArMSwxNiBAQAorIwkkTmV0QlNEOiAkCisjCisjIFRJIE9T
 SzU5MTIgZXZhbHVhdGlvbiBib2FyZCBjb25maWd1cmF0aW9uIGluZm8KKyMKKworZmlsZQlhcmNo
 L2V2YmFybS9vc2s1OTEyL29zazU5MTJfbWFjaGRlcC5jCisKKyMgS2VybmVsIGJvb3QgYXJndW1l
 bnRzCitkZWZwYXJhbSBvcHRfbWFjaGRlcC5oCQkJCUJPT1RfQVJHUworCisjIENQVSBzdXBwb3J0
 IGFuZCBpbnRlZ3JhdGVkIHBlcmlwaGVyYWxzCitpbmNsdWRlICJhcmNoL2FybS9vbWFwL2ZpbGVz
 Lm9tYXAiCisKKyMgU01TQyBMQU45MUM5NgorYXR0YWNoCXNtIGF0IGVtaWZzIHdpdGggc21fZW1p
 ZnMKK2ZpbGUJYXJjaC9ldmJhcm0vb3NrNTkxMi9pZl9zbV9lbWlmcy5jCXNtX2VtaWZzCnNyYy9z
 eXMvYXJjaC9ldmJhcm0vY29uZi9tay5vc2s1OTEyCi0tLSAuLi9jdnMvc3JjL3N5cy9hcmNoL2V2
 YmFybS9jb25mL21rLm9zazU5MTIJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAK
 KysrIHNyYy9zeXMvYXJjaC9ldmJhcm0vY29uZi9tay5vc2s1OTEyCTIwMDctMDEtMDUgMTg6NDY6
 NTguMDAwMDAwMDAwIC0wODAwCkBAIC0wLDAgKzEsMTQgQEAKKyMJJE5ldEJTRDogJAorQ0ZMQUdT
 Kz0tbWNwdT1hcm05MjZlai1zCisKK1NZU1RFTV9GSVJTVF9PQko9CW9tYXBfc3RhcnQubworU1lT
 VEVNX0ZJUlNUX1NGSUxFPQkke0FSTX0vb21hcC9vbWFwX3N0YXJ0LlMKKworS0VSTkVMX0JBU0Vf
 UEhZUz0weDEwMDAwMDAwCitLRVJORUxfQkFTRV9WSVJUPTB4YzAwMDAwMDAKKworU1lTVEVNX0xE
 X1RBSUxfRVhUUkErPTsgXAorCWVjaG8gJHtPQkpDT1BZfSAtUyAtTyBiaW5hcnkgJEAgJEAuYmlu
 OyBcCisJJHtPQkpDT1BZfSAtUyAtTyBiaW5hcnkgJEAgJEAuYmluOyBcCisKK0VYVFJBX0tFUk5F
 TFMrPSAke0tFUk5FTFM6QC5LRVJORUwuQCR7LktFUk5FTC59LmJpbkB9CnNyYy9zeXMvYXJjaC9l
 dmJhcm0vY29uZi9zdGQub3NrNTkxMgotLS0gLi4vY3ZzL3NyYy9zeXMvYXJjaC9ldmJhcm0vY29u
 Zi9zdGQub3NrNTkxMgkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgc3Jj
 L3N5cy9hcmNoL2V2YmFybS9jb25mL3N0ZC5vc2s1OTEyCTIwMDctMDEtMDUgMTg6NDY6NTguMDAw
 MDAwMDAwIC0wODAwCkBAIC0wLDAgKzEsMjEgQEAKKyMJJE5ldEJTRDogJAorIworIyBzdGFuZGFy
 ZCBOZXRCU0QvZXZiYXJtIGZvciBPU0s1OTEyIG9wdGlvbnMKKworbWFjaGluZQlldmJhcm0gYXJt
 CitpbmNsdWRlCQkiY29uZi9zdGQiCSMgTUkgc3RhbmRhcmQgb3B0aW9ucworCisjIFB1bGwgaW4g
 T1NLNTkxMiBjb25maWcgZGVmaW5pdGlvbnMuCitpbmNsdWRlICJhcmNoL2V2YmFybS9jb25mL2Zp
 bGVzLm9zazU5MTIiCisKK29wdGlvbnMgCUVYRUNfRUxGMzIKK29wdGlvbnMgCUVYRUNfU0NSSVBU
 CisKKyMgVG8gc3VwcG9ydCBlYXN5IHRyYW5zaXQgdG8gLi4vYXJjaC9hcm0vYXJtMzIKK29wdGlv
 bnMgCUFSTTMyCisKK21ha2VvcHRpb25zCUxPQURBRERSRVNTPSIweGMwMDAwMDAwIgorbWFrZW9w
 dGlvbnMJQk9BUkRUWVBFPSJvc2s1OTEyIgorbWFrZW9wdGlvbnMJQk9BUkRNS0ZSQUc9IiR7VEhJ
 U0FSTX0vY29uZi9tay5vc2s1OTEyIgorCitvcHRpb25zIAlBUk1fSU5UUl9JTVBMPSI8YXJjaC9h
 cm0vb21hcC9vbWFwNTkxMl9pbnRyLmg+IgpzcmMvc3lzL2FyY2gvZXZiYXJtL29zazU5MTIvaWZf
 c21fZW1pZnMuYwotLS0gLi4vY3ZzL3NyYy9zeXMvYXJjaC9ldmJhcm0vb3NrNTkxMi9pZl9zbV9l
 bWlmcy5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBzcmMvc3lzL2Fy
 Y2gvZXZiYXJtL29zazU5MTIvaWZfc21fZW1pZnMuYwkyMDA3LTAxLTA1IDE4OjQ2OjU4LjAwMDAw
 MDAwMCAtMDgwMApAQCAtMCwwICsxLDEyMiBAQAorLyoJJE5ldEJTRDogJAkqLworCisvKgorICog
 T1NLNTkxMiBTTUM5MUN4eCB3cmFwcGVyLCBiYXNlZCBvbiBzeXMvYXJjaC9ldmJhcm0vdmlwZXIv
 aWZfc21fcHhhaXAuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAwNSBBbnR0aSBLYW50ZWUuICBB
 bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
 cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
 cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
 IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
 bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
 biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
 b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
 ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
 dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy
 aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCisgKiAgICBt
 dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CisgKiAgICAgICAgVGhp
 cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBUaGUgTmV0QlNECisgKiAg
 ICAgICAgRm91bmRhdGlvbiwgSW5jLiBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4KKyAqIDQuIFRoZSBu
 YW1lIG9mIHRoZSBjb21wYW55IG5vciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBiZSB1c2Vk
 IHRvCisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
 c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYworICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
 LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT
 JycgQU5EIEFOWSBFWFBSRVNTCisgKiBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
 QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
 VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
 Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUg
 TElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
 IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
 Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
 UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
 VVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
 LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
 TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9V
 VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
 U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMu
 aD4KK19fS0VSTkVMX1JDU0lEKDAsICIkTmV0QlNEOiAkIik7CisKKyNpbmNsdWRlIDxzeXMvcGFy
 YW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvZGV2aWNlLmg+CisK
 KyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNpbmNsdWRlIDxuZXQvaWZfZXRoZXIuaD4KKyNpbmNsdWRl
 IDxuZXQvaWZfbWVkaWEuaD4KKworI2luY2x1ZGUgPG1hY2hpbmUvaW50ci5oPgorI2luY2x1ZGUg
 PG1hY2hpbmUvYnVzLmg+CisKKyNpbmNsdWRlIDxkZXYvbWlpL21paS5oPgorI2luY2x1ZGUgPGRl
 di9taWkvbWlpdmFyLmg+CisKKyNpbmNsdWRlIDxkZXYvaWMvc21jOTFjeHhyZWcuaD4KKyNpbmNs
 dWRlIDxkZXYvaWMvc21jOTFjeHh2YXIuaD4KKworI2luY2x1ZGUgPGFyY2gvYXJtL29tYXAvb21h
 cF9lbWlmcy5oPgorI2luY2x1ZGUgPGFyY2gvYXJtL29tYXAvb21hcF9ncGlvLmg+CisKK3N0YXRp
 YyBpbnQJc21fZW1pZnNfbWF0Y2goc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgY2ZkYXRhICosIHZv
 aWQgKik7CitzdGF0aWMgdm9pZAlzbV9lbWlmc19hdHRhY2goc3RydWN0IGRldmljZSAqLCBzdHJ1
 Y3QgZGV2aWNlICosIHZvaWQgKik7CisKK3N0cnVjdCBzbV9lbWlmc19zb2Z0YyB7CisJc3RydWN0
 IHNtYzkxY3h4X3NvZnRjIHNjX3NtOworCXZvaWQgKmloOworfTsKKworQ0ZBVFRBQ0hfREVDTChz
 bV9lbWlmcywgc2l6ZW9mKHN0cnVjdCBzbV9lbWlmc19zb2Z0YyksIHNtX2VtaWZzX21hdGNoLAor
 ICAgIHNtX2VtaWZzX2F0dGFjaCwgTlVMTCwgTlVMTCk7CisKK3N0YXRpYyBpbnQKK3NtX2VtaWZz
 X21hdGNoKHN0cnVjdCBkZXZpY2UgKnBhcmVudCwgc3RydWN0IGNmZGF0YSAqbWF0Y2gsIHZvaWQg
 KmF1eCkKK3sKKwlzdHJ1Y3QgZW1pZnNfYXR0YWNoX2FyZ3MgKmVtaWZzID0gYXV4OworCisJaWYg
 KGVtaWZzLT5lbWlmc19hZGRyID09IC0xKQorCQlwYW5pYygic20gbXVzdCBoYXZlIGFkZHIgc3Bl
 Y2lmaWVkIGluIGNvbmZpZy4iKTsKKworCS8qIFRydXN0IHRoZSBjb25maWcgZmlsZS4gKi8KKwly
 ZXR1cm4gKDEpOworfQorCitzdGF0aWMgdm9pZAorc21fZW1pZnNfYXR0YWNoKHN0cnVjdCBkZXZp
 Y2UgKnBhcmVudCwgc3RydWN0IGRldmljZSAqc2VsZiwgdm9pZCAqYXV4KQoreworCXN0cnVjdCBz
 bV9lbWlmc19zb2Z0YyAqZW1pZnNzYyA9IChzdHJ1Y3Qgc21fZW1pZnNfc29mdGMgKilzZWxmOwor
 CXN0cnVjdCBzbWM5MWN4eF9zb2Z0YyAqc2MgPSAmZW1pZnNzYy0+c2Nfc207CisJc3RydWN0IGVt
 aWZzX2F0dGFjaF9hcmdzICplbWlmcyA9IGF1eDsKKwlidXNfc3BhY2VfdGFnX3QgYnN0OworCWJ1
 c19zcGFjZV9oYW5kbGVfdCBic2g7CisKKwlic3QgPSBlbWlmcy0+ZW1pZnNfaW90OworCisJLyog
 bWFwIGkvbyBzcGFjZSAqLworCWlmIChidXNfc3BhY2VfbWFwKGJzdCwgZW1pZnMtPmVtaWZzX2Fk
 ZHIsIFNNQ19JT1NJWkUsIDAsICZic2gpICE9IDApIHsKKwkJYXByaW50X2Vycm9yKCI6IHNtX2Vt
 aWZzX2F0dGFjaDogY2FuJ3QgbWFwIGkvbyBzcGFjZSIpOworCQlyZXR1cm47CisJfQorCisJYXBy
 aW50X25vcm1hbCgiXG4iKTsKKworCS8qIGZpbGwgaW4gbWFzdGVyIHNjICovCisJc2MtPnNjX2Jz
 dCA9IGJzdDsKKwlzYy0+c2NfYnNoID0gYnNoOworCisJLyogcmVnaXN0ZXIgdGhlIGludGVycnVw
 dCBoYW5kbGVyICovCisJZW1pZnNzYy0+aWggPSAKKwkgICAgb21hcF9ncGlvX2ludHJfZXN0YWJs
 aXNoKGVtaWZzLT5lbWlmc19pbnRyLCBJU1RfRURHRV9SSVNJTkcsCisJCQkJICAgICBJUExfTkVU
 LCBzYy0+c2NfZGV2LmR2X3huYW1lLAorCQkJCSAgICAgc21jOTFjeHhfaW50ciwgc2MpOworCisJ
 aWYgKGVtaWZzc2MtPmloID09IE5VTEwpIHsKKwkJYXByaW50X2Vycm9yKCI6IGNvdWxkbid0IGVz
 dGFibGlzaCBpbnRlcnJ1cHRcbiIpOworCQlidXNfc3BhY2VfdW5tYXAoYnN0LCBic2gsIFNNQ19J
 T1NJWkUpOworCQlyZXR1cm47CisJfQorCisJLyogUGVyZm9ybSBnZW5lcmljIGF0dGFjaC4gKi8K
 KwlzYy0+c2NfZmxhZ3MgfD0gU01DX0ZMQUdTX0VOQUJMRUQ7CisJc21jOTFjeHhfYXR0YWNoKHNj
 LCBOVUxMKTsKK30KKwpzcmMvc3lzL2FyY2gvZXZiYXJtL29zazU5MTIvb3NrNTkxMl9tYWNoZGVw
 LmMKLS0tIC4uL2N2cy9zcmMvc3lzL2FyY2gvZXZiYXJtL29zazU5MTIvb3NrNTkxMl9tYWNoZGVw
 LmMJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIHNyYy9zeXMvYXJjaC9l
 dmJhcm0vb3NrNTkxMi9vc2s1OTEyX21hY2hkZXAuYwkyMDA3LTAxLTA1IDE4OjQ2OjU4LjAwMDAw
 MDAwMCAtMDgwMApAQCAtMCwwICsxLDkwMSBAQAorLyoJJE5ldEJTRDogJCAqLworCisvKgorICog
 TWFjaGluZSBkZXBlbmRlbnQgZnVuY3Rpb25zIGZvciBrZXJuZWwgc2V0dXAgZm9yIFRJIE9TSzU5
 MTIgYm9hcmQuCisgKiBCYXNlZCBvbiBsdWJib2NrX21hY2hkZXAuYyB3aGljaCBpbiB0dXJuIHdh
 cyBiYXNlZCBvbiBpcTgwMzEwX21hY2hoZGVwLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIs
 IDIwMDMsIDIwMDUgIEdlbmV0ZWMgQ29ycG9yYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
 ICogV3JpdHRlbiBieSBIaXJveXVraSBCZXNzaG8gZm9yIEdlbmV0ZWMgQ29ycG9yYXRpb24uCisg
 KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
 d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
 dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
 aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
 ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
 aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
 cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
 bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
 ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
 dXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiBHZW5ldGVjIENvcnBvcmF0aW9uIG1heSBub3QgYmUg
 dXNlZCB0byBlbmRvcnNlIG9yCisgKiAgICBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
 aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlz
 c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdFTkVURUMgQ09SUE9S
 QVRJT04gYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
 LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
 RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
 UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHRU5FVEVDIENPUlBPUkFU
 SU9OCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
 UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
 RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
 UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
 CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
 QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
 UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
 IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
 VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMp
 IDIwMDEgV2FzYWJpIFN5c3RlbXMsIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
 ICogV3JpdHRlbiBieSBKYXNvbiBSLiBUaG9ycGUgZm9yIFdhc2FiaSBTeXN0ZW1zLCBJbmMuCisg
 KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
 d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
 dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
 aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
 ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
 aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
 cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
 bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
 ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
 dXRpb24uCisgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVy
 ZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKKyAqICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93
 aW5nIGFja25vd2xlZGdlbWVudDoKKyAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBk
 ZXZlbG9wZWQgZm9yIHRoZSBOZXRCU0QgUHJvamVjdCBieQorICoJV2FzYWJpIFN5c3RlbXMsIElu
 Yy4KKyAqIDQuIFRoZSBuYW1lIG9mIFdhc2FiaSBTeXN0ZW1zLCBJbmMuIG1heSBub3QgYmUgdXNl
 ZCB0byBlbmRvcnNlCisgKiAgICBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
 IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lv
 bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFdBU0FCSSBTWVNURU1TLCBJ
 TkMuIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
 SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
 IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
 T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgV0FTQUJJIFNZU1RFTVMsIElO
 QworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
 Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
 IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
 T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
 ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
 SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
 IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
 QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
 RQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogQ29weXJpZ2h0IChjKSAx
 OTk3LDE5OTggTWFyayBCcmluaWNvbWJlLgorICogQ29weXJpZ2h0IChjKSAxOTk3LDE5OTggQ2F1
 c2FsaXR5IExpbWl0ZWQuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
 YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
 dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
 d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
 dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
 dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
 IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
 dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
 ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
 QWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0
 aGlzIHNvZnR3YXJlCisgKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn
 ZW1lbnQ6CisgKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1h
 cmsgQnJpbmljb21iZQorICoJZm9yIHRoZSBOZXRCU0QgUHJvamVjdC4KKyAqIDQuIFRoZSBuYW1l
 IG9mIHRoZSBjb21wYW55IG5vciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBiZSB1c2VkIHRv
 CisgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m
 dHdhcmUgd2l0aG91dCBzcGVjaWZpYworICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
 ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycg
 QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
 IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisgKiBNRVJDSEFOVEFC
 SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
 LgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
 QkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
 RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
 IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
 Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
 SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
 SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
 SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP
 RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
 SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZz
 Lmg+CitfX0tFUk5FTF9SQ1NJRCgwLCAiJE5ldEJTRDogJCIpOworCisjaW5jbHVkZSAib3B0X21h
 Y2hkZXAuaCIKKyNpbmNsdWRlICJvcHRfZGRiLmgiCisjaW5jbHVkZSAib3B0X2tnZGIuaCIKKyNp
 bmNsdWRlICJvcHRfaXBrZGIuaCIKKyNpbmNsdWRlICJvcHRfbWQuaCIKKyNpbmNsdWRlICJvcHRf
 Y29tLmgiCisjaW5jbHVkZSAibWQuaCIKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1
 ZGUgPHN5cy9kZXZpY2UuaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMv
 a2VybmVsLmg+CisjaW5jbHVkZSA8c3lzL2V4ZWMuaD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgor
 I2luY2x1ZGUgPHN5cy9tc2didWYuaD4KKyNpbmNsdWRlIDxzeXMvcmVib290Lmg+CisjaW5jbHVk
 ZSA8c3lzL3Rlcm1pb3MuaD4KKyNpbmNsdWRlIDxzeXMva3N5bXMuaD4KKworI2luY2x1ZGUgPHV2
 bS91dm1fZXh0ZXJuLmg+CisKKyNpbmNsdWRlIDxzeXMvY29uZi5oPgorI2luY2x1ZGUgPGRldi9j
 b25zLmg+CisjaW5jbHVkZSA8ZGV2L21kLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL2RiX21hY2hk
 ZXAuaD4KKyNpbmNsdWRlIDxkZGIvZGJfc3ltLmg+CisjaW5jbHVkZSA8ZGRiL2RiX2V4dGVybi5o
 PgorI2lmZGVmIEtHREIKKyNpbmNsdWRlIDxzeXMva2dkYi5oPgorI2VuZGlmCisKKyNpbmNsdWRl
 IDxtYWNoaW5lL2Jvb3Rjb25maWcuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgorI2luY2x1
 ZGUgPG1hY2hpbmUvY3B1Lmg+CisjaW5jbHVkZSA8bWFjaGluZS9mcmFtZS5oPgorI2luY2x1ZGUg
 PGFybS91bmRlZmluZWQuaD4KKworI2luY2x1ZGUgPGFybS9hcm0zMi9tYWNoZGVwLmg+CisKKyNp
 bmNsdWRlIDxhcm0vb21hcC9vbWFwX3JlZy5oPgorI2luY2x1ZGUgPGFybS9vbWFwL29tYXBfdGlw
 Yi5oPgorI2luY2x1ZGUgPGFybS9vbWFwL29tYXBfY29tLmg+CisKKy8qCisgKiBUaGUgcmFuZ2Ug
 MHhjMTAwMDAwMCAtIDB4Y2NmZmZmZmYgaXMgYXZhaWxhYmxlIGZvciBrZXJuZWwgVk0gc3BhY2Uu
 CisgKi8KKyNkZWZpbmUJS0VSTkVMX1ZNX0JBU0UJCShLRVJORUxfQkFTRSArIDB4MDEwMDAwMDAp
 CisjZGVmaW5lIEtFUk5FTF9WTV9TSVpFCQkweDBDMDAwMDAwCisKKworLyoKKyAqIEFkZHJlc3Mg
 dG8gY2FsbCBmcm9tIGNwdV9yZXNldCgpIHRvIHJlc2V0IHRoZSBtYWNoaW5lLgorICogVGhpcyBp
 cyBtYWNoaW5lIGFyY2hpdGVjdHVyZSBkZXBlbmRhbnQgYXMgaXQgdmFyaWVzIGRlcGVuZGluZwor
 ICogb24gd2hlcmUgdGhlIFJPTSBhcHBlYXJzIHdoZW4geW91IHR1cm4gdGhlIE1NVSBvZmYuCisg
 Ki8KKwordV9pbnQgY3B1X3Jlc2V0X2FkZHJlc3MgPSAwOworCisvKiBEZWZpbmUgdmFyaW91cyBz
 dGFjayBzaXplcyBpbiBwYWdlcyAqLworI2RlZmluZSBJUlFfU1RBQ0tfU0laRQkxCisjZGVmaW5l
 IEFCVF9TVEFDS19TSVpFCTEKKyNpZmRlZiBJUEtEQgorI2RlZmluZSBVTkRfU1RBQ0tfU0laRQky
 CisjZWxzZQorI2RlZmluZSBVTkRfU1RBQ0tfU0laRQkxCisjZW5kaWYKKworQm9vdENvbmZpZyBi
 b290Y29uZmlnOwkJLyogQm9vdCBjb25maWcgc3RvcmFnZSAqLworY2hhciAqYm9vdF9hcmdzID0g
 TlVMTDsKK2NoYXIgKmJvb3RfZmlsZSA9IE5VTEw7CisKKy8qIFBoeXNpY2FsIGFkZHJlc3Mgb2Yg
 dGhlIGJlZ2lubmluZyBvZiBTRFJBTS4gKi8KK3BhZGRyX3QgcGh5c2ljYWxfc3RhcnQ7CisvKiBQ
 aHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBmaXJzdCBieXRlIGFmdGVyIHRoZSBlbmQgb2YgU0RSQU0u
 ICovCitwYWRkcl90IHBoeXNpY2FsX2VuZDsKKy8qIE51bWJlciBvZiBwYWdlcyBvZiBtZW1vcnku
 ICovCitpbnQgcGh5c21lbSA9IDA7CisKKy8qIFNhbWUgdGhpbmdzLCBidXQgZm9yIHRoZSBmcmVl
 ICh1bnVzZWQgYnkgdGhlIGtlcm5lbCkgbWVtb3J5LiAqLworc3RhdGljIHBhZGRyX3QgcGh5c2lj
 YWxfZnJlZXN0YXJ0LCBwaHlzaWNhbF9mcmVlZW5kOworc3RhdGljIHVfaW50IGZyZWVfcGFnZXM7
 CisKKy8qIFBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3NlcyBmb3Igc29tZSBnbG9iYWwgcGFn
 ZXMgKi8KK3B2X2FkZHJfdCBzeXN0ZW1wYWdlOwkJLyogZXhjZXB0aW9uIHZlY3RvcnMgKi8KK3B2
 X2FkZHJfdCBpcnFzdGFjazsKK3B2X2FkZHJfdCB1bmRzdGFjazsKK3B2X2FkZHJfdCBhYnRzdGFj
 azsKK3B2X2FkZHJfdCBrZXJuZWxzdGFjazsJLyogc3RhY2sgZm9yIFNWQyBtb2RlICovCitzdGF0
 aWMgcHZfYWRkcl90IGtlcm5lbF9sMXB0OwkvKiBGaXJzdCBsZXZlbCBwYWdlIHRhYmxlLiAqLwor
 CisvKiBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlci4gKi8KK3BhZGRyX3Qg
 bXNnYnVmcGh5czsKKworZXh0ZXJuIHVfaW50IGRhdGFfYWJvcnRfaGFuZGxlcl9hZGRyZXNzOwor
 ZXh0ZXJuIHVfaW50IHByZWZldGNoX2Fib3J0X2hhbmRsZXJfYWRkcmVzczsKK2V4dGVybiB1X2lu
 dCB1bmRlZmluZWRfaGFuZGxlcl9hZGRyZXNzOworZXh0ZXJuIGNoYXIgS0VSTkVMX0JBU0VfcGh5
 c1tdOworZXh0ZXJuIGNoYXIgZXRleHRbXSwgX19kYXRhX3N0YXJ0W10sIF9lZGF0YVtdLCBfX2Jz
 c19zdGFydFtdLCBfX2Jzc19lbmRfX1tdOworZXh0ZXJuIGNoYXIgX2VuZFtdOworCisjZGVmaW5l
 IEtFUk5FTF9QVF9TWVMJCTAJLyogUGFnZSB0YWJsZSBmb3IgbWFwcGluZyBwcm9jMCB6ZXJvIHBh
 Z2UgKi8KKyNkZWZpbmUgS0VSTkVMX1BUX0tFUk5FTAkxCS8qIFBhZ2UgdGFibGUgZm9yIG1hcHBp
 bmcga2VybmVsICovCisjZGVmaW5lCUtFUk5FTF9QVF9LRVJORUxfTlVNCTQKKyNkZWZpbmUgS0VS
 TkVMX1BUX1ZNREFUQQkoS0VSTkVMX1BUX0tFUk5FTCtLRVJORUxfUFRfS0VSTkVMX05VTSkKKwkJ
 CQkgICAgICAgIC8qIFBhZ2UgdGFibGVzIGZvciBtYXBwaW5nIGtlcm5lbCBWTSAqLworI2RlZmlu
 ZQlLRVJORUxfUFRfVk1EQVRBX05VTQk0CS8qIHN0YXJ0IHdpdGggMTZNQiBvZiBLVk0gKi8KKyNk
 ZWZpbmUgTlVNX0tFUk5FTF9QVFMJCShLRVJORUxfUFRfVk1EQVRBICsgS0VSTkVMX1BUX1ZNREFU
 QV9OVU0pCisKK3B2X2FkZHJfdCBrZXJuZWxfcHRfdGFibGVbTlVNX0tFUk5FTF9QVFNdOworCitl
 eHRlcm4gc3RydWN0IHVzZXIgKnByb2MwcGFkZHI7CisKKy8qCisgKiBNYWNyb3MgdG8gdHJhbnNs
 YXRlIGJldHdlZW4gcGh5c2ljYWwgYW5kIHZpcnR1YWwgZm9yIGEgc3Vic2V0IG9mIHRoZQorICog
 a2VybmVsIGFkZHJlc3Mgc3BhY2UuICAqTm90KiBmb3IgZ2VuZXJhbCB1c2UuCisgKi8KKyNkZWZp
 bmUgS0VSTkVMX0JBU0VfUEhZUyAoKHBhZGRyX3QpJktFUk5FTF9CQVNFX3BoeXMpCisjZGVmaW5l
 IEtFUk5fVlRPUEhZUyh2YSkgXAorCSgocGFkZHJfdCkoKHZhZGRyX3QpdmEgLSBLRVJORUxfQkFT
 RSArIEtFUk5FTF9CQVNFX1BIWVMpKQorI2RlZmluZSBLRVJOX1BIWVNUT1YocGEpIFwKKwkoKHZh
 ZGRyX3QpKChwYWRkcl90KXBhIC0gS0VSTkVMX0JBU0VfUEhZUyArIEtFUk5FTF9CQVNFKSkKKwor
 LyogUHJvdG90eXBlcyAqLworCit2b2lkIGNvbnNpbml0KHZvaWQpOworI2lmZGVmIEtHREIKK3N0
 YXRpYyB2b2lkIGtnZGJfcG9ydF9pbml0KHZvaWQpOworI2VuZGlmCitzdGF0aWMgdm9pZCBzZXR1
 cF9yZWFsX3BhZ2VfdGFibGVzKHZvaWQpOworc3RhdGljIHZvaWQgaW5pdF9jbG9ja3Modm9pZCk7
 CisKK2JzX3Byb3Rvcyhic19ub3RpbXBsKTsKKworI2luY2x1ZGUgImNvbS5oIgorI2lmIE5DT00g
 PiAwCisjaW5jbHVkZSA8ZGV2L2ljL2NvbXJlZy5oPgorI2luY2x1ZGUgPGRldi9pYy9jb212YXIu
 aD4KKyNlbmRpZgorCisvKgorICogdm9pZCBjcHVfcmVib290KGludCBob3d0bywgY2hhciAqYm9v
 dHN0cikKKyAqCisgKiBSZWJvb3RzIHRoZSBzeXN0ZW0KKyAqCisgKiBEZWFsIHdpdGggYW55IHN5
 bmNpbmcsIHVubW91bnRpbmcsIGR1bXBpbmcgYW5kIHNodXRkb3duIGhvb2tzLAorICogdGhlbiBy
 ZXNldCB0aGUgQ1BVLgorICovCit2b2lkCitjcHVfcmVib290KGludCBob3d0bywgY2hhciAqYm9v
 dHN0cikKK3sKKyNpZmRlZiBESUFHTk9TVElDCisJLyogaW5mbyAqLworCXByaW50ZigiYm9vdDog
 aG93dG89JTA4eCBjdXJwcm9jPSVwXG4iLCBob3d0bywgY3VycHJvYyk7CisjZW5kaWYKKworCS8q
 CisJICogSWYgd2UgYXJlIHN0aWxsIGNvbGQgdGhlbiBoaXQgdGhlIGFpciBicmFrZXMKKwkgKiBh
 bmQgY3Jhc2ggdG8gZWFydGggZmFzdAorCSAqLworCWlmIChjb2xkKSB7CisJCWRvc2h1dGRvd25o
 b29rcygpOworCQlwcmludGYoIlRoZSBvcGVyYXRpbmcgc3lzdGVtIGhhcyBoYWx0ZWQuXG4iKTsK
 KwkJcHJpbnRmKCJQbGVhc2UgcHJlc3MgYW55IGtleSB0byByZWJvb3QuXG5cbiIpOworCQljbmdl
 dGMoKTsKKwkJcHJpbnRmKCJyZWJvb3RpbmcuLi5cbiIpOworCQljcHVfcmVzZXQoKTsKKwkJLypO
 T1RSRUFDSEVEKi8KKwl9CisKKwkvKiBEaXNhYmxlIGNvbnNvbGUgYnVmZmVyaW5nICovCisvKglj
 bnBvbGxjKDEpOyovCisKKwkvKgorCSAqIElmIFJCX05PU1lOQyB3YXMgbm90IHNwZWNpZmllZCBz
 eW5jIHRoZSBkaXNjcy4KKwkgKiBOb3RlOiBVbmxlc3MgY29sZCBpcyBzZXQgdG8gMSBoZXJlLCBz
 eXNsb2dkIHdpbGwgZGllIGR1cmluZyB0aGUKKwkgKiB1bm1vdW50LiAgSXQgbG9va3MgbGlrZSBz
 eXNsb2dkIGlzIGdldHRpbmcgd29rZW4gdXAgb25seSB0byBmaW5kCisJICogdGhhdCBpdCBjYW5u
 b3QgcGFnZSBwYXJ0IG9mIHRoZSBiaW5hcnkgaW4gYXMgdGhlIGZpbGVzeXN0ZW0gaGFzCisJICog
 YmVlbiB1bm1vdW50ZWQuCisJICovCisJaWYgKCEoaG93dG8gJiBSQl9OT1NZTkMpKQorCQlib290
 c3luYygpOworCisJLyogU2F5IE5PIHRvIGludGVycnVwdHMgKi8KKwlzcGxoaWdoKCk7CisKKwkv
 KiBEbyBhIGR1bXAgaWYgcmVxdWVzdGVkLiAqLworCWlmICgoaG93dG8gJiAoUkJfRFVNUCB8IFJC
 X0hBTFQpKSA9PSBSQl9EVU1QKQorCQlkdW1wc3lzKCk7CisKKwkvKiBSdW4gYW55IHNodXRkb3du
 IGhvb2tzICovCisJZG9zaHV0ZG93bmhvb2tzKCk7CisKKwkvKiBNYWtlIHN1cmUgSVJRJ3MgYXJl
 IGRpc2FibGVkICovCisJSVJRZGlzYWJsZTsKKworCWlmIChob3d0byAmIFJCX0hBTFQpIHsKKwkJ
 cHJpbnRmKCJUaGUgb3BlcmF0aW5nIHN5c3RlbSBoYXMgaGFsdGVkLlxuIik7CisJCXByaW50Zigi
 UGxlYXNlIHByZXNzIGFueSBrZXkgdG8gcmVib290LlxuXG4iKTsKKwkJY25nZXRjKCk7CisJfQor
 CisJcHJpbnRmKCJyZWJvb3RpbmcuLi5cbiIpOworCWNwdV9yZXNldCgpOworCS8qTk9UUkVBQ0hF
 RCovCit9CisKKy8qCisgKiBTdGF0aWMgZGV2aWNlIG1hcHBpbmdzLiBUaGVzZSBwZXJpcGhlcmFs
 IHJlZ2lzdGVycyBhcmUgbWFwcGVkIGF0CisgKiBmaXhlZCB2aXJ0dWFsIGFkZHJlc3NlcyB2ZXJ5
 IGVhcmx5IGluIGluaXRhcm0oKSBzbyB0aGF0IHdlIGNhbiB1c2UKKyAqIHRoZW0gd2hpbGUgYm9v
 dGluZyB0aGUga2VybmVsLCBhbmQgc3RheSBhdCB0aGUgc2FtZSBhZGRyZXNzCisgKiB0aHJvdWdo
 b3V0IHdob2xlIGtlcm5lbCdzIGxpZmUgdGltZS4KKyAqCisgKiBXZSB1c2UgdGhpcyB0YWJsZSB0
 d2ljZTsgb25jZSB3aXRoIGJvb3RzdHJhcCBwYWdlIHRhYmxlLCBhbmQgb25jZQorICogd2l0aCBr
 ZXJuZWwncyBwYWdlIHRhYmxlIHdoaWNoIHdlIGJ1aWxkIHVwIGluIGluaXRhcm0oKS4KKyAqCisg
 KiBTaW5jZSB3ZSBtYXAgdGhlc2UgcmVnaXN0ZXJzIGludG8gdGhlIGJvb3RzdHJhcCBwYWdlIHRh
 YmxlIHVzaW5nCisgKiBwbWFwX2Rldm1hcF9ib290c3RyYXAoKSB3aGljaCBjYWxscyBwbWFwX21h
 cF9jaHVuaygpLCB3ZSBtYXAKKyAqIHJlZ2lzdGVycyBzZWdtZW50LWFsaWduZWQgYW5kIHNlZ21l
 bnQtcm91bmRlZCBpbiBvcmRlciB0byBhdm9pZAorICogdXNpbmcgdGhlIDJuZCBwYWdlIHRhYmxl
 cy4KKyAqLworCisjZGVmaW5lCV9BKGEpCSgoYSkgJiB+TDFfU19PRkZTRVQpCisjZGVmaW5lCV9T
 KHMpCSgoKHMpICsgTDFfU19TSVpFIC0gMSkgJiB+KEwxX1NfU0laRS0xKSkKKworc3RhdGljIGNv
 bnN0IHN0cnVjdCBwbWFwX2Rldm1hcCBkZXZtYXBbXSA9IHsKKwl7CisJCS8qIE1hcCB0aGUgVGV4
 YXMgSW5zdHJ1bWVudHMgUGVyaXBoZXJhbCBCdXMgVkE9PVBBICovCisJCS5wZF92YSA9IF9BKE9N
 QVBfVElQQl9QQkFTRSksCisJCS5wZF9wYSA9IF9BKE9NQVBfVElQQl9QQkFTRSksCisJCS5wZF9z
 aXplID0gX1MoT01BUF9USVBCX1NJWkUpLAorCQkucGRfcHJvdCA9IFZNX1BST1RfUkVBRHxWTV9Q
 Uk9UX1dSSVRFLAorCQkucGRfY2FjaGUgPSBQVEVfTk9DQUNIRQorCX0sCisJezB9Cit9OworCisj
 dW5kZWYJX0EKKyN1bmRlZglfUworCisvKgorICogdV9pbnQgaW5pdGFybSguLi4pCisgKgorICog
 SW5pdGlhbCBlbnRyeSBwb2ludCBvbiBzdGFydHVwLiBUaGlzIGdldHMgY2FsbGVkIGJlZm9yZSBt
 YWluKCkgaXMKKyAqIGVudGVyZWQuCisgKiBJdCBzaG91bGQgYmUgcmVzcG9uc2libGUgZm9yIHNl
 dHRpbmcgdXAgZXZlcnl0aGluZyB0aGF0IG11c3QgYmUKKyAqIGluIHBsYWNlIHdoZW4gbWFpbiBp
 cyBjYWxsZWQuCisgKiBUaGlzIGluY2x1ZGVzCisgKiAgIFRha2luZyBhIGNvcHkgb2YgdGhlIGJv
 b3QgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuCisgKiAgIEluaXRpYWxpc2luZyB0aGUgcGh5c2lj
 YWwgY29uc29sZSBzbyBjaGFyYWN0ZXJzIGNhbiBiZSBwcmludGVkLgorICogICBTZXR0aW5nIHVw
 IHBhZ2UgdGFibGVzIGZvciB0aGUga2VybmVsCisgKiAgIFJlbG9jYXRpbmcgdGhlIGtlcm5lbCB0
 byB0aGUgYm90dG9tIG9mIHBoeXNpY2FsIG1lbW9yeQorICovCit1X2ludAoraW5pdGFybSh2b2lk
 ICphcmcpCit7CisJLyoKKwkgKiBXaGVuIHdlIGVudGVyIGhlcmUsIHdlIGFyZSB1c2luZyBhIHRl
 bXBvcmFyeSBmaXJzdCBsZXZlbAorCSAqIHRyYW5zbGF0aW9uIHRhYmxlIHdpdGggc2VjdGlvbiBl
 bnRyaWVzIGluIGl0IHRvIGNvdmVyIHRoZSBUSVBCCisJICogcGVyaXBoZXJhbHMgYW5kIFNEUkFN
 LiAgVGhlIHRlbXBvcmFyeSBmaXJzdCBsZXZlbCB0cmFuc2xhdGlvbiB0YWJsZQorCSAqIGlzIGF0
 IHRoZSBlbmQgb2YgU0RSQU0uCisJICovCisKKwkvKiBIZWFkcyB1cCAuLi4gU2V0dXAgdGhlIENQ
 VSAvIE1NVSAvIFRMQiBmdW5jdGlvbnMuICovCisJaWYgKHNldF9jcHVmdW5jcygpKQorCQlwYW5p
 YygiY3B1IG5vdCByZWNvZ25pemVkISIpOworCisJaW5pdF9jbG9ja3MoKTsKKworCS8qIFRoZSBj
 b25zb2xlIGlzIGdvaW5nIHRvIHRyeSB0byBtYXAgdGhpbmdzLiAgR2l2ZSBwbWFwIGEgZGV2bWFw
 LiAqLworCXBtYXBfZGV2bWFwX3JlZ2lzdGVyKGRldm1hcCk7CisJY29uc2luaXQoKTsKKyNpZmRl
 ZiBLR0RCCisJa2dkYl9wb3J0X2luaXQoKTsKKyNlbmRpZgorCisjaWZkZWYgVkVSQk9TRV9JTklU
 X0FSTQorCS8qIFRhbGsgdG8gdGhlIHVzZXIgKi8KKwlwcmludGYoIlxuTmV0QlNEL2V2YmFybSAo
 T1NLNTkxMikgYm9vdGluZyAuLi5cbiIpOworI2VuZGlmCisKKyNpZmRlZiBCT09UX0FSR1MKKwlj
 aGFyIG1pX2Jvb3RhcmdzW10gPSBCT09UX0FSR1M7CisJcGFyc2VfbWlfYm9vdGFyZ3MobWlfYm9v
 dGFyZ3MpOworI2VuZGlmCisKKyNpZmRlZiBWRVJCT1NFX0lOSVRfQVJNCisJcHJpbnRmKCJpbml0
 YXJtOiBDb25maWd1cmluZyBzeXN0ZW0gLi4uXG4iKTsKKyNlbmRpZgorCisJLyoKKwkgKiBTZXQg
 dXAgdGhlIHZhcmlhYmxlcyB0aGF0IGRlZmluZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHBoeXNpY2Fs
 CisJICogbWVtb3J5LgorCSAqLworCXBoeXNpY2FsX3N0YXJ0ID0gS0VSTkVMX0JBU0VfUEhZUzsK
 KwlwaHlzaWNhbF9lbmQgPSBwaHlzaWNhbF9zdGFydCArIE1FTVNJWkVfQllURVM7CisJcGh5c21l
 bSA9IE1FTVNJWkVfQllURVMgLyBQQUdFX1NJWkU7CisKKwkvKiBGYWtlIGJvb3Rjb25maWcgc3Ry
 dWN0dXJlIGZvciB0aGUgYmVuZWZpdCBvZiBwbWFwLmMuICovCisJYm9vdGNvbmZpZy5kcmFtYmxv
 Y2tzID0gMTsKKwlib290Y29uZmlnLmRyYW1bMF0uYWRkcmVzcyA9IHBoeXNpY2FsX3N0YXJ0Owor
 CWJvb3Rjb25maWcuZHJhbVswXS5wYWdlcyA9IHBoeXNtZW07CisKKwkvKgorCSAqIE91ciBrZXJu
 ZWwgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiBtZW1vcnksIHNvIHNldCBvdXIgZnJlZSBzcGFjZSB0
 bworCSAqIGFsbCB0aGUgbWVtb3J5IGFmdGVyIHRoZSBrZXJuZWwuCisJICovCisJcGh5c2ljYWxf
 ZnJlZXN0YXJ0ID0gS0VSTl9WVE9QSFlTKHJvdW5kX3BhZ2UoKHZhZGRyX3QpIF9lbmQpKTsKKwlw
 aHlzaWNhbF9mcmVlZW5kID0gcGh5c2ljYWxfZW5kOworCWZyZWVfcGFnZXMgPSAocGh5c2ljYWxf
 ZnJlZWVuZCAtIHBoeXNpY2FsX2ZyZWVzdGFydCkgLyBQQUdFX1NJWkU7CisKKwkvKgorCSAqIFRo
 aXMgaXMgZ29pbmcgdG8gZG8gYWxsIHRoZSBoYXJkIHdvcmsgb2Ygc2V0dGluZyB1cCB0aGUgZmly
 c3QgYW5kCisJICogYW5kIHNlY29uZCBsZXZlbCBwYWdlIHRhYmxlcy4gIFBhZ2VzIG9mIG1lbW9y
 eSB3aWxsIGJlIGFsbG9jYXRlZAorCSAqIGFuZCBtYXBwZWQgZm9yIG90aGVyIHN0cnVjdHVyZXMg
 dGhhdCBhcmUgcmVxdWlyZWQgZm9yIHN5c3RlbQorCSAqIG9wZXJhdGlvbi4gIFdoZW4gaXQgcmV0
 dXJucywgcGh5c2ljYWxfZnJlZXN0YXJ0IGFuZCBmcmVlX3BhZ2VzIHdpbGwKKwkgKiBoYXZlIGJl
 ZW4gdXBkYXRlZCB0byByZWZsZWN0IHRoZSBhbGxvY2F0aW9ucyB0aGF0IHdlcmUgbWFkZS4gIElu
 CisJICogYWRkaXRpb24sIGtlcm5lbF9sMXB0LCBrZXJuZWxfcHRfdGFibGVbXSwgc3lzdGVtcGFn
 ZSwgaXJxc3RhY2ssCisJICogYWJ0c3RhY2ssIHVuZHN0YWNrLCBrZXJuZWxzdGFjaywgbXNnYnVm
 cGh5cyB3aWxsIGJlIHNldCB0byBwb2ludCB0bworCSAqIHRoZSBtZW1vcnkgdGhhdCB3YXMgYWxs
 b2NhdGVkIGZvciB0aGVtLgorCSAqLworCXNldHVwX3JlYWxfcGFnZV90YWJsZXMoKTsKKworCS8q
 CisJICogTW92ZWQgZnJvbSBjcHVfc3RhcnR1cCgpIGFzIGRhdGFfYWJvcnRfaGFuZGxlcigpIHJl
 ZmVyZW5jZXMKKwkgKiB0aGlzIGR1cmluZyB1dm0gaW5pdC4KKwkgKi8KKwlwcm9jMHBhZGRyID0g
 KHN0cnVjdCB1c2VyICopa2VybmVsc3RhY2sucHZfdmE7CisJbHdwMC5sX2FkZHIgPSBwcm9jMHBh
 ZGRyOworCisjaWZkZWYgVkVSQk9TRV9JTklUX0FSTQorCXByaW50ZigiYm9vdHN0cmFwIGRvbmUu
 XG4iKTsKKyNlbmRpZgorCisJYXJtMzJfdmVjdG9yX2luaXQoQVJNX1ZFQ1RPUlNfTE9XLCBBUk1f
 VkVDX0FMTCk7CisKKwkvKgorCSAqIFBhZ2VzIHdlcmUgYWxsb2NhdGVkIGR1cmluZyB0aGUgc2Vj
 b25kYXJ5IGJvb3RzdHJhcCBmb3IgdGhlCisJICogc3RhY2tzIGZvciBkaWZmZXJlbnQgQ1BVIG1v
 ZGVzLgorCSAqIFdlIG11c3Qgbm93IHNldCB0aGUgcjEzIHJlZ2lzdGVycyBpbiB0aGUgZGlmZmVy
 ZW50IENQVSBtb2RlcyB0bworCSAqIHBvaW50IHRvIHRoZXNlIHN0YWNrcy4KKwkgKiBTaW5jZSB0
 aGUgQVJNIHN0YWNrcyB1c2UgU1RNRkQgZXRjLiB3ZSBtdXN0IHNldCByMTMgdG8gdGhlIHRvcCBl
 bmQKKwkgKiBvZiB0aGUgc3RhY2sgbWVtb3J5LgorCSAqLworI2lmZGVmIFZFUkJPU0VfSU5JVF9B
 Uk0KKwlwcmludGYoImluaXQgc3Vic3lzdGVtczogc3RhY2tzICIpOworI2VuZGlmCisKKwlzZXRf
 c3RhY2twdHIoUFNSX0lSUTMyX01PREUsIGlycXN0YWNrLnB2X3ZhICsgSVJRX1NUQUNLX1NJWkUg
 KiBQQUdFX1NJWkUpOworCXNldF9zdGFja3B0cihQU1JfQUJUMzJfTU9ERSwgYWJ0c3RhY2sucHZf
 dmEgKyBBQlRfU1RBQ0tfU0laRSAqIFBBR0VfU0laRSk7CisJc2V0X3N0YWNrcHRyKFBTUl9VTkQz
 Ml9NT0RFLCB1bmRzdGFjay5wdl92YSArIFVORF9TVEFDS19TSVpFICogUEFHRV9TSVpFKTsKKwor
 CS8qCisJICogV2VsbCB3ZSBzaG91bGQgc2V0IGEgZGF0YSBhYm9ydCBoYW5kbGVyLgorCSAqIE9u
 Y2UgdGhpbmdzIGdldCBnb2luZyB0aGlzIHdpbGwgY2hhbmdlIGFzIHdlIHdpbGwgbmVlZCBhIHBy
 b3BlcgorCSAqIGhhbmRsZXIuCisJICogVW50aWwgdGhlbiB3ZSB3aWxsIHVzZSBhIGhhbmRsZXIg
 dGhhdCBqdXN0IHBhbmljcyBidXQgdGVsbHMgdXMKKwkgKiB3aHkuCisJICogSW5pdGlhbGlzYXRp
 b24gb2YgdGhlIHZlY3RvcnMgd2lsbCBqdXN0IHBhbmljIG9uIGEgZGF0YSBhYm9ydC4KKwkgKiBU
 aGlzIGp1c3QgZmlsbHMgaW4gYSBzbGlnaHRseSBiZXR0ZXIgb25lLgorCSAqLworI2lmZGVmIFZF
 UkJPU0VfSU5JVF9BUk0KKwlwcmludGYoInZlY3RvcnMgIik7CisjZW5kaWYKKwlkYXRhX2Fib3J0
 X2hhbmRsZXJfYWRkcmVzcyA9ICh1X2ludClkYXRhX2Fib3J0X2hhbmRsZXI7CisJcHJlZmV0Y2hf
 YWJvcnRfaGFuZGxlcl9hZGRyZXNzID0gKHVfaW50KXByZWZldGNoX2Fib3J0X2hhbmRsZXI7CisJ
 dW5kZWZpbmVkX2hhbmRsZXJfYWRkcmVzcyA9ICh1X2ludCl1bmRlZmluZWRpbnN0cnVjdGlvbl9i
 b3VuY2U7CisKKwkvKiBJbml0aWFsaXNlIHRoZSB1bmRlZmluZWQgaW5zdHJ1Y3Rpb24gaGFuZGxl
 cnMgKi8KKyNpZmRlZiBWRVJCT1NFX0lOSVRfQVJNCisJcHJpbnRmKCJ1bmRlZmluZWQgIik7Cisj
 ZW5kaWYKKwl1bmRlZmluZWRfaW5pdCgpOworCisJLyogTG9hZCBtZW1vcnkgaW50byBVVk0uICov
 CisjaWZkZWYgVkVSQk9TRV9JTklUX0FSTQorCXByaW50ZigicGFnZSAiKTsKKyNlbmRpZgorCXV2
 bV9zZXRwYWdlc2l6ZSgpOyAgICAgICAgLyogaW5pdGlhbGl6ZSBQQUdFX1NJWkUtZGVwZW5kZW50
 IHZhcmlhYmxlcyAqLworCXV2bV9wYWdlX3BoeXNsb2FkKGF0b3AocGh5c2ljYWxfZnJlZXN0YXJ0
 KSwgYXRvcChwaHlzaWNhbF9mcmVlZW5kKSwKKwkgICAgYXRvcChwaHlzaWNhbF9mcmVlc3RhcnQp
 LCBhdG9wKHBoeXNpY2FsX2ZyZWVlbmQpLAorCSAgICBWTV9GUkVFTElTVF9ERUZBVUxUKTsKKwor
 CS8qIEJvb3Qgc3RyYXAgcG1hcCB0ZWxsaW5nIGl0IHdoZXJlIHRoZSBrZXJuZWwgcGFnZSB0YWJs
 ZSBpcyAqLworI2lmZGVmIFZFUkJPU0VfSU5JVF9BUk0KKwlwcmludGYoInBtYXAgIik7CisjZW5k
 aWYKKwlwbWFwX2Jvb3RzdHJhcCgocGRfZW50cnlfdCAqKWtlcm5lbF9sMXB0LnB2X3ZhLCBLRVJO
 RUxfVk1fQkFTRSwKKwkgICAgS0VSTkVMX1ZNX0JBU0UgKyBLRVJORUxfVk1fU0laRSk7CisKKyNp
 ZmRlZiBWRVJCT1NFX0lOSVRfQVJNCisJcHJpbnRmKCJkb25lLlxuIik7CisjZW5kaWYKKworI2lm
 ZGVmIElQS0RCCisJLyogSW5pdGlhbGlzZSBpcGtkYiAqLworCWlwa2RiX2luaXQoKTsKKwlpZiAo
 Ym9vdGhvd3RvICYgUkJfS0RCKQorCQlpcGtkYl9jb25uZWN0KDApOworI2VuZGlmCisKKyNpZmRl
 ZiBLR0RCCisJaWYgKGJvb3Rob3d0byAmIFJCX0tEQikgeworCQlrZ2RiX2RlYnVnX2luaXQgPSAx
 OworCQlrZ2RiX2Nvbm5lY3QoMSk7CisJfQorI2VuZGlmCisKKyNpZmRlZiBEREIKKwlkYl9tYWNo
 aW5lX2luaXQoKTsKKworCS8qIEZpcm13YXJlIGRvZXNuJ3QgbG9hZCBzeW1ib2xzLiAqLworCWRk
 Yl9pbml0KDAsIE5VTEwsIE5VTEwpOworCisJaWYgKGJvb3Rob3d0byAmIFJCX0tEQikKKwkJRGVi
 dWdnZXIoKTsKKyNlbmRpZgorCisJLyogV2UgcmV0dXJuIHRoZSBuZXcgc3RhY2sgcG9pbnRlciBh
 ZGRyZXNzICovCisJcmV0dXJuKGtlcm5lbHN0YWNrLnB2X3ZhICsgVVNQQUNFX1NWQ19TVEFDS19U
 T1ApOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9jbG9ja3Modm9pZCkKK3sKKyNkZWZpbmUgT01B
 UF9NUFVfQkFTRQkweEZGRkVDRTAwCisjZGVmaW5lIEFSTV9DS0NUTAkJMHgwMAorI2RlZmluZSAg
 QVJNX1RJTVhPCQkJKDEgPDwgMTIpCisjZGVmaW5lIEFSTV9JRExFQ1QxCQkweDA0CisjZGVmaW5l
 ICBJRExUSU1fQVJNCQkJKDEgPDwgOSkKKyNkZWZpbmUgQVJNX0lETEVDVDIJCTB4MDgKKyNkZWZp
 bmUgIEVOX1RJTUNLCQkJKDEgPDwgNykKKworI2RlZmluZSBPTUFQX1VMUERfQkFTRQkJMHhGRkZF
 MDgwMAorI2RlZmluZSBDQU1fQ0xLX0NUUkwJCTB4MDA3QworI2RlZmluZSBTWVNURU1fQ0xLX0VO
 CQkoMSA8PCAyKQorCisjZGVmaW5lIFNPRlRfUkVRX1JFRwkJCTB4MzQKKyNkZWZpbmUgU09GVF9V
 QVJUM19EUExMX1JFUQkJMTEKKyNkZWZpbmUgU09GVF9VQVJUMl9EUExMX1JFUQkJMTAKKyNkZWZp
 bmUgU09GVF9VQVJUMV9EUExMX1JFUQkJOQorCisjZGVmaW5lIFNPRlRfRElTQUJMRV9SRVFfUkVH
 CTB4NjgKKyNkZWZpbmUgRElTX1VBUlQzX0RQTExfUkVRCQk5CisjZGVmaW5lIERJU19VQVJUMl9E
 UExMX1JFUQkJOAorI2RlZmluZSBESVNfVUFSVDFfRFBMTF9SRVEJCTcKKworCS8qIEZvciBub3cs
 IGp1c3QgaGFjayB1cCB0aGUgY2xvY2tpbmcgYXMgbmVlZGVkIHRvIGdldCB0aGluZ3Mgd29ya2lu
 Zy4gKi8KKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKE9NQVBfTVBVX0JBU0UgKyBBUk1fSURMRUNU
 MikgfD0gRU5fVElNQ0s7CisJKih2b2xhdGlsZSB1aW50MzJfdCAqKShPTUFQX01QVV9CQVNFICsg
 QVJNX0lETEVDVDEpICY9IH5JRExUSU1fQVJNOworCSoodm9sYXRpbGUgdWludDMyX3QgKikoT01B
 UF9NUFVfQkFTRSArIEFSTV9DS0NUTCkgJj0gfkFSTV9USU1YTzsKKworCisJLyoKKwkgKiBOb3Rl
 OiBUaGUgU1lTVEVNX0NMS19FTiBiaXQgb2YgdGhlIENBTV9DTEtfQ1RSTCByZWdpc3RlciBtdXN0
 IGJlIHNldAorCSAqIHRvIDEsIGZvciBHUElPIGludGVycnVwdCBnZW5lcmF0aW9uIHRvIHdvcmsu
 CisJICovCisJKih2b2xhdGlsZSB1aW50MzJfdCAqKShPTUFQX1VMUERfQkFTRSArIENBTV9DTEtf
 Q1RSTCkgfD0gU1lTVEVNX0NMS19FTjsKKworCS8qCisJICogSXNzdWUgdGhlIHNvZnR3YXJlIHJl
 cXVlc3QgZm9yIHRoZSBVQVJUIGNsb2Nrcy4gIFRoZSBib290bG9hZGVyIHByb2JhYmx5CisJICog
 YWxyZWFkeSBkaWQgVUFSVDEgYnV0IG1pZ2h0IG5vdCBoYXZlIGRvbmUgVUFSVDMuCisJICovCisK
 KwkqKHZvbGF0aWxlIHVpbnQxNl90ICopKE9NQVBfVUxQRF9CQVNFICsgU09GVF9SRVFfUkVHKSB8
 PQorCQkoMSA8PCBTT0ZUX1VBUlQxX0RQTExfUkVRKSB8ICgxIDw8IFNPRlRfVUFSVDNfRFBMTF9S
 RVEpOworCSoodm9sYXRpbGUgdWludDE2X3QgKikoT01BUF9VTFBEX0JBU0UgKyBTT0ZUX0RJU0FC
 TEVfUkVRX1JFRykgJj0KKwkJfigoMSA8PCBESVNfVUFSVDFfRFBMTF9SRVEpIHwgKDEgPDwgRElT
 X1VBUlQzX0RQTExfUkVRKSk7CisKK30KKworI2lmbmRlZiBDT05TQUREUgorI2Vycm9yIFNwZWNp
 ZnkgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnNvbGUgVUFSVCB3aXRoIHRoZSBDT05TQUREUiBvcHRp
 b24uCisjZW5kaWYKKyNpZm5kZWYgQ09OU1BFRUQKKyNkZWZpbmUgQ09OU1BFRUQgMTE1MjAwCisj
 ZW5kaWYKKyNpZm5kZWYgQ09OTU9ERQorI2RlZmluZSBDT05NT0RFICgoVFRZREVGX0NGTEFHICYg
 fihDU0laRSB8IENTVE9QQiB8IFBBUkVOQikpIHwgQ1M4KSAvKiA4TjEgKi8KKyNlbmRpZgorCitz
 dGF0aWMgY29uc3QgdmFkZHJfdCBjb25zYWRkciA9IENPTlNBRERSOworc3RhdGljIGNvbnN0IGlu
 dCBjb25zcGVlZCA9IENPTlNQRUVEOworc3RhdGljIGNvbnN0IGludCBjb25tb2RlID0gQ09OTU9E
 RTsKKwordm9pZAorY29uc2luaXQodm9pZCkKK3sKKwlzdGF0aWMgaW50IGNvbnNpbml0X2NhbGxl
 ZCA9IDA7CisKKwlpZiAoY29uc2luaXRfY2FsbGVkICE9IDApCisJCXJldHVybjsKKworCWNvbnNp
 bml0X2NhbGxlZCA9IDE7CisKKwlidXNfc3BhY2VfaGFuZGxlX3QgYmg7CisJaWYgKGJ1c19zcGFj
 ZV9tYXAoJm9tYXBfYTR4X2JzX3RhZywgY29uc2FkZHIsIE9NQVBfQ09NX1NJWkUsIDAsICZiaCkp
 CisJCXBhbmljKCJTZXJpYWwgY29uc29sZSBjYW4gbm90IGJlIG1hcHBlZC4iKTsKKworCS8qCisJ
 ICogVGhlIFRSTSBzYXlzIHRoZSBtb2RlIHNob3VsZCBiZSBkaXNhYmxlZCB3aGlsZSBkbGwgYW5k
 IGRsaCBhcmUKKwkgKiBiZWluZyBjaGFuZ2VkIHNvIHdlIGRpc2FibGUgYmVmb3JlIGF0dGFjaGlu
 ZywgdGhlbiBlbmFibGUuCisJICovCisJYnVzX3NwYWNlX3dyaXRlXzEoJm9tYXBfYTR4X2JzX3Rh
 ZywgYmgsCisJCQkgIE9NQVBfQ09NX01EUjEsIE9NQVBfQ09NX01EUjFfTU9ERV9ESVNBQkxFKTsK
 KworCWlmIChjb21jbmF0dGFjaCgmb21hcF9hNHhfYnNfdGFnLCBjb25zYWRkciwgY29uc3BlZWQs
 CisJCQlPTUFQX0NPTV9GUkVRLCBDT01fVFlQRV9OT1JNQUwsIGNvbm1vZGUpKQorCQlwYW5pYygi
 U2VyaWFsIGNvbnNvbGUgY2FuIG5vdCBiZSBpbml0aWFsaXplZC4iKTsKKworCWJ1c19zcGFjZV93
 cml0ZV8xKCZvbWFwX2E0eF9ic190YWcsIGJoLAorCQkJICBPTUFQX0NPTV9NRFIxLCBPTUFQX0NP
 TV9NRFIxX01PREVfVUFSVF8xNlgpOworCisJYnVzX3NwYWNlX3VubWFwKCZvbWFwX2E0eF9ic190
 YWcsIGJoLCBPTUFQX0NPTV9TSVpFKTsKK30KKworI2lmZGVmIEtHREIKKyNpZm5kZWYgS0dEQl9E
 RVZBRERSCisjZXJyb3IgU3BlY2lmeSB0aGUgYWRkcmVzcyBvZiB0aGUga2dkYiBVQVJUIHdpdGgg
 dGhlIEtHREJfREVWQUREUiBvcHRpb24uCisjZW5kaWYKKyNpZm5kZWYgS0dEQl9ERVZSQVRFCisj
 ZGVmaW5lIEtHREJfREVWUkFURSAxMTUyMDAKKyNlbmRpZgorCisjaWZuZGVmIEtHREJfREVWTU9E
 RQorI2RlZmluZSBLR0RCX0RFVk1PREUgKChUVFlERUZfQ0ZMQUcgJiB+KENTSVpFIHwgQ1NUT1BC
 IHwgUEFSRU5CKSkgfCBDUzgpIC8qIDhOMSAqLworI2VuZGlmCitzdGF0aWMgY29uc3QgdmFkZHJf
 dCBjb21rZ2RiYWRkciA9IEtHREJfREVWQUREUjsKK3N0YXRpYyBjb25zdCBpbnQgY29ta2dkYnNw
 ZWVkID0gS0dEQl9ERVZSQVRFOworc3RhdGljIGNvbnN0IGludCBjb21rZ2RibW9kZSA9IEtHREJf
 REVWTU9ERTsKKwordm9pZAorc3RhdGljIGtnZGJfcG9ydF9pbml0KHZvaWQpCit7CisJc3RhdGlj
 IGludCBrZ2Ric2luaXRfY2FsbGVkID0gMDsKKworCWlmIChrZ2Ric2luaXRfY2FsbGVkICE9IDAp
 CisJCXJldHVybjsKKworCWtnZGJzaW5pdF9jYWxsZWQgPSAxOworCisJYnVzX3NwYWNlX2hhbmRs
 ZV90IGJoOworCWlmIChidXNfc3BhY2VfbWFwKCZvbWFwX2E0eF9ic190YWcsIGNvbWtnZGJhZGRy
 LCBPTUFQX0NPTV9TSVpFLCAwLCAmYmgpKQorCQlwYW5pYygia2dkYiBwb3J0IGNhbiBub3QgYmUg
 bWFwcGVkLiIpOworCisJLyoKKwkgKiBUaGUgVFJNIHNheXMgdGhlIG1vZGUgc2hvdWxkIGJlIGRp
 c2FibGVkIHdoaWxlIGRsbCBhbmQgZGxoIGFyZQorCSAqIGJlaW5nIGNoYW5nZWQgc28gd2UgZGlz
 YWJsZSBiZWZvcmUgYXR0YWNoaW5nLCB0aGVuIGVuYWJsZS4KKwkgKi8KKwlidXNfc3BhY2Vfd3Jp
 dGVfMSgmb21hcF9hNHhfYnNfdGFnLCBiaCwKKwkJCSAgT01BUF9DT01fTURSMSwgT01BUF9DT01f
 TURSMV9NT0RFX0RJU0FCTEUpOworCisJaWYgKGNvbV9rZ2RiX2F0dGFjaCgmb21hcF9hNHhfYnNf
 dGFnLCBjb21rZ2RiYWRkciwgY29ta2dkYnNwZWVkLAorCQkJT01BUF9DT01fRlJFUSwgQ09NX1RZ
 UEVfTk9STUFMLCBjb21rZ2RibW9kZSkpCisJCXBhbmljKCJLR0RCIHVhcnQgY2FuIG5vdCBiZSBp
 bml0aWFsaXplZC4iKTsKKworCWJ1c19zcGFjZV93cml0ZV8xKCZvbWFwX2E0eF9ic190YWcsIGJo
 LAorCQkJICBPTUFQX0NPTV9NRFIxLCBPTUFQX0NPTV9NRFIxX01PREVfVUFSVF8xNlgpOworCisJ
 YnVzX3NwYWNlX3VubWFwKCZvbWFwX2E0eF9ic190YWcsIGJoLCBPTUFQX0NPTV9TSVpFKTsKK30K
 KyNlbmRpZgorCitzdGF0aWMgdm9pZAorc2V0dXBfcmVhbF9wYWdlX3RhYmxlcyh2b2lkKQorewor
 CS8qCisJICogV2UgbmVlZCB0byBhbGxvY2F0ZSBzb21lIGZpeGVkIHBhZ2UgdGFibGVzIHRvIGdl
 dCB0aGUga2VybmVsIGdvaW5nLgorCSAqCisJICogV2UgYXJlIGdvaW5nIHRvIGFsbG9jYXRlIG91
 ciBib290c3RyYXAgcGFnZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mCisJICogdGhlIGZyZWUgc3Bh
 Y2UgdGhhdCB3ZSBqdXN0IGNhbGN1bGF0ZWQuICBXZSBhbGxvY2F0ZSBvbmUgcGFnZQorCSAqIGRp
 cmVjdG9yeSBhbmQgYSBudW1iZXIgb2YgcGFnZSB0YWJsZXMgYW5kIHN0b3JlIHRoZSBwaHlzaWNh
 bAorCSAqIGFkZHJlc3NlcyBpbiB0aGUga2VybmVsX3B0X3RhYmxlIGFycmF5LgorCSAqCisJICog
 VGhlIGtlcm5lbCBwYWdlIGRpcmVjdG9yeSBtdXN0IGJlIG9uIGEgMTZLIGJvdW5kYXJ5LiAgVGhl
 IHBhZ2UKKwkgKiB0YWJsZXMgbXVzdCBiZSBvbiA0SyBib3VuZGFyaWVzLiAgV2hhdCB3ZSBkbyBp
 cyBhbGxvY2F0ZSB0aGUKKwkgKiBwYWdlIGRpcmVjdG9yeSBvbiB0aGUgZmlyc3QgMTZLIGJvdW5k
 YXJ5IHRoYXQgd2UgZW5jb3VudGVyLCBhbmQKKwkgKiB0aGUgcGFnZSB0YWJsZXMgb24gNEsgYm91
 bmRhcmllcyBvdGhlcndpc2UuICBTaW5jZSB3ZSBhbGxvY2F0ZQorCSAqIGF0IGxlYXN0IDMgTDIg
 cGFnZSB0YWJsZXMsIHdlIGFyZSBndWFyYW50ZWVkIHRvIGVuY291bnRlciBhdAorCSAqIGxlYXN0
 IG9uZSAxNksgYWxpZ25lZCByZWdpb24uCisJICovCisKKyNpZmRlZiBWRVJCT1NFX0lOSVRfQVJN
 CisJcHJpbnRmKCJBbGxvY2F0aW5nIHBhZ2UgdGFibGVzXG4iKTsKKyNlbmRpZgorCisJLyoKKwkg
 KiBEZWZpbmUgYSBtYWNybyB0byBzaW1wbGlmeSBtZW1vcnkgYWxsb2NhdGlvbi4gIEFzIHdlIGFs
 bG9jYXRlIHRoZQorCSAqIG1lbW9yeSwgbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3Qgd2FsayBvdmVy
 IG91ciB0ZW1wb3JhcnkgZmlyc3QgbGV2ZWwKKwkgKiB0cmFuc2xhdGlvbiB0YWJsZS4KKwkgKi8K
 KyNkZWZpbmUgdmFsbG9jX3BhZ2VzKHZhciwgbnApCQkJCQkJXAorCSh2YXIpLnB2X3BhID0gcGh5
 c2ljYWxfZnJlZXN0YXJ0OwkJCQlcCisJcGh5c2ljYWxfZnJlZXN0YXJ0ICs9ICgobnApICogUEFH
 RV9TSVpFKTsJCQlcCisJaWYgKHBoeXNpY2FsX2ZyZWVzdGFydCA+IChwaHlzaWNhbF9mcmVlZW5k
 IC0gTDFfVEFCTEVfU0laRSkpCVwKKwkJcGFuaWMoImluaXRhcm06IG91dCBvZiBtZW1vcnkiKTsJ
 CQlcCisJZnJlZV9wYWdlcyAtPSAobnApOwkJCQkJCVwKKwkodmFyKS5wdl92YSA9IEtFUk5fUEhZ
 U1RPVigodmFyKS5wdl9wYSk7CQkJXAorCW1lbXNldCgoY2hhciAqKSh2YXIpLnB2X3ZhLCAwLCAo
 KG5wKSAqIFBBR0VfU0laRSkpOworCisJaW50IGxvb3AsIHB0X2luZGV4OworCisJcHRfaW5kZXgg
 PSAwOworCWtlcm5lbF9sMXB0LnB2X3BhID0gMDsKKwlrZXJuZWxfbDFwdC5wdl92YSA9IDA7CisJ
 Zm9yIChsb29wID0gMDsgbG9vcCA8PSBOVU1fS0VSTkVMX1BUUzsgKytsb29wKSB7CisJCS8qIEFy
 ZSB3ZSAxNktCIGFsaWduZWQgZm9yIGFuIEwxID8gKi8KKwkJaWYgKChwaHlzaWNhbF9mcmVlc3Rh
 cnQgJiAoTDFfVEFCTEVfU0laRSAtIDEpKSA9PSAwCisJCSAgICAmJiBrZXJuZWxfbDFwdC5wdl9w
 YSA9PSAwKSB7CisJCQl2YWxsb2NfcGFnZXMoa2VybmVsX2wxcHQsIEwxX1RBQkxFX1NJWkUgLyBQ
 QUdFX1NJWkUpOworCQl9IGVsc2UgeworCQkJdmFsbG9jX3BhZ2VzKGtlcm5lbF9wdF90YWJsZVtw
 dF9pbmRleF0sCisJCQkgICAgTDJfVEFCTEVfU0laRSAvIFBBR0VfU0laRSk7CisJCQkrK3B0X2lu
 ZGV4OworCQl9CisJfQorCisJLyogVGhpcyBzaG91bGQgbmV2ZXIgYmUgYWJsZSB0byBoYXBwZW4g
 YnV0IGJldHRlciBjb25maXJtIHRoYXQuICovCisJaWYgKCFrZXJuZWxfbDFwdC5wdl9wYSB8fCAo
 a2VybmVsX2wxcHQucHZfcGEgJiAoTDFfVEFCTEVfU0laRS0xKSkgIT0gMCkKKwkJcGFuaWMoImlu
 aXRhcm06IEZhaWxlZCB0byBhbGlnbiB0aGUga2VybmVsIHBhZ2UgZGlyZWN0b3J5Iik7CisKKwkv
 KgorCSAqIEFsbG9jYXRlIGEgcGFnZSBmb3IgdGhlIHN5c3RlbSBwYWdlIG1hcHBlZCB0byBWMHgw
 MDAwMDAwMAorCSAqIFRoaXMgcGFnZSB3aWxsIGp1c3QgY29udGFpbiB0aGUgc3lzdGVtIHZlY3Rv
 cnMgYW5kIGNhbiBiZQorCSAqIHNoYXJlZCBieSBhbGwgcHJvY2Vzc2VzLgorCSAqLworCXZhbGxv
 Y19wYWdlcyhzeXN0ZW1wYWdlLCAxKTsKKwlzeXN0ZW1wYWdlLnB2X3ZhID0gMHgwMDAwMDAwMDsK
 KworCS8qIEFsbG9jYXRlIHN0YWNrcyBmb3IgYWxsIG1vZGVzICovCisJdmFsbG9jX3BhZ2VzKGly
 cXN0YWNrLCBJUlFfU1RBQ0tfU0laRSk7CisJdmFsbG9jX3BhZ2VzKGFidHN0YWNrLCBBQlRfU1RB
 Q0tfU0laRSk7CisJdmFsbG9jX3BhZ2VzKHVuZHN0YWNrLCBVTkRfU1RBQ0tfU0laRSk7CisJdmFs
 bG9jX3BhZ2VzKGtlcm5lbHN0YWNrLCBVUEFHRVMpOworCisJLyogQWxsb2NhdGUgdGhlIG1lc3Nh
 Z2UgYnVmZmVyLiAqLworCXB2X2FkZHJfdCBtc2didWY7CisJaW50IG1zZ2J1Zl9wZ3MgPSByb3Vu
 ZF9wYWdlKE1TR0JVRlNJWkUpIC8gUEFHRV9TSVpFOworCXZhbGxvY19wYWdlcyhtc2didWYsIG1z
 Z2J1Zl9wZ3MpOworCW1zZ2J1ZnBoeXMgPSBtc2didWYucHZfcGE7CisKKwkvKgorCSAqIE9rIHdl
 IGhhdmUgYWxsb2NhdGVkIHBoeXNpY2FsIHBhZ2VzIGZvciB0aGUgcHJpbWFyeSBrZXJuZWwKKwkg
 KiBwYWdlIHRhYmxlcworCSAqLworCisjaWZkZWYgVkVSQk9TRV9JTklUX0FSTQorCXByaW50Zigi
 Q3JlYXRpbmcgTDEgcGFnZSB0YWJsZSBhdCAweCUwOGx4XG4iLCBrZXJuZWxfbDFwdC5wdl9wYSk7
 CisjZW5kaWYKKworCS8qCisJICogTm93IHdlIHN0YXJ0IGNvbnN0cnVjdGlvbiBvZiB0aGUgTDEg
 cGFnZSB0YWJsZQorCSAqIFdlIHN0YXJ0IGJ5IG1hcHBpbmcgdGhlIEwyIHBhZ2UgdGFibGVzIGlu
 dG8gdGhlIEwxLgorCSAqIFRoaXMgbWVhbnMgdGhhdCB3ZSBjYW4gcmVwbGFjZSBMMSBtYXBwaW5n
 cyBsYXRlciBvbiBpZiBuZWNlc3NhcnkKKwkgKi8KKwl2YWRkcl90IGwxX3ZhID0ga2VybmVsX2wx
 cHQucHZfdmE7CisJcGFkZHJfdCBsMV9wYSA9IGtlcm5lbF9sMXB0LnB2X3BhOworCisJLyogTWFw
 IHRoZSBMMiBwYWdlcyB0YWJsZXMgaW4gdGhlIEwxIHBhZ2UgdGFibGUgKi8KKwlwbWFwX2xpbmtf
 bDJwdChsMV92YSwgMHgwMDAwMDAwMCwgJmtlcm5lbF9wdF90YWJsZVtLRVJORUxfUFRfU1lTXSk7
 CisJZm9yIChsb29wID0gMDsgbG9vcCA8IEtFUk5FTF9QVF9LRVJORUxfTlVNOyBsb29wKyspCisJ
 CXBtYXBfbGlua19sMnB0KGwxX3ZhLCBLRVJORUxfQkFTRSArIGxvb3AgKiAweDAwNDAwMDAwLAor
 CQkJICAgICAgICZrZXJuZWxfcHRfdGFibGVbS0VSTkVMX1BUX0tFUk5FTCArIGxvb3BdKTsKKwlm
 b3IgKGxvb3AgPSAwOyBsb29wIDwgS0VSTkVMX1BUX1ZNREFUQV9OVU07IGxvb3ArKykKKwkJcG1h
 cF9saW5rX2wycHQobDFfdmEsIEtFUk5FTF9WTV9CQVNFICsgbG9vcCAqIDB4MDA0MDAwMDAsCisJ
 CQkgICAgICAgJmtlcm5lbF9wdF90YWJsZVtLRVJORUxfUFRfVk1EQVRBICsgbG9vcF0pOworCisJ
 LyogdXBkYXRlIHRoZSB0b3Agb2YgdGhlIGtlcm5lbCBWTSAqLworCXBtYXBfY3VybWF4a3ZhZGRy
 ID0KKwkgICAgS0VSTkVMX1ZNX0JBU0UgKyAoS0VSTkVMX1BUX1ZNREFUQV9OVU0gKiAweDAwNDAw
 MDAwKTsKKworI2lmZGVmIFZFUkJPU0VfSU5JVF9BUk0KKwlwcmludGYoIk1hcHBpbmcga2VybmVs
 XG4iKTsKKyNlbmRpZgorCisJLyogTm93IHdlIGZpbGwgaW4gdGhlIEwyIHBhZ2V0YWJsZSBmb3Ig
 dGhlIGtlcm5lbCBzdGF0aWMgY29kZS9kYXRhICovCisJc2l6ZV90IHRleHRzaXplID0gcm91bmRf
 cGFnZSgodWludHB0cl90KSBldGV4dCAtIEtFUk5FTF9CQVNFKTsKKwlzaXplX3QgdG90YWxzaXpl
 ID0gcm91bmRfcGFnZSgodWludHB0cl90KSBfZW5kIC0gS0VSTkVMX0JBU0UpOworCXVfaW50IG9m
 ZnNldCA9IDA7CS8qIG9mZnNldCBvZiBrZXJuZWwgaW4gUkFNICovCisKKwkvKiBNYXAgdGV4dCBz
 ZWN0aW9uIHJlYWQtb25seS4gKi8KKwlvZmZzZXQgKz0gcG1hcF9tYXBfY2h1bmsobDFfdmEsIEtF
 Uk5FTF9CQVNFICsgb2Zmc2V0LAorCQkJCSBwaHlzaWNhbF9zdGFydCArIG9mZnNldCwgdGV4dHNp
 emUsCisJCQkJIFZNX1BST1RfUkVBRCwgUFRFX0NBQ0hFKTsKKwkvKiBNYXAgZGF0YSBhbmQgYnNz
 IHNlY3Rpb25zIHJlYWQtd3JpdGUuICovCisJb2Zmc2V0ICs9IHBtYXBfbWFwX2NodW5rKGwxX3Zh
 LCBLRVJORUxfQkFTRSArIG9mZnNldCwKKwkJCQkgcGh5c2ljYWxfc3RhcnQgKyBvZmZzZXQsIHRv
 dGFsc2l6ZSAtIHRleHRzaXplLAorCQkJCSBWTV9QUk9UX1JFQUR8Vk1fUFJPVF9XUklURSwgUFRF
 X0NBQ0hFKTsKKworI2lmZGVmIFZFUkJPU0VfSU5JVF9BUk0KKwlwcmludGYoIkNvbnN0cnVjdGlu
 ZyBMMiBwYWdlIHRhYmxlc1xuIik7CisjZW5kaWYKKworCS8qIE1hcCB0aGUgc3RhY2sgcGFnZXMg
 Ki8KKwlwbWFwX21hcF9jaHVuayhsMV92YSwgaXJxc3RhY2sucHZfdmEsIGlycXN0YWNrLnB2X3Bh
 LAorCSAgICBJUlFfU1RBQ0tfU0laRSAqIFBBR0VfU0laRSwgVk1fUFJPVF9SRUFEfFZNX1BST1Rf
 V1JJVEUsIFBURV9DQUNIRSk7CisJcG1hcF9tYXBfY2h1bmsobDFfdmEsIGFidHN0YWNrLnB2X3Zh
 LCBhYnRzdGFjay5wdl9wYSwKKwkgICAgQUJUX1NUQUNLX1NJWkUgKiBQQUdFX1NJWkUsIFZNX1BS
 T1RfUkVBRHxWTV9QUk9UX1dSSVRFLCBQVEVfQ0FDSEUpOworCXBtYXBfbWFwX2NodW5rKGwxX3Zh
 LCB1bmRzdGFjay5wdl92YSwgdW5kc3RhY2sucHZfcGEsCisJICAgIFVORF9TVEFDS19TSVpFICog
 UEFHRV9TSVpFLCBWTV9QUk9UX1JFQUR8Vk1fUFJPVF9XUklURSwgUFRFX0NBQ0hFKTsKKwlwbWFw
 X21hcF9jaHVuayhsMV92YSwga2VybmVsc3RhY2sucHZfdmEsIGtlcm5lbHN0YWNrLnB2X3BhLAor
 CSAgICBVUEFHRVMgKiBQQUdFX1NJWkUsIFZNX1BST1RfUkVBRCB8IFZNX1BST1RfV1JJVEUsIFBU
 RV9DQUNIRSk7CisKKwlwbWFwX21hcF9jaHVuayhsMV92YSwga2VybmVsX2wxcHQucHZfdmEsIGtl
 cm5lbF9sMXB0LnB2X3BhLAorCSAgICBMMV9UQUJMRV9TSVpFLCBWTV9QUk9UX1JFQUQgfCBWTV9Q
 Uk9UX1dSSVRFLCBQVEVfUEFHRVRBQkxFKTsKKworCWZvciAobG9vcCA9IDA7IGxvb3AgPCBOVU1f
 S0VSTkVMX1BUUzsgKytsb29wKSB7CisJCXBtYXBfbWFwX2NodW5rKGwxX3ZhLCBrZXJuZWxfcHRf
 dGFibGVbbG9vcF0ucHZfdmEsCisJCQkgICAgICAga2VybmVsX3B0X3RhYmxlW2xvb3BdLnB2X3Bh
 LCBMMl9UQUJMRV9TSVpFLAorCQkJICAgICAgIFZNX1BST1RfUkVBRHxWTV9QUk9UX1dSSVRFLCBQ
 VEVfUEFHRVRBQkxFKTsKKwl9CisKKwkvKiBNYXAgdGhlIHZlY3RvciBwYWdlLiAqLworCXBtYXBf
 bWFwX2VudHJ5KGwxX3ZhLCBBUk1fVkVDVE9SU19MT1csIHN5c3RlbXBhZ2UucHZfcGEsCisJCSAg
 ICAgICBWTV9QUk9UX1JFQUR8Vk1fUFJPVF9XUklURSwgUFRFX0NBQ0hFKTsKKworCS8qCisJICog
 TWFwIGludGVncmF0ZWQgcGVyaXBoZXJhbHMgYXQgc2FtZSBhZGRyZXNzIGluIGZpcnN0IGxldmVs
 IHBhZ2UKKwkgKiB0YWJsZSBzbyB0aGF0IHdlIGNhbiBjb250aW51ZSB0byB1c2UgY29uc29sZS4K
 KwkgKi8KKwlwbWFwX2Rldm1hcF9ib290c3RyYXAobDFfdmEsIGRldm1hcCk7CisKKworI2lmZGVm
 IFZFUkJPU0VfSU5JVF9BUk0KKwkvKiBUZWxsIHRoZSB1c2VyIGFib3V0IHdoZXJlIGFsbCB0aGUg
 Yml0cyBhbmQgcGllY2VzIGxpdmUuICovCisJcHJpbnRmKCIlMjJzICAgICAgIFBoeXNpY2FsICAg
 ICAgICAgICAgICBWaXJ0dWFsICAgICAgICBOdW1cbiIsICIgIik7CisJcHJpbnRmKCIlMjJzIFN0
 YXJ0aW5nICAgIEVuZGluZyAgICBTdGFydGluZyAgICBFbmRpbmcgICBQYWdlc1xuIiwgIiAiKTsK
 KworCXN0YXRpYyBjb25zdCBjaGFyIG1lbV9mbXRbXSA9CisJICAgICIlMjBzOiAweCUwOGx4IDB4
 JTA4bHggMHglMDhseCAweCUwOGx4ICVkXG4iOworCXN0YXRpYyBjb25zdCBjaGFyIG1lbV9mbXRf
 bm92W10gPQorCSAgICAiJTIwczogMHglMDhseCAweCUwOGx4ICAgICAgICAgICAgICAgICAgICAg
 ICAlZFxuIjsKKworCXByaW50ZihtZW1fZm10LCAiU0RSQU0iLCBwaHlzaWNhbF9zdGFydCwgcGh5
 c2ljYWxfZW5kLTEsCisJICAgIEtFUk5fUEhZU1RPVihwaHlzaWNhbF9zdGFydCksIEtFUk5fUEhZ
 U1RPVihwaHlzaWNhbF9lbmQtMSksCisJICAgIHBoeXNtZW0pOworCXByaW50ZihtZW1fZm10LCAi
 dGV4dCBzZWN0aW9uIiwKKwkgICAgICAgS0VSTl9WVE9QSFlTKEtFUk5FTF9CQVNFKSwgS0VSTl9W
 VE9QSFlTKGV0ZXh0LTEpLAorCSAgICAgICAodmFkZHJfdClLRVJORUxfQkFTRSwgKHZhZGRyX3Qp
 ZXRleHQtMSwKKwkgICAgICAgKGludCkodGV4dHNpemUgLyBQQUdFX1NJWkUpKTsKKwlwcmludGYo
 bWVtX2ZtdCwgImRhdGEgc2VjdGlvbiIsCisJICAgICAgIEtFUk5fVlRPUEhZUyhfX2RhdGFfc3Rh
 cnQpLCBLRVJOX1ZUT1BIWVMoX2VkYXRhKSwKKwkgICAgICAgKHZhZGRyX3QpX19kYXRhX3N0YXJ0
 LCAodmFkZHJfdClfZWRhdGEsCisJICAgICAgIChpbnQpKChyb3VuZF9wYWdlKCh2YWRkcl90KV9l
 ZGF0YSkKKwkJICAgICAgLSB0cnVuY19wYWdlKCh2YWRkcl90KV9fZGF0YV9zdGFydCkpIC8gUEFH
 RV9TSVpFKSk7CisJcHJpbnRmKG1lbV9mbXQsICJic3Mgc2VjdGlvbiIsCisJICAgICAgIEtFUk5f
 VlRPUEhZUyhfX2Jzc19zdGFydCksIEtFUk5fVlRPUEhZUyhfX2Jzc19lbmRfXyksCisJICAgICAg
 ICh2YWRkcl90KV9fYnNzX3N0YXJ0LCAodmFkZHJfdClfX2Jzc19lbmRfXywKKwkgICAgICAgKGlu
 dCkoKHJvdW5kX3BhZ2UoKHZhZGRyX3QpX19ic3NfZW5kX18pCisJCSAgICAgIC0gdHJ1bmNfcGFn
 ZSgodmFkZHJfdClfX2Jzc19zdGFydCkpIC8gUEFHRV9TSVpFKSk7CisJcHJpbnRmKG1lbV9mbXQs
 ICJMMSBwYWdlIGRpcmVjdG9yeSIsCisJICAgIGtlcm5lbF9sMXB0LnB2X3BhLCBrZXJuZWxfbDFw
 dC5wdl9wYSArIEwxX1RBQkxFX1NJWkUgLSAxLAorCSAgICBrZXJuZWxfbDFwdC5wdl92YSwga2Vy
 bmVsX2wxcHQucHZfdmEgKyBMMV9UQUJMRV9TSVpFIC0gMSwKKwkgICAgTDFfVEFCTEVfU0laRSAv
 IFBBR0VfU0laRSk7CisJcHJpbnRmKG1lbV9mbXQsICJFeGNlcHRpb24gVmVjdG9ycyIsCisJICAg
 IHN5c3RlbXBhZ2UucHZfcGEsIHN5c3RlbXBhZ2UucHZfcGEgKyBQQUdFX1NJWkUgLSAxLAorCSAg
 ICAodmFkZHJfdClBUk1fVkVDVE9SU19MT1csICh2YWRkcl90KUFSTV9WRUNUT1JTX0xPVyArIFBB
 R0VfU0laRSAtIDEsCisJICAgIDEpOworCXByaW50ZihtZW1fZm10LCAiSVJRIHN0YWNrIiwKKwkg
 ICAgaXJxc3RhY2sucHZfcGEsIGlycXN0YWNrLnB2X3BhICsgKElSUV9TVEFDS19TSVpFICogUEFH
 RV9TSVpFKSAtIDEsCisJICAgIGlycXN0YWNrLnB2X3ZhLCBpcnFzdGFjay5wdl92YSArIChJUlFf
 U1RBQ0tfU0laRSAqIFBBR0VfU0laRSkgLSAxLAorCSAgICBJUlFfU1RBQ0tfU0laRSk7CisJcHJp
 bnRmKG1lbV9mbXQsICJBQlQgc3RhY2siLAorCSAgICBhYnRzdGFjay5wdl9wYSwgYWJ0c3RhY2su
 cHZfcGEgKyAoQUJUX1NUQUNLX1NJWkUgKiBQQUdFX1NJWkUpIC0gMSwKKwkgICAgYWJ0c3RhY2su
 cHZfdmEsIGFidHN0YWNrLnB2X3ZhICsgKEFCVF9TVEFDS19TSVpFICogUEFHRV9TSVpFKSAtIDEs
 CisJICAgIEFCVF9TVEFDS19TSVpFKTsKKwlwcmludGYobWVtX2ZtdCwgIlVORCBzdGFjayIsCisJ
 ICAgIHVuZHN0YWNrLnB2X3BhLCB1bmRzdGFjay5wdl9wYSArIChVTkRfU1RBQ0tfU0laRSAqIFBB
 R0VfU0laRSkgLSAxLAorCSAgICB1bmRzdGFjay5wdl92YSwgdW5kc3RhY2sucHZfdmEgKyAoVU5E
 X1NUQUNLX1NJWkUgKiBQQUdFX1NJWkUpIC0gMSwKKwkgICAgVU5EX1NUQUNLX1NJWkUpOworCXBy
 aW50ZihtZW1fZm10LCAiU1ZDIHN0YWNrIiwKKwkgICAga2VybmVsc3RhY2sucHZfcGEsIGtlcm5l
 bHN0YWNrLnB2X3BhICsgKFVQQUdFUyAqIFBBR0VfU0laRSkgLSAxLAorCSAgICBrZXJuZWxzdGFj
 ay5wdl92YSwga2VybmVsc3RhY2sucHZfdmEgKyAoVVBBR0VTICogUEFHRV9TSVpFKSAtIDEsCisJ
 ICAgIFVQQUdFUyk7CisJcHJpbnRmKG1lbV9mbXRfbm92LCAiTWVzc2FnZSBCdWZmZXIiLAorCSAg
 ICBtc2didWZwaHlzLCBtc2didWZwaHlzICsgbXNnYnVmX3BncyAqIFBBR0VfU0laRSAtIDEsIG1z
 Z2J1Zl9wZ3MpOworCXByaW50ZihtZW1fZm10LCAiRnJlZSBNZW1vcnkiLCBwaHlzaWNhbF9mcmVl
 c3RhcnQsIHBoeXNpY2FsX2ZyZWVlbmQtMSwKKwkgICAgS0VSTl9QSFlTVE9WKHBoeXNpY2FsX2Zy
 ZWVzdGFydCksIEtFUk5fUEhZU1RPVihwaHlzaWNhbF9mcmVlZW5kLTEpLAorCSAgICBmcmVlX3Bh
 Z2VzKTsKKyNlbmRpZgorCisJLyoKKwkgKiBOb3cgd2UgaGF2ZSB0aGUgcmVhbCBwYWdlIHRhYmxl
 cyBpbiBwbGFjZSBzbyB3ZSBjYW4gc3dpdGNoIHRvIHRoZW0uCisJICogT25jZSB0aGlzIGlzIGRv
 bmUgd2Ugd2lsbCBiZSBydW5uaW5nIHdpdGggdGhlIFJFQUwga2VybmVsIHBhZ2UKKwkgKiB0YWJs
 ZXMuCisJICovCisKKwkvKiBTd2l0Y2ggdGFibGVzICovCisjaWZkZWYgVkVSQk9TRV9JTklUX0FS
 TQorCXByaW50Zigic3dpdGNoaW5nIHRvIG5ldyBMMSBwYWdlIHRhYmxlICBAJSNseC4uLiIsIGwx
 X3BhKTsKKyNlbmRpZgorCisJY3B1X2RvbWFpbnMoKERPTUFJTl9DTElFTlQgPDwgKFBNQVBfRE9N
 QUlOX0tFUk5FTCoyKSkgfCBET01BSU5fQ0xJRU5UKTsKKwlzZXR0dGIobDFfcGEpOworCWNwdV90
 bGJfZmx1c2hJRCgpOworCWNwdV9kb21haW5zKERPTUFJTl9DTElFTlQgPDwgKFBNQVBfRE9NQUlO
 X0tFUk5FTCoyKSk7CisKK30K
 --=-=-=--