PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiIgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6KG51bGwpMT0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+PGhlYWQ+PCEtLQogICAgQ29weXJpZ2h0IDIwMDktMjAxMCBJbnRlbCBDb3Jwb3JhdGlvbgogICAgbGljZW5zZSBiYW5uZXIKLS0+Cjx0aXRsZT5Cb29zdCBQb2x5Z29uIExpYnJhcnk6IFBvbHlnb24gOTAgV2l0aCBIb2xlcyBDb25jZXB0PC90aXRsZT4KICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9SVNPLTg4NTktMSI+Cjx0YWJsZSBzdHlsZT0ibWFyZ2luOiAwcHQ7IHBhZGRpbmc6IDBwdDsgd2lkdGg6IDEwMCU7IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+PHRib2R5Pjx0cj4KPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IiBub3dyYXA9IjEiIHZhbGlnbj0idG9wIj4KICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDVweDsiIGFsaWduPSJjZW50ZXIiPgogICAgICAgIDxpbWcgYm9yZGVyPSIwIiBzcmM9ImltYWdlcy9ib29zdC5wbmciIHdpZHRoPSIyNzciIGhlaWdodD0iODYiPjxhIHRpdGxlPSJ3d3cuYm9vc3Qub3JnIGhvbWUgcGFnZSIgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvIiB0YWJpbmRleD0iMiIgc3R5bGU9ImJvcmRlcjogbWVkaXVtIG5vbmUgOyI+CiAgICAgICAgICAgIDwvYT4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0ibWFyZ2luOiA1cHg7Ij4KICAgICAgICA8aDMgY2xhc3M9Im5hdmJhciI+Q29udGVudHM8L2gzPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9ImluZGV4Lmh0bSI+Qm9vc3QuUG9seWdvbiBNYWluIFBhZ2U8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imd0bF9kZXNpZ25fb3ZlcnZpZXcuaHRtIj5EZXNpZ24gT3ZlcnZpZXc8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imd0bF9pc290cm9weS5odG0iPklzb3Ryb3B5PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJndGxfY29vcmRpbmF0ZV9jb25jZXB0Lmh0bSI+Q29vcmRpbmF0ZSBDb25jZXB0PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJndGxfaW50ZXJ2YWxfY29uY2VwdC5odG0iPkludGVydmFsIENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2ludF9jb25jZXB0Lmh0bSI+UG9pbnQgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3JlY3RhbmdsZV9jb25jZXB0Lmh0bSI+UmVjdGFuZ2xlIENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uXzkwX2NvbmNlcHQuaHRtIj5Qb2x5Z29uIDkwIENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPlBvbHlnb24gOTAgV2l0aCBIb2xlcyBDb25jZXB0PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uXzQ1X2NvbmNlcHQuaHRtIj5Qb2x5Z29uIDQ1IENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uXzQ1X3dpdGhfaG9sZXNfY29uY2VwdC5odG0iPlBvbHlnb24gNDUgV2l0aCBIb2xlcyBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcG9seWdvbl9jb25jZXB0Lmh0bSI+UG9seWdvbiBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcG9seWdvbl93aXRoX2hvbGVzX2NvbmNlcHQuaHRtIj5Qb2x5Z29uIFdpdGggSG9sZXMgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3BvbHlnb25fOTBfc2V0X2NvbmNlcHQuaHRtIj5Qb2x5Z29uIDkwIFNldCBDb25jZXB0PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcG9seWdvbl80NV9zZXRfY29uY2VwdC5odG0iPlBvbHlnb24gNDUgU2V0IENvbmNlcHQ8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wb2x5Z29uX3NldF9jb25jZXB0Lmh0bSI+UG9seWdvbiBTZXQgQ29uY2VwdDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX2Nvbm5lY3Rpdml0eV9leHRyYWN0aW9uXzkwLmh0bSI+Q29ubmVjdGl2aXR5IEV4dHJhY3Rpb24gOTA8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9jb25uZWN0aXZpdHlfZXh0cmFjdGlvbl80NS5odG0iPkNvbm5lY3Rpdml0eSBFeHRyYWN0aW9uIDQ1PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfY29ubmVjdGl2aXR5X2V4dHJhY3Rpb24uaHRtIj5Db25uZWN0aXZpdHkgRXh0cmFjdGlvbjwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZ3RsX3Byb3BlcnR5X21lcmdlXzkwLmh0bSI+UHJvcGVydHkgTWVyZ2UgOTA8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9Imd0bF9wcm9wZXJ0eV9tZXJnZV80NS5odG0iPlByb3BlcnR5IE1lcmdlIDQ1PC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJndGxfcHJvcGVydHlfbWVyZ2UuaHRtIj5Qcm9wZXJ0eSBNZXJnZTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGgzIGNsYXNzPSJuYXZiYXIiPk90aGVyIFJlc291cmNlczwvaDM+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iR1RMX2Jvb3N0Y29uMjAwOS5wZGYiPkdUTCBCb29zdGNvbiAyMDA5IFBhcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iR1RMX2Jvb3N0Y29uX2RyYWZ0MDMucGRmIj5HVEwgQm9vc3Rjb24gMjAwOSAKCQkJCVByZXNlbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgPGxpPjxhIGhyZWY9ImFuYWx5c2lzLmh0bSI+UGVyZm9ybWFuY2UgQW5hbHlzaXM8L2E+PC9saT4KICAgICAgICAJPGxpPjxhIGhyZWY9Imd0bF90dXRvcmlhbC5odG0iPkxheW91dCBWZXJzdXMgU2NoZW1hdGljIFR1dG9yaWFsPC9hPjwvbGk+CiAgICAgICAgCTxsaT48YSBocmVmPSJndGxfbWlua293c2tpX3R1dG9yaWFsLmh0bSI+TWlua293c2tpIFN1bSBUdXRvcmlhbDwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KICAgICAgICA8aDMgY2xhc3M9Im5hdmJhciI+UG9seWdvbiBTcG9uc29yPC9oMz4KICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6IDVweDsiIGFsaWduPSJjZW50ZXIiPgogICAgICAgIDxpbWcgYm9yZGVyPSIwIiBzcmM9ImltYWdlcy9pbnRsb2dvLmdpZiIgd2lkdGg9IjEyNyIgaGVpZ2h0PSI1MSI+CiAgICA8L2Rpdj4gICAgCjwvdGQ+Cjx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTAwJSI+Cgo8IS0tIEVuZCBIZWFkZXIgLS0+Cgo8YnI+CjxwPgo8L3A+PGgxPlBvbHlnb24gOTAgV2l0aCBIb2xlcyBDb25jZXB0PC9oMT4KCjxwPiAKPHA+VGhlIHBvbHlnb25fOTBfd2l0aF9ob2xlcyBjb25jZXB0IHRhZyBpcyA8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+CnBvbHlnb25fOTBfd2l0aF9ob2xlc19jb25jZXB0PC9mb250PjwvcD4KPHA+IApUbyByZWdpc3RlciBhIHVzZXIgZGVmaW5lZCB0eXBlIGFzIGEgbW9kZWwgb2YgIAo8Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPnBvbHlnb25fOTBfd2l0aF9ob2xlcyA8L2ZvbnQ+Y29uY2VwdCwgc3BlY2lhbGl6ZSB0aGUgCmdlb21ldHJ5IGNvbmNlcHQgbWV0YS1mdW5jdGlvbiBmb3IgdGhhdCB0eXBlLiZuYnNwOyBJbiB0aGUgZXhhbXBsZSBiZWxvdyBDUG9seWdvbjkwV2l0aEhvbGVzIGlzIHJlZ2lzdGVyZWQgYXMgYSBtb2RlbCBvZiAKcG9seWdvbjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+XzkwX3dpdGhfaG9sZXMmbmJzcDs8L2ZvbnQ+IGNvbmNlcHQuPHA+IAo8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0OyZndDs8YnI+CnN0cnVjdCBnZW9tZXRyeV9jb25jZXB0Jmx0O0NQb2x5Z29uOTBXaXRoSG9sZXMmZ3Q7IHsgdHlwZWRlZiBwb2x5Z29uXzkwX3dpdGhfaG9sZXNfY29uY2VwdCB0eXBlOyB9OzwvZm9udD48cD4gCjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+VGhlIHNlbWFudGljIG9mIGEgcG9seWdvbl85MF93aXRoX2hvbGVzIGlzIGEgCnBvbHlnb25fOTAgdGhhdCBpdCBjYW4gcHJvdmlkZSBpdGVyYXRvcnMgb3ZlciBob2xlcyB0aGF0IGFyZSBhbHNvIHBvbHlnb25fOTAuJm5ic3A7IApBIG11dGFibGUgcG9seWdvbl85MF93aXRoX2hvbGVzIG11c3QgYWxzbyBiZSBhYmxlIHRvIHNldCBpdHMgZ2VvbWV0cnkgYmFzZWQgb24gCmFuIGludGVyYXRvciByYW5nZSBvdmVyIHBvbHlnb25fOTAgaG9sZXMuJm5ic3A7IFRoZXJlIGlzIG5vIGNvbnZlbnRpb24gb2YgCndpbmRpbmcgb2YgaG9sZXMgZW5mb3JjZWQgd2l0aGluIHRoZSBsaWJyYXJ5LiA8L2ZvbnQ+PHA+IAo8Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPkJlbG93IGlzIHNob3duIHRoZSBkZWZhdWx0IHBvbHlnb24gd2l0aCBob2xlcyAKdHJhaXRzLiZuYnNwOyBTcGVjaWFsaXphdGlvbiBvZiB0aGVzZSB0cmFpdHMgaXMgcmVxdWlyZWQgZm9yIHR5cGVzIHRoYXQgZG9uJ3QgCmNvbmZvcm0gdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3IuPC9mb250PjxwPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgClQsIHR5cGVuYW1lIGVuYWJsZSA9IHZvaWQmZ3Q7PGJyPgpzdHJ1Y3QgcG9seWdvbl93aXRoX2hvbGVzX3RyYWl0cyB7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgdHlwZWRlZiB0eXBlbmFtZSBUOjppdGVyYXRvcl9ob2xlc190eXBlIAppdGVyYXRvcl9ob2xlc190eXBlOzxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHR5cGVkZWYgdHlwZW5hbWUgVDo6aG9sZV90eXBlIGhvbGVfdHlwZTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzdGF0aWMgaW5saW5lIGl0ZXJhdG9yX2hvbGVzX3R5cGUgYmVnaW5faG9sZXMoY29uc3QgVCZhbXA7IAp0KSB7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIHQuYmVnaW5faG9sZXMoKTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RhdGljIGlubGluZSBpdGVyYXRvcl9ob2xlc190eXBlIGVuZF9ob2xlcyhjb25zdCBUJmFtcDsgdCkgCns8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gdC5lbmRfaG9sZXMoKTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc2l6ZV9ob2xlcyhjb25zdCBUJmFtcDsgdCkgezxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiB0LnNpemVfaG9sZXMoKTs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPgp9OzwvZm9udD48L3A+CjxwPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVCwgdHlwZW5hbWUgZW5hYmxlID0gdm9pZCZndDs8YnI+CnN0cnVjdCBwb2x5Z29uX3dpdGhfaG9sZXNfbXV0YWJsZV90cmFpdHMgezxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHRlbXBsYXRlICZsdDt0eXBlbmFtZSBpVCZndDs8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzdGF0aWMgaW5saW5lIFQmYW1wOyBzZXRfaG9sZXMoVCZhbXA7IHQsIGlUIGlucHV0QmVnaW4sIGlUIAppbnB1dEVuZCkgezxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHQuc2V0X2hvbGVzKGlucHV0QmVnaW4sIAppbnB1dEVuZCk7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIHQ7PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4KfTs8L2ZvbnQ+PC9wPgo8cD5BbiBvYmplY3QgdGhhdCBpcyBhIG1vZGVsIG9mIDxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij4KcG9seWdvbl85MF93aXRoX2hvbGVzX2NvbmNlcHQ8L2ZvbnQ+IGNhbiBiZSB2aWV3ZWQgYXMgYSBtb2RlbCBvZiBhbnkgb2YgaXRzIApyZWZpbmVtZW50cyBpZiBpdCBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUgdG8gY29uZm9ybSB0byB0aGUgcmVzdHJpY3Rpb24gb2YgCnRob3NlIGNvbmNlcHRzLiZuYnNwOyBUaGlzIGNvbmNlcHQgY2FzdGluZyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUKPGZvbnQgZmFjZT0iQ291cmllciBOZXciPnZpZXdfYXMmbHQ7Jmd0OygpPC9mb250PiBmdW5jdGlvbi48L3A+CjxwPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij52aWV3X2FzJmx0O3JlY3RhbmdsZV9jb25jZXB0Jmd0Oyhwb2x5Z29uXzkwX3dpdGhfaG9sZXNfb2JqZWN0KTwvZm9udD48YnI+Cjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij52aWV3X2FzJmx0O3BvbHlnb25fOTBfY29uY2VwdCZndDsocG9seWdvbl85MF93aXRoX2hvbGVzX29iamVjdCk8L2ZvbnQ+PC9wPgo8cD5UaGUgcmV0dXJuIHZhbHVlIG9mIDxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij52aWV3X2FzJmx0OyZndDsoKTwvZm9udD4gY2FuIGJlIApwYXNzZWQgaW50byBhbnkgaW50ZXJmYWNlIHRoYXQgZXhwZWN0cyBhbiBvYmplY3Qgb2YgdGhlIGNvbmNlcHR1YWwgdHlwZSAKc3BlY2lmaWVkIGluIGl0cyB0ZW1wbGF0ZSBwYXJhbWV0ZXIuPC9wPgo8aDI+RnVuY3Rpb25zPC9oMj4KPHRhYmxlIGJvcmRlcj0iMSIgd2lkdGg9IjEwMCUiIGlkPSJ0YWJsZTEiPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQmZ3Q7PGJyPgoJCWNvbXBhY3RfaXRlcmF0b3JfdHlwZSA8Yj5iZWdpbl9jb21wYWN0PC9iPihjb25zdCBUJmFtcDsgcG9seWdvbik8L2ZvbnQ+PC90ZD4KCQk8dGQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5FeHBlY3RzIGEgbW9kZWwgb2YgcG9seWdvbl85MC4mbmJzcDsgCgkJUmV0dXJucyB0aGUgYmVnaW4gaXRlcmF0b3Igb3ZlciB0aGUgcmFuZ2Ugb2YgY29vcmRpbmF0ZXMgdGhhdCBjb3JyZXNwb25kIAoJCXRvIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGVkZ2VzLjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBUJmd0Ozxicj4KCQljb21wYWN0X2l0ZXJhdG9yX3R5cGUgPGI+ZW5kX2NvbXBhY3Q8L2I+KGNvbnN0IFQmYW1wOyBwb2x5Z29uKTwvZm9udD48L3RkPgoJCTx0ZD48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPkV4cGVjdHMgYSBtb2RlbCBvZiBwb2x5Z29uXzkwLiZuYnNwOyAKCQlSZXR1cm5zIHRoZSBlbmQgaXRlcmF0b3Igb3ZlciB0aGUgcmFuZ2Ugb2YgY29vcmRpbmF0ZXMgdGhhdCBjb3JyZXNwb25kIAoJCXRvIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGVkZ2VzLjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBUJmd0Ozxicj4KCQlwb2ludF9pdGVyYXRvcl90eXBlIDxiPmJlZ2luX3BvaW50czwvYj4oY29uc3QgVCZhbXA7IHBvbHlnb24pPC9mb250PjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+RXhwZWN0cyBhIG1vZGVsIG9mIAoJCXBvbHlnb25fOTBfd2l0aF9ob2xlcy4mbmJzcDsgCgkJUmV0dXJucyB0aGUgYmVnaW4gaXRlcmF0b3Igb3ZlciB0aGUgcmFuZ2Ugb2YgcG9pbnRzIHRoYXQgY29ycmVzcG9uZCB0byAKCQl2ZXJ0aWNlcyBvZiB0aGUgcG9seWdvbi48L2ZvbnQ+PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVCZndDs8YnI+CgkJcG9pbnRfaXRlcmF0b3JfdHlwZSA8Yj5lbmRfcG9pbnRzPC9iPihjb25zdCBUJmFtcDsgcG9seWdvbik8L2ZvbnQ+PC90ZD4KCQk8dGQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5FeHBlY3RzIGEgbW9kZWwgb2YgCgkJcG9seWdvbl85MF93aXRoX2hvbGVzLiZuYnNwOyAKCQlSZXR1cm5zIHRoZSBlbmQgaXRlcmF0b3Igb3ZlciB0aGUgcmFuZ2Ugb2YgcG9pbnRzIHRoYXQgY29ycmVzcG9uZCB0byAKCQl2ZXJ0aWNlcyBvZiB0aGUgcG9seWdvbi48L2ZvbnQ+PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVCZndDs8YnI+CgkJaG9sZV9pdGVyYXRvcl90eXBlIDxiPmJlZ2luX2hvbGVzPC9iPihjb25zdCBUJmFtcDsgcG9seWdvbik8L2ZvbnQ+PC90ZD4KCQk8dGQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5FeHBlY3RzIGEgbW9kZWwgb2YgCgkJcG9seWdvbl85MF93aXRoX2hvbGVzLiZuYnNwOyAKCQlSZXR1cm5zIHRoZSBiZWdpbiBpdGVyYXRvciBvdmVyIHRoZSByYW5nZSBvZiBjb29yZGluYXRlcyB0aGF0IGNvcnJlc3BvbmQgCgkJdG8gaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgZWRnZXMuPC9mb250PjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQmZ3Q7PGJyPgoJCWhvbGVfaXRlcmF0b3JfdHlwZSA8Yj5lbmRfPC9iPjxiPmhvbGVzPC9iPihjb25zdCBUJmFtcDsgcG9seWdvbik8L2ZvbnQ+PC90ZD4KCQk8dGQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5FeHBlY3RzIGEgbW9kZWwgb2YgCgkJcG9seWdvbl85MF93aXRoX2hvbGVzLiZuYnNwOyAKCQlSZXR1cm5zIHRoZSBlbmQgaXRlcmF0b3Igb3ZlciB0aGUgcmFuZ2Ugb2YgY29vcmRpbmF0ZXMgdGhhdCBjb3JyZXNwb25kIAoJCXRvIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGVkZ2VzLjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBULCB0eXBlbmFtZSAKCQlpdGVyYXRvciZndDs8YnI+CgkJdm9pZCA8Yj5zZXRfY29tcGFjdDwvYj4oVCZhbXA7IHBvbHlnb24sIGl0ZXJhdG9yIGIsIGl0ZXJhdG9yIGUpPC9mb250PjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+RXhwZWN0cyBhIG1vZGVsIG9mIAoJCXBvbHlnb25fOTBfd2l0aF9ob2xlcy4mbmJzcDsmbmJzcDsgCgkJU2V0cyB0aGUgcG9seWdvbiB0byB0aGUgY29vcmRpbmF0ZSBkYXRhIHJhbmdlIFtiLGUpIHRoYXQgY29ycmVzcG9uZHMgdG8gCgkJLmhvcml6b250YWwgYW5kIHZlcnRpY2FsIGVkZ2VzLjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBULCB0eXBlbmFtZSAKCQlpdGVyYXRvciZndDs8YnI+CgkJdm9pZCA8Yj5zZXRfcG9pbnRzPC9iPihUJmFtcDsgcG9seWdvbiwgaXRlcmF0b3IgYiwgaXRlcmF0b3IgZSk8L2ZvbnQ+PC90ZD4KCQk8dGQ+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5FeHBlY3RzIGEgbW9kZWwgb2YgCgkJcG9seWdvbl85MF93aXRoX2hvbGVzLiZuYnNwOyZuYnNwOyAKCQlTZXRzIHRoZSBwb2x5Z29uIHRvIHRoZSBwb2ludCBkYXRhIHJhbmdlIFtiLGUpIHRoYXQgY29ycmVzcG9uZHMgdG8gCgkJdmVydGljZXMgb2YgYSBtYW5oYXR0YW4gcG9seWdvbi4mbmJzcDsgTm9uLW1hbmhhdHRhbiBlZGdlcyBiZXR3ZWVuIAoJCXN1Y2Nlc3NpdmUgaW5wdXQgcG9pbnRzIHJlc3VsdHMgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBULCB0eXBlbmFtZSAKCQlpdGVyYXRvciZndDs8YnI+CgkJdm9pZCA8Yj5zZXRfaG9sZXM8L2I+KFQmYW1wOyBwb2x5Z29uLCBpdGVyYXRvciBiLCBpdGVyYXRvciBlKTwvZm9udD48L3RkPgoJCTx0ZD48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPkV4cGVjdHMgYSBtb2RlbCBvZiAKCQlwb2x5Z29uXzkwX3dpdGhfaG9sZXMuJm5ic3A7Jm5ic3A7IAoJCVNldHMgdGhlIHBvbHlnb24gaG9sZXMgdG8gdGhlIGhvbGUgZGF0YSByYW5nZSBbYixlKTwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBUJmd0Ozxicj4KCQl1bnNpZ25lZCBpbnQgPGI+c2l6ZTwvYj4oY29uc3QgVCZhbXA7IHBvbHlnb24pPC9mb250PjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+UmV0dXJucyB0aGUgbnVtYmVyIG9mIGVkZ2VzIGluIHRoZSAKCQlvdXRlciBzaGVsbCBvZiB0aGUgcG9seWdvbl85MF93aXRoX2hvbGVzLiZuYnNwOyBEb2VzIG5vdCBpbmNsdWRlIHNpemVzIAoJCW9mIHRoZSBob2xlcy48L2ZvbnQ+PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVDEsIHR5cGVuYW1lIAoJCVQyJmd0Ozxicj4KCQlUMSZhbXA7IDxiPmFzc2lnbjwvYj4oVDEmYW1wOyBsZWZ0LCBjb25zdCBUMiZhbXA7IHJpZ2h0KTwvZm9udD48L3RkPgoJCTx0ZD5Db3BpZXMgZGF0YSBmcm9tIHJpZ2h0IG9iamVjdCB0aGF0IG1vZGVscyBwb2x5Z29uXzkwX3dpdGhfaG9sZXMgb3IgCgkJb25lIG9mIGl0cyByZWZpbmVtZW50cyBpbnRvIGxlZnQgb2JqZWN0IAoJCXRoYXQgbW9kZWxzIHBvbHlnb25fOTBfd2l0aF9ob2xlcy48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBULCAKCQl0eXBlbmFtZSBwb2ludF90eXBlJmd0Ozxicj4KCQlib29sIDxiPmNvbnRhaW5zPC9iPihjb25zdCBUJmFtcDssIGNvbnN0IHBvaW50X3R5cGUmYW1wOyBwb2ludCwgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgCgkJYm9vbCBjb25zaWRlcl90b3VjaD10cnVlKTwvZm9udD48L3RkPgoJCTx0ZD5HaXZlbiBhbiBvYmplY3QgdGhhdCBtb2RlbHMgcG9seWdvbl85MF93aXRoX2hvbGVzIGFuZCBhbiBvYmplY3QgdGhhdCBtb2RlbHMgCgkJcG9pbnQsIHJldHVybnMgdHJ1ZSAKCQlpZiB0aGUgcG9seWdvbiBzaGVsbCBjb250YWlucyB0aGUgcG9pbnQgYW5kIG9uZSBvZiBpdHMgaG9sZXMgZG9lcyBub3QgCgkJY29udGFpbiB0aGUgcG9pbnQuJm5ic3A7IElmIHRoZSBjb25zaWRlcl90b3VjaCAKCQlmbGFnIGlzIHRydWUgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgcG9pbnQgbGllcyBhbG9uZyB0aGUgYm91bmRhcnkgb2YgCgkJdGhlIHBvbHlnb24gb3Igb25lIG9mIGl0cyBob2xlcy48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPi8vIGdldCB0aGUgY2VudGVyIGNvb3JkaW5hdGU8YnI+CgkJdGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQsIHR5cGVuYW1lIHBvaW50X3R5cGUmZ3Q7PGJyPgoJCXZvaWQgPGI+Y2VudGVyPC9iPihwb2ludF90eXBlJmFtcDsgcCwgY29uc3QgVCZhbXA7IHBvbHlnb24pPC9mb250PjwvdGQ+CgkJPHRkPlNldHMgb2JqZWN0IHRoYXQgbW9kZWxzIHBvaW50IHRvIHRoZSBjZW50ZXIgcG9pbnQgb2YgdGhlIGJvdW5kaW5nIAoJCWJveCBvZiBhbiBvYmplY3QgdGhhdCBtb2RlbHMgcG9seWdvbl85MF93aXRoX2hvbGVzLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQsIAoJCXR5cGVuYW1lIHJlY3RhbmdsZV90eXBlJmd0Ozxicj4KCQlib29sIDxiPmV4dGVudHM8L2I+KHJlY3RhbmdsZV90eXBlJmFtcDsgYmJveCwgY29uc3QgVCZhbXA7IHBvbHlnb24pPC9mb250PjwvdGQ+CgkJPHRkPlNldHMgb2JqZWN0IHRoYXQgbW9kZWxzIHJlY3RhbmdsZSB0byB0aGUgYm91bmRpbmcgYm94IG9mIGFuIG9iamVjdCAKCQl0aGF0IG1vZGVscyBwb2x5Z29uXzkwX3dpdGhfaG9sZXMgYW5kIHJldHVybnMgdHJ1ZS4mbmJzcDsgUmV0dXJucyBmYWxzZSAKCQlhbmQgbGVhdmVzIGJib3ggdW5jaGFuZ2VkIGlmIHBvbHlnb24gaXMgZW1wdHkuPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVCZndDs8YnI+CgkJbWFuaGF0dGFuX2FyZWFfdHlwZSA8Yj5hcmVhPC9iPihjb25zdCBUJmFtcDsgcG9seWdvbik8L2ZvbnQ+PC90ZD4KCQk8dGQ+UmV0dXJucyB0aGUgYXJlYSBvZiBhbiBvYmplY3QgCgkJdGhhdCBtb2RlbHMgcG9seWdvbl85MF93aXRoX2hvbGVzIGluY2x1ZGluZyBzdWJ0cmFjdGluZyB0aGUgYXJlYSBvZiBpdHMgCgkJaG9sZXMgZnJvbSB0aGUgYXJlYSBvZiB0aGUgb3V0ZXIgc2hlbGwgcG9seWdvbi48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBUJmd0Ozxicj4KCQlkaXJlY3Rpb25fMWQgPGI+d2luZGluZzwvYj4oY29uc3QgVCZhbXA7IHBvbHlnb24pPC9mb250PjwvdGQ+CgkJPHRkPlJldHVybnMgdGhlIHdpbmRpbmcgZGlyZWN0aW9uIG9mIGFuIG9iamVjdCAKCQl0aGF0IG1vZGVscyBwb2x5Z29uXzkwX3dpdGhfaG9sZXMsIExPVyA9PSBDTE9DS1dJU0UsIEhJR0ggPSAKCQlDT1VOVEVSQ0xPQ0tXSVNFLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQmZ3Q7PGJyPgoJCWNvb3JkaW5hdGVfZGlmZmVyZW5jZSA8Yj5wZXJpbWV0ZXI8L2I+KGNvbnN0IFQmYW1wOyBwb2x5Z29uKTwvZm9udD48L3RkPgoJCTx0ZD5SZXR1cm5zIHRoZSBwZXJpbWV0ZXIgbGVuZ3RoIG9mIGFuIG9iamVjdCAKCQl0aGF0IG1vZGVscyBwb2x5Z29uXzkwLCBpbmNsdWRpbmcgdGhlIHBlcmltZXRlcnMgb2YgdGhlIGhvbGVzLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQsIAoJCXR5cGVuYW1lIHRyYW5zZm9ybV90eXBlJmd0Ozxicj4KCQlUJmFtcDsgPGI+dHJhbnNmb3JtPC9iPihUJmFtcDsgcG9seWdvbiwgY29uc3QgdHJhbnNmb3JtX3R5cGUmYW1wOyk8L2ZvbnQ+PC90ZD4KCQk8dGQ+QXBwbGllcyB0cmFuc2Zvcm0oKSBvbiB0aGUgdmVydGljZXMgb2YgcG9seWdvbiBhbmQgc2V0cyB0aGUgcG9seWdvbiB0byB0aGF0IGRlc2NyaWJlZCBieSB0aGUgcmVzdWx0IG9mIAoJCXRyYW5zZm9ybWluZyBpdHMgdmVydGljZXMuJm5ic3A7IEFsc28gYXBwbGllcyB0cmFuc2Zvcm0oKSBvbiB0aGUgaG9sZXMgCgkJb2YgdGhlIHBvbHlnb24uPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVCZndDs8YnI+CgkJVCZhbXA7IDxiPnNjYWxlX3VwPC9iPihUJmFtcDsgcG9seWdvbiwgdW5zaWduZWRfYXJlYV90eXBlIGZhY3Rvcik8L2ZvbnQ+PC90ZD4KCQk8dGQ+U2NhbGVzIHVwIG91dGVyIHNoZWxsIGFuZCBob2xlcyBvZiBhbiBvYmplY3QgdGhhdCBtb2RlbHMgCgkJcG9seWdvbl85MCBieSB1bnNpZ25lZCBmYWN0b3IuPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgVCZndDs8YnI+CgkJVCZhbXA7IDxiPnNjYWxlX2Rvd248L2I+KFQmYW1wOyBwb2x5Z29uLCB1bnNpZ25lZF9hcmVhX3R5cGUgZmFjdG9yKTwvZm9udD48L3RkPgoJCTx0ZD5TY2FsZXMgZG93biBvdXRlciBzaGVsbCBhbmQgaG9sZXMgb2YgYW4gb2JqZWN0IHRoYXQgbW9kZWxzIAoJCXBvbHlnb25fOTAgYnkgdW5zaWduZWQgZmFjdG9yLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQsIHNjYWxpbmdfdHlwZSZndDs8YnI+CgkJVCZhbXA7IDxiPnNjYWxlPC9iPihUJmFtcDsgcmVjdGFuZ2xlLCBkb3VibGUgc2NhbGluZykgPC9mb250PjwvdGQ+CgkJPHRkPlNjYWxlcyBvdXRlciBzaGVsbCBhbmQgaG9sZXMgb2YgYW4gb2JqZWN0IHRoYXQgbW9kZWxzIHBvbHlnb25fOTAgYnkgCgkJZmxvYXRpbmcgcG9pbnQgZmFjdG9yLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIFQmZ3Q7PGJyPgoJCVQmYW1wOyA8Yj5tb3ZlPC9iPihUJmFtcDsgcG9seWdvbiwgb3JpZW50YXRpb25fMmQsPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgY29vcmRpbmF0ZV9kaWZmZXJlbmNlIGRpc3BsYWNlbWVudCk8L2ZvbnQ+PC90ZD4KCQk8dGQ+QWRkcyBkaXNwbGFjZW1lbnQgdmFsdWUgdG8gY29vcmRpbmF0ZSBpbmRpY2F0ZWQgYnkgb3JpZW50YXRpb25fMmQgb2YgCgkJdmVydGljZXMgb2YgYW4gb2JqZWN0IHRoYXQgbW9kZWxzIHBvbHlnb25fOTAgLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIHBvbHlnb25fdHlwZSwgdHlwZW5hbWUgcG9pbnRfdHlwZSZndDs8YnI+CgkJcG9seWdvbl90eXBlJmFtcDsgPGI+Y29udm9sdmU8L2I+KHBvbHlnb25fdHlwZSZhbXA7IHBvbHlnb24sPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgCgkJY29uc3QgcG9pbnRfdHlwZSZhbXA7IHBvaW50KTwvZm9udD48L3RkPgoJCTx0ZD5Db252b2x2ZXMgY29vcmRpbmF0ZSB2YWx1ZXMgb2YgcG9pbnQgd2l0aCB0aGUgb3V0ZXIgc2hlbGwgYW5kIGhvbGVzIG9mIGFuIAoJCW9iamVjdCB0aGF0IG1vZGVscyBwb2x5Z29uXzkwX3dpdGhfaG9sZXMuPC90ZD4KCTwvdHI+Cgk8L3RhYmxlPgoJPGgxPlBvbHlnb24gOTAgV2l0aCBIb2xlcyBEYXRhPC9oMT4KCjxwPiAKPHA+VGhlIGxpYnJhcnkgcHJvdmlkZXMgYSBtb2RlbCBvZiBwb2x5Z29uIDkwIHdpdGggaG9sZXMgY29uY2VwdCBkZWNsYXJlZAo8Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+CnRlbXBsYXRlJmx0O3R5cGVuYW1lIFQmZ3Q7IHBvbHlnb25fOTBfd2l0aF9ob2xlc19kYXRhIDwvZm9udD53aGVyZSBUIGlzIHRoZSAKY29vcmRpbmF0ZSB0eXBlLjwvcD4KPHA+VGhpcyBkYXRhIHR5cGUgaXMgdXNlZCBpbnRlcm5hbGx5IHdoZW4gYSBNYW5oYXR0YW4gcG9seWdvbiB3aXRoIGhvbGVzIGlzIApuZWVkZWQgYW5kIGlzIGF2YWlsYWJsZSB0byB0aGUgbGlicmFyeSB1c2VyIHdobyBmaW5kcyBpdCBjb252ZW5pZW50IHRvIHVzZSBhIApsaWJyYXJ5IHBvbHlnb24gZGF0YSB0eXBlIGluc3RlYWQgb2YgcHJvdmlkaW5nIHRoZWlyIG93bi4mbmJzcDsgVGhlIGRhdGEgdHlwZSBpcyAKaW1wbGVtZW50ZWQgdG8gYmUgY29udmVuaWVudCB0byB1c2Ugd2l0aCB0aGUgbGlicmFyeSB0cmFpdHMuPC9wPgo8aDI+TWVtYmVyczwvaDI+Cjx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIiBpZD0idGFibGUyIj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPmdlb21ldHJ5X3R5cGU8L2ZvbnQ+PC9iPjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+cG9seWdvbl85MF93aXRoX2hvbGVzX2NvbmNlcHQ8L2ZvbnQ+PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5jb29yZGluYXRlX3R5cGU8L2ZvbnQ+PC9iPjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+VDwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPml0ZXJhdG9yX3R5cGU8L2ZvbnQ+PC9iPjwvdGQ+CgkJPHRkPkl0ZXJhdG9yIG92ZXIgdmVydGljZXMgcG9pbnRfZGF0YSZsdDtUJmd0OyB2ZXJ0aWNlcyBvZiBwb2x5Z29uPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5jb21wYWN0X2l0ZXJhdG9yX3R5cGU8L2ZvbnQ+PC9iPjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+SXRlcmF0b3Igb3ZlciBub24tcmVkdW5kYW50IGNvb3JkaW5hdGVzIAoJCW9mIHRoZSBwb2x5Z29uLCBhbHRlcm5hdGluZyB4LCB5LCB4LCB5IHN0YXJ0aW5nIHdpdGggYW4geCwgd2hlcmUgZWFjaCB4IAoJCWNvcnJlc3BvbmRzIHRvIGEgdmVydGljYWwgZWRnZSBhbmQgZWFjaCB5IGNvcnJlc3BvbmRzIHRvIGEgaG9yaXpvbnRhbCAKCQllZGdlLjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPml0ZXJhdG9yX2hvbGVzX3R5cGU8L2ZvbnQ+PC9iPjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+SXRlcmF0b3Igb3ZlciBob2xlIHBvbHlnb25zIG9mIHR5cGUgCgkJcG9seWdvbl85MF9kYXRhJmx0O1QmZ3Q7LjwvZm9udD48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPjxiPnBvbHlnb25fOTBfd2l0aF9ob2xlc19kYXRhPC9iPigpPC9mb250PjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+RGVmYXVsdCBjb25zdHJ1Y3RzIHRoZSA8L2ZvbnQ+cG9seWdvbi48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPjxiPnBvbHlnb25fOTBfd2l0aF9ob2xlc19kYXRhPC9iPihjb25zdCAKCQlwb2x5Z29uXzkwX3dpdGhfaG9sZXNfZGF0YSZhbXA7IHRoYXQpPC9mb250PjwvdGQ+CgkJPHRkPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+Q29weSBjb25zdHJ1Y3Q8L2ZvbnQ+PC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5wb2x5Z29uXzkwX3dpdGhfaG9sZXNfZGF0YSZhbXA7IDxiPgoJCTxicj5vcGVyYXRvcj08L2I+KGNvbnN0IHBvbHlnb25fOTBfd2l0aF9ob2xlc19kYXRhJmFtcDsgdGhhdCk8L2ZvbnQ+PC90ZD4KCQk8dGQ+QXNzaWdubWVudCBvcGVyYXRvci48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBUMiZndDs8Yj4gPC9iPnBvbHlnb25fOTBfd2l0aF9ob2xlc19kYXRhJmFtcDs8Yj4mbmJzcDsgCgkJPGJyPiBvcGVyYXRvcj08L2I+KGNvbnN0IFQyJmFtcDsgdGhhdCkgY29uc3Q8L2ZvbnQ+PC90ZD4KCQk8dGQ+QXNzaWduIGZyb20gYW4gb2JqZWN0IHRoYXQgaXMgYSBtb2RlbCBvZiBwb2x5Z29uIDkwIHdpdGggaG9sZXMuPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5pdGVyYXRvcl90eXBlIDxiPmJlZ2luPC9iPigpIAoJCWNvbnN0PC9mb250PjwvdGQ+CgkJPHRkPkdldCB0aGUgYmVnaW4gaXRlcmF0b3Igb3ZlciB2ZXJ0aWNlcyBvZiB0aGUgcG9seWdvbi48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPml0ZXJhdG9yX3R5cGUgPGI+ZW5kPC9iPigpIAoJCWNvbnN0PC9mb250PjwvdGQ+CgkJPHRkPkdldCB0aGUgZW5kIGl0ZXJhdG9yIG92ZXIgdmVydGljZXMgb2YgdGhlIHBvbHlnb24uPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5jb21wYWN0X2l0ZXJhdG9yX3R5cGUgPGI+YmVnaW5fY29tcGFjdDwvYj4oKSAKCQljb25zdDwvZm9udD48L3RkPgoJCTx0ZD5HZXQgdGhlIGJlZ2luIGNvbXBhY3QgaXRlcmF0b3Igb3ZlciBub24tcmVkdW5kYW50IGNvb3JkaW5hdGVzIG9mIHRoZSAKCQlwb2x5Z29uLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+Y29tcGFjdF9pdGVyYXRvcl90eXBlIDxiPmVuZF9jb21wYWN0PC9iPigpIAoJCWNvbnN0PC9mb250PjwvdGQ+CgkJPHRkPkdldCB0aGUgZW5kIGNvbXBhY3QgaXRlcmF0b3Igb3ZlciBub24tcmVkdW5kYW50IGNvb3JkaW5hdGVzIG9mIHRoZSAKCQlwb2x5Z29uLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+aXRlcmF0b3JfaG9sZV90eXBlIDxiPmJlZ2luX2hvbGVzPC9iPigpIAoJCWNvbnN0PC9mb250PjwvdGQ+CgkJPHRkPkdldCB0aGUgYmVnaW4gY29tcGFjdCBpdGVyYXRvciBvdmVyIG5vbi1yZWR1bmRhbnQgY29vcmRpbmF0ZXMgb2YgdGhlIAoJCXBvbHlnb24uPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5pdGVyYXRvcl9ob2xlX3R5cGUgPGI+ZW5kX2hvbGVzPC9iPigpIAoJCWNvbnN0PC9mb250PjwvdGQ+CgkJPHRkPkdldCB0aGUgZW5kIGNvbXBhY3QgaXRlcmF0b3Igb3ZlciBub24tcmVkdW5kYW50IGNvb3JkaW5hdGVzIG9mIHRoZSAKCQlwb2x5Z29uLjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+c3RkOjpzaXplX3QgPGI+c2l6ZTwvYj4oKSBjb25zdDwvZm9udD48L3RkPgoJCTx0ZD5HZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc2VxdWVuY2Ugc3RvcmVkIHRvIHRoZSBwb2x5Z29uLCAKCQl1c3VhbGx5IGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWRnZXMgb2YgdGhlIHBvbHlnb24uPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij5zdGQ6OnNpemVfdCA8Yj5zaXplX2hvbGVzPC9iPigpIGNvbnN0PC9mb250PjwvdGQ+CgkJPHRkPkdldCB0aGUgbnVtYmVyIG9mIGhvbGVzIGluIHRoZSBwb2x5Z29uPC90ZD4KCTwvdHI+Cgk8dHI+CgkJPHRkIHdpZHRoPSI1ODYiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3Ij50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgaVQmZ3Q7PGI+Jm5ic3A7IAoJCTxicj4gPC9iPnZvaWQgPGI+c2V0PC9iPihpVCBiZWdpbl9wb2ludHMsIGlUIGVuZF9wb2ludHMpPC9mb250PjwvdGQ+CgkJPHRkPlNldHMgdGhlIHBvbHlnb24gdG8gdGhlIGl0ZXJhdG9yIHJhbmdlIG9mIHBvaW50cy4mbmJzcDsgTm8gY2hlY2sgaXMgCgkJcGVyZm9ybWVkIHRvIGVuc3VyZSB0aGUgcG9pbnRzIGRlc2NyaWJlIGEgTWFuaGF0dGFuIGZpZ3VyZSwgZXZlcnkgb3RoZXIgCgkJeCBhbmQgeSB2YWx1ZSBvZiB0aGUgcG9pbnRzIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcG9seWdvbi48L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQgd2lkdGg9IjU4NiI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciPnRlbXBsYXRlICZsdDt0eXBlbmFtZSBpVCZndDs8Yj4mbmJzcDsgCgkJPGJyPiA8L2I+dm9pZCA8Yj5zZXRfY29tcGFjdDwvYj4oaVQgYmVnaW5fY29vcmRzLCBpVCBlbmRfY29vcmRzKTwvZm9udD48L3RkPgoJCTx0ZD5TZXRzIHRoZSBwb2x5Z29uIHRvIHRoZSBpdGVyYXRvciByYW5nZSBvZiBjb29yZGluYXRlcy4mbmJzcDsgVGhlc2UgCgkJY29vcmRpbmF0ZXMgY29ycmVzcG9uZCB0byB0aGUgeCB2YWx1ZXMgb2YgdmVydGljYWwgZWRnZXMgYW5kIHkgdmFsdWVzIG9mIAoJCWhvcml6b250YWwgZWRnZXMuJm5ic3A7IEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHNlcXVlbmNlIHN0YXJ0IHdpdGggYW4geCAKCQl2YWx1ZSBhbmQgcHJvY2VlZCB4IHRoZW4geSB0aGVuIHggdGhlbiB5LjwvdGQ+Cgk8L3RyPgoJPHRyPgoJCTx0ZCB3aWR0aD0iNTg2Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyI+dGVtcGxhdGUgJmx0O3R5cGVuYW1lIGlUJmd0OzxiPiZuYnNwOyAKCQk8YnI+IDwvYj52b2lkIDxiPnNldF9ob2xlczwvYj4oaVQgYmVnaW5faG9sZXMsIGlUIGVuZF9jaG9sZXNzKTwvZm9udD48L3RkPgoJCTx0ZD5TZXRzIHRoZSBwb2x5Z29uIGhvbGVzIHRoZSBpdGVyYXRvciByYW5nZSBvZiBob2xlIHBvbHlnb25zLiZuYnNwOyBUaGVzZSAKCQlwb2x5Z29ucyBpbiB0aGUgaW5wdXQgcmFuZ2UgbWF5IGJlIGVpdGhlciBwb2x5Z29uXzkwX2RhdGEgb3IgCgkJcG9seWdvbl85MF93aXRoX2hvbGVzX2RhdGEgb3IgYW55IHR5cGUgdGhhdCBwcm92aWRlcyBiZWdpbl9jb21wYWN0IGFuZCAKCQllbmRfY29tcGFjdCBtZW1iZXIgZnVuY3Rpb25zLjwvdGQ+Cgk8L3RyPgo8L3RhYmxlPgoJPHRyPgo8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyMzgsIDIzOCwgMjM4KTsiIG5vd3JhcD0iMSIgdmFsaWduPSJ0b3AiPgogICAgJm5ic3A7PC90ZD4KPHRkIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDEwcHg7IHBhZGRpbmctcmlnaHQ6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxMDAlIj4KCgo8dGFibGUgY2xhc3M9ImRvY2luZm8iIHJ1bGVzPSJub25lIiBmcmFtZT0idm9pZCIgaWQ9InRhYmxlMyI+Cgk8Y29sZ3JvdXA+CgkJPGNvbCBjbGFzcz0iZG9jaW5mby1uYW1lIj48Y29sIGNsYXNzPSJkb2NpbmZvLWNvbnRlbnQiPgoJPC9jb2xncm91cD4KCTx0Ym9keSB2QWxpZ249InRvcCI+CgkJPHRyPgoJCQk8dGggY2xhc3M9ImRvY2luZm8tbmFtZSI+Q29weXJpZ2h0OjwvdGg+CgkJCTx0ZD5Db3B5cmlnaHQgqSBJbnRlbCBDb3Jwb3JhdGlvbiAyMDA4LTIwMTAuPC90ZD4KCQk8L3RyPgoJCTx0ciBjbGFzcz0iZmllbGQiPgoJCQk8dGggY2xhc3M9ImRvY2luZm8tbmFtZSI+TGljZW5zZTo8L3RoPgoJCQk8dGQgY2xhc3M9ImZpZWxkLWJvZHkiPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKCQkJVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgPHR0IGNsYXNzPSJsaXRlcmFsIj4KCQkJPHNwYW4gY2xhc3M9InByZSI+TElDRU5TRV8xXzAudHh0PC9zcGFuPjwvdHQ+IG9yIGNvcHkgYXQKCQkJPGEgY2xhc3M9InJlZmVyZW5jZSIgdGFyZ2V0PSJfdG9wIiBocmVmPSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPgoJCQlodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvdGQ+CgkJPC90cj4KPC90YWJsZT4KCjwvaHRtbD4=