<!--

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
    <title>Pulsar Manager</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>
<body>
<div>
    <p th:utext="${message}"></p>
</div>
</body>
<script th:inline="javascript">
    window.onload = function() {
        var flag = [[${flag}]]
        if (flag) {
            var userInfo = [[${userInfo}]]
            var targetOrigin = window.opener;
            targetOrigin.postMessage(userInfo, 'http://' + window.location.host);
            window.close();
        }
    }
</script>
</html>