PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PgoKPHByb2Nlc3MtZGVmaW5pdGlvbgogICAgbmFtZT0icGFnZXNXb3JrZmxvdyIKICAgIHhtbG5zPSJ1cm46amJwbS5vcmc6anBkbC0zLjEiCiAgICB4bWxuczpzPSJ1cm46aW50ZWxsaUZvcm06U3BhY2VzIgogICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0idXJuOmpicG0ub3JnOmpwZGwtMy4xIGpwZGwtMy4xLnhzZCI+CgogIDxzdGFydC1zdGF0ZSBuYW1lPSJTdGFydCI+CgogICAgPHRhc2sgbmFtZT0ic3RhcnQtdGFzayIgLz4KCiAgICA8dHJhbnNpdGlvbiBuYW1lPSJadW1FbmRlIiB0bz0iRW5kZSI+CiAgICAgIDxzY3JpcHQ+CiAgICAgICAgPGV4cHJlc3Npb24+CiAgICAgICAgICBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSBiID0gbmV3IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CiAgICAgICAgICBkZS5jaXQudXRpbC5qYXZhLmlvLlN0cmVhbVV0aWwuY29weShuZXcgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0oImM6XFx0ZW1wXFxpbnB1dC5vZHQiKSwgYiwgdHJ1ZSk7CiAgICAgICAgICBieXRlW10gZGF0YSA9IGIudG9CeXRlQXJyYXkoKTsKICAgICAgICAgIGF0dGFjaG1lbnRzLmNyZWF0ZUF0dGFjaG1lbnQoImlucHV0IiwgImlucHV0Lm9kdCIsICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQiLCBkYXRhKTsKCiAgICAgICAgICBiID0gbmV3IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CiAgICAgICAgICBkZS5jaXQudXRpbC5qYXZhLmlvLlN0cmVhbVV0aWwuY29weShuZXcgamF2YS5pby5GaWxlSW5wdXRTdHJlYW0oImM6XFx0ZW1wXFxpbnB1dC54bWwiKSwgYiwgdHJ1ZSk7CiAgICAgICAgICBkYXRhID0gYi50b0J5dGVBcnJheSgpOwogICAgICAgICAgYXR0YWNobWVudHMuY3JlYXRlQXR0YWNobWVudCgiZGF0YSIsICJkYXRhLnhtbCIsICJ0ZXh0L3htbCIsIGRhdGEpOwogICAgICAgIDwvZXhwcmVzc2lvbj4KICAgICAgPC9zY3JpcHQ+CgogICAgICA8YWN0aW9uIGNsYXNzPSJkZS5jaXQuaW50ZWxsaWZvcm0uc3BhY2VzLmFjdGlvbnMuUGFnZXNSZW5kZXJBY3Rpb24iIGNvbmZpZy10eXBlPSJjb25zdHJ1Y3RvciI+CiAgICAgICAgPHM6aW5wdXQtZG9jdW1lbnQ+aW5wdXQ8L3M6aW5wdXQtZG9jdW1lbnQ+CiAgICAgICAgPHM6ZGF0YS1kb2N1bWVudD5kYXRhPC9zOmRhdGEtZG9jdW1lbnQ+CiAgICAgICAgPHM6b3V0cHV0LWRvY3VtZW50Pm91dHB1dDwvczpvdXRwdXQtZG9jdW1lbnQ+CiAgICAgICAgPHM6b3V0cHV0LXR5cGU+YXBwbGljYXRpb24vcGRmPC9zOm91dHB1dC10eXBlPgogICAgICAgIDxzOm91dHB1dC1uYW1lPkNyZWF0ZWQtYnktUGFnZXMucGRmPC9zOm91dHB1dC1uYW1lPgogICAgICA8L2FjdGlvbj4KCiAgICAgIDxhY3Rpb24gY2xhc3M9ImRlLmNpdC5pbnRlbGxpZm9ybS5zcGFjZXMuYWN0aW9ucy5TYXZlQXR0YWNobWVudHNBY3Rpb24iIGNvbmZpZy10eXBlPSJjb25zdHJ1Y3RvciI+CiAgICAgICAgPGY6YXR0YWNobWVudHMgeG1sbnM6Zj0idXJuOmludGVsbGlGb3JtOkF0dGFjaG1lbnRGaWx0ZXIiPgogICAgICAgICAgPGY6YW5kPgogICAgICAgICAgICA8Zjpwcm9wZXJ0eS1maWx0ZXIgbmFtZT0iaWQiIHZhbHVlPSJvdXRwdXQiIC8+CgogICAgICAgICAgICA8ZjpmaWx0ZXI+CiAgICAgICAgICAgICAgPGY6ZXhwcmVzc2lvbj5TeXN0ZW0ub3V0LnByaW50bG4oImlkID0gIiArIGF0dGFjaG1lbnQuZ2V0SWQoKSk7IHJldHVybiAidHJ1ZSI7PC9mOmV4cHJlc3Npb24+CiAgICAgICAgICAgIDwvZjpmaWx0ZXI+CgogICAgICAgICAgICA8Zjpub3Q+CiAgICAgICAgICAgICAgPGY6cHJvcGVydHktZmlsdGVyIG5hbWU9Im5hbWUiIHZhbHVlPSIqLmV4ZSIgLz4KICAgICAgICAgICAgPC9mOm5vdD4KCiAgICAgICAgICAgIDxmOm5vdD4KICAgICAgICAgICAgICA8ZjpkZWZhdWx0LWZpbHRlciAvPgogICAgICAgICAgICA8L2Y6bm90PgoKICAgICAgICAgICAgPGY6cHJvcGVydHktZmlsdGVyIG5hbWU9ImNvbnRlbnQtdHlwZSIgdmFsdWU9ImFwcGxpY2F0aW9uL3BkZiIgLz4KCiAgICAgICAgICAgIDxmOmFuZD4KICAgICAgICAgICAgICA8ZjpzaXplLWZpbHRlciBtYXg9IjIwMCIgdW5pdD0ia2IiIC8+CiAgICAgICAgICAgIDwvZjphbmQ+CiAgICAgICAgICA8L2Y6YW5kPgogICAgICAgIDwvZjphdHRhY2htZW50cz4KICAgICAgPC9hY3Rpb24+CgogICAgICA8IS0tCiAgICAgICAgICAgIDxhY3Rpb24gY2xhc3M9ImRlLmNpdC5pbnRlbGxpZm9ybS5zcGFjZXMuYWN0aW9ucy5TYXZlRmlsZUFjdGlvbiIgY29uZmlnLXR5cGU9ImNvbnN0cnVjdG9yIj4KICAgICAgICAgICAgICA8czpuYW1lPm91dHB1dC5wZGY8L3M6bmFtZT4KICAgICAgICAgICAgICA8czphdHRhY2htZW50SWQ+b3V0cHV0PC9zOmF0dGFjaG1lbnRJZD4KICAgICAgICAgICAgPC9hY3Rpb24+CiAgICAgIC0tPgoKICAgICAgPGFjdGlvbiBjbGFzcz0iZGUuY2l0LmludGVsbGlmb3JtLnNwYWNlcy5hY3Rpb25zLlNldEZvbGRlck1lc3NhZ2VBY3Rpb24iIGNvbmZpZy10eXBlPSJjb25zdHJ1Y3RvciI+CiAgICAgICAgPHM6dHlwZT5JTkZPPC9zOnR5cGU+CiAgICAgICAgPHM6bWVzc2FnZT5HbPxja3d1bnNjaCwgU2FzY2hhcyBXb3JrZmxvdyE8L3M6bWVzc2FnZT4KICAgICAgPC9hY3Rpb24+CgogICAgPC90cmFuc2l0aW9uPgoKICA8L3N0YXJ0LXN0YXRlPgoKCiAgPGVuZC1zdGF0ZSBuYW1lPSJFbmRlIiAvPgoKPC9wcm9jZXNzLWRlZmluaXRpb24+Cg==