Li4gTWFjcm9zL0NvbmZpZ3VyYXRpb24vL0JPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSB8MzAKCkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRQo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CgogICAgI2lmICFkZWZpbmVkKEJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSkKICAgICMgICBkZWZpbmUgQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFIFxcCiAgICAgICAgICAgIHxpZGljfCBcXAogICAgL1wqXCovCiAgICAjZW5kaWYKCgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKYGBCT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkVgYCBpcyBhbiBvdmVycmlkYWJsZSBjb25maWd1cmF0aW9uIG1hY3JvIHJlZ3VsYXRpbmcKdGhlIG1heGltdW0gYXJpdHkgb2YgdGhlIGBgdmVjdG9yYGBcICdzIGFuZCBgYHZlY3Rvcl9jYGBcICdzIHx2YXJpYWRpYyBmb3Jtc3wuIEluIHRoaXMgCmltcGxlbWVudGF0aW9uIG9mIHRoZSBsaWJyYXJ5LCBgYEJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRWBgIGhhcyBhIGRlZmF1bHQgdmFsdWUKb2YgMjAuIFRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxpbWl0LCBkZWZpbmUgYGBCT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkVgYCB0bwp0aGUgZGVzaXJlZCBtYXhpbXVtIGFyaXR5IHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgdGVuIGJlZm9yZSAKaW5jbHVkaW5nIGFueSBsaWJyYXJ5IGhlYWRlci4gfHByZXByb2Nlc3NlZCBoZWFkZXJzIGRpc2NsYWltZXJ8CgoKRXhhbXBsZQotLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CgogICAgI2RlZmluZSBCT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCiAgICAjZGVmaW5lIEJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSAxMAogICAgYGAjYGBcIGluY2x1ZGUgPGJvb3N0L21wbC92ZWN0b3IuaHBwPgogICAgCiAgICB1c2luZyBuYW1lc3BhY2UgYm9vc3Q6Om1wbDsKCiAgICB0eXBlZGVmIHZlY3Rvcl9jPGludCwxPiB2XzE7CiAgICB0eXBlZGVmIHZlY3Rvcl9jPGludCwxLDIsMyw0LDUsNiw3LDgsOSwxMD4gdl8xMDsKICAgIC8vIHR5cGVkZWYgdmVjdG9yX2M8aW50LDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExPiB2XzExOyAvLyBlcnJvciEKCgpTZWUgYWxzbwotLS0tLS0tLQoKfENvbmZpZ3VyYXRpb258LCB8Qk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSU3wsIHxCT09TVF9NUExfTElNSVRfTElTVF9TSVpFfAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK