LyogY29uZmlnLmgtdm1zLiBHZW5lcmF0ZWQgYnkgaGFuZCBieSBLbGF1cyBL5G1wZiA8a2thZW1wZkBybWkuZGU+ICAgICAgLSotQy0qLQoKQ29weXJpZ2h0IChDKSAxOTk2LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBNYWtlLgoKR05VIE1ha2UgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgp2ZXJzaW9uLgoKR05VIE1ha2UgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCldBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAp0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwoKLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuICAqLwovKiBjb25maWcuaC5pbi4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gY29uZmlndXJlLmluIGJ5IGF1dG9oZWFkZXIuICAqLwoKLyogRGVmaW5lIHRvIDEgaWYgb24gQUlYIDMuCiAgIFN5c3RlbSBoZWFkZXJzIHNvbWV0aW1lcyBkZWZpbmUgdGhpcy4KICAgV2UganVzdCB3YW50IHRvIGF2b2lkIGEgcmVkZWZpbml0aW9uIGVycm9yIG1lc3NhZ2UuICAqLwojaWZuZGVmIF9BTExfU09VUkNFCi8qICN1bmRlZiBfQUxMX1NPVVJDRSAqLwojZW5kaWYKCi8qIERlZmluZSB0byAxIGlmIE5MUyBpcyByZXF1ZXN0ZWQuICAqLwovKiAjdW5kZWYgRU5BQkxFX05MUyAqLwoKLyogRGVmaW5lIGFzIDEgaWYgeW91IGhhdmUgZGNnZXR0ZXh0LiAgKi8KLyogI3VuZGVmIEhBVkVfRENHRVRURVhUICovCgovKiBEZWZpbmUgYXMgMSBpZiB5b3UgaGF2ZSBnZXR0ZXh0IGFuZCBkb24ndCB3YW50IHRvIHVzZSBHTlUgZ2V0dGV4dC4gICovCi8qICN1bmRlZiBIQVZFX0dFVFRFWFQgKi8KCi8qIEVtYmVkIEdOVSBHdWlsZSBzdXBwb3J0ICovCi8qICN1bmRlZiBIQVZFX0dVSUxFICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIGxvY2FsZS5oIGZpbGUgY29udGFpbnMgTENfTUVTU0FHRVMuICAqLwovKiAjdW5kZWYgSEFWRV9MQ19NRVNTQUdFUyAqLwoKLyogRGVmaW5lIHRvIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciBsb2NhbGVzLiAgKi8KI2RlZmluZSBMT0NBTEVESVIgIiIKCi8qIERlZmluZSBhcyAxIGlmIHlvdSBoYXZlIHRoZSBzdHBjcHkgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFBDUFkgKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSBjbG9zZWRpciBmdW5jdGlvbiByZXR1cm5zIHZvaWQgaW5zdGVhZCBvZiBpbnQuICAqLwovKiAjdW5kZWYgQ0xPU0VESVJfVk9JRCAqLwoKLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBrZXl3b3JkIGRvZXMgbm90IHdvcmsuICAqLwovKiAjdW5kZWYgY29uc3QgKi8KCi8qIERlZmluZSB0byBvbmUgb2YgX2dldGI2NywgR0VUQjY3LCBnZXRiNjcgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAgc3lzdGVtcy4KICAgVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYWxsb2NhLmMgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLiAgKi8KLyogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5EICovCgovKiBEZWZpbmUgZm9yIERHVVggd2l0aCA8c3lzL2RnX3N5c19pbmZvLmg+LiAgKi8KLyogI3VuZGVmIERHVVggKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSAnZ2V0bG9hZGF2ZycgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcnVuIHNldHVpZCBvciBzZXRnaWQuICAqLwovKiAjdW5kZWYgR0VUTE9BREFWR19QUklWSUxFR0VEICovCgovKiBEZWZpbmUgdG8gJ3Vuc2lnbmVkIGxvbmcnIG9yICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgIGlmIDxpbnR0eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gICovCiNkZWZpbmUgdWludG1heF90IHVuc2lnbmVkIGxvbmcKCi8qIERlZmluZSB0byAnaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAgKi8KLyogI3VuZGVmIGdpZF90ICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhbGxvY2EsIGFzIGEgZnVuY3Rpb24gb3IgbWFjcm8uICAqLwojZGVmaW5lIEhBVkVfQUxMT0NBIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4gICovCi8qICN1bmRlZiBIQVZFX0FMTE9DQV9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgZG9uJ3QgaGF2ZSB2cHJpbnRmIGJ1dCBkbyBoYXZlIF9kb3BybnQuICAqLwovKiAjdW5kZWYgSEFWRV9ET1BSTlQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBmZG9wZW4gZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfRkRPUEVOIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIGhhcyBhIHdvcmtpbmcgZm5tYXRjaCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0ZOTUFUQ0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIGhhcyBpdHMgb3duICdnZXRsb2FkYXZnJyBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVExPQURBVkcgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRtbnRlbnQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9HRVRNTlRFTlQgKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSAnbG9uZyBkb3VibGUnIHR5cGUgd29ya3MuICAqLwovKiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IHN1cHBvcnQgZmlsZSBuYW1lcyBsb25nZXIgdGhhbiAxNCBjaGFyYWN0ZXJzLiAgKi8KI2RlZmluZSBIQVZFX0xPTkdfRklMRV9OQU1FUyAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgJ21tYXAnIHN5c3RlbSBjYWxsLiAgKi8KLyogI3VuZGVmIEhBVkVfTU1BUCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgc3lzdGVtIGNhbGxzIGF1dG9tYXRpY2FsbHkgcmVzdGFydCBhZnRlciBpbnRlcnJ1cHRpb24KICAgYnkgYSBzaWduYWwuICAqLwovKiAjdW5kZWYgSEFWRV9SRVNUQVJUQUJMRV9TWVNDQUxMUyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzdHJ1Y3Qgc3RhdCBoYXMgc3RfYmxrc2l6ZS4gICovCi8qICN1bmRlZiBIQVZFX1NUX0JMS1NJWkUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3RydWN0IHN0YXQgaGFzIHN0X2Jsb2Nrcy4gICovCi8qICN1bmRlZiBIQVZFX1NUX0JMT0NLUyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmNvbGwgZnVuY3Rpb24gYW5kIGl0IGlzIHByb3Blcmx5IGRlZmluZWQuICAqLwovKiAjdW5kZWYgSEFWRV9TVFJDT0xMICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RybmNhc2VjbXAnIGZ1bmN0aW9uLiAqLwojaWYgX19DUlRMX1ZFUiA+PSA3MDAwMDAwMAojZGVmaW5lIEhBVkVfU1RSTkNBU0VDTVAgMQojZW5kaWYKCi8qIERlZmluZSB0byAxIGlmIHlvdXIgc3RydWN0IHN0YXQgaGFzIHN0X3JkZXYuICAqLwovKiAjdW5kZWYgSEFWRV9TVF9SREVWICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyZnRpbWUgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJGVElNRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPHN5cy93YWl0Lmg+IHRoYXQgaXMgUE9TSVguMSBjb21wYXRpYmxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX1dBSVRfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBzdHJ1Y3QgdG0gaGFzIHRtX3pvbmUuICAqLwovKiAjdW5kZWYgSEFWRV9UTV9aT05FICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgZG9uJ3QgaGF2ZSB0bV96b25lIGJ1dCBkbyBoYXZlIHRoZSBleHRlcm5hbCBhcnJheQogICB0em5hbWUuICAqLwovKiAjdW5kZWYgSEFWRV9UWk5BTUUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDx1bmlzdGQuaD4uICAqLwojaWZkZWYgX19ERUNDCiNkZWZpbmUgSEFWRV9VTklTVERfSCAxCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgdXRpbWUoZmlsZSwgTlVMTCkgc2V0cyBmaWxlJ3MgdGltZXN0YW1wIHRvIHRoZSBwcmVzZW50LiAgKi8KLyogI3VuZGVmIEhBVkVfVVRJTUVfTlVMTCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPHZmb3JrLmg+LiAgKi8KLyogI3VuZGVmIEhBVkVfVkZPUktfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHZwcmludGYgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfVlBSSU5URiAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgd2FpdDMgc3lzdGVtIGNhbGwuICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUMyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgb24gTUlOSVguICAqLwovKiAjdW5kZWYgX01JTklYICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHN0cnVjdCBubGlzdCBoYXMgYW4gbl91biBtZW1iZXIuICAqLwovKiAjdW5kZWYgTkxJU1RfTkFNRV9VTklPTiAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPG5saXN0Lmg+LiAgKi8KLyogI3VuZGVmIE5MSVNUX1NUUlVDVCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91ciBDIGNvbXBpbGVyIGRvZXNuJ3QgYWNjZXB0IC1jIGFuZCAtbyB0b2dldGhlci4gICovCi8qICN1bmRlZiBOT19NSU5VU19DX01JTlVTX08gKi8KCi8qIERlZmluZSB0byAnaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAgKi8KLyogSSBhc3N1bWUgdHlwZXMuaCBpcyBhdmFpbGFibGUgZm9yIGFsbCA1LjAgY2MvY3h4IGNvbXBpbGVycyAqLwojaWYgX19ERUNDX1ZFUiA8IDUwMDkwMDAwCiNkZWZpbmUgcGlkX3QgaW50CiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVhdHVyZXMgZXhjZXB0CiAgIHdpdGggdGhpcyBkZWZpbmVkLiAgKi8KLyogI3VuZGVmIF9QT1NJWF8xX1NPVVJDRSAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IG5lZWQgdG8gaW4gb3JkZXIgZm9yIHN0YXQgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAgKi8KLyogI3VuZGVmIF9QT1NJWF9TT1VSQ0UgKi8KCi8qIERlZmluZSBhcyB0aGUgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIChpbnQgb3Igdm9pZCkuICAqLwojZGVmaW5lIFJFVFNJR1RZUEUgdm9pZAoKLyogRGVmaW5lIHRvIDEgaWYgdGhlIHNldHZidWYgZnVuY3Rpb24gdGFrZXMgdGhlIGJ1ZmZlcmluZyB0eXBlIGFzIGl0cyBzZWNvbmQKICAgYXJndW1lbnQgYW5kIHRoZSBidWZmZXIgcG9pbnRlciBhcyB0aGUgdGhpcmQsIGFzIG9uIFN5c3RlbSBWCiAgIGJlZm9yZSByZWxlYXNlIDMuICAqLwovKiAjdW5kZWYgU0VUVkJVRl9SRVZFUlNFRCAqLwoKLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCiAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQogICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVuLXRpbWUuCglTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCglTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBsb3dlciBhZGRyZXNzZXMKCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duCiAqLwovKiAjdW5kZWYgU1RBQ0tfRElSRUNUSU9OICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgJ1NfSVMqJyBtYWNyb3MgaW4gPHN5cy9zdGF0Lmg+IGRvIG5vdCB3b3JrIHByb3Blcmx5LiAgKi8KLyogI3VuZGVmIFNUQVRfTUFDUk9TX0JST0tFTiAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICAqLwovKiAjdW5kZWYgU1REQ19IRUFERVJTICovCgovKiBEZWZpbmUgb24gU3lzdGVtIFYgUmVsZWFzZSA0LiAgKi8KLyogI3VuZGVmIFNWUjQgKi8KCi8qIERlZmluZSB0byAxIGlmICdzeXNfc2lnbGlzdCcgaXMgZGVjbGFyZWQgYnkgPHNpZ25hbC5oPi4gICovCi8qICN1bmRlZiBTWVNfU0lHTElTVF9ERUNMQVJFRCAqLwoKLyogRGVmaW5lIHRvICdpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBkZWZpbmUuICAqLwojaWYgX19ERUNDX1ZFUiA8IDUwMDkwMDAwCiNkZWZpbmUgdWlkX3QgaW50CiNlbmRpZgoKLyogRGVmaW5lIGZvciBFbmNvcmUgVU1BWC4gICovCi8qICN1bmRlZiBVTUFYICovCgovKiBEZWZpbmUgZm9yIEVuY29yZSBVTUFYIDQuMyB0aGF0IGhhcyA8aW5xX3N0YXR1cy9jcHVzdGF0cy5oPgogICBpbnN0ZWFkIG9mIDxzeXMvY3B1c3RhdHMuaD4uICAqLwovKiAjdW5kZWYgVU1BWDRfMyAqLwoKLyogRGVmaW5lIHZmb3JrIGFzIGZvcmsgaWYgdmZvcmsgZG9lcyBub3Qgd29yay4gICovCi8qICN1bmRlZiB2Zm9yayAqLwoKLyogTmFtZSBvZiB0aGlzIHBhY2thZ2UgKG5lZWRlZCBieSBhdXRvbWFrZSkgKi8KI2RlZmluZSBQQUNLQUdFICIlUEFDS0FHRSUiCgovKiBWZXJzaW9uIG9mIHRoaXMgcGFja2FnZSAobmVlZGVkIGJ5IGF1dG9tYWtlKSAqLwojZGVmaW5lIFZFUlNJT04gIiVWRVJTSU9OJSIKCi8qIERlZmluZSB0byB0aGUgbmFtZSBvZiB0aGUgU0NDUyAnZ2V0JyBjb21tYW5kLiAgKi8KLyogI3VuZGVmIFNDQ1NfR0VUICovCgovKiBEZWZpbmUgdGhpcyBpZiB0aGUgU0NDUyAnZ2V0JyBjb21tYW5kIHVuZGVyc3RhbmRzIHRoZSAnLUc8ZmlsZT4nIG9wdGlvbi4gICovCi8qICN1bmRlZiBTQ0NTX0dFVF9NSU5VU19HICovCgovKiBEZWZpbmUgdGhpcyB0byBlbmFibGUgam9iIHNlcnZlciBzdXBwb3J0IGluIEdOVSBtYWtlLiAgKi8KLyogI3VuZGVmIE1BS0VfSk9CU0VSVkVSICovCgovKiBEZWZpbmUgdG8gYmUgdGhlIG5hbm9zZWNvbmRzIG1lbWJlciBvZiBzdHJ1Y3Qgc3RhdCdzIHN0X210aW0sCiAgIGlmIGl0IGV4aXN0cy4gICovCi8qICN1bmRlZiBTVF9NVElNX05TRUMgKi8KCi8qIERlZmluZSB0byAxIGlmIHRoZSBDIGxpYnJhcnkgZGVmaW5lcyB0aGUgdmFyaWFibGUgJ3N5c19zaWdsaXN0Jy4gICovCi8qICN1bmRlZmluZSBIQVZFX1NZU19TSUdMSVNUICovCgovKiBEZWZpbmUgdG8gMSBpZiB0aGUgQyBsaWJyYXJ5IGRlZmluZXMgdGhlIHZhcmlhYmxlICdfc3lzX3NpZ2xpc3QnLiAgKi8KLyogI3VuZGVmIEhBVkVfX1NZU19TSUdMSVNUICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ3VuaW9uIHdhaXQnIHR5cGUgaW4gPHN5cy93YWl0Lmg+LiAgKi8KLyogI3VuZGVmIEhBVkVfVU5JT05fV0FJVCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGR1cDIgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfRFVQMiAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0Y3dkIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX0dFVENXRCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0Z3JvdXBzIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfR0VUR1JPVVBTICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0aG9zdGJ5bmFtZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRob3N0bmFtZSBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX0dFVEhPU1ROQU1FICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbWVtbW92ZSBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9NRU1NT1ZFIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBta3RlbXAgZnVuY3Rpb24uICAqLwojZGVmaW5lIEhBVkVfTUtURU1QIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBwc2lnbmFsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfUFNJR05BTCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHBzdGF0X2dldGR5bmFtaWMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9QU1RBVF9HRVREWU5BTUlDICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2V0ZWdpZCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NFVEVHSUQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZXRldWlkIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU0VURVVJRCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNldGxpbmVidWYgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TRVRMSU5FQlVGICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2V0cmVnaWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWZpbmUgSEFWRV9TRVRSRUdJRCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNldHJldWlkIGZ1bmN0aW9uLiAgKi8KLyogI2RlZmluZSBIQVZFX1NFVFJFVUlEICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2lnc2V0bWFzayBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9TSUdTRVRNQVNLIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzb2NrZXQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TT0NLRVQgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJjYXNlY21wIGZ1bmN0aW9uLiAgKi8KI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cmNtcGkgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9TVFJDTVBJICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyaWNtcCBmdW5jdGlvbi4gICovCi8qICN1bmRlZiBIQVZFX1NUUklDTVAgKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJlcnJvciBmdW5jdGlvbi4gICovCiNkZWZpbmUgSEFWRV9TVFJFUlJPUiAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3Ryc2lnbmFsIGZ1bmN0aW9uLiAgKi8KLyogI3VuZGVmIEhBVkVfU1RSU0lHTkFMICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgd2FpdDMgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUMyAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdhaXRwaWQgZnVuY3Rpb24uICAqLwovKiAjdW5kZWYgSEFWRV9XQUlUUElEICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZS4gICovCiNkZWZpbmUgSEFWRV9ESVJFTlRfSCAxCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAgKi8KI2lmZGVmIF9fREVDQwojZGVmaW5lIEhBVkVfRkNOVExfSCAxCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIEhBVkVfTElNSVRTX0ggMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWNoL21hY2guaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9NQUNIX01BQ0hfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9NRU1PUllfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZGlyLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfTkRJUl9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3VyIGNvbXBpbGVyIGNvbmZvcm1zIHRvIHRoZSBBTlNJIEMgc3RhbmRhcmQuICovCiNkZWZpbmUgSEFWRV9BTlNJX0NPTVBJTEVSIDEKCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IGhlYWRlciBmaWxlLiAqLwojZGVmaW5lIEhBVkVfU1REQVJHX0ggMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIEhBVkVfU1RETElCX0ggMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICAqLwojZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGlyLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX0RJUl9IICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9uZGlyLmg+IGhlYWRlciBmaWxlLiAgKi8KLyogI3VuZGVmIEhBVkVfU1lTX05ESVJfSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICAqLwovKiAjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSCAqLwoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdGltZWIuaD4gaGVhZGVyIGZpbGUuICAqLwojaWZuZGVmIF9fR05VQ19fCiNkZWZpbmUgSEFWRV9TWVNfVElNRUJfSCAxCiNlbmRpZgoKLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gICovCi8qICN1bmRlZiBIQVZFX1NZU19XQUlUX0ggKi8KCi8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZ2MgbGlicmFyeSAoLWxkZ2MpLiAgKi8KLyogI3VuZGVmIEhBVkVfTElCREdDICovCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUga3N0YXQgbGlicmFyeSAoLWxrc3RhdCkuICAqLwovKiAjdW5kZWYgSEFWRV9MSUJLU1RBVCAqCgovKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3VuIGxpYnJhcnkgKC1sc3VuKS4gICovCi8qICN1bmRlZiBIQVZFX0xJQlNVTiAqLwoKLyogVXNlIGhpZ2ggcmVzb2x1dGlvbiBmaWxlIHRpbWVzdGFtcHMgaWYgbm9uemVyby4gKi8KI2RlZmluZSBGSUxFX1RJTUVTVEFNUF9ISV9SRVMgMAoKLyogRGVmaW5lIGZvciBjYXNlIGluc2Vuc2l0dmUgZmlsZW5hbWVzICovCiNkZWZpbmUgSEFWRV9DQVNFX0lOU0VOU0lUSVZFX0ZTIDEKCi8qIFZNUyBzcGVjaWZpYywgZGVmaW5lIGl0IGlmIHlvdSB3YW50IHRvIHVzZSBjYXNlIHNlbnNpdGl2ZSB0YXJnZXRzICovCi8qICN1bmRlZiBXQU5UX0NBU0VfU0VOU0lUSVZFX1RBUkdFVFMgKi8KCi8qIFZNUyBzcGVjaWZpYywgVjcuMCBoYXMgb3BlbmRpcigpIGFuZCBmcmllbmRzLCBzbyBpdCdzIHVuZGVmaW5lZCAqLwovKiBJZiB5b3Ugd2FudCB0byB1c2Ugbm9uLVZNUyBjb2RlIGZvciBvcGVuZGlyKCkgZXRjLiBvbiBWNy4wIGFuZCBncmVhdGVyCiAgIGRlZmluZSB0aGUgZmlyc3Qgb3IgYm90aCBtYWNyb3MgQU5EIGNoYW5nZSB0aGUgY29tcGlsZSBjb21tYW5kIHRvIGdldCB0aGUKICAgbm9uLVZNUyB2ZXJzaW9ucyBsaW5rZWQ6IChwcmVmaXg9KGFsbCxleGNlcHQ9KG9wZW5kaXIsLi4uICAqLwovKiAjdW5kZWYgSEFWRV9WTVNESVJfSCAqLwovKiAjdW5kZWYgX0RJUkVOVF9IQVZFX0RfTkFNTEVOICovCgovKiBPbiBvbGRlciBzeXN0ZW1zIHdpdGhvdXQgNy4wIGJhY2twb3J0IG9mIENSVEwgdGhlIGZpcnN0IG9uZSBpcyBkZWZpbmVkICovCiNpZmRlZiBfX0NSVExfVkVSCiMgaWYgX19DUlRMX1ZFUiA8IDcwMDAwMDAwCiMgIGRlZmluZSBIQVZFX1ZNU0RJUl9IIDEKIyBlbmRpZgojZWxzZQojIGlmIF9fVk1TX1ZFUiA8IDcwMDAwMDAwCiMgIGRlZmluZSBIQVZFX1ZNU0RJUl9IIDEKIyBlbmRpZgojZW5kaWYKCiNpZiBkZWZpbmVkKEhBVkVfVk1TRElSX0gpICYmIGRlZmluZWQoSEFWRV9ESVJFTlRfSCkKI3VuZGVmIEhBVkVfRElSRU5UX0gKI2VuZGlmCgojZGVmaW5lIEhBVkVfU1RETElCX0ggMQojZGVmaW5lIElOQ0xVREVESVIgInN5cyRzeXNyb290OltzeXNsaWJdIgojZGVmaW5lIExJQkRJUiAic3lzJHN5c3Jvb3Q6W3N5c2xpYl0iCgovKiBEb24ndCB1c2UgUlRMIGZ1bmN0aW9ucyBvZiBPcGVuVk1TICovCiNpZmRlZiBfX0RFQ0MKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2RlZmluZSBnZXRvcHQgICBnbnVfZ2V0b3B0CiNkZWZpbmUgb3B0YXJnICAgZ251X29wdGFyZwojZGVmaW5lIG9wdG9wdCAgIGdudV9vcHRvcHQKI2RlZmluZSBvcHRpbmQgICBnbnVfb3B0aW5kCiNkZWZpbmUgb3B0ZXJyICAgZ251X29wdGVycgojZGVmaW5lIGdsb2JmcmVlIGdudV9nbG9iZnJlZQojZGVmaW5lIGdsb2IgICAgIGdudV9nbG9iCiNlbmRpZgoKLyogRGVmaW5lIGlmIHVzaW5nIGFsbG9jYS5jLiAgKi8KLyogI3VuZGVmIENfQUxMT0NBICovCi8qIG1heWJlIHRoaXMgc2hvdWxkIGJlIHBsYWNlZCBpbnRvIG1ha2UuaCAqLwojaWYJZGVmaW5lZChfX1ZBWCkgJiYgZGVmaW5lZChfX0RFQ0MpCiNkZWZpbmUgYWxsb2NhKG4pCV9fQUxMT0NBKG4pCiNlbmRpZgoKLyogQnVpbGQgaG9zdCBpbmZvcm1hdGlvbi4gKi8KI2RlZmluZSBNQUtFX0hPU1QgIlZNUyIK