I2luY2x1ZGUgImFybV9hcmNoLmgiCgoudGV4dAojaWYgIWRlZmluZWQoX19jbGFuZ19fKQouYXJjaAlhcm12OC1hK2NyeXB0bwojZW5kaWYKLmdsb2JsCWdjbV9pbml0X3Y4Ci50eXBlCWdjbV9pbml0X3Y4LCVmdW5jdGlvbgouYWxpZ24JNApnY21faW5pdF92ODoKCWxkMQl7djE3LjJkfSxbeDFdCQkvL2xvYWQgaW5wdXQgSAoJbW92aQl2MTkuMTZiLCMweGUxCglzaGwJdjE5LjJkLHYxOS4yZCwjNTcJCS8vMHhjMi4wCglleHQJdjMuMTZiLHYxNy4xNmIsdjE3LjE2YiwjOAoJdXNocgl2MTguMmQsdjE5LjJkLCM2MwoJZHVwCXYxNy40cyx2MTcuc1sxXQoJZXh0CXYxNi4xNmIsdjE4LjE2Yix2MTkuMTZiLCM4CQkvL3QwPTB4YzIuLi4uMDEKCXVzaHIJdjE4LjJkLHYzLjJkLCM2MwoJc3Nocgl2MTcuNHMsdjE3LjRzLCMzMQkJLy9icm9hZGNhc3QgY2FycnkgYml0CglhbmQJdjE4LjE2Yix2MTguMTZiLHYxNi4xNmIKCXNobAl2My4yZCx2My4yZCwjMQoJZXh0CXYxOC4xNmIsdjE4LjE2Yix2MTguMTZiLCM4CglhbmQJdjE2LjE2Yix2MTYuMTZiLHYxNy4xNmIKCW9ycgl2My4xNmIsdjMuMTZiLHYxOC4xNmIJCS8vSDw8PD0xCgllb3IJdjIwLjE2Yix2My4xNmIsdjE2LjE2YgkJLy90d2lzdGVkIEgKCXN0MQl7djIwLjJkfSxbeDBdLCMxNgkJLy9zdG9yZSBIdGFibGVbMF0KCgkvL2NhbGN1bGF0ZSBIXjIKCWV4dAl2MTYuMTZiLHYyMC4xNmIsdjIwLjE2YiwjOAkJLy9LYXJhdHN1YmEgcHJlLXByb2Nlc3NpbmcKCXBtdWxsCXYwLjFxLHYyMC4xZCx2MjAuMWQKCWVvcgl2MTYuMTZiLHYxNi4xNmIsdjIwLjE2YgoJcG11bGwyCXYyLjFxLHYyMC4yZCx2MjAuMmQKCXBtdWxsCXYxLjFxLHYxNi4xZCx2MTYuMWQKCglleHQJdjE3LjE2Yix2MC4xNmIsdjIuMTZiLCM4CQkvL0thcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKCWVvcgl2MTguMTZiLHYwLjE2Yix2Mi4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxNy4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxOC4xNmIKCXBtdWxsCXYxOC4xcSx2MC4xZCx2MTkuMWQJCS8vMXN0IHBoYXNlCgoJaW5zCXYyLmRbMF0sdjEuZFsxXQoJaW5zCXYxLmRbMV0sdjAuZFswXQoJZW9yCXYwLjE2Yix2MS4xNmIsdjE4LjE2YgoKCWV4dAl2MTguMTZiLHYwLjE2Yix2MC4xNmIsIzgJCS8vMm5kIHBoYXNlCglwbXVsbAl2MC4xcSx2MC4xZCx2MTkuMWQKCWVvcgl2MTguMTZiLHYxOC4xNmIsdjIuMTZiCgllb3IJdjIyLjE2Yix2MC4xNmIsdjE4LjE2YgoKCWV4dAl2MTcuMTZiLHYyMi4xNmIsdjIyLjE2YiwjOAkJLy9LYXJhdHN1YmEgcHJlLXByb2Nlc3NpbmcKCWVvcgl2MTcuMTZiLHYxNy4xNmIsdjIyLjE2YgoJZXh0CXYyMS4xNmIsdjE2LjE2Yix2MTcuMTZiLCM4CQkvL3BhY2sgS2FyYXRzdWJhIHByZS1wcm9jZXNzZWQKCXN0MQl7djIxLjJkLHYyMi4yZH0sW3gwXQkJLy9zdG9yZSBIdGFibGVbMS4uMl0KCglyZXQKLnNpemUJZ2NtX2luaXRfdjgsLi1nY21faW5pdF92OAouZ2xvYmwJZ2NtX2dtdWx0X3Y4Ci50eXBlCWdjbV9nbXVsdF92OCwlZnVuY3Rpb24KLmFsaWduCTQKZ2NtX2dtdWx0X3Y4OgoJbGQxCXt2MTcuMmR9LFt4MF0JCS8vbG9hZCBYaQoJbW92aQl2MTkuMTZiLCMweGUxCglsZDEJe3YyMC4yZCx2MjEuMmR9LFt4MV0JLy9sb2FkIHR3aXN0ZWQgSCwgLi4uCglzaGwJdjE5LjJkLHYxOS4yZCwjNTcKI2lmbmRlZiBfX0FSTUVCX18KCXJldjY0CXYxNy4xNmIsdjE3LjE2YgojZW5kaWYKCWV4dAl2My4xNmIsdjE3LjE2Yix2MTcuMTZiLCM4CgoJcG11bGwJdjAuMXEsdjIwLjFkLHYzLjFkCQkvL0gubG+3WGkubG8KCWVvcgl2MTcuMTZiLHYxNy4xNmIsdjMuMTZiCQkvL0thcmF0c3ViYSBwcmUtcHJvY2Vzc2luZwoJcG11bGwyCXYyLjFxLHYyMC4yZCx2My4yZAkJLy9ILmhpt1hpLmhpCglwbXVsbAl2MS4xcSx2MjEuMWQsdjE3LjFkCQkvLyhILmxvK0guaGkptyhYaS5sbytYaS5oaSkKCglleHQJdjE3LjE2Yix2MC4xNmIsdjIuMTZiLCM4CQkvL0thcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKCWVvcgl2MTguMTZiLHYwLjE2Yix2Mi4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxNy4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxOC4xNmIKCXBtdWxsCXYxOC4xcSx2MC4xZCx2MTkuMWQJCS8vMXN0IHBoYXNlIG9mIHJlZHVjdGlvbgoKCWlucwl2Mi5kWzBdLHYxLmRbMV0KCWlucwl2MS5kWzFdLHYwLmRbMF0KCWVvcgl2MC4xNmIsdjEuMTZiLHYxOC4xNmIKCglleHQJdjE4LjE2Yix2MC4xNmIsdjAuMTZiLCM4CQkvLzJuZCBwaGFzZSBvZiByZWR1Y3Rpb24KCXBtdWxsCXYwLjFxLHYwLjFkLHYxOS4xZAoJZW9yCXYxOC4xNmIsdjE4LjE2Yix2Mi4xNmIKCWVvcgl2MC4xNmIsdjAuMTZiLHYxOC4xNmIKCiNpZm5kZWYgX19BUk1FQl9fCglyZXY2NAl2MC4xNmIsdjAuMTZiCiNlbmRpZgoJZXh0CXYwLjE2Yix2MC4xNmIsdjAuMTZiLCM4CglzdDEJe3YwLjJkfSxbeDBdCQkvL3dyaXRlIG91dCBYaQoKCXJldAouc2l6ZQlnY21fZ211bHRfdjgsLi1nY21fZ211bHRfdjgKLmdsb2JsCWdjbV9naGFzaF92OAoudHlwZQlnY21fZ2hhc2hfdjgsJWZ1bmN0aW9uCi5hbGlnbgk0CmdjbV9naGFzaF92ODoKCWxkMQl7djAuMmR9LFt4MF0JCS8vbG9hZCBbcm90YXRlZF0gWGkKCQkJCQkJLy8iW3JvdGF0ZWRdIiBtZWFucyB0aGF0CgkJCQkJCS8vbG9hZGVkIHZhbHVlIHdvdWxkIGhhdmUKCQkJCQkJLy90byBiZSByb3RhdGVkIGluIG9yZGVyIHRvCgkJCQkJCS8vbWFrZSBpdCBhcHBlYXIgYXMgaW4KCQkJCQkJLy9hbG9yaXRobSBzcGVjaWZpY2F0aW9uCglzdWJzCXgzLHgzLCMzMgkJLy9zZWUgaWYgeDMgaXMgMzIgb3IgbGFyZ2VyCgltb3YJeDEyLCMxNgkJLy94MTIgaXMgdXNlZCBhcyBwb3N0LQoJCQkJCQkvL2luY3JlbWVudCBmb3IgaW5wdXQgcG9pbnRlcjsKCQkJCQkJLy9hcyBsb29wIGlzIG1vZHVsby1zY2hlZHVsZWQKCQkJCQkJLy94MTIgaXMgemVyb2VkIGp1c3QgaW4gdGltZQoJCQkJCQkvL3RvIHByZWNsdWRlIG92ZXJzdGVwaW5nCgkJCQkJCS8vaW5wW2xlbl0sIHdoaWNoIG1lYW5zIHRoYXQKCQkJCQkJLy9sYXN0IGJsb2NrW3NdIGFyZSBhY3R1YWxseQoJCQkJCQkvL2xvYWRlZCB0d2ljZSwgYnV0IGxhc3QKCQkJCQkJLy9jb3B5IGlzIG5vdCBwcm9jZXNzZWQKCWxkMQl7djIwLjJkLHYyMS4yZH0sW3gxXSwjMzIJLy9sb2FkIHR3aXN0ZWQgSCwgLi4uLCBIXjIKCW1vdmkJdjE5LjE2YiwjMHhlMQoJbGQxCXt2MjIuMmR9LFt4MV0KCWNzZWwJeDEyLHh6cix4MTIsZXEJCQkvL2lzIGl0IHRpbWUgdG8gemVybyB4MTI/CglleHQJdjAuMTZiLHYwLjE2Yix2MC4xNmIsIzgJCS8vcm90YXRlIFhpCglsZDEJe3YxNi4yZH0sW3gyXSwjMTYJLy9sb2FkIFtyb3RhdGVkXSBJWzBdCglzaGwJdjE5LjJkLHYxOS4yZCwjNTcJCS8vY29tcG9zZSAweGMyLjAgY29uc3RhbnQKI2lmbmRlZiBfX0FSTUVCX18KCXJldjY0CXYxNi4xNmIsdjE2LjE2YgoJcmV2NjQJdjAuMTZiLHYwLjE2YgojZW5kaWYKCWV4dAl2My4xNmIsdjE2LjE2Yix2MTYuMTZiLCM4CQkvL3JvdGF0ZSBJWzBdCgliLmxvCS5Mb2RkX3RhaWxfdjgJCS8veDMgd2FzIGxlc3MgdGhhbiAzMgoJbGQxCXt2MTcuMmR9LFt4Ml0seDEyCS8vbG9hZCBbcm90YXRlZF0gSVsxXQojaWZuZGVmIF9fQVJNRUJfXwoJcmV2NjQJdjE3LjE2Yix2MTcuMTZiCiNlbmRpZgoJZXh0CXY3LjE2Yix2MTcuMTZiLHYxNy4xNmIsIzgKCWVvcgl2My4xNmIsdjMuMTZiLHYwLjE2YgkJLy9JW2ldXj1YaQoJcG11bGwJdjQuMXEsdjIwLjFkLHY3LjFkCQkvL0i3SWkrMQoJZW9yCXYxNy4xNmIsdjE3LjE2Yix2Ny4xNmIJCS8vS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCglwbXVsbDIJdjYuMXEsdjIwLjJkLHY3LjJkCgliCS5Mb29wX21vZDJ4X3Y4CgouYWxpZ24JNAouTG9vcF9tb2QyeF92ODoKCWV4dAl2MTguMTZiLHYzLjE2Yix2My4xNmIsIzgKCXN1YnMJeDMseDMsIzMyCQkvL2lzIHRoZXJlIG1vcmUgZGF0YT8KCXBtdWxsCXYwLjFxLHYyMi4xZCx2My4xZAkJLy9IXjIubG+3WGkubG8KCWNzZWwJeDEyLHh6cix4MTIsbG8JCQkvL2lzIGl0IHRpbWUgdG8gemVybyB4MTI/CgoJcG11bGwJdjUuMXEsdjIxLjFkLHYxNy4xZAoJZW9yCXYxOC4xNmIsdjE4LjE2Yix2My4xNmIJCS8vS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCglwbXVsbDIJdjIuMXEsdjIyLjJkLHYzLjJkCQkvL0heMi5oabdYaS5oaQoJZW9yCXYwLjE2Yix2MC4xNmIsdjQuMTZiCQkvL2FjY3VtdWxhdGUKCXBtdWxsMgl2MS4xcSx2MjEuMmQsdjE4LjJkCQkvLyhIXjIubG8rSF4yLmhpKbcoWGkubG8rWGkuaGkpCglsZDEJe3YxNi4yZH0sW3gyXSx4MTIJLy9sb2FkIFtyb3RhdGVkXSBJW2krMl0KCgllb3IJdjIuMTZiLHYyLjE2Yix2Ni4xNmIKCWNzZWwJeDEyLHh6cix4MTIsZXEJCQkvL2lzIGl0IHRpbWUgdG8gemVybyB4MTI/Cgllb3IJdjEuMTZiLHYxLjE2Yix2NS4xNmIKCglleHQJdjE3LjE2Yix2MC4xNmIsdjIuMTZiLCM4CQkvL0thcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKCWVvcgl2MTguMTZiLHYwLjE2Yix2Mi4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxNy4xNmIKCWxkMQl7djE3LjJkfSxbeDJdLHgxMgkvL2xvYWQgW3JvdGF0ZWRdIElbaSszXQojaWZuZGVmIF9fQVJNRUJfXwoJcmV2NjQJdjE2LjE2Yix2MTYuMTZiCiNlbmRpZgoJZW9yCXYxLjE2Yix2MS4xNmIsdjE4LjE2YgoJcG11bGwJdjE4LjFxLHYwLjFkLHYxOS4xZAkJLy8xc3QgcGhhc2Ugb2YgcmVkdWN0aW9uCgojaWZuZGVmIF9fQVJNRUJfXwoJcmV2NjQJdjE3LjE2Yix2MTcuMTZiCiNlbmRpZgoJaW5zCXYyLmRbMF0sdjEuZFsxXQoJaW5zCXYxLmRbMV0sdjAuZFswXQoJZXh0CXY3LjE2Yix2MTcuMTZiLHYxNy4xNmIsIzgKCWV4dAl2My4xNmIsdjE2LjE2Yix2MTYuMTZiLCM4Cgllb3IJdjAuMTZiLHYxLjE2Yix2MTguMTZiCglwbXVsbAl2NC4xcSx2MjAuMWQsdjcuMWQJCS8vSLdJaSsxCgllb3IJdjMuMTZiLHYzLjE2Yix2Mi4xNmIJCS8vYWNjdW11bGF0ZSB2My4xNmIgZWFybHkKCglleHQJdjE4LjE2Yix2MC4xNmIsdjAuMTZiLCM4CQkvLzJuZCBwaGFzZSBvZiByZWR1Y3Rpb24KCXBtdWxsCXYwLjFxLHYwLjFkLHYxOS4xZAoJZW9yCXYzLjE2Yix2My4xNmIsdjE4LjE2YgoJZW9yCXYxNy4xNmIsdjE3LjE2Yix2Ny4xNmIJCS8vS2FyYXRzdWJhIHByZS1wcm9jZXNzaW5nCgllb3IJdjMuMTZiLHYzLjE2Yix2MC4xNmIKCXBtdWxsMgl2Ni4xcSx2MjAuMmQsdjcuMmQKCWIuaHMJLkxvb3BfbW9kMnhfdjgJCS8vdGhlcmUgd2FzIGF0IGxlYXN0IDMyIG1vcmUgYnl0ZXMKCgllb3IJdjIuMTZiLHYyLjE2Yix2MTguMTZiCglleHQJdjMuMTZiLHYxNi4xNmIsdjE2LjE2YiwjOAkJLy9yZS1jb25zdHJ1Y3QgdjMuMTZiCglhZGRzCXgzLHgzLCMzMgkJLy9yZS1jb25zdHJ1Y3QgeDMKCWVvcgl2MC4xNmIsdjAuMTZiLHYyLjE2YgkJLy9yZS1jb25zdHJ1Y3QgdjAuMTZiCgliLmVxCS5MZG9uZV92OAkJLy9pcyB4MyB6ZXJvPwouTG9kZF90YWlsX3Y4OgoJZXh0CXYxOC4xNmIsdjAuMTZiLHYwLjE2YiwjOAoJZW9yCXYzLjE2Yix2My4xNmIsdjAuMTZiCQkvL2lucF49WGkKCWVvcgl2MTcuMTZiLHYxNi4xNmIsdjE4LjE2YgkJLy92MTcuMTZiIGlzIHJvdGF0ZWQgaW5wXlhpCgoJcG11bGwJdjAuMXEsdjIwLjFkLHYzLjFkCQkvL0gubG+3WGkubG8KCWVvcgl2MTcuMTZiLHYxNy4xNmIsdjMuMTZiCQkvL0thcmF0c3ViYSBwcmUtcHJvY2Vzc2luZwoJcG11bGwyCXYyLjFxLHYyMC4yZCx2My4yZAkJLy9ILmhpt1hpLmhpCglwbXVsbAl2MS4xcSx2MjEuMWQsdjE3LjFkCQkvLyhILmxvK0guaGkptyhYaS5sbytYaS5oaSkKCglleHQJdjE3LjE2Yix2MC4xNmIsdjIuMTZiLCM4CQkvL0thcmF0c3ViYSBwb3N0LXByb2Nlc3NpbmcKCWVvcgl2MTguMTZiLHYwLjE2Yix2Mi4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxNy4xNmIKCWVvcgl2MS4xNmIsdjEuMTZiLHYxOC4xNmIKCXBtdWxsCXYxOC4xcSx2MC4xZCx2MTkuMWQJCS8vMXN0IHBoYXNlIG9mIHJlZHVjdGlvbgoKCWlucwl2Mi5kWzBdLHYxLmRbMV0KCWlucwl2MS5kWzFdLHYwLmRbMF0KCWVvcgl2MC4xNmIsdjEuMTZiLHYxOC4xNmIKCglleHQJdjE4LjE2Yix2MC4xNmIsdjAuMTZiLCM4CQkvLzJuZCBwaGFzZSBvZiByZWR1Y3Rpb24KCXBtdWxsCXYwLjFxLHYwLjFkLHYxOS4xZAoJZW9yCXYxOC4xNmIsdjE4LjE2Yix2Mi4xNmIKCWVvcgl2MC4xNmIsdjAuMTZiLHYxOC4xNmIKCi5MZG9uZV92ODoKI2lmbmRlZiBfX0FSTUVCX18KCXJldjY0CXYwLjE2Yix2MC4xNmIKI2VuZGlmCglleHQJdjAuMTZiLHYwLjE2Yix2MC4xNmIsIzgKCXN0MQl7djAuMmR9LFt4MF0JCS8vd3JpdGUgb3V0IFhpCgoJcmV0Ci5zaXplCWdjbV9naGFzaF92OCwuLWdjbV9naGFzaF92OAouYnl0ZQk3MSw3Miw2NSw4Myw3MiwzMiwxMDIsMTExLDExNCwzMiw2NSw4Miw3NywxMTgsNTYsNDQsMzIsNjcsODIsODksODAsODQsNzksNzEsNjUsNzcsODMsMzIsOTgsMTIxLDMyLDYwLDk3LDExMiwxMTIsMTE0LDExMSw2NCwxMTEsMTEyLDEwMSwxMTAsMTE1LDExNSwxMDgsNDYsMTExLDExNCwxMDMsNjIsMAouYWxpZ24JMgouYWxpZ24JMgo=