LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTkgUGFibG8gU2FyYXR4YWdhCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKgogKiBTaSB2b3Mgdm9sb3ogYWlkZXIgYXZvdSBsaSByYXRv+3JuYWVkamUgZGVzIGxpYmVzIHByb2dyYW1lcyDoIHdhbG9uLAogKiB2b3MgcG9sb3ogc2Ny7nJlIGEgbCcgYWRyZXNzZSBlbWlsZSA8bGludXgtd2FAY2hhbmFlLmFscGhhbmV0LmNoPgogKi8KCi8qIFRoaXMgZmlsZSBpcyBub3QgeWV0IGNvbXBsZXRlICEhICovCgojZGVmaW5lIExBTkdVQUdFX0lEICAgICAgICAgICAgICAgICAgV2EKI2RlZmluZSBMQU5HVUFHRV9OVU1CRVIgICAgICAgICAgICAgIDkwCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZGaXRjaO4iCiNkZWZpbmUgTUVOVV9GSUxFX09QRU4gICAgICAgICAgICAgICAiJkRyb3buLi4uIgojZGVmaW5lIE1FTlVfRklMRV9QUklOVCAgICAgICAgICAgICAgIiZSZXhoZSIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlRFUl9TRVRVUCAgICAgICImQXBvbnRpYWVkamUgZGVsIHNjcmlyZWNlLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIk1vdXNz7iAmRm/7IgoKI2RlZmluZSBNRU5VX0VESVQgICAgICAgICAgICAgICAgICAgICImQ2FuZGruIgojZGVmaW5lIE1FTlVfRURJVF9DT1BZX0RJQUxPRyAgICAgICAgIiZDb3B57i4uLiIKI2RlZmluZSBNRU5VX0VESVRfQU5OT1RBVEUgICAgICAgICAgICImU2ljcu5yZS4uLiIKCiNkZWZpbmUgTUVOVV9CT09LTUFSSyAgICAgICAgICAgICAgICAiJlJpbeVya2VzIgojZGVmaW5lIE1FTlVfQk9PS01BUktfREVGSU5FICAgICAgICAgIiZEZWZpbmkuLi4iCgojZGVmaW5lIE1FTlVfSEVMUCAgICAgICAgICAgICAgICAgICAgIiZBaWRlIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9IRUxQICAgICAgICAgICAgIiZBaWRlIHNvIGwnIEFpZGUiCiNkZWZpbmUgTUVOVV9IRUxQX09OX1RPUCAgICAgICAgICAgICAiVG9kaSAmVmlzaWJlIgojZGVmaW5lIE1FTlVfSEVMUF9JTkZPICAgICAgICAgICAgICAgIiZJbmZvcm3lY2lvbi4uLiIKI2RlZmluZSBNRU5VX0hFTFBfQUJPVVRfV0lORSAgICAgICAgICLFICZkZmFpdCBkaSBXSU5FIgoKLyogU3RyaW5ncyAqLwoKI2RlZmluZSBTVFJJTkdfV0lORV9IRUxQICAgICAgICAgICAgICJBaWRhbmNlIGRpIFdJTkUiCiNkZWZpbmUgU1RSSU5HX0VSUk9SICAgICAgICAgICAgICAgICAiQVJPS0UiCiNkZWZpbmUgU1RSSU5HX1dBUk5JTkcgICAgICAgICAgICAgICAiQURWRVJUSVhITUlOVCIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICJJbmZvcm3lY2lvbiIKI2RlZmluZSBTVFJJTkdfTk9UX0lNUExFTUVOVEVEICAgICAgICJO6W4gY28gcG9zc2liZSIKI2RlZmluZSBTVFJJTkdfSExQRklMRV9FUlJPUl9zICAgICAgICJZ5WsgbicgYSBu6W4gc3TuIOUgbW91bWludCBkaSBsZXJlIGxpIGZpdGNo7iBkJyBhaWRlIGAlcyciCiNkZWZpbmUgU1RSSU5HX0NPTlRFTlRTICAgICAgICAgICAgICAixSZkdmlucyIKI2RlZmluZSBTVFJJTkdfU0VBUkNIICAgICAgICAgICAgICAgICJDJndlcu4iCiNkZWZpbmUgU1RSSU5HX0JBQ0sgICAgICAgICAgICAgICAgICAiyG4gJkVy7iIKI2RlZmluZSBTVFJJTkdfSElTVE9SWSAgICAgICAgICAgICAgICImSXN0d2VyZSIKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICJUb3MgbGVzIGZpdGNo7nMgKCouKikiCiNkZWZpbmUgU1RSSU5HX0hFTFBfRklMRVNfSExQICAgICAgICAiRml0Y2jucyBkJyBhaWRlICgqLmhscCkiCgojaW5jbHVkZSAiWHgucmMiCg==