LyoqDQogKiBcZmlsZQ0KICoNCiAqIFxicmllZiBTQU00Uy1FSyBCb2FyZCBEZWZpbml0aW9uLg0KICoNCiAqIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMTIgQXRtZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogXGFzZl9saWNlbnNlX3N0YXJ0DQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCiAqDQogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICoNCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24NCiAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICoNCiAqIDMuIFRoZSBuYW1lIG9mIEF0bWVsIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KICogICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICoNCiAqIDQuIFRoaXMgc29mdHdhcmUgbWF5IG9ubHkgYmUgcmVkaXN0cmlidXRlZCBhbmQgdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggYW4NCiAqICAgIEF0bWVsIG1pY3JvY29udHJvbGxlciBwcm9kdWN0Lg0KICoNCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVRNRUwgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRA0KICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQgQVJFDQogKiBFWFBSRVNTTFkgQU5EIFNQRUNJRklDQUxMWSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBVE1FTCBCRSBMSUFCTEUgRk9SDQogKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQogKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUw0KICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsDQogKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4NCiAqIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogKg0KICogXGFzZl9saWNlbnNlX3N0b3ANCiAqDQogKi8NCg0KI2lmbmRlZiBfU0FNNFNfRUtfSF8NCiNkZWZpbmUgX1NBTTRTX0VLX0hfDQoNCiNpbmNsdWRlICJjb21waWxlci5oIg0KI2luY2x1ZGUgInN5c3RlbV9zYW00cy5oIg0KI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCINCg0KLyoNCiNkZWZpbmUgQk9BUkRfUkVWX0ENCiovDQojZGVmaW5lIEJPQVJEX1JFVl9CDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqICBccGFnZSBzYW00c19la19vcGZyZXEgIlNBTTRTLUVLIC0gT3BlcmF0aW5nIGZyZXF1ZW5jaWVzIg0KICogIFRoaXMgcGFnZSBsaXN0cyBzZXZlcmFsIGRlZmluaXRpb24gcmVsYXRlZCB0byB0aGUgYm9hcmQgb3BlcmF0aW5nIGZyZXF1ZW5jeQ0KICoNCiAqICBcc2VjdGlvbiBEZWZpbml0aW9ucw0KICogIC0gXHJlZiBCT0FSRF9GUkVRXyoNCiAqICAtIFxyZWYgQk9BUkRfTUNLDQogKi8NCg0KLyoqIEJvYXJkIG9zY2lsbGF0b3Igc2V0dGluZ3MgKi8NCiNkZWZpbmUgQk9BUkRfRlJFUV9TTENLX1hUQUwJCSgzMjc2OFUpDQojZGVmaW5lIEJPQVJEX0ZSRVFfU0xDS19CWVBBU1MJCSgzMjc2OFUpDQojZGVmaW5lIEJPQVJEX0ZSRVFfTUFJTkNLX1hUQUwJCSgxMjAwMDAwMFUpDQojZGVmaW5lIEJPQVJEX0ZSRVFfTUFJTkNLX0JZUEFTUwkoMTIwMDAwMDBVKQ0KDQovKiogTWFzdGVyIGNsb2NrIGZyZXF1ZW5jeSAqLw0KI2RlZmluZSBCT0FSRF9NQ0sJCQkJCUNISVBfRlJFUV9DUFVfTUFYDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqIFxwYWdlIHNhbTRzX2VrX2JvYXJkX2luZm8gIlNBTTRTLUVLIC0gQm9hcmQgaW5mb3JtYXRpb25zIg0KICogVGhpcyBwYWdlIGxpc3RzIHNldmVyYWwgZGVmaW5pdGlvbiByZWxhdGVkIHRvIHRoZSBib2FyZCBkZXNjcmlwdGlvbi4NCiAqDQogKiBcc2VjdGlvbiBEZWZpbml0aW9ucw0KICogLSBccmVmIEJPQVJEX05BTUUNCiAqLw0KDQovKiogTmFtZSBvZiB0aGUgYm9hcmQgKi8NCiNkZWZpbmUgQk9BUkRfTkFNRSAiU0FNNFMtRUsiDQovKiogQm9hcmQgZGVmaW5pdGlvbiAqLw0KI2RlZmluZSBzYW00c2VrDQovKiogRmFtaWx5IGRlZmluaXRpb24gKGFscmVhZHkgZGVmaW5lZCkgKi8NCiNkZWZpbmUgc2FtNHMNCi8qKiBDb3JlIGRlZmluaXRpb24gKi8NCiNkZWZpbmUgY29ydGV4bTMNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtNHNfZWtfcGlvZGVmICJTQU00Uy1FSyAtIFBJTyBkZWZpbml0aW9ucyINCiAqIFRoaXMgcGFnZXMgbGlzdHMgYWxsIHRoZSBwaW8gZGVmaW5pdGlvbnMuIFRoZSBjb25zdGFudHMNCiAqIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246IFBJTl8qIGZvciBhIGNvbnN0YW50IHdoaWNoIGRlZmluZXMNCiAqIGEgc2luZ2xlIFBpbiBpbnN0YW5jZSAoYnV0IG1heSBpbmNsdWRlIHNldmVyYWwgUElPcyBzaGFyaW5nIHRoZSBzYW1lDQogKiBjb250cm9sbGVyKSwgYW5kIFBJTlNfKiBmb3IgYSBsaXN0IG9mIFBpbiBpbnN0YW5jZXMuDQogKg0KICogQURDDQogKiAtIFxyZWYgUElOX0FEQzBfQUQwDQogKiAtIFxyZWYgUElOX0FEQzBfQUQxDQogKiAtIFxyZWYgUElOX0FEQzBfQUQyDQogKiAtIFxyZWYgUElOX0FEQzBfQUQzDQogKiAtIFxyZWYgUElOX0FEQzBfQUQ0DQogKiAtIFxyZWYgUElOX0FEQzBfQUQ1DQogKiAtIFxyZWYgUElOX0FEQzBfQUQ2DQogKiAtIFxyZWYgUElOX0FEQzBfQUQ3DQogKiAtIFxyZWYgUElOU19BREMNCiAqDQogKiBVQVJUDQogKiAtIFxyZWYgUElOU19VQVJUDQogKg0KICogRUJJDQogKiAtIFxyZWYgUElOX0VCSV9EQVRBX0JVUw0KICogLSBccmVmIFBJTl9FQklfTlJEDQogKiAtIFxyZWYgUElOX0VCSV9OV0UNCiAqIC0gXHJlZiBQSU5fRUJJX05DUzANCiAqIC0gXHJlZiBQSU5fRUJJX1BTUkFNX0FERFJfQlVTDQogKiAtIFxyZWYgUElOX0VCSV9QU1JBTV9OQlMNCiAqIC0gXHJlZiBQSU5fRUJJX0ExDQogKiAtIFxyZWYgUElOX0VCSV9OQ1MxDQogKiAtIFxyZWYgUElOX0VCSV9MQ0RfUlMNCiAqDQogKiBMRURzDQogKiAtIFxyZWYgUElOX0xFRF8wDQogKiAtIFxyZWYgUElOX0xFRF8xDQogKiAtIFxyZWYgUElOX0xFRF8yDQogKiAtIFxyZWYgUElOU19MRURTDQogKg0KICogTUNJDQogKiAtIFxyZWYgUElOU19NQ0kNCiAqDQogKiBQdXNoIGJ1dHRvbnMNCiAqIC0gXHJlZiBQSU5fUFVTSEJVVFRPTl8xDQogKiAtIFxyZWYgUElOX1BVU0hCVVRUT05fMg0KICogLSBccmVmIFBJTlNfUFVTSEJVVFRPTlMNCiAqIC0gXHJlZiBQVVNIQlVUVE9OX0JQMQ0KICogLSBccmVmIFBVU0hCVVRUT05fQlAyDQogKg0KICogUFdNQw0KICogLSBccmVmIFBJTl9QV01DX1BXTUgwDQogKiAtIFxyZWYgUElOX1BXTUNfUFdNTDANCiAqIC0gXHJlZiBQSU5fUFdNQ19QV01IMQ0KICogLSBccmVmIFBJTl9QV01DX1BXTUwxDQogKiAtIFxyZWYgUElOX1BXTUNfUFdNSDINCiAqIC0gXHJlZiBQSU5fUFdNQ19QV01MMg0KICogLSBccmVmIFBJTl9QV01DX1BXTUgzDQogKiAtIFxyZWYgUElOX1BXTUNfUFdNTDMNCiAqIC0gXHJlZiBQSU5fUFdNX0xFRDANCiAqIC0gXHJlZiBQSU5fUFdNX0xFRDENCiAqIC0gXHJlZiBQSU5fUFdNX0xFRDINCiAqIC0gXHJlZiBDSEFOTkVMX1BXTV9MRUQwDQogKiAtIFxyZWYgQ0hBTk5FTF9QV01fTEVEMQ0KICogLSBccmVmIENIQU5ORUxfUFdNX0xFRDINCiAqDQogKiBTUEkNCiAqIC0gXHJlZiBQSU5fU1BJX01JU08NCiAqIC0gXHJlZiBQSU5fU1BJX01PU0kNCiAqIC0gXHJlZiBQSU5fU1BJX1NQQ0sNCiAqIC0gXHJlZiBQSU5TX1NQSQ0KICogLSBccmVmIFBJTl9TUElfTlBDUzBfUEExMQ0KICoNCiAqIFNTQw0KICogLSBccmVmIFBJTl9TU0NfVEQNCiAqIC0gXHJlZiBQSU5fU1NDX1RLDQogKiAtIFxyZWYgUElOX1NTQ19URg0KICogLSBccmVmIFBJTlNfU1NDX0NPREVDDQogKg0KICogUENLMA0KICogLSBccmVmIFBJTl9QQ0swDQogKg0KICogUElPIFBBUkFMTEVMIENBUFRVUkUNCiAqIC0gXHJlZiBQSU5fUElPRENFTjENCiAqIC0gXHJlZiBQSU5fUElPRENFTjINCiAqDQogKiBUV0kNCiAqIC0gXHJlZiBUV0lfVjNYWA0KICogLSBccmVmIFBJTl9UV0lfVFdEMA0KICogLSBccmVmIFBJTl9UV0lfVFdDSzANCiAqIC0gXHJlZiBQSU5TX1RXSTANCiAqIC0gXHJlZiBQSU5fVFdJX1RXRDENCiAqIC0gXHJlZiBQSU5fVFdJX1RXQ0sxDQogKiAtIFxyZWYgUElOU19UV0kxDQogKg0KICogVVNBUlQwDQogKiAtIFxyZWYgUElOX1VTQVJUMF9SWEQNCiAqIC0gXHJlZiBQSU5fVVNBUlQwX1RYRA0KICogLSBccmVmIFBJTl9VU0FSVDBfQ1RTDQogKiAtIFxyZWYgUElOX1VTQVJUMF9SVFMNCiAqIC0gXHJlZiBQSU5fVVNBUlQwX1NDSw0KICoNCiAqIFVTQg0KICogLSBccmVmIFBJTl9VU0JfVkJVUw0KICoNCiAqIE5hbmRGbGFzaA0KICogLSBccmVmIFBJTl9FQklfTkFORE9FDQogKiAtIFxyZWYgUElOX0VCSV9OQU5EV0UNCiAqIC0gXHJlZiBQSU5fRUJJX05BTkRDTEUNCiAqIC0gXHJlZiBQSU5fRUJJX05BTkRBTEUNCiAqIC0gXHJlZiBQSU5fRUJJX05BTkRJTw0KICogLSBccmVmIEJPQVJEX05GX0NFX1BJTg0KICogLSBccmVmIEJPQVJEX05GX1JCX1BJTg0KICogLSBccmVmIFBJTlNfTkFOREZMQVNIDQogKg0KICogUVRvdWNoDQogKiBQSU8gZGVmaW5pdGlvbnMgZm9yIFNsaWRlcg0KICogXHJlZiBTTElERVJfSU9NQVNLX1NOUw0KICogXHJlZiBTTElERVJfSU9NQVNLX1NOU0sNCiAqIFxyZWYgUElOU19TTElERVJfU05TDQogKiBccmVmIFBJTlNfU0xJREVSX1NOU0sNCiAqDQogKiBQSU8gZGVmaW5pdGlvbnMgZm9yIGtleXMNCiAqIFxyZWYgS0VZX0lPTUFTS19TTlMNCiAqIFxyZWYgS0VZX0lPTUFTS19TTlNLDQogKiBccmVmIFBJTlNfS0VZX1NOUw0KICogXHJlZiBQSU5TX0tFWV9TTlNLDQogKg0KICogUElPUyBmb3IgUVRvdWNoDQogKiBccmVmIFBJTlNfUVRPVUNIDQogKi8NCg0KLyoqIEFEQ19BRDAgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9BREMwX0FEMCB7MSA8PCAyMSwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8qKiBBRENfQUQxIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fQURDMF9BRDEgezEgPDwgMzAsIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogQURDX0FEMiBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX0FEQzBfQUQyIHsxIDw8IDMsIFBJT0IsIElEX1BJT0IsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogQURDX0FEMyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX0FEQzBfQUQzIHsxIDw8IDQsIFBJT0IsIElEX1BJT0IsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogQURDX0FENCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX0FEQzBfQUQ0IHsxIDw8IDE1LCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KLyoqIEFEQ19BRDUgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9BREMwX0FENSB7MSA8PCAxNiwgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCi8qKiBBRENfQUQ2IHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fQURDMF9BRDYgezEgPDwgMTcsIFBJT0MsIElEX1BJT0MsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQovKiogQURDX0FENyBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX0FEQzBfQUQ3IHsxIDw8IDE4LCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KDQovKiogUGlucyBBREMgKi8NCiNkZWZpbmUgUElOU19BREMgUElOX0FEQzBfQUQwLCBQSU5fQURDMF9BRDEsIFBJTl9BREMwX0FEMiwgUElOX0FEQzBfQUQzLCBQSU5fQURDMF9BRDQsIFBJTl9BREMwX0FENSwgUElOX0FEQzBfQUQ2LCBQSU5fQURDMF9BRDcNCiNkZWZpbmUgUElOU19BRENfVFJJRyAgUElPX1BBOF9JRFgNCiNkZWZpbmUgUElOU19BRENfVFJJR19GTEFHICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBTdGFydHVwIHRpbWUgbWF4LCByZXR1cm4gZnJvbSBJZGxlIG1vZGUgKGluILVzKSAqLw0KI2RlZmluZSBBRENfU1RBUlRVUF9USU1FX01BWCAgICAgICAxNQ0KLyoqIFRyYWNrIGFuZCBob2xkIEFjcXVpc2l0aW9uIFRpbWUgbWluIChpbiBucykgKi8NCiNkZWZpbmUgQURDX1RSQUNLX0hPTERfVElNRV9NSU4gIDEyMDANCi8qKiBBREMgY2xvY2sgZnJlcXVlbmNlICovDQojZGVmaW5lIEJPQVJEX0FEQ19GUkVRICAgICAoNjAwMDAwMCkNCg0KLyoqIFVBUlQgcGlucyAoVVRYRDAgYW5kIFVSWEQwKSBkZWZpbml0aW9ucywgUEE5LDEwLiAqLw0KI2RlZmluZSBQSU5TX1VBUlQJCShQSU9fUEE5QV9VUlhEMCB8IFBJT19QQTEwQV9VVFhEMCkNCiNkZWZpbmUgUElOU19VQVJUX0ZMQUdTCShQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCg0KI2RlZmluZSBQSU5TX1VBUlRfTUFTSyBQSU9fUEE5QV9VUlhEMHxQSU9fUEExMEFfVVRYRDANCiNkZWZpbmUgUElOU19VQVJUX1BJTyBQSU9BDQojZGVmaW5lIFBJTlNfVUFSVF9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTlNfVUFSVF9UWVBFIFBJT19QRVJJUEhfQQ0KI2RlZmluZSBQSU5TX1VBUlRfQVRUUiBQSU9fREVGQVVMVA0KDQovKiogRUJJIERhdGEgQnVzIHBpbnMgKi8NCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19EMCAgICAgICAgUElPX1BDMF9JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19EMSAgICAgICAgUElPX1BDMV9JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19EMiAgICAgICAgUElPX1BDMl9JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19EMyAgICAgICAgUElPX1BDM19JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19ENCAgICAgICAgUElPX1BDNF9JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19ENSAgICAgICAgUElPX1BDNV9JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19ENiAgICAgICAgUElPX1BDNl9JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19ENyAgICAgICAgUElPX1BDN19JRFgNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19GTEFHUyAgICAgICAgICAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX0RBVEFfQlVTX01BU0sgIDB4RkYNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19QSU8gIFBJT0MNCiNkZWZpbmUgUElOX0VCSV9EQVRBX0JVU19JRCAgSURfUElPQw0KI2RlZmluZSBQSU5fRUJJX0RBVEFfQlVTX1RZUEUgUElPX1BFUklQSF9BDQojZGVmaW5lIFBJTl9FQklfREFUQV9CVVNfQVRUUiBQSU9fUFVMTFVQDQovKiogRUJJIE5SRCBwaW4gKi8NCiNkZWZpbmUgUElOX0VCSV9OUkQgICAgICAgICAgICAgICAgIFBJT19QQzExX0lEWA0KI2RlZmluZSBQSU5fRUJJX05SRF9GTEFHUyAgICAgICBQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQDQojZGVmaW5lIFBJTl9FQklfTlJEX01BU0sgIDEgPDwgMTENCiNkZWZpbmUgUElOX0VCSV9OUkRfUElPICBQSU9DDQojZGVmaW5lIFBJTl9FQklfTlJEX0lEICBJRF9QSU9DDQojZGVmaW5lIFBJTl9FQklfTlJEX1RZUEUgUElPX1BFUklQSF9BDQojZGVmaW5lIFBJTl9FQklfTlJEX0FUVFIgUElPX1BVTExVUA0KLyoqIEVCSSBOV0UgcGluICovDQojZGVmaW5lIFBJTl9FQklfTldFICAgICAgICAgICAgICAgICAgUElPX1BDOF9JRFgNCiNkZWZpbmUgUElOX0VCSV9OV0VfRkxBR1MgICAgICAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX05XRV9NQVNLICAxIDw8IDgNCiNkZWZpbmUgUElOX0VCSV9OV0VfUElPICBQSU9DDQojZGVmaW5lIFBJTl9FQklfTldFX0lEICBJRF9QSU9DDQojZGVmaW5lIFBJTl9FQklfTldFX1RZUEUgUElPX1BFUklQSF9BDQojZGVmaW5lIFBJTl9FQklfTldFX0FUVFIgUElPX1BVTExVUA0KLyoqIEVCSSBOQ1MwIHBpbiAqLw0KI2RlZmluZSBQSU5fRUJJX05DUzAgICAgICAgICAgICAgICAgUElPX1BDMTRfSURYDQojZGVmaW5lIFBJTl9FQklfTkNTMF9GTEFHUyAgICAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX05DUzBfTUFTSyAgMSA8PCAxNA0KI2RlZmluZSBQSU5fRUJJX05DUzBfUElPICBQSU9DDQojZGVmaW5lIFBJTl9FQklfTkNTMF9JRCAgSURfUElPQw0KI2RlZmluZSBQSU5fRUJJX05DUzBfVFlQRSBQSU9fUEVSSVBIX0ENCiNkZWZpbmUgUElOX0VCSV9OQ1MwX0FUVFIgUElPX1BVTExVUA0KLyoqIEVCSSBhZGRyZXNzIGJ1cyBwaW5zICAqLw0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0EwICAgICBQSU9fUEMxOF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMSAgICAgUElPX1BDMTlfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTIgICAgIFBJT19QQzIwX0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0EzICAgICBQSU9fUEMyMV9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BNCAgICAgUElPX1BDMjJfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTUgICAgIFBJT19QQzIzX0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0E2ICAgICBQSU9fUEMyNF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BNyAgICAgUElPX1BDMjVfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTggICAgIFBJT19QQzI2X0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0E5ICAgICBQSU9fUEMyN19JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTAgICBQSU9fUEMyOF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTEgICBQSU9fUEMyOV9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTIgICBQSU9fUEMzMF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTMgICBQSU9fUEMzMV9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19GTEFHMSAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0ExNCAgIFBJT19QQTE4X0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0ExNSAgIFBJT19QQTE5X0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0ExNiAgIFBJT19QQTIwX0lEWA0KI2RlZmluZSBQSU5fRUJJX0FERFJfQlVTX0ExNyAgIFBJT19QQTBfSURYDQojZGVmaW5lIFBJTl9FQklfQUREUl9CVVNfQTE4ICAgUElPX1BBMV9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMTkgICBQSU9fUEEyM19JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19BMjAgICBQSU9fUEEyNF9JRFgNCiNkZWZpbmUgUElOX0VCSV9BRERSX0JVU19GTEFHMiAgUElPX1BFUklQSF9DIHwgUElPX1BVTExVUA0KLyoqIEVCSSBwaW4gZm9yIExDRCBDUyAqLw0KI2RlZmluZSBQSU5fRUJJX05DUzEgICAgICAgICAgICAgICAgIFBJT19QQzE1X0lEWA0KI2RlZmluZSBQSU5fRUJJX05DUzFfRkxBR1MgICAgICBQSU9fUEVSSVBIX0EgfCBQSU9fUFVMTFVQDQojZGVmaW5lIFBJTl9FQklfTkNTMV9NQVNLICAxIDw8IDE1DQojZGVmaW5lIFBJTl9FQklfTkNTMV9QSU8gIFBJT0MNCiNkZWZpbmUgUElOX0VCSV9OQ1MxX0lEICBJRF9QSU9DDQojZGVmaW5lIFBJTl9FQklfTkNTMV9UWVBFIFBJT19QRVJJUEhfQQ0KI2RlZmluZSBQSU5fRUJJX05DUzFfQVRUUiBQSU9fUFVMTFVQDQovKiogRUJJIHBpbiBmb3IgTENEIFJTICovDQojZGVmaW5lIFBJTl9FQklfTENEX1JTICAgICAgICAgICAgICAgIFBJT19QQzE5X0lEWA0KI2RlZmluZSBQSU5fRUJJX0xDRF9SU19GTEFHUyAgICAgUElPX1BFUklQSF9BIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fRUJJX0xDRF9SU19NQVNLICAxIDw8IDE5DQojZGVmaW5lIFBJTl9FQklfTENEX1JTX1BJTyAgUElPQw0KI2RlZmluZSBQSU5fRUJJX0xDRF9SU19JRCAgSURfUElPQw0KI2RlZmluZSBQSU5fRUJJX0xDRF9SU19UWVBFIFBJT19QRVJJUEhfQQ0KI2RlZmluZSBQSU5fRUJJX0xDRF9SU19BVFRSIFBJT19QVUxMVVANCg0KI2RlZmluZSBMRURfQkxVRSAgICAgIDANCiNkZWZpbmUgTEVEX0dSRUVOICAgICAxDQojZGVmaW5lIExFRF9SRUQgICAgICAgMg0KDQojaWZkZWYgQk9BUkRfUkVWX0ENCi8qKiBMRUQgIzAgcGluIGRlZmluaXRpb24gKEJMVUUpLiAqLw0KI2RlZmluZSBQSU5fTEVEXzAgICB7UElPX1BDMjAsIFBJT0MsIElEX1BJT0MsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9MRURfMF9NQVNLIFBJT19QQzIwDQojZGVmaW5lIFBJTl9MRURfMF9QSU8gUElPQw0KI2RlZmluZSBQSU5fTEVEXzBfSUQgSURfUElPQw0KI2RlZmluZSBQSU5fTEVEXzBfVFlQRSBQSU9fT1VUUFVUXzENCiNkZWZpbmUgUElOX0xFRF8wX0FUVFIgUElPX0RFRkFVTFQNCg0KI2RlZmluZSBMRUQwX0dQSU8gCQkoUElPX1BDMjBfSURYKQ0KI2RlZmluZSBMRUQwX0ZMQUdTIChQSU9fT1VUUFVUXzEgfCBQSU9fREVGQVVMVCkNCg0KLyoqIExFRCAjMSBwaW4gZGVmaW5pdGlvbiAoR1JFRU4pLiAqLw0KI2RlZmluZSBQSU5fTEVEXzEgICB7UElPX1BDMjEsIFBJT0MsIElEX1BJT0MsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQoNCiNkZWZpbmUgTEVEMV9HUElPIAkJKFBJT19QQzIxX0lEWCkNCiNkZWZpbmUgTEVEMV9GTEFHUyAoUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCi8qKiBMRUQgIzIgcGluIGRlZmluaXRpb24gKFJFRCkuICovDQojZGVmaW5lIFBJTl9MRURfMiAgIHtQSU9fUEMyMiwgUElPQywgSURfUElPQywgUElPX09VVFBVVF8xLCBQSU9fREVGQVVMVH0NCiNlbmRpZg0KDQojaWZkZWYgQk9BUkRfUkVWX0INCi8qKiBMRUQgIzAgcGluIGRlZmluaXRpb24gKEJMVUUpLiAqLw0KI2RlZmluZSBQSU5fTEVEXzAgICB7UElPX1BBMTksIFBJT0EsIElEX1BJT0EsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9MRURfMF9NQVNLIFBJT19QQTE5DQojZGVmaW5lIFBJTl9MRURfMF9QSU8gUElPQQ0KI2RlZmluZSBQSU5fTEVEXzBfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fTEVEXzBfVFlQRSBQSU9fT1VUUFVUXzENCiNkZWZpbmUgUElOX0xFRF8wX0FUVFIgUElPX0RFRkFVTFQNCg0KI2RlZmluZSBMRUQwX0dQSU8gCQkoUElPX1BBMTlfSURYKQ0KI2RlZmluZSBMRUQwX0ZMQUdTIChQSU9fT1VUUFVUXzEgfCBQSU9fREVGQVVMVCkNCg0KLyoqIExFRCAjMSBwaW4gZGVmaW5pdGlvbiAoR1JFRU4pLiAqLw0KI2RlZmluZSBQSU5fTEVEXzEgICB7UElPX1BBMjAsIFBJT0EsIElEX1BJT0EsIFBJT19PVVRQVVRfMSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9MRURfMV9NQVNLIFBJT19QQTIwDQojZGVmaW5lIFBJTl9MRURfMV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fTEVEXzFfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fTEVEXzFfVFlQRSBQSU9fT1VUUFVUXzENCiNkZWZpbmUgUElOX0xFRF8xX0FUVFIgUElPX0RFRkFVTFQNCg0KI2RlZmluZSBMRUQxX0dQSU8gCQkoUElPX1BBMjBfSURYKQ0KI2RlZmluZSBMRUQxX0ZMQUdTIChQSU9fT1VUUFVUXzEgfCBQSU9fREVGQVVMVCkNCg0KLyoqIExFRCAjMiBwaW4gZGVmaW5pdGlvbiAoUkVEKS4gKi8NCiNkZWZpbmUgUElOX0xFRF8yICAge1BJT19QQzIwLCBQSU9DLCBJRF9QSU9DLCBQSU9fT1VUUFVUXzEsIFBJT19ERUZBVUxUfQ0KDQojZW5kaWYNCg0KLyoqIExpc3Qgb2YgYWxsIExFRHMgZGVmaW5pdGlvbnMuICovDQojZGVmaW5lIFBJTlNfTEVEUyAgIFBJTl9MRURfMCwgUElOX0xFRF8xLCBQSU5fTEVEXzINCg0KLyoqIE1DSSBwaW5zIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTlNfTUNJICAgezB4M2ZVTCA8PCAyNiwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9DLCBQSU9fUFVMTFVQfQ0KLyoqIE1DSSBwaW4gQ2FyZCBEZXRlY3QuICovDQojaWZkZWYgQk9BUkRfUkVWX0ENCiNkZWZpbmUgUElOX01DSV9DRCB7UElPX1BBMTUsIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX1BVTExVUH0NCiNlbmRpZg0KDQojaWZkZWYgQk9BUkRfUkVWX0INCiNkZWZpbmUgUElOX01DSV9DRCB7UElPX1BBNiwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2VuZGlmDQoNCi8qKiBQdXNoIGJ1dHRvbiAjMCBkZWZpbml0aW9uLiBBdHRyaWJ1dGVzID0gcHVsbC11cCArIGRlYm91bmNlICsgaW50ZXJydXB0IG9uIHJpc2luZyBlZGdlLiAqLw0KI2RlZmluZSBHUElPX1BVU0hfQlVUVE9OXzEJCQkoUElPX1BCM19JRFgpDQojZGVmaW5lIEdQSU9fUFVTSF9CVVRUT05fMV9GTEFHUwkoUElPX0lOUFVUIHwgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9SSVNFX0VER0UpDQoNCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMSAgICB7UElPX1BCMywgUElPQiwgSURfUElPQiwgUElPX0lOUFVULCBQSU9fUFVMTFVQIHwgUElPX0RFQk9VTkNFIHwgUElPX0lUX1JJU0VfRURHRX0NCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMV9NQVNLIFBJT19QQjMNCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMV9QSU8gUElPQg0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8xX0lEIElEX1BJT0INCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMV9UWVBFIFBJT19JTlBVVA0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8xX0FUVFIgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9SSVNFX0VER0UNCg0KLyoqIFB1c2ggYnV0dG9uICMxIGRlZmluaXRpb24uIEF0dHJpYnV0ZXMgPSBwdWxsLXVwICsgZGVib3VuY2UgKyBpbnRlcnJ1cHQgb24gZmFsbGluZyBlZGdlLiAqLw0KI2RlZmluZSBHUElPX1BVU0hfQlVUVE9OXzIJCQkoUElPX1BDMTJfSURYKQ0KI2RlZmluZSBHUElPX1BVU0hfQlVUVE9OXzJfRkxBR1MJKFBJT19JTlBVVCB8IFBJT19QVUxMVVAgfCBQSU9fREVCT1VOQ0UgfCBQSU9fSVRfRkFMTF9FREdFKQ0KDQojZGVmaW5lIFBJTl9QVVNIQlVUVE9OXzIgICAge1BJT19QQzEyLCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19QVUxMVVAgfCBQSU9fREVCT1VOQ0UgfCBQSU9fSVRfRkFMTF9FREdFfQ0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8yX01BU0sgUElPX1BDMTINCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMl9QSU8gUElPQw0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8yX0lEIElEX1BJT0MNCiNkZWZpbmUgUElOX1BVU0hCVVRUT05fMl9UWVBFIFBJT19JTlBVVA0KI2RlZmluZSBQSU5fUFVTSEJVVFRPTl8yX0FUVFIgUElPX1BVTExVUCB8IFBJT19ERUJPVU5DRSB8IFBJT19JVF9GQUxMX0VER0UNCg0KLyoqIExpc3Qgb2YgYWxsIHB1c2ggYnV0dG9uIGRlZmluaXRpb25zLiAqLw0KI2RlZmluZSBQSU5TX1BVU0hCVVRUT05TICAgIFBJTl9QVVNIQlVUVE9OXzEsIFBJTl9QVVNIQlVUVE9OXzINCg0KLyoqIFB1c2ggYnV0dG9uICMxIGluZGV4LiAqLw0KI2RlZmluZSBQVVNIQlVUVE9OX0JQMSAgIDANCi8qKiBQdXNoIGJ1dHRvbiAjMiBpbmRleC4gKi8NCiNkZWZpbmUgUFVTSEJVVFRPTl9CUDIgICAxDQoNCiNkZWZpbmUgUElOX1RDMF9USU9BMAkJKFBJT19QQTBfSURYKQ0KI2RlZmluZSBQSU5fVEMwX1RJT0EwX0ZMQUdTCShQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCg0KI2RlZmluZSBQSU5fVEMwX1RJT0ExCQkoUElPX1BBMTVfSURYKQ0KI2RlZmluZSBQSU5fVEMwX1RJT0ExX0ZMQUdTCShQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCg0KI2RlZmluZSBQSU5fVEMwX1RJT0ExX1BJTyAgICAgUElPQQ0KI2RlZmluZSBQSU5fVEMwX1RJT0ExX01BU0sgIFBJT19QQTE1DQojZGVmaW5lIFBJTl9UQzBfVElPQTFfSUQgICAgICBJRF9QSU9BDQojZGVmaW5lIFBJTl9UQzBfVElPQTFfVFlQRSAgIFBJT19QRVJJUEhfQg0KI2RlZmluZSBQSU5fVEMwX1RJT0ExX0FUVFIgICBQSU9fREVGQVVMVA0KDQojZGVmaW5lIFBJTl9UQzBfVElPQTIJCShQSU9fUEEyNl9JRFgpDQojZGVmaW5lIFBJTl9UQzBfVElPQTJfRkxBR1MJKFBJT19JTlBVVCB8IFBJT19ERUZBVUxUKQ0KDQojZGVmaW5lIFBJTl9UQzBfVElPQTJfUElPICAgICBQSU9BDQojZGVmaW5lIFBJTl9UQzBfVElPQTJfTUFTSyAgUElPX1BBMjYNCiNkZWZpbmUgUElOX1RDMF9USU9BMl9JRCAgICAgIElEX1BJT0ENCiNkZWZpbmUgUElOX1RDMF9USU9BMl9UWVBFICAgUElPX0lOUFVUDQojZGVmaW5lIFBJTl9UQzBfVElPQTJfQVRUUiAgIFBJT19ERUZBVUxUDQoNCi8qKiBQV01DIFBXTTAgcGluIGRlZmluaXRpb246IE91dHB1dCBIaWdoLiAqLw0KI2RlZmluZSBQSU5fUFdNQ19QV01IMCAge1BJT19QQzE4Ql9QV01IMCwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1BXTUNfUFdNSDBfVFJJRyAgIFBJT19QQzE4X0lEWA0KI2RlZmluZSBQSU5fUFdNQ19QV01IMF9UUklHX0ZMQUcgICBQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVA0KLyoqIFBXTUMgUFdNMCBwaW4gZGVmaW5pdGlvbjogT3V0cHV0IExvdy4gKi8NCiNkZWZpbmUgUElOX1BXTUNfUFdNTDAgIHtQSU9fUEExOUJfUFdNTDAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogUFdNQyBQV00xIHBpbiBkZWZpbml0aW9uOiBPdXRwdXQgSGlnaC4gKi8NCiNkZWZpbmUgUElOX1BXTUNfUFdNSDEgIHtQSU9fUEMxOUJfUFdNSDEsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQiwgUElPX0RFRkFVTFR9DQovKiogUFdNQyBQV00xIHBpbiBkZWZpbml0aW9uOiBPdXRwdXQgTG93LiAqLw0KI2RlZmluZSBQSU5fUFdNQ19QV01MMSAge1BJT19QQTIwQl9QV01MMSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBQV01DIFBXTTIgcGluIGRlZmluaXRpb246IE91dHB1dCBIaWdoLiAqLw0KI2RlZmluZSBQSU5fUFdNQ19QV01IMiAge1BJT19QQzIwQl9QV01IMiwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCi8qKiBQV01DIFBXTTIgcGluIGRlZmluaXRpb246IE91dHB1dCBMb3cuICovDQojZGVmaW5lIFBJTl9QV01DX1BXTUwyICB7UElPX1BBMTZDX1BXTUwyLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0MsIFBJT19ERUZBVUxUfQ0KLyoqIFBXTUMgUFdNMyBwaW4gZGVmaW5pdGlvbjogT3V0cHV0IEhpZ2guICovDQojZGVmaW5lIFBJTl9QV01DX1BXTUgzICB7UElPX1BDMjFCX1BXTUgzLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0IsIFBJT19ERUZBVUxUfQ0KLyoqIFBXTUMgUFdNMyBwaW4gZGVmaW5pdGlvbjogT3V0cHV0IExvdy4gKi8NCiNkZWZpbmUgUElOX1BXTUNfUFdNTDMgIHtQSU9fUEExNUNfUFdNTDMsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQywgUElPX0RFRkFVTFR9DQovKiogUFdNIHBpbnMgZGVmaW5pdGlvbiBmb3IgTEVEMCAqLw0KI2RlZmluZSBQSU5fUFdNX0xFRDAgUElOX1BXTUNfUFdNSDAsIFBJTl9QV01DX1BXTUwwDQovKiogUFdNIHBpbnMgZGVmaW5pdGlvbiBmb3IgTEVEMSAqLw0KI2RlZmluZSBQSU5fUFdNX0xFRDEgUElOX1BXTUNfUFdNSDEsIFBJTl9QV01DX1BXTUwxDQovKiogUFdNIHBpbnMgZGVmaW5pdGlvbiBmb3IgTEVEMiAqLw0KI2RlZmluZSBQSU5fUFdNX0xFRDIgUElOX1BXTUNfUFdNSDIsIFBJTl9QV01DX1BXTUwyDQovKiogUFdNIGNoYW5uZWwgZm9yIExFRDAgKi8NCiNkZWZpbmUgQ0hBTk5FTF9QV01fTEVEMCAwDQovKiogUFdNIGNoYW5uZWwgZm9yIExFRDEgKi8NCiNkZWZpbmUgQ0hBTk5FTF9QV01fTEVEMSAxDQovKiogUFdNIGNoYW5uZWwgZm9yIExFRDIgKi8NCiNkZWZpbmUgQ0hBTk5FTF9QV01fTEVEMiAyDQoNCi8qKiBQV00gTEVEMCBwaW4gZGVmaW5pdGlvbnMuICovDQojZGVmaW5lIFBJTl9QV01fTEVEMF9HUElPICAgUElPX1BBMTlfSURYDQojZGVmaW5lIFBJTl9QV01fTEVEMF9GTEFHUyAgKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KLyoqIFBXTSBMRUQxIHBpbiBkZWZpbml0aW9ucy4gKi8NCiNkZWZpbmUgUElOX1BXTV9MRUQxX0dQSU8gICBQSU9fUEEyMF9JRFgNCiNkZWZpbmUgUElOX1BXTV9MRUQxX0ZMQUdTICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQovKiogUFdNIExFRDIgcGluIGRlZmluaXRpb25zLiAqLw0KI2RlZmluZSBQSU5fUFdNX0xFRDJfR1BJTyAgIFBJT19QQzIwX0lEWA0KI2RlZmluZSBQSU5fUFdNX0xFRDJfRkxBR1MgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCg0KLyoqIFNQSSBNSVNPIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJX01JU08gICAge1BJT19QQTEyQV9NSVNPLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSSBNT1NJIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJX01PU0kgICAge1BJT19QQTEzQV9NT1NJLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSSBTUENLIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fU1BJX1NQQ0sgICAge1BJT19QQTE0QV9TUENLLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNQSSBjaGlwIHNlbGVjdCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOX1NQSV9OUENTMF9QQTExICB7UElPX1BBMTFBX05QQ1MwLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIExpc3Qgb2YgU1BJIHBpbiBkZWZpbml0aW9ucyAoTUlTTywgTU9TSSAmIFNQQ0spLiAqLw0KI2RlZmluZSBQSU5TX1NQSSAgICAgICAgUElOX1NQSV9NSVNPLCBQSU5fU1BJX01PU0ksIFBJTl9TUElfU1BDSw0KLyoqIFNQSSBNSVNPIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBTUElfTUlTT19HUElPIAkJICAgICAgKFBJT19QQTEyX0lEWCkNCiNkZWZpbmUgU1BJX01JU09fRkxBR1MgICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFNQSSBNT1NJIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBTUElfTU9TSV9HUElPIAkJICAgICAgKFBJT19QQTEzX0lEWCkNCiNkZWZpbmUgU1BJX01PU0lfRkxBR1MgICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFNQSSBTUENLIHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBTUElfU1BDS19HUElPIAkJICAgICAgKFBJT19QQTE0X0lEWCkNCiNkZWZpbmUgU1BJX1NQQ0tfRkxBR1MgICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KDQovKiogU1BJIGNoaXAgc2VsZWN0IDAgcGluIGRlZmluaXRpb24uIChPbmx5IG9uZSBjb25maWd1cmF0aW9uIGlzIHBvc3NpYmxlKSAqLw0KI2RlZmluZSBTUElfTlBDUzBfR1BJTyAJCSAgICAgIChQSU9fUEExMV9JRFgpDQojZGVmaW5lIFNQSV9OUENTMF9GTEFHUyAgICAgICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFNQSSBjaGlwIHNlbGVjdCAxIHBpbiBkZWZpbml0aW9uLiAobXVsdGlwbGUgY29uZmlndXJhdGlvbnMgYXJlIHBvc3NpYmxlKSAqLw0KI2RlZmluZSBTUElfTlBDUzFfUEE5X0dQSU8gCQkgIChQSU9fUEE5X0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MxX1BBOV9GTEFHUyAgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTMV9QQTMxX0dQSU8gCSAgKFBJT19QQTMxX0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MxX1BBMzFfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTMV9QQjE0X0dQSU8gCSAgKFBJT19QQjE0X0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MxX1BCMTRfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTMV9QQzRfR1BJTyAJCSAgKFBJT19QQzRfSURYKQ0KI2RlZmluZSBTUElfTlBDUzFfUEM0X0ZMQUdTICAgICAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCi8qKiBTUEkgY2hpcCBzZWxlY3QgMiBwaW4gZGVmaW5pdGlvbi4gKG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zIGFyZSBwb3NzaWJsZSkgKi8NCiNkZWZpbmUgU1BJX05QQ1MyX1BBMTBfR1BJTyAJICAoUElPX1BBMTBfSURYKQ0KI2RlZmluZSBTUElfTlBDUzJfUEExMF9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCiNkZWZpbmUgU1BJX05QQ1MyX1BBMzBfR1BJTyAJICAoUElPX1BBMzBfSURYKQ0KI2RlZmluZSBTUElfTlBDUzJfUEEzMF9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCiNkZWZpbmUgU1BJX05QQ1MyX1BCMl9HUElPIAkJICAoUElPX1BCMl9JRFgpDQojZGVmaW5lIFNQSV9OUENTMl9QQjJfRkxBR1MgICAgICAgKFBJT19QRVJJUEhfQiB8IFBJT19ERUZBVUxUKQ0KLyoqIFNQSSBjaGlwIHNlbGVjdCAzIHBpbiBkZWZpbml0aW9uLiAobXVsdGlwbGUgY29uZmlndXJhdGlvbnMgYXJlIHBvc3NpYmxlKSAqLw0KI2RlZmluZSBTUElfTlBDUzNfUEEzX0dQSU8gCQkgIChQSU9fUEEzX0lEWCkNCiNkZWZpbmUgU1BJX05QQ1MzX1BBM19GTEFHUyAgICAgICAoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQojZGVmaW5lIFNQSV9OUENTM19QQTVfR1BJTyAJCSAgKFBJT19QQTVfSURYKQ0KI2RlZmluZSBTUElfTlBDUzNfUEE1X0ZMQUdTICAgICAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCiNkZWZpbmUgU1BJX05QQ1MzX1BBMjJfR1BJTyAJICAoUElPX1BBMjJfSURYKQ0KI2RlZmluZSBTUElfTlBDUzNfUEEyMl9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0IgfCBQSU9fREVGQVVMVCkNCg0KLyoqIFNTQyBwaW4gVHJhbnNtaXR0ZXIgRGF0YSAoVEQpICovDQojZGVmaW5lIFBJTl9TU0NfVEQgICAgICB7UElPX1BBMTdBX1RELCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNTQyBwaW4gVHJhbnNtaXR0ZXIgQ2xvY2sgKFRLKSAqLw0KI2RlZmluZSBQSU5fU1NDX1RLICAgICAge1BJT19QQTE2QV9USywgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBTU0MgcGluIFRyYW5zbWl0dGVyIEZyYW1lU3luYyAoVEYpICovDQojZGVmaW5lIFBJTl9TU0NfVEYgICAgICB7UElPX1BBMTVBX1RGLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFNTQyBwaW5zIGRlZmluaXRpb24gZm9yIGNvZGVjLiAqLw0KI2RlZmluZSBQSU5TX1NTQ19DT0RFQyAgUElOX1NTQ19URCwgUElOX1NTQ19USywgUElOX1NTQ19URg0KDQovKiogUENLMCAqLw0KI2RlZmluZSBQSU5fUENLMAkJKFBJT19QQTZfSURYKQ0KI2RlZmluZSBQSU5fUENLMF9GTEFHUwkoUElPX1BFUklQSF9CIHwgUElPX0RFRkFVTFQpDQoNCiNkZWZpbmUgUElOX1BDS18wX01BU0sgUElPX1BBNg0KI2RlZmluZSBQSU5fUENLXzBfUElPIFBJT0ENCiNkZWZpbmUgUElOX1BDS18wX0lEIElEX1BJT0ENCiNkZWZpbmUgUElOX1BDS18wX1RZUEUgUElPX1BFUklQSF9CDQojZGVmaW5lIFBJTl9QQ0tfMF9BVFRSIFBJT19ERUZBVUxUDQojZGVmaW5lIFBJTl9QQ0sxICAgICAgICB7UElPX1BBMTdCX1BDSzEsUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9CLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1BDS18xX01BU0sgUElPX1BBMTcNCiNkZWZpbmUgUElOX1BDS18xX1BJTyBQSU9BDQojZGVmaW5lIFBJTl9QQ0tfMV9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTl9QQ0tfMV9UWVBFIFBJT19QRVJJUEhfQg0KI2RlZmluZSBQSU5fUENLXzFfQVRUUiBQSU9fREVGQVVMVA0KDQovKiogUElPIFBBUkFMTEVMIENBUFRVUkUgKi8NCi8qKiBQYXJhbGxlbCBDYXB0dXJlIE1vZGUgRGF0YSBFbmFibGUxICovDQojZGVmaW5lIFBJTl9QSU9EQ0VOMSAgICBQSU9fUEExNQ0KLyoqIFBhcmFsbGVsIENhcHR1cmUgTW9kZSBEYXRhIEVuYWJsZTIgKi8NCiNkZWZpbmUgUElOX1BJT0RDRU4yICAgIFBJT19QQTE2DQoNCi8qKiBUV0kgdmVyIDMueHggKi8NCiNkZWZpbmUgVFdJX1YzWFgNCi8qKiBUV0kwIGRhdGEgcGluICovDQojZGVmaW5lIFBJTl9UV0lfVFdEMCAgIHtQSU9fUEEzQV9UV0QwLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KLyoqIFRXSTAgY2xvY2sgcGluICovDQojZGVmaW5lIFBJTl9UV0lfVFdDSzAgIHtQSU9fUEE0QV9UV0NLMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBUV0kwIHBpbnMgKi8NCiNkZWZpbmUgUElOU19UV0kwICAgICAgUElOX1RXSV9UV0QwLCBQSU5fVFdJX1RXQ0swDQovKiogVFdJMSBkYXRhIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXRDEgICB7UElPX1BCNEFfVFdEMSwgUElPQiwgSURfUElPQiwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCi8qKiBUV0kxIGNsb2NrIHBpbiAqLw0KI2RlZmluZSBQSU5fVFdJX1RXQ0sxICB7UElPX1BCNUFfVFdDSzEsIFBJT0IsIElEX1BJT0IsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQovKiogVFdJMSBwaW5zICovDQojZGVmaW5lIFBJTlNfVFdJMSAgICAgIFBJTl9UV0lfVFdEMSwgUElOX1RXSV9UV0NLMQ0KDQovKiogVVNBUlQwIHBpbiBSWCAqLw0KI2RlZmluZSBQSU5fVVNBUlQwX1JYRCAgICB7UElPX1BBNUFfUlhEMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMF9SWERfSURYICAgICAgICAoUElPX1BBNV9JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDBfUlhEX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMCBwaW4gVFggKi8NCiNkZWZpbmUgUElOX1VTQVJUMF9UWEQgICAge1BJT19QQTZBX1RYRDAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDBfVFhEX0lEWCAgICAgICAgKFBJT19QQTZfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQwX1RYRF9GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDAgcGluIENUUyAqLw0KI2RlZmluZSBQSU5fVVNBUlQwX0NUUyAgICB7UElPX1BBOEFfQ1RTMCwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMF9DVFNfSURYICAgICAgICAoUElPX1BBOF9JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDBfQ1RTX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMCBwaW4gUlRTICovDQojZGVmaW5lIFBJTl9VU0FSVDBfUlRTICAgIHtQSU9fUEE3QV9SVFMwLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQwX1JUU19JRFggICAgICAgIChQSU9fUEE3X0lEWCkNCiNkZWZpbmUgUElOX1VTQVJUMF9SVFNfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQovKiogVVNBUlQwIHBpbiBTQ0sgKi8NCiNkZWZpbmUgUElOX1VTQVJUMF9TQ0sgICAge1BJT19QQTJCX1NDSzAsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDBfU0NLX0lEWCAgICAgICAgKFBJT19QQTJfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQwX1NDS19GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCg0KLyoqIFVTQVJUMSBwaW4gUlggKi8NCiNkZWZpbmUgUElOX1VTQVJUMV9SWEQgICAge1BJT19QQTIxQV9SWEQxLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQxX1JYRF9JRFggICAgICAgIChQSU9fUEEyMV9JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDFfUlhEX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMSBwaW4gVFggKi8NCiNkZWZpbmUgUElOX1VTQVJUMV9UWEQgICAge1BJT19QQTIyQV9UWEQxLCBQSU9BLCBJRF9QSU9BLCBQSU9fUEVSSVBIX0EsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQxX1RYRF9JRFggICAgICAgIChQSU9fUEEyMl9JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDFfVFhEX0ZMQUdTICAgICAgKFBJT19QRVJJUEhfQSB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMSBwaW4gQ1RTICovDQojZGVmaW5lIFBJTl9VU0FSVDFfQ1RTICAgIHtQSU9fUEEyNUFfQ1RTMSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMV9DVFNfSURYICAgICAgICAoUElPX1BBMjVfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQxX0NUU19GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCi8qKiBVU0FSVDEgcGluIFJUUyAqLw0KI2RlZmluZSBQSU5fVVNBUlQxX1JUUyAgICB7UElPX1BBMjRBX1JUUzEsIFBJT0EsIElEX1BJT0EsIFBJT19QRVJJUEhfQSwgUElPX0RFRkFVTFR9DQojZGVmaW5lIFBJTl9VU0FSVDFfUlRTX0lEWCAgICAgICAgKFBJT19QQTI0X0lEWCkNCiNkZWZpbmUgUElOX1VTQVJUMV9SVFNfRkxBR1MgICAgICAoUElPX1BFUklQSF9BIHwgUElPX0RFRkFVTFQpDQovKiogVVNBUlQxIHBpbiBFTkFCTEUgKi8NCiNkZWZpbmUgUElOX1VTQVJUMV9FTiAgICAge1BJT19QQTIzQV9TQ0sxLCBQSU9BLCBJRF9QSU9BLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fVVNBUlQxX0VOX0lEWCAgICAgICAgIChQSU9fUEEyM19JRFgpDQojZGVmaW5lIFBJTl9VU0FSVDFfRU5fRkxBR1MgICAgICAgKFBJT19PVVRQVVRfMCB8IFBJT19ERUZBVUxUKQ0KLyoqIFVTQVJUMSBwaW4gU0NLICovDQojZGVmaW5lIFBJTl9VU0FSVDFfU0NLICAgIHtQSU9fUEEyM0FfU0NLMSwgUElPQSwgSURfUElPQSwgUElPX1BFUklQSF9BLCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOX1VTQVJUMV9TQ0tfSURYICAgICAgICAoUElPX1BBMjNfSURYKQ0KI2RlZmluZSBQSU5fVVNBUlQxX1NDS19GTEFHUyAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCg0KLyoqIFVTQiBWQnVzIG1vbml0b3JpbmcgcGluIGRlZmluaXRpb24uICovDQojaWZkZWYgQk9BUkRfUkVWX0ENCiNkZWZpbmUgUElOX1VTQl9WQlVTICAgIHtQSU9fUEMyMywgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2VuZGlmDQoNCiNpZmRlZiBCT0FSRF9SRVZfQg0KI2RlZmluZSBQSU5fVVNCX1ZCVVMgICAge1BJT19QQzIxLCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQojZW5kaWYNCg0KLyoqIE5hbmRGbGFzaCBwaW5zIGRlZmluaXRpb246IE9FLiAqLw0KI2RlZmluZSBQSU5fRUJJX05BTkRPRSAgICAgICAgICB7UElPX1BDOSwgIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQSwgUElPX1BVTExVUH0NCi8qKiBOYW5kRmxhc2ggcGlucyBkZWZpbml0aW9uOiBXRS4gKi8NCiNkZWZpbmUgUElOX0VCSV9OQU5EV0UgICAgICAgICAge1BJT19QQzEwLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQovKiogTmFuZEZsYXNoIHBpbnMgZGVmaW5pdGlvbjogQ0xFLiAqLw0KI2RlZmluZSBQSU5fRUJJX05BTkRDTEUgICAgICAgICB7UElPX1BDMTcsIFBJT0MsIElEX1BJT0MsIFBJT19QRVJJUEhfQSwgUElPX1BVTExVUH0NCi8qKiBOYW5kRmxhc2ggcGlucyBkZWZpbml0aW9uOiBBTEUuICovDQojZGVmaW5lIFBJTl9FQklfTkFOREFMRSAgICAgICAgIHtQSU9fUEMxNiwgUElPQywgSURfUElPQywgUElPX1BFUklQSF9BLCBQSU9fUFVMTFVQfQ0KLyoqIE5hbmRGbGFzaCBwaW5zIGRlZmluaXRpb246IERBVEEuICovDQojZGVmaW5lIFBJTl9FQklfTkFORElPICAgICAgICAgIHsweDAwMDAwMEZGLCBQSU9DLCBJRF9QSU9DLCBQSU9fUEVSSVBIX0EsIFBJT19QVUxMVVB9DQoNCi8qKiBOYW5kZmxhc2ggY2hpcCBlbmFibGUgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIEJPQVJEX05GX0NFX1BJTiAgICAgICAgIHtQSU9fUEMxNCwgUElPQywgSURfUElPQywgUElPX09VVFBVVF8xLCBQSU9fREVGQVVMVH0NCi8qKiBOYW5kZmxhc2ggcmVhZHkvYnVzeSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgQk9BUkRfTkZfUkJfUElOICAgICAgICAge1BJT19QQzE4LCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQoNCi8qKiBOYW5kZmxhc2ggY29udHJvbGxlciBwZXJpcGhlcmFsIHBpbnMgZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgUElOU19OQU5ERkxBU0ggICAgICAgICAgUElOX0VCSV9OQU5ESU8sIEJPQVJEX05GX0NFX1BJTiwgQk9BUkRfTkZfUkJfUElOLCBQSU5fRUJJX05BTkRPRSwgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSU5fRUJJX05BTkRXRSwgUElOX0VCSV9OQU5EQ0xFLCBQSU5fRUJJX05BTkRBTEUNCg0KLyogUElPIGRlZmluaXRpb25zIGZvciBTbGlkZXIgKi8NCiNkZWZpbmUgU0xJREVSX0lPTUFTS19TTlMgICAodWludDMyX3QpKFBJT19QQTAgfCBQSU9fUEEyIHwgUElPX1BBNCkNCiNkZWZpbmUgU0xJREVSX0lPTUFTS19TTlNLICAodWludDMyX3QpKFBJT19QQTEgfCBQSU9fUEEzIHwgUElPX1BBNSkNCiNkZWZpbmUgUElOU19TTElERVJfU05TICAgICB7U0xJREVSX0lPTUFTS19TTlMsICBQSU9BLCBJRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5TX1NMSURFUl9TTlNLICAgIHtTTElERVJfSU9NQVNLX1NOU0ssIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQoNCi8qIFBJTyBkZWZpbml0aW9ucyBmb3Iga2V5cyAqLw0KI2RlZmluZSBLRVlfSU9NQVNLX1NOUyAgICh1aW50MzJfdCkoUElPX1BDMjIgfCBQSU9fUEMyNCB8IFBJT19QQzI2IHwgUElPX1BDMjggfCBQSU9fUEMzMCkNCiNkZWZpbmUgS0VZX0lPTUFTS19TTlNLICAodWludDMyX3QpKFBJT19QQzIzIHwgUElPX1BDMjUgfCBQSU9fUEMyNyB8IFBJT19QQzI5IHwgUElPX1BDMzEpDQojZGVmaW5lIFBJTlNfS0VZX1NOUyAgICAge0tFWV9JT01BU0tfU05TLCAgUElPQywgSURfUElPQywgUElPX0lOUFVULCBQSU9fREVGQVVMVH0NCiNkZWZpbmUgUElOU19LRVlfU05TSyAgICB7S0VZX0lPTUFTS19TTlNLLCBQSU9DLCBJRF9QSU9DLCBQSU9fSU5QVVQsIFBJT19ERUZBVUxUfQ0KDQovKiBQSU9TIGZvciBRVG91Y2ggKi8NCiNkZWZpbmUgUElOU19RVE9VQ0ggICAgIFBJTlNfU0xJREVSX1NOUywgUElOU19TTElERVJfU05TSywgUElOU19LRVlfU05TLCBQSU5TX0tFWV9TTlNLDQoNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtNHNfZWtfdXNiICJTQU00Uy1FSyAtIFVTQiBkZXZpY2UiDQogKg0KICogXHNlY3Rpb24gRGVmaW5pdGlvbnMNCiAqIC0gXHJlZiBCT0FSRF9VU0JfQk1BVFRSSUJVVEVTDQogKiAtIFxyZWYgQ0hJUF9VU0JfVURQDQogKiAtIFxyZWYgQ0hJUF9VU0JfUFVMTFVQX0lOVEVSTkFMDQogKiAtIFxyZWYgQ0hJUF9VU0JfTlVNRU5EUE9JTlRTDQogKiAtIFxyZWYgQ0hJUF9VU0JfRU5EUE9JTlRTX01BWFBBQ0tFVFNJWkUNCiAqIC0gXHJlZiBDSElQX1VTQl9FTkRQT0lOVFNfQkFOS1MNCiAqLw0KDQovKiogVVNCIGF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBkZXNjcmlwdG9yIChidXMgb3Igc2VsZiBwb3dlcmVkLCByZW1vdGUgd2FrZXVwKSAqLw0KI2RlZmluZSBCT0FSRF9VU0JfQk1BVFRSSUJVVEVTICAgICAgICAgICAgICBVU0JDb25maWd1cmF0aW9uRGVzY3JpcHRvcl9TRUxGUE9XRVJFRF9SV0FLRVVQDQoNCi8qKiBJbmRpY2F0ZXMgY2hpcCBoYXMgYW4gVURQIEZ1bGwgU3BlZWQuICovDQojZGVmaW5lIENISVBfVVNCX1VEUA0KDQovKiogSW5kaWNhdGVzIGNoaXAgaGFzIGFuIGludGVybmFsIHB1bGwtdXAuICovDQojZGVmaW5lIENISVBfVVNCX1BVTExVUF9JTlRFUk5BTA0KDQovKiogTnVtYmVyIG9mIFVTQiBlbmRwb2ludHMgKi8NCiNkZWZpbmUgQ0hJUF9VU0JfTlVNRU5EUE9JTlRTIDgNCg0KLyoqIEVuZHBvaW50cyBtYXggcGF4Y2tldCBzaXplICovDQojZGVmaW5lIENISVBfVVNCX0VORFBPSU5UU19NQVhQQUNLRVRTSVpFKGkpIFwNCiAgICgoaSA9PSAwKSA/IDY0IDogXA0KICAgKChpID09IDEpID8gNjQgOiBcDQogICAoKGkgPT0gMikgPyA2NCA6IFwNCiAgICgoaSA9PSAzKSA/IDY0IDogXA0KICAgKChpID09IDQpID8gNTEyIDogXA0KICAgKChpID09IDUpID8gNTEyIDogXA0KICAgKChpID09IDYpID8gNjQgOiBcDQogICAoKGkgPT0gNykgPyA2NCA6IDAgKSkpKSkpKSkNCg0KLyoqIEVuZHBvaW50cyBOdW1iZXIgb2YgQmFuayAqLw0KI2RlZmluZSBDSElQX1VTQl9FTkRQT0lOVFNfQkFOS1MoaSkgXA0KICAgKChpID09IDApID8gMSA6IFwNCiAgICgoaSA9PSAxKSA/IDIgOiBcDQogICAoKGkgPT0gMikgPyAyIDogXA0KICAgKChpID09IDMpID8gMSA6IFwNCiAgICgoaSA9PSA0KSA/IDIgOiBcDQogICAoKGkgPT0gNSkgPyAyIDogXA0KICAgKChpID09IDYpID8gMiA6IFwNCiAgICgoaSA9PSA3KSA/IDIgOiAwICkpKSkpKSkpDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqIFxwYWdlIHNhbTRzX2VrX2V4dGNvbXAgIlNBTTRTLUVLIC0gRXh0ZXJuYWwgY29tcG9uZW50cyINCiAqIFRoaXMgcGFnZSBsaXN0cyB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBleHRlcm5hbCBvbi1ib2FyZCBjb21wb25lbnRzDQogKiBsb2NhdGVkIGluIHRoZSBib2FyZC5oIGZpbGUgZm9yIHRoZSBTQU00Uy1FSy4NCiAqDQogKiBTRCBDYXJkDQogKiAtIFxyZWYgQk9BUkRfU0RfUElOUw0KICogLSBccmVmIEJPQVJEX1NEX1BJTl9DRA0KICoNCiAqIExDRA0KICogLSBccmVmIEJPQVJEX0xDRF9JTEk5MzI1DQogKiAtIFxyZWYgQk9BUkRfTENEX1BJTlMNCiAqIC0gXHJlZiBCT0FSRF9CQUNLTElHSFRfUElODQogKiAtIFxyZWYgQk9BUkRfTENEX0JBU0UNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfUlMNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfV0lEVEgNCiAqIC0gXHJlZiBCT0FSRF9MQ0RfSEVJR0hUDQogKg0KICogVG91Y2hTY3JlZW4NCiAqIC0gXHJlZiBCT0FSRF9UU0NfQURTNzg0Mw0KICogLSBccmVmIFBJTl9UQ1NfSVJRDQogKiAtIFxyZWYgUElOX1RDU19CVVNZDQogKiAtIFxyZWYgQk9BUkRfVFNDX1NQSV9CQVNFDQogKiAtIFxyZWYgQk9BUkRfVFNDX1NQSV9JRA0KICogLSBccmVmIEJPQVJEX1RTQ19TUElfUElOUw0KICogLSBccmVmIEJPQVJEX1RTQ19OUENTDQogKiAtIFxyZWYgQk9BUkRfVFNDX05QQ1NfUElODQogKg0KICogU21hcnRDYXJkDQogKiAtIFxyZWYgU01BUlRDQVJEX0NPTk5FQ1RfUElODQogKiAtIFxyZWYgUElOX0lTTzc4MTZfUlNUTUMNCiAqIC0gXHJlZiBQSU5TX0lTTzc4MTYNCiAqLw0KDQovKiogTUNJIHBpbnMgdGhhdCBzaGFsbCBiZSBjb25maWd1cmVkIHRvIGFjY2VzcyB0aGUgU0QgY2FyZC4gKi8NCiNkZWZpbmUgQk9BUkRfU0RfUElOUyAgICAgICAgICAgICAgIFBJTlNfTUNJDQovKiogTUNJIENhcmQgRGV0ZWN0IHBpbi4gKi8NCiNkZWZpbmUgQk9BUkRfU0RfUElOX0NEICAgICAgICAgICAgIFBJTl9NQ0lfQ0QNCg0KLyoqIEluZGljYXRlcyBib2FyZCBoYXMgYW4gSUxJOTMyNSBleHRlcm5hbCBjb21wb25lbnQgdG8gbWFuYWdlIExDRC4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX0lMSTkzMjUNCg0KLyoqIEJhY2tsaWdodCBwaW4gZGVmaW5pdGlvbi4gKi8NCiNkZWZpbmUgQk9BUkRfQkFDS0xJR0hUICAgICAgICAgICAgICAgIFBJT19QQzEzX0lEWA0KI2RlZmluZSBCT0FSRF9CQUNLTElHSFRfRkxBRyAgICAgICBQSU9fT1VUUFVUXzAgfCBQSU9fREVGQVVMVA0KI2RlZmluZSBCT0FSRF9CQUNLTElHSFRfUElOICAgICAgICAge1BJT19QQzEzLCBQSU9DLCBJRF9QSU9DLCBQSU9fT1VUUFVUXzAsIFBJT19ERUZBVUxUfQ0KI2RlZmluZSBQSU5fQk9BUkRfQkFDS0xJR0hUX01BU0sgUElPX1BDMTMNCiNkZWZpbmUgUElOX0JPQVJEX0JBQ0tMSUdIVF9QSU8gUElPQw0KI2RlZmluZSBQSU5fQk9BUkRfQkFDS0xJR0hUX0lEIElEX1BJT0MNCiNkZWZpbmUgUElOX0JPQVJEX0JBQ0tMSUdIVF9UWVBFIFBJT19PVVRQVVRfMA0KI2RlZmluZSBQSU5fQk9BUkRfQkFDS0xJR0hUX0FUVFIgUElPX1BVTExVUA0KLyoqIERlZmluZSBJTEk5MzI1IGJhc2UgYWRkcmVzcy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX0JBU0UgICAgICAgICAgICAgIDB4NjEwMDAwMDANCi8qKiBEZWZpbmUgSUxJOTMyNSByZWdpc3RlciBzZWxlY3Qgc2lnbmFsLiAqLw0KI2RlZmluZSBCT0FSRF9MQ0RfUlMgICAgICAgICAgICAgICAgKDEgPDwgMSkNCi8qKiBEaXNwbGF5IHdpZHRoIGluIHBpeGVscy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX1dJRFRIICAgICAgICAgICAgIDI0MA0KLyoqIERpc3BsYXkgaGVpZ2h0IGluIHBpeGVscy4gKi8NCiNkZWZpbmUgQk9BUkRfTENEX0hFSUdIVCAgICAgICAgICAgIDMyMA0KDQovKiogSW5kaWNhdGVzIGJvYXJkIGhhcyBhbiBBRFM3ODQzIGV4dGVybmFsIGNvbXBvbmVudCB0byBtYW5hZ2UgVG91Y2ggU2NyZWVuICovDQojZGVmaW5lIEJPQVJEX1RTQ19BRFM3ODQzDQoNCi8qKiBUb3VjaHNjcmVlbiBjb250cm9sbGVyIElSUSBwaW4gZGVmaW5pdGlvbi4gKi8NCiNpZmRlZiBCT0FSRF9SRVZfQQ0KI2RlZmluZSBQSU5fVFNDX0lSUV9JRFggICAgUElPX1BBNF9JRFgNCiNkZWZpbmUgUElOX1RTQ19JUlFfRkxBRyAgUElPX0lOUFVUIHwgUElPX1BVTExVUCANCiNkZWZpbmUgUElOX1RTQ19JUlEgIHtQSU9fUEE0LCBQSU9BLCBJRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQojZGVmaW5lIFBJTl9UU0NfSVJRX01BU0sgUElPX1BBNA0KI2RlZmluZSBQSU5fVFNDX0lSUV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fVFNDX0lSUV9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTl9UU0NfSVJRX1RZUEUgUElPX0lOUFVUDQojZGVmaW5lIFBJTl9UU0NfSVJRX0FUVFIgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fVFNDX0lSUV9XVVBfSUQgKDEgPDwgMykNCi8qKiBUb3VjaHNjcmVlbiBjb250cm9sbGVyIEJ1c3kgcGluIGRlZmluaXRpb24uICovDQojZGVmaW5lIFBJTl9UU0NfQlVTWV9JRFggIFBJT19QQTVfSURYDQojZGVmaW5lIFBJTl9UU0NfQlVTWV9GTEFHICAgIFBJT19JTlBVVCB8IFBJT19QVUxMVVAgDQojZGVmaW5lIFBJTl9UU0NfQlVTWSB7UElPX1BBNSwgUElPQSwgSURfUElPQSwgUElPX0lOUFVULCBQSU9fUFVMTFVQfQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfTUFTSyBQSU9fUEE1DQojZGVmaW5lIFBJTl9UU0NfQlVTWV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfVFlQRSBQSU9fSU5QVVQNCiNkZWZpbmUgUElOX1RTQ19CVVNZX0FUVFIgUElPX1BVTExVUA0KI2VuZGlmDQoNCiNpZmRlZiBCT0FSRF9SRVZfQg0KI2RlZmluZSBQSU5fVFNDX0lSUV9JRFggICAgUElPX1BBMTZfSURYDQojZGVmaW5lIFBJTl9UU0NfSVJRX0ZMQUcgIFBJT19JTlBVVCB8IFBJT19QVUxMVVAgDQojZGVmaW5lIFBJTl9UU0NfSVJRICB7UElPX1BBMTYsIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX1BVTExVUH0NCiNkZWZpbmUgUElOX1RTQ19JUlFfTUFTSyBQSU9fUEExNg0KI2RlZmluZSBQSU5fVFNDX0lSUV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fVFNDX0lSUV9JRCBJRF9QSU9BDQojZGVmaW5lIFBJTl9UU0NfSVJRX1RZUEUgUElPX0lOUFVUDQojZGVmaW5lIFBJTl9UU0NfSVJRX0FUVFIgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fVFNDX0lSUV9XVVBfSUQgKDEgPDwgMTUpDQovKiogVG91Y2hzY3JlZW4gY29udHJvbGxlciBCdXN5IHBpbiBkZWZpbml0aW9uLiAqLw0KI2RlZmluZSBQSU5fVFNDX0JVU1lfSURYICBQSU9fUEExN19JRFgNCiNkZWZpbmUgUElOX1RTQ19CVVNZX0ZMQUcgICAgUElPX0lOUFVUIHwgUElPX1BVTExVUA0KI2RlZmluZSBQSU5fVFNDX0JVU1kge1BJT19QQTE3LCBQSU9BLCBJRF9QSU9BLCBQSU9fSU5QVVQsIFBJT19QVUxMVVB9DQojZGVmaW5lIFBJTl9UU0NfQlVTWV9NQVNLIFBJT19QQTE3DQojZGVmaW5lIFBJTl9UU0NfQlVTWV9QSU8gUElPQQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfSUQgSURfUElPQQ0KI2RlZmluZSBQSU5fVFNDX0JVU1lfVFlQRSBQSU9fSU5QVVQNCiNkZWZpbmUgUElOX1RTQ19CVVNZX0FUVFIgUElPX1BVTExVUA0KI2VuZGlmDQoNCi8qKiBCYXNlIGFkZHJlc3Mgb2YgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSB0b3VjaHNjcmVlbiBjb250cm9sbGVyLiAqLw0KI2RlZmluZSBCT0FSRF9UU0NfU1BJX0JBU0UgICAgICAgICBTUEkNCi8qKiBJZGVudGlmaWVyIG9mIFNQSSBwZXJpcGhlcmFsIGNvbm5lY3RlZCB0byB0aGUgdG91Y2hzY3JlZW4gY29udHJvbGxlci4gKi8NCiNkZWZpbmUgQk9BUkRfVFNDX1NQSV9JRCAgICAgICAgICAgSURfU1BJDQovKiogUGlucyBvZiB0aGUgU1BJIHBlcmlwaGVyYWwgY29ubmVjdGVkIHRvIHRoZSB0b3VjaHNjcmVlbiBjb250cm9sbGVyLiAqLw0KI2RlZmluZSBCT0FSRF9UU0NfU1BJX1BJTlMgICAgICAgICBQSU5TX1NQSQ0KLyoqIENoaXAgc2VsZWN0IGNvbm5lY3RlZCB0byB0aGUgdG91Y2hzY3JlZW4gY29udHJvbGxlci4gKi8NCiNkZWZpbmUgQk9BUkRfVFNDX05QQ1MgICAgICAgICAgICAgMA0KLyoqIENoaXAgc2VsZWN0IHBpbiBjb25uZWN0ZWQgdG8gdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIuICovDQojZGVmaW5lIEJPQVJEX1RTQ19OUENTX1BJTiAgICAgICAgIFBJTl9TUElfTlBDUzBfUEExMQ0KDQovLy8gU21hcnRjYXJkIGRldGVjdGlvbiBwaW4NCi8vI2RlZmluZSBTTUFSVENBUkRfQ09OTkVDVF9QSU4gezEgPDwgMTMsIFBJT0EsIElEX1BJT0EsIFBJT19JTlBVVCwgUElPX0RFRkFVTFR9DQoNCi8vLyBQSU4gdXNlZCBmb3IgcmVzZXQgdGhlIHNtYXJ0Y2FyZA0KI2RlZmluZSBQSU5fSVNPNzgxNl9SU1RNQyAgICAgICB7MSA8PCAxMSwgUElPQSwgSURfUElPQSwgUElPX09VVFBVVF8wLCBQSU9fREVGQVVMVH0NCi8vLyBQaW5zIHVzZWQgZm9yIGNvbm5lY3QgdGhlIHNtYXJ0Y2FyZA0KI2RlZmluZSBQSU5TX0lTTzc4MTYgICAgICAgICAgICBQSU5fVVNBUlQxX1RYRCwgUElOX1VTQVJUMV9TQ0ssIFBJTl9JU083ODE2X1JTVE1DDQoNCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQovKioNCiAqIFxwYWdlIHNhbTRzX2VrX21lbSAiU0FNNFMtRUsgLSBNZW1vcmllcyINCiAqIFRoaXMgcGFnZSBsaXN0cyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGludGVybmFsICYgZXh0ZXJuYWwgb24tYm9hcmQgbWVtb3JpZXMuDQogKg0KICogXHNlY3Rpb24gTmFuZEZsYXNoDQogKiAtIFxyZWYgQk9BUkRfTkZfQ09NTUFORF9BRERSDQogKiAtIFxyZWYgQk9BUkRfTkZfQUREUkVTU19BRERSDQogKiAtIFxyZWYgQk9BUkRfTkZfREFUQV9BRERSDQogKg0KICogXHNlY3Rpb24gTm9yRmxhc2gNCiAqIC0gXHJlZiBCT0FSRF9OT1JGTEFTSF9BRERSDQogKiAtIFxyZWYgQk9BUkRfTk9SRkxBU0hfREZUX0JVU19TSVpFDQogKi8NCg0KLyoqIEFkZHJlc3MgZm9yIHRyYW5zZmVycmluZyBjb21tYW5kIGJ5dGVzIHRvIHRoZSBuYW5kZmxhc2guICovDQojZGVmaW5lIEJPQVJEX05GX0NPTU1BTkRfQUREUiAgIDB4NjA0MDAwMDANCi8qKiBBZGRyZXNzIGZvciB0cmFuc2ZlcnJpbmcgYWRkcmVzcyBieXRlcyB0byB0aGUgbmFuZGZsYXNoLiAqLw0KI2RlZmluZSBCT0FSRF9ORl9BRERSRVNTX0FERFIgICAweDYwMjAwMDAwDQovKiogQWRkcmVzcyBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgYnl0ZXMgdG8gdGhlIG5hbmRmbGFzaC4gKi8NCiNkZWZpbmUgQk9BUkRfTkZfREFUQV9BRERSICAgICAgMHg2MDAwMDAwMA0KDQovKiogQWRkcmVzcyBmb3IgdHJhbnNmZXJyaW5nIGNvbW1hbmQgYnl0ZXMgdG8gdGhlIG5vcmZsYXNoLiAqLw0KI2RlZmluZSBCT0FSRF9OT1JGTEFTSF9BRERSICAgICAweDYzMDAwMDAwDQovKiogRGVmYXVsdCBOT1IgYnVzIHNpemUgYWZ0ZXIgcG93ZXIgdXAgcmVzZXQgKi8NCiNkZWZpbmUgQk9BUkRfTk9SRkxBU0hfREZUX0JVU19TSVpFIDgNCg0KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi8qKg0KICogXHBhZ2Ugc2FtNHNfZWtfY2hpcGRlZiAiU0FNNFMtRUsgLSBJbmRpdmlkdWFsIGNoaXAgZGVmaW5pdGlvbiINCiAqIFRoaXMgcGFnZSBsaXN0cyB0aGUgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQgY2hpcCdzIGRlZmluaXRpb24NCiAqIGxvY2F0ZWQgaW4gdGhlIGJvYXJkLmggZmlsZSBmb3IgdGhlIFNBTTRTLUVLLg0KICoNCiAqIFxzZWN0aW9uIFVTQVJUDQogKiAtIFxyZWYgQk9BUkRfUElOX1VTQVJUX1JYRA0KICogLSBccmVmIEJPQVJEX1BJTl9VU0FSVF9UWEQNCiAqIC0gXHJlZiBCT0FSRF9QSU5fVVNBUlRfQ1RTDQogKiAtIFxyZWYgQk9BUkRfUElOX1VTQVJUX1JUUw0KICogLSBccmVmIEJPQVJEX1BJTl9VU0FSVF9FTg0KICogLSBccmVmIEJPQVJEX1VTQVJUX0JBU0UNCiAqIC0gXHJlZiBCT0FSRF9JRF9VU0FSVA0KICovDQoNCi8qKiBSdGMgKi8NCiNkZWZpbmUgQk9BUkRfUlRDX0lEICAgICAgICAgICAgICAgIElEX1JUQw0KDQovKiogVFdJIElEIGZvciBFRVBST00gYXBwbGljYXRpb24gdG8gdXNlICovDQojZGVmaW5lIEJPQVJEX0lEX1RXSV9FRVBST00gICAgICAgICBJRF9UV0kxDQovKiogVFdJIElEIGZvciBTTEFWRSBhcHBsaWNhdGlvbiB0byB1c2UgKi8NCiNkZWZpbmUgQk9BUkRfSURfVFdJX1NMQVZFICAgICAgICAgIElEX1RXSTENCi8qKiBUV0kgQmFzZSBmb3IgVFdJIEVFUFJPTSBhcHBsaWNhdGlvbiB0byB1c2UgKi8NCiNkZWZpbmUgQk9BUkRfQkFTRV9UV0lfRUVQUk9NICAgICAgIFRXSTENCi8qKiBUV0kgQmFzZSBmb3IgVFdJIFNMQVZFIGFwcGxpY2F0aW9uIHRvIHVzZSAqLw0KI2RlZmluZSBCT0FSRF9CQVNFX1RXSV9TTEFWRSAgICAgICAgVFdJMQ0KLyoqIFRXSSBwaW5zIGZvciBFRVBST00gYXBwbGljYXRpb24gdG8gdXNlICovDQojZGVmaW5lIEJPQVJEX1BJTlNfVFdJX0VFUFJPTSAgICAgICBQSU5TX1RXSTENCi8qKiBUV0kgcGlucyBmb3IgVFdJIFNMQVZFIGFwcGxpY2F0aW9uIHRvIHVzZSAqLw0KI2RlZmluZSBCT0FSRF9QSU5TX1RXSV9TTEFWRSAgICAgICAgUElOU19UV0kxDQoNCi8qKiBVU0FSVCBSWCBwaW4gZm9yIGFwcGxpY2F0aW9uICovDQojZGVmaW5lIEJPQVJEX1BJTl9VU0FSVF9SWEQgICAgICAgIFBJTl9VU0FSVDFfUlhEDQovKiogVVNBUlQgVFggcGluIGZvciBhcHBsaWNhdGlvbiAqLw0KI2RlZmluZSBCT0FSRF9QSU5fVVNBUlRfVFhEICAgICAgICBQSU5fVVNBUlQxX1RYRA0KLyoqIFVTQVJUIENUUyBwaW4gZm9yIGFwcGxpY2F0aW9uICovDQojZGVmaW5lIEJPQVJEX1BJTl9VU0FSVF9DVFMgICAgICAgIFBJTl9VU0FSVDFfQ1RTDQovKiogVVNBUlQgUlRTIHBpbiBmb3IgYXBwbGljYXRpb24gKi8NCiNkZWZpbmUgQk9BUkRfUElOX1VTQVJUX1JUUyAgICAgICAgUElOX1VTQVJUMV9SVFMNCi8qKiBVU0FSVCBFTkFCTEUgcGluIGZvciBhcHBsaWNhdGlvbiAqLw0KI2RlZmluZSBCT0FSRF9QSU5fVVNBUlRfRU4gICAgICAgICBQSU5fVVNBUlQxX0VODQovKiogVVNBUlQgQmFzZSBmb3IgYXBwbGljYXRpb24gKi8NCiNkZWZpbmUgQk9BUkRfVVNBUlRfQkFTRSAgICAgICAgICAgVVNBUlQxDQovKiogVVNBUlQgSUQgZm9yIGFwcGxpY2F0aW9uICovDQojZGVmaW5lIEJPQVJEX0lEX1VTQVJUICAgICAgICAgICAgIElEX1VTQVJUMQ0KDQojZGVmaW5lIENPTlNPTEVfVUFSVCAgICAgICAgICAgICAgIFVBUlQwDQojZGVmaW5lIENPTlNPTEVfVUFSVF9JRCAgICAgICAgICAgIElEX1VBUlQwDQoNCi8qIFJFIHBpbi4gKi8NCiNkZWZpbmUgUElOX1JFX0lEWCAgICAgICAgICAgICAgICAgUElOX1VTQVJUMV9DVFNfSURYDQojZGVmaW5lIFBJTl9SRV9GTEFHUyAgICAgICAgICAgICAgIChQSU9fT1VUUFVUXzAgfCBQSU9fREVGQVVMVCkNCg0KLyogSVJEQSBTRCBwaW4uICovDQojZGVmaW5lIFBJTl9JUkRBX1NEX0lEWCAgICAgICAgICAgIFBJTl9VU0FSVDFfQ1RTX0lEWA0KI2RlZmluZSBQSU5fSVJEQV9TRF9GTEFHUyAgICAgICAgICAoUElPX09VVFBVVF8xIHwgUElPX0RFRkFVTFQpDQoNCi8qIFRYRCBwaW4gY29uZmlndXJhdGlvbi4gKi8NCiNkZWZpbmUgUElOX1VTQVJUX1RYRF9JRFggICAgICAgICAgUElOX1VTQVJUMV9UWERfSURYDQojZGVmaW5lIFBJTl9VU0FSVF9UWERfRkxBR1MgICAgICAgIChQSU9fUEVSSVBIX0EgfCBQSU9fREVGQVVMVCkNCiNkZWZpbmUgUElOX1VTQVJUX1RYRF9JT19GTEFHUyAgICAgKFBJT19PVVRQVVRfMCB8IFBJT19ERUZBVUxUKSANCg0KI2VuZGlmICAvLyBfU0FNNFNfRUtfSF8NCg==