PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiCnhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIKeG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKeG1sbnM6c3QxPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpzbWFydHRhZ3MiCnhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KCjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50Pgo8bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxMCI+CjxtZXRhIG5hbWU9T3JpZ2luYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxMCI+CjxsaW5rIHJlbD0iU1RZTEVTSEVFVCIgaHJlZj0iLi4vYm9vay5jc3MiIGNoYXJzZXQ9IklTTy04ODU5LTEiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgcmVsPUZpbGUtTGlzdCBocmVmPSJhamR0LWRvY19maWxlcy9maWxlbGlzdC54bWwiPgo8bGluayByZWw9RWRpdC1UaW1lLURhdGEgaHJlZj0iYWpkdC1kb2NfZmlsZXMvZWRpdGRhdGEubXNvIj4KPCEtLVtpZiAhbXNvXT4KPHN0eWxlPgp2XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9Cm9cOioge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fQouc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KPC9zdHlsZT4KPCFbZW5kaWZdLS0+Cjx0aXRsZT5Ib3cgdG8gcnVuIGFuZCB3cml0ZSBBSkRUIFRlc3RzPC90aXRsZT4KPG86U21hcnRUYWdUeXBlIG5hbWVzcGFjZXVyaT0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6c21hcnR0YWdzIgogbmFtZT0iQ2l0eSIvPgo8bzpTbWFydFRhZ1R5cGUgbmFtZXNwYWNldXJpPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpzbWFydHRhZ3MiCiBuYW1lPSJwbGFjZSIvPgo8IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KIDxvOkRvY3VtZW50UHJvcGVydGllcz4KICA8bzpBdXRob3I+QWRyaWFuIENvbHllcjwvbzpBdXRob3I+CiAgPG86VGVtcGxhdGU+Tm9ybWFsPC9vOlRlbXBsYXRlPgogIDxvOkxhc3RBdXRob3I+QWRyaWFuIENvbHllcjwvbzpMYXN0QXV0aG9yPgogIDxvOlJldmlzaW9uPjE5PC9vOlJldmlzaW9uPgogIDxvOlRvdGFsVGltZT4xMzA8L286VG90YWxUaW1lPgogIDxvOkNyZWF0ZWQ+MjAwMy0wOC0yMFQxOToyMzowMFo8L286Q3JlYXRlZD4KICA8bzpMYXN0U2F2ZWQ+MjAwNC0wNi0xMVQxMDoxNTowMFo8L286TGFzdFNhdmVkPgogIDxvOlBhZ2VzPjE8L286UGFnZXM+CiAgPG86V29yZHM+Mjk0PC9vOldvcmRzPgogIDxvOkNoYXJhY3RlcnM+MTY3NjwvbzpDaGFyYWN0ZXJzPgogIDxvOkNvbXBhbnk+SUJNPC9vOkNvbXBhbnk+CiAgPG86TGluZXM+MTM8L286TGluZXM+CiAgPG86UGFyYWdyYXBocz4zPC9vOlBhcmFncmFwaHM+CiAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTk2NzwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KICA8bzpWZXJzaW9uPjEwLjQyMTk8L286VmVyc2lvbj4KIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+CjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgogPHc6V29yZERvY3VtZW50PgogIDx3OlNwZWxsaW5nU3RhdGU+Q2xlYW48L3c6U3BlbGxpbmdTdGF0ZT4KICA8dzpHcmFtbWFyU3RhdGU+Q2xlYW48L3c6R3JhbW1hclN0YXRlPgogIDx3OkNvbXBhdGliaWxpdHk+CiAgIDx3OkJyZWFrV3JhcHBlZFRhYmxlcy8+CiAgIDx3OlNuYXBUb0dyaWRJbkNlbGwvPgogICA8dzpXcmFwVGV4dFdpdGhQdW5jdC8+CiAgIDx3OlVzZUFzaWFuQnJlYWtSdWxlcy8+CiAgPC93OkNvbXBhdGliaWxpdHk+CiAgPHc6QnJvd3NlckxldmVsPk1pY3Jvc29mdEludGVybmV0RXhwbG9yZXI0PC93OkJyb3dzZXJMZXZlbD4KIDwvdzpXb3JkRG9jdW1lbnQ+CjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgIW1zb10+PG9iamVjdAogY2xhc3NpZD0iY2xzaWQ6Mzg0ODE4MDctQ0EwRS00MkQyLUJGMzktQjMzQUYxMzVDQzREIiBpZD1pZW9vdWk+PC9vYmplY3Q+CjxzdHlsZT4Kc3QxXDoqe2JlaGF2aW9yOnVybCgjaWVvb3VpKSB9Cjwvc3R5bGU+CjwhW2VuZGlmXS0tPgo8c3R5bGU+CjwhLS0KIC8qIFN0eWxlIERlZmluaXRpb25zICovCiBwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCgl7bXNvLXN0eWxlLXBhcmVudDoiIjsKCW1hcmdpbjowY207CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Cglmb250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Cgltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CmgxCgl7bXNvLXN0eWxlLW5leHQ6Tm9ybWFsOwoJbWFyZ2luLXRvcDoxMi4wcHQ7CgltYXJnaW4tcmlnaHQ6MGNtOwoJbWFyZ2luLWJvdHRvbTozLjBwdDsKCW1hcmdpbi1sZWZ0OjBjbTsKCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKCXBhZ2UtYnJlYWstYWZ0ZXI6YXZvaWQ7Cgltc28tb3V0bGluZS1sZXZlbDoxOwoJZm9udC1zaXplOjE2LjBwdDsKCWZvbnQtZmFtaWx5OkFyaWFsOwoJbXNvLWZvbnQta2VybmluZzoxNi4wcHQ7fQpoMwoJe21zby1zdHlsZS1uZXh0Ok5vcm1hbDsKCW1hcmdpbi10b3A6MTIuMHB0OwoJbWFyZ2luLXJpZ2h0OjBjbTsKCW1hcmdpbi1ib3R0b206My4wcHQ7CgltYXJnaW4tbGVmdDowY207Cgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CglwYWdlLWJyZWFrLWFmdGVyOmF2b2lkOwoJbXNvLW91dGxpbmUtbGV2ZWw6MzsKCWZvbnQtc2l6ZToxMy4wcHQ7Cglmb250LWZhbWlseTpBcmlhbDt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXtjb2xvcjpibHVlOwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsKCXRleHQtdW5kZXJsaW5lOnNpbmdsZTt9CmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe2NvbG9yOnB1cnBsZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Cgl0ZXh0LXVuZGVybGluZTpzaW5nbGU7fQpzcGFuLlNwZWxsRQoJe21zby1zdHlsZS1uYW1lOiIiOwoJbXNvLXNwbC1lOnllczt9CkBwYWdlIFNlY3Rpb24xCgl7c2l6ZTo2MTIuMHB0IDc5Mi4wcHQ7CgltYXJnaW46NzIuMHB0IDkwLjBwdCA3Mi4wcHQgOTAuMHB0OwoJbXNvLWhlYWRlci1tYXJnaW46MzUuNHB0OwoJbXNvLWZvb3Rlci1tYXJnaW46MzUuNHB0OwoJbXNvLXBhcGVyLXNvdXJjZTowO30KZGl2LlNlY3Rpb24xCgl7cGFnZTpTZWN0aW9uMTt9CiAvKiBMaXN0IERlZmluaXRpb25zICovCiBAbGlzdCBsMAoJe21zby1saXN0LWlkOjI5NTk4Njc3NTsKCW1zby1saXN0LXRlbXBsYXRlLWlkczotMjgyMTgzODcyO30KQGxpc3QgbDA6bGV2ZWwxCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6XEYwQjc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6MzYuMHB0OwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsKCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7Cglmb250LWZhbWlseTpTeW1ib2w7fQpAbGlzdCBsMQoJe21zby1saXN0LWlkOjM4ODExMTkzMTsKCW1zby1saXN0LXRlbXBsYXRlLWlkczoxMDAxNTM0MjI7fQpAbGlzdCBsMTpsZXZlbDEKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBCNzsKCW1zby1sZXZlbC10YWItc3RvcDozNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0OwoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGwyCgl7bXNvLWxpc3QtaWQ6NTA3NzE3MjkwOwoJbXNvLWxpc3QtdHlwZTpoeWJyaWQ7Cgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6MTcwMDY1MzIwIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzO30KQGxpc3QgbDI6bGV2ZWwxCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6XEYwQjc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6MzYuMHB0OwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGwyOmxldmVsMgoJe21zby1sZXZlbC10YWItc3RvcDo3Mi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWwzCgl7bXNvLWxldmVsLXRhYi1zdG9wOjEwOC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWw0Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjE0NC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWw1Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjE4MC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWw2Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjIxNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWw3Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjI1Mi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWw4Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjI4OC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDI6bGV2ZWw5Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjMyNC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDMKCXttc28tbGlzdC1pZDo1NDcxODc3MjQ7Cgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTEwMzU1NjQ3Njg7fQpAbGlzdCBsMzpsZXZlbDEKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBCNzsKCW1zby1sZXZlbC10YWItc3RvcDozNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0OwoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGw0Cgl7bXNvLWxpc3QtaWQ6NzgyNzcxMTQwOwoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0xNjkwMjc0NDgyO30KQGxpc3QgbDQ6bGV2ZWwxCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6XEYwQjc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6MzYuMHB0OwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsKCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7Cglmb250LWZhbWlseTpTeW1ib2w7fQpAbGlzdCBsNQoJe21zby1saXN0LWlkOjk1NjU2NjE5NjsKCW1zby1saXN0LXRlbXBsYXRlLWlkczotMTg5OTcxNzE5NDt9CkBsaXN0IGw1OmxldmVsMQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0OlxGMEI3OwoJbXNvLWxldmVsLXRhYi1zdG9wOjM2LjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7Cgltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwoJZm9udC1mYW1pbHk6U3ltYm9sO30KQGxpc3QgbDYKCXttc28tbGlzdC1pZDo5OTcyNjQ3NTA7Cgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTIwOTAxODczNjt9CkBsaXN0IGw2OmxldmVsMQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0OlxGMEI3OwoJbXNvLWxldmVsLXRhYi1zdG9wOjM2LjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7Cgltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwoJZm9udC1mYW1pbHk6U3ltYm9sO30KQGxpc3QgbDcKCXttc28tbGlzdC1pZDoxMDc5MjA2NDUzOwoJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0xOTE3MzkwOTM0O30KQGxpc3QgbDc6bGV2ZWwxCgl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwoJbXNvLWxldmVsLXRleHQ6XEYwQjc7Cgltc28tbGV2ZWwtdGFiLXN0b3A6MzYuMHB0OwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LTE4LjBwdDsKCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7Cglmb250LWZhbWlseTpTeW1ib2w7fQpAbGlzdCBsOAoJe21zby1saXN0LWlkOjEyMDU2MDUwNTU7Cgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTEzNTEwODIzMjQ7fQpAbGlzdCBsODpsZXZlbDEKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBCNzsKCW1zby1sZXZlbC10YWItc3RvcDozNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0OwoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGw5Cgl7bXNvLWxpc3QtaWQ6MTQwMzYwMjIwODsKCW1zby1saXN0LXRlbXBsYXRlLWlkczo4NTIwMDI0NDg7fQpAbGlzdCBsOTpsZXZlbDEKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBCNzsKCW1zby1sZXZlbC10YWItc3RvcDozNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0OwoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGwxMAoJe21zby1saXN0LWlkOjE3NDQ5MDcwNjk7Cgltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTM1MzE3NDQ0Mjt9CkBsaXN0IGwxMDpsZXZlbDEKCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Cgltc28tbGV2ZWwtdGV4dDpcRjBCNzsKCW1zby1sZXZlbC10YWItc3RvcDozNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0OwoJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OlN5bWJvbDt9CkBsaXN0IGwxMQoJe21zby1saXN0LWlkOjE5MDExNjM0MDg7Cgltc28tbGlzdC10eXBlOmh5YnJpZDsKCW1zby1saXN0LXRlbXBsYXRlLWlkczoxMjA0NDU3MDY4IDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzIDY3Njk4Njg5IDY3Njk4NjkxIDY3Njk4NjkzO30KQGxpc3QgbDExOmxldmVsMQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0OlxGMEI3OwoJbXNvLWxldmVsLXRhYi1zdG9wOjM2LjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7Cglmb250LWZhbWlseTpTeW1ib2w7fQpAbGlzdCBsMTE6bGV2ZWwyCgl7bXNvLWxldmVsLXRhYi1zdG9wOjcyLjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7fQpAbGlzdCBsMTE6bGV2ZWwzCgl7bXNvLWxldmVsLXRhYi1zdG9wOjEwOC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDExOmxldmVsNAoJe21zby1sZXZlbC10YWItc3RvcDoxNDQuMHB0OwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LTE4LjBwdDt9CkBsaXN0IGwxMTpsZXZlbDUKCXttc28tbGV2ZWwtdGFiLXN0b3A6MTgwLjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7fQpAbGlzdCBsMTE6bGV2ZWw2Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjIxNi4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDExOmxldmVsNwoJe21zby1sZXZlbC10YWItc3RvcDoyNTIuMHB0OwoJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwoJdGV4dC1pbmRlbnQ6LTE4LjBwdDt9CkBsaXN0IGwxMTpsZXZlbDgKCXttc28tbGV2ZWwtdGFiLXN0b3A6Mjg4LjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7fQpAbGlzdCBsMTE6bGV2ZWw5Cgl7bXNvLWxldmVsLXRhYi1zdG9wOjMyNC4wcHQ7Cgltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Cgl0ZXh0LWluZGVudDotMTguMHB0O30KQGxpc3QgbDEyCgl7bXNvLWxpc3QtaWQ6MTkzMjI3OTQ4OTsKCW1zby1saXN0LXRlbXBsYXRlLWlkczoxNDYwOTkyMzk2O30KQGxpc3QgbDEyOmxldmVsMQoJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKCW1zby1sZXZlbC10ZXh0OlxGMEI3OwoJbXNvLWxldmVsLXRhYi1zdG9wOjM2LjBwdDsKCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKCXRleHQtaW5kZW50Oi0xOC4wcHQ7Cgltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwoJZm9udC1mYW1pbHk6U3ltYm9sO30Kb2wKCXttYXJnaW4tYm90dG9tOjBjbTt9CnVsCgl7bWFyZ2luLWJvdHRvbTowY207fQotLT4KPC9zdHlsZT4KPCEtLVtpZiBndGUgbXNvIDEwXT4KPHN0eWxlPgogLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KIHRhYmxlLk1zb05vcm1hbFRhYmxlCgl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7Cgltc28tdHN0eWxlLXJvd2JhbmQtc2l6ZTowOwoJbXNvLXRzdHlsZS1jb2xiYW5kLXNpemU6MDsKCW1zby1zdHlsZS1ub3Nob3c6eWVzOwoJbXNvLXN0eWxlLXBhcmVudDoiIjsKCW1zby1wYWRkaW5nLWFsdDowY20gNS40cHQgMGNtIDUuNHB0OwoJbXNvLXBhcmEtbWFyZ2luOjBjbTsKCW1zby1wYXJhLW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKCWZvbnQtc2l6ZToxMC4wcHQ7Cglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Cjwvc3R5bGU+CjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgogPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMzA3NCIvPgo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KIDxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4KICA8bzppZG1hcCB2OmV4dD0iZWRpdCIgZGF0YT0iMSIvPgogPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPgo8L2hlYWQ+Cgo8Ym9keSBsYW5nPUVOLVVTIGxpbms9Ymx1ZSB2bGluaz1wdXJwbGUgc3R5bGU9J3RhYi1pbnRlcnZhbDozNi4wcHQnPgoKPGRpdiBjbGFzcz1TZWN0aW9uMT4KCjxwIGNsYXNzPU1zb05vcm1hbCBhbGlnbj1yaWdodCBzdHlsZT0ndGV4dC1hbGlnbjpyaWdodCc+PGkgc3R5bGU9J21zby1iaWRpLWZvbnQtc3R5bGU6Cm5vcm1hbCc+PHNwYW4gbGFuZz1FTi1HQiBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tR0InPkNvcHlyaWdodCCpIDIwMDQgRWNsaXBzZS5vcmcuCkFsbCBSaWdodHMgUmVzZXJ2ZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L2k+PC9wPgoKPGgxPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOkVOLUdCJz5Ib3cgdG8gcnVuIGFuZCB3cml0ZSBBSkRUIFRlc3RzPG86cD48L286cD48L3NwYW4+PC9oMT4KCjxwIGNsYXNzPU1zb05vcm1hbD48c3QxOkNpdHk+PHN0MTpwbGFjZT48aSBzdHlsZT0nbXNvLWJpZGktZm9udC1zdHlsZTpub3JtYWwnPjxzcGFuCiAgbGFuZz1FTi1HQiBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tR0InPmxhc3QgdXBkYXRlZDwvc3Bhbj48L2k+PC9zdDE6cGxhY2U+PC9zdDE6Q2l0eT48aQpzdHlsZT0nbXNvLWJpZGktZm9udC1zdHlsZTpub3JtYWwnPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOgpFTi1HQic+LCBPY3RvYmVyIDIwMDQuPG86cD48L286cD48L3NwYW4+PC9pPjwvcD4KCjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTpFTi1HQic+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgoKPHAgY2xhc3M9TXNvTm9ybWFsPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOkVOLUdCJz5UaGUgdGVzdHMgZm9yIEFKRFQgYXJlIAppbiB0aGUgb3JnLmVjbGlwc2UuYWpkdC50ZXN0IHBsdWdpbiB3aGljaCBjYW4gYmUgY2hlY2tlZCBvdXQgb2YgdGhlIEVjbGlwc2UgQ1ZTIHJlcG9zaXRvcnk6PC9wPgo8dWw+CjxsaT5Ib3N0IGRldi5lY2xpcHNlLm9yZzwvbGk+CjxsaT5yZXBvc2l0b3J5OiAvaG9tZS90ZWNobm9sb2d5PC9saT4gCjxsaT51c2VyaWQ6IGFub255bW91czwvbGk+CjwvdWw+CjxwPk9uY2UgY29ubmVjdGVkLCBuYXZpZ2F0ZSB0byBIRUFEICZndCBvcmcuZWNsaXBzZS5hamR0IGFuZCBjaGVja291dCB0aGUgcGx1Z2lucwppbiB0aGUgQUpEVDEuMnNyYyBkaXJlY3RvcnkuPC9wPgoKPHA+VGhpcyBkb2N1bWVudCBkZXNjcmliZXMgCmhvdyB0byBydW4gYW5kIHdyaXRlIGJvdGggYXV0b21hdGVkCmFuZCBtYW51YWwgQUpEVCBUZXN0cy4gTm90ZSB0aGF0IGF0IHRoZSBtb21lbnQgdGhlcmUgaXMgb25seSBvbmUgdGVzdCBwbHVnaW4gd2hpY2ggY29udGFpbnMgdGVzdHMKZm9yIGJvdGggdGhlIHVpIGFuZCBjb3JlIHdoaWNoIGFyZSBub3cgc2VwYXJhdGVkIGludG8gdGhlIG9yZy5lY2xpcHNlLmFqZHQudWkgYW5kIG9yZy5lY2xpcHNlLmFqZHQuY29yZQpwbHVnaW5zIHJlc3BlY3RpdmVseS4gT3VyIHBsYW4gaXMgdG8gbW92ZSB0byBoYXZpbmcgc2VwYXJhdGUgdGVzdCBwbHVnaW5zLCBvbmUgZm9yIHRoZSB1aSBhbmQKb25lIGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LjwvcD4KCjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTpFTi1HQic+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgoKPHVsIHN0eWxlPSdtYXJnaW4tdG9wOjBjbScgdHlwZT1kaXNjPgogIDxsaSBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1saXN0OmwxIGxldmVsMSBsZm8zO3RhYi1zdG9wczpsaXN0IDM2LjBwdCc+PHNwYW4KICAgICBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTpFTi1HQic+PGEgaHJlZj0iI19SdW5uaW5nIj5SdW5uaW5nIHRoZSBBSkRUIFRlc3RzPC9hPjxvOnA+PC9vOnA+PC9zcGFuPgoJPHVsIHN0eWxlPSdtYXJnaW4tdG9wOjBjbScgdHlwZT1kaXNjPgogIAk8bGkgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbGlzdDpsMSBsZXZlbDEgbGZvMzt0YWItc3RvcHM6bGlzdCAzNi4wcHQnPjxzcGFuCiAgICAgCWxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOkVOLUdCJz48YSBocmVmPSIjX1J1bm5pbmdfQXV0b21hdGVkIj5SdW5uaW5nIHRoZSBBSkRUIEF1dG9tYXRlZCBUZXN0czwvYT48bzpwPjwvbzpwPjwvc3Bhbj4KCTwvbGk+CiAgCTxsaSBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1saXN0OmwxIGxldmVsMSBsZm8zO3RhYi1zdG9wczpsaXN0IDM2LjBwdCc+PHNwYW4KICAgICAJbGFuZz1FTi1HQiBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tR0InPjxhIGhyZWY9IiNfUnVubmluZ19NYW51YWwiPlJ1bm5pbmcgdGhlIEFKRFQgTWFudWFsIFRlc3RzPC9hPjxvOnA+PC9vOnA+PC9zcGFuPgoJPC9saT4KCTwvdWw+CQogIDwvbGk+CiAgPGxpIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbXNvLWxpc3Q6bDEgbGV2ZWwxIGxmbzM7dGFiLXN0b3BzOmxpc3QgMzYuMHB0Jz48c3BhbgogICAgIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOkVOLUdCJz48YQogICAgIGhyZWY9IiNfV3JpdGluZyI+V3JpdGluZyBBSkRUIFRlc3RzPC9hPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+Cgk8dWwgc3R5bGU9J21hcmdpbi10b3A6MGNtJyB0eXBlPWRpc2M+CiAgCTxsaSBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21zby1saXN0OmwxIGxldmVsMSBsZm8zO3RhYi1zdG9wczpsaXN0IDM2LjBwdCc+PHNwYW4KICAgICAJbGFuZz1FTi1HQiBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tR0InPjxhIGhyZWY9IiNfV3JpdGluZ19BdXRvbWF0ZWQiPldyaXRpbmcgQUpEVCBBdXRvbWF0ZWQgVGVzdHM8L2E+PG86cD48L286cD48L3NwYW4+Cgk8L2xpPgogIAk8bGkgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtc28tbGlzdDpsMSBsZXZlbDEgbGZvMzt0YWItc3RvcHM6bGlzdCAzNi4wcHQnPjxzcGFuCiAgICAgCWxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOkVOLUdCJz48YSBocmVmPSIjX1dyaXRpbmdfTWFudWFsIj5Xcml0aW5nIEFKRFQgTWFudWFsIFRlc3RzPC9hPjxvOnA+PC9vOnA+PC9zcGFuPgoJPC9saT4KCTwvdWw+CQo8L3VsPgoKPHAgY2xhc3M9TXNvTm9ybWFsPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOkVOLUdCJz48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTpFTi1HQic+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgoKCjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz00IGNlbGxwYWRkaW5nPTQgd2lkdGg9IjEwMCUiPgo8dHI+CiAgPHRkIGJnY29sb3I9IiNEREUyRUMiIGNsYXNzPSJzbWFsbFBhcmFncmFwaCIgYWxpZ249ImNlbnRlciI+Cgk8YSBuYW1lPSJfUnVubmluZyI+PC9hPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOgpFTi1HQic+PGI+UnVubmluZyB0aGUgQUpEVCBUZXN0czwvYj48bzpwPjwvbzpwPjwvc3Bhbj48L2E+CiAgPC90ZD4KIDwvdHI+CjwvdGFibGU+CgoKPGgzPjxhIG5hbWU9Il9SdW5uaW5nX0F1dG9tYXRlZCI+PC9hPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOgpFTi1HQic+UnVubmluZyB0aGUgQUpEVCBBdXRvbWF0ZWQgVGVzdHM8bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgoKPHA+QWxsIHRoZSBhdXRvbWF0ZWQgdGVzdHMgYXJlIGZvdW5kIHVuZGVyIHRoZSB0ZXN0c3JjIHBhY2thZ2UgaW4gb3JnLmVjbGlwc2UuYWpkdC50ZXN0LiBUbyBydW4KdGhlbSBkbyB0aGUgZm9sbG93aW5nOjwvcD4KPHVsPgo8bGk+bmF2aWdhdGUgdG8gb3JnLmVjbGlwc2UuYWpkdC50ZXN0L3Rlc3RzcmMvb3JnLmVjbGlwc2UuYWpkdC50ZXN0PC9saT4KPGxpPnJpZ2h0IGNsaWNrIG9uIEFsbFRlc3RzLmphdmE8L2xpPgo8bGk+aW4gdGhlIGNvbnRleHQgbWVudSBuYXZpYWdlIHRvIFJ1biBhbmQgc2VsZWN0IEpVbml0IFBsdWctaW4gVGVzdDwvbGk+CjwvdWw+CjxwPlRoaXMgbGF1bmNoZXMgdGhlIEFKRFQgYXV0b21hdGVkIHRlc3RzdWl0ZS48L3A+Cgo8cD5UbyBtb25pdG9yIHRoZSBwcm9ncmVzcyBvZiB0aGUgdGVzdHMsIG9yIHRvIHNlZSB0aGUgcmVzdWx0cywgb3BlbiB0aGUgSlVuaXQgdmlldy4gSWYgeW91IHdhbnQgdG8KcnVuIGEgc3BlY2lmaWMgdGVzdCwgb3IgdGVzdGNhc2UsIHRoZW4gZm9sbG93IHRoZSBzYW1lIHN0ZXBzIGFib3ZlLCBleGNlcHQgdGhpcyB0aW1lIG5hdmlnYXRlCmluIHRoZSBwYWNrYWdlIGV4cGxvcmVyIHRvIHRoZSB0ZXN0Y2FzZSBvciB0ZXN0IHlvdSB3aXNoIHRvIHJ1bi48L3A+Cgo8cD5BcyB0aGUgdGVzdHMgcnVuLCBvdXRwdXQgaXMgc2VudCB0byB0aGUgY29uc29sZS4gSW4gYWxsIGNhc2VzLCBpZiB0aGUgb3V0cHV0IGlzbid0IGV4cGVjdGVkIGZvcgp0aGUgdGVzdCwgdGhlbiB0aGUgdGVzdCB3aWxsIGZhaWwuIEhvd2V2ZXIsIG9jY2FzaW9uYWxseSwgZHVlIHRvIHRpbWluZyBpc3N1ZXMgYW5kIHNjaGVkdWxpbmcgb2YgCmpvYnMgaW4gRWNsaXBzZSAzLngsIGEgY291cGxlIG9mIHRoZSB0ZXN0cyBtYXkgZmFpbC4gV2UgYXJlIGN1cnJlbnRseSBsb29raW5nIGludG8gbWFraW5nIHRoZXNlIAp0ZXN0cyBtb3JlIHJvYnVzdCwgYnV0IGZvciB0aGUgdGltZSBiZWluZywgcmVydW4gdGhlIGZhaWxpbmcgdGVzdHMgd2hlbiBsaXR0bGUgb3RoZXIgd29yayBpcyBnb2luZyAKb24gb24geW91ciBtYWNoaW5lIGFuZCBpZiB0aGV5IHBhc3MgdGhlbiBhc3N1bWUgZXZlcnl0aGluZyBpcyBvay4gT2NjYXNpb25hbGx5LCBSZXNvdXJjZSBFeGNlcHRpb25zCmFyZSBzZWVuIHdpdGggcHJvYmxlbXMgZGVsZXRpbmcgcmVzb3VyY2VzLiBEZWxldGluZyBwcm9qZWN0cyBpcyBub3QgcGFydCBvZiB0aGUgdGVzdHMsIGluc3RlYWQKaXQgaXMgcGFydCBvZiB0aGUgY2xlYW4gdXAsIGFuZCBzbyB0aGVzZSBjYW4gYmUgaWdub3JlZCBhcyBub3QgYWZmZWN0aW5nIHRoZSB0ZXN0IHJ1bi4gUHJvYmxlbXMgCmRlbGV0aW5nIHJlc291cmNlcyB3aXRoaW4gQUogcHJvamVjdHMgYXJlIGJlaW5nIGxvb2tlZCBhdCBpbiBidWcgNzU3NzYuPC9wPgoKPHA+Tm90ZSB0aGF0IG1hbnkgb2YgdGhlIGF1dG9tYXRlZCB0ZXN0cyB1c2UgdGhlIHRlc3QgcHJvamVjdHMgY29udGFpbmVkIGluIHRoZSA8Yj50ZXN0CnByb2plY3RzPC9iPiBkaXJlY3RvcnkgaW4gdGhlIG9yZy5lY2xpcHNlLmFqZHQudGVzdCBwbHVnaW4uPC9wPiAKCjxoMz48YSBuYW1lPSJfUnVubmluZ19NYW51YWwiPjwvYT48c3BhbiBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZToKRU4tR0InPlJ1bm5pbmcgdGhlIEFKRFQgTWFudWFsIFRlc3RzPG86cD48L286cD48L3NwYW4+PC9oMz4KCjxwPlRoZXJlIGFyZSBhbHNvIGEgc2V0IG9mIG1hbnVhbCB0ZXN0cyB0byBydW4gYWdhaW5zdCBBSkRULiBUaGVzZSBhcmUgZm91bmQgaW4gdGhlIDxiPm1hbnVhbCAKdGVzdGluZzwvYj4gZGlyZWN0b3J5IG9mIHRoZSBvcmcuZWNsaXBzZS5hamR0LnRlc3QgcGx1Z2luLiBUaGUgdGVzdHMgaGF2ZSBiZWVuIHNwbGl0IGludG8gdGhlIApmb2xsb3dpbmcgY2F0ZWdvcmllczo8L3A+Cjx1bD4KPGxpPmJ1aWxkIGNvbmZpZ3MgLSB0aGlzIGluY2x1ZGVzIG1hbnVhbCB0ZXN0cyBmb3IgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gc2V0dXA8L2xpPgo8bGk+YnVpbGRlciAtIHRoaXMgaW5jbHVkZXMgbWFudWFsIHRlc3RzIHNwZWNpZmljIHRvIGJ1aWxkaW5nIEFzcGVjdEogcHJvamVjdHMsIHdoZW4gYnVpbGRzCmFyZSBhdXRvbWF0aWNhbGx5IHRyaWdnZXJlZCBldGMuPC9saT4KPGxpPmRvY3VtZW50YXRpb24gLSB0aGVzZSBhcmUgdGhlIGRvY3VtZW50YXRpb24gdGVzdHMgd2hpY2ggY2hlY2sgdGhhdCBsaW5rcyB3b3JrPC9saT4KPGxpPmVkaXRvciAtIHRoZXNlIHRlc3RzIGFyZSB0byBkbyB3aXRoIHRoZSBBc3BlY3RKIGVkaXRvcjwvbGk+CjxsaT5pbnN0YWxsYXRpb24gLSB0aGVzZSBhcmUgdGhlIHRlc3RzIHdoaWNoIGNvdmVyIHRoZSBpbnN0YWxsYXRpb24gb2YgQUpEVCB1bmRlciB2YXJpb3VzIApjaXJjdW1zdGFuY2VzPC9saT4KPGxpPmphdmFtb2RlbCAtIHRoZXNlIGFyZSB0aGUgbWFudWFsIHRlc3RzIHdoaWNoIGNvdmVyIHRoZSBqYXZhIG1vZGVsIHdvcmssIGZvciBleGFtcGxlLAp3aGF0IHNob3VsZCBiZSBzZWVuIGluIHRoZSBwYWNrYWdlIGV4cGxvcmVyPC9saT4KPGxpPmxhdW5jaGluZyAtIHRoZXNlIGFyZSB0aGUgdGVzdHMgd2hpY2ggZGVhbCB3aXRoIGxhdW5jaGluZyBBc3BlY3RKIHByb2dyYW1zIHZpYSB0aGUgClJ1biBtZW51PC9saT4KPGxpPnByb2plY3QgZGVwZW5kZW5jaWVzIC0gdGhlc2UgdGVzdHMgY292ZXIgdmFyaW91cyBzZXR1cCBzY2VuYXJpb3Mgd2l0aCBtdWx0aXBsZQpwcm9qZWN0czwvbGk+CjxsaT5xdWljayBmaXggLSB0aGVzZSBjb3ZlciB0aGUgcXVpY2sgZml4IGZhY2lsaXR5PC9saT4KPGxpPnJlZmFjdG9yaW5nIC0gdGhlc2UgdGVzdHMgY292ZXIgdGhlIHJlZmFjdG9yaW5nIGNhcGFiaWxpdHk8L2xpPgo8bGk+dmlzdWFsaXNlciAtIHRoZXNlIHZpc3VhbGlzZXIgdGVzdHMgYXJlIHNwZWNpZmljIHRvIHRoZSBBc3BlY3RKIFByb3ZpZGVyIGZvciB0aGUgdmlzdWFsaXNlci4KRm9yIGdlbmVyYWwgdmlzdWFsaXNlciB0ZXN0cywgc2VlIHRoZSB2aXN1YWxpc2VyIHRlc3QgcHJvamVjdDwvbGk+CjxsaT53aXphcmRzIC0gdGhpcyBjb3ZlcnMgbWFudWFsIHRlc3RzIHJlcXVpcmVkIGZvciB0aGUgdmFyaW91cyB3aXphcmRzPC9saT4KPC91bD4KPHA+VGhlcmUgYXJlIGFsc28gYSBmZXcgb3RoZXIgbWFudWFsIHRlc3RzLCBub3QgcHV0IGludG8gYSBjYXRlZ29yeSwgd2hpY2ggYXJlIGFsc28gcnVuLjwvcD4KCjxwPlRvIHJ1biBhbnkgb2YgdGhlc2UgdGVzdHMsIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIHNldCBvdXQgaW4gdGhlIHNjcmlwdC4gSW4gbWFueSBjYXNlcywKdGhlIHRlc3RzIHVzZSBwcm9qZWN0cyBjb250YWluZWQgaW4gdGhlIDxiPnRlc3QgcHJvamVjdHM8L2I+IGRpcmVjdG9yeSBpbiB0aGUKb3JnLmVjbGlwc2UuYWpkdC50ZXN0IHBsdWdpbi4gVGhlc2UgdGVzdHMgY2FuIGJlIGNoZWNrZWQgb3V0IGFzIHByb2plY3RzIGZyb20gY3ZzLjwvcD4KCgo8cCBjbGFzcz1Nc29Ob3JtYWw+PHNwYW4gbGFuZz1FTi1HQiBzdHlsZT0nbXNvLWFuc2ktbGFuZ3VhZ2U6RU4tR0InPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KCjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz00IGNlbGxwYWRkaW5nPTQgd2lkdGg9IjEwMCUiPgo8dHI+CiAgPHRkIGJnY29sb3I9IiNEREUyRUMiIGNsYXNzPSJzbWFsbFBhcmFncmFwaCIgYWxpZ249ImNlbnRlciI+Cgk8YSBuYW1lPSJfV3JpdGluZyI+PC9hPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOgpFTi1HQic+PGI+V3JpdGluZyBBSkRUIFRlc3RzPC9iPjxvOnA+PC9vOnA+PC9zcGFuPjwvYT4KICA8L3RkPgogPC90cj4KPC90YWJsZT4KCjxoMz48YSBuYW1lPSJfV3JpdGluZ19BdXRvbWF0ZWQiPjwvYT48c3BhbiBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZToKRU4tR0InPldyaXRpbmcgQUpEVCBBdXRvbWF0ZWQgVGVzdHM8bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgoKPHA+V3JpdGluZyBBSkRUIEF1dG9tYXRlZCB0ZXN0cyBpcyBubyBkaWZmZXJlbnQgdG8gd3JpdGluZyBKVW5pdCB0ZXN0cyBmb3IgYW55IG90aGVyIHByb2plY3QuIFdlCnN0YXkgYXMgY2xvc2UgYXMgd2UgY2FuIHRvIHRoZSBjb252ZW50aW9uIHRoYXQgdGhlIHBhY2thZ2Ugc3RydWN0dXJlIHVuZGVyIHRlc3RzcmMgbWlycm9ycwp0aGF0IG9mIHRoZSBvcmcuZWNsaXBzZS5hamR0LnVpIGFuZCBvcmcuZWNsaXBzZS5hamR0LmNvcmUgcGx1Z2lucywgd2l0aCB0aGUgdGVzdGNhc2UgY2xhc3NlcwpiZWluZyBuYW1lZCBhcyAmbHQgQ2xhc3MgdG8gYmUgdGVzdGVkICZndFRlc3QuamF2YS48L3A+Cgo8cD5BIHV0aWxpdHkgaGFzIGJlZW4gd3JpdHRlbiB0byBtYWtlIGl0IGVhc2llciB0byBjcmVhdGUgcHJvamVjdHMgdG8gdXNlIGFzIHBhcnQgb2YgdGhlCnRlc3RpbmcuIFRoaXMgZW5hYmxlcyB5b3UgdG8gY3JlYXRlIHRoZSBwcm9qZWN0LCBjaGVjayBpdCBpbnRvIENWUyB1bmRlciB0aGUgdGVzdCBwcm9qZWN0cwpkaXJlY3RvcnkgYW5kIHRoZW4gaW1wb3J0IGl0IGluIHlvdXIgYXV0b21hdGVkIHRlc3QgKHRoaXMgcHJldmVudHMgYSBsb3Qgb2YgdGhlIHNjaGVkdWxpbmcKaXNzdWVzIHdoaWNoIGhhcHBlbiBkdWUgdG8gdGhlIGJhY2tncm91bmQgcnVubmluZyBvZiBtYW55IGpvYnMgaW4gRWNsaXBzZSAzLngpLgpXZSByZWNvbW1lbmQgdGhhdCB5b3UgdXNlIHRoaXMgaW4geW91ciBhdXRvbWF0ZWQgdGVzdHMuIFRvIG1ha2UgdXNlIG9mIHRoaXMgZmVhdHVyZSwgZG8gdGhlCmZvbGxvd2luZzo8L3A+Cgo8dWw+CjxsaT5DcmVhdGUgYSBwcm9qZWN0LCBzYXkgY2FsbGVkICJNeSBBSiBQcm9qZWN0IiwgYXMgeW91IHdvdWxkIGxpa2UgaXQgdG8gYmUgYW5kIGltcG9ydCBpdCAKaW50byB0aGUgdGVzdCBwcm9qZWN0cyBkaXJlY3RvcnkgaW4gb3JnLmVjbGlwc2UuYWpkdC50ZXN0PC9saT4KPGxpPkF0IHRoZSBiZWdpbm5pbmcgb2YgeW91ciB0ZXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKPHByZT5JUHJvamVjdCBteVByb2plY3QgPSBVdGlscy5nZXRQcmVkZWZpbmVkUHJvamVjdCgiTXkgQUogUHJvamVjdCIsIHRydWUpOzwvcHJlPgp3aGVyZSB0cnVlIG1lYW5zIHRoYXQgaWYgaXQgYWxyZWFkeSBleGlzdHMsIHRoZW4gb3ZlcndyaXRlLgo8L2xpPgo8bGk+Rm9yY2UgYSBidWlsZCBvZiB0aGUgcHJvamVjdCBieSBjYWxsaW5nCjxwcmU+bXlQcm9qZWN0LmJ1aWxkKEluY3JlbWVudGFsUHJvamVjdEJ1aWxkZXIuRlVMTF9CVUlMRCwgbnVsbCk7PC9wcmU+CmFuZCBvZmYgeW91IGdvIQo8L2xpPgo8L3VsPgoKPHA+T25lIG90aGVyIHBvaW50IHRvIG5vdGUgd2hlbiB3cml0aW5nIEFKRFQgYXV0b21hdGVkIHRlc3RzIGlzIHRvIGF0IHRoZSBiZWdpbm5pbmcKb2YgdGhlIHRlc3QgdW5zZXQgdGhlIHJlcXVpcmVtZW50IGZvciB0aGUgdXNlciB0byByZXNwb25kIHRvIHRoZSBBSkRUIENvbmZpZ3VyYXRpb24gV2l6YXJkCmFuZCB0byByZXZlcnNlIHRoaXMgYmVmb3JlIGV4aXR0aW5nIHRoZSB0ZXN0ICh0aGlzIHJlcXVpcmVtZW50IHNob3VsZCBiZSByZW1vdmVkIAphcyB3ZSBiZWNvbWUgbW9yZSBjbG9zZWx5IGludGVncmF0ZWQgd2l0aCBKRFQpLiBJbiBvdGhlcndvcmRzLCBwbGFjZSB0aGUgZm9sbG93aW5nIGF0IAp0aGUgYmVnaW5uaW5nIG9mIHlvdXIgdGVzdDoKPHByZT5Bc3BlY3RKUHJlZmVyZW5jZXMuc2V0QUpEVFByZWZDb25maWdEb25lKHRydWUpOzwvcHJlPgphbmQgdGhlbgo8cHJlPkFzcGVjdEpQcmVmZXJlbmNlcy5zZXRBSkRUUHJlZkNvbmZpZ0RvbmUoZmFsc2UpOzwvcHJlPgphdCB0aGUgZW5kLgo8L3A+Cgo8cD5GaW5hbGx5LCBpZiB0aGUgdGVzdCBoYXMgYmVlbiB3cml0dGVuIGluIHJlc3BvbnNlIHRvIGEgYnVnLCB0aGVuIG5vdGUgdGhlIGJ1ZyBudW1iZXIKaW4gdGhlIGNvbW1lbnQgYWJvdmUgdGhlIHRlc3QuPC9wPgoKPGgzPjxhIG5hbWU9Il9Xcml0aW5nX01hbnVhbCI+PC9hPjxzcGFuIGxhbmc9RU4tR0Igc3R5bGU9J21zby1hbnNpLWxhbmd1YWdlOgpFTi1HQic+V3JpdGluZyBBSkRUIE1hbnVhbCBUZXN0czxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+Cgo8cD5Xcml0aW5nIG1hbnVhbCB0ZXN0cyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBKdXN0IGRlY2lkZSBvbiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiwgY3JlYXRlCmEgLnR4dCBmaWxlIHdpdGggYW4gYXBwcm9wcmlhdGUgdGl0bGUgKG9yIGFkZCB0byBhbiBleGlzdGluZyBvbmUpIGFuZCB3cml0ZSBkb3duIHRoZSBzdGVwcwpuZWVkZWQgdG8gYmUgZm9sbG93ZWQgdG8gcnVuIHRoZSB0ZXN0LiBJbiBhbGwgY2FzZXMsIGVuc3VyZSB0aGF0IHNvbWVvbmUgY2FuIGZvbGxvdyB0aGUgc3RlcHMKZnJvbSBzY3JhdGNoLCBpbmNsdWRpbmcgZ2V0dGluZyBob2xkIG9mIHRoZSBwcm9qZWN0cyByZXF1aXJlZCBmb3IgdGhlIHRlc3QuIElmIHlvdSBuZWVkIHRvIGNyZWF0ZQpuZXcgcHJvamVjdHMsIHRoZW4gcGxhY2UgdGhlbSBpbiB0aGUgdGVzdCBwcm9qZWN0cyBkaXJlY3Rvcnkgc28gdGhhdCB0aGV5J3JlIGVhc3kgdG8gYWNjZXNzLiBJZgp0aGUgdGVzdCBpcyBpbiByZXNwb25zZSB0byBhIGJ1ZyBmaXgsIHRoZW4gbm90ZSB0aGUgYnVnIG51bWJlciBhdCB0aGUgdG9wIG9mIHRoZSB0ZXN0LjwvcD4KCjxwIGNsYXNzPU1zb05vcm1hbD48c3BhbiBsYW5nPUVOLUdCIHN0eWxlPSdtc28tYW5zaS1sYW5ndWFnZTpFTi1HQic+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgoKPC9kaXY+Cgo8L2JvZHk+Cgo8L2h0bWw+Cg==