LyoKICogIE5vdGVwYWQgKEVuZ2xpc2ggcmVzb3VyY2VzKQogKgogKiAgQ29weXJpZ2h0IDE5OTcsOTggTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogKiAgUHJvb2ZyZWFkIDE5OTggYnkgRGF2aWQgTGVlIExhbWJlcnQgPGxhbWJlcjQ1QGVnci5tc3UuZWR1PgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojZGVmaW5lIExBTkdVQUdFX0lEICAgICAgICAgICAgICAgICAgICAgU2sKI2RlZmluZSBMQU5HVUFHRV9OVU1CRVIgICAgICAgICAgICAgICAgIDEwCiNkZWZpbmUgTEFOR1VBR0VfTUVOVV9JVEVNICAgICAgICAgICAgICAiJlNsb3ZlbnNreSIKCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgICAgIiZT+mJvciIKI2RlZmluZSBNRU5VX0ZJTEVfTkVXICAgICAgICAgICAgICAgICAgICImTm92/S4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfT1BFTiAgICAgICAgICAgICAgICAgICImT3R2b3JpnSIKI2RlZmluZSBNRU5VX0ZJTEVfU0FWRSAgICAgICAgICAgICAgICAgICJVJmxvnmmdIgojZGVmaW5lIE1FTlVfRklMRV9TQVZFQVMgICAgICAgICAgICAgICAgIlVsb54maZ0gYWtvLi4uIgojZGVmaW5lIE1FTlVfRklMRV9QUklOVCAgICAgICAgICAgICAgICAgIiZUbGHoaZ0iCiNkZWZpbmUgTUVOVV9GSUxFX1BBR0VTRVRVUCAgICAgICAgICAgICAiJk5hc3RhdmVuaWUgdGxh6GUuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5UU0VUVVAgICAgICAgICAgICAiTmFzdGF2ZW5pZSB0bGHoaWFyJm5lLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgICAgIlUma29u6GmdIgoKI2RlZmluZSBNRU5VX0VESVQgICAgICAgICAgICAgICAgICAgICAgICImVXByYXZpnSIKI2RlZmluZSBNRU5VX0VESVRfVU5ETyAgICAgICAgICAgICAgICAgICImS3JvayBzcOSdXHRDdHJsK1oiCiNkZWZpbmUgTUVOVV9FRElUX0NVVCAgICAgICAgICAgICAgICAgICAiViZ5c3RyaWhu+p1cdEN0cmwrWCIKI2RlZmluZSBNRU5VX0VESVRfQ09QWSAgICAgICAgICAgICAgICAgICImS29w7XJvdmGdXHRDdHJsK0MiCiNkZWZpbmUgTUVOVV9FRElUX1BBU1RFICAgICAgICAgICAgICAgICAiViZsZXBpnVx0Q3RybCtWIgojZGVmaW5lIE1FTlVfRURJVF9ERUxFVEUgICAgICAgICAgICAgICAgIiZabWF6YZ1cdERlbCIKI2RlZmluZSBNRU5VX0VESVRfU0VMRUNUQUxMICAgICAgICAgICAgICJWeWJyJmGdIHaaZXRrbyIKI2RlZmluZSBNRU5VX0VESVRfVElNRURBVEUgICAgICAgICAgICAgICLIYXMmL0ThdHVtXHRGNSIKI2RlZmluZSBNRU5VX0VESVRfV1JBUCAgICAgICAgICAgICAgICAgICImWmFsb21pnSBkbGjpIHJpYWRreSIKCiNkZWZpbmUgTUVOVV9TRUFSQ0ggICAgICAgICAgICAgICAgICAgICAiJki+YWRhnSIKI2RlZmluZSBNRU5VX1NFQVJDSF9TRUFSQ0ggICAgICAgICAgICAgICJIvmFkYZ0uLi4iCiNkZWZpbmUgTUVOVV9TRUFSQ0hfTkVYVCAgICAgICAgICAgICAgICAiJki+YWRhnSDvYb6a7Vx0RjMiCgojZGVmaW5lIE1FTlVfTEFOR1VBR0UgICAgICAgICAgICAgICAgICAgIiZKYXp5ayIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAgICAiJlBvbW9jIgojZGVmaW5lIE1FTlVfSEVMUF9DT05URU5UUyAgICAgICAgICAgICAgIiZPYnNhaCIKI2RlZmluZSBNRU5VX0hFTFBfU0VBUkNIICAgICAgICAgICAgICAgICImSL5hZGGdLi4uIgojZGVmaW5lIE1FTlVfSEVMUF9IRUxQX09OX0hFTFAgICAgICAgICAgIiZQb21vYyBuYSBwb21vY2kiCgojZGVmaW5lIE1FTlVfSU5GTyAgICAgICAgICAgICAgICAgICAgICAgIkluZiZvLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgICAgIiZMaWNlbmNpYSIKI2RlZmluZSBNRU5VX0lORk9fTk9fV0FSUkFOVFkgICAgICAgICAgICImQkVaIFrBUlVLWSIKI2RlZmluZSBNRU5VX0lORk9fQUJPVVRfV0lORSAgICAgICAgICAgICJPICZXaW5lIgoKCi8qIERpYWxvZ3MgKi8KCiNkZWZpbmUgRElBTE9HX09LICAgICAgICAgICAgICAgICAgICAgICAiT0siCiNkZWZpbmUgRElBTE9HX0NBTkNFTCAgICAgICAgICAgICAgICAgICAiWnJ1mmmdIgojZGVmaW5lIERJQUxPR19CUk9XU0UgICAgICAgICAgICAgICAgICAgIiZMaXN0b3ZhnS4uLiIKI2RlZmluZSBESUFMT0dfSEVMUCAgICAgICAgICAgICAgICAgICAgICImUG9tb2MiCgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfQ0FQVElPTiAgICAgICAgIk5hc3RhdmVuaWUgc3Ry4W5reSIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0hFQUQgICAgICAgICAgICImSGxhdmnoa2E6IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfVEFJTCAgICAgICAgICAgIiZQ5HRhOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX01BUkdJTiAgICAgICAgICImT2tyYWplOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0xFRlQgICAgICAgICAgICK8YSZ2/ToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9SSUdIVCAgICAgICAgICAiUCZyYXb9OiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX1RPUCAgICAgICAgICAgICJIJm9yZToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9CT1RUT00gICAgICAgICAiRG8mbHU6IgoKCi8qIFN0cmluZ3MgKi8KCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9IRUFERVJWQUxVRSAgICAiJm4iICAgICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfRk9PVEVSVkFMVUUgICAgIlN0cmFuYSAmcyIgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfTEVGVFZBTFVFICAgICAgIjIwIG1tIiAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX1JJR0hUVkFMVUUgICAgICIyMCBtbSIgICAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9UT1BWQUxVRSAgICAgICAiMjUgbW0iICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfQk9UVE9NVkFMVUUgICAgIjI1IG1tIiAgICAgLyogRklYTUUgKi8KCiNkZWZpbmUgU1RSSU5HX05PVEVQQUQgICAgICAgICAgICAgICAgICAiTm90ZXBhZCIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICJDSFlCQSIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICAgICJWQVJPVkFOSUUiCiNkZWZpbmUgU1RSSU5HX0lORk8gICAgICAgICAgICAgICAgICAgICAiSW5mb3Jt4WNpZSIKCiNkZWZpbmUgU1RSSU5HX1VOVElUTEVEICAgICAgICAgICAgICAgICAiKG5lcG9tZW5vdmFu/SkiCgojZGVmaW5lIFNUUklOR19BTExfRklMRVMgICAgICAgICAgICAgICAgIlaaZXRreSBz+mJvcnkgKCouKikiCiNkZWZpbmUgU1RSSU5HX1RFWFRfRklMRVNfVFhUICAgICAgICAgICAiVGV4dG926SBz+mJvcnkgKCoudHh0KSIKCiNkZWZpbmUgU1RSSU5HX1RPT0xBUkdFICAgICAgICAgIkZpbGUgJyVzJyBpcyB0b28gbGFyZ2UgZm9yIG5vdGVwYWQuXG4gXApQbGVhc2UgdXNlIGEgZGlmZmVyZW50IGVkaXRvci4iCgojZGVmaW5lIFNUUklOR19OT1RFWFQgICAgICAgICAgICJOaeggc3RlIG5lbmFw7XNhbGkuIFwKXG5Qcm9z7W0sIG5hcO2adGUgbmVqYWv9IHRleHQgYSBwb2v6c3RlIHNhIHpub3Z1LiIKCi8qIEZJWE1FICovCgojZGVmaW5lIFNUUklOR19ET0VTTk9URVhJU1QgICAgICJGaWxlICclcydcbmRvZXMgbm90IGV4aXN0XG5cbiBcCkRvIHlvdSB3YW50IHRvIGNyZWF0ZSBhIG5ldyBmaWxlID8iCgojZGVmaW5lIFNUUklOR19OT1RTQVZFRCAgICAgICAgICJT+mJvciAnJXMnXG5ib2wgem1lbmVu/W5cbiBcClByYWpldGUgc2kgdWxvnmmdIHptZW55ID8iCgojZGVmaW5lIFNUUklOR19OT1RGT1VORCAgICAgICAgICInJXMnIG5lbfSeZSBieZ0gbuFqZGVu/S4iCgojZGVmaW5lIFNUUklOR19PVVRfT0ZfTUVNT1JZICAgICJOb3QgZW5vdWdoIG1lbW9yeSB0byBjb21wbGV0ZSB0aGlzIFwKdGFzay4gXG5DbG9zZSBvbmUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgdG8gaW5jcmVhc2UgdGhlIGFtb3VudCBvZiBcbmZyZWUgXAptZW1vcnkuIgoKI2luY2x1ZGUgIm5vdGVwYWQucmMiCg==