LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBUaGlzIGZpbGUgaXMgbm90IHlldCBjb21wbGV0ZSAhISAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIEVzCiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICBkCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZBcmNoaXZvIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgIkEmYnJpci4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlQgICAgICAgICAgICAgICImSW1wcmltaXIiCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5URVJfU0VUVVAgICAgICAiJkNvbmZpZ3VyYWNp824gSW1wcmVzb3JhLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIiZTYWxpciIKCiNkZWZpbmUgTUVOVV9FRElUICAgICAgICAgICAgICAgICAgICAiJkVkaXRhciIKI2RlZmluZSBNRU5VX0VESVRfQ09QWV9ESUFMT0cgICAgICAgICImQ29waWFyLi4uIgojZGVmaW5lIE1FTlVfRURJVF9BTk5PVEFURSAgICAgICAgICAgIiZBbm90YXIuLi4iCgojZGVmaW5lIE1FTlVfQk9PS01BUksgICAgICAgICAgICAgICAgIiZNYXJjYWRvciIKI2RlZmluZSBNRU5VX0JPT0tNQVJLX0RFRklORSAgICAgICAgICImRGVmaW5pci4uLiIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAiJkF5dWRhIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9IRUxQICAgICAgICAgICAgIiZBeXVkYSBzb2JyZSBsYSBheXVkYSIKI2RlZmluZSBNRU5VX0hFTFBfT05fVE9QICAgICAgICAgICAgICJTaWVtcHJlICZ2aXNpYmxlIgojZGVmaW5lIE1FTlVfSEVMUF9JTkZPICAgICAgICAgICAgICAgIiZJbmZvLi4uIgojZGVmaW5lIE1FTlVfSEVMUF9BQk9VVF9XSU5FICAgICAgICAgIiZBY2VyY2EgZGUgV0lORSIKCi8qIFN0cmluZ3MgKi8KCiNkZWZpbmUgU1RSSU5HX1dJTkVfSEVMUCAgICAgICAgICAgICAiQXl1ZGEgZGUgV0lORSIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICJFUlJPUiIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICJDVUlEQURPIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgIkluZm9ybWFjafNuIgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgIkH6biBubyBpbXBsZW1lbnRhZG8iCiNkZWZpbmUgU1RSSU5HX0hMUEZJTEVfRVJST1JfcyAgICAgICAiRXJyb3IgYWwgbGVlciBlbCBhcmNoaXZvIGRlIGF5dWRhIGAlcyciCiNkZWZpbmUgU1RSSU5HX0NPTlRFTlRTICAgICAgICAgICAgICAiJkluZGljZSIKI2RlZmluZSBTVFJJTkdfU0VBUkNIICAgICAgICAgICAgICAgICImQnVzY2FyIgojZGVmaW5lIFNUUklOR19CQUNLICAgICAgICAgICAgICAgICAgIiZBbnRlcmlvciIKI2RlZmluZSBTVFJJTkdfSElTVE9SWSAgICAgICAgICAgICAgICImSGlzdG9yaWEiCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAiVG9kb3MgbG9zIGFyY2hpdm9zICgqLiopIgojZGVmaW5lIFNUUklOR19IRUxQX0ZJTEVTX0hMUCAgICAgICAgIkFyY2hpdm9zIGRlIGF5dWRhICgqLmhscCkiCgojaW5jbHVkZSAiWHgucmMiCg==