PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPkN1c3RvbSBFcnJvciBSZXNwb25zZXMgLSBBcGFjaGUgSFRUUCBTZXJ2ZXI8L3RpdGxlPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPSIuL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjM8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZmVhdGhlci5naWYiIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi8iPlZlcnNpb24gMi4zPC9hPjwvZGl2PjxkaXYgaWQ9InBhZ2UtY29udGVudCI+PGRpdiBpZD0icHJlYW1ibGUiPjxoMT5DdXN0b20gRXJyb3IgUmVzcG9uc2VzPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuL2VuL2N1c3RvbS1lcnJvci5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9lcy9jdXN0b20tZXJyb3IuaHRtbCIgaHJlZmxhbmc9ImVzIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVzcGHxb2wiPiZuYnNwO2VzJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vamEvY3VzdG9tLWVycm9yLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9rby9jdXN0b20tZXJyb3IuaHRtbCIgaHJlZmxhbmc9ImtvIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IktvcmVhbiI+Jm5ic3A7a28mbmJzcDs8L2E+PC9wPgo8L2Rpdj4KCiAgICA8cD5BZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgYWxsb3dzIHdlYm1hc3RlcnMgdG8gY29uZmlndXJlIHRoZSByZXNwb25zZSAKICAgIG9mIEFwYWNoZSB0byBzb21lIGVycm9yIG9yIHByb2JsZW0uPC9wPgoKICAgIDxwPkN1c3RvbWl6YWJsZSByZXNwb25zZXMgY2FuIGJlIGRlZmluZWQgdG8gYmUgYWN0aXZhdGVkIGluIHRoZSBldmVudCBvZiAKICAgIGEgc2VydmVyIGRldGVjdGVkIGVycm9yIG9yIHByb2JsZW0uPC9wPgoKICAgIDxwPklmIGEgc2NyaXB0IGNyYXNoZXMgYW5kIHByb2R1Y2VzIGEgIjUwMCBTZXJ2ZXIgRXJyb3IiIHJlc3BvbnNlLCAKICAgIHRoZW4gdGhpcyByZXNwb25zZSBjYW4gYmUgcmVwbGFjZWQgd2l0aCBlaXRoZXIgc29tZSBmcmllbmRsaWVyIHRleHQgb3IgYnkgCiAgICBhIHJlZGlyZWN0aW9uIHRvIGFub3RoZXIgVVJMIChsb2NhbCBvciBleHRlcm5hbCkuPC9wPgogIDwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjx1bCBpZD0idG9jIj48bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2JlaGF2aW9yIj5CZWhhdmlvcjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNjdXN0b20iPkN1c3RvbSBFcnJvciBSZXNwb25zZXMgYW5kIFJlZGlyZWN0czwvYT48L2xpPgo8L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImJlaGF2aW9yIiBpZD0iYmVoYXZpb3IiPkJlaGF2aW9yPC9hPjwvaDI+CiAgICAKCiAgICA8aDM+T2xkIEJlaGF2aW9yPC9oMz4KICAgICAgCgogICAgICA8cD5OQ1NBIGh0dHBkIDEuMyB3b3VsZCByZXR1cm4gc29tZSBib3Jpbmcgb2xkIGVycm9yL3Byb2JsZW0gbWVzc2FnZSAKICAgICAgd2hpY2ggd291bGQgb2Z0ZW4gYmUgbWVhbmluZ2xlc3MgdG8gdGhlIHVzZXIsIGFuZCB3b3VsZCBwcm92aWRlIG5vIAogICAgICBtZWFucyBvZiBsb2dnaW5nIHRoZSBzeW1wdG9tcyB3aGljaCBjYXVzZWQgaXQuPC9wPgogICAgCgogICAgPGgzPk5ldyBCZWhhdmlvcjwvaDM+CiAgICAgIAoKICAgICAgPHA+VGhlIHNlcnZlciBjYW4gYmUgYXNrZWQgdG86PC9wPgoKICAgICAgPG9sPgogICAgICAgIDxsaT5EaXNwbGF5IHNvbWUgb3RoZXIgdGV4dCwgaW5zdGVhZCBvZiB0aGUgTkNTQSBoYXJkIGNvZGVkIAogICAgICAgIG1lc3NhZ2VzLCBvcjwvbGk+CgogICAgICAgIDxsaT5yZWRpcmVjdCB0byBhIGxvY2FsIFVSTCwgb3I8L2xpPgoKICAgICAgICA8bGk+cmVkaXJlY3QgdG8gYW4gZXh0ZXJuYWwgVVJMLjwvbGk+CiAgICAgIDwvb2w+CgogICAgICA8cD5SZWRpcmVjdGluZyB0byBhbm90aGVyIFVSTCBjYW4gYmUgdXNlZnVsLCBidXQgb25seSBpZiBzb21lIAogICAgICBpbmZvcm1hdGlvbiBjYW4gYmUgcGFzc2VkIHdoaWNoIGNhbiB0aGVuIGJlIHVzZWQgdG8gZXhwbGFpbiBhbmQvb3IgbG9nIAogICAgICB0aGUgZXJyb3IvcHJvYmxlbSBtb3JlIGNsZWFybHkuPC9wPgoKICAgICAgPHA+VG8gYWNoaWV2ZSB0aGlzLCBBcGFjaGUgd2lsbCBkZWZpbmUgbmV3IENHSS1saWtlIGVudmlyb25tZW50IAogICAgICB2YXJpYWJsZXM6PC9wPgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgUkVESVJFQ1RfSFRUUF9BQ0NFUFQ9Ki8qLCBpbWFnZS9naWYsIGltYWdlL3gteGJpdG1hcCwgCiAgICAgICAgICAgIGltYWdlL2pwZWc8YnIgLz4KICAgICAgICBSRURJUkVDVF9IVFRQX1VTRVJfQUdFTlQ9TW96aWxsYS8xLjFiMiAoWDExOyBJOyBIUC1VWCBBLjA5LjA1IAogICAgICAgICAgICA5MDAwLzcxMik8YnIgLz4KICAgICAgICBSRURJUkVDVF9QQVRIPS46L2JpbjovdXNyL2xvY2FsL2JpbjovZXRjPGJyIC8+CiAgICAgICAgUkVESVJFQ1RfUVVFUllfU1RSSU5HPTxiciAvPgogICAgICAgIFJFRElSRUNUX1JFTU9URV9BRERSPTEyMS4zNDUuNzguMTIzPGJyIC8+CiAgICAgICAgUkVESVJFQ1RfUkVNT1RFX0hPU1Q9b29oLmFoaGguY29tPGJyIC8+CiAgICAgICAgUkVESVJFQ1RfU0VSVkVSX05BTUU9Y3Jhc2guYmFuZy5lZHU8YnIgLz4KICAgICAgICBSRURJUkVDVF9TRVJWRVJfUE9SVD04MDxiciAvPgogICAgICAgIFJFRElSRUNUX1NFUlZFUl9TT0ZUV0FSRT1BcGFjaGUvMC44LjE1PGJyIC8+CiAgICAgICAgUkVESVJFQ1RfVVJMPS9jZ2ktYmluL2J1Z2d5LnBsCiAgICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgICA8cD5Ob3RlIHRoZSA8Y29kZT5SRURJUkVDVF88L2NvZGU+IHByZWZpeC48L3A+CgogICAgICA8cD5BdCBsZWFzdCA8Y29kZT5SRURJUkVDVF9VUkw8L2NvZGU+IGFuZAogICAgICA8Y29kZT5SRURJUkVDVF9RVUVSWV9TVFJJTkc8L2NvZGU+IHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgICBuZXcgVVJMIChhc3N1bWluZyBpdCdzIGEgY2dpLXNjcmlwdCBvciBhIGNnaS1pbmNsdWRlKS4gVGhlCiAgICAgIG90aGVyIHZhcmlhYmxlcyB3aWxsIGV4aXN0IG9ubHkgaWYgdGhleSBleGlzdGVkIHByaW9yIHRvCiAgICAgIHRoZSBlcnJvci9wcm9ibGVtLiA8c3Ryb25nPk5vbmU8L3N0cm9uZz4gb2YgdGhlc2Ugd2lsbCBiZQogICAgICBzZXQgaWYgeW91ciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjZXJyb3Jkb2N1bWVudCI+RXJyb3JEb2N1bWVudDwvYT48L2NvZGU+IGlzIGFuIAogICAgICA8ZW0+ZXh0ZXJuYWw8L2VtPiByZWRpcmVjdCAoYW55dGhpbmcgc3RhcnRpbmcgd2l0aCBhIAogICAgICBzY2hlbWUgbmFtZSBsaWtlIDxjb2RlPmh0dHA6PC9jb2RlPiwgZXZlbiBpZiBpdCByZWZlcnMgdG8gdGhlIHNhbWUgaG9zdCAKICAgICAgYXMgdGhlIHNlcnZlcikuPC9wPgogICAgCiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJjb25maWd1cmF0aW9uIiBpZD0iY29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gyPgogICAgCgogICAgPHA+VXNlIG9mIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNlcnJvcmRvY3VtZW50Ij5FcnJvckRvY3VtZW50PC9hPjwvY29kZT4gaXMgZW5hYmxlZCAKICAgIGZvciAuaHRhY2Nlc3MgZmlsZXMgd2hlbiB0aGUgCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjYWxsb3dvdmVycmlkZSI+QWxsb3dPdmVycmlkZTwvYT48L2NvZGU+IGlzIHNldCBhY2NvcmRpbmdseS48L3A+CgogICAgPHA+SGVyZSBhcmUgc29tZSBleGFtcGxlcy4uLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgRXJyb3JEb2N1bWVudCA1MDAgL2NnaS1iaW4vY3Jhc2gtcmVjb3ZlciA8YnIgLz4KICAgICAgRXJyb3JEb2N1bWVudCA1MDAgIlNvcnJ5LCBvdXIgc2NyaXB0IGNyYXNoZWQuIE9oIGRlYXIiIDxiciAvPgogICAgICBFcnJvckRvY3VtZW50IDUwMCBodHRwOi8veHh4LyA8YnIgLz4KICAgICAgRXJyb3JEb2N1bWVudCA0MDQgL0xhbWVfZXhjdXNlcy9ub3RfZm91bmQuaHRtbCA8YnIgLz4KICAgICAgRXJyb3JEb2N1bWVudCA0MDEgL1N1YnNjcmlwdGlvbi9ob3dfdG9fc3Vic2NyaWJlLmh0bWwKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+VGhlIHN5bnRheCBpcyw8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIEVycm9yRG9jdW1lbnQgJmx0OzMtZGlnaXQtY29kZSZndDsgJmx0O2FjdGlvbiZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+d2hlcmUgdGhlIGFjdGlvbiBjYW4gYmUsPC9wPgoKICAgIDxvbD4KICAgICAgPGxpPlRleHQgdG8gYmUgZGlzcGxheWVkLiBQcmVmaXggdGhlIHRleHQgd2l0aCBhIHF1b3RlCiAgICAgICgiKS4gV2hhdGV2ZXIgZm9sbG93cyB0aGUgcXVvdGUgaXMgZGlzcGxheWVkLiA8ZW0+Tm90ZToKICAgICAgdGhlICgiKSBwcmVmaXggaXNuJ3QgZGlzcGxheWVkLjwvZW0+PC9saT4KCiAgICAgIDxsaT5BbiBleHRlcm5hbCBVUkwgdG8gcmVkaXJlY3QgdG8uPC9saT4KCiAgICAgIDxsaT5BIGxvY2FsIFVSTCB0byByZWRpcmVjdCB0by48L2xpPgogICAgPC9vbD4KICA8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImN1c3RvbSIgaWQ9ImN1c3RvbSI+Q3VzdG9tIEVycm9yIFJlc3BvbnNlcyBhbmQgUmVkaXJlY3RzPC9hPjwvaDI+CiAgICAKCiAgICA8cD5BcGFjaGUncyBiZWhhdmlvciB0byByZWRpcmVjdGVkIFVSTHMgaGFzIGJlZW4gbW9kaWZpZWQgc28KICAgIHRoYXQgYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSB0byBhCiAgICBzY3JpcHQvc2VydmVyLWluY2x1ZGUuPC9wPgoKICAgIDxoMz5PbGQgYmVoYXZpb3I8L2gzPgogICAgICAKCiAgICAgIDxwPlN0YW5kYXJkIENHSSB2YXJzIHdlcmUgbWFkZSBhdmFpbGFibGUgdG8gYSBzY3JpcHQgd2hpY2gKICAgICAgaGFzIGJlZW4gcmVkaXJlY3RlZCB0by4gTm8gaW5kaWNhdGlvbiBvZiB3aGVyZSB0aGUKICAgICAgcmVkaXJlY3Rpb24gY2FtZSBmcm9tIHdhcyBwcm92aWRlZC48L3A+CiAgICAKCiAgICA8aDM+TmV3IGJlaGF2aW9yPC9oMz4KICAgICAgCgogICAgICA8cD5BIG5ldyBiYXRjaCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2lsbCBiZSBpbml0aWFsaXplZAogICAgICBmb3IgdXNlIGJ5IGEgc2NyaXB0IHdoaWNoIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8uIEVhY2ggbmV3CiAgICAgIHZhcmlhYmxlIHdpbGwgaGF2ZSB0aGUgcHJlZml4IDxjb2RlPlJFRElSRUNUXzwvY29kZT4uCiAgICAgIDxjb2RlPlJFRElSRUNUXzwvY29kZT4gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBjcmVhdGVkIGZyb20KICAgICAgdGhlIENHSSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggZXhpc3RlZCBwcmlvciB0byB0aGUKICAgICAgcmVkaXJlY3QsIHRoZXkgYXJlIHJlbmFtZWQgd2l0aCBhIDxjb2RlPlJFRElSRUNUXzwvY29kZT4KICAgICAgcHJlZml4LCA8ZW0+aS5lLjwvZW0+LCA8Y29kZT5IVFRQX1VTRVJfQUdFTlQ8L2NvZGU+IGJlY29tZXMKICAgICAgPGNvZGU+UkVESVJFQ1RfSFRUUF9VU0VSX0FHRU5UPC9jb2RlPi4gSW4gYWRkaXRpb24gdG8gdGhlc2UKICAgICAgbmV3IHZhcmlhYmxlcywgQXBhY2hlIHdpbGwgZGVmaW5lIDxjb2RlPlJFRElSRUNUX1VSTDwvY29kZT4KICAgICAgYW5kIDxjb2RlPlJFRElSRUNUX1NUQVRVUzwvY29kZT4gdG8gaGVscCB0aGUgc2NyaXB0IHRyYWNlIGl0cwogICAgICBvcmlnaW4uIEJvdGggdGhlIG9yaWdpbmFsIFVSTCBhbmQgdGhlIFVSTCBiZWluZyByZWRpcmVjdGVkIHRvCiAgICAgIGNhbiBiZSBsb2dnZWQgaW4gdGhlIGFjY2VzcyBsb2cuPC9wPgoKICAgICAgPHA+SWYgdGhlIEVycm9yRG9jdW1lbnQgc3BlY2lmaWVzIGEgbG9jYWwgcmVkaXJlY3QgdG8gYSBDR0kKICAgICAgc2NyaXB0LCB0aGUgc2NyaXB0IHNob3VsZCBpbmNsdWRlIGEgIjxjb2RlPlN0YXR1czo8L2NvZGU+IgogICAgICBoZWFkZXIgZmllbGQgaW4gaXRzIG91dHB1dCBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb3BhZ2F0aW9uCiAgICAgIGFsbCB0aGUgd2F5IGJhY2sgdG8gdGhlIGNsaWVudCBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIHRoYXQKICAgICAgY2F1c2VkIGl0IHRvIGJlIGludm9rZWQuIEZvciBpbnN0YW5jZSwgYSBQZXJsIEVycm9yRG9jdW1lbnQKICAgICAgc2NyaXB0IG1pZ2h0IGluY2x1ZGUgdGhlIGZvbGxvd2luZzo8L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAuLi4gPGJyIC8+CiAgICAgICAgcHJpbnQgICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxuIjsgPGJyIC8+CiAgICAgICAgcHJpbnRmICJTdGF0dXM6ICVzIENvbmRpdGlvbiBJbnRlcmNlcHRlZFxuIiwgJEVOVnsiUkVESVJFQ1RfU1RBVFVTIn07IDxiciAvPgogICAgICAgIC4uLgogICAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgICAgPHA+SWYgdGhlIHNjcmlwdCBpcyBkZWRpY2F0ZWQgdG8gaGFuZGxpbmcgYSBwYXJ0aWN1bGFyIGVycm9yCiAgICAgIGNvbmRpdGlvbiwgc3VjaCBhcyA8Y29kZT40MDQmbmJzcDtOb3QmbmJzcDtGb3VuZDwvY29kZT4sIGl0IGNhbgogICAgICB1c2UgdGhlIHNwZWNpZmljIGNvZGUgYW5kIGVycm9yIHRleHQgaW5zdGVhZC48L3A+CgogICAgICA8cD5Ob3RlIHRoYXQgdGhlIHNjcmlwdCA8ZW0+bXVzdDwvZW0+IGVtaXQgYW4gYXBwcm9wcmlhdGUKICAgICAgPGNvZGU+U3RhdHVzOjwvY29kZT4gaGVhZGVyIChzdWNoIGFzIDxjb2RlPjMwMiZuYnNwO0ZvdW5kPC9jb2RlPiksIGlmIHRoZQogICAgICByZXNwb25zZSBjb250YWlucyBhIDxjb2RlPkxvY2F0aW9uOjwvY29kZT4gaGVhZGVyIChpbiBvcmRlciB0byBpc3N1ZSBhCiAgICAgIGNsaWVudCBzaWRlIHJlZGlyZWN0KS4gT3RoZXJ3aXNlIHRoZSA8Y29kZT5Mb2NhdGlvbjo8L2NvZGU+IGhlYWRlciBtYXkKICAgICAgaGF2ZSBubyBlZmZlY3QuPC9wPgogICAgCiAgPC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi9lbi9jdXN0b20tZXJyb3IuaHRtbCIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZXMvY3VzdG9tLWVycm9yLmh0bWwiIGhyZWZsYW5nPSJlcyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFc3Bh8W9sIj4mbmJzcDtlcyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2phL2N1c3RvbS1lcnJvci5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4va28vY3VzdG9tLWVycm9yLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDE5OTUtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gb3IgaXRzIGxpY2Vuc29ycywgYXMgYXBwbGljYWJsZS48YnIgLz5MaWNlbnNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iLi9mYXEvIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+CjwvYm9keT48L2h0bWw+