ZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2ZlbnYgYi9pbmNsdWRlL2NmZW52Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzN2ViMjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NmZW52CkBAIC0wLDAgKzEsODAgQEAKKy8vIC0qLSBDKysgLSotCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2N0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIMrKysrKysrKysrKysrKysrKysrKVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKKy8vCisvLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKKy8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIF9MSUJDUFBfQ0ZFTlYKKyNkZWZpbmUgX0xJQkNQUF9DRkVOVgorCisvKgorICAgIGNmZW52IHN5bm9wc2lzCisKK1RoaXMgZW50aXJlIGhlYWRlciBpcyBDOTkgLyBDKyswWAorCitNYWNyb3M6CisKKyAgICBGRV9ESVZCWVpFUk8KKyAgICBGRV9JTkVYQUNUCisgICAgRkVfSU5WQUxJRAorICAgIEZFX09WRVJGTE9XCisgICAgRkVfVU5ERVJGTE9XCisgICAgRkVfQUxMX0VYQ0VQVAorICAgIEZFX0RPV05XQVJECisgICAgRkVfVE9ORUFSRVNUCisgICAgRkVfVE9XQVJEWkVSTworICAgIEZFX1VQV0FSRAorICAgIEZFX0RGTF9FTlYKKworbmFtZXNwYWNlIHN0ZAoreworCitUeXBlczoKKworICAgIGZlbnZfdAorICAgIGZleGNlcHRfdAorCitpbnQgZmVjbGVhcmV4Y2VwdChpbnQgZXhjZXB0cyk7CitpbnQgZmVnZXRleGNlcHRmbGFnKGZleGNlcHRfdCogZmxhZ3AsIGludCBleGNlcHRzKTsKK2ludCBmZXJhaXNlZXhjZXB0KGludCBleGNlcHRzKTsKK2ludCBmZXNldGV4Y2VwdGZsYWcoY29uc3QgZmV4Y2VwdF90KiBmbGFncCwgaW50IGV4Y2VwdHMpOworaW50IGZldGVzdGV4Y2VwdChpbnQgZXhjZXB0cyk7CitpbnQgZmVnZXRyb3VuZCgpOworaW50IGZlc2V0cm91bmQoaW50IHJvdW5kKTsKK2ludCBmZWdldGVudihmZW52X3QqIGVudnApOworaW50IGZlaG9sZGV4Y2VwdChmZW52X3QqIGVudnApOworaW50IGZlc2V0ZW52KGNvbnN0IGZlbnZfdCogZW52cCk7CitpbnQgZmV1cGRhdGVlbnYoY29uc3QgZmVudl90KiBlbnZwKTsKKworfSAgLy8gc3RkCisqLworCisjaW5jbHVkZSA8X19jb25maWc+CisjaW5jbHVkZSA8ZmVudi5oPgorCisjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCisKK19MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURAorCit1c2luZyA6OmZlbnZfdDsKK3VzaW5nIDo6ZmV4Y2VwdF90OworCit1c2luZyA6OmZlY2xlYXJleGNlcHQ7Cit1c2luZyA6OmZlZ2V0ZXhjZXB0ZmxhZzsKK3VzaW5nIDo6ZmVyYWlzZWV4Y2VwdDsKK3VzaW5nIDo6ZmVzZXRleGNlcHRmbGFnOwordXNpbmcgOjpmZXRlc3RleGNlcHQ7Cit1c2luZyA6OmZlZ2V0cm91bmQ7Cit1c2luZyA6OmZlc2V0cm91bmQ7Cit1c2luZyA6OmZlZ2V0ZW52OwordXNpbmcgOjpmZWhvbGRleGNlcHQ7Cit1c2luZyA6OmZlc2V0ZW52OwordXNpbmcgOjpmZXVwZGF0ZWVudjsKKworX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURAorCisjZW5kaWYgIC8vIF9MSUJDUFBfQ0ZFTlYK