PD9waHAgCnJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsKcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAKcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCgokQXBwID0gbmV3IEFwcCgpOwokTmF2ID0gbmV3IE5hdigpOwokTWVudSA9IG5ldyBNZW51KCk7CgppbmNsdWRlKCRBcHAtPmdldFByb2plY3RDb21tb24oKSk7ICAgIAoKIwojIEJlZ2luOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzLiAgQ2hhbmdlIHRoZXNlLiAKJHBhZ2VUaXRsZSAJPSAiSGVuc2hpbiAtIEluc3RhbGxhdGlvbiI7CiRwYWdlS2V5d29yZHMJPSAiRU1GLCBIZW5zaGluLCBtb2RlbCB0cmFuc2Zvcm1hdGlvbiwgaW5zdGFsbGF0aW9uIjsKJHBhZ2VBdXRob3IJPSAiQ2hyaXN0aWFuIEtyYXVzZSwgRGFuaWVsIFN0cvxiZXIiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCiMgJE5hdi0+YWRkTmF2U2VwYXJhdG9yKCJNeSBQYWdlIExpbmtzIiwgCSJkb3dubG9hZHMucGhwIik7CiMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiLCAzKTsKIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDMpOwoKIyBFbmQ6IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MKIwoJCQojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKJGh0bWwgPSA8PDxFT0hUTUwKCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCjxkaXYgaWQ9Im1pZGNvbHVtbiI+CjxoMT4kcGFnZVRpdGxlPC9oMT4KCQkKCQkKPHA+CjxpPkhlbnNoaW4gY2FuIGJlIGluc3RhbGxlZCBkaXJlY3RseSBmcm9tIHRoZSA8YSBocmVmPSJodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvaGVuc2hpbi1pbmN1YmF0aW9uIj5FY2xpcHNlIE1hcmtldHBsYWNlPC9hPi48L2k+CjwvcD4KCjxwPgpQbGVhc2UgdXNlIG9uZSBvZiBvdXIgdXBkYXRlIHNpdGVzIGJlbG93IGFuZCBpbnN0YWxsIEhlbnNoaW4gdXNpbmcgdGhlIHVwZGF0ZSBtYW5hZ2VyIGluIEVjbGlwc2UuCkFsdGVybmF0aXZlbHksIHRoZXJlIGFyZSBhbHNvIGRvd25sb2FkcyBhdmFpbGFibGUuIFdlIHJlY29tbWVuZAp0byB1c2UgdGhlIHVwZGF0ZSBzaXRlcyB0aG91Z2guIFlvdSBjYW4gZmluZCB0aGUgVVJMcyBvZiBvdXIgdXBkYXRlIHNpdGVzIGJlbG93Lgo8L3A+Cgo8cD4KPGk+UmVxdWlyZW1lbnRzOjwvaT4gClRoZSBjdXJyZW50IHN0YWJsZSB2ZXJzaW9uIHJlcXVpcmVzIEVjbGlwc2UgS2VwbGVyIG9yIEx1bmEuCjwvcD4KCjxoMj5VcGRhdGUgU2l0ZXM8L2gyPgo8cD4KU2ltcGx5IGdvIHRvIDxpPkhlbHAgLT4gSW5zdGFsbCBOZXcgU29mdHdhcmUuLi48L2k+IGFuZCBlbnRlciBvbmUgb2YgdGhlIGZvbGxvd2luZyBVUkxzOgo8dWw+CjxsaT5DdXJyZW50IHJlbGVhc2U6IDxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy9yZWxlYXNlIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvcmVsZWFzZTwvYT4gKDEuNC4wKTwvbGk+CjxsaT5OaWdodGx5IGJ1aWxkczogPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzL25pZ2h0bHkiPmh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy9uaWdodGx5PC9hPjwvbGk+CjxsaT5QZXJtYW5lbnQgVVJMcyBvZiBjdXJyZW50IGFuZCBwcmV2aW91cyByZWxlYXNlczoKPHVsPgo8bGk+PGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuNC4wIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS40LjA8L2E+PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8xLjIuMCI+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzEuMi4wPC9hPjwvbGk+CjxsaT48YSBocmVmPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMS4wLjAiPmh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9tb2RlbGluZy9lbWZ0L2hlbnNoaW4vdXBkYXRlcy8xLjAuMDwvYT48L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL21vZGVsaW5nL2VtZnQvaGVuc2hpbi91cGRhdGVzLzAuOS4yIj5odHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvbW9kZWxpbmcvZW1mdC9oZW5zaGluL3VwZGF0ZXMvMC45LjI8L2E+PC9saT4KPC91bD4KCjwvdWw+CjwvcD4KCgo8aDI+U291cmNlczwvaDI+CjxwPgpZb3UgY2FuIGFsc28gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgZGlyZWN0bHkgZnJvbSBvdXIgR2l0IHJlcG9zaXRvcnkgKHdlYmxpbmspOgo8dWw+CjxsaT48YSBocmVmPSJodHRwOi8vZ2l0LmVjbGlwc2Uub3JnL2MvaGVuc2hpbi9vcmcuZWNsaXBzZS5lbWZ0LmhlbnNoaW4uZ2l0LyI+aHR0cDovL2dpdC5lY2xpcHNlLm9yZy9jL2hlbnNoaW4vb3JnLmVjbGlwc2UuZW1mdC5oZW5zaGluLmdpdC88L2E+PC9saT4KPC91bD4KPC9wPgoKCjxoMj5CdWlsZCBKb2JzPC9oMj4KPHA+ClJlbGVhc2UgYW5kIG5pZ2hseSBidWlsZHMgYXJlIGNvbXBpbGVkIHVzaW5nIEh1ZHNvbiBqb2JzOgo8dWw+CjxsaT5SZWxlYXNlczogPGEgaHJlZj0iaHR0cHM6Ly9odWRzb24uZWNsaXBzZS5vcmcvaHVkc29uL2pvYi9jYmlfaGVuc2hpbl9yZWxlYXNlLyI+aHR0cHM6Ly9odWRzb24uZWNsaXBzZS5vcmcvaHVkc29uL2pvYi9jYmlfaGVuc2hpbl9yZWxlYXNlPC9hPjwvbGk+CjxsaT5OaWdodGx5IEJ1aWxkczogPGEgaHJlZj0iaHR0cHM6Ly9odWRzb24uZWNsaXBzZS5vcmcvaHVkc29uL2pvYi9jYmlfaGVuc2hpbl9uaWdodGx5LyI+aHR0cHM6Ly9odWRzb24uZWNsaXBzZS5vcmcvaHVkc29uL2pvYi9jYmlfaGVuc2hpbl9uaWdodGx5PC9hPjwvbGk+CjwvdWw+CjwvcD4KCgo8IS0tCgo8ZGl2IGNsYXNzPSJob21laXRlbSI+CjxoMz5OYXJyb3cgY29sdW1uPC9oMz4KPHVsPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8L3VsPgo8L2Rpdj4KCQkKPGRpdiBjbGFzcz0iaG9tZWl0ZW0iPgo8aDM+TmFycm93IGNvbHVtbjwvaDM+Cjx1bD4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9ImhvbWVpdGVtM2NvbCI+CjxoMz5UaGlzIGlzIGEgd2lkZSBjb2x1bW48L2gzPgo8dWw+CjxsaT48YSBocmVmPSIjIj5MaW5rPC9hPi4gVGVhc2VyIHRleHQgPGEgaHJlZj0iIyI+J1JlZmVyZW5jZSc8L2E+PHNwYW4gY2xhc3M9ImRhdGVzIj4wMi8wNS8wNTwvc3Bhbj48L2xpPgo8bGk+PGEgaHJlZj0iIyI+TGluazwvYT4uIFRlYXNlciB0ZXh0IDxhIGhyZWY9IiMiPidSZWZlcmVuY2UnPC9hPjxzcGFuIGNsYXNzPSJkYXRlcyI+MDIvMDUvMDU8L3NwYW4+PC9saT4KPGxpPjxhIGhyZWY9IiMiPkxpbms8L2E+LiBUZWFzZXIgdGV4dCA8YSBocmVmPSIjIj4nUmVmZXJlbmNlJzwvYT48c3BhbiBjbGFzcz0iZGF0ZXMiPjAyLzA1LzA1PC9zcGFuPjwvbGk+CjwvdWw+CjwvZGl2Pgo8aHIgY2xhc3M9ImNsZWFyZXIiIC8+CjxwPlNvbWUgZnJlZSB0ZXh0PC9wPgo8dWwgY2xhc3M9Im1pZGxpc3QiPgo8bGk+bGlzdCBvZiBpdGVtcyBpbiBmcmVlIHRleHQ8L2xpPgo8bGk+bGlzdCBvZiBpdGVtcyBpbiBmcmVlIHRleHQ8L2xpPgo8bGk+bGlzdCBvZiBpdGVtcyBpbiBmcmVlIHRleHQ8L2xpPgo8L3VsPgo8b2w+CjxsaT5PcmRlcmVkIGxpc3Q8L2xpPgo8bGk+T3JkZXJlZCBsaXN0PC9saT4KPGxpPk9yZGVyZWQgbGlzdDwvbGk+Cjwvb2w+CgkKLS0+CgkJCjwvZGl2Pgo8L2Rpdj4KCkVPSFRNTDsKCiMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCiRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwoKPz4K