IyBMb2NhbGUgbmFtZSBhbGlhcyBkYXRhIGJhc2UuCiMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQojIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCiMgVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgb2YKIyB0aGUgWCBXaW5kb3cgU3lzdGVtLCB3aGljaCBub3JtYWxseSBjYW4gYmUgZm91bmQgaW4KIwkvdXNyL2xpYi9YMTEvbG9jYWxlL2xvY2FsZS5hbGlhcwojIEEgc2luZ2xlIGxpbmUgY29udGFpbnMgdHdvIGZpZWxkczogYW4gYWxpYXMgYW5kIGEgc3Vic3RpdHV0aW9uIHZhbHVlLgojIEFsbCBlbnRyaWVzIGFyZSBjYXNlIGluZGVwZW5kZW50LgoKIyBOb3RlOiBUaGlzIGZpbGUgaXMgb2Jzb2xldGUgYW5kIGlzIGtlcHQgYXJvdW5kIGZvciB0aGUgdGltZSBiZWluZyBmb3IKIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgTm9ib2R5IHNob3VsZCByZWx5IG9uIHRoZSBuYW1lcyBkZWZpbmVkIGhlcmUuCiMgTG9jYWxlcyBzaG91bGQgYWx3YXlzIGJlIHNwZWNpZmllZCBieSB0aGVpciBmdWxsIG5hbWUuCgpib2ttYWwJCW5iX05PLklTTy04ODU5LTEKYm9rbeVsCQluYl9OTy5JU08tODg1OS0xCmNhdGFsYW4JCWNhX0VTLklTTy04ODU5LTEKY3JvYXRpYW4JaHJfSFIuSVNPLTg4NTktMgpjemVjaAkJY3NfQ1ouSVNPLTg4NTktMgpkYW5pc2ggICAgICAgICAgZGFfREsuSVNPLTg4NTktMQpkYW5zawkJZGFfREsuSVNPLTg4NTktMQpkZXV0c2NoCQlkZV9ERS5JU08tODg1OS0xCmR1dGNoCQlubF9OTC5JU08tODg1OS0xCmVlc3RpCQlldF9FRS5JU08tODg1OS0xCmVzdG9uaWFuCWV0X0VFLklTTy04ODU5LTEKZmlubmlzaCAgICAgICAgIGZpX0ZJLklTTy04ODU5LTEKZnJhbudhaXMJZnJfRlIuSVNPLTg4NTktMQpmcmVuY2gJCWZyX0ZSLklTTy04ODU5LTEKZ2FsZWdvCQlnbF9FUy5JU08tODg1OS0xCmdhbGljaWFuCWdsX0VTLklTTy04ODU5LTEKZ2VybWFuCQlkZV9ERS5JU08tODg1OS0xCmdyZWVrICAgICAgICAgICBlbF9HUi5JU08tODg1OS03CmhlYnJldyAgICAgICAgICBoZV9JTC5JU08tODg1OS04CmhydmF0c2tpCWhyX0hSLklTTy04ODU5LTIKaHVuZ2FyaWFuICAgICAgIGh1X0hVLklTTy04ODU5LTIKaWNlbGFuZGljICAgICAgIGlzX0lTLklTTy04ODU5LTEKaXRhbGlhbiAgICAgICAgIGl0X0lULklTTy04ODU5LTEKamFwYW5lc2UJamFfSlAuZXVjSlAKamFwYW5lc2UuZXVjCWphX0pQLmV1Y0pQCmphX0pQCQlqYV9KUC5ldWNKUApqYV9KUC51amlzCWphX0pQLmV1Y0pQCmphcGFuZXNlLnNqaXMJamFfSlAuU0pJUwprb3JlYW4JCWtvX0tSLmV1Y0tSCmtvcmVhbi5ldWMgCWtvX0tSLmV1Y0tSCmtvX0tSCQlrb19LUi5ldWNLUgpsaXRodWFuaWFuICAgICAgbHRfTFQuSVNPLTg4NTktMTMKbm9fTk8JCW5iX05PLklTTy04ODU5LTEKbm9fTk8uSVNPLTg4NTktMSBuYl9OTy5JU08tODg1OS0xCm5vcndlZ2lhbiAgICAgICBuYl9OTy5JU08tODg1OS0xCm55bm9yc2sJCW5uX05PLklTTy04ODU5LTEKcG9saXNoICAgICAgICAgIHBsX1BMLklTTy04ODU5LTIKcG9ydHVndWVzZSAgICAgIHB0X1BULklTTy04ODU5LTEKcm9tYW5pYW4gICAgICAgIHJvX1JPLklTTy04ODU5LTIKcnVzc2lhbiAgICAgICAgIHJ1X1JVLklTTy04ODU5LTUKc2xvdmFrICAgICAgICAgIHNrX1NLLklTTy04ODU5LTIKc2xvdmVuZSAgICAgICAgIHNsX1NJLklTTy04ODU5LTIKc2xvdmVuaWFuICAgICAgIHNsX1NJLklTTy04ODU5LTIKc3BhbmlzaCAgICAgICAgIGVzX0VTLklTTy04ODU5LTEKc3dlZGlzaCAgICAgICAgIHN2X1NFLklTTy04ODU5LTEKdGhhaQkJdGhfVEguVElTLTYyMAp0dXJraXNoICAgICAgICAgdHJfVFIuSVNPLTg4NTktOQo=