LyoqDQogKiBcZmlsZQ0KICoNCiAqIFxicmllZiBTQU0zUy1FSzIgQm9hcmQgRGVmaW5pdGlvbi4NCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDEyIEF0bWVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICoNCiAqIFxhc2ZfbGljZW5zZV9zdGFydA0KICoNCiAqIFxwYWdlIExpY2Vuc2UNCiAqDQogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KICoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKg0KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLA0KICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbg0KICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogKg0KICogMy4gVGhlIG5hbWUgb2YgQXRtZWwgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogNC4gVGhpcyBzb2Z0d2FyZSBtYXkgb25seSBiZSByZWRpc3RyaWJ1dGVkIGFuZCB1c2VkIGluIGNvbm5lY3Rpb24gd2l0aCBhbg0KICogICAgQXRtZWwgbWljcm9jb250cm9sbGVyIHByb2R1Y3QuDQogKg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBVE1FTCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEDQogKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRg0KICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVCBBUkUNCiAqIEVYUFJFU1NMWSBBTkQgU1BFQ0lGSUNBTExZIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFUTUVMIEJFIExJQUJMRSBGT1INCiAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwNCiAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTg0KICogQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAqDQogKiBcYXNmX2xpY2Vuc2Vfc3RvcA0KICoNCiAqLw0KDQojaWZuZGVmIF9TQU0zU19FSzJfSF8NCiNkZWZpbmUgX1NBTTNTX0VLMl9IXw0KDQojaW5jbHVkZSAiY29tcGlsZXIuaCINCiNpbmNsdWRlICJzeXN0ZW1fc2FtM3NkOC5oIg0KI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCINCg0KLyoNCiNkZWZpbmUgQk9BUkRfUkVWX0ENCiovDQojZGVmaW5lIEJPQVJEX1JFVl9CDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqICBccGFnZSBzYW0zc19la19vcGZyZXEgIlNBTTNTLUVLMiAtIE9wZXJhdGluZyBmcmVxdWVuY2llcyINCiAqICBUaGlzIHBhZ2UgbGlzdHMgc2V2ZXJhbCBkZWZpbml0aW9uIHJlbGF0ZWQgdG8gdGhlIGJvYXJkIG9wZXJhdGluZyBmcmVxdWVuY3kNCiAqDQogKiAgXHNlY3Rpb24gRGVmaW5pdGlvbnMNCiAqICAtIFxyZWYgQk9BUkRfRlJFUV8qDQogKiAgLSBccmVmIEJPQVJEX01DSw0KICovDQoNCi8qKiBCb2FyZCBvc2NpbGxhdG9yIHNldHRpbmdzICovDQojZGVmaW5lIEJPQVJEX0ZSRVFfU0xDS19YVEFMCQkoMzI3NjhVKQ0KI2RlZmluZSBCT0FSRF9GUkVRX1NMQ0tfQllQQVNTCQkoMzI3NjhVKQ0KI2RlZmluZSBCT0FSRF9GUkVRX01BSU5DS19YVEFMCQkoMTIwMDAwMDBVKQ0KI2RlZmluZSBCT0FSRF9GUkVRX01BSU5DS19CWVBBU1MJKDEyMDAwMDAwVSkNCg0KLyoqIE1hc3RlciBjbG9jayBmcmVxdWVuY3kgKi8NCiNkZWZpbmUgQk9BUkRfTUNLCQkJCQlDSElQX0ZSRVFfQ1BVX01BWA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoqDQogKiBccGFnZSBzYW0zc19la19ib2FyZF9pbmZvICJTQU0zUy1FSzIgLSBCb2FyZCBpbmZvcm1hdGlvbnMiDQogKiBUaGlzIHBhZ2UgbGlzdHMgc2V2ZXJhbCBkZWZpbml0aW9uIHJlbGF0ZWQgdG8gdGhlIGJvYXJkIGRlc2NyaXB0aW9uLg0KICoNCiAqIFxzZWN0aW9uIERlZmluaXRpb25zDQogKiAtIFxyZWYgQk9BUkRfTkFNRQ0KICovDQoNCi8qKiBOYW1lIG9mIHRoZSBib2FyZCAqLw0KI2RlZmluZSBCT0FSRF9OQU1FICJTQU0zUy1FSzIiDQovKiogQm9hcmQgZGVmaW5pdGlvbiAqLw0KI2RlZmluZSBzYW0zc2VrMg0KLyoqIEZhbWlseSBkZWZpbml0aW9uIChhbHJlYWR5IGRlZmluZWQpICovDQojZGVmaW5lIHNhbTNzZDgNCi8qKiBDb3JlIGRlZmluaXRpb24gKi8NCiNkZWZpbmUgY29ydGV4bTMNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtM3NfZWtfcGlvZGVmICJTQU0zUy1FSyAtIFBJTyBkZWZpbml0aW9ucyINCiAqIFRoaXMgcGFnZXMgbGlzdHMgYWxsIHRoZSBwaW8gZGVmaW5pdGlvbnMuIFRoZSBjb25zdGFudHMNCiAqIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246IFBJTl8qIGZvciBhIGNvbnN0YW50IHdoaWNoIGRlZmluZXMNCiAqIGEgc2luZ2xlIFBpbiBpbnN0YW5jZSAoYnV0IG1heSBpbmNsdWRlIHNldmVyYWwgUElPcyBzaGFyaW5nIHRoZSBzYW1lDQogKiBjb250cm9sbGVyKSwgYW5kIFBJTlNfKiBmb3IgYSBsaXN0IG9mIFBpbiBpbnN0YW5jZXMuDQogKg0KICogQURDDQogKiAtIFxyZWYgUElOX0FEQzBfQUQwDQogKiAtIFxyZWYgUElOX0FEQzBfQUQxDQogKiAtIFxyZWYgUElOX0FEQzBfQUQyDQogKiAtIFxyZWYgUElOX0FEQzBfQUQzDQogKiAtIFxyZWYgUElOX0FEQzBfQUQ0DQogKiAtIFxyZWYgUElOX0FEQzBfQUQ1DQogKiAtIFxyZWYgUElOX0FEQzBfQUQ2DQogKiAtIFxyZWYgUElOX0FEQzBfQUQ3DQogKiAtIFxyZWYgUElOU19BREMNCiAqDQogKiBVQVJUDQogKiAtIFxyZWYgUElOU19VQVJUDQogKg0KICogRUJJDQogKiAtIFxyZWYgUElOX0VCSV9EQVRBX0JVUw0KICogLSBccmVmIFBJTl9FQklfTlJEDQogKiAtIFxyZWYgUElOX0VCSV9OV0UNCiAqIC0gXHJlZiBQSU5fRUJJX05DUzANCiAqIC0gXHJlZiBQSU5fRUJJX1BTUkFNX0FERFJfQlVTDQogKiAtIFxyZWYgUElOX0VCSV9QU1JBTV9OQlMNCiAqIC0gXHJlZiBQSU5fRUJJX0ExDQogKiAtIFxyZWYgUElOX0VCSV9OQ1MxDQogKiAtIFxyZWYgUElOX0VCSV9MQ0RfUlMNCiAqDQogKiBMRURzDQogKiAtIFxyZWYgUElOX0xFRF8wDQogKiAtIFxyZWYgUElOX0xFRF8xDQogKiAtIFxyZWYgUElOX0xFRF8yDQogKiAtIFxyZWYgUElOU19MRURTDQogKg0KICogSFNNQ0kNCiAqIC0gXHJlZiBQSU5TX0hTTUNJDQogKg0KICogUHVzaCBidXR0b25zDQogKiAtIFxyZWYgUElOX1BVU0hCVVRUT05fMQ0KICogLSBccmVmIFBJTl9QVVNIQlVUVE9OXzINCiAqIC0gXHJlZiBQSU5TX1BVU0hCVVRUT05TDQogKiAtIFxyZWYgUFVTSEJVVFRPTl9CUDENCiAqIC0gXHJlZiBQVVNIQlVUVE9OX0JQMg0KICoNCiAqIFBXTUMNCiAqIC0gXHJlZiBQSU5fUFdNQ19QV01IMA0KICogLSBccmVmIFBJTl9QV01DX1BXTUwwDQogKiAtIFxyZWYgUElOX1BXTUNfUFdNSDENCiAqIC0gXHJlZiBQSU5fUFdNQ19QV01MMQ0KICogLSBccmVmIFBJTl9QV01DX1BXTUgyDQogKiAtIFxyZWYgUElOX1BXTUNfUFdNTDINCiAqIC0gXHJlZiBQSU5fUFdNQ19QV01IMw0KICogLSBccmVmIFBJTl9QV01DX1BXTUwzDQogKiAtIFxyZWYgUElOX1BXTV9MRUQwDQogKiAtIFxyZWYgUElOX1BXTV9MRUQxDQogKiAtIFxyZWYgUElOX1BXTV9MRUQyDQogKiAtIFxyZWYgQ0hBTk5FTF9QV01fTEVEMA0KICogLSBccmVmIENIQU5ORUxfUFdNX0xFRDENCiAqIC0gXHJlZiBDSEFOTkVMX1BXTV9MRUQyDQogKg0KICogU1BJDQogKiAtIFxyZWYgUElOX1NQSV9NSVNPDQogKiAtIFxyZWYgUElOX1NQSV9NT1NJDQogKiAtIFxyZWYgUElOX1NQSV9TUENLDQogKiAtIFxyZWYgUElOU19TUEkNCiAqIC0gXHJlZiBQSU5fU1BJX05QQ1MwX1BBMTENCiAqDQogKiBTU0MNCiAqIC0gXHJlZiBQSU5fU1NDX1REDQogKiAtIFxyZWYgUElOX1NTQ19USw0KICogLSBccmVmIFBJTl9TU0NfVEYNCiAqIC0gXHJlZiBQSU5TX1NTQ19DT0RFQw0KICoNCiAqIFBDSzANCiAqIC0gXHJlZiBQSU5fUENLMA0KICoNCiAqIFBJTyBQQVJBTExFTCBDQVBUVVJFDQogKiAtIFxyZWYgUElOX1BJT0RDRU4xDQogKiAtIFxyZWYgUElOX1BJT0RDRU4yDQogKg0KICogVFdJDQogKiAtIFxyZWYgVFdJX1YzWFgNCiAqIC0gXHJlZiBQSU5fVFdJX1RXRDANCiAqIC0gXHJlZiBQSU5fVFdJX1RXQ0swDQogKiAtIFxyZWYgUElOU19UV0kwDQogKiAtIFxyZWYgUElOX1RXSV9UV0QxDQogKiAtIFxyZWYgUElOX1RXSV9UV0NLMQ0KICogLSBccmVmIFBJTlNfVFdJMQ0KICoNCiAqIFVTQVJUMA0KICogLSBccmVmIFBJTl9VU0FSVDBfUlhEDQogKiAtIFxyZWYgUElOX1VTQVJUMF9UWEQNCiAqIC0gXHJlZiBQSU5fVVNBUlQwX0NUUw0KICogLSBccmVmIFBJTl9VU0FSVDBfUlRTDQogKiAtIFxyZWYgUElOX1VTQVJUMF9TQ0sNCiAqDQogKiBVU0INCiAqIC0gXHJlZiBQSU5fVVNCX1ZCVVMNCiAqDQogKiBOYW5kRmxhc2gNCiAqIC0gXHJlZiBQSU5fRUJJX05BTkRPRQ0KICogLSBccmVmIFBJTl9FQklfTkFORFdFDQogKiAtIFxyZWYgUElOX0VCSV9OQU5EQ0xFDQogKiAtIFxyZWYgUElOX0VCSV9OQU5EQUxFDQogKiAtIFxyZWYgUElOX0VCSV9OQU5ESU8NCiAqIC0gXHJlZiBCT0FSRF9ORl9DRV9QSU4NCiAqIC0gXHJlZiBCT0FSRF9ORl9SQl9QSU4NCiAqIC0gXHJlZiBQSU5TX05BTkRGTEFTSA0KICoNCiAqIFFUb3VjaA0KICogUElPIGRlZmluaXRpb25zIGZvciBTbGlkZXINCiAqIFxyZWYgU0xJREVSX0lPTUFTS19TTlMNCiAqIFxyZWYgU0xJREVSX0lPTUFTS19TTlNLDQogKiBccmVmIFBJTlNfU0xJREVSX1NOUw0KICogXHJlZiBQSU5TX1NMSURFUl9TTlNLDQogKg0KICogUElPIGRlZmluaXRpb25zIGZvciBrZXlzDQogKiBccmVmIEtFWV9JT01BU0tfU05TDQogKiBccmVmIEtFWV9JT01BU0tfU05TSw0KICogXHJlZiBQSU5TX0tFWV9TTlMNCiAqIFxyZWYgUElOU19LRVlfU05TSw0KICoNCiAqIFBJT1MgZm9yIFFUb3VjaA0KICogXHJlZiBQSU5TX1FUT1VDSA0KICovDQoNCi8qKiBBRENfQUQwIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fQURDMF9BRDAgezEgPDwgMjEsIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogQURDX0FEMSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX0FEQzBfQUQxIHsxIDw8IDMwLCBQSU9BLCBJRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLyoqIEFEQ19BRDIgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9BREMwX0FEMiB7MSA8PCAzLCBQSU9CLCBJRF9QSU9CLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLyoqIEFEQ19BRDMgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9BREMwX0FEMyB7MSA8PCA0LCBQSU9CLCBJRF9QSU9CLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLyoqIEFEQ19BRDQgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9BREMwX0FENCB7MSA8PCAxNSwgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8qKiBBRENfQUQ1IHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fQURDMF9BRDUgezEgPDwgMTYsIFBJT0MsIElEX1BJT0MsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogQURDX0FENiBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX0FEQzBfQUQ2IHsxIDw8IDE3LCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLyoqIEFEQ19BRDcgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9BREMwX0FENyB7MSA8PCAxOCwgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCg0KLyoqIFBpbnMgQURDICovDQojZGVmaW5lIFBJTlNfQURDIFBJTl9BREMwX0FEMCwgUElOX0FEQzBfQUQxLCBQSU5fQURDMF9BRDIsIFBJTl9BREMwX0FEMywgUElOX0FEQzBfQUQ0LCBQSU5fQURDMF9BRDUsIFBJTl9BREMwX0FENiwgUElOX0FEQzBfQUQ3DQojZGVmaW5lIFBJTlNfQURDX1RSSUcgIFBJT19QQThfSURYDQojZGVmaW5lIFBJTlNfQURDX1RSSUdfRkxBRyAgKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KDQovKiogU3RhcnR1cCB0aW1lIG1heCwgcmV0dXJuIGZyb20gSWRsZSBtb2RlIChpbiC1cykgKi8NCiNkZWZpbmUgQURDX1NUQVJUVVBfVElNRV9NQVggICAgICAgMTUNCi8qKiBUcmFjayBhbmQgaG9sZCBBY3F1aXNpdGlvbiBUaW1lIG1pbiAoaW4gbnMpICovDQojZGVmaW5lIEFEQ19UUkFDS19IT0xEX1RJTUVfTUlOICAxMjAwDQovKiogQURDIGNsb2NrIGZyZXF1ZW5jeSAqLw0KI2RlZmluZSBCT0FSRF9BRENfRlJFUSAgICAgKDYwMDAwMDApDQoNCi8qKiBVQVJUIHBpbnMgKFVUWEQwIGFuZCBVUlhEMCkgZGVmaW5pdGlvbnMsIFBBOSwxMC4gKi8NCiNkZWZpbmUgUElOU19VQVJUCQkoUElPX1BBOUFfVVJYRDAgfCBQSU9fUEExMEFfVVRYRDApDQojZGVmaW5lIFBJTlNfVUFSVF9GTEFHUwkoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQoNCiNkZWZpbmUgUElOU19VQVJUX01BU0sgUElPX1BBOUFfVVJYRDB8UElPX1BBMTBBX1VUWEQwDQojZGVmaW5lIFBJTlNfVUFSVF9QSU8gUElPQQ0KI2RlZmluZSBQSU5TX1VBUlRfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5TX1VBUlRfVFlQRSBQSU9fUEVSSVBIX0ENCiNkZWZpbmUgUElOU19VQVJUX0FUVFIgUElPX0RFRkFVTFQNCg0KLyoqIEVCSSBEYXRhIEJ1cyBwaW5zICovDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDAgICAgICAgIFBJT19QQzBfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDEgICAgICAgIFBJT19QQzFfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDIgICAgICAgIFBJT19QQzJfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDMgICAgICAgIFBJT19QQzNfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDQgICAgICAgIFBJT19QQzRfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDUgICAgICAgIFBJT19QQzVfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDYgICAgICAgIFBJT19QQzZfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRDcgICAgICAgIFBJT19QQzdfSURYDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfRkxBR1MgICAgICAgICAgIFBJT19QRVJJUEhfQSB8IFBJT19QVUxMVVANCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19NQVNLICAweEZGDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfUElPICBQSU9DDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfSUQgIElEX1BJT0MNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19UWVBFIFBJT19QRVJJUEhfQQ0KI2RlZmluZSBQSU5fRUJJX0RBVEFfQlVTX0FUVFIgUElPX1BVTExVUA0KLyoqIEVCSSBOUkQgcGluICovDQojZGVmaW5lIFBJTl9FQklfTlJEICAgICAgICAgICAgICAgICBQSU9fUEMxMV9JRFgNCiNkZWZpbmUgUElOX0VCSV9OUkRfRkxBR1MgICAgICAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX05SRF9NQVNLICAxIDw8IDExDQojZGVmaW5lIFBJTl9FQklfTlJEX1BJTyAgUElPQw0KI2RlZmluZSBQSU5fRUJJX05SRF9JRCAgSURfUElPQw0KI2RlZmluZSBQSU5fRUJJX05SRF9UWVBFIFBJT19QRVJJUEhfQQ0KI2RlZmluZSBQSU5fRUJJX05SRF9BVFRSIFBJT19QVUxMVVANCi8qKiBFQkkgTldFIHBpbiAqLw0KI2RlZmluZSBQSU5fRUJJX05XRSAgICAgICAgICAgICAgICAgIFBJT19QQzhfSURYDQojZGVmaW5lIFBJTl9FQklfTldFX0ZMQUdTICAgICAgIFBJT19QRVJJUEhfQSB8IFBJT19QVUxMVVANCiNkZWZpbmUgUElOX0VCSV9OV0VfTUFTSyAgMSA8PCA4DQojZGVmaW5lIFBJTl9FQklfTldFX1BJTyAgUElPQw0KI2RlZmluZSBQSU5fRUJJX05XRV9JRCAgSURfUElPQw0KI2RlZmluZSBQSU5fRUJJX05XRV9UWVBFIFBJT19QRVJJUEhfQQ0KI2RlZmluZSBQSU5fRUJJX05XRV9BVFRSIFBJT19QVUxMVVANCi8qKiBFQkkgTkNTMCBwaW4gKi8NCiNkZWZpbmUgUElOX0VCSV9OQ1MwICAgICAgICAgICAgICAgIFBJT19QQzE0X0lEWA0KI2RlZmluZSBQSU5fRUJJX05DUzBfRkxBR1MgICAgIFBJT19QRVJJUEhfQSB8IFBJT19QVUxMVVANCiNkZWZpbmUgUElOX0VCSV9OQ1MwX01BU0sgIDEgPDwgMTQNCiNkZWZpbmUgUElOX0VCSV9OQ1MwX1BJTyAgUElPQw0KI2RlZmluZSBQSU5fRUJJX05DUzBfSUQgIElEX1BJT0MNCiNkZWZpbmUgUElOX0VCSV9OQ1MwX1RZUEUgUElPX1BFUklQSF9BDQojZGVmaW5lIFBJTl9FQklfTkNTMF9BVFRSIFBJT19QVUxMVVANCi8qKiBFQkkgYWRkcmVzcyBidXMgcGlucyAgKi8NCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMCAgICAgUElPX1BDMThfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTEgICAgIFBJT19QQzE5X0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0EyICAgICBQSU9fUEMyMF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMyAgICAgUElPX1BDMjFfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTQgICAgIFBJT19QQzIyX0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0E1ICAgICBQSU9fUEMyM19JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BNiAgICAgUElPX1BDMjRfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTcgICAgIFBJT19QQzI1X0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0E4ICAgICBQSU9fUEMyNl9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BOSAgICAgUElPX1BDMjdfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTEwICAgUElPX1BDMjhfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTExICAgUElPX1BDMjlfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTEyICAgUElPX1BDMzBfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTEzICAgUElPX1BDMzFfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfRkxBRzEgIFBJT19QRVJJUEhfQSB8IFBJT19QVUxMVVANCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTQgICBQSU9fUEExOF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTUgICBQSU9fUEExOV9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTYgICBQSU9fUEEyMF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTcgICBQSU9fUEEwX0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0ExOCAgIFBJT19QQTFfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTE5ICAgUElPX1BBMjNfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTIwICAgUElPX1BBMjRfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfRkxBRzIgIFBJT19QRVJJUEhfQyB8IFBJT19QVUxMVVANCi8qKiBFQkkgcGluIGZvciBMQ0QgQ1MgKi8NCiNkZWZpbmUgUElOX0VCSV9OQ1MxICAgICAgICAgICAgICAgICBQSU9fUEMxNV9JRFgNCiNkZWZpbmUgUElOX0VCSV9OQ1MxX0ZMQUdTICAgICAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX05DUzFfTUFTSyAgMSA8PCAxNQ0KI2RlZmluZSBQSU5fRUJJX05DUzFfUElPICBQSU9DDQojZGVmaW5lIFBJTl9FQklfTkNTMV9JRCAgSURfUElPQw0KI2RlZmluZSBQSU5fRUJJX05DUzFfVFlQRSBQSU9fUEVSSVBIX0ENCiNkZWZpbmUgUElOX0VCSV9OQ1MxX0FUVFIgUElPX1BVTExVUA0KLyoqIEVCSSBwaW4gZm9yIExDRCBSUyAqLw0KI2RlZmluZSBQSU5fRUJJX0xDRF9SUyAgICAgICAgICAgICAgICBQSU9fUEMxOV9JRFgNCiNkZWZpbmUgUElOX0VCSV9MQ0RfUlNfRkxBR1MgICAgIFBJT19QRVJJUEhfQSB8IFBJT19QVUxMVVANCiNkZWZpbmUgUElOX0VCSV9MQ0RfUlNfTUFTSyAgMSA8PCAxOQ0KI2RlZmluZSBQSU5fRUJJX0xDRF9SU19QSU8gIFBJT0MNCiNkZWZpbmUgUElOX0VCSV9MQ0RfUlNfSUQgIElEX1BJT0MNCiNkZWZpbmUgUElOX0VCSV9MQ0RfUlNfVFlQRSBQSU9fUEVSSVBIX0ENCiNkZWZpbmUgUElOX0VCSV9MQ0RfUlNfQVRUUiBQSU9fUFVMTFVQDQoNCiNkZWZpbmUgTEVEX0JMVUUgICAgICAwDQojZGVmaW5lIExFRF9HUkVFTiAgICAgMQ0KI2RlZmluZSBMRURfUkVEICAgICAgIDINCg0KI2lmZGVmIEJPQVJEX1JFVl9BDQovKiogTEVEICMwIHBpbiBkZWZpbml0aW9uIChCTFVFKS4gKi8NCiNkZWZpbmUgTEVEXzBfTkFNRSAgICJibHVlIExFRCBEMiINCiNkZWZpbmUgTEVEMF9HUElPICAgIChQSU9fUEMyMF9JRFgpDQojZGVmaW5lIExFRDBfRkxBR1MgICAoUElPX1RZUEVfUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCiNkZWZpbmUgUElOX0xFRF8wICAge1BJT19QQzIwLCBQSU9DLCBJRF9QSU9DLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fTEVEXzBfTUFTSyBQSU9fUEMyMA0KI2RlZmluZSBQSU5fTEVEXzBfUElPIFBJT0MNCiNkZWZpbmUgUElOX0xFRF8wX0lEIElEX1BJT0MNCiNkZWZpbmUgUElOX0xFRF8wX1RZUEUgUElPX09VVFBVVF8xDQojZGVmaW5lIFBJTl9MRURfMF9BVFRSIFBJT19ERUZBVUxUDQoNCi8qKiBMRUQgIzEgcGluIGRlZmluaXRpb24gKEdSRUVOKS4gKi8NCiNkZWZpbmUgTEVEXzFfTkFNRSAgICAiZ3JlZW4gTEVEIEQzIg0KI2RlZmluZSBMRUQxX0dQSU8gICAgIChQSU9fUEMyMV9JRFgpDQojZGVmaW5lIExFRDFfRkxBR1MgICAgKFBJT19UWVBFX1BJT19PVVRQVVRfMSB8IFBJT19ERUZBVUxUKQ0KDQojZGVmaW5lIFBJTl9MRURfMSAgIHtQSU9fUEMyMSwgUElPQywgSURfUElPQywgUElPX09VVFBVVF8xLCBQSU9fREVGQVVMVH0NCi8qKiBMRUQgIzIgcGluIGRlZmluaXRpb24gKFJFRCkuICovDQojZGVmaW5lIExFRDJfR1BJTyAgKFBJT19QQzIyX0lEWCkNCiNkZWZpbmUgTEVEMl9GTEFHUyAoUElPX1RZUEVfUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCiNkZWZpbmUgUElOX0xFRF8yICAge1BJT19QQzIyLCBQSU9DLCBJRF9QSU9DLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KI2VuZGlmDQoNCiNpZmRlZiBCT0FSRF9SRVZfQg0KLyoqIExFRCAjMCBwaW4gZGVmaW5pdGlvbiAoQkxVRSkuICovDQojZGVmaW5lIExFRF8wX05BTUUgICAiYmx1ZSBMRUQgRDIiDQojZGVmaW5lIExFRDBfR1BJTyAgICAgKFBJT19QQTE5X0lEWCkNCiNkZWZpbmUgTEVEMF9GTEFHUyAgICAoUElPX1RZUEVfUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCiNkZWZpbmUgUElOX0xFRF8wICAge1BJT19QQTE5LCBQSU9BLCBJRF9QSU9BLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fTEVEXzBfTUFTSyBQSU9fUEExOQ0KI2RlZmluZSBQSU5fTEVEXzBfUElPIFBJT0ENCiNkZWZpbmUgUElOX0xFRF8wX0lEIElEX1BJT0ENCiNkZWZpbmUgUElOX0xFRF8wX1RZUEUgUElPX09VVFBVVF8xDQojZGVmaW5lIFBJTl9MRURfMF9BVFRSIFBJT19ERUZBVUxUDQoNCi8qKiBMRUQgIzEgcGluIGRlZmluaXRpb24gKEdSRUVOKS4gKi8NCiNkZWZpbmUgTEVEXzFfTkFNRSAgICAiZ3JlZW4gTEVEIEQzIg0KI2RlZmluZSBMRUQxX0dQSU8gICAgIChQSU9fUEEyMF9JRFgpDQojZGVmaW5lIExFRDFfRkxBR1MgICAgKFBJT19UWVBFX1BJT19PVVRQVVRfMSB8IFBJT19ERUZBVUxUKQ0KDQojZGVmaW5lIFBJTl9MRURfMSAgIHtQSU9fUEEyMCwgUElPQSwgSURfUElPQSwgUElPX09VVFBVVF8xLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX0xFRF8xX01BU0sgUElPX1BBMjANCiNkZWZpbmUgUElOX0xFRF8xX1BJTyBQSU9BDQojZGVmaW5lIFBJTl9MRURfMV9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTl9MRURfMV9UWVBFIFBJT19PVVRQVVRfMQ0KI2RlZmluZSBQSU5fTEVEXzFfQVRUUiBQSU9fREVGQVVMVA0KDQovKiogTEVEICMyIHBpbiBkZWZpbml0aW9uIChSRUQpLiAqLw0KI2RlZmluZSBMRUQyX0dQSU8gCQkoUElPX1BDMjBfSURYKQ0KI2RlZmluZSBMRUQyX0ZMQUdTIChQSU9fVFlQRV9QSU9fT1VUUFVUXzEgfCBQSU9fREVGQVVMVCkNCg0KI2RlZmluZSBQSU5fTEVEXzIgICB7UElPX1BDMjAsIFBJT0MsIElEX1BJT0MsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQoNCiNlbmRpZg0KDQovKiogTGlzdCBvZiBhbGwgTEVEcyBkZWZpbml0aW9ucy4gKi8NCiNkZWZpbmUgUElOU19MRURTICAgUElOX0xFRF8wLCBQSU5fTEVEXzEsIFBJTl9MRURfMg0KDQovKiogSFNNQ0kgcGlucyBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5TX0hTTUNJICAgezB4M2ZVTCA8PCAyNiwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9DLCBQSU9fUFVMTFVQfQ0KLyoqIEhTTUNJIHBpbiBDYXJkIERldGVjdC4gKi8NCiNpZmRlZiBCT0FSRF9SRVZfQQ0KI2RlZmluZSBQSU5fSFNNQ0lfQ0Qge1BJT19QQTE1LCBQSU9BLCBJRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQojZW5kaWYNCg0KI2lmZGVmIEJPQVJEX1JFVl9CDQojZGVmaW5lIFBJTl9IU01DSV9DRCB7UElPX1BBNiwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2VuZGlmDQoNCi8qKiBQdXNoIGJ1dHRvbiAjMCBkZWZpbml0aW9uLiBBdHRyaWJ1dGVzID0gcHVsbC11cCArIGRlYm91bmNlICsgaW50ZXJydXB0IG9uIHJpc2luZyBlZGdlLiAqLw0KI2RlZmluZSBQVVNIQlVUVE9OXzFfTkFNRSAgICAiVVNSUEIxIg0KI2RlZmluZSBHUElPX1BVU0hfQlVUVE9OXzEgICAgKFBJT19QQjNfSURYKQ0KI2RlZmluZSBHUElPX1BVU0hfQlVUVE9OXzFfRkxBR1MgICAgKFBJT19JTlBVVCB8IFBJT19QVUxMVVAgfCBQSU9fREVCT1VOQ0UgfCBQSU9fSVRfUklTRV9FREdFKQ0KDQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzEgICAge1BJT19QQjMsIFBJT0IsIElEX1BJT0IsIFBJT19JTlBVVCwgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9SSVNFX0VER0V9DQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzFfTUFTSyBQSU9fUEIzDQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzFfUElPIFBJT0INCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMV9JRCBJRF9QSU9CDQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzFfVFlQRSBQSU9fSU5QVVQNCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMV9BVFRSIFBJT19QVUxMVVAgfCBQSU9fREVCT1VOQ0UgfCBQSU9fSVRfUklTRV9FREdFDQoNCi8qKiBQdXNoIGJ1dHRvbiAjMSBkZWZpbml0aW9uLiBBdHRyaWJ1dGVzID0gcHVsbC11cCArIGRlYm91bmNlICsgaW50ZXJydXB0IG9uIGZhbGxpbmcgZWRnZS4gKi8NCiNkZWZpbmUgUFVTSEJVVFRPTl8yX05BTUUgICAgIlVTUlBCMiINCiNkZWZpbmUgR1BJT19QVVNIX0JVVFRPTl8yICAgIChQSU9fUEMxMl9JRFgpDQojZGVmaW5lIEdQSU9fUFVTSF9CVVRUT05fMl9GTEFHUyAgICAoUElPX0lOUFVUIHwgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9GQUxMX0VER0UpDQoNCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMiAgICB7UElPX1BDMTIsIFBJT0MsIElEX1BJT0MsIFBJT19JTlBVVCwgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9GQUxMX0VER0V9DQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzJfTUFTSyBQSU9fUEMxMg0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8yX1BJTyBQSU9DDQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzJfSUQgSURfUElPQw0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8yX1RZUEUgUElPX0lOUFVUDQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzJfQVRUUiBQSU9fUFVMTFVQIHwgUElPX0RFQk9VTkNFIHwgUElPX0lUX0ZBTExfRURHRQ0KDQovKiogTGlzdCBvZiBhbGwgcHVzaCBidXR0b24gZGVmaW5pdGlvbnMuICovDQojZGVmaW5lIFBJTlNfUFVTSEJVVFRPTlMgICAgUElOX1BVU0hCVVRUT05fMSwgUElOX1BVU0hCVVRUT05fMg0KDQovKiogUHVzaCBidXR0b24gIzEgaW5kZXguICovDQojZGVmaW5lIFBVU0hCVVRUT05fQlAxICAgMA0KLyoqIFB1c2ggYnV0dG9uICMyIGluZGV4LiAqLw0KI2RlZmluZSBQVVNIQlVUVE9OX0JQMiAgIDENCg0KI2RlZmluZSBQSU5fVEMwX1RJT0EwCQkoUElPX1BBMF9JRFgpDQojZGVmaW5lIFBJTl9UQzBfVElPQTBfRkxBR1MJKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KDQojZGVmaW5lIFBJTl9UQzBfVElPQTEJCShQSU9fUEExNV9JRFgpDQojZGVmaW5lIFBJTl9UQzBfVElPQTFfRkxBR1MJKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KDQojZGVmaW5lIFBJTl9UQzBfVElPQTFfUElPICAgICBQSU9BDQojZGVmaW5lIFBJTl9UQzBfVElPQTFfTUFTSyAgUElPX1BBMTUNCiNkZWZpbmUgUElOX1RDMF9USU9BMV9JRCAgICAgIElEX1BJT0ENCiNkZWZpbmUgUElOX1RDMF9USU9BMV9UWVBFICAgUElPX1BFUklQSF9CDQojZGVmaW5lIFBJTl9UQzBfVElPQTFfQVRUUiAgIFBJT19ERUZBVUxUDQoNCiNkZWZpbmUgUElOX1RDMF9USU9BMgkJKFBJT19QQTI2X0lEWCkNCiNkZWZpbmUgUElOX1RDMF9USU9BMl9GTEFHUwkoUElPX0lOUFVUIHwgUElPX0RFRkFVTFQpDQoNCiNkZWZpbmUgUElOX1RDMF9USU9BMl9QSU8gICAgIFBJT0ENCiNkZWZpbmUgUElOX1RDMF9USU9BMl9NQVNLICBQSU9fUEEyNg0KI2RlZmluZSBQSU5fVEMwX1RJT0EyX0lEICAgICAgSURfUElPQQ0KI2RlZmluZSBQSU5fVEMwX1RJT0EyX1RZUEUgICBQSU9fSU5QVVQNCiNkZWZpbmUgUElOX1RDMF9USU9BMl9BVFRSICAgUElPX0RFRkFVTFQNCg0KLyoqIFBXTUMgUFdNMCBwaW4gZGVmaW5pdGlvbjogT3V0cHV0IEhpZ2guICovDQojZGVmaW5lIFBJTl9QV01DX1BXTUgwICB7UElPX1BDMThCX1BXTUgwLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fUFdNQ19QV01IMF9UUklHICAgUElPX1BDMThfSURYDQojZGVmaW5lIFBJTl9QV01DX1BXTUgwX1RSSUdfRkxBRyAgIFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUDQovKiogUFdNQyBQV00wIHBpbiBkZWZpbml0aW9uOiBPdXRwdXQgTG93LiAqLw0KI2RlZmluZSBQSU5fUFdNQ19QV01MMCAge1BJT19QQTE5Ql9QV01MMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBQV01DIFBXTTEgcGluIGRlZmluaXRpb246IE91dHB1dCBIaWdoLiAqLw0KI2RlZmluZSBQSU5fUFdNQ19QV01IMSAge1BJT19QQzE5Ql9QV01IMSwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBQV01DIFBXTTEgcGluIGRlZmluaXRpb246IE91dHB1dCBMb3cuICovDQojZGVmaW5lIFBJTl9QV01DX1BXTUwxICB7UElPX1BBMjBCX1BXTUwxLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFBXTUMgUFdNMiBwaW4gZGVmaW5pdGlvbjogT3V0cHV0IEhpZ2guICovDQojZGVmaW5lIFBJTl9QV01DX1BXTUgyICB7UElPX1BDMjBCX1BXTUgyLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFBXTUMgUFdNMiBwaW4gZGVmaW5pdGlvbjogT3V0cHV0IExvdy4gKi8NCiNkZWZpbmUgUElOX1BXTUNfUFdNTDIgIHtQSU9fUEExNkNfUFdNTDIsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQywgUElPX0RFRkFVTFR9DQovKiogUFdNQyBQV00zIHBpbiBkZWZpbml0aW9uOiBPdXRwdXQgSGlnaC4gKi8NCiNkZWZpbmUgUElOX1BXTUNfUFdNSDMgIHtQSU9fUEMyMUJfUFdNSDMsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogUFdNQyBQV00zIHBpbiBkZWZpbml0aW9uOiBPdXRwdXQgTG93LiAqLw0KI2RlZmluZSBQSU5fUFdNQ19QV01MMyAge1BJT19QQTE1Q19QV01MMywgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9DLCBQSU9fREVGQVVMVH0NCi8qKiBQV00gcGlucyBkZWZpbml0aW9uIGZvciBMRUQwICovDQojZGVmaW5lIFBJTl9QV01fTEVEMCBQSU5fUFdNQ19QV01IMCwgUElOX1BXTUNfUFdNTDANCi8qKiBQV00gcGlucyBkZWZpbml0aW9uIGZvciBMRUQxICovDQojZGVmaW5lIFBJTl9QV01fTEVEMSBQSU5fUFdNQ19QV01IMSwgUElOX1BXTUNfUFdNTDENCi8qKiBQV00gcGlucyBkZWZpbml0aW9uIGZvciBMRUQyICovDQojZGVmaW5lIFBJTl9QV01fTEVEMiBQSU5fUFdNQ19QV01IMiwgUElOX1BXTUNfUFdNTDINCi8qKiBQV00gY2hhbm5lbCBmb3IgTEVEMCAqLw0KI2RlZmluZSBDSEFOTkVMX1BXTV9MRUQwIDANCi8qKiBQV00gY2hhbm5lbCBmb3IgTEVEMSAqLw0KI2RlZmluZSBDSEFOTkVMX1BXTV9MRUQxIDENCi8qKiBQV00gY2hhbm5lbCBmb3IgTEVEMiAqLw0KI2RlZmluZSBDSEFOTkVMX1BXTV9MRUQyIDINCg0KLyoqIFBXTSBMRUQwIHBpbiBkZWZpbml0aW9ucy4gKi8NCiNkZWZpbmUgUElOX1BXTV9MRUQwX0dQSU8gICAgUElPX1BBMTlfSURYDQojZGVmaW5lIFBJTl9QV01fTEVEMF9GTEFHUyAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCiNkZWZpbmUgUElOX1BXTV9MRUQwX0NIQU5ORUwgUFdNX0NIQU5ORUxfMA0KDQovKiogUFdNIExFRDEgcGluIGRlZmluaXRpb25zLiAqLw0KI2RlZmluZSBQSU5fUFdNX0xFRDFfR1BJTyAgICBQSU9fUEEyMF9JRFgNCiNkZWZpbmUgUElOX1BXTV9MRUQxX0ZMQUdTICAgKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KI2RlZmluZSBQSU5fUFdNX0xFRDFfQ0hBTk5FTCBQV01fQ0hBTk5FTF8xDQoNCi8qKiBQV00gTEVEMiBwaW4gZGVmaW5pdGlvbnMuICovDQojZGVmaW5lIFBJTl9QV01fTEVEMl9HUElPICAgIFBJT19QQzIwX0lEWA0KI2RlZmluZSBQSU5fUFdNX0xFRDJfRkxBR1MgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBTUEkgTUlTTyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSV9NSVNPICAgIHtQSU9fUEExMkFfTUlTTywgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkgTU9TSSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSV9NT1NJICAgIHtQSU9fUEExM0FfTU9TSSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkgU1BDSyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSV9TUENLICAgIHtQSU9fUEExNEFfU1BDSywgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTUEkgY2hpcCBzZWxlY3QgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9TUElfTlBDUzBfUEExMSAge1BJT19QQTExQV9OUENTMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBMaXN0IG9mIFNQSSBwaW4gZGVmaW5pdGlvbnMgKE1JU08sIE1PU0kgJiBTUENLKS4gKi8NCiNkZWZpbmUgUElOU19TUEkgICAgICAgIFBJTl9TUElfTUlTTywgUElOX1NQSV9NT1NJLCBQSU5fU1BJX1NQQ0sNCi8qKiBTUEkgTUlTTyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgU1BJX01JU09fR1BJTyAJCSAgICAgIChQSU9fUEExMl9JRFgpDQojZGVmaW5lIFNQSV9NSVNPX0ZMQUdTICAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBTUEkgTU9TSSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgU1BJX01PU0lfR1BJTyAJCSAgICAgIChQSU9fUEExM19JRFgpDQojZGVmaW5lIFNQSV9NT1NJX0ZMQUdTICAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBTUEkgU1BDSyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgU1BJX1NQQ0tfR1BJTyAJCSAgICAgIChQSU9fUEExNF9JRFgpDQojZGVmaW5lIFNQSV9TUENLX0ZMQUdTICAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCg0KLyoqIFNQSSBjaGlwIHNlbGVjdCAwIHBpbiBkZWZpbml0aW9uLiAoT25seSBvbmUgY29uZmlndXJhdGlvbiBpcyBwb3NzaWJsZSkgKi8NCiNkZWZpbmUgU1BJX05QQ1MwX0dQSU8gICAgICAgICAgICAoUElPX1BBMTFfSURYKQ0KI2RlZmluZSBTUElfTlBDUzBfRkxBR1MgICAgICAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBTUEkgY2hpcCBzZWxlY3QgMSBwaW4gZGVmaW5pdGlvbi4gKG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSkgKi8NCiNkZWZpbmUgU1BJX05QQ1MxX1BBOV9HUElPIAkJICAoUElPX1BBOV9JRFgpDQojZGVmaW5lIFNQSV9OUENTMV9QQTlfRkxBR1MgICAgICAgKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KI2RlZmluZSBTUElfTlBDUzFfUEEzMV9HUElPIAkgIChQSU9fUEEzMV9JRFgpDQojZGVmaW5lIFNQSV9OUENTMV9QQTMxX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KI2RlZmluZSBTUElfTlBDUzFfUEIxNF9HUElPCSAgICAgIChQSU9fUEIxNF9JRFgpDQojZGVmaW5lIFNQSV9OUENTMV9QQjE0X0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KI2RlZmluZSBTUElfTlBDUzFfUEM0X0dQSU8gCQkgIChQSU9fUEM0X0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MxX1BDNF9GTEFHUyAgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQovKiogU1BJIGNoaXAgc2VsZWN0IDIgcGluIGRlZmluaXRpb24uIChtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBhcmUgcG9zc2libGUpICovDQojZGVmaW5lIFNQSV9OUENTMl9QQTEwX0dQSU8gCSAgKFBJT19QQTEwX0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MyX1BBMTBfRkxBR1MgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTMl9QQTMwX0dQSU8gCSAgKFBJT19QQTMwX0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MyX1BBMzBfRkxBR1MgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTMl9QQjJfR1BJTyAJCSAgKFBJT19QQjJfSURYKQ0KI2RlZmluZSBTUElfTlBDUzJfUEIyX0ZMQUdTICAgICAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCi8qKiBTUEkgY2hpcCBzZWxlY3QgMyBwaW4gZGVmaW5pdGlvbi4gKG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSkgKi8NCiNkZWZpbmUgU1BJX05QQ1MzX1BBM19HUElPIAkJICAoUElPX1BBM19JRFgpDQojZGVmaW5lIFNQSV9OUENTM19QQTNfRkxBR1MgICAgICAgKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KI2RlZmluZSBTUElfTlBDUzNfUEE1X0dQSU8gCQkgIChQSU9fUEE1X0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MzX1BBNV9GTEFHUyAgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTM19QQTIyX0dQSU8gCSAgKFBJT19QQTIyX0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MzX1BBMjJfRkxBR1MgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBTU0MgcGluIFRyYW5zbWl0dGVyIERhdGEgKFREKSAqLw0KI2RlZmluZSBQSU5fU1NDX1REICAgICAge1BJT19QQTE3QV9URCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTU0MgcGluIFRyYW5zbWl0dGVyIENsb2NrIChUSykgKi8NCiNkZWZpbmUgUElOX1NTQ19USyAgICAgIHtQSU9fUEExNkFfVEssIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogU1NDIHBpbiBUcmFuc21pdHRlciBGcmFtZVN5bmMgKFRGKSAqLw0KI2RlZmluZSBQSU5fU1NDX1RGICAgICAge1BJT19QQTE1QV9URiwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTU0MgcGlucyBkZWZpbml0aW9uIGZvciBjb2RlYy4gKi8NCiNkZWZpbmUgUElOU19TU0NfQ09ERUMgIFBJTl9TU0NfVEQsIFBJTl9TU0NfVEssIFBJTl9TU0NfVEYNCg0KLyoqIFBDSzAgKi8NCiNkZWZpbmUgUElOX1BDSzAJCShQSU9fUEE2X0lEWCkNCiNkZWZpbmUgUElOX1BDSzBfRkxBR1MJKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KDQojZGVmaW5lIFBJTl9QQ0tfMF9NQVNLIFBJT19QQTYNCiNkZWZpbmUgUElOX1BDS18wX1BJTyBQSU9BDQojZGVmaW5lIFBJTl9QQ0tfMF9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTl9QQ0tfMF9UWVBFIFBJT19QRVJJUEhfQg0KI2RlZmluZSBQSU5fUENLXzBfQVRUUiBQSU9fREVGQVVMVA0KI2RlZmluZSBQSU5fUENLMSAgICAgICAge1BJT19QQTE3Ql9QQ0sxLFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9QQ0tfMV9NQVNLIFBJT19QQTE3DQojZGVmaW5lIFBJTl9QQ0tfMV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fUENLXzFfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fUENLXzFfVFlQRSBQSU9fUEVSSVBIX0INCiNkZWZpbmUgUElOX1BDS18xX0FUVFIgUElPX0RFRkFVTFQNCg0KLyoqIFBJTyBQQVJBTExFTCBDQVBUVVJFICovDQovKiogUGFyYWxsZWwgQ2FwdHVyZSBNb2RlIERhdGEgRW5hYmxlMSAqLw0KI2RlZmluZSBQSU5fUElPRENFTjEgICAgUElPX1BBMTUNCi8qKiBQYXJhbGxlbCBDYXB0dXJlIE1vZGUgRGF0YSBFbmFibGUyICovDQojZGVmaW5lIFBJTl9QSU9EQ0VOMiAgICBQSU9fUEExNg0KDQovKiogVFdJIHZlciAzLnh4ICovDQojZGVmaW5lIFRXSV9WM1hYDQovKiogVFdJMCBkYXRhIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXRDAgICB7UElPX1BBM0FfVFdEMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBUV0kwIGNsb2NrIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXQ0swICB7UElPX1BBNEFfVFdDSzAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogVFdJMCBwaW5zICovDQojZGVmaW5lIFBJTlNfVFdJMCAgICAgIFBJTl9UV0lfVFdEMCwgUElOX1RXSV9UV0NLMA0KLyoqIFRXSTEgZGF0YSBwaW4gKi8NCiNkZWZpbmUgUElOX1RXSV9UV0QxICAge1BJT19QQjRBX1RXRDEsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogVFdJMSBjbG9jayBwaW4gKi8NCiNkZWZpbmUgUElOX1RXSV9UV0NLMSAge1BJT19QQjVBX1RXQ0sxLCBQSU9CLCBJRF9QSU9CLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFRXSTEgcGlucyAqLw0KI2RlZmluZSBQSU5TX1RXSTEgICAgICBQSU5fVFdJX1RXRDEsIFBJTl9UV0lfVFdDSzENCg0KLyoqIFVTQVJUMCBwaW4gUlggKi8NCiNkZWZpbmUgUElOX1VTQVJUMF9SWEQgICAge1BJT19QQTVBX1JYRDAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDBfUlhEX0lEWCAgICAgICAgKFBJT19QQTVfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQwX1JYRF9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDAgcGluIFRYICovDQojZGVmaW5lIFBJTl9VU0FSVDBfVFhEICAgIHtQSU9fUEE2QV9UWEQwLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQwX1RYRF9JRFggICAgICAgIChQSU9fUEE2X0lEWCkNCiNkZWZpbmUgUElOX1VTQVJUMF9UWERfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQovKiogVVNBUlQwIHBpbiBDVFMgKi8NCiNkZWZpbmUgUElOX1VTQVJUMF9DVFMgICAge1BJT19QQThBX0NUUzAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDBfQ1RTX0lEWCAgICAgICAgKFBJT19QQThfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQwX0NUU19GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDAgcGluIFJUUyAqLw0KI2RlZmluZSBQSU5fVVNBUlQwX1JUUyAgICB7UElPX1BBN0FfUlRTMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMF9SVFNfSURYICAgICAgICAoUElPX1BBN19JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDBfUlRTX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMCBwaW4gU0NLICovDQojZGVmaW5lIFBJTl9VU0FSVDBfU0NLICAgIHtQSU9fUEEyQl9TQ0swLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQwX1NDS19JRFggICAgICAgIChQSU9fUEEyX0lEWCkNCiNkZWZpbmUgUElOX1VTQVJUMF9TQ0tfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBVU0FSVDEgcGluIFJYICovDQojZGVmaW5lIFBJTl9VU0FSVDFfUlhEICAgIHtQSU9fUEEyMUFfUlhEMSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMV9SWERfSURYICAgICAgICAoUElPX1BBMjFfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQxX1JYRF9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDEgcGluIFRYICovDQojZGVmaW5lIFBJTl9VU0FSVDFfVFhEICAgIHtQSU9fUEEyMkFfVFhEMSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMV9UWERfSURYICAgICAgICAoUElPX1BBMjJfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQxX1RYRF9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDEgcGluIENUUyAqLw0KI2RlZmluZSBQSU5fVVNBUlQxX0NUUyAgICB7UElPX1BBMjVBX0NUUzEsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDFfQ1RTX0lEWCAgICAgICAgKFBJT19QQTI1X0lEWCkNCiNkZWZpbmUgUElOX1VTQVJUMV9DVFNfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQovKiogVVNBUlQxIHBpbiBSVFMgKi8NCiNkZWZpbmUgUElOX1VTQVJUMV9SVFMgICAge1BJT19QQTI0QV9SVFMxLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQxX1JUU19JRFggICAgICAgIChQSU9fUEEyNF9JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDFfUlRTX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMSBwaW4gRU5BQkxFICovDQojZGVmaW5lIFBJTl9VU0FSVDFfRU4gICAgIHtQSU9fUEEyM0FfU0NLMSwgUElPQSwgSURfUElPQSwgUElPX09VVFBVVF8wLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMV9FTl9JRFggICAgICAgICAoUElPX1BBMjNfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQxX0VOX0ZMQUdTICAgICAgIChQSU9fT1VUUFVUXzAgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDEgcGluIFNDSyAqLw0KI2RlZmluZSBQSU5fVVNBUlQxX1NDSyAgICB7UElPX1BBMjNBX1NDSzEsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDFfU0NLX0lEWCAgICAgICAgKFBJT19QQTIzX0lEWCkNCiNkZWZpbmUgUElOX1VTQVJUMV9TQ0tfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBVU0IgVkJ1cyBtb25pdG9yaW5nIHBpbiBkZWZpbml0aW9uLiAqLw0KI2lmZGVmIEJPQVJEX1JFVl9BDQojZGVmaW5lIFBJTl9VU0JfVkJVUyAgICB7UElPX1BDMjMsIFBJT0MsIElEX1BJT0MsIFBJT19JTlBVVCwgUElPX1BVTExVUH0NCiNlbmRpZg0KDQojaWZkZWYgQk9BUkRfUkVWX0INCiNkZWZpbmUgUElOX1VTQl9WQlVTICAgIHtQSU9fUEMyMSwgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2VuZGlmDQoNCi8qKiBOYW5kRmxhc2ggcGlucyBkZWZpbml0aW9uOiBPRS4gKi8NCiNkZWZpbmUgUElOX0VCSV9OQU5ET0UgICAgKFBJT19QQzlfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRPRV9GTEFHUyAgICAoUElPX1BFUklQSF9BIHwgUElPX1BVTExVUCkNCg0KLyoqIE5hbmRGbGFzaCBwaW5zIGRlZmluaXRpb246IFdFLiAqLw0KI2RlZmluZSBQSU5fRUJJX05BTkRXRSAgICAoUElPX1BDMTBfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRXRV9GTEFHUyAgICAoUElPX1BFUklQSF9BIHwgUElPX1BVTExVUCkNCg0KLyoqIE5hbmRGbGFzaCBwaW5zIGRlZmluaXRpb246IENMRS4gKi8NCiNkZWZpbmUgUElOX0VCSV9OQU5EQ0xFICAgIChQSU9fUEMxN19JRFgpDQojZGVmaW5lIFBJTl9FQklfTkFORENMRV9GTEFHUyAgICAoUElPX1BFUklQSF9BIHwgUElPX1BVTExVUCkNCg0KLyoqIE5hbmRGbGFzaCBwaW5zIGRlZmluaXRpb246IEFMRS4gKi8NCiNkZWZpbmUgUElOX0VCSV9OQU5EQUxFICAgIChQSU9fUEMxNl9JRFgpDQojZGVmaW5lIFBJTl9FQklfTkFOREFMRV9GTEFHUyAgICAoUElPX1BFUklQSF9BIHwgUElPX1BVTExVUCkNCg0KLyoqIE5hbmRGbGFzaCBwaW5zIGRlZmluaXRpb246IERBVEEuICovDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzAgICAgKFBJT19QQzBfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT18wX0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzEgICAgKFBJT19QQzFfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT18xX0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzIgICAgKFBJT19QQzJfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT18yX0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzMgICAgKFBJT19QQzNfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT18zX0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzQgICAgKFBJT19QQzRfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT180X0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzUgICAgKFBJT19QQzVfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT181X0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzYgICAgKFBJT19QQzZfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT182X0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQojZGVmaW5lIFBJTl9FQklfTkFORElPXzcgICAgKFBJT19QQzdfSURYKQ0KI2RlZmluZSBQSU5fRUJJX05BTkRJT183X0ZMQUdTICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQKQ0KDQovKiogTmFuZGZsYXNoIGNoaXAgZW5hYmxlIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fTkZfQ0VfSURYICAgIChQSU9fUEMxNF9JRFgpDQojZGVmaW5lIFBJTl9ORl9DRV9GTEFHUyAgICAoUElPX1RZUEVfUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBOYW5kZmxhc2ggcmVhZHkvYnVzeSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX05GX1JCX0lEWCAgICAoUElPX1BDMThfSURYKQ0KI2RlZmluZSBQSU5fTkZfUkJfRkxBR1MgICAgKFBJT19JTlBVVCB8IFBJT19QVUxMVVApDQoNCi8qIENoaXAgc2VsZWN0IG51bWJlciBmb3IgbmFuZCAqLw0KI2RlZmluZSBCT0FSRF9OQU5EX0NTICAgIDANCg0KLyogUElPIGRlZmluaXRpb25zIGZvciBTbGlkZXIgKi8NCiNkZWZpbmUgU0xJREVSX0lPTUFTS19TTlMgICAodWludDMyX3QpKFBJT19QQTAgfCBQSU9fUEEyIHwgUElPX1BBNCkNCiNkZWZpbmUgU0xJREVSX0lPTUFTS19TTlNLICAodWludDMyX3QpKFBJT19QQTEgfCBQSU9fUEEzIHwgUElPX1BBNSkNCiNkZWZpbmUgUElOU19TTElERVJfU05TICAgICB7U0xJREVSX0lPTUFTS19TTlMsICBQSU9BLCBJRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5TX1NMSURFUl9TTlNLICAgIHtTTElERVJfSU9NQVNLX1NOU0ssIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQoNCi8qIFBJTyBkZWZpbml0aW9ucyBmb3Iga2V5cyAqLw0KI2RlZmluZSBLRVlfSU9NQVNLX1NOUyAgICh1aW50MzJfdCkoUElPX1BDMjIgfCBQSU9fUEMyNCB8IFBJT19QQzI2IHwgUElPX1BDMjggfCBQSU9fUEMzMCkNCiNkZWZpbmUgS0VZX0lPTUFTS19TTlNLICAodWludDMyX3QpKFBJT19QQzIzIHwgUElPX1BDMjUgfCBQSU9fUEMyNyB8IFBJT19QQzI5IHwgUElPX1BDMzEpDQojZGVmaW5lIFBJTlNfS0VZX1NOUyAgICAge0tFWV9JT01BU0tfU05TLCAgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOU19LRVlfU05TSyAgICB7S0VZX0lPTUFTS19TTlNLLCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KDQovKiBQSU9TIGZvciBRVG91Y2ggKi8NCiNkZWZpbmUgUElOU19RVE9VQ0ggICAgIFBJTlNfU0xJREVSX1NOUywgUElOU19TTElERVJfU05TSywgUElOU19LRVlfU05TLCBQSU5TX0tFWV9TTlNLDQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtM3NfZWtfdXNiICJTQU0zUy1FSyAtIFVTQiBkZXZpY2UiDQogKg0KICogXHNlY3Rpb24gRGVmaW5pdGlvbnMNCiAqIC0gXHJlZiBCT0FSRF9VU0JfQk1BVFRSSUJVVEVTDQogKiAtIFxyZWYgQ0hJUF9VU0JfVURQDQogKiAtIFxyZWYgQ0hJUF9VU0JfUFVMTFVQX0lOVEVSTkFMDQogKiAtIFxyZWYgQ0hJUF9VU0JfTlVNRU5EUE9JTlRTDQogKiAtIFxyZWYgQ0hJUF9VU0JfRU5EUE9JTlRTX01BWFBBQ0tFVFNJWkUNCiAqIC0gXHJlZiBDSElQX1VTQl9FTkRQT0lOVFNfQkFOS1MNCiAqLw0KDQovKiogVVNCIGF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBkZXNjcmlwdG9yIChidXMgb3Igc2VsZiBwb3dlcmVkLCByZW1vdGUgd2FrZXVwKSAqLw0KI2RlZmluZSBCT0FSRF9VU0JfQk1BVFRSSUJVVEVTICAgICAgICAgICAgICBVU0JDb25maWd1cmF0aW9uRGVzY3JpcHRvcl9TRUxGUE9XRVJFRF9SV0FLRVVQDQoNCi8qKiBJbmRpY2F0ZXMgY2hpcCBoYXMgYW4gVURQIEZ1bGwgU3BlZWQuICovDQojZGVmaW5lIENISVBfVVNCX1VEUA0KDQovKiogSW5kaWNhdGVzIGNoaXAgaGFzIGFuIGludGVybmFsIHB1bGwtdXAuICovDQojZGVmaW5lIENISVBfVVNCX1BVTExVUF9JTlRFUk5BTA0KDQovKiogTnVtYmVyIG9mIFVTQiBlbmRwb2ludHMgKi8NCiNkZWZpbmUgQ0hJUF9VU0JfTlVNRU5EUE9JTlRTIDgNCg0KLyoqIEVuZHBvaW50cyBtYXggcGFja2V0IHNpemUgKi8NCiNkZWZpbmUgQ0hJUF9VU0JfRU5EUE9JTlRTX01BWFBBQ0tFVFNJWkUoaSkgXA0KICAgKChpID09IDApID8gNjQgOiBcDQogICAoKGkgPT0gMSkgPyA2NCA6IFwNCiAgICgoaSA9PSAyKSA/IDY0IDogXA0KICAgKChpID09IDMpID8gNjQgOiBcDQogICAoKGkgPT0gNCkgPyA1MTIgOiBcDQogICAoKGkgPT0gNSkgPyA1MTIgOiBcDQogICAoKGkgPT0gNikgPyA2NCA6IFwNCiAgICgoaSA9PSA3KSA/IDY0IDogMCApKSkpKSkpKQ0KDQovKiogRW5kcG9pbnRzIE51bWJlciBvZiBCYW5rICovDQojZGVmaW5lIENISVBfVVNCX0VORFBPSU5UU19CQU5LUyhpKSBcDQogICAoKGkgPT0gMCkgPyAxIDogXA0KICAgKChpID09IDEpID8gMiA6IFwNCiAgICgoaSA9PSAyKSA/IDIgOiBcDQogICAoKGkgPT0gMykgPyAxIDogXA0KICAgKChpID09IDQpID8gMiA6IFwNCiAgICgoaSA9PSA1KSA/IDIgOiBcDQogICAoKGkgPT0gNikgPyAyIDogXA0KICAgKChpID09IDcpID8gMiA6IDAgKSkpKSkpKSkNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtM3NfZWtfZXh0Y29tcCAiU0FNM1MtRUsgLSBFeHRlcm5hbCBjb21wb25lbnRzIg0KICogVGhpcyBwYWdlIGxpc3RzIHRoZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGV4dGVybmFsIG9uLWJvYXJkIGNvbXBvbmVudHMNCiAqIGxvY2F0ZWQgaW4gdGhlIGJvYXJkLmggZmlsZSBmb3IgdGhlIFNBTTNTLUVLLg0KICoNCiAqIFNEIENhcmQNCiAqIC0gXHJlZiBCT0FSRF9TRF9QSU5TDQogKiAtIFxyZWYgQk9BUkRfU0RfUElOX0NEDQogKg0KICogTENEDQogKiAtIFxyZWYgQk9BUkRfTENEX0lMSTkzMjUNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfUElOUw0KICogLSBccmVmIEJPQVJEX0JBQ0tMSUdIVF9QSU4NCiAqIC0gXHJlZiBCT0FSRF9MQ0RfQkFTRQ0KICogLSBccmVmIEJPQVJEX0xDRF9SUw0KICoNCiAqIFRvdWNoU2NyZWVuDQogKiAtIFxyZWYgQk9BUkRfVFNDX0FEUzc4NDMNCiAqIC0gXHJlZiBQSU5fVENTX0lSUQ0KICogLSBccmVmIFBJTl9UQ1NfQlVTWQ0KICogLSBccmVmIEJPQVJEX1RTQ19TUElfQkFTRQ0KICogLSBccmVmIEJPQVJEX1RTQ19TUElfSUQNCiAqIC0gXHJlZiBCT0FSRF9UU0NfU1BJX1BJTlMNCiAqIC0gXHJlZiBCT0FSRF9UU0NfTlBDUw0KICogLSBccmVmIEJPQVJEX1RTQ19OUENTX1BJTg0KICoNCiAqIFNtYXJ0Q2FyZA0KICogLSBccmVmIFNNQVJUQ0FSRF9DT05ORUNUX1BJTg0KICogLSBccmVmIFBJTl9JU083ODE2X1JTVE1DDQogKiAtIFxyZWYgUElOU19JU083ODE2DQogKi8NCg0KLyoqIEhTTUNJIHBpbnMgdGhhdCBzaGFsbCBiZSBjb25maWd1cmVkIHRvIGFjY2VzcyB0aGUgU0QgY2FyZC4gKi8NCiNkZWZpbmUgQk9BUkRfU0RfUElOUyAgICAgICAgICAgICAgIFBJTlNfSFNNQ0kNCi8qKiBIU01DSSBDYXJkIERldGVjdCBwaW4uICovDQojZGVmaW5lIEJPQVJEX1NEX1BJTl9DRCAgICAgICAgICAgICBQSU5fSFNNQ0lfQ0QNCg0KLyoqIEluZGljYXRlcyBib2FyZCBoYXMgYW4gSUxJOTMyNSBleHRlcm5hbCBjb21wb25lbnQgdG8gbWFuYWdlIExDRC4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX0lMSTkzMjUNCg0KLyoqIEJhY2tsaWdodCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgQk9BUkRfQkFDS0xJR0hUICAgICAgICAgIFBJT19QQzEzX0lEWA0KI2RlZmluZSBCT0FSRF9CQUNLTElHSFRfRkxBRyAgICAgICBQSU9fT1VUUFVUXzAgfCBQSU9fREVGQVVMVA0KI2RlZmluZSBCT0FSRF9CQUNLTElHSFRfUElOICAgICAgICAge1BJT19QQzEzLCBQSU9DLCBJRF9QSU9DLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fQk9BUkRfQkFDS0xJR0hUX01BU0sgUElPX1BDMTMNCiNkZWZpbmUgUElOX0JPQVJEX0JBQ0tMSUdIVF9QSU8gUElPQw0KI2RlZmluZSBQSU5fQk9BUkRfQkFDS0xJR0hUX0lEIElEX1BJT0MNCiNkZWZpbmUgUElOX0JPQVJEX0JBQ0tMSUdIVF9UWVBFIFBJT19PVVRQVVRfMA0KI2RlZmluZSBQSU5fQk9BUkRfQkFDS0xJR0hUX0FUVFIgUElPX1BVTExVUA0KLyoqIERlZmluZSBJTEk5MzI1IGJhc2UgYWRkcmVzcy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX0JBU0UgICAgICAgICAgICAgIDB4NjEwMDAwMDANCi8qKiBEZWZpbmUgSUxJOTMyNSByZWdpc3RlciBzZWxlY3Qgc2lnbmFsLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfUlMgICAgICAgICAgICAgICAgKDEgPDwgMSkNCg0KLyoqIEluZGljYXRlcyBib2FyZCBoYXMgYW4gQURTNzg0MyBleHRlcm5hbCBjb21wb25lbnQgdG8gbWFuYWdlIFRvdWNoIFNjcmVlbiAqLw0KI2RlZmluZSBCT0FSRF9UU0NfQURTNzg0Mw0KDQovKiogRGVmaW5pdGlvbiBvZiBNTUE3MzQxTCB4LHkseiBheGlzIGNoYW5uZWwgbnVtYmVyICovDQojZGVmaW5lIE1NQTczNDFMX0FEQ19DSEFOTkVMX1ggIDINCiNkZWZpbmUgTU1BNzM0MUxfQURDX0NIQU5ORUxfWSAgNg0KI2RlZmluZSBNTUE3MzQxTF9BRENfQ0hBTk5FTF9aICA3DQoNCi8qKiBNTUE3MzQxTCBtb2RlIHNldCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX01NQTczNDFMX01PREUgICAgICAgICAgICAgICAgUElPX1BDMTNfSURYDQojZGVmaW5lIFBJTl9NTUE3MzQxTF9NT0RFX0ZMQUcgICAgICAgUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQNCg0KLyoqIE1NQTczNDFMIFgsWSxaIGF4aXMgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9NTUE3MzQxTF9YX0FYSVMgICAgICAgICAgICAgICAgUElPX1BCM19JRFgNCiNkZWZpbmUgUElOX01NQTczNDFMX1hfQVhJU19GTEFHICAgICAgIFBJT19JTlBVVCB8IFBJT19ERUZBVUxUDQojZGVmaW5lIFBJTl9NTUE3MzQxTF9ZX0FYSVMgICAgICAgICAgICAgICAgUElPX1BDMTdfSURYDQojZGVmaW5lIFBJTl9NTUE3MzQxTF9ZX0FYSVNfRkxBRyAgICAgICBQSU9fSU5QVVQgfCBQSU9fREVGQVVMVA0KI2RlZmluZSBQSU5fTU1BNzM0MUxfWl9BWElTICAgICAgICAgICAgICAgIFBJT19QQzE4X0lEWA0KI2RlZmluZSBQSU5fTU1BNzM0MUxfWl9BWElTX0ZMQUcgICAgICAgUElPX0lOUFVUIHwgUElPX0RFRkFVTFQNCg0KLyoqIFRvdWNoc2NyZWVuIGNvbnRyb2xsZXIgSVJRIHBpbiBkZWZpbml0aW9uLiAqLw0KI2lmZGVmIEJPQVJEX1JFVl9BDQojZGVmaW5lIFBJTl9UU0NfSVJRX0lEWCAgICBQSU9fUEE0X0lEWA0KI2RlZmluZSBQSU5fVFNDX0lSUV9GTEFHICBQSU9fSU5QVVQgfCBQSU9fUFVMTFVQDQojZGVmaW5lIFBJTl9UU0NfSVJRICB7UElPX1BBNCwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fVFNDX0lSUV9NQVNLIFBJT19QQTQNCiNkZWZpbmUgUElOX1RTQ19JUlFfUElPIFBJT0ENCiNkZWZpbmUgUElOX1RTQ19JUlFfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fVFNDX0lSUV9UWVBFIFBJT19JTlBVVA0KI2RlZmluZSBQSU5fVFNDX0lSUV9BVFRSIFBJT19QVUxMVVANCiNkZWZpbmUgUElOX1RTQ19JUlFfV1VQX0lEICgxIDw8IDMpDQovKiogVG91Y2hzY3JlZW4gY29udHJvbGxlciBCdXN5IHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVFNDX0JVU1lfSURYICBQSU9fUEE1X0lEWA0KI2RlZmluZSBQSU5fVFNDX0JVU1lfRkxBRyAgICBQSU9fSU5QVVQgfCBQSU9fUFVMTFVQDQojZGVmaW5lIFBJTl9UU0NfQlVTWSB7UElPX1BBNSwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfTUFTSyBQSU9fUEE1DQojZGVmaW5lIFBJTl9UU0NfQlVTWV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfVFlQRSBQSU9fSU5QVVQNCiNkZWZpbmUgUElOX1RTQ19CVVNZX0FUVFIgUElPX1BVTExVUA0KI2VuZGlmDQoNCiNpZmRlZiBCT0FSRF9SRVZfQg0KI2RlZmluZSBQSU5fVFNDX0lSUV9JRFggICAgUElPX1BBMTZfSURYDQojZGVmaW5lIFBJTl9UU0NfSVJRX0ZMQUcgIFBJT19JTlBVVCB8IFBJT19QVUxMVVANCiNkZWZpbmUgUElOX1RTQ19JUlEgIHtQSU9fUEExNiwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fVFNDX0lSUV9NQVNLIFBJT19QQTE2DQojZGVmaW5lIFBJTl9UU0NfSVJRX1BJTyBQSU9BDQojZGVmaW5lIFBJTl9UU0NfSVJRX0lEIElEX1BJT0ENCiNkZWZpbmUgUElOX1RTQ19JUlFfVFlQRSBQSU9fSU5QVVQNCiNkZWZpbmUgUElOX1RTQ19JUlFfQVRUUiBQSU9fUFVMTFVQDQojZGVmaW5lIFBJTl9UU0NfSVJRX1dVUF9JRCAoMSA8PCAxNSkNCi8qKiBUb3VjaHNjcmVlbiBjb250cm9sbGVyIEJ1c3kgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9UU0NfQlVTWV9JRFggIFBJT19QQTE3X0lEWA0KI2RlZmluZSBQSU5fVFNDX0JVU1lfRkxBRyAgICBQSU9fSU5QVVQgfCBQSU9fUFVMTFVQDQojZGVmaW5lIFBJTl9UU0NfQlVTWSB7UElPX1BBMTcsIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX1BVTExVUH0NCiNkZWZpbmUgUElOX1RTQ19CVVNZX01BU0sgUElPX1BBMTcNCiNkZWZpbmUgUElOX1RTQ19CVVNZX1BJTyBQSU9BDQojZGVmaW5lIFBJTl9UU0NfQlVTWV9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTl9UU0NfQlVTWV9UWVBFIFBJT19JTlBVVA0KI2RlZmluZSBQSU5fVFNDX0JVU1lfQVRUUiBQSU9fUFVMTFVQDQojZW5kaWYNCg0KLyoqIEJhc2UgYWRkcmVzcyBvZiBTUEkgcGVyaXBoZXJhbCBjb25uZWN0ZWQgdG8gdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIuICovDQojZGVmaW5lIEJPQVJEX1RTQ19TUElfQkFTRSAgICAgICAgIFNQSQ0KLyoqIElkZW50aWZpZXIgb2YgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSB0b3VjaHNjcmVlbiBjb250cm9sbGVyLiAqLw0KI2RlZmluZSBCT0FSRF9UU0NfU1BJX0lEICAgICAgICAgICBJRF9TUEkNCi8qKiBQaW5zIG9mIHRoZSBTUEkgcGVyaXBoZXJhbCBjb25uZWN0ZWQgdG8gdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIuICovDQojZGVmaW5lIEJPQVJEX1RTQ19TUElfUElOUyAgICAgICAgIFBJTlNfU1BJDQovKiogQ2hpcCBzZWxlY3QgY29ubmVjdGVkIHRvIHRoZSB0b3VjaHNjcmVlbiBjb250cm9sbGVyLiAqLw0KI2RlZmluZSBCT0FSRF9UU0NfTlBDUyAgICAgICAgICAgICAwDQovKiogQ2hpcCBzZWxlY3QgcGluIGNvbm5lY3RlZCB0byB0aGUgdG91Y2hzY3JlZW4gY29udHJvbGxlci4gKi8NCiNkZWZpbmUgQk9BUkRfVFNDX05QQ1NfUElOICAgICAgICAgUElOX1NQSV9OUENTMF9QQTExDQoNCi8vLyBTbWFydGNhcmQgZGV0ZWN0aW9uIHBpbg0KLy8jZGVmaW5lIFNNQVJUQ0FSRF9DT05ORUNUX1BJTiB7MSA8PCAxMywgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCg0KLy8vIFBJTiB1c2VkIGZvciByZXNldCB0aGUgc21hcnRjYXJkDQojZGVmaW5lIFBJTl9JU083ODE2X1JTVE1DICAgICAgIHsxIDw8IDExLCBQSU9BLCBJRF9QSU9BLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KLy8vIFBpbnMgdXNlZCBmb3IgY29ubmVjdCB0aGUgc21hcnRjYXJkDQojZGVmaW5lIFBJTlNfSVNPNzgxNiAgICAgICAgICAgIFBJTl9VU0FSVDFfVFhELCBQSU5fVVNBUlQxX1NDSywgUElOX0lTTzc4MTZfUlNUTUMNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtM3NfZWtfbWVtICJTQU0zUy1FSyAtIE1lbW9yaWVzIg0KICogVGhpcyBwYWdlIGxpc3RzIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gaW50ZXJuYWwgJiBleHRlcm5hbCBvbi1ib2FyZCBtZW1vcmllcy4NCiAqDQogKiBcc2VjdGlvbiBOYW5kRmxhc2gNCiAqIC0gXHJlZiBCT0FSRF9ORl9DT01NQU5EX0FERFINCiAqIC0gXHJlZiBCT0FSRF9ORl9BRERSRVNTX0FERFINCiAqIC0gXHJlZiBCT0FSRF9ORl9EQVRBX0FERFINCiAqDQogKiBcc2VjdGlvbiBOb3JGbGFzaA0KICogLSBccmVmIEJPQVJEX05PUkZMQVNIX0FERFINCiAqIC0gXHJlZiBCT0FSRF9OT1JGTEFTSF9ERlRfQlVTX1NJWkUNCiAqLw0KDQovKiogQWRkcmVzcyBmb3IgdHJhbnNmZXJyaW5nIGNvbW1hbmQgYnl0ZXMgdG8gdGhlIG5hbmRmbGFzaC4gKi8NCiNkZWZpbmUgQk9BUkRfTkZfQ09NTUFORF9BRERSICAgMHg2MDQwMDAwMA0KLyoqIEFkZHJlc3MgZm9yIHRyYW5zZmVycmluZyBhZGRyZXNzIGJ5dGVzIHRvIHRoZSBuYW5kZmxhc2guICovDQojZGVmaW5lIEJPQVJEX05GX0FERFJFU1NfQUREUiAgIDB4NjAyMDAwMDANCi8qKiBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBieXRlcyB0byB0aGUgbmFuZGZsYXNoLiAqLw0KI2RlZmluZSBCT0FSRF9ORl9EQVRBX0FERFIgICAgICAweDYwMDAwMDAwDQovKiBCdXMgd2lkdGggZm9yIE5BTkQgKi8NCiNkZWZpbmUgQ09ORl9ORl9CVVNXSURUSCAgICA4DQovKiBBY2Nlc3MgdGltaW5nIGZvciBOQU5EICovDQojZGVmaW5lIENPTkZfTkZfU0VUVVBfVElNSU5HIChTTUNfU0VUVVBfTldFX1NFVFVQKDApIFwNCgkJfCBTTUNfU0VUVVBfTkNTX1dSX1NFVFVQKDEpIFwNCgkJfCBTTUNfU0VUVVBfTlJEX1NFVFVQKDApIFwNCgkJfCBTTUNfU0VUVVBfTkNTX1JEX1NFVFVQKDEpKQ0KI2RlZmluZSBDT05GX05GX1BVTFNFX1RJTUlORyAoU01DX1BVTFNFX05XRV9QVUxTRSgyKSBcDQoJCXwgU01DX1BVTFNFX05DU19XUl9QVUxTRSgzKSBcDQoJCXwgU01DX1BVTFNFX05SRF9QVUxTRSg0KSBcDQoJCXwgU01DX1BVTFNFX05DU19SRF9QVUxTRSg0KSkNCiNkZWZpbmUgQ09ORl9ORl9DWUNMRV9USU1JTkcgKFNNQ19DWUNMRV9OV0VfQ1lDTEUoNCkgXA0KCQl8IFNNQ19DWUNMRV9OUkRfQ1lDTEUoNykpDQoNCi8qKiBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgY29tbWFuZCBieXRlcyB0byB0aGUgbm9yZmxhc2guICovDQojZGVmaW5lIEJPQVJEX05PUkZMQVNIX0FERFIgICAgIDB4NjMwMDAwMDANCi8qKiBEZWZhdWx0IE5PUiBidXMgc2l6ZSBhZnRlciBwb3dlciB1cCByZXNldCAqLw0KI2RlZmluZSBCT0FSRF9OT1JGTEFTSF9ERlRfQlVTX1NJWkUgOA0KDQovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLyoqDQogKiBccGFnZSBzYW0zc19la19jaGlwZGVmICJTQU0zUy1FSyAtIEluZGl2aWR1YWwgY2hpcCBkZWZpbml0aW9uIg0KICogVGhpcyBwYWdlIGxpc3RzIHRoZSBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGRpZmZlcmVudCBjaGlwJ3MgZGVmaW5pdGlvbg0KICogbG9jYXRlZCBpbiB0aGUgYm9hcmQuaCBmaWxlIGZvciB0aGUgU0FNM1MtRUsuDQogKg0KICogXHNlY3Rpb24gVVNBUlQNCiAqIC0gXHJlZiBCT0FSRF9QSU5fVVNBUlRfUlhEDQogKiAtIFxyZWYgQk9BUkRfUElOX1VTQVJUX1RYRA0KICogLSBccmVmIEJPQVJEX1BJTl9VU0FSVF9DVFMNCiAqIC0gXHJlZiBCT0FSRF9QSU5fVVNBUlRfUlRTDQogKiAtIFxyZWYgQk9BUkRfUElOX1VTQVJUX0VODQogKiAtIFxyZWYgQk9BUkRfVVNBUlRfQkFTRQ0KICogLSBccmVmIEJPQVJEX0lEX1VTQVJUDQogKi8NCg0KLyoqIFJ0YyAqLw0KI2RlZmluZSBCT0FSRF9SVENfSUQgICAgICAgICAgICAgICAgSURfUlRDDQoNCi8qKiBUV0kgSUQgZm9yIEVFUFJPTSBhcHBsaWNhdGlvbiB0byB1c2UgKi8NCiNkZWZpbmUgQk9BUkRfSURfVFdJX0VFUFJPTSAgICAgICAgIElEX1RXSTENCi8qKiBUV0kgQmFzZSBmb3IgVFdJIEVFUFJPTSBhcHBsaWNhdGlvbiB0byB1c2UgKi8NCiNkZWZpbmUgQk9BUkRfQkFTRV9UV0lfRUVQUk9NICAgICAgIFRXSTENCi8qKiBUV0kgcGlucyBmb3IgRUVQUk9NIGFwcGxpY2F0aW9uIHRvIHVzZSAqLw0KI2RlZmluZSBCT0FSRF9QSU5TX1RXSV9FRVBST00gICAgICAgUElOU19UV0kxDQoNCi8qKiBVU0FSVCBSWCBwaW4gZm9yIGFwcGxpY2F0aW9uICovDQojZGVmaW5lIEJPQVJEX1BJTl9VU0FSVF9SWEQgICAgICAgIFBJTl9VU0FSVDFfUlhEDQovKiogVVNBUlQgVFggcGluIGZvciBhcHBsaWNhdGlvbiAqLw0KI2RlZmluZSBCT0FSRF9QSU5fVVNBUlRfVFhEICAgICAgICBQSU5fVVNBUlQxX1RYRA0KLyoqIFVTQVJUIENUUyBwaW4gZm9yIGFwcGxpY2F0aW9uICovDQojZGVmaW5lIEJPQVJEX1BJTl9VU0FSVF9DVFMgICAgICAgIFBJTl9VU0FSVDFfQ1RTDQovKiogVVNBUlQgUlRTIHBpbiBmb3IgYXBwbGljYXRpb24gKi8NCiNkZWZpbmUgQk9BUkRfUElOX1VTQVJUX1JUUyAgICAgICAgUElOX1VTQVJUMV9SVFMNCi8qKiBVU0FSVCBFTkFCTEUgcGluIGZvciBhcHBsaWNhdGlvbiAqLw0KI2RlZmluZSBCT0FSRF9QSU5fVVNBUlRfRU4gICAgICAgICBQSU5fVVNBUlQxX0VODQovKiogVVNBUlQgQmFzZSBmb3IgYXBwbGljYXRpb24gKi8NCiNkZWZpbmUgQk9BUkRfVVNBUlRfQkFTRSAgICAgICAgICAgVVNBUlQxDQovKiogVVNBUlQgSUQgZm9yIGFwcGxpY2F0aW9uICovDQojZGVmaW5lIEJPQVJEX0lEX1VTQVJUICAgICAgICAgICAgIElEX1VTQVJUMQ0KDQojZGVmaW5lIENPTlNPTEVfVUFSVAkJCSAgIFVBUlQwDQojZGVmaW5lIENPTlNPTEVfVUFSVF9JRCAgICAgICAgICAgIElEX1VBUlQwDQoNCi8qIFJFIHBpbi4gKi8NCiNkZWZpbmUgUElOX1JFX0lEWCAgICAgICAgICAgICAgICAgUElOX1VTQVJUMV9DVFNfSURYDQojZGVmaW5lIFBJTl9SRV9GTEFHUyAgICAgICAgICAgICAgIChQSU9fT1VUUFVUXzAgfCBQSU9fREVGQVVMVCkNCg0KLyogSVJEQSBTRCBwaW4uICovDQojZGVmaW5lIFBJTl9JUkRBX1NEX0lEWCAgICAgICAgICAgIFBJTl9VU0FSVDFfQ1RTX0lEWA0KI2RlZmluZSBQSU5fSVJEQV9TRF9GTEFHUyAgICAgICAgICAoUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCi8qIFRYRCBwaW4gY29uZmlndXJhdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUX1RYRF9JRFggICAgICAgICAgUElOX1VTQVJUMV9UWERfSURYDQojZGVmaW5lIFBJTl9VU0FSVF9UWERfRkxBR1MgICAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCiNkZWZpbmUgUElOX1VTQVJUX1RYRF9JT19GTEFHUyAgICAgKFBJT19PVVRQVVRfMCB8IFBJT19ERUZBVUxUKQ0KDQovKiBJU083ODE2IGV4YW1wbGUgcmVsYXRlIFBJTiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBJU083ODE2X1VTQVJUX0lEICAgICAgICAgICBJRF9VU0FSVDENCiNkZWZpbmUgSVNPNzgxNl9VU0FSVCAgICAgICAgICAgICAgVVNBUlQxDQojZGVmaW5lIFBJTl9JU083ODE2X1JTVF9JRFggICAgICAgIFBJT19QQTE1X0lEWA0KI2RlZmluZSBQSU5fSVNPNzgxNl9SU1RfRkxBRyAgICAgICAoUElPX09VVFBVVF8wIHwgUElPX0RFRkFVTFQpDQoNCiNlbmRpZiAgLy8gX1NBTTNTX0VLMl9IXw0K