PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX3o8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT188aT56PC9pPjwvYj4gbWFjcm8gcmVwcmVzZW50cyBhIHJlZW50cnkgaW50byB0aGUgPGI+Qk9PU1RfUFBfUkVQRUFUX0ZST01fVE88L2I+IHJlcGV0aXRpb24gY29uc3RydWN0LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT188L2I+ICMjIDxpPno8L2k+KDxpPmZpcnN0PC9pPiwgPGk+bGFzdDwvaT4sIDxpPm1hY3JvPC9pPiwgPGk+ZGF0YTwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD56PC9kdD4KCQkJPGRkPgoJCQkJVGhlIG5leHQgYXZhaWxhYmxlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gZGltZW5zaW9uLgoJCQk8L2RkPgoJCQk8ZHQ+Zmlyc3Q8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbG93ZXIgYm91bmQgb2YgdGhlIHJlcGV0aXRpb24uJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9NQUc8L2I+LgoJCQk8L2RkPgoJCQk8ZHQ+bGFzdDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSB1cHBlciBib3VuZCBvZiB0aGUgcmVwZXRpdGlvbi4KCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX01BRzwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5tYWNybzwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBvcGVyYXRpb24gb2YgdGhlIGZvcm0gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5uPC9pPiwgPGk+ZGF0YTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+IHdpdGggdGhlIG5leHQgYXZhaWxhYmxlIHJlcGV0aXRpb24gZGVwdGgsCgkJCQl0aGUgY3VycmVudCByZXBldGl0aW9uIG51bWJlciwgYW5kIHRoZSBhdXhpbGlhcnkgPGk+ZGF0YTwvaT4gYXJndW1lbnQuJm5ic3A7CgkJCTwvZGQ+CgkJCTxkdD5kYXRhPC9kdD4KCQkJPGRkPgoJCQkJQXV4aWxpYXJ5IGRhdGEgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPi4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCVRoaXMgbWFjcm8gZXhwYW5kcyB0byB0aGUgc2VxdWVuY2U6CgkJCTxkaXY+CgkJCQk8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPmZpcnN0PC9pPiwgPGk+ZGF0YTwvaT4pIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+Zmlyc3Q8L2k+ICsgPGk+MTwvaT4sIDxpPmRhdGE8L2k+KSAuLi4gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5sYXN0PC9pPiAtIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhlIG51bWJlciBvZiByZXBldGl0aW9ucyAoaS5lLiA8aT5sYXN0PC9pPiAtIDxpPmZpcnN0PC9pPikgbXVzdCBub3QgZXhjZWVkIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJPC9kaXY+CgkJPGRpdj4KCQkJQXQgY2VydGFpbiB0aW1lcywgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwZXJmb3JtIHRoZSBjb25jYXRlbmF0aW9uIHdpdGggPGI+Qk9PU1RfUFBfQ0FUPC9iPiByYXRoZXIgdGhhbiB0aGUgcHJlcHJvY2Vzc29yIHRva2VuLXBhc3Rpbmcgb3BlcmF0b3IuJm5ic3A7CgkJCVRoaXMgaGFwcGVucyB3aGVuIHRoZSA8aT56PC9pPiB2YWx1ZSBpcyBhIG1hY3JvIGludm9jYXRpb24gaXRzZWxmLiZuYnNwOwoJCQlJdCBuZWVkcyBhIGRlbGF5IHRvIGFsbG93IGl0IHRvIGV4cGFuZC4mbmJzcDsKCQkJVGhlIHN5bnRheCBpbiBzdWNoIGEgc2NlbmFyaW8gYmVjb21lczoKCQkJPGRpdj4KCQkJCTxiPkJPT1NUX1BQX0NBVDwvYj4oPGI+Qk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fPC9iPiwgPGk+ejwvaT4pKDxpPmNvdW50PC9pPiwgPGk+bWFjcm88L2k+LCA8aT5kYXRhPC9pPikuCgkJCTwvZGl2PgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJjYXQuaHRtbCI+Qk9PU1RfUFBfQ0FUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJyZXBlYXQuaHRtbCI+Qk9PU1RfUFBfUkVQRUFUPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA8L2E+Jmd0OwoKI2RlZmluZSBURVhUKHosIG4sIGRhdGEpIG4gZGF0YQoKI2RlZmluZSBNQUNSTyh6LCBuLCBkYXRhKSBcCiAgKCBcCiAgICAgPGEgaHJlZj0icmVwZWF0X2Zyb21fdG9fei5odG1sIj5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT188L2E+ICMjIHooIFwKICAgICAgICAxLCA0LCBcCiAgICAgICAgVEVYVCwgeHl6IFwKICAgICApIFwKICApIFwKICAvKiovCgo8YSBocmVmPSJyZXBlYXQuaHRtbCI+Qk9PU1RfUFBfUkVQRUFUPC9hPigzLCBNQUNSTywgXykKICAgLyoKICAgICAgZXhwYW5kcyB0bzoKICAgICAgKDEgeHl6IDIgeHl6IDMgeHl6KQogICAgICAoMSB4eXogMiB4eXogMyB4eXopCiAgICAgICgxIHh5eiAyIHh5eiAzIHh5eikKICAgKi8KPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=