Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGaWxlICAgOiAgbWl4ZWRfcGVyZl9hbmFseXplci5oaAovLyBBdXRob3IgOiAgTC4gUGxhZ25lIDxsYXVyZW50LnBsYWduZUBlZGYuZnIpPiAgICAgICAgCi8vIENvcHlyaWdodCAoQykgRURGIFImRCwgIG1hciBk6WMgMyAxODo1OTozNiBDRVQgMjAwMgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIAovLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi8vIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCi8vIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgovLyAKLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCi8vIAojaWZuZGVmIF9NSVhFRF9QRVJGX0FOQUxZU0VSX0hICiNkZWZpbmUgX01JWEVEX1BFUkZfQU5BTFlTRVJfSEgKCiNpbmNsdWRlICJ4ODZfcGVyZl9hbmFseXplci5oaCIKI2luY2x1ZGUgInBvcnRhYmxlX3BlcmZfYW5hbHl6ZXIuaGgiCgovLyBjaG9vc2UgcG9ydGFibGUgcGVyZiBhbmFseXplciBmb3IgbG9uZyBjYWxjdWxhdGlvbnMgYW5kIHg4NiBhbmFseXNlciBmb3Igc2hvcnQgb25lcwoKCnRlbXBsYXRlPGNsYXNzIEFjdGlvbj4KY2xhc3MgTWl4ZWRfUGVyZl9BbmFseXplcnsKICAKcHVibGljOiAgCiAgTWl4ZWRfUGVyZl9BbmFseXplciggdm9pZCApOl94ODZwYSgpLF9wcGEoKSxfdXNlX3BwYSh0cnVlKQogIHsKICAgIE1FU1NBR0UoIk1peGVkX1BlcmZfQW5hbHl6ZXIgQ3RvciIpOwogIH07IAogIE1peGVkX1BlcmZfQW5hbHl6ZXIoIGNvbnN0IE1peGVkX1BlcmZfQW5hbHl6ZXIgJiApewogICAgSU5GT1MoIkNvcHkgQ3RvciBub3QgaW1wbGVtZW50ZWQiKTsKICAgIGV4aXQoMCk7CiAgfTsKICB+TWl4ZWRfUGVyZl9BbmFseXplciggdm9pZCApewogICAgTUVTU0FHRSgiTWl4ZWRfUGVyZl9BbmFseXplciBEdG9yIik7CiAgfTsKICAgIAogIAogIGlubGluZSBkb3VibGUgZXZhbF9tZmxvcHMoaW50IHNpemUpCiAgewoKICAgIGRvdWJsZSByZXN1bHQ9MC4wOwogICAgaWYgKF91c2VfcHBhKXsgICAgICAKICAgICAgcmVzdWx0PV9wcGEuZXZhbF9tZmxvcHMoc2l6ZSk7CiAgICAgIGlmIChfcHBhLmdldF9uYl9jYWxjKCk+REVGQVVMVF9OQl9TQU1QTEUpe191c2VfcHBhPWZhbHNlO30gICAgICAKICAgIH0KICAgIGVsc2V7ICAgICAgCiAgICAgIHJlc3VsdD1feDg2cGEuZXZhbF9tZmxvcHMoc2l6ZSk7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9Cgpwcml2YXRlOgoKICBQb3J0YWJsZV9QZXJmX0FuYWx5emVyPEFjdGlvbj4gX3BwYTsKICBYODZfUGVyZl9BbmFseXplcjxBY3Rpb24+IF94ODZwYTsKICBib29sIF91c2VfcHBhOwoKfTsKCiNlbmRpZgoKICAKICAgIAogIAo=