LyogdmVyc2lvbmluZm8ucmMuaW4gLSBmb3IgbGliZ3BnLWVycm9yCiAqICAgIENvcHlyaWdodCAoQykgMjAwNSBnMTAgQ29kZSBHbWJICiAqIAogKiBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0aGUgYXV0aG9yIGdpdmVzCiAqIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0IGV2ZW4gdGhlCiAqIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogKi8KIAovKiBUaGlzIGZpbGUgaXMgcHJvY2Vzc2VkIGJ5IGNvbmZpZ3VyZSB0byBjcmVhdGUgdmVyc2lvbmluZm8ucmMgKi8KCiNsaW5lIF9fTElORV9fICJ2ZXJzaW9uaW5mby5yYy5pbiIKCiNpbmNsdWRlIDxhZnhyZXMuaD4KCgpWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KIEZJTEVWRVJTSU9OIEBCVUlMRF9GSUxFVkVSU0lPTkAKIFBST0RVQ1RWRVJTSU9OIEBCVUlMRF9GSUxFVkVSU0lPTkAKIEZJTEVGTEFHU01BU0sgMHgzZkwKI2lmZGVmIF9ERUJVRwogRklMRUZMQUdTIDB4MjFMCiNlbHNlCiBGSUxFRkxBR1MgMHgyMEwKI2VuZGlmCiBGSUxFT1MgMHg0MDAwNEwKIEZJTEVUWVBFIDB4MUwKIEZJTEVTVUJUWVBFIDB4MEwKQkVHSU4KICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgIEJFR0lOCiAgICAgICAgQkxPQ0sgIjA0MDkwNGIwIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIFZBTFVFICJDb21tZW50cyIsICJQcm92aWRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS5cMCIKICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgImcxMCBDb2RlIEdtYkhcMCIKICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJsaWJncGctZXJyb3IgLSBDb21tb24gZXJyb3IgY29kZXNcMCIKICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgIkBWRVJTSU9OQFwwIgogICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgImxpYmdwZy1lcnJvclwwIgogICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IKkgMjAwNSBnMTAgQ29kZSBHbWJIXDAiCiAgICAgICAgICAgIFZBTFVFICJMZWdhbFRyYWRlbWFya3MiLCAiXDAiCiAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImxpYmdwZy1lcnJvci5kbGxcMCIKICAgICAgICAgICAgVkFMVUUgIlByaXZhdGVCdWlsZCIsICJcMCIKICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgImxpYmdwZy1lcnJvclwwIgogICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCAiQFZFUlNJT05AXDAiCiAgICAgICAgICAgIFZBTFVFICJTcGVjaWFsQnVpbGQiLCAiQEJVSUxEX1RJTUVTVEFNUEBcMCIKICAgICAgICBFTkQKICAgIEVORApFTkQKCg==