Cgo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KICAgICAgICA8aHRtbCBsYW5nPSJlbiI+CiAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CiAgICA8aGVhZD4KICAgICAgPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+CiAgICAgICAgPHRpdGxlPkFwYWNoZSBBbnQgLSBIYXZpbmcgUHJvYmxlbXM/PC90aXRsZT4KICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9wYWdlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iQ29ub3IgTWFjTmVpbGwiPgogIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSIiPgogICAgICA8L2hlYWQ+CgogICAgPGJvZHk+CiAgICAgIDxwIGNsYXNzPSJuYXZwYXRoIj4KICAgICAgICA8c2NyaXB0IHNyYz0iLi9icmVhZGNydW1icy5qcyIgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICAgIDwvcD4KCiAgICAgIDxkaXYgY2xhc3M9ImxvZ29iYXIiPgogICAgICAgIDx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPjxpbWcgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZSBBbnQgc2l0ZSIgc3JjPSIuL2ltYWdlcy9ncm91cC1sb2dvLmdpZiI+PC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIj48aW1nIGFsdD0iQXBhY2hlIEFudCBsb2dvIiBib3JkZXI9IjAiIHNyYz0iLi9pbWFnZXMvcHJvamVjdC1sb2dvLmdpZiI+PC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJyaWdodCI+CiAgICAgICAgICAgICAgPGZvcm0gdGFyZ2V0PSJfYmxhbmsiIG9uc3VibWl0PSJxLnZhbHVlID0gcXVlcnkudmFsdWUgKyAnIHNpdGU6YW50LmFwYWNoZS5vcmcnIiBhY3Rpb249Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2giIG1ldGhvZD0iZ2V0Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJzZWFyY2giIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIjNEM2QzhGIj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aW1nIGhlaWdodD0iMTAiIHdpZHRoPSIxIiBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9zcGFjZXIuZ2lmIj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgaGVpZ2h0PSIxIiB3aWR0aD0iMSIgYWx0PSIiIHNyYz0iLi9pbWFnZXMvc3BhY2VyLmdpZiI+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgbm93cmFwPSJub3dyYXAiIGNsYXNzPSJzZWFyY2hjYXB0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJxIiB0eXBlPSJoaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHNpemU9IjE1IiBpZD0icXVlcnkiIHR5cGU9InRleHQiPgogICAgICAgICAgICAgICAgICAgICAgPGltZyBoZWlnaHQ9IjEiIHdpZHRoPSI1IiBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9zcGFjZXIuZ2lmIj4KICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJTZWFyY2giIHZhbHVlPSJTZWFyY2giIHR5cGU9InN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgICB0aGUgQXBhY2hlIEFudCBzaXRlCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBoZWlnaHQ9IjEiIHdpZHRoPSIxIiBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9zcGFjZXIuZ2lmIj48L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgaGVpZ2h0PSIxMCIgd2lkdGg9IjkiIHNyYz0iLi9pbWFnZXMvc2VhcmNoLWxlZnQuZ2lmIj48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD48aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL3NwYWNlci5naWYiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgaGVpZ2h0PSIxMCIgd2lkdGg9IjkiIHNyYz0iLi9pbWFnZXMvc2VhcmNoLXJpZ2h0LmdpZiI+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICA8L3RhYmxlPgogICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYiI+CiAgICAgICAgICAgICAgPHRhYmxlIHN1bW1hcnk9InRhYiBiYXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iOCI+PGltZyBhbHQ9IiIgaGVpZ2h0PSI1IiB3aWR0aD0iOCIgc3JjPSIuL2ltYWdlcy9zcGFjZXIuZ2lmIj48L3RkPjx0ZCB2YWxpZ249ImJvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgc3VtbWFyeT0ic2VsZWN0ZWQgdGFiIiBzdHlsZT0iaGVpZ2h0OiAxLjVlbSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjUiIGJnY29sb3I9IiM0QzZDOEYiPjxpbWcgaGVpZ2h0PSI1IiB3aWR0aD0iNSIgYWx0PSIiIHNyYz0iLi9pbWFnZXMvdGFiU2VsLWxlZnQuZ2lmIj48L3RkPjx0ZCB2YWxpZ249Im1pZGRsZSIgYmdjb2xvcj0iIzRDNkM4RiI+PGZvbnQgY29sb3I9IiNmZmZmZmYiIHNpemU9IjIiIGZhY2U9IkFyaWFsLCBIZWx2ZXRpY2EsIFNhbnMtc2VyaWYiPjxiPkhvbWU8L2I+PC9mb250PjwvdGQ+PHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNSIgYmdjb2xvcj0iIzRDNkM4RiI+PGltZyBoZWlnaHQ9IjUiIHdpZHRoPSI1IiBhbHQ9IiIgc3JjPSIuL2ltYWdlcy90YWJTZWwtcmlnaHQuZ2lmIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjUiPjxpbWcgYWx0PSIiIGhlaWdodD0iOCIgd2lkdGg9IjgiIHNyYz0iLi9pbWFnZXMvc3BhY2VyLmdpZiI+PC90ZD48dGQgdmFsaWduPSJib3R0b20iPgogICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHN1bW1hcnk9Im5vbiBzZWxlY3RlZCB0YWIiIHN0eWxlPSJoZWlnaHQ6IDEuNGVtIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI1IiBiZ2NvbG9yPSIjQjJDNEUwIj48aW1nIGhlaWdodD0iNSIgd2lkdGg9IjUiIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL3RhYi1sZWZ0LmdpZiI+PC90ZD48dGQgdmFsaWduPSJtaWRkbGUiIGJnY29sb3I9IiNCMkM0RTAiPjxhIGhyZWY9Ii4vcHJvamVjdHMvaW5kZXguaHRtbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgU2Fucy1zZXJpZiI+UHJvamVjdHM8L2ZvbnQ+PC9hPjwvdGQ+PHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNSIgYmdjb2xvcj0iI0IyQzRFMCI+PGltZyBoZWlnaHQ9IjUiIHdpZHRoPSI1IiBhbHQ9IiIgc3JjPSIuL2ltYWdlcy90YWItcmlnaHQuZ2lmIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImJsdWViYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIAogIDxkaXYgY2xhc3M9Im1lbnVjb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0ibWVudSI+CiAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGkgY2xhc3M9Im1lbnVoZWFkZXIiPkFwYWNoZSBBbnQKICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5XZWxjb21lPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vYW50bmV3cy5odG1sIj5OZXdzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51aGVhZGVyIj5Eb2N1bWVudGF0aW9uCiAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vbWFudWFsL2luZGV4Lmh0bWwiPk1hbnVhbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuL3Byb2plY3RzLmh0bWwiPlJlbGF0ZWQgUHJvamVjdHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi9leHRlcm5hbC5odG1sIj5FeHRlcm5hbCBUb29scyBhbmQgVGFza3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi9yZXNvdXJjZXMuaHRtbCI+UmVzb3VyY2VzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vZmFxLmh0bWwiPkZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWwiPkhhdmluZyBQcm9ibGVtcz88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51aGVhZGVyIj5Eb3dubG9hZAogICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYW50LmFwYWNoZS5vcmcvYmluZG93bmxvYWQuY2dpIj5CaW5hcnkgRGlzdHJpYnV0aW9uczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYW50LmFwYWNoZS5vcmcvc3JjZG93bmxvYWQuY2dpIj5Tb3VyY2UgRGlzdHJpYnV0aW9uczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0ibWVudWhlYWRlciI+Q29udHJpYnV0aW5nCiAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vbWFpbC5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vY3ZzLmh0bWwiPkNWUyBSZXBvc2l0b3JpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2J1Z3ppbGxhL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1BbnQiPkJ1ZyBEYXRhYmFzZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvYnVnemlsbGEvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUFudCZhbXA7YnVnX3NldmVyaXR5PUVuaGFuY2VtZW50Ij5FbmhhbmNlbWVudCBSZXF1ZXN0czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZm91bmRhdGlvbi9jb250cmlidXRpbmcuaHRtbCI+RG9uYXRpb25zPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJtZW51aGVhZGVyIj5Qcm9qZWN0IE1hbmFnZW1lbnQKICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi9jb250cmlidXRvcnMuaHRtbCI+Q29udHJpYnV0b3JzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4vbWlzc2lvbi5odG1sIj5BcGFjaGUgQW50IE1pc3Npb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi9ieWxhd3MuaHRtbCI+UHJvamVjdCBCeWxhd3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi9sZWdhbC5odG1sIj5MZWdhbDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgPC9kaXY+CiAgICA8aW1nIHN0eWxlPSJmbG9hdDogbGVmdCIgaGVpZ2h0PSIxMCIgd2lkdGg9IjEwIiBib3JkZXI9IjAiIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL21lbnUtbGVmdC5naWYiPgogICAgPGltZyBzdHlsZT0iZmxvYXQ6IHJpZ2h0IiBoZWlnaHQ9IjEwIiB3aWR0aD0iMTAiIGJvcmRlcj0iMCIgYWx0PSIiIHNyYz0iLi9pbWFnZXMvbWVudS1yaWdodC5naWYiPgogIDwvZGl2PiAgCiAgICAgIDxkaXYgY2xhc3M9ImxpZ2h0Ymx1ZWJhciI+Jm5ic3A7PC9kaXY+CiAgPGRpdiBjbGFzcz0ibWFpbiI+CiAgPGRpdiBjbGFzcz0iY29udGVudCI+CiAgICA8aDEgY2xhc3M9InRpdGxlIj5IYXZpbmcgUHJvYmxlbXM/PC9oMT4KICAgICAgICAgICAgPGgzIGNsYXNzPSJzZWN0aW9uIj4KICAgICAgPGEgbmFtZT0iSGF2aW5nIFByb2JsZW1zPyI+PC9hPgogICAgICBIYXZpbmcgUHJvYmxlbXM/CiAgICA8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICBUaGlzIHBhZ2UgZGV0YWlscyBzb21lIHN0ZXBzIHlvdSBjYW4gdGFrZSB0byB0cnkgYW5kIHJlc29sdmUKICAgICAgICAgICBhbnkgcHJvYmxlbXMgeW91IG1heSBiZSBoYXZpbmcgd2l0aCBBbnQuIElmIHlvdSBmaW5kIHlvdSBjYW4ndAogICAgICAgICAgIHJlc29sdmUgdGhlIHByb2JsZW0sIHRoZW4gdGhpcyBwYWdlIHdpbGwgaGVscCB5b3UgY29sbGVjdCBzb21lIG9mCiAgICAgICAgICAgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIHRvIHByb3ZpZGUgaW4gYSBidWcgcmVwb3J0LiBUaGlzIGluZm9ybWF0aW9uCiAgICAgICAgICAgd2lsbCBoZWxwIHRoZSBBbnQgZGV2ZWxvcGVycyB1bmRlcnN0YW5kIGFuZCByZXNvbHZlIHRoZSBwcm9ibGVtLgogICAgICAgICAgIE9mIGNvdXJzZSwgbm90IGFsbCB0aGUgc3RlcHMgaGVyZSB3aWxsIG1ha2Ugc2Vuc2UgZm9yIGV2ZXJ5IHByb2JsZW0KICAgICAgICAgICB5b3UgbWF5IGVuY291bnRlciAtIHRoZXNlIGFyZSBqdXN0IHNvbWUgc3VnZ2VzdGlvbnMgdG8gcG9pbnQKICAgICAgICAgICB5b3UgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJzdWJzZWN0aW9uIj4KICAgICAgICA8YSBuYW1lPSJSZWFkIHRoZSBNYW51YWwiPjwvYT4KICAgICAgICBSZWFkIHRoZSBNYW51YWwKICAgICAgPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIFRoZSBmaXJzdCBzdGVwIHRvIHRha2Ugd2hlbiB5b3UgaGF2ZSBhIHByb2JsZW0gd2l0aCBBbnQgaXMgdG8gcmVhZAogICAgICAgICAgICB0aGUgPGEgaHJlZj0ibWFudWFsL2luZGV4Lmh0bWwiPm1hbnVhbDwvYT4gZW50cnkgZm9yIHRoZSB0YXNrIG9yCiAgICAgICAgICAgIGNvbmNlcHQgdGhhdCBpcyBnaXZpbmcgeW91IHRyb3VibGUuIEluIHBhcnRpY3VsYXIsIGNoZWNrIHRoZQogICAgICAgICAgICBtZWFuaW5nIG9mIGEgdGFzaydzIGF0dHJpYnV0ZXMgYW5kIG5lc3RlZCBlbGVtZW50cy4gUGVyaGFwcyBhbgogICAgICAgICAgICBhdHRyaWJ1dGUgaXMgYXZhaWxhYmxlIHRoYXQgd291bGQgcHJvdmlkZSB0aGUgYmVoYXZpb3IgeW91IHJlcXVpcmUuCiAgICAgICAgICAgIElmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIG1hbnVhbCBpdHNlbGYsIHlvdSBjYW4gc3VibWl0IGEKICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBidWcgcmVwb3J0IChzZWUgYmVsb3cpIHRvIGhlbHAgdXMgaW1wcm92ZSB0aGUgQW50CiAgICAgICAgICAgIGRvY3VtZW50YXRpb24uCiAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ic3Vic2VjdGlvbiI+CiAgICAgICAgPGEgbmFtZT0iRXhhbWluZSBEZWJ1ZyBPdXRwdXQiPjwvYT4KICAgICAgICBFeGFtaW5lIERlYnVnIE91dHB1dAogICAgICA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW91J3JlIHN0aWxsIGhhdmluZyBhIHByb2JsZW0sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gdHJ5IGFuZAogICAgICAgICAgICBnYXRoZXIgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IEFudCBpcyBkb2luZy4KICAgICAgICAgICAgVHJ5IHJ1bm5pbmcgQW50IHdpdGggdGhlIDxjb2RlPnZlcmJvc2U8L2NvZGU+IGZsYWc6CiAgICAgICAgICAgIDxiciAvPjxiciAvPgogICAgICAgICAgICA8Zm9udCBmYWNlPSJ2ZXJkYW5hIiBzaXplPSItMSI+YW50IC12ZXJib3NlPC9mb250PgogICAgICAgICAgICA8YnIgLz48YnIgLz4KICAgICAgICAgICAgb3IKICAgICAgICAgICAgPGJyIC8+PGJyIC8+CiAgICAgICAgICAgIDxmb250IGZhY2U9InZlcmRhbmEiIHNpemU9Ii0xIj5hbnQgLXY8L2ZvbnQ+CiAgICAgICAgICAgIDxiciAvPjxiciAvPgogICAgICAgICAgIAogICAgICAgICAgICBUaGlzIHdpbGwgcHJvZHVjZSBvdXRwdXQgdGhhdCBzdGFydHMgbGlrZSB0aGUgZm9sbG93aW5nOjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkZvcnJlc3RUYWJsZSIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSI0Ij4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMSIgcm93c3Bhbj0iMSIKICAgICAgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4KICAgICAgICAgIApBbnQgdmVyc2lvbiAxLjQuMSBjb21waWxlZCBvbiBPY3RvYmVyIDExIDIwMDE8YnIgLz4KQnVpbGRmaWxlOiBidWlsZC54bWw8YnIgLz4KRGV0ZWN0ZWQgSmF2YSB2ZXJzaW9uOiAxLjMgaW46IEQ6XHVzclxsb2NhbFxqYXZhXGpkazEzXGpyZTxiciAvPgpEZXRlY3RlZCBPUzogV2luZG93cyBOVDxiciAvPgpwYXJzaW5nIGJ1aWxkZmlsZSBEOlxhbnRcYnVpbGQueG1sCndpdGggVVJJID0gZmlsZTpEOi9hbnQvYnVpbGQueG1sPGJyIC8+ClByb2plY3QgYmFzZSBkaXIgc2V0IHRvOiBEOlxhbnQ8YnIgLz4KoKBbcHJvcGVydHldIExvYWRpbmcgRW52aXJvbm1lbnQgZW52LjxiciAvPgqgoFtwcm9wZXJ0eV0gTG9hZGluZyBEOlxhbnRcY29uZi5wcm9wZXJ0aWVzPGJyIC8+CkJ1aWxkIHNlcXVlbmNlIGZvciB0YXJnZXQgJ2RlYnVnJyBpcyBbZGVidWddPGJyIC8+CkNvbXBsZXRlIGJ1aWxkIHNlcXVlbmNlIGlzIFtkZWJ1ZywgZ2Vuc3JjLCBjb21waWxlLCBqYXIsIHRlc3RdPGJyIC8+Ci4gLiAuPGJyIC8+CgogICAgICA8L3RkPgogICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSBmcm9tIHRoZSB0cmFjZSBtb3JlIGFib3V0IHdoYXQgQW50CiAgICAgICAgICAgICAgaXMgZG9pbmcgYW5kIHdoeSBpdCdzIHRha2luZyBhIHBhcnRpY3VsYXIgY291cnNlIG9mIGFjdGlvbi4KICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBldmVuIG1vcmUgaW5mb3JtYXRpb24sIHlvdSBjYW4gdXNlIHRoZQogICAgICAgICAgICAgIDxjb2RlPi1kZWJ1ZzwvY29kZT4gZmxhZyByYXRoZXIgdGhhbgogICAgICAgICAgICAgIDxjb2RlPi12ZXJib3NlPC9jb2RlPi4KICAgICAgICAgICAgICBUaGlzIHdpbGwgZ2VuZXJhbGx5IHByb2R1Y2Ugc28gbXVjaAogICAgICAgICAgICAgIG91dHB1dCB0aGF0IHlvdSBtYXkgd2FudCB0byBzYXZlIHRoZSBvdXRwdXQgdG8gYSBmaWxlIGFuZAogICAgICAgICAgICAgIGFuYWx5emUgaXQgaW4gYW4gZWRpdG9yLiBZb3UgY2FuIHNhdmUgdGhlIG91dHB1dCB1c2luZyB0aGUKICAgICAgICAgICAgICA8Y29kZT4tbG9nZmlsZSAmbHQ7ZmlsZW5hbWUmZ3Q7PC9jb2RlPiBmbGFnLCBvcgogICAgICAgICAgICAgIHVzaW5nIHJlZGlyZWN0aW9uLgogICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGFsbCB0aGlzIGRlYnVnIGluZm9ybWF0aW9uLCBob3cgY2FuIHlvdSB1c2UgaXQKICAgICAgICAgICAgICB0byBzb2x2ZSB5b3VyIHByb2JsZW0/ICBUaGF0IHdpbGwgZGVwZW5kIG9uIHRoZSB0YXNrIGluIHF1ZXN0aW9uCiAgICAgICAgICAgICAgYW5kIHRoZSBuYXR1cmUgb2YgeW91ciBwcm9ibGVtLiBFYWNoIHRhc2sgbG9ncyBkaWZmZXJlbnQgYXNwZWN0cwogICAgICAgICAgICAgIG9mIGl0cyBvcGVyYXRpb24sIGJ1dCBpdCBzaG91bGQgZ2l2ZSB5b3UgYW4gaWRlYSBvZiB3aGF0IGlzIGdvaW5nCiAgICAgICAgICAgICAgb24uIEZvciBleGFtcGxlLCB0aGUgPGNvZGU+Jmx0O2phdmFjJmd0OzwvY29kZT4gdGFzayBsb2dzIHRoZQogICAgICAgICAgICAgIHJlYXNvbnMgd2h5IGl0CiAgICAgICAgICAgICAgY2hvb3NlcyB0byBjb21waWxlIHBhcnRpY3VsYXIgY2xhc3MgZmlsZXMgYW5kIG5vdCBvdGhlcnMsIGFsb25nCiAgICAgICAgICAgICAgd2l0aCB3aGljaCBjb21waWxlciBpdCBpcyB1c2luZyBhbmQgdGhlIGFyZ3VtZW50cyBpdCB3aWxsIHBhc3MKICAgICAgICAgICAgICB0byB0aGF0IGNvbXBpbGVyLiBUaGUgZm9sbG93aW5nIHBhcnRpYWwgdHJhY2Ugc2hvd3Mgd2h5CiAgICAgICAgICAgICAgPGNvZGU+Jmx0O2phdmFjJmd0OzwvY29kZT4gaXMgYWRkaW5nIG9uZSBjbGFzcyBmaWxlIGJ1dAogICAgICAgICAgICAgIHNraXBwaW5nIGFub3RoZXIuCiAgICAgICAgICAgICAgVGhpcyBpcyBmb2xsb3dlZCBieSB3aGljaCBjb21waWxlciBpdCB3aWxsIGJlIHVzaW5nLCB0aGUKICAgICAgICAgICAgICBhcmd1bWVudHMgdGhhdCB3aWxsIGdldCBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyLAogICAgICAgICAgICAgIGFuZCBhIGxpc3Qgb2YgYWxsIHRoZSBjbGFzcyBmaWxlcyB0byBiZSBjb21waWxlZC4gCiAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRm9ycmVzdFRhYmxlIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjQiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIxIiByb3dzcGFuPSIxIgogICAgICB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPgogICAgICAgICAgCltqYXZhY10gVGVzdC5qYXZhIG9taXR0ZWQgYXMgRDpcY2xhc3Nlc1xUZXN0LmNsYXNzIGlzIHVwIHRvIGRhdGUuPGJyIC8+CltqYXZhY10gVW5zZXQuamF2YSBhZGRlZCBhcyBEOlxjbGFzc2VzXFVuc2V0LmNsYXNzIGlzIG91dGRhdGVkLjxiciAvPgpbamF2YWNdIENvbXBpbGluZyAxIHNvdXJjZSBmaWxlIHRvIEQ6XGNsYXNzZXM8YnIgLz4KW2phdmFjXSBVc2luZyBjbGFzc2ljIGNvbXBpbGVyPGJyIC8+CltqYXZhY10gQ29tcGlsYXRpb24gYXJnczogLWQgRDpcY2xhc3NlcyAtY2xhc3NwYXRoIEQ6XGNsYXNzZXM7PGJyIC8+CkQ6XGpkazExOFxjbGFzc2VzLnppcDsgLXNvdXJjZXBhdGggRDpcc3JjXGphdmEgLWc6bm9uZTxiciAvPgpbamF2YWNdIEZpbGUgdG8gYmUgY29tcGlsZWQ6PGJyIC8+CkQ6XHNyY1xqYXZhXFVuc2V0LmphdmE8YnIgLz4KCiAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJbiBtYW55IGNhc2VzLCBBbnQgdGFza3MgYXJlIHdyYXBwZXJzIGFyb3VuZCBPUyBjb21tYW5kcyBvcgogICAgICAgICAgICAgIG90aGVyIEphdmEgY2xhc3Nlcy4gSW4gZGVidWcgbW9kZSwgbWFueSBvZiB0aGVzZSB0YXNrcyB3aWxsCiAgICAgICAgICAgICAgcHJpbnQgb3V0IHRoZSBlcXVpdmFsZW50IGNvbW1hbmQgbGluZSwgYXMgdGhlCiAgICAgICAgICAgICAgPGNvZGU+Jmx0O2phdmFjJmd0OzwvY29kZT4gdGFzawogICAgICAgICAgICAgIG91dHB1dCBkb2VzLiBJZiB5b3UgYXJlIGhhdmluZyBhIHByb2JsZW0sIGl0IGlzIG9mdGVuIHVzZWZ1bCB0bwogICAgICAgICAgICAgIHJ1biB0aGUgY29tbWFuZCBkaXJlY3RseSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGluIHRoZSBzYW1lIHdheQogICAgICAgICAgICAgIEFudCBpcyBydW5uaW5nIGl0LCBhbmQgc2VlIGlmIHRoZSBwcm9ibGVtIG9jY3VycyBmcm9tIHRoZXJlCiAgICAgICAgICAgICAgYXMgd2VsbC4gVGhlIHByb2JsZW0gbWF5IGJlIGluIHRoZSBjb21tYW5kIHRoYXQgaXMgYmVpbmcgcnVuLAogICAgICAgICAgICAgIG9yIGl0IG1heSBiZSBpbiB0aGUgd2F5IHRoZSBBbnQgdGFzayBpcyBydW5uaW5nIHRoZSBjb21tYW5kLgogICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlIGVmZmVjdCBvZiBjaGFuZ2luZyBhdHRyaWJ1dGUgdmFsdWVzIG9uIHRoZQogICAgICAgICAgICAgIGdlbmVyYXRlZCBjb21tYW5kIGxpbmUuIFRoaXMgY2FuIGhlbHAgeW91IHRvIHVuZGVyc3RhbmQgd2hldGhlcgogICAgICAgICAgICAgIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QgYXR0cmlidXRlcyBhbmQgdmFsdWVzLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InN1YnNlY3Rpb24iPgogICAgICAgIDxhIG5hbWU9IkhhcyBJdCBCZWVuIEZpeGVkPyI+PC9hPgogICAgICAgIEhhcyBJdCBCZWVuIEZpeGVkPwogICAgICA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgQWZ0ZXIgZXhhbWluaW5nIHRoZSBkZWJ1ZyBvdXRwdXQsIGlmIHlvdSBzdGlsbCBiZWxpZXZlIHRoYXQgdGhlCiAgICAgICAgICAgIHByb2JsZW0geW91IGFyZSBoYXZpbmcgaXMgY2F1c2VkIGJ5IEFudCwgY2hhbmNlcyBhcmUgdGhhdCBzb21lb25lCiAgICAgICAgICAgIGVsc2UgbWF5IGhhdmUgYWxyZWFkeSBlbmNvdW50ZXJlZCB0aGlzIHByb2JsZW0sIGFuZCBwZXJoYXBzIGl0IGhhcwogICAgICAgICAgICBiZWVuIGZpeGVkLiBUaGUgbmV4dCBzdGVwLCB0aGVyZWZvcmUsIG1heSBiZSB0byB0cnkgYSBuaWdodGx5IGJ1aWxkCiAgICAgICAgICAgIG9mIEFudCB0byBzZWUgaWYgdGhlIHByb2JsZW0gaGFzIGJlZW4gZml4ZWQuIE5pZ2h0bHkgYnVpbGRzIGZvciBBbnQKICAgICAgICAgICAgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSAKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2N2cy5hcGFjaGUub3JnL2J1aWxkcy9hbnQvbmlnaHRseS8iPgogICAgICAgICAgICBBbnQgd2ViIHNpdGU8L2E+LiBXaGlsZSBBbnQgbmlnaHRseSBidWlsZHMgYXJlIHR5cGljYWxseSBxdWl0ZQogICAgICAgICAgICBzdGFibGUgYW5kIGFyZSB1c2VkIGJ5CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jdnMuYXBhY2hlLm9yZy9idWlsZHMvZ3VtcC9sYXRlc3QvIj5HdW1wPC9hPgogICAgICAgICAgICB0byBidWlsZCBtYW55IG90aGVyIEpha2FydGEgcHJvamVjdHMsIHRoZXNlIGJ1aWxkcyBzaG91bGQKICAgICAgICAgICAgbm9uZXRoZWxlc3MgYmUgdHJlYXRlZCBhcyBleHBlcmltZW50YWwuIE5vdGUgdGhhdCBuaWdodGx5IGJ1aWxkcwogICAgICAgICAgICBkbyBub3QgYnVpbGQgbWFueSBvZiB0aGUgb3B0aW9uYWwgdGFza3MgdGhlIGNvbWUgd2l0aCBBbnQuCiAgICAgICAgICAgIEEgc25hcHNob3Qgb2YgdGhlc2Ugb3B0aW9uYWwgdGFza3MgaXMgb2NjYXNpb25hbGx5IHVwbG9hZGVkIHRvCiAgICAgICAgICAgIHRoZSBuaWdodGx5IGRvd25sb2FkCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9jdnMuYXBhY2hlLm9yZy9idWlsZHMvYW50L25pZ2h0bHkvb3B0aW9uYWwvIj4KICAgICAgICAgICAgYXJlYTwvYT4uIEhvd2V2ZXIsIGV2ZW4gdGhpcyBzbmFwc2hvdCBkb2VzIG5vdCBjb250YWluIGV2ZXJ5CiAgICAgICAgICAgIG9wdGlvbmFsIHRhc2suCiAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJzdWJzZWN0aW9uIj4KICAgICAgICA8YSBuYW1lPSJIYXMgSXQgQmVlbiBSZXBvcnRlZD8iPjwvYT4KICAgICAgICBIYXMgSXQgQmVlbiBSZXBvcnRlZD8KICAgICAgPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIElmIHRoZSBjdXJyZW50IG5pZ2h0bHkgYnVpbGQgZG9lc24ndCByZXNvbHZlIHlvdXIgcHJvYmxlbSwgaXQgaXMKICAgICAgICAgICAgcG9zc2libGUgdGhhdCBzb21lb25lIGVsc2UgaGFzIHJlcG9ydGVkIHRoZSBpc3N1ZS4gSXQgaXMgdGltZSB0bwogICAgICAgICAgICBsb29rIGF0IHRoZSA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvYnVnemlsbGEvIj4KICAgICAgICAgICAgQXBhY2hlIEJ1ZyBEYXRhYmFzZTwvYT4uICBUaGlzIHN5c3RlbSBpcyBlYXN5IHRvIHVzZSwgYW5kIGl0IHdpbGwKICAgICAgICAgICAgbGV0IHlvdSBzZWFyY2ggdGhlIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9idWd6aWxsYS9idWdsaXN0LmNnaT9idWdfc3RhdHVzPVVOQ09ORklSTUVEJmFtcDtidWdfc3RhdHVzPU5FVyZhbXA7YnVnX3N0YXR1cz1BU1NJR05FRCZhbXA7YnVnX3N0YXR1cz1SRU9QRU5FRCZhbXA7ZW1haWwxPSZhbXA7ZW1haWx0eXBlMT1zdWJzdHJpbmcmYW1wO2VtYWlsYXNzaWduZWRfdG8xPTEmYW1wO2VtYWlsMj0mYW1wO2VtYWlsdHlwZTI9c3Vic3RyaW5nJmFtcDtlbWFpbHJlcG9ydGVyMj0xJmFtcDtidWdpZHR5cGU9aW5jbHVkZSZhbXA7YnVnX2lkPSZhbXA7Y2hhbmdlZGluPSZhbXA7dm90ZXM9JmFtcDtjaGZpZWxkZnJvbT0mYW1wO2NoZmllbGR0bz1Ob3cmYW1wO2NoZmllbGR2YWx1ZT0mYW1wO3Byb2R1Y3Q9QW50JmFtcDtzaG9ydF9kZXNjPSZhbXA7c2hvcnRfZGVzY190eXBlPXN1YnN0cmluZyZhbXA7bG9uZ19kZXNjPSZhbXA7bG9uZ19kZXNjX3R5cGU9c3Vic3RyaW5nJmFtcDtidWdfZmlsZV9sb2M9JmFtcDtidWdfZmlsZV9sb2NfdHlwZT1zdWJzdHJpbmcmYW1wO2tleXdvcmRzPSZhbXA7a2V5d29yZHNfdHlwZT1hbnl3b3JkcyZhbXA7ZmllbGQwLTAtMD1ub29wJmFtcDt0eXBlMC0wLTA9bm9vcCZhbXA7dmFsdWUwLTAtMD0mYW1wO29yZGVyPWJ1Z3MuYnVnX2lkIj4KICAgICAgICAgICAgY3VycmVudGx5IG9wZW48L2E+IGFuZCByZXNvbHZlZCBidWdzIHRvIHNlZSBpZiB5b3VyIHByb2JsZW0gaGFzCiAgICAgICAgICAgIGFscmVhZHkgYmVlbiByZXBvcnRlZC4gSWYgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHJlcG9ydGVkLCB5b3UgY2FuCiAgICAgICAgICAgIHNlZSB3aGV0aGVyIGFueSBvZiB0aGUgZGV2ZWxvcGVycyBoYXZlIGNvbW1lbnRlZCwgc3VnZ2VzdGluZwogICAgICAgICAgICB3b3JrYXJvdW5kcywgb3IgdGhlIHJlYXNvbiBmb3IgdGhlIGJ1ZywgZXRjLiBPciB5b3UgbWF5IGhhdmUKICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gYWRkIChzZWUgYWJvdXQgY3JlYXRpbmcgYW5kIG1vZGlmeWluZyBidWcgcmVwb3J0cwogICAgICAgICAgICBiZWxvdyksIGluIHdoaWNoIGNhc2UsIGdvIHJpZ2h0IGFoZWFkIGFuZCBhZGQgdGhlIGluZm9ybWF0aW9uLgogICAgICAgICAgICBJZiB5b3UgZG9uJ3QgaGF2ZSBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgeW91IG1heSBqdXN0IHdhbnQKICAgICAgICAgICAgdG8gdm90ZSBmb3IgdGhpcyBidWcsIGFuZCBwZXJoYXBzCiAgICAgICAgICAgIGFkZCB5b3Vyc2VsZiB0byB0aGUgPGNvZGU+Q0M8L2NvZGU+IGxpc3QgdG8gZm9sbG93IHRoZSBwcm9ncmVzcwogICAgICAgICAgICBvZiB0aGlzIGJ1Zy4KICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJzdWJzZWN0aW9uIj4KICAgICAgICA8YSBuYW1lPSJGaWxpbmcgYSBCdWcgUmVwb3J0Ij48L2E+CiAgICAgICAgRmlsaW5nIGEgQnVnIFJlcG9ydAogICAgICA8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgQnkgdGhpcyB0aW1lLCB5b3UgbWF5IGhhdmUgZGVjaWRlZCB0aGF0IHRoZXJlIGlzIGFuIHVucmVwb3J0ZWQKICAgICAgICAgICAgYnVnIGluIEFudC4gWW91IGhhdmUgYSBmZXcgY2hvaWNlcyBhdCB0aGlzIHBvaW50LiBZb3UgY2FuIHNlbmQKICAgICAgICAgICAgYW4gZW1haWwgdG8gdGhlIDxjb2RlPnVzZXI8L2NvZGU+IG1haWxpbmcgbGlzdAogICAgICAgICAgICB0byBzZWUgaWYKICAgICAgICAgICAgb3RoZXJzIGhhdmUgZW5jb3VudGVyZWQgeW91ciBpc3N1ZSBhbmQgZmluZCBvdXQgaG93IHRoZXkgbWF5CiAgICAgICAgICAgIGhhdmUgd29ya2VkIGFyb3VuZCBpdC4gSWYgYWZ0ZXIgc29tZSBkaXNjdXNzaW9uLCB5b3UgZmVlbCBpdAogICAgICAgICAgICBpcyB0aW1lIHRvIGNyZWF0ZQogICAgICAgICAgICBhIGJ1ZyByZXBvcnQsIHRoaXMgaXMgYSBzaW1wbGUgb3BlcmF0aW9uIGluIHRoZSBidWcgZGF0YWJhc2UuCiAgICAgICAgICAgIFBsZWFzZSB0cnkgdG8gcHJvdmlkZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIGluIG9yZGVyCiAgICAgICAgICAgIHRvIGFzc2lzdCB0aGUgZGV2ZWxvcGVycyBpbiByZXNvbHZpbmcgdGhlIGJ1Zy4gUGxlYXNlIHRyeSB0byBlbnRlcgogICAgICAgICAgICBjb3JyZWN0IHZhbHVlcyBmb3IgdGhlIHZhcmlvdXMgaW5wdXRzIHdoZW4gY3JlYXRpbmcgdGhlIGJ1Zywgc3VjaAogICAgICAgICAgICBhcyB3aGljaCB2ZXJzaW9uIG9mIEFudCB5b3UgYXJlIHJ1bm5pbmcsIGFuZCBvbiB3aGljaCBwbGF0Zm9ybSwKICAgICAgICAgICAgZXRjLiBPbmNlIHRoZSBidWcgaXMgY3JlYXRlZCwgeW91IGNhbiBhbHNvIGFkZCBhdHRhY2htZW50cyB0bwogICAgICAgICAgICB0aGUgYnVnIHJlcG9ydC4gCiAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4gCiAgICAgICAgICAgIFdoYXQgaW5mb3JtYXRpb24gc2hvdWxkIHlvdSBpbmNsdWRlIGluIHlvdXIgYnVnIHJlcG9ydD8gVGhlCiAgICAgICAgICAgIGVhc2llc3QgYnVncyB0byBmaXggYXJlIHRob3NlIHRoYXQgYXJlIG1vc3QgZWFzaWx5IHJlcHJvZHVjaWJsZSwKICAgICAgICAgICAgc28gaXQgaXMgcmVhbGx5IGhlbHBmdWwgaWYgeW91IGNhbiBwcm9kdWNlIGEgc21hbGwgdGVzdCBjYXNlIHRoYXQKICAgICAgICAgICAgZXhoaWJpdHMgdGhlIHByb2JsZW0uIEluIHRoaXMgY2FzZSwgeW91IHdvdWxkIGF0dGFjaCB0aGUgYnVpbGQgZmlsZQogICAgICAgICAgICBhbmQgYW55IG90aGVyIGZpbGVzIG5lY2Vzc2FyeSB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0sIHByb2JhYmx5CiAgICAgICAgICAgIHBhY2tlZCB0b2dldGhlciBpbiBhbiBhcmNoaXZlLiBJZiB5b3UgY2FuJ3QgcHJvZHVjZSBhIHRlc3QgY2FzZSwKICAgICAgICAgICAgeW91IHNob3VsZCB0cnkgdG8gaW5jbHVkZSBhIHNuaXBwZXQgZnJvbSB5b3VyIGJ1aWxkIGZpbGUgYW5kIHRoZQogICAgICAgICAgICByZWxldmFudCBzZWN0aW9ucyBmcm9tIHRoZSB2ZXJib3NlIG9yIGRlYnVnIG91dHB1dCBmcm9tIEFudC4gVHJ5CiAgICAgICAgICAgIHRvIGluY2x1ZGUgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiB3aGVyZSBBbnQgc3RhdGVzIHRoZSB2ZXJzaW9uLAogICAgICAgICAgICB0aGUgT1MgYW5kIFZNIGluZm9ybWF0aW9uLCBldGMuIEFzIGRlYnVnIG91dHB1dCBpcyBsaWtlbHkgdG8gYmUKICAgICAgICAgICAgdmVyeSBsYXJnZSwgaXQncyBiZXN0IHRvIHJlbW92ZSBhbnkgb3V0cHV0IHRoYXQgaXMgbm90CiAgICAgICAgICAgIHJlbGV2YW50LiBPbmNlIHRoZSBidWcgaXMgZW50ZXJlZCBpbnRvIHRoZSBidWcgZGF0YWJhc2UsIHlvdQogICAgICAgICAgICB3aWxsIGJlIGtlcHQgaW5mb3JtZWQgYnkgZW1haWwgYWJvdXQgcHJvZ3Jlc3Mgb24gdGhlIGJ1Zy4gSWYKICAgICAgICAgICAgeW91IHJlY2VpdmUgZW1haWwgYXNraW5nIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgdHJ5IHRvCiAgICAgICAgICAgIHJlc3BvbmQsIGFzIGl0IHdpbGwgYWlkIGluIHRoZSByZXNvbHV0aW9uIG9mIHlvdXIgYnVnLgogICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InN1YnNlY3Rpb24iPgogICAgICAgIDxhIG5hbWU9IkFza2luZyBmb3IgYW4gRW5oYW5jZW1lbnQiPjwvYT4KICAgICAgICBBc2tpbmcgZm9yIGFuIEVuaGFuY2VtZW50CiAgICAgIDwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICBTb21ldGltZXMsIHlvdSBtYXkgZmluZCB0aGF0IEFudCBqdXN0IGRvZXNuJ3QgZG8gd2hhdCB5b3UgbmVlZCBpdAogICAgICAgICAgICB0by4gSXQgaXNuJ3QgYSBidWcsIGFzIHN1Y2gsIHNpbmNlIEFudCBpcyB3b3JraW5nIHRoZSB3YXkgaXQgaXMKICAgICAgICAgICAgc3VwcG9zZWQgdG8gd29yay4gUGVyaGFwcyBpdCBpcyBzb21lIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSBmb3IKICAgICAgICAgICAgYSB0YXNrIHRoYXQgaGFzbid0IGJlZW4gdGhvdWdodCBvZiB5ZXQsIG9yIG1heWJlIGEgY29tcGxldGVseSBuZXcKICAgICAgICAgICAgdGFzay4gRm9yIHRoZXNlIHNpdHVhdGlvbnMsIHlvdSB3aWxsCiAgICAgICAgICAgIHdhbnQgdG8gcmFpc2UgYW4gPGk+ZW5oYW5jZW1lbnQgcmVxdWVzdDwvaT4uIEVuaGFuY2VtZW50IHJlcXVlc3RzCiAgICAgICAgICAgIGFyZSBtYW5hZ2VkIHVzaW5nIHRoZSBzYW1lIEFwYWNoZSBCdWcgRGF0YWJhc2UgZGVzY3JpYmVkIGFib3ZlLgogICAgICAgICAgICBUaGVzZSBhcmUganVzdCBhIGRpZmZlcmVudCB0eXBlIG9mIGJ1ZyByZXBvcnQuIElmIHlvdSBsb29rIGluIHRoZQogICAgICAgICAgICBidWcgZGF0YWJhc2UsIHlvdSB3aWxsIHNlZSB0aGF0IG9uZSBvZiB0aGUgc2V2ZXJpdHkgc2V0dGluZ3MgZm9yCiAgICAgICAgICAgIGEgYnVnIGlzICJFbmhhbmNlbWVudCIuIEp1c3QgZmlsbCB0aGUgYnVnIHJlcG9ydCBpbiwKICAgICAgICAgICAgc2V0IHRoZSBzZXZlcml0eSBvZiB0aGUgYnVnIHRvICJFbmhhbmNlbWVudCIsIGFuZCAKICAgICAgICAgICAgc3RhdGUgaW4gdGhlIGRlc2NyaXB0aW9uIGhvdyB5b3Ugd291bGQgbGlrZSB0byBoYXZlIEFudCBlbmhhbmNlZC4KICAgICAgICAgICAgQWdhaW4sIHlvdSBzaG91bGQgZmlyc3QgY2hlY2sgd2hldGhlciB0aGVyZSBhcmUgYW55IGV4aXN0aW5nCiAgICAgICAgICAgIGVuaGFuY21lbnQgcmVxdWVzdHMgdGhhdCBjb3ZlciB5b3VyIG5lZWRzLiBJZiBzbywganVzdCBhZGQgeW91cgogICAgICAgICAgICB2b3RlIHRvIHRoZXNlLgogICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InN1YnNlY3Rpb24iPgogICAgICAgIDxhIG5hbWU9IkZpeGluZyB0aGUgQnVnIj48L2E+CiAgICAgICAgRml4aW5nIHRoZSBCdWcKICAgICAgPC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIElmIHlvdSBhcmVuJ3Qgc2F0aXNmaWVkIHdpdGgganVzdCBmaWxpbmcgYSBidWcgcmVwb3J0LCB5b3UgY2FuCiAgICAgICAgICAgIHRyeSB0byBmaW5kIHRoZSBjYXVzZSBvZiB0aGUgcHJvYmxlbSBhbmQgcHJvdmlkZSBhIGZpeCB5b3Vyc2VsZi4KICAgICAgICAgICAgVGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgYnkgd29ya2luZyB3aXRoIHRoZSBsYXRlc3QgY29kZSBmcm9tIENWUy4KICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB3b3JrIHdpdGggdGhlIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSBmcm9tIHRoZQogICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYW50LmFwYWNoZS5vcmcvc3JjZG93bmxvYWQuY2dpIj4KICAgICAgICAgICAgc291cmNlIGRpc3RyaWJ1dGlvbnM8L2E+LiBJZiB5b3UKICAgICAgICAgICAgYXJlIGdvaW5nIHRvIHRhY2tsZSB0aGUgcHJvYmxlbSBhdCB0aGlzIGxldmVsLCB5b3UgbWF5IHdhbnQgdG8KICAgICAgICAgICAgZGlzY3VzcyBzb21lIGRldGFpbHMgZmlyc3Qgb24gdGhlIDxjb2RlPmRldjwvY29kZT4KICAgICAgICAgICAgbWFpbGluZyBsaXN0LiBPbmNlIHlvdSBoYXZlIGEgZml4IGZvciB0aGUgcHJvYmxlbSwgeW91IG1heSBzdWJtaXQKICAgICAgICAgICAgdGhlIGZpeCBhcyBhIDxpPnBhdGNoPC9pPiB0byBlaXRoZXIgdGhlCiAgICAgICAgICAgIDxjb2RlPmRldjwvY29kZT4gbWFpbGluZwogICAgICAgICAgICBsaXN0LCBvciBlbnRlciB0aGUgYnVnIGRhdGFiYXNlIGFzIGRlc2NyaWJlZCBhYm92ZSBhbmQgYXR0YWNoIHRoZQogICAgICAgICAgICBwYXRjaCB0byB0aGUgYnVnIHJlcG9ydC4gVXNpbmcgdGhlIGJ1ZyBkYXRhYmFzZSBoYXMgdGhlIGFkdmFudGFnZQogICAgICAgICAgICBvZiBiZWluZyBhYmxlIHRvIHRyYWNrIHRoZSBwcm9ncmVzcyBvZiB5b3VyIHBhdGNoLgogICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIElmIHlvdSBoYXZlIGEgcGF0Y2ggdG8gc3VibWl0IGFuZCBhcmUgc2VuZGluZyBpdCB0byB0aGUKICAgICAgICAgICAgPGNvZGU+ZGV2PC9jb2RlPiBtYWlsaW5nIGxpc3QsCiAgICAgICAgICAgIHByZWZpeCAiW1BBVENIXSIKICAgICAgICAgICAgdG8geW91ciBtZXNzYWdlIHN1YmplY3QuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxldmFudCBidWcgbnVtYmVycy4KICAgICAgICAgICAgUGF0Y2ggZmlsZXMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgPGNvZGU+LXU8L2NvZGU+CiAgICAgICAgICAgIG9wdGlvbiBvZiB0aGUKICAgICAgICAgICAgPGNvZGU+ZGlmZjwvY29kZT4gb3IgPGNvZGU+Y3ZzIGRpZmY8L2NvZGU+IGNvbW1hbmQuIEZvcgogICAgICAgICAgICBleGFtcGxlOjxiciAvPjxiciAvPgogICAgICAgICAgICA8Zm9udCBmYWNlPSJ2ZXJkYW5hIiBzaXplPSItMSI+CiAgICAgICAgICAgIGRpZmYgLXUgSmF2YWMuamF2YS5vcmlnIEphdmFjLmphdmEgJmd0OyBqYXZhYy5kaWZmczxiciAvPjxiciAvPgogICAgICAgICAgICA8L2ZvbnQ+CiAgICAgICAgICAgIG9yLCBpZiB5b3UgaGF2ZSBzb3VyY2UgZnJvbSBDVlM6PGJyIC8+PGJyIC8+CiAgICAgICAgICAgIDxmb250IGZhY2U9InZlcmRhbmEiIHNpemU9Ii0xIj4KICAgICAgICAgICAgY3ZzIGRpZmYgLXUgSmF2YWMuamF2YSAmZ3Q7IGphdmFjLmRpZmZzPGJyIC8+PGJyIC8+CiAgICAgICAgICAgIDwvZm9udD4KICAgICAgICAgICAKICAgICAgICAgICBOb3RlOiBZb3Ugc2hvdWxkIGdpdmUgeW91ciBwYXRjaCBmaWxlcyBtZWFuaW5nZnVsIG5hbWVzLiAKICAgICAgICAgICBUaGlzIG1ha2VzIGl0IGVhc2llciBmb3IgZGV2ZWxvcGVycyB3aG8gbmVlZCB0byBhcHBseSBhIG51bWJlcgogICAgICAgICAgIG9mIGRpZmZlcmVudCBwYXRjaCBmaWxlcy4KICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgPC9kaXY+CiAgPC9kaXY+CgogICAgICAgIDxwIGNsYXNzPSJjb3B5cmlnaHQiPgogICAgICAgIENvcHlyaWdodCAmY29weTsgMjAwMC0yMDA0Jm5ic3A7VGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+PCEtLQogICAgICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIiAtICIrIkxhc3QgUHVibGlzaGVkOiAiICsgZG9jdW1lbnQubGFzdE1vZGlmaWVkKTsKICAgICAgICAgICAgICAvLyAgLS0+CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgIDwvcD4KICAgIDwvYm9keT4KICA8L2h0bWw+CgoKCgoKCgoKCg==