PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CjxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9UG93ZXJQb2ludC5TbGlkZT4KPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFBvd2VyUG9pbnQgMTAiPgo8bGluayBpZD1NYWluLUZpbGUgcmVsPU1haW4tRmlsZSBocmVmPSIuLi9NRFRfMS4wXyUyMFJlbGVhc2VfUmV2aWV3Lmh0bWwiPgo8bGluayByZWw9UHJldmlldyBocmVmPXByZXZpZXcud21mPgo8bWV0YSBuYW1lPVJvYm90cyBjb250ZW50PU5vSW5kZXg+CjxzY3JpcHQgc3JjPXNjcmlwdC5qcz48L3NjcmlwdD48c2NyaXB0PjwhLS0KaWYoICEoSXNXaW4oIlBQVE90bCIpfHxJc1dpbigiUFBUTmF2Iil8fElzV2luKCJQUFRPdGxOYXYiKSkgKQp7CglvYmogPSBHZXRPYmooIk1haW4tRmlsZSIpCglwYXJlbnQubG9jYXRpb24uaHJlZj1vYmouaHJlZgp9CnZhciBnT3RsSGlsaXRlQ2xyPSIjZmZmZmZmIixnT3RsTm9ybWFsQ2xyPSIjMDAwMDAwIixnT3RsQWN0aXZlQ2xyPSIjZmZmZjAwIixnU2VsZWN0ZWQ9IiIsZ1R4dFN0YXRlPWZhbHNlLGdDaGlsZEVudHJ5VGFibGU9bmV3IEFycmF5KCkKZnVuY3Rpb24gTG9hZCgpCnsKCWlmKCBJc1dpbigiUFBUT3RsIiApICl7IExvYWRPdGwoKTsgcGFyZW50LmdPdGxMb2FkZWQ9dHJ1ZTsgcmV0dXJuIH0KCWlmKCBnX3N1cHBvcnRzUFBUSFRNTCApIHsKCQlpZiggSXNXaW4oIlBQVE5hdiIgKSApeyBMb2FkTmF2KCJOYXZPYmoiLFVwZE5hdik7IHBhcmVudC5nTmF2TG9hZGVkPXRydWU7IHJldHVybiB9CgkJaWYoIElzV2luKCJQUFRPdGxOYXYiICkgKXsgTG9hZE5hdigiT3RsTmF2T2JqIixVcGRPdGxOYXYpOyBwYXJlbnQuZ090bE5hdkxvYWRlZD10cnVlOyByZXR1cm4gfQoJfQp9CmZ1bmN0aW9uIFVwZCgpeyBpZiggSXNXaW4oIlBQVE5hdiIpICkgTG9hZE5hdigiTmF2T2JqIixVcGROYXYpIH0KZnVuY3Rpb24gTG9hZE5hdiggb0lkLFVwZEZ1bmMgKQp7Cglkb2N1bWVudC5vbmRyYWdzdGFydD1DYW5jZWxEcmFnCglkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PUNhbmNlbERyYWcKCWRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luPTIKCVVwZEZ1bmMoKQoJb2JqPWRvY3VtZW50LmFsbC5pdGVtKG9JZCkKCW9iai5zdHlsZS5kaXNwbGF5PSJibG9jayIKCW9iai5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIgoJZG9jdW1lbnQuYmdDb2xvcj0idGhyZWVkZmFjZSIKCWlmKCBwYXJlbnQuZnJhbWVzWyJQUFROdHMiXSApCgkJbm90ZXNCdG4uc3R5bGUuZGlzcGxheSA9ICIiCglpZiggcGFyZW50LmdIYXNOYXJyYXRpb24gKQoJCW5iX3ZvaWNlQm9yZGVyLnN0eWxlLmRpc3BsYXkgPSAiIgp9CmZ1bmN0aW9uIExvYWRPdGwoKQp7Cgl2YXIgb3RsPUdldE9iaigiT3RsT2JqIikKCW90bC5zdHlsZS5kaXNwbGF5PSJibG9jayIKCW90bC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIgoJaWYoIGdPdGxBY3RpdmVDbHIgPT0gIiIgKSBnT3RsQWN0aXZlQ2xyPWRvY3VtZW50LmxpbmtDb2xvcgoJaWYoIGdPdGxIaWxpdGVDbHIgPT0gIiIgKSBnT3RsSGlsaXRlQ2xyPWRvY3VtZW50LmZnQ29sb3IKCWlmKCBnT3RsTm9ybWFsQ2xyID09ICIiICkKCQlnT3RsTm9ybWFsQ2xyPWRvY3VtZW50LmJnQ29sb3IKCWVsc2UKCQlkb2N1bWVudC5iZ0NvbG9yPWdPdGxOb3JtYWxDbHIKCUluaXRBcnJheSgpCglpZiggT2JqRXhpc3RzKCBwYXJlbnQuZ0N1clNsZCApICkgewoJCUNoYW5nZVN0YXRlKCBwYXJlbnQuZ0N1clNsZCxnT3RsTm9ybWFsQ2xyLGdPdGxIaWxpdGVDbHIgKQoJCWdTZWxlY3RlZD1wYXJlbnQuZ0N1clNsZAoJfQoJZWxzZSBnU2VsZWN0ZWQgPSAtMQoJVXBkT3RsKCkKfQpmdW5jdGlvbiBVcGRPdGwoKXsgVXBkSWR4KHBhcmVudC5nQ3VyU2xkKSB9CmZ1bmN0aW9uIFVwZElkeCggaWR4ICkKewoJaWYoIGdTZWxlY3RlZCAhPSBpZHggKSB7CgkJaWYoIGdTZWxlY3RlZCA+IDAgKQoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxIaWxpdGVDbHIsZ090bE5vcm1hbENsciApCgkJaWYoIE9iakV4aXN0cyggaWR4ICkgKSB7CgkJCWdTZWxlY3RlZCA9IGlkeAoJCQlDaGFuZ2VTdGF0ZSggZ1NlbGVjdGVkLGdPdGxOb3JtYWxDbHIsZ090bEhpbGl0ZUNsciApCgkJfQoJCWVsc2UgZ1NlbGVjdGVkID0gLTEKCX0KCWlmKCBnVHh0U3RhdGUgIT0gcGFyZW50LmdPdGxUeHRFeHAgKSB7CgkJc3RhdGUgPSAiYmxvY2siCgkJaWYoICFwYXJlbnQuZ090bFR4dEV4cCApCgkJCXN0YXRlPSJub25lIgoJCWZvcihpaT0wOyBpaTxnQ2hpbGRFbnRyeVRhYmxlLmxlbmd0aDsgaWkrKykgewoJCQlvYmo9Z0NoaWxkRW50cnlUYWJsZVtpaV07CgkJCWlmKCBvYmouaWQgPT0gbnVsbCApIGNvbnRpbnVlOwoJCQlpZiggb2JqLmlkLmluZGV4T2YoIlBQVEMiKSA+PSAwICkKCQkJCW9iai5zdHlsZS5kaXNwbGF5PXN0YXRlOwoJCX0KCQlnVHh0U3RhdGU9cGFyZW50LmdPdGxUeHRFeHAKCQlpZiggT2JqRXhpc3RzKCBnU2VsZWN0ZWQgKSApCgkJCUNoYW5nZVN0YXRlKCBnU2VsZWN0ZWQsZ090bE5vcm1hbENscixnT3RsSGlsaXRlQ2xyICkKCX0KfQpmdW5jdGlvbiBJbml0QXJyYXkoKQp7Cgljb3VudD0wCgl2YXIgbGlzdD1HZXRUYWdzKGRvY3VtZW50LCJESVYiKTsKCWZvcihpaT0wOyBpaTxsaXN0Lmxlbmd0aDsgaWkrKykgewoJCW9iaj1saXN0Lml0ZW0oaWkpCgkJaWYoIG9iai5pZCA9PSBudWxsICkgY29udGludWUKCQlpZiggb2JqLmlkLmluZGV4T2YoIlBQVEMiKSA+PSAwICkKCQkJZ0NoaWxkRW50cnlUYWJsZVtjb3VudCsrXT1vYmoKCX0KfQpmdW5jdGlvbiBDaGFuZ2VTdGF0ZSggaWR4LGZnQ29sb3IsYmdDb2xvciApCnsKCW9iaj1HZXRPYmooIlBQVEwiK2lkeCkKCW9iai5zdHlsZS5jb2xvcj1mZ0NvbG9yCglvYmo9R2V0T2JqKCJQUFRQIitpZHgpCglvYmouc3R5bGUuYmFja2dyb3VuZENvbG9yPWJnQ29sb3IKfQpmdW5jdGlvbiBDaGdDbHIoIG8sY2xyICl7IGlmKCBvLmlkICE9ICJQUFRMIitnU2VsZWN0ZWQgKSBvLnN0eWxlLmNvbG9yPWNsciB9CmZ1bmN0aW9uIE92ZXIoIHNyYyApeyBDaGdDbHIoR2V0TGluayhzcmMpLGdPdGxBY3RpdmVDbHIpIH0KZnVuY3Rpb24gT3V0KCBzcmMgKXsgQ2hnQ2xyKEdldExpbmsoc3JjKSxnT3RsSGlsaXRlQ2xyKSB9CmZ1bmN0aW9uIEZvbGxvdyhzcmMpeyB3aW5kb3cubG9jYXRpb24uaHJlZiA9IEdldExpbmsoc3JjKS5ocmVmOyB9CmZ1bmN0aW9uIE9iakV4aXN0cyggaWkgKSB7IG9iaj1HZXRPYmooIlBQVFAiK2lpICk7IHJldHVybiggb2JqICkgfQpmdW5jdGlvbiBHb1RvU2xkKCBocmVmICl7IFVwZElkeChwYXJlbnQuR2V0U2xkTnVtKGhyZWYpKTsgcGFyZW50LkdvVG9TbGQoIGhyZWYgKSB9CmZ1bmN0aW9uIENhbmNlbERyYWcoKXsgd2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZT10cnVlO3dpbmRvdy5ldmVudC5yZXR1cm5WYWx1ZT1mYWxzZX0KZnVuY3Rpb24gR2V0TGluayhzcmMpCnsKICAgaWYoc3JjLnRhZ05hbWU9PSJBIikgcmV0dXJuIHNyYwogICBlbHNlIHJldHVybiBHZXRUYWdzKHNyYywiQSIpLml0ZW0oMCkKfQpmdW5jdGlvbiBVcGROYXYoKQp7Cgl0eHQgPSAiPGNlbnRlcj4iOwoJaWYoIHBhcmVudC5HZXRIcmVmT2JqKCBwYXJlbnQuZ0N1clNsZCApLm1PcmlnVmlzID09IDEgKQoJCXR4dCArPSAiU2xpZGUgIiArIHBhcmVudC5HZXRDdXJTbGROdW0oKSArICIgb2YgIiArIHBhcmVudC5HZXROdW1TbGRzKCkKCWVsc2UKCQl0eHQgKz0gIkhpZGRlbiBTbGlkZSIKCXR4dCArPSAiPC9jZW50ZXI+IjsKCW5hdl90ZXh0LmlubmVySFRNTCA9IHR4dDsKCWlmKCAhcGFyZW50Lkhhc1ByZXZTbGQoKSApCgkJZ0J0bkFyclsibmJfcHJldiJdLkVuYWJsZWQoMCkKCWVsc2UKCQlnQnRuQXJyWyJuYl9wcmV2Il0uRW5hYmxlZCgxKQoJaWYoICFwYXJlbnQuSGFzTmV4dFNsZCgpICkKCQlnQnRuQXJyWyJuYl9uZXh0Il0uRW5hYmxlZCgwKQoJZWxzZQoJCWdCdG5BcnJbIm5iX25leHQiXS5FbmFibGVkKDEpCglnQnRuQXJyWyJuYl9udHMiXS5TZXRFbmFibGVkKCkKCWdCdG5BcnJbIm5iX250cyJdLlNldEZsYWcoIHBhcmVudC5nSGFzTnRzICkKCWdCdG5BcnJbIm5iX3NsZHNodyJdLkVuYWJsZWQoMSkKCWdCdG5BcnJbIm5iX3ZvaWNlIl0uRW5hYmxlZCgxKQp9CmZ1bmN0aW9uIFVwZE90bE5hdigpCnsKCWdCdG5BcnJbIm5iX290bCJdLlNldEVuYWJsZWQoKTsKCWlmKCBwYXJlbnQuZ090bE9wZW4gKQoJCWdCdG5BcnJbIm5iX290bFR4dCJdLkVuYWJsZWQoIHRydWUgKTsKCWVsc2UKCQlkb2N1bWVudC5hbGwuaXRlbSgibmJfb3RsVHh0Qm9yZGVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwp9CgovLy0tPjwvc2NyaXB0Pgo8c3R5bGU+CjwhLS0uUFR4dAoJe3Bvc2l0aW9uOnJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCW1hcmdpbi10b3A6NXB4OwoJcGFkZGluZy1sZWZ0OjJweDsKCWZvbnQtd2VpZ2h0OmJvbGQ7fQouQ1R4dAoJe3Bvc2l0aW9uOnJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCW1hcmdpbi10b3A6NXB4O30KYQoJe2NvbG9yOndoaXRlOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7fQp1bAoJe2NvbG9yOndoaXRlOwoJbWFyZ2luLWJvdHRvbTowcHg7CgltYXJnaW4tbGVmdDoyMHB4O30KLnNsZE51bQoJe21hcmdpbi10b3A6NXB4OwoJY29sb3I6d2hpdGU7fQouYnV0dG9uCgl7cG9zaXRpb246YWJzb2x1dGU7Cgl3aWR0aDozMnB4OwoJaGVpZ2h0OjIwcHg7Cglib3JkZXItc3R5bGU6c29saWQ7Cglib3JkZXItd2lkdGg6MXB4OwoJYm9yZGVyLWNvbG9yOnRocmVlZGZhY2U7fQotLT4KPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHkgb25sb2FkPSJMb2FkKCkiIHN0eWxlPSdtYXJnaW46MnB4Jz4KCjxkaXYgaWQ9TmF2T2JqIG9ubG9hZD0iTG9hZCgpIiBvbm1vdXNlb3Zlcj0iQnRuT25PdmVyKCkiCm9ubW91c2Vkb3duPSJCdG5PbkRvd24oKSIgb25tb3VzZW91dD0iQnRuT25PdXQoKSIgb25tb3VzZXVwPSJCdG5PblVwKCkiCm9ua2V5cHJlc3M9Il9LUEgoKSIgc3R5bGU9J2Rpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbic+Cjx0YWJsZSBpZD0ibm90ZXNCdG4iIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5Om5vbmU7d2lkdGg6NzBweCcgYWxpZ249bGVmdCBjZWxscGFkZGluZz0wCiBjZWxsc3BhY2luZz0wPgogPHRkIG5vd3JhcD4KIDxkaXYgaWQ9Im5iX250c0VsZW0iIGFsaWduPWNlbnRlciBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzozcHg7CiBmb250LWZhbWlseTpBcmlhbDtjb2xvcjpidXR0b250ZXh0O2ZvbnQtc2l6ZTo5cHQnPjxpbWcgc3JjPSJub3Rlc19mbGFnLmdpZiIKIGJvcmRlcj0wIGlkPSJub3Rlc19mbGFnIiBzdHlsZT0nZGlzcGxheTpub25lJz48c3BhbgpzdHlsZT0nbXNvLXNwYWNlcnVuOnllcyc+oCA8L3NwYW4+Tm90ZXM8L2Rpdj4KIDxkaXYgdGl0bGU9IlNob3cvSGlkZSBOb3RlcyIgaWQ9Im5iX250cyIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTsKIGxlZnQ6MCU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJSc+PC9kaXY+CiA8L3RkPgo8L3RhYmxlPgoKPHRhYmxlIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo3MHB4JyBhbGlnbj1yaWdodCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPgogPGRpdiBpZD0ibmJfc2xkc2h3VGV4dCIgdGl0bGU9IkZ1bGwKU2NyZWVuIFNsaWRlIFNob3ciIGFsaWduPWNlbnRlciBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWxlZnQ6MjBweDtwYWRkaW5nOjNweDsKIGZvbnQtZmFtaWx5OkFyaWFsO2NvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdDtjdXJzb3I6ZGVmYXVsdCc+U2xpZGUKU2hvdzwvZGl2PgogPGRpdiBpZD0ibmJfc2xkc2h3Qm9yZGVyIiB0aXRsZT0iRnVsbCBTY3JlZW4gU2xpZGUgU2hvdyIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTtsZWZ0OjAlO3dpZHRoOjEwMCU7aGVpZ2h0OjIwcHgnPgogPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDBweCwgMThweCwgMThweCwgMHB4KSc+PGltZwogc3JjPSJidXR0b25zLmdpZiIgaWQ9Im5iX3NsZHNodyIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTI1NHB4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KIDx0ZD4KIDxkaXYgaWQ9Im5iX3ZvaWNlQm9yZGVyIiBzdHlsZT0nZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTQwcHg7CiB3aWR0aDoyMHB4O2hlaWdodDoyMHB4Jz4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDE4cHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl92b2ljZSIgdGl0bGU9IlBhdXNlL1BsYXkgTmFycmF0aW9uIiBzdHlsZT0ncG9zaXRpb246CiByZWxhdGl2ZTtsZWZ0Oi0yOTBweCc+PC9kaXY+CiA8L2Rpdj4KIDwvdGQ+CjwvdGFibGU+Cgo8dGFibGUgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlJyBhbGlnbj1jZW50ZXIgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPgogPHRkIG5vd3JhcD4KIDxkaXYgaWQ9Im5iX3ByZXZCb3JkZXIiIGNsYXNzPWJ1dHRvbiBzdHlsZT0nbGVmdDotMzBweCc+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAzMHB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9ImJ1dHRvbnMuZ2lmIiBpZD0ibmJfcHJldiIgdGl0bGU9IlByZXZpb3VzIFNsaWRlIiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7CiBsZWZ0OjBweCc+PC9kaXY+CiA8L2Rpdj4KIDxzcGFuIGlkPSJuYXZfdGV4dCIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDozcHg7d2lkdGg6MTAwcHg7Zm9udC1mYW1pbHk6CiBBcmlhbDtjb2xvcjpidXR0b250ZXh0O2ZvbnQtc2l6ZTo5cHQnPjwvc3Bhbj4KIDxkaXYgaWQ9Im5iX25leHRCb3JkZXIiIGNsYXNzPWJ1dHRvbj4KIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2NsaXA6cmVjdCgwcHgsIDMwcHgsIDE4cHgsIDBweCknPjxpbWcKIHNyYz0iYnV0dG9ucy5naWYiIGlkPSJuYl9uZXh0IiB0aXRsZT0iTmV4dCBTbGlkZSIgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOwogbGVmdDotOTBweCc+PC9kaXY+CiA8L2Rpdj4KIDwvdGQ+CjwvdGFibGU+CjwvZGl2PgoKPGRpdiBpZD1PdGxOYXZPYmogb25sb2FkPSJMb2FkKCkiIG9ubW91c2VvdmVyPSJCdG5Pbk92ZXIoKSIKb25tb3VzZWRvd249IkJ0bk9uRG93bigpIiBvbm1vdXNlb3V0PSJCdG5Pbk91dCgpIiBvbm1vdXNldXA9IkJ0bk9uVXAoKSIKb25rZXlwcmVzcz0iX0tQSCgpIiBzdHlsZT0nZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuJz4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NzBweCcgYWxpZ249bGVmdCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQgbm93cmFwPjxkaXYgdGl0bGU9IlNob3cvSGlkZQpPdXRsaW5lIiBpZD0ibmJfb3RsIgogc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowJTtsZWZ0OjAlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Y3Vyc29yOmRlZmF1bHQnPgogPGRpdiBpZD0ibmJfb3RsRWxlbSIgYWxpZ249Y2VudGVyIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjNweDtmb250LWZhbWlseTpBcmlhbDsKIGNvbG9yOmJ1dHRvbnRleHQ7Zm9udC1zaXplOjlwdCc+T3V0bGluZTwvZGl2PjwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjx0YWJsZSBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnIGFsaWduPWNlbnRlciBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+CiA8dGQ+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xOHB4O3dpZHRoOjI0cHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXN0eWxlOgogc29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6dGhyZWVkZmFjZScgaWQ9Im5iX290bFR4dEJvcmRlciI+CiA8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtjbGlwOnJlY3QoMHB4LCAyMnB4LCAxOHB4LCAwcHgpJz48aW1nCiBzcmM9YnV0dG9ucy5naWYgaWQ9Im5iX290bFR4dCIgdGl0bGU9IkV4cGFuZC9Db2xsYXBzZSBPdXRsaW5lIgogc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTE1N3B4Jz48L2Rpdj4KIDwvZGl2PgogPC90ZD4KPC90YWJsZT4KCjwvZGl2PgoKPGRpdiBpZD1PdGxPYmogc3R5bGU9J2Rpc3BsYXk6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbjsnPgoKCjx0YWJsZSB3aWR0aD0iMTAwJSIgc3R5bGU9J2ZvbnQtZmFtaWx5OkFyaWFsO2ZvbnQtc2l6ZTo5cHQnPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkIHdpZHRoPSIxMDAlIj4KICA8ZGl2IGlkPVBQVFAxIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNDYuaHRtbCcpOyIgaWQ9UFBUTDE+TW9kZWwgRGV2ZWxvcG1lbnQgVG9vbHMKICAoTURUKSAxLjAgPGJyPgogICAgRXVyb3BhIFNpbXVsdGFuZW91cyBSZWxlYXNlIFJldmlldzwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT42IEp1bmUsIDIwMDc8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGJyPgogICA8bGk+UmVsZWFzZSBSZXZpZXcgcmV2aXNpb24gMi4zLjEgliAxNyBKYW51YXJ5LCAyMDA3PC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MjwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAyIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNzIuaHRtbCcpOyIgaWQ9UFBUTDI+QWdlbmRhPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlRhbGtpbmcgUG9pbnRzPC9saT4KICAgPGxpPkZlYXR1cmVzPC9saT4KICAgPGxpPk5vbi1Db2RlIEFzcGVjdHM8L2xpPgogICA8bGk+QVBJczwvbGk+CiAgIDxsaT5BcmNoaXRlY3R1cmFsIElzc3VlczwvbGk+CiAgIDxsaT5Ub29sIFVzYWJpbGl0eTwvbGk+CiAgIDxsaT5FbmQtb2YtTGlmZTwvbGk+CiAgIDxsaT5CdWd6aWxsYTwvbGk+CiAgIDxsaT5TdGFuZGFyZHM8L2xpPgogICA8bGk+VUkgVXNhYmlsaXR5PC9saT4KICAgPGxpPlNjaGVkdWxlPC9saT4KICAgPGxpPkNvbW11bml0aWVzPC9saT4KICAgPGxpPklQIElzc3VlczwvbGk+CiAgIDxsaT5Qcm9qZWN0IFBsYW48L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4zPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA3My5odG1sJyk7IiBpZD1QUFRMMz5UYWxraW5nIFBvaW50czwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5NRFQgMS4wIFRoZW1lczwvbGk+CiAgIDx1bD4KICAgIDxsaT5BcHBlYWwgdG8gYSBCcm9hZGVyIENvbW11bml0eTwvbGk+CiAgICA8bGk+QmUgYSBCZXR0ZXIgUGxhdGZvcm08L2xpPgogICAgPGxpPk1ha2UgU2ltcGxlciB0byBVc2U8L2xpPgogICAgPGxpPlJlc3RydWN0dXJlIE1vZGVsaW5nIENvbXBvbmVudHM8L2xpPgogICAgPGxpPkluY3JlYXNlIE1vZGVsaW5nIENvbXBvbmVudCBDb2hlc2lvbjwvbGk+CiAgICA8bGk+RW5hYmxlIENvbnNpc3RlbnQgTXVsdGktTGFuZ3VhZ2UgU3VwcG9ydDwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPlRoZSBwcm9qZWN0IGxlYWQgY2VydGlmaWVzIHRoYXQgdGhlIHJlcXVpcmVtZW50cyBmb3IgRWNsaXBzZSBRdWFsaXR5CiAgICAgICBBUElzIGhhdmUgYmVlbiBtZXQgZm9yIHRoaXMgcmVsZWFzZTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RW5kLW9mLWxpZmUgaXNzdWVzPC9saT4KICAgPHVsPgogICAgPGxpPlJERi9PV0wgZWRpdG9ycyBubyBsb25nZXIgYXZhaWxhYmxlIGluIEVPRE0gMC45PC9saT4KICAgIDxsaT5vcmcuZWNsaXBzZS5lbWYub2NsIHBsdWctaW4gKE9DTCAxLjAgQVBJKSBkZXByZWNhdGVkLCBidXQgY29udGludWluZwogICAgICAgIHZpYWJpbGl0eSBndWFyYW50ZWVkPC9saT4KICAgIDxsaT5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIG5hbWVzcGFjZSBVUkkgbm93IG9ic29sZXRlLAogICAgICAgIHN1cGVyc2VkZWQgYnkgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMS4wL1VNTDwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkFsbCBzaWduaWZpY2FudCBjb250cmlidXRpb25zLCBub24tQ29tbWl0dGVyIGNvZGUgY29udHJpYnV0aW9ucywgYW5kCiAgICAgICB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgaGF2ZSByZWNlaXZlZCBJUCBjbGVhcmFuY2U8L2xpPgogICA8dWw+CiAgICA8bGk+MTA4MDogb3JpZ2luYWwgM3JkLXBhcnR5IGNvZGUgY29udHJpYnV0aW9uPC9saT4KICAgIDxsaT4xMDgxOiB1c2UgYnkgTURUIHByb2plY3Q8L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT4xNSBjb21taXR0ZXJzIGZyb20gdHdvIGNvbXBhbmllcyAoQm9ybGFuZCwgSUJNKSBpbiB0aHJlZSBjb3VudHJpZXMKICAgICAgIChDYW5hZGEsIENoaW5hLCBDemVjaCBSZXB1YmxpYyk8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj40PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDQgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA5Ni5odG1sJyk7IiBpZD1QUFRMND5GZWF0dXJlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDNCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT4xLjAgZGV2ZWxvcG1lbnQgcGxhbiBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9tb2RlbGluZy9tZHQvZG9jcy9wbGFucy9tZHRfcHJvamVjdF9wbGFuXzFfMC5odG1sPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT4yNCBjb21taXR0ZWQsIDcgZGVmZXJyZWQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk5ldyAmYW1wOyBOb3Rld29ydGh5IGRvY3VtZW50YXRpb24gYXQgaHR0cDovL3dpa2kuZWNsaXBzZS5vcmcvaW5kZXgucGhwL01EVF8xLjBfTmV3X2FuZF9Ob3Rld29ydGh5PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5SZWxlYXNlIG5vdGVzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL21vZGVsaW5nL21kdC9uZXdzL3JlbG5vdGVzLnBocD9wcm9qZWN0PTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjU8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQNSBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDc0Lmh0bWwnKTsiIGlkPVBQVEw1PkZlYXR1cmVzIJYgRU9ETSAwLjk8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzUgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+NSBjb21taXR0ZWQsIDAgZGVmZXJyZWQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFwcGVhbCB0byBhIEJyb2FkZXIgQ29tbXVuaXR5PC9saT4KICAgPHVsPgogICAgPGxpPlN0YW5kYXJkIENvbXBsaWFuY2UuIEltcGxlbWVudCB0aGUgbmV3IHBhY2thZ2Ugc3RydWN0dXJlIGFuZCBvbnRvbG9neQogICAgICAgIG1ldGFtb2RlbCBvZiBSREYgYW5kIE9XTCBjb25mb3JtaW5nIHRvIHRoZSBPRE0gc3BlY2lmaWNhdGlvbi48L2xpPgogICAgPGxpPkR5bmFtaWMgVHlwaW5nLiBBbGxvdyBvYmplY3RzIHJlcHJlc2VudGluZyBSREYvT1dMIHJlc291cmNlcyB0byBjaGFuZ2UKICAgICAgICB0eXBlLjwvbGk+CiAgICA8bGk+UkRGL09XTCBQYXJzaW5nIGFuZCBTZXJpYWxpemF0aW9uLiBQcm92aWRlIHN1cHBvcnQgZm9yIHBhcnNpbmcgYW5kCiAgICAgICAgc2VyaWFsaXphdGlvbiBpbiBSREYvWE1MIGZvcm1hdC48L2xpPgogICAgPGxpPlJERi9PV0wgUmVhc29uaW5nLiBQcm92aWRlIHN1cHBvcnQgZm9yIFJERi9PV0wgcmVhc29uaW5nLjwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkluY3JlYXNlIE1vZGVsaW5nIENvbXBvbmVudCBDb2hlc2lvbjwvbGk+CiAgIDx1bD4KICAgIDxsaT5SREYvT1dMIFRyYW5zZm9ybWF0aW9uIHRvL2Zyb20gRWNvcmUuIFByb3ZpZGUgYSBtZWNoYW5pc20gdG8gdHJhbnNmb3JtCiAgICAgICAgUkRGL09XTCBtb2RlbHMgdG8vZnJvbSBFY29yZS48L2xpPgogICA8L3VsPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj42PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDYgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA3NS5odG1sJyk7IiBpZD1QUFRMNj5GZWF0dXJlcyCWIE9DTCAxLjE8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzYgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+NyBjb21taXR0ZWQsIDIgZGVmZXJyZWQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFwcGVhbCB0byBhIEJyb2FkZXIgQ29tbXVuaXR5PC9saT4KICAgPHVsPgogICAgPGxpPlN0YW5kLWFsb25lIFN1cHBvcnQuIFByb3ZpZGUgYSBzdGFuZC1hbG9uZSAoRWNsaXBzZS1mcmVlKSBPQ0wgYnVpbGQuPC9saT4KICAgPC91bD4KICAgPGJyPgogICA8bGk+QmUgYSBCZXR0ZXIgUGxhdGZvcm08L2xpPgogICA8dWw+CiAgICA8bGk+UGFyc2luZyBBUEkuIFByb3ZpZGUgYSBwdWJsaWMgQVBJIGZvciBwYXJzaW5nIE9DTCBkb2N1bWVudHMsIHdpdGggdGhlCiAgICAgICAgY29tcGxldGUgY29udGV4dCBkZWNsYXJhdGlvbiBzeW50YXguPC9saT4KICAgIDxsaT5FTUYgMi4zIC8gSjJTRSA1IFN1cHBvcnQuIEFkb3B0IEVNRiAyLjMsIGluY2x1ZGluZyByZWdlbmVyYXRpb24gb2YgdGhlCiAgICAgICAgT0NMIG1ldGFtb2RlbC48L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT5NYWtlIFNpbXBsZXIgdG8gVXNlPC9saT4KICAgPHVsPgogICAgPGxpPkltcHJvdmVkIERvY3VtZW50YXRpb24uIERldmVsb3AgYSBjb21wbGV0ZSBQcm9ncmFtbWVyknMgR3VpZGUgZm9yIHRoZQogICAgICAgIE9DTCBjb21wb25lbnQuPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+NzwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFA3IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwOTcuaHRtbCcpOyIgaWQ9UFBUTDc+RmVhdHVyZXMgliBPQ0wgMS4xPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEM3IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPlJlc3RydWN0dXJlIE1vZGVsaW5nIENvbXBvbmVudHM8L2xpPgogICA8dWw+CiAgICA8bGk+TFBHLiBDb25zdW1lIExQRyBydW50aW1lIGxpYnJhcnkgZnJvbSB0aGUgT3JiaXQgcHJvamVjdC48L2xpPgogICA8L3VsPgogICA8YnI+CiAgIDxsaT5JbmNyZWFzZSBNb2RlbGluZyBDb21wb25lbnQgQ29oZXNpb248L2xpPgogICA8dWw+CiAgICA8bGk+SW50ZWdyYXRpb24gd2l0aCBVTUwuIFByb3ZpZGUgc3VwcG9ydCBmb3IgcGFyc2luZyBhbmQgZXZhbHVhdGluZyBPQ0wKICAgICAgICBjb25zdHJhaW50cyBhbmQgZXhwcmVzc2lvbnMgb24gdGhlIFVNTCBtZXRhbW9kZWwuPC9saT4KICAgPC91bD4KICAgPGJyPgogICA8bGk+RW5hYmxlIENvbnNpc3RlbnQgTXVsdGktbGFuZ3VhZ2UgU3VwcG9ydDwvbGk+CiAgIDx1bD4KICAgIDxsaT5JQ1U0Si4gSXNvbGF0ZSBhbmQgbWluaW1pemUgZGVwZW5kZW5jeSBvbiBJQ1U0SjsgZW5zdXJlIHN1cHBvcnQgZm9yIHRoZQogICAgICAgIJN0aGlulCB2YXJpYW50IG9mIElDVTRKLjwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjg8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQOCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDc2Lmh0bWwnKTsiIGlkPVBQVEw4PkZlYXR1cmVzIJYgVU1MMiAyLjE8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzggY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+NyBjb21taXR0ZWQsIDMgZGVmZXJyZWQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFwcGVhbCB0byBhIEJyb2FkZXIgQ29tbXVuaXR5PC9saT4KICAgPHVsPgogICAgPGxpPlN0YXRpYyBQcm9maWxlIERlZmluaXRpb24uIFByb3ZpZGUgYSB3YXkgdG8gc3BlY2lmeSB0aGF0IGEgcHJvZmlsZQogICAgICAgIGRlZmluaXRpb24gYmUgZ2VuZXJhdGVkIHVzaW5nIEVNRjsgdGhpcyB3b3VsZCBhbGxvdywgYW1vbmcgb3RoZXIKICAgICAgICB0aGluZ3MsIHN1cHBvcnQgZm9yIGN1c3RvbSBkYXRhIHR5cGVzIGFuZCBkZXJpdmVkIHN0ZXJlb3R5cGUKICAgICAgICBwcm9wZXJ0aWVzLjwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPkJlIGEgQmV0dGVyIFBsYXRmb3JtPC9saT4KICAgPHVsPgogICAgPGxpPkFudCBUYXNrIGZvciBFY29yZSBJbXBvcnRlci4gUHJvdmlkZSBhbiBBbnQgdGFzayBmb3IgdGhlIFVNTCBFY29yZQogICAgICAgIGltcG9ydGVyLCBzaW1pbGFyIHRvIHRob3NlIHByb3ZpZGVkIGZvciB0aGUgUm9zZSBhbmQgRWNvcmUgaW1wb3J0ZXJzIGluCiAgICAgICAgRU1GLjwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPk1ha2UgU2ltcGxlciB0byBVc2U8L2xpPgogICA8dWw+CiAgICA8bGk+Q3JlYXRlIENoaWxkL1NpYmxpbmcgTWVudSBSZW9yZ2FuaXphdGlvbi4gUmVvcmdhbml6ZSB0aGUgkUNyZWF0ZSBDaGlsZJIKICAgICAgICBhbmQgkUNyZWF0ZSBTaWJsaW5nkiBtZW51cyBvZiB0aGUgVU1MIGVkaXRvciBzbyB0aGF0IHRoZSBpdGVtcyBhcmUKICAgICAgICBncm91cGVkIGJ5IGZlYXR1cmUuPC9saT4KICAgIDxsaT5JbXByb3ZlZCBEb2N1bWVudGF0aW9uLiBJbXByb3ZlIGRvY3VtZW50YXRpb24gYnkgdXBkYXRpbmcgdGhlIEZBUSwKICAgICAgICBlbmhhbmNpbmcgdGhlIEphdmFkb2MsIGFuZCBwdWJsaXNoaW5nIG5ldyBhcnRpY2xlcy48L2xpPgogICA8L3VsPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj45PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDkgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA5OC5odG1sJyk7IiBpZD1QUFRMOT5GZWF0dXJlcyCWIFVNTDIgMi4xPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEM5IGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkluY3JlYXNlIE1vZGVsaW5nIENvbXBvbmVudCBDb2hlc2lvbjwvbGk+CiAgIDx1bD4KICAgIDxsaT5FY2xpcHNlIDMuMyAvIEVNRiAyLjMgQ29tcGF0aWJpbGl0eS4gTWFpbnRhaW4gcmVsZWFzZSBjdXJyZW5jeQogICAgICAgIGNvbmN1cnJlbnQgd2l0aCBFTUYgMi4zIChhbmQgRWNsaXBzZSAzLjMpOyBtYWtlIGNoYW5nZXMgYXMgcmVxdWlyZWQgdG8KICAgICAgICBhbGlnbiB3aXRoIEVNRiBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzLCBpbiBwYXJ0aWN1bGFyIHN1cHBvcnQgZm9yIEphdmEKICAgICAgICBTRSA1LjAuPC9saT4KICAgIDxsaT5YTUwgUHJpbWl0aXZlIFR5cGVzLiBQcm92aWRlIGEgbW9kZWwgbGlicmFyeSB0byByZXByZXNlbnQgdGhlIHR5cGVzCiAgICAgICAgZGVmaW5lZCBpbiB0aGUgWE1MVHlwZSBtZXRhbW9kZWwgaW4gRU1GOyBiZSBzdXJlIHRvIHVwZGF0ZSBFY29yZS9VTUwKICAgICAgICBjb252ZXJ0ZXJzIHRvIG1ha2UgdXNlIG9mIHRoaXMgbmV3IGxpYnJhcnkuPC9saT4KICAgIDxsaT5JbnRlZ3JhdGlvbiB3aXRoIE9DTC4gSW50ZWdyYXRlIHN1cHBvcnQgZm9yIHBhcnNpbmcgYW5kIGV2YWx1YXRpbmcgT0NMCiAgICAgICAgY29uc3RyYWludHMgYW5kIGV4cHJlc3Npb25zLjwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjEwPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDEwIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNzcuaHRtbCcpOyIgaWQ9UFBUTDEwPkZlYXR1cmVzIJYgVU1MMiBUb29scwogIDAuNzwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTAgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+NCBjb21taXR0ZWQsIDEgZGVmZXJyZWQ8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkFwcGVhbCB0byBhIEJyb2FkZXIgQ29tbXVuaXR5PC9saT4KICAgPHVsPgogICAgPGxpPkNsYXNzIERpYWdyYW1zLiBQcm92aWRlIGEgR01GLWJhc2VkIGVkaXRvciBmb3IgVU1MIGNsYXNzIGRpYWdyYW1zLjwvbGk+CiAgICA8bGk+U3RhdGUgTWFjaGluZSBEaWFncmFtcy4gUHJvdmlkZSBhIEdNRi1iYXNlZCBlZGl0b3IgZm9yIFVNTCBzdGF0ZQogICAgICAgIG1hY2hpbmUgZGlhZ3JhbXMuPC9saT4KICAgIDxsaT5Db21wb25lbnQgRGlhZ3JhbXMuIFByb3ZpZGUgYSBHTUYtYmFzZWQgZWRpdG9yIGZvciBVTUwgY29tcG9uZW50CiAgICAgICAgZGlhZ3JhbXMuPC9saT4KICAgIDxsaT5BY3Rpdml0eSBEaWFncmFtcy4gUHJvdmlkZSBhIEdNRi1iYXNlZCBlZGl0b3IgZm9yIFVNTCBhY3Rpdml0eQogICAgICAgIGRpYWdyYW1zLjwvbGk+CiAgIDwvdWw+CiAgIDxicj4KICAgPGxpPk90aGVyPC9saT4KICAgPHVsPgogICAgPGxpPlByb2ZpbGUgRGVmaW5pdGlvbiBEaWFncmFtcy4gUHJvdmlkZSBhIEdNRi1iYXNlZCBlZGl0b3IgZm9yIFVNTCBwcm9maWxlCiAgICAgICAgZGlhZ3JhbXMuPC9saT4KICAgPC91bD4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTE8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTEgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA3OC5odG1sJyk7IiBpZD1QUFRMMTE+RmVhdHVyZXMgliBYU0QgMi4zPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxMSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT4xIGNvbW1pdHRlZCwgMSBkZWZlcnJlZDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+QXBwZWFsIHRvIGEgQnJvYWRlciBDb21tdW5pdHk8L2xpPgogICA8dWw+CiAgICA8bGk+SmF2YZkgU0UgNS4wIFN1cHBvcnQuIEV4cGxvaXQgbmV3IEphdmEgbGFuZ3VhZ2UgY29uc3RydWN0czsgdXNlCiAgICAgICAgZ2VuZXJpY3MgKGUuZy4gRUxpc3QsIEVNYXAgYW5kIGltcGxlbWVudGF0aW9ucyk7IGdlbmVyYXRlIGFuZCBtZXJnZQogICAgICAgIEphdmEgNSBjb25zdHJ1Y3RzOyBpbnZlc3RpZ2F0ZSBlbnVtZXJhdGlvbnMgYW5kIGFubm90YXRpb25zLjwvbGk+CiAgIDwvdWw+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjEyPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDEyIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwNzkuaHRtbCcpOyIgaWQ9UFBUTDEyPk5vbi1Db2RlIEFzcGVjdHM8L2E+PC9mb250PjwvZGl2PgogIDxkaXYgaWQ9UFBUQzEyIGNsYXNzPUNUeHQgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+PGZvbnQgc2l6ZT0yPgogIDx1bD4KICAgPGxpPkFsbCBjb21wb25lbnRzIGhvc3RlZCBhdCBzaW5nbGUgV2ViIHNpdGUsIFdpa2k8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPlhTRCBzdGlsbCBuZWVkcyB0byBiZSBtaWdyYXRlZCB0byBNRFQgQ1ZTIG1vZHVsZTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RG9jdW1lbnRhdGlvbiAoRkFRLCBKYXZhZG9jLCBhcnRpY2xlcywgZXRjLikgYXZhaWxhYmxlIGZvciBFT0RNLCBPQ0wsCiAgICAgICBVTUwyLCBYU0QgKFVNTDIgVG9vbHMgVEJEKTsgdXBkYXRlcyBjb21wbGV0ZSBvciB1bmRlcndheTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+RXhhbXBsZSBmZWF0dXJlcy9wbHVnLWlucyBhdmFpbGFibGUgZm9yIGFsbCBjb21wb25lbnRzPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTM8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA4MC5odG1sJyk7IiBpZD1QUFRMMTM+QVBJczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTMgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlIHByb2plY3QgbGVhZCBjZXJ0aWZpZXMgdGhhdCB0aGUgcmVxdWlyZW1lbnRzIGZvciBFY2xpcHNlIFF1YWxpdHkKICAgICAgIEFQSXMgaGF2ZSBiZWVuIG1ldCBmb3IgdGhpcyByZWxlYXNlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Ob24tQVBJIGluIJNpbnRlcm5hbJQgbmFtZXNwYWNlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Tb21lIJFkaXNjb3VyYWdlZCBhY2Nlc3OSIHdhcm5pbmdzIGluIGNhc2VzIG9mIG1ldGFtb2RlbCBleHRlbnNpb24KICAgICAgIChwbHVnLWluIGNvbXBhdGliaWxpdHkgcmVzdHJpY3RlZCB0byBtaW5vciB2ZXJzaW9uKTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+T0NMLCBVTUwyLCBYU0QgQVBJcyB1cGRhdGVkIHRvIHN1cHBvcnQgSmF2YSA1LjA8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkVPRE0gQVBJcyBhcmUgk3Byb3Zpc2lvbmFslCwgaW5jb21wYXRpYmxlIHdpdGggcHJldmlvdXMgcmVsZWFzZSBkdWUgdG8KICAgICAgIGNvbXBsaWFuY2Ugd2l0aCBuZXcgZHJhZnQgb2YgdGhlIE9ETSBzcGVjaWZpY2F0aW9uPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5OZXcgY29udmVuaWVuY2UgQVBJcyBpbnRyb2R1Y2VkIGluIFVNTDI8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkdNRiBSdW50aW1lIHJlcHJlc2VudHMgYnVsayBvZiBBUEkgZm9yIFVNTDIgVG9vbHM8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4xNDwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAxNCBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDgxLmh0bWwnKTsiIGlkPVBQVEwxND5BcmNoaXRlY3R1cmFsIElzc3VlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMTQgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VG8gc3VwcG9ydCBSREYgZ3JhcGhzIGFuZCBkeW5hbWljIHR5cGluZywgRU9ETSBpbXBsZW1lbnRhdGlvbiBjaGFuZ2VkIHRvCiAgICAgICBtYWtlIHVzZSBvZiBpbnRlcm5hbCBjb3JlIG9iamVjdHMgYW5kIEphdmEgcHJveGllcyCWIGhlbmNlIGNvZGUKICAgICAgIGdlbmVyYXRpb24gbm90IHVzZWQvcG9zc2libGU8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk9DTCBub3cgY29uc3VtaW5nIExQRyBKYXZhIFJ1bnRpbWUgZnJvbSBPcmJpdDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VU1MMiBzY2hlbWEgY2hhbmdlcyBpbnRyb2R1Y2VkIHRvIGFkZHJlc3MgYmlkaXJlY3Rpb25hbCBhc3NvY2lhdGlvbgogICAgICAgaXNzdWVzIFsxODU2MDJdPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5HTUYgcmVzb3VyY2VzIGF2YWlsYWJsZSBmb3IgVU1MMiBUb29scyB0byBzdXBwb3J0IGNvZGUgcmVnZW5lcmF0aW9uOyA4MAogICAgICAgJSBnZW5lcmF0ZWQgY29kZSAoaW5jbHVkaW5nIGN1c3RvbSB0ZW1wbGF0ZXMpLCAxNSAlIHBsdWdnYWJsZSBjdXN0b20KICAgICAgIGNvZGUsIDUgJSBAZ2VuZXJhdGVkIE5PVCBjb2RlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5YU0QgcGFydGl0aW9uZWQgaW50byBmaW5lci1ncmFpbmVkIGZlYXR1cmVzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5ObyBnZW5lcmljcyBzdXBwb3J0IGZvciBYU0QgdHJhbnNmb3JtYXRpb24gdG8vZnJvbSBFY29yZTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE1PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDE1IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwODIuaHRtbCcpOyIgaWQ9UFBUTDE1PlRvb2wgVXNhYmlsaXR5PC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxNSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5NYWpvciBPQ0wgdXNhYmlsaXR5IGlzc3VlLCBsYWNrIG9mIGRvY3VtZW50YXRpb24sIGFkZHJlc3NlZCB3aXRoCiAgICAgICBpbnRyb2R1Y3Rpb24gb2YgUHJvZ3JhbW1lcpJzIEd1aWRlPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5VTUwgZWRpdG9yIChjcmVhdGUgY2hpbGQvc2libGluZyBtZW51cyksIGV4cG9ydGVyIHVzYWJpbGl0eSBpbXByb3ZlZDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+R01GLWJhc2VkIGVkaXRvcnMgaW50cm9kdWNlZCBmb3IgYWN0aXZpdHksIGNsYXNzLCBwcm9maWxlIGRlZmluaXRpb24sCiAgICAgICBhbmQgc3RhdGUgbWFjaGluZSBkaWFncmFtczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8YnI+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE2PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDE2IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwODMuaHRtbCcpOyIgaWQ9UFBUTDE2PkVuZC1vZi1MaWZlPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMxNiBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5SREYvT1dMIGVkaXRvcnMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBpbiBFT0RNIDAuOTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+b3JnLmVjbGlwc2UuZW1mLm9jbCBwbHVnLWluIChPQ0wgMS4wIEFQSSkgZGVwcmVjYXRlZCwgYnV0IGNvbnRpbnVpbmcKICAgICAgIHZpYWJpbGl0eSBndWFyYW50ZWVkPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIG5hbWVzcGFjZSBVUkkgbm93IG9ic29sZXRlLAogICAgICAgc3VwZXJzZWRlZCBieSBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4xLjAvVU1MPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTc8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTcgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA4NC5odG1sJyk7IiBpZD1QUFRMMTc+QnVnemlsbGEgKGFzIG9mIE1heQogIDMwLCAyMDA3KTwvYT48L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjE4PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDE4IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwODUuaHRtbCcpOyIgaWQ9UFBUTDE4PkJ1Z3ppbGxhIJYgRU9ETSAoYXMgb2YKICBNYXkgMzAsIDIwMDcpPC9hPjwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MTk8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMTkgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA4Ni5odG1sJyk7IiBpZD1QUFRMMTk+QnVnemlsbGEgliBPQ0wgKGFzIG9mCiAgTWF5IDMwLCAyMDA3KTwvYT48L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjIwPC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDIwIGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwODcuaHRtbCcpOyIgaWQ9UFBUTDIwPkJ1Z3ppbGxhIJYgVU1MMiAoYXMgb2YKICBNYXkgMzAsIDIwMDcpPC9hPjwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MjE8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMjEgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA4OC5odG1sJyk7IiBpZD1QUFRMMjE+QnVnemlsbGEgliBVTUwyIFRvb2xzCiAgKGFzIG9mIE1heSAzMCwgMjAwNyk8L2E+PC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4yMjwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAyMiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDg5Lmh0bWwnKTsiIGlkPVBQVEwyMj5CdWd6aWxsYSCWIFhTRCAoYXMgb2YKICBNYXkgMzAsIDIwMDcpPC9hPjwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+MjM8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMjMgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA5MC5odG1sJyk7IiBpZD1QUFRMMjM+U3RhbmRhcmRzPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyMyBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5PbnRvbG9neSBEZWZpbml0aW9uIE1ldGFtb2RlbCAoT0RNKSAxLjAgc3BlY2lmaWNhdGlvbiBmaW5hbGl6YXRpb24KICAgICAgIHVuZGVyd2F5OyBFT0RNIDAuOSBjb21wbGlhbnQgd2l0aCB3b3JraW5nIGRyYWZ0PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5PYmplY3QgQ29uc3RyYWludCBMYW5ndWFnZSAoT0NMKSAyLjEgcmV2aXNpb24gdW5kZXJ3YXk7IE9DTCAxLjEKICAgICAgIGNvbXBsaWFudCB3aXRoIDIuMCBmb3JtYWwgdmVyc2lvbjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+VW5pZmllZCBNb2RlbGluZyBMYW5ndWFnZSAoVU1MKSAyLjIgc3BlY2lmaWNhdGlvbiByZXZpc2lvbiB1bmRlcndheTsKICAgICAgIFVNTDIgMi4xIGFuZCBVTUwyIFRvb2xzIDAuNyBjb21wbGlhbnQgd2l0aCAyLjEuMSBmb3JtYWwgdmVyc2lvbjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+WFNEIGNvbXBsaWFudCB3aXRoIFhNTCBTY2hlbWEgVzNDIHN0YW5kYXJkPC9saT4KICAgPGJyPgogICA8YnI+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjI0PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDI0IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwOTEuaHRtbCcpOyIgaWQ9UFBUTDI0PlVJIFVzYWJpbGl0eTwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMjQgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+TURUIDEuMCBjb25mb3JtcyB0byBFY2xpcHNlIFVzZXIgSW50ZXJmYWNlIEd1aWRlbGluZXM8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkVjbGlwc2UgcGxhdGZvcm0gc3RhbmRhcmQgaTE4biBzdXBwb3J0IHVzZWQgd2hlcmUgYXBwbGljYWJsZS9wb3NzaWJsZTsKICAgICAgIHN0YW5kLWFsb25lIGRlcGxveW1lbnQgdXNlcyBlcXVpdmFsZW50IEoyU0UgQVBJczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+SUNVNEogaXMgdXNlZCBidXQgb3B0aW9uYWw7IHN0YW5kLWFsb25lIGRlcGxveW1lbnRzIGRlbGVnYXRlIHRvCiAgICAgICBjb3JyZXNwb25kaW5nIEoyU0UgNS4wIEFQSXMgd2hlbiBJQ1Ugbm90IGF2YWlsYWJsZTwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+QXMgd2l0aCBhbGwgRXVyb3BhIHByb2plY3RzLCBsYW5ndWFnZSBwYWNrcyB3aWxsIGJlIGNyZWF0ZWQgYXMgcGFydCBvZgogICAgICAgYW4gRWNsaXBzZSBHbG9iYWxpemF0aW9uIFByb2plY3Q8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPkVjbGlwc2UgcGxhdGZvcm0gQVBJcyB1c2VkIHRvIHByb3ZpZGUgYWNjZXNzaWJsZSBVSTwvbGk+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjI1PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDI1IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwOTIuaHRtbCcpOyIgaWQ9UFBUTDI1PlNjaGVkdWxlPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyNSBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5BcyBhIHdob2xlLCBNRFQgaXMgYSCTKzKUIHByb2plY3QsIGJ1dCBzaG91bGQgcHJvYmFibHkgYmUgkyszlCBvciCTKzSUCiAgICAgICBiYXNlZCBvbiBpdHMgZGVwZW5kZW5jaWVzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5NMyBtZXQgb24gTm92ZW1iZXIgMTY8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk00IHNsaXBwZWQgZnJvbSBKYW51YXJ5IDQgdG8gSmFudWFyeSAyMjwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+TTUgbWV0IG9uIEZlYnJ1YXJ5IDIzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5NNiBzbGlwcGVkIGZyb20gQXByaWwgNiB0byBBcHJpbCAxMDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+TTcgc2xpcHBlZCBmcm9tIE1heSAxOCB0byBNYXkgMjQ8L2xpPgogIDwvdWw+CiAgPC9mb250PjwvZGl2PgogIDwvdGQ+CiA8L3RyPgogPHRyIG9ubW91c2VvdmVyPSJPdmVyKHRoaXMpIiBvbm1vdXNlb3V0PSJPdXQodGhpcykiIG9uY2xpY2s9IkZvbGxvdyh0aGlzKSIKICBzdHlsZT0nY3Vyc29yOmhhbmQnPgogIDx0ZCBhbGlnbj1yaWdodCB2YWxpZ249dG9wPgogIDxkaXYgY2xhc3M9c2xkTnVtPjxmb250IHNpemU9Mj4yNjwvZm9udD48L2Rpdj4KICA8L3RkPgogIDx0ZD4KICA8ZGl2IGlkPVBQVFAyNiBjbGFzcz1QVHh0Pjxmb250IHNpemU9Mj48YQogIGhyZWY9ImphdmFzY3JpcHQ6R29Ub1NsZCgnc2xpZGUwMDkzLmh0bWwnKTsiIGlkPVBQVEwyNj5Db21tdW5pdGllczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMjYgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+SW5jcmVhc2VkIGludGVyYWN0aW9uIGluIEJ1Z3ppbGxhIGFuZCBvbiBuZXdzZ3JvdXBzPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5NRFQgcmVwcmVzZW50ZWQgYXQgRWNsaXBzZUNvbiAyMDA3IChzaG9ydC9sb25nIHRhbGtzLCB0dXRvcmlhbHMpPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Db29yZGluYXRpb24gd2l0aCBUb3BjYXNlZCBvcGVuIHNvdXJjZSBwcm9qZWN0PC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5Db250aW51ZWQgZWZmb3J0cyB0byBleHBhbmQgdXNlciBjb21tdW5pdGllcyBmb3IgRU9ETSwgVU1MMiBUb29sczwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+TURUIGlzIGFtb25nIHRoZSBtb3N0IGFjdGl2ZSBwcm9qZWN0cyBhdCBFY2xpcHNlPC9saT4KICAgPGJyPgogICA8YnI+CiAgPC91bD4KICA8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KIDwvdHI+CiA8dHIgb25tb3VzZW92ZXI9Ik92ZXIodGhpcykiIG9ubW91c2VvdXQ9Ik91dCh0aGlzKSIgb25jbGljaz0iRm9sbG93KHRoaXMpIgogIHN0eWxlPSdjdXJzb3I6aGFuZCc+CiAgPHRkIGFsaWduPXJpZ2h0IHZhbGlnbj10b3A+CiAgPGRpdiBjbGFzcz1zbGROdW0+PGZvbnQgc2l6ZT0yPjI3PC9mb250PjwvZGl2PgogIDwvdGQ+CiAgPHRkPgogIDxkaXYgaWQ9UFBUUDI3IGNsYXNzPVBUeHQ+PGZvbnQgc2l6ZT0yPjxhCiAgaHJlZj0iamF2YXNjcmlwdDpHb1RvU2xkKCdzbGlkZTAwOTQuaHRtbCcpOyIgaWQ9UFBUTDI3PklQIElzc3VlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMjcgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VGhlIE1EVCBwcm9qZWN0IGxlYWRlcnNoaXAgdmVyaWZpZXMgdGhhdDo8L2xpPgogICA8dWw+CiAgICA8bGk+dGhlIGFib3V0IGZpbGVzIGFuZCB1c2UgbGljZW5zZXMgYXJlIGluIHBsYWNlIGFzIHBlciB0aGUgR3VpZGVsaW5lcyB0bwogICAgICAgIExlZ2FsIERvY3VtZW50YXRpb24uPC9saT4KICAgIDxsaT5hbGwgY29udHJpYnV0aW9ucyAoY29kZSwgZG9jdW1lbnRhdGlvbiwgaW1hZ2VzLCBldGMpIGhhdmUgYmVlbgogICAgICAgIGNvbW1pdHRlZCBieSBpbmRpdmlkdWFscyB3aG8gYXJlIGVpdGhlciBNZW1iZXJzIG9mIHRoZSBGb3VuZGF0aW9uLCBvcgogICAgICAgIGhhdmUgc2lnbmVkIHRoZSBhcHByb3ByaWF0ZSBDb21taXR0ZXIgQWdyZWVtZW50LiBJbiBlaXRoZXIgY2FzZSwgdGhlc2UKICAgICAgICBhcmUgaW5kaXZpZHVhbHMgd2hvIGhhdmUgc2lnbmVkLCBhbmQgYXJlIGFiaWRpbmcgYnksIHRoZSBFY2xpcHNlIElQCiAgICAgICAgUG9saWN5LjwvbGk+CiAgICA8bGk+YWxsIHNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgaGF2ZSBiZWVuIHJldmlld2VkIGJ5IHRoZSBGb3VuZGF0aW9uJ3MKICAgICAgICBsZWdhbCBzdGFmZi48L2xpPgogICAgPGxpPmFsbCBub24tQ29tbWl0dGVyIGNvZGUgY29udHJpYnV0aW9ucywgaW5jbHVkaW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcywKICAgICAgICBoYXZlIGJlZW4gZG9jdW1lbnRlZCBpbiB0aGUgcmVsZWFzZSBhbmQgcmV2aWV3ZWQgYnkgdGhlIEZvdW5kYXRpb24ncwogICAgICAgIGxlZ2FsIHN0YWZmLjwvbGk+CiAgICA8bGk+YWxsIENvbnRyaWJ1dGlvbiBRdWVzdGlvbm5haXJlcyBoYXZlIGJlZW4gY29tcGxldGVkLjwvbGk+CiAgICA8bGk+dGhlICZxdW90O3Byb3ZpZGVyJnF1b3Q7IGZpZWxkIG9mIGVhY2ggcGx1Zy1pbiBpcyBzZXQgdG8KICAgICAgICAmcXVvdDtFY2xpcHNlLm9yZ5MuPC9saT4KICAgIDxsaT50aGUgJnF1b3Q7Y29weXJpZ2h0JnF1b3Q7IGZpZWxkIG9mIGVhY2ggZmVhdHVyZSBpcyBzZXQgdG8gdGhlIGNvcHlyaWdodAogICAgICAgIG93bmVyICh0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHJhcmVseSB0aGUgY29weXJpZ2h0IG93bmVyKS48L2xpPgogICAgPGxpPmFueSB0aGlyZC1wYXJ0eSBsb2dvcyBvciB0cmFkZW1hcmtzIGluY2x1ZGVkIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAoaWNvbnMsIGhlbHAgZmlsZSBsb2dvcywgZXRjKSBoYXZlIGJlZW4gbGljZW5zZWQgdW5kZXIgdGhlIEVQTC48L2xpPgogICAgPGxpPmFueSBmb250cyBvciBzaW1pbGFyIHRoaXJkLXBhcnR5IGltYWdlcyBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgKGUuZy4gaW4gUERGIG9yIEVQUyBmaWxlcykgaGF2ZSBiZWVuIGxpY2Vuc2VkIHVuZGVyIHRoZSBFUEwuPC9saT4KICAgPC91bD4KICAgPGJyPgogICA8bGk+VGhlIE1EVCBwcm9qZWN0IElQIGxvZyBpcyBsb2NhdGVkIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbW9kZWxpbmcvbWR0L2VjbGlwc2UtcHJvamVjdC1pcC1sb2cuY3N2PC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+Mjg8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMjggY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA5NS5odG1sJyk7IiBpZD1QUFRMMjg+UHJvamVjdCBQbGFuPC9hPjwvZm9udD48L2Rpdj4KICA8ZGl2IGlkPVBQVEMyOCBjbGFzcz1DVHh0IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxmb250IHNpemU9Mj4KICA8dWw+CiAgIDxsaT5EcmFmdCBkZXZlbG9wbWVudCBwbGFuIGZvciBNRFQgMS4xIG5vdCB5ZXQgYXZhaWxhYmxlPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KIDx0ciBvbm1vdXNlb3Zlcj0iT3Zlcih0aGlzKSIgb25tb3VzZW91dD0iT3V0KHRoaXMpIiBvbmNsaWNrPSJGb2xsb3codGhpcykiCiAgc3R5bGU9J2N1cnNvcjpoYW5kJz4KICA8dGQgYWxpZ249cmlnaHQgdmFsaWduPXRvcD4KICA8ZGl2IGNsYXNzPXNsZE51bT48Zm9udCBzaXplPTI+Mjk8L2ZvbnQ+PC9kaXY+CiAgPC90ZD4KICA8dGQ+CiAgPGRpdiBpZD1QUFRQMjkgY2xhc3M9UFR4dD48Zm9udCBzaXplPTI+PGEKICBocmVmPSJqYXZhc2NyaXB0OkdvVG9TbGQoJ3NsaWRlMDA5OS5odG1sJyk7IiBpZD1QUFRMMjk+TGVnYWwgTm90aWNlczwvYT48L2ZvbnQ+PC9kaXY+CiAgPGRpdiBpZD1QUFRDMjkgY2xhc3M9Q1R4dCBzdHlsZT0nZGlzcGxheTpub25lJz48Zm9udCBzaXplPTI+CiAgPHVsPgogICA8bGk+VU1MIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBPYmplY3QgTWFuYWdlbWVudCBHcm91cDwvbGk+CiAgIDxicj4KICAgPGJyPgogICA8bGk+WE1MIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtPC9saT4KICAgPGJyPgogICA8YnI+CiAgIDxsaT5KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsCiAgICAgICBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGg8L2xpPgogICA8YnI+CiAgIDxicj4KICAgPGxpPk90aGVyIGNvbXBhbnksIHByb2R1Y3QsIG9yIHNlcnZpY2UgbmFtZXMgbWF5IGJlIHRyYWRlbWFya3Mgb3Igc2VydmljZQogICAgICAgbWFya3Mgb2Ygb3RoZXJzPC9saT4KICA8L3VsPgogIDwvZm9udD48L2Rpdj4KICA8L3RkPgogPC90cj4KPC90YWJsZT4KCgoKPC9kaXY+Cgo8ZGl2IHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxhIGhyZWY9bWFzdGVyMDguaHRtbD48L2E+PGEgaHJlZj1tYXN0ZXIwOC54bWw+PC9hPjxhCmhyZWY9cHJldmlldy53bWY+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDAxLmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDAyLmpwZyI+PC9hPjxhIGhyZWY9bWFzdGVyMDIuaHRtbD48L2E+PGEgaHJlZj1wcmVzLnhtbD48L2E+PGEKaHJlZj1lZGl0ZGF0YS5tc28+PC9hPjxhIGhyZWY9c2xpZGUwMDQ2Lmh0bWw+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDAzLmpwZyI+PC9hPjxhCmhyZWY9Im1hc3RlcjA4X2ltYWdlMDA0LmdpZiI+PC9hPjxhIGhyZWY9Im1hc3RlcjA4X2ltYWdlMDA1LmpwZyI+PC9hPjxhCmhyZWY9c2xpZGUwMDcyLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDczLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDk2Lmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDc0Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDc1Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDk3Lmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDc2Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDk4Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDc3Lmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDc4Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDc5Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDgwLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDgxLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDgyLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDgzLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDg0Lmh0bWw+PC9hPjxhIGhyZWY9InNsaWRlMDA4NF9pbWFnZTAwNi5wbmciPjwvYT48YQpocmVmPW9sZWRhdGEubXNvPjwvYT48YSBocmVmPSJzbGlkZTAwODRfaW1hZ2UwMDcuanBnIj48L2E+PGEKaHJlZj1zbGlkZTAwODUuaHRtbD48L2E+PGEgaHJlZj0ic2xpZGUwMDg1X2ltYWdlMDA4LnBuZyI+PC9hPjxhCmhyZWY9InNsaWRlMDA4NV9pbWFnZTAwOS5qcGciPjwvYT48YSBocmVmPXNsaWRlMDA4Ni5odG1sPjwvYT48YQpocmVmPSJzbGlkZTAwODZfaW1hZ2UwMTAucG5nIj48L2E+PGEgaHJlZj0ic2xpZGUwMDg2X2ltYWdlMDExLmpwZyI+PC9hPjxhCmhyZWY9c2xpZGUwMDg3Lmh0bWw+PC9hPjxhIGhyZWY9InNsaWRlMDA4N19pbWFnZTAxMi5wbmciPjwvYT48YQpocmVmPSJzbGlkZTAwODdfaW1hZ2UwMTMuanBnIj48L2E+PGEgaHJlZj1zbGlkZTAwODguaHRtbD48L2E+PGEKaHJlZj0ic2xpZGUwMDg4X2ltYWdlMDE0LnBuZyI+PC9hPjxhIGhyZWY9InNsaWRlMDA4OF9pbWFnZTAxNS5qcGciPjwvYT48YQpocmVmPXNsaWRlMDA4OS5odG1sPjwvYT48YSBocmVmPSJzbGlkZTAwODlfaW1hZ2UwMTYucG5nIj48L2E+PGEKaHJlZj0ic2xpZGUwMDg5X2ltYWdlMDE3LmpwZyI+PC9hPjxhIGhyZWY9c2xpZGUwMDkwLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDkxLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDkyLmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDkzLmh0bWw+PC9hPjxhCmhyZWY9c2xpZGUwMDk0Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDk1Lmh0bWw+PC9hPjxhIGhyZWY9c2xpZGUwMDk5Lmh0bWw+PC9hPjxhCmhyZWY9bWFzdGVyMDEuaHRtbD48L2E+PGEgaHJlZj0ibWFzdGVyMDhfc3R5bGVzaGVldC5jc3MiPjwvYT48YSBocmVmPXNjcmlwdC5qcz48L2E+PGEKaHJlZj0iLi4vTURUXzEuMF8lMjBSZWxlYXNlX1Jldmlldy5odG1sIj48L2E+PGEgaHJlZj1mdWxsc2NyZWVuLmh0bWw+PC9hPjxhCmhyZWY9Im5vdGVzX2ZsYWcuZ2lmIj48L2E+PGEgaHJlZj1idXR0b25zLmdpZj48L2E+PGEgaHJlZj1mcmFtZS5odG1sPjwvYT48YQpocmVmPW91dGxpbmUuaHRtbD48L2E+PC9kaXY+Cgo8L2JvZHk+Cgo8L2h0bWw+Cg==