IyEgL2Jpbi9zaAojIFRlc3QgZXNjYXBlIGNoYXJhY3RlciBoYW5kbGluZyBpbiBnZW5jYXQuCiMgQ29weXJpZ2h0IChDKSAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgojCgojIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgojIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiMgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwojIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQojIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCiMgMDIxMTEtMTMwNyBVU0EuCgpjb21tb25fb2JqcGZ4PSQxCnJ1bl9wcm9ncmFtX3ByZWZpeD0kMgoKIyBSdW4gdGhlIHRlc3QgcHJvZ3JhbS4KTE9DUEFUSD0ke2NvbW1vbl9vYmpwZnh9bG9jYWxlZGF0YSBHQ09OVl9QQVRIPSR7Y29tbW9uX29ianBmeH1pY29udmRhdGEgXApOTFNQQVRIPSR7Y29tbW9uX29ianBmeH1jYXRnZXRzLyVOLiVjLmNhdCBMQ19BTEw9amFfSlAuU0pJUyBcCiAgJHtydW5fcHJvZ3JhbV9wcmVmaXh9IFwKICAgID4gJHtjb21tb25fb2JqcGZ4fWNhdGdldHMvdGVzdC1nZW5jYXQub3V0CgojIENvbXBhcmUgd2l0aCB0aGUgZXhwZWN0ZWQgcmVzdWx0LgpjbXAgLSAke2NvbW1vbl9vYmpwZnh9Y2F0Z2V0cy90ZXN0LWdlbmNhdC5vdXQgPDwiRU9GIgpMQ19NRVNTQUdFUyA9IGphX0pQLlNKSVMKc2FtcGxlMTpBQkNERUY6CnNhbXBsZTI6k/qWe4zqOgpzYW1wbGUzOpdckuiVXDoKc2FtcGxlNDpURVNUCVRBQjoKc2FtcGxlNTqLQJRcCY9cju2X3joKZG91YmxlIHNsYXNoXAphbm90aGVyIGxpbmUKRU9GCnJlcz0kPwoKY2F0IDw8RU9GIHwKI2RlZmluZSBBbm90aGVyU2V0IDB4MgkvKiAqc3RhbmRhcmQgaW5wdXQqOjEzICovCiNkZWZpbmUgQW5vdGhlckZPTyAweDEJLyogKnN0YW5kYXJkIGlucHV0KjoxNCAqLwpFT0YKY21wICR7Y29tbW9uX29ianBmeH1jYXRnZXRzL3Rlc3QtZ2VuY2F0LmggLSB8fCByZXM9MQoKZXhpdCAkcmVzCg==