PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xPQ0FMX01BQ1JPPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTE9DQUxfTUFDUk88L2I+IG1hY3JvIGlzIGEgdXNlci1kZWZpbmVkIDxpPm5hbWVkIGV4dGVybmFsIGFyZ3VtZW50PC9pPiB1c2VkIGJ5IDxiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2I+LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQkjZGVmaW5lIDxiPkJPT1NUX1BQX0xPQ0FMX01BQ1JPPC9iPig8aT5uPC9pPikgLi4uCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD5uPC9kdD4KCQkJPGRkPgoJCQkJVGhlIGN1cnJlbnQgaXRlcmF0aW9uIHZhbHVlIHJlY2VpdmVkIGZyb20gdGhlIDxpPmxvY2FsLWl0ZXJhdGlvbjwvaT4gbWVjaGFuaXNtLgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpcyBhdXRvbWF0aWNhbGx5IHVuZGVmaW5lZCBmb3IgcmV1c2UgYnkgYSBjYWxsIHRvIDxiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2I+LgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsb2NhbF9pdGVyYXRlLmh0bWwiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9pdGVyYXRpb24vbG9jYWwuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA8L2E+Jmd0OwoKdGVtcGxhdGUmbHQ7aW50Jmd0OyBzdHJ1Y3Qgc2FtcGxlOwoKI2RlZmluZSA8YSBocmVmPSJsb2NhbF9tYWNyby5odG1sIj5CT09TVF9QUF9MT0NBTF9NQUNSTzwvYT4obikgXAogICB0ZW1wbGF0ZSZsdDsmZ3Q7IHN0cnVjdCBzYW1wbGUmbHQ7biZndDsgeyBcCiAgICAgIGVudW0geyB2YWx1ZSA9IG4gfTsgXAogICB9OyBcCiAgIC8qKi8KCiNkZWZpbmUgPGEgaHJlZj0ibG9jYWxfbGltaXRzLmh0bWwiPkJPT1NUX1BQX0xPQ0FMX0xJTUlUUzwvYT4gKDEsIDUpCgojaW5jbHVkZSA8YSBocmVmPSJsb2NhbF9pdGVyYXRlLmh0bWwiPkJPT1NUX1BQX0xPQ0FMX0lURVJBVEU8L2E+KCkKLyogZXhwYW5kcyB0by4uLgp0ZW1wbGF0ZSZsdDsmZ3Q7IHN0cnVjdCBzYW1wbGUmbHQ7MSZndDsgeyBlbnVtIHsgdmFsdWUgPSAxIH07IH07CnRlbXBsYXRlJmx0OyZndDsgc3RydWN0IHNhbXBsZSZsdDsyJmd0OyB7IGVudW0geyB2YWx1ZSA9IDIgfTsgfTsKdGVtcGxhdGUmbHQ7Jmd0OyBzdHJ1Y3Qgc2FtcGxlJmx0OzMmZ3Q7IHsgZW51bSB7IHZhbHVlID0gMyB9OyB9Owp0ZW1wbGF0ZSZsdDsmZ3Q7IHN0cnVjdCBzYW1wbGUmbHQ7NCZndDsgeyBlbnVtIHsgdmFsdWUgPSA0IH07IH07CnRlbXBsYXRlJmx0OyZndDsgc3RydWN0IHNhbXBsZSZsdDs1Jmd0OyB7IGVudW0geyB2YWx1ZSA9IDUgfTsgfTsKKi8KPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=