feat: add theme
Some checks failed
ci / test (push) Has been cancelled
ci / Check if version upgrade (push) Has been cancelled
ci / create_github_release (push) Has been cancelled

This commit is contained in:
M1000fr 2024-12-13 01:35:04 +01:00
parent 8c9a19c04e
commit 264abafa9c
184 changed files with 41630 additions and 1 deletions

1
.gitignore vendored
View File

@ -52,6 +52,5 @@ jspm_packages
/dist
/dist_keycloak
/build
/storybook-static

1
dist_keycloak/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*

Binary file not shown.

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "code.ftl",
"ftlTemplateFileName": "code.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "delete-account-confirm.ftl",
"ftlTemplateFileName": "delete-account-confirm.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "delete-credential.ftl",
"ftlTemplateFileName": "delete-credential.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "error.ftl",
"ftlTemplateFileName": "error.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "frontchannel-logout.ftl",
"ftlTemplateFileName": "frontchannel-logout.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "idp-review-user-profile.ftl",
"ftlTemplateFileName": "idp-review-user-profile.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "info.ftl",
"ftlTemplateFileName": "info.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-config-totp.ftl",
"ftlTemplateFileName": "login-config-totp.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-idp-link-confirm-override.ftl",
"ftlTemplateFileName": "login-idp-link-confirm-override.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-idp-link-confirm.ftl",
"ftlTemplateFileName": "login-idp-link-confirm.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-idp-link-email.ftl",
"ftlTemplateFileName": "login-idp-link-email.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-oauth-grant.ftl",
"ftlTemplateFileName": "login-oauth-grant.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-oauth2-device-verify-user-code.ftl",
"ftlTemplateFileName": "login-oauth2-device-verify-user-code.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-otp.ftl",
"ftlTemplateFileName": "login-otp.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-page-expired.ftl",
"ftlTemplateFileName": "login-page-expired.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-passkeys-conditional-authenticate.ftl",
"ftlTemplateFileName": "login-passkeys-conditional-authenticate.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-password.ftl",
"ftlTemplateFileName": "login-password.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-recovery-authn-code-config.ftl",
"ftlTemplateFileName": "login-recovery-authn-code-config.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-recovery-authn-code-input.ftl",
"ftlTemplateFileName": "login-recovery-authn-code-input.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-reset-otp.ftl",
"ftlTemplateFileName": "login-reset-otp.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-reset-password.ftl",
"ftlTemplateFileName": "login-reset-password.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-update-password.ftl",
"ftlTemplateFileName": "login-update-password.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-update-profile.ftl",
"ftlTemplateFileName": "login-update-profile.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-username.ftl",
"ftlTemplateFileName": "login-username.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-verify-email.ftl",
"ftlTemplateFileName": "login-verify-email.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login-x509-info.ftl",
"ftlTemplateFileName": "login-x509-info.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "login.ftl",
"ftlTemplateFileName": "login.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "logout-confirm.ftl",
"ftlTemplateFileName": "logout-confirm.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,445 @@
doLogIn=\u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644
doRegister=\u062a\u0633\u062c\u064a\u0644 \u062c\u062f\u064a\u062f
doRegisterSecurityKey=\u062a\u0633\u062c\u064a\u0644 \u062c\u062f\u064a\u062f
doCancel=\u0625\u0644\u063a\u0627\u0621
doSubmit=\u0625\u0631\u0633\u0627\u0644
doBack=\u0631\u062c\u0648\u0639
doYes=\u0646\u0639\u0645
doNo=\u0644\u0627
doContinue=\u0627\u0633\u062a\u0645\u0631\u0627\u0631
doIgnore=\u062a\u062c\u0627\u0647\u0644
doAccept=\u0645\u0648\u0627\u0641\u0642\u0629
doDecline=\u0631\u0641\u0636
doForgotPassword=\u0646\u0633\u064a\u062a \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\u061f
doClickHere=\u0627\u0646\u0642\u0631 \u0647\u0646\u0627
doImpersonate=\u0627\u0646\u062a\u062d\u0627\u0644 \u0634\u062e\u0635\u064a\u0629
doTryAgain=\u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649
doTryAnotherWay=\u0627\u0644\u0645\u062c\u0627\u0648\u0644\u0629 \u0628\u0637\u0631\u064a\u0642\u0629 \u0623\u062e\u0631\u0649
doConfirmDelete=\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u062d\u0630\u0641
errorDeletingAccount=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u062d\u0630\u0641 \u0627\u0644\u062d\u0633\u0627\u0628
deletingAccountForbidden=\u0644\u064a\u0633 \u0644\u062f\u064a\u0643 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0643\u0627\u0641\u064a\u0629 \u0644\u062d\u0630\u0641 \u062d\u0633\u0627\u0628\u0643\u060c \u0642\u0645 \u0628\u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0633\u0624\u0648\u0644 \u0627\u0644\u0646\u0638\u0627\u0645.
kerberosNotConfigured=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 Kerberos
kerberosNotConfiguredTitle=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 Kerberos
bypassKerberosDetail=\u0625\u0645\u0627 \u0623\u0646\u0643 \u0644\u0645 \u062a\u0642\u0645 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 Kerberos \u0623\u0648 \u0623\u0646 \u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0645 \u064a\u062a\u0645 \u0625\u0639\u062f\u0627\u062f\u0647 \u0644\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 Kerberos. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0646\u0642\u0631 \u0639\u0644\u0649 \u0632\u0631 \u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0644\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0648\u0633\u0627\u0626\u0644 \u0623\u062e\u0631\u0649
kerberosNotSetUp=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 Kerberos. \u0644\u0627 \u064a\u0645\u0643\u0646\u0643 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644.
registerTitle=\u062a\u0633\u062c\u064a\u0644
loginAccountTitle=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0625\u0644\u0649 \u062d\u0633\u0627\u0628\u0643
loginTitle=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0625\u0644\u0649 {0}
loginTitleHtml={0}
impersonateTitle={0} \u0627\u0646\u062a\u062d\u0627\u0644 \u0634\u062e\u0635\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
impersonateTitleHtml=<strong>{0}</strong> \u0627\u0646\u062a\u062d\u0627\u0644 \u0634\u062e\u0635\u064a\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
realmChoice=\u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629
unknownUser=\u0645\u0633\u062a\u062e\u062f\u0645 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641
loginTotpTitle=\u0625\u0639\u062f\u0627\u062f \u062a\u0637\u0628\u064a\u0642 \u0647\u0627\u062a\u0641 \u0645\u0635\u0627\u062f\u0642
loginProfileTitle=\u062a\u062d\u062f\u064a\u062b \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0633\u0627\u0628
loginIdpReviewProfileTitle=\u062a\u062d\u062f\u064a\u062b \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0633\u0627\u0628
loginTimeout=\u0627\u0646\u062a\u0647\u062a \u0645\u0647\u0644\u0629 \u0645\u062d\u0627\u0648\u0644\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644. \u0633\u064a\u062a\u0645 \u0627\u0644\u0628\u062f\u0621 \u0641\u064a \u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0646 \u062c\u062f\u064a\u062f.
reauthenticate=\u064a\u0631\u062c\u0649 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0644\u0644\u0645\u062a\u0627\u0628\u0639\u0629
oauthGrantTitle=\u0645\u0646\u062d \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646\u0643 \u062a\u062b\u0642 \u0641\u064a {0} \u0645\u0646 \u062e\u0644\u0627\u0644 \u0645\u0639\u0631\u0641\u0629 \u0643\u064a\u0641 \u0633\u064a\u062a\u0639\u0627\u0645\u0644 {0} \u0645\u0639 \u0628\u064a\u0627\u0646\u0627\u062a\u0643.
oauthGrantReview=\u064a\u0645\u0643\u0646\u0643 \u0645\u0631\u0627\u062c\u0639\u0629
oauthGrantTos=\u0628\u0646\u0648\u062f \u0627\u0644\u062e\u062f\u0645\u0629.
oauthGrantPolicy=\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629.
errorTitle=\u0646\u0639\u062a\u0630\u0631...
errorTitleHtml=<strong>\u0646\u0639\u062a\u0630\u0631</strong> ...
emailVerifyTitle=\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
emailForgotTitle=\u0646\u0633\u064a\u062a \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\u061f
updateEmailTitle=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
emailUpdateConfirmationSentTitle=\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u0629 \u0627\u0644\u062a\u062d\u0642\u0642 \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
emailUpdateConfirmationSent=\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u0629 \u0627\u0644\u062a\u062d\u0642\u0642 \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0625\u0644\u0649 {0}. \u064a\u062c\u0628 \u0639\u0644\u064a\u0643 \u0627\u062a\u0628\u0627\u0639 \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0644\u0625\u0643\u0645\u0627\u0644 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.
emailUpdatedTitle=\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
emailUpdated=\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0627\u0644\u062d\u0633\u0627\u0628 \u0625\u0644\u0649 {0}.
updatePasswordTitle=\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
codeSuccessTitle=\u0631\u0645\u0632 \u0627\u0644\u0646\u062c\u0627\u062d
codeErrorTitle=\u0631\u0645\u0632 \u0627\u0644\u062e\u0637\u0623\: {0}
displayUnsupported=\u0646\u0648\u0639 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645
browserRequired=\u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0645\u0637\u0644\u0648\u0628 \u0644\u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
browserContinue=\u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0645\u0637\u0644\u0648\u0628 \u0644\u0625\u0643\u0645\u0627\u0644 \u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
browserContinuePrompt=\u0641\u062a\u062d \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0644\u0625\u0643\u0645\u0627\u0644 \u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644\u061f [\u0646/\u0644]\:
browserContinueAnswer=\u0646
usb=\u0645\u0646\u0641\u0630 USB
nfc=\u0642\u0627\u0631\u0626 \u0628\u0637\u0627\u0642\u0629 NFC
bluetooth=\u0628\u0644\u0648\u062a\u0648\u062b
internal=\u062f\u0627\u062e\u0644\u064a
unknown=\u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641
termsTitle=\u0627\u0644\u0634\u0631\u0648\u0637 \u0648\u0627\u0644\u0623\u062d\u0643\u0627\u0645
termsText=
termsPlainText=\u064a\u062c\u0628 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0634\u0631\u0648\u0637 \u0648\u0627\u0644\u0623\u062d\u0643\u0627\u0645.
termsAcceptanceRequired=\u064a\u062c\u0628 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0631\u0648\u0637 \u0648\u0627\u0644\u0623\u062d\u0643\u0627\u0645.
acceptTerms=\u0623\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0627\u0644\u0634\u0631\u0648\u0637 \u0648\u0627\u0644\u0623\u062d\u0643\u0627\u0645
recaptchaFailed=\u0641\u0634\u0644 \u0641\u064a \u0627\u062e\u062a\u0628\u0627\u0631 Recaptcha
recaptchaNotConfigured=\u0645\u0637\u0644\u0648\u0628 \u0627\u062e\u062a\u0628\u0627\u0631 Recaptcha\u060c \u0648\u0644\u0643\u0646 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0643\u0648\u064a\u0646\u0647
consentDenied=\u062a\u0645 \u0631\u0641\u0636 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629.
noAccount=\u0645\u0633\u062a\u062e\u062f\u0645 \u062c\u062f\u064a\u062f\u061f
username=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
usernameOrEmail=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
firstName=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644
givenName=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644
fullName=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0643\u0627\u0645\u0644
lastName=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u062e\u064a\u0631
familyName=\u0627\u0633\u0645 \u0627\u0644\u0639\u0627\u0626\u0644\u0629
email=\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
passwordConfirm=\u062a\u0623\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
passwordNew=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u062c\u062f\u064a\u062f\u0629
passwordNewConfirm=\u062a\u0623\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062c\u062f\u064a\u062f\u0629
hidePassword=\u0625\u062e\u0641\u0627\u0621 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
showPassword=\u0625\u0638\u0647\u0627\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
rememberMe=\u062a\u0630\u0643\u0631\u0646\u064a
authenticatorCode=\u0631\u0645\u0632 \u0644\u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629
address=\u0627\u0644\u0639\u0646\u0648\u0627\u0646
street=\u0627\u0644\u0634\u0627\u0631\u0639
locality=\u0627\u0644\u0645\u062f\u064a\u0646\u0629
region=\u0627\u0644\u0648\u0644\u0627\u064a\u0629 \u0623\u0648 \u0627\u0644\u0645\u0646\u0637\u0642\u0629
postal_code=\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a
country=\u0627\u0644\u062f\u0648\u0644\u0629
emailVerified=\u062a\u0645 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
website=\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
phoneNumber=\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641
phoneNumberVerified=\u062a\u0645 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641
gender=\u0627\u0644\u062c\u0646\u0633
birthday=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0645\u064a\u0644\u0627\u062f
zoneinfo=\u0627\u0644\u062a\u0648\u0642\u064a\u062a
gssDelegationCredential=\u062a\u0641\u0648\u064a\u0636 \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f GSS
logoutOtherSessions=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0623\u062e\u0631\u0649
profileScopeConsentText=\u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641\u064a \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645
emailScopeConsentText=\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
addressScopeConsentText=\u0627\u0644\u0639\u0646\u0648\u0627\u0646
phoneScopeConsentText=\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641
offlineAccessScopeConsentText=\u0627\u0644\u0648\u0635\u0648\u0644 \u062f\u0648\u0646 \u0627\u062a\u0635\u0627\u0644
samlRoleListScopeConsentText=\u0627\u0644\u0623\u062f\u0648\u0627\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u064a
rolesScopeConsentText=\u0623\u062f\u0648\u0627\u0631 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
restartLoginTooltip=\u0625\u0639\u0627\u062f\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
loginTotpIntro=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0625\u0639\u062f\u0627\u062f \u0645\u0648\u0644\u0651\u062f \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0644\u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629 \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062d\u0633\u0627\u0628
loginTotpStep1=\u0642\u0645 \u0628\u062a\u062b\u0628\u064a\u062a \u0625\u062d\u062f\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0639\u0644\u0649 \u0647\u0627\u062a\u0641\u0643 \u0627\u0644\u0645\u062a\u0646\u0642\u0644\:
loginTotpStep2=\u0627\u0641\u062a\u062d \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062b\u0645 \u0627\u0645\u0633\u062d \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629\:
loginTotpStep3=\u0623\u062f\u062e\u0644 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 \u0630\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0648\u0627\u062d\u062f \u0648\u0627\u0644\u0635\u0627\u062f\u0631 \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062b\u0645 \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u0632\u0631 \u0627\u0644\u062d\u0641\u0638 \u0644\u0625\u062a\u0645\u0627\u0645 \u0627\u0644\u0625\u0639\u062f\u0627\u062f.
loginTotpStep3DeviceName=\u0636\u0639 \u0627\u0633\u0645\u064b\u0627 \u0644\u0644\u062c\u0647\u0627\u0632 \u062d\u062a\u0649 \u064a\u0633\u0647\u0644 \u0639\u0644\u064a\u0643 \u0625\u062f\u0627\u0631\u0629 \u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629.
loginTotpManualStep2=\u0627\u0641\u062a\u062d \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u062b\u0645 \u0623\u062f\u062e\u0644 \u0627\u0644\u0645\u0641\u062a\u0627\u062d\:
loginTotpManualStep3=\u0627\u0633\u062a\u062e\u062f\u0645 \u0642\u064a\u0645 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0625\u0630\u0627 \u0633\u0645\u062d \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0628\u062a\u0639\u064a\u064a\u0646\u0647\u0627\:
loginTotpUnableToScan=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0627\u0644\u0645\u0633\u062d\u061f
loginTotpScanBarcode=\u0645\u0633\u062d \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629\u061f
loginCredential=\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644
loginOtpOneTime=\u0631\u0645\u0632 \u0644\u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629
loginTotpType=\u0627\u0644\u0646\u0648\u0639
loginTotpAlgorithm=\u0627\u0644\u062e\u0648\u0627\u0631\u0632\u0645\u064a\u0629
loginTotpDigits=\u0639\u062f\u062f \u0627\u0644\u062e\u0627\u0646\u0627\u062a
loginTotpInterval=\u0627\u0644\u0645\u062f\u0629 \u0627\u0644\u0632\u0645\u0646\u064a\u0629
loginTotpCounter=\u0627\u0644\u0639\u062f\u0627\u062f
loginTotpDeviceName=\u0627\u0633\u0645 \u0627\u0644\u062c\u0647\u0627\u0632
loginTotp.totp=\u0639\u0644\u0649 \u0623\u0633\u0627\u0633 \u0627\u0644\u0648\u0642\u062a
loginTotp.hotp=\u0639\u0644\u0649 \u0623\u0633\u0627\u0633 \u0627\u0644\u0639\u062f\u0627\u062f
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u062d\u062f\u062f \u0637\u0631\u064a\u0642\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
oauthGrantRequest=\u0647\u0644 \u062a\u0648\u062f \u0645\u0646\u062d \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 \u0647\u0630\u0647\u061f
inResource=\u0641\u064a
oauth2DeviceVerificationTitle=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u0623\u062c\u0647\u0632\u0629
verifyOAuth2DeviceUserCode=\u0623\u062f\u062e\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0638\u0627\u0647\u0631 \u0639\u0644\u0649 \u062c\u0647\u0627\u0632\u0643 \u062b\u0645 \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u0632\u0631 \u0627\u0644\u0625\u0631\u0633\u0627\u0644
oauth2DeviceInvalidUserCodeMessage=\u0631\u0645\u0632 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u060c \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.
oauth2DeviceExpiredUserCodeMessage=\u0627\u0646\u062a\u0647\u062a \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0631\u0645\u0632. \u064a\u0631\u062c\u0649 \u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u062c\u0647\u0627\u0632\u0643 \u062b\u0645 \u0645\u062d\u0627\u0648\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.
oauth2DeviceVerificationCompleteHeader=\u062a\u0645 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u062c\u0647\u0627\u0632 \u0628\u0646\u062c\u0627\u062d
oauth2DeviceVerificationCompleteMessage=\u064a\u0645\u0643\u0646\u0643 \u0625\u063a\u0644\u0627\u0642 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0647\u0630\u0647 \u0648\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u062c\u0647\u0627\u0632\u0643.
oauth2DeviceVerificationFailedHeader=\u0641\u0634\u0644 \u0641\u064a \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u062c\u0647\u0627\u0632
oauth2DeviceVerificationFailedMessage=\u064a\u0645\u0643\u0646\u0643 \u0625\u063a\u0644\u0627\u0642 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0647\u0630\u0647 \u0648\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u062c\u0647\u0627\u0632\u0643 \u0648\u0645\u062d\u0627\u0648\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.
oauth2DeviceConsentDeniedMessage=\u062a\u0645 \u0631\u0641\u0636 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062c\u0647\u0627\u0632.
oauth2DeviceAuthorizationGrantDisabledMessage=\u0644\u0627 \u064a\u064f\u0633\u0645\u062d \u0644\u0644\u0639\u0645\u064a\u0644 \u0628\u0628\u062f\u0621 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 OAuth 2.0 Device Authorization Grant\u060c \u062d\u064a\u062b \u0623\u0646\u0647 \u0645\u0639\u0637\u0644.
emailVerifyInstruction1=\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0628\u0631\u064a\u062f \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0625\u0631\u0634\u0627\u062f\u0627\u062a \u0644\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0625\u0644\u0649 \u0639\u0646\u0648\u0627\u0646\u0643 {0}.
emailVerifyInstruction2=\u0623\u0644\u0645 \u062a\u0633\u062a\u0644\u0645 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 \u0639\u0644\u0649 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u061f
emailVerifyInstruction3=\u0644\u0625\u0639\u0627\u062f\u0629 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.
emailLinkIdpTitle=\u0631\u0628\u0637 {0}
emailLinkIdp1=\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u0629 \u0628\u0631\u064a\u062f \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0628\u0647\u0627 \u0625\u0631\u0634\u0627\u062f\u0627\u062a \u0644\u0631\u0628\u0637 \u0627\u0644\u062d\u0633\u0627\u0628 {0} ({1}) \u0628\u0627\u0644\u062d\u0633\u0627\u0628 {2} \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.
emailLinkIdp2=\u0623\u0644\u0645 \u062a\u0633\u062a\u0644\u0645 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 \u0639\u0644\u0649 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u061f
emailLinkIdp3=\u0644\u0625\u0639\u0627\u062f\u0629 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.
emailLinkIdp4=\u0625\u0630\u0627 \u0643\u0646\u062a \u0642\u062f \u062a\u062d\u0642\u0642\u062a \u0628\u0627\u0644\u0641\u0639\u0644 \u0645\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0641\u064a \u0645\u062a\u0635\u0641\u062d \u0645\u062e\u062a\u0644\u0641
emailLinkIdp5=\u0644\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631.
backToLogin=&raquo; \u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
emailInstruction=\u0623\u062f\u062e\u0644 \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0648\u0633\u0646\u0631\u0633\u0644 \u0644\u0643 \u062a\u0639\u0644\u064a\u0645\u0627\u062a \u062d\u0648\u0644 \u0643\u064a\u0641\u064a\u0629 \u0625\u0646\u0634\u0627\u0621 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u062c\u062f\u064a\u062f\u0629.
emailInstructionUsername=\u0623\u062f\u062e\u0644 \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0648\u0633\u0646\u0631\u0633\u0644 \u0644\u0643 \u062a\u0639\u0644\u064a\u0645\u0627\u062a \u062d\u0648\u0644 \u0643\u064a\u0641\u064a\u0629 \u0625\u0646\u0634\u0627\u0621 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u062c\u062f\u064a\u062f\u0629.
copyCodeInstruction=\u064a\u0631\u062c\u0649 \u0646\u0633\u062e \u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u0648\u0644\u0635\u0642\u0647 \u0641\u064a \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643\:
pageExpiredTitle=\u0627\u0646\u062a\u0647\u062a \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0635\u0641\u062d\u0629
pageExpiredMsg1=\u0644\u0625\u0639\u0627\u062f\u0629 \u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
pageExpiredMsg2=\u0644\u0645\u0648\u0627\u0635\u0644\u0629 \u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
personalInfo=\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0634\u062e\u0635\u064a\u0629\:
role_admin=\u0645\u0633\u0624\u0648\u0644
role_realm-admin=\u0645\u0633\u0624\u0648\u0644 \u0645\u0646\u0638\u0648\u0645\u0629
role_create-realm=\u0625\u0646\u0634\u0627\u0621 \u0645\u0646\u0638\u0648\u0645\u0629
role_create-client=\u0625\u0646\u0634\u0627\u0621 \u0639\u0645\u064a\u0644
role_view-realm=\u0639\u0631\u0636 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629
role_view-users=\u0639\u0631\u0636 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646
role_view-applications=\u0639\u0631\u0636 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a
role_view-clients=\u0639\u0631\u0636 \u0627\u0644\u0639\u0645\u0644\u0627\u0621
role_view-events=\u0639\u0631\u0636 \u0627\u0644\u0623\u062d\u062f\u0627\u062b
role_view-identity-providers=\u0639\u0631\u0636 \u0645\u0632\u0648\u062f\u064a \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a
role_manage-realm=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629
role_manage-users=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646
role_manage-applications=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a
role_manage-identity-providers=\u0625\u062f\u0627\u0631\u0629 \u0645\u0632\u0648\u062f\u064a \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a
role_manage-clients=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0639\u0645\u0644\u0627\u0621
role_manage-events=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0623\u062d\u062f\u0627\u062b
role_view-profile=\u0639\u0631\u0636 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a
role_manage-account=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062d\u0633\u0627\u0628
role_manage-account-links=\u0625\u062f\u0627\u0631\u0629 \u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a \u0627\u0644\u062d\u0633\u0627\u0628
role_read-token=\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0631\u0645\u0632
role_offline-access=\u0627\u0644\u0648\u0635\u0648\u0644 \u062f\u0648\u0646 \u0627\u062a\u0635\u0627\u0644
client_account=\u0627\u0644\u062d\u0633\u0627\u0628
client_account-console=\u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0628\u0627\u0644\u062d\u0633\u0627\u0628
client_security-admin-console=\u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0628\u0623\u0645\u0627\u0646 \u0627\u0644\u0645\u0633\u0624\u0648\u0644
client_admin-cli=\u0648\u0627\u062c\u0647\u0629 \u0633\u0637\u0631 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0644\u0644\u0645\u0633\u0624\u0648\u0644
client_realm-management=\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629
client_broker=\u0648\u0633\u064a\u0637
requiredFields=\u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629
invalidUserMessage=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.
invalidUsernameMessage=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
invalidUsernameOrEmailMessage=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
invalidPasswordMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.
invalidEmailMessage=\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
accountDisabledMessage=\u0627\u0644\u062d\u0633\u0627\u0628 \u0645\u0639\u0637\u0644\u060c \u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0633\u0624\u0648\u0644 \u0627\u0644\u0646\u0638\u0627\u0645.
accountTemporarilyDisabledMessage=\u0627\u0644\u062d\u0633\u0627\u0628 \u0645\u0639\u0637\u0644 \u0645\u0624\u0642\u062a\u064b\u0627\u060c \u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0633\u0624\u0648\u0644 \u0627\u0644\u0646\u0638\u0627\u0645 \u0623\u0648 \u062d\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0644\u0627\u062d\u0642\u064b\u0627.
expiredCodeMessage=\u0646\u0641\u0630 \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0644\u0644\u062f\u062e\u0648\u0644. \u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.
expiredActionMessage=\u0627\u0646\u062a\u0647\u0649 \u0627\u0644\u0625\u062c\u0631\u0627\u0621. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0641\u064a \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0627\u0644\u0622\u0646.
expiredActionTokenNoSessionMessage=\u0627\u0646\u062a\u0647\u0649 \u0627\u0644\u0625\u062c\u0631\u0627\u0621.
expiredActionTokenSessionExistsMessage=\u0627\u0646\u062a\u0647\u0649 \u0627\u0644\u0625\u062c\u0631\u0627\u0621. \u064a\u0631\u062c\u0649 \u0627\u0644\u0628\u062f\u0621 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.
sessionLimitExceeded=\u0647\u0646\u0627\u0643 \u062c\u0644\u0633\u0627\u062a \u0643\u062b\u064a\u0631\u0629 \u062c\u062f\u064b\u0627
missingFirstNameMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644.
missingLastNameMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u062e\u064a\u0631.
missingEmailMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.
missingUsernameMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645.
missingPasswordMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.
missingTotpMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642.
missingTotpDeviceNameMessage=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0633\u0645 \u0627\u0644\u062c\u0647\u0627\u0632.
notMatchPasswordMessage=\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0645\u062a\u0637\u0627\u0628\u0642\u0629.
error-invalid-value=\u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.
error-invalid-blank=\u064a\u0631\u062c\u0649 \u062a\u062d\u062f\u064a\u062f \u0642\u064a\u0645\u0629.
error-empty=\u064a\u0631\u062c\u0649 \u062a\u062d\u062f\u064a\u062f \u0642\u064a\u0645\u0629.
error-invalid-length=\u0627\u0644\u0637\u0648\u0644 \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0628\u064a\u0646 {1} \u0648 {2}.
error-invalid-length-too-short=\u0627\u0644\u0637\u0648\u0644 \u064a\u062c\u0628 \u0623\u0644\u0627 \u064a\u0642\u0644 \u0639\u0646 {1}.
error-invalid-length-too-long=\u0627\u0644\u0637\u0648\u0644 \u064a\u062c\u0628 \u0623\u0644\u0627 \u064a\u0632\u064a\u062f \u0639\u0646 {2}.
error-invalid-email=\u0628\u0631\u064a\u062f \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-invalid-number=\u0631\u0642\u0645 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-number-out-of-range=\u0627\u0644\u0631\u0642\u0645 \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0628\u064a\u0646 {1} \u0648 {2}.
error-number-out-of-range-too-small=\u0627\u0644\u0631\u0642\u0645 \u064a\u062c\u0628 \u0623\u0644\u0627 \u062a\u0642\u0644 \u0642\u064a\u0645\u062a\u0647 \u0639\u0646 {1}.
error-number-out-of-range-too-big=\u0627\u0644\u0631\u0642\u0645 \u064a\u062c\u0628 \u0623\u0644\u0627 \u062a\u0632\u064a\u062f \u0642\u064a\u0645\u062a\u0647 \u0639\u0646 {2}.
error-pattern-no-match=\u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.
error-invalid-uri=\u0639\u0646\u0648\u0627\u0646 \u0645\u0648\u0642\u0639 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-invalid-uri-scheme=\u0628\u0627\u062f\u0626\u0629 \u0639\u0646\u0648\u0627\u0646 \u0645\u0648\u0642\u0639 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.
error-invalid-uri-fragment=\u0645\u0644\u062d\u0642 \u0639\u0646\u0648\u0627\u0646 \u0645\u0648\u0642\u0639 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-user-attribute-required=\u064a\u0631\u062c\u0649 \u062a\u062d\u062f\u064a\u062f \u0647\u0630\u0627 \u0627\u0644\u062d\u0642\u0644.
error-invalid-date=\u062a\u0627\u0631\u064a\u062e \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-user-attribute-read-only=\u0647\u0630\u0627 \u0627\u0644\u062d\u0642\u0644 \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637.
error-username-invalid-character=\u0627\u0644\u0642\u064a\u0645\u0629 \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u062d\u0631\u0641 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-person-name-invalid-character=\u0627\u0644\u0642\u064a\u0645\u0629 \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u062d\u0631\u0641 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
error-reset-otp-missing-id=\u064a\u0631\u062c\u0649 \u0627\u062e\u062a\u064a\u0627\u0631 \u0625\u0639\u062f\u0627\u062f \u0644\u062e\u0627\u0635\u064a\u0629 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642.
invalidPasswordExistingMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.
invalidPasswordBlacklistedMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0641\u064a \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0633\u0648\u062f\u0627\u0621.
invalidPasswordConfirmMessage=\u062a\u0623\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0645\u062a\u0637\u0627\u0628\u0642.
invalidTotpMessage=\u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
usernameExistsMessage=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0633\u0628\u0642\u064b\u0627.
emailExistsMessage=\u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0633\u0628\u0642\u064b\u0627.
federatedIdentityExistsMessage=\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0635\u0627\u062d\u0628 ({0}\: {1}) \u0645\u0648\u062c\u0648\u062f \u0645\u0633\u0628\u0642\u064b\u0627. \u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0625\u0644\u0649 \u0635\u0641\u062d\u0629 \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062d\u0633\u0627\u0628 \u0644\u0631\u0628\u0637 \u0627\u0644\u062d\u0633\u0627\u0628.
federatedIdentityUnavailableMessage=\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 {0} \u0627\u0644\u0645\u0635\u0627\u062f\u0642 \u0639\u0644\u064a\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a {1} \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0633\u0624\u0648\u0644 \u0627\u0644\u0646\u0638\u0627\u0645.
federatedIdentityUnmatchedEssentialClaimMessage=\u0631\u0645\u0632 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0644\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0630\u064a \u062a\u0645 \u0625\u0635\u062f\u0627\u0631\u0647 \u0645\u0646 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a \u0644\u0627 \u064a\u062a\u0637\u0627\u0628\u0642 \u0645\u0639 \u0627\u0644\u0642\u064a\u0645 \u0627\u0644\u062a\u064a \u0625\u0639\u062f\u0627\u062f\u0647\u0627 \u0645\u0633\u0628\u0642\u064b\u0627. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0633\u0624\u0648\u0644 \u0627\u0644\u0646\u0638\u0627\u0645.
confirmLinkIdpTitle=\u0627\u0644\u062d\u0633\u0627\u0628 \u0645\u0648\u062c\u0648\u062f \u0645\u0633\u0628\u0642\u064b\u0627
federatedIdentityConfirmLinkMessage=\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0635\u0627\u062d\u0628 ({0}\: {1}) \u0645\u0648\u062c\u0648\u062f \u0645\u0633\u0628\u0642\u064b\u0627. \u0643\u064a\u0641 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u061f
federatedIdentityConfirmReauthenticateMessage=\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0644\u0631\u0628\u0637 \u062d\u0633\u0627\u0628\u0643 \u0628\u0640 {0}
nestedFirstBrokerFlowMessage=\u0644\u0645 \u064a\u062a\u0645 \u0631\u0628\u0637 \u0645\u0633\u062a\u062e\u062f\u0645 {0} ({1}) \u0628\u0623\u064a \u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0639\u0631\u0648\u0641.
confirmLinkIdpReviewProfile=\u0645\u0631\u0627\u062c\u0639\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a
confirmLinkIdpContinue=\u0625\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0627\u0644\u062d\u0633\u0627\u0628 \u0627\u0644\u062d\u0627\u0644\u064a
configureTotpMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0628\u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0630\u0643\u064a \u0644\u062a\u0641\u0639\u064a\u0644 \u062d\u0633\u0627\u0628\u0643.
configureBackupCodesMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0625\u0639\u062f\u0627\u062f \u0631\u0645\u0648\u0632 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629 \u0644\u062a\u0641\u0639\u064a\u0644 \u062d\u0633\u0627\u0628\u0643.
updateProfileMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0644\u062a\u0641\u0639\u064a\u0644 \u062d\u0633\u0627\u0628\u0643.
updatePasswordMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u062d\u062f\u064a\u062b \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u062a\u0641\u0639\u064a\u0644 \u062d\u0633\u0627\u0628\u0643.
updateEmailMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0644\u062a\u0641\u0639\u064a\u0644 \u062d\u0633\u0627\u0628\u0643.
resetPasswordMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u062d\u062f\u064a\u062b \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643.
verifyEmailMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0644\u062a\u0641\u0639\u064a\u0644 \u062d\u0633\u0627\u0628\u0643.
linkIdpMessage=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0644\u0631\u0628\u0637 \u062d\u0633\u0627\u0628\u0643 \u0628\u0640 {0}.
emailSentMessage=\u0645\u0646 \u0627\u0644\u0645\u0641\u062a\u0631\u0636 \u0623\u0646 \u062a\u062a\u0644\u0642\u0649 \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0645\u0627 \u0642\u0631\u064a\u0628 \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0625\u0631\u0634\u0627\u062f\u0627\u062a.
emailSendErrorMessage=\u0641\u0634\u0644 \u0641\u064a \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u060c \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0641\u064a \u0648\u0642\u062a \u0644\u0627\u062d\u0642.
accountUpdatedMessage=\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062d\u0633\u0627\u0628 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.
accountPasswordUpdatedMessage=\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643.
delegationCompleteHeader=\u062a\u0645 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0646\u062c\u0627\u062d
delegationCompleteMessage=\u064a\u0645\u0643\u0646\u0643 \u0625\u063a\u0644\u0627\u0642 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0647\u0630\u0647 \u0648\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u062a\u0637\u0628\u064a\u0642 \u0648\u062d\u062f\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643.
delegationFailedHeader=\u0641\u0634\u0644 \u0641\u064a \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644
delegationFailedMessage=\u064a\u0645\u0643\u0646\u0643 \u0625\u063a\u0644\u0627\u0642 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0647\u0630\u0647 \u0648\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u062a\u0637\u0628\u064a\u0642 \u0648\u062d\u062f\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0648\u0645\u062d\u0627\u0648\u0644\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.
noAccessMessage=\u0644\u0627 \u0648\u0635\u0648\u0644
invalidPasswordMinLengthMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0644\u0637\u0648\u0644 {0}.
invalidPasswordMaxLengthMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0637\u0648\u0644 {0}.
invalidPasswordMinDigitsMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0646 \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 {0} \u0623\u0631\u0642\u0627\u0645 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.
invalidPasswordMinLowerCaseCharsMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0646 \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 {0} \u062d\u0631\u0648\u0641 \u0635\u063a\u064a\u0631\u0629 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.
invalidPasswordMinUpperCaseCharsMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0646 \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 {0} \u062d\u0631\u0648\u0641 \u0643\u0628\u064a\u0631\u0629 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.
invalidPasswordMinSpecialCharsMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0646 \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 {0} \u0631\u0645\u0648\u0632 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644.
invalidPasswordNotUsernameMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0644\u0627 \u062a\u0643\u0648\u0646 \u0645\u0637\u0627\u0628\u0642\u0629 \u0644\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645.
invalidPasswordNotEmailMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0644\u0627 \u062a\u0643\u0648\u0646 \u0645\u0637\u0627\u0628\u0642\u0629 \u0644\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.
invalidPasswordRegexPatternMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0644\u0627 \u062a\u0643\u0648\u0646 \u0645\u0637\u0627\u0628\u0642\u0629 \u0644\u0644\u0623\u0646\u0645\u0627\u0637 \u0627\u0644\u0645\u062d\u062f\u062f\u0629.
invalidPasswordHistoryMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u064a\u062c\u0628 \u0623\u0644\u0627 \u062a\u0643\u0648\u0646 \u0645\u0637\u0627\u0628\u0642\u0629 \u0644\u0623\u064a \u0645\u0646 \u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u0640 {0} \u0627\u0644\u0623\u062e\u064a\u0631\u0629.
invalidPasswordGenericMessage=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629\: \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0644\u0627 \u062a\u062a\u0637\u0627\u0628\u0642 \u0645\u0639 \u0633\u064a\u0627\u0633\u0627\u062a \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.
failedToProcessResponseMessage=\u0641\u0634\u0644 \u0641\u064a \u0645\u0639\u0627\u0644\u062c\u0629 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629
httpsRequiredMessage=\u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 HTTPS \u0645\u0637\u0644\u0648\u0628
realmNotEnabledMessage=\u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629 \u063a\u064a\u0631 \u0645\u0641\u0639\u0644\u0629
invalidRequestMessage=\u0637\u0644\u0628 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
successLogout=\u0644\u0642\u062f \u0642\u0645\u062a \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
failedLogout=\u0641\u0634\u0644 \u0641\u064a \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
unknownLoginRequesterMessage=\u0637\u0627\u0644\u0628 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641
loginRequesterNotEnabledMessage=\u0637\u0627\u0644\u0628 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u063a\u064a\u0631 \u0645\u0641\u0639\u0644
bearerOnlyMessage=\u0644\u0627 \u064a\u0633\u0645\u062d \u0644\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a Bearer-only \u0628\u0628\u062f\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0645\u062a\u0635\u0641\u062d
standardFlowDisabledMessage=\u0644\u0627 \u064a\u0633\u0645\u062d \u0644\u0644\u0639\u0645\u064a\u0644 \u0628\u0628\u062f\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0645\u0639 \u0642\u064a\u0645\u0629 response_type \u0627\u0644\u0645\u0639\u0637\u0627\u0629. \u062a\u0645 \u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0627\u0644\u0642\u064a\u0627\u0633\u064a standard flow \u0644\u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u064a\u0644.
implicitFlowDisabledMessage=\u0644\u0627 \u064a\u0633\u0645\u062d \u0644\u0644\u0639\u0645\u064a\u0644 \u0628\u0628\u062f\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0645\u0639 \u0642\u064a\u0645\u0629 response_type \u0627\u0644\u0645\u0639\u0637\u0627\u0629. \u062a\u0645 \u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0627\u0644\u0636\u0645\u0646\u064a implicit flow \u0644\u0647\u0630\u0627 \u0627\u0644\u0639\u0645\u064a\u0644.
invalidRedirectUriMessage=\u0631\u0627\u0628\u0637 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0648\u062c\u064a\u0647 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
unsupportedNameIdFormatMessage=\u0635\u064a\u063a\u0629 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645\u0629 \u0644\u0644\u0642\u064a\u0645\u0629 NameID
invalidRequesterMessage=\u0637\u0627\u0644\u0628 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
registrationNotAllowedMessage=\u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647
resetCredentialNotAllowedMessage=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644 \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647
permissionNotApprovedMessage=\u0644\u0645 \u062a\u062a\u0645 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0627\u0644\u0625\u0630\u0646.
noRelayStateInResponseMessage=\u0644\u0627 \u062a\u0648\u0627\u062c\u062f \u0644\u0642\u064a\u0645\u0629 Relay State \u0641\u064a \u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
insufficientPermissionMessage=\u0623\u0630\u0648\u0646\u0627\u062a \u063a\u064a\u0631 \u0643\u0627\u0641\u064a\u0629 \u0644\u0631\u0628\u0637 \u0627\u0644\u0647\u0648\u064a\u0627\u062a.
couldNotProceedWithAuthenticationRequestMessage=\u062a\u0639\u0630\u0631\u062a \u0645\u062a\u0627\u0628\u0639\u0629 \u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0644\u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
couldNotObtainTokenMessage=\u062a\u0639\u0630\u0631 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0646 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
unexpectedErrorRetrievingTokenMessage=\u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0639 \u0639\u0646\u062f \u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0631\u0645\u0632 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0646 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
unexpectedErrorHandlingResponseMessage=\u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0639 \u0639\u0646\u062f \u0627\u0644\u062a\u0639\u0627\u0645\u0644 \u0645\u0639 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0645\u0646 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
identityProviderAuthenticationFailedMessage=\u0641\u0634\u0644\u062a \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629. \u062a\u0639\u0630\u0631\u062a \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0639 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
couldNotSendAuthenticationRequestMessage=\u062a\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0625\u0644\u0649 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
unexpectedErrorHandlingRequestMessage=\u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0639 \u0639\u0646\u062f \u0645\u0639\u0627\u0644\u062c\u0629 \u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0644\u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
invalidAccessCodeMessage=\u0631\u0645\u0632 \u0627\u0644\u0648\u0635\u0648\u0644 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
sessionNotActiveMessage=\u0627\u0644\u062c\u0644\u0633\u0629 \u063a\u064a\u0631 \u0646\u0634\u0637\u0629.
invalidCodeMessage=\u062d\u062f\u062b \u062e\u0637\u0623\u060c \u064a\u0631\u062c\u0649 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.
cookieNotFoundMessage=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0627\u0631\u062a\u0628\u0627\u0637. \u064a\u0631\u062c\u0649 \u0627\u0644\u062a\u0623\u0643\u062f \u0645\u0646 \u062a\u0645\u0643\u064a\u0646 \u0645\u0644\u0641\u0627\u062a \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0627\u0631\u062a\u0628\u0627\u0637 \u0641\u064a \u0645\u062a\u0635\u0641\u062d\u0643.
insufficientLevelOfAuthentication=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u064a\u0641\u0627\u0621 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0645\u0637\u0644\u0648\u0628.
identityProviderUnexpectedErrorMessage=\u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u062a\u0648\u0642\u0639 \u0639\u0646\u062f \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0639 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a
identityProviderMissingStateMessage=\u0627\u0644\u0645\u0639\u0627\u0645\u0644 state \u0645\u0641\u0642\u0648\u062f \u0641\u064a \u0631\u062f \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
identityProviderMissingCodeOrErrorMessage=\u0627\u0644\u0645\u0639\u0627\u0645\u0644 code \u0623\u0648 error \u0645\u0641\u0642\u0648\u062f \u0641\u064a \u0631\u062f \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
identityProviderInvalidResponseMessage=\u0631\u062f \u063a\u064a\u0631 \u0635\u0627\u0644\u062d \u0645\u0646 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
identityProviderInvalidSignatureMessage=\u062a\u0648\u0642\u064a\u0639 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d \u0641\u064a \u0631\u062f \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a.
identityProviderNotFoundMessage=\u062a\u0639\u0630\u0631 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a \u0628\u0627\u0644\u0645\u0639\u0631\u0641.
identityProviderLinkSuccess=\u0644\u0642\u062f \u0646\u062c\u062d\u062a \u0641\u064a \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a. \u064a\u0631\u062c\u0649 \u0627\u0644\u0631\u062c\u0648\u0639 \u0625\u0644\u0649 \u0645\u062a\u0635\u0641\u062d\u0643 \u0648\u0627\u0644\u0645\u062a\u0627\u0628\u0639\u0629 \u0647\u0646\u0627\u0643 \u0641\u064a \u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644.
staleCodeMessage=\u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062d\u0629 \u0644\u0645 \u062a\u0639\u062f \u0635\u0627\u0644\u062d\u0629\u060c \u064a\u0631\u062c\u0649 \u0627\u0644\u0631\u062c\u0648\u0639 \u0625\u0644\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0648\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649
realmSupportsNoCredentialsMessage=\u0644\u0627 \u062a\u062f\u0639\u0645 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629 \u0623\u064a \u0646\u0648\u0639 \u0645\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644.
credentialSetupRequired=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644\u060c \u0645\u0637\u0644\u0648\u0628 \u0625\u0639\u062f\u0627\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u062e\u0648\u0644.
identityProviderNotUniqueMessage=\u062a\u062f\u0639\u0645 \u0627\u0644\u0645\u0646\u0638\u0648\u0645\u0629 \u0639\u062f\u0629 \u0645\u0632\u0648\u062f\u064a \u062d\u0633\u0627\u0628\u0627\u062a. \u062a\u0639\u0630\u0631 \u062a\u062d\u062f\u064a\u062f \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a \u0627\u0644\u0630\u064a \u064a\u062c\u0628 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0644\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0639\u0647.
emailVerifiedMessage=\u062a\u0645 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.
emailVerifiedAlreadyMessage=\u062a\u0645 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0645\u0633\u0628\u0642\u064b\u0627.
staleEmailVerificationLink=\u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0646\u0642\u0631\u062a \u0639\u0644\u064a\u0647 \u0647\u0648 \u0631\u0627\u0628\u0637 \u0642\u062f\u064a\u0645 \u0648\u0644\u0645 \u064a\u0639\u062f \u0635\u0627\u0644\u062d\u064b\u0627. \u0631\u0628\u0645\u0627 \u062a\u0643\u0648\u0646 \u0642\u062f \u062a\u062d\u0642\u0642\u062a \u0645\u0633\u0628\u0642\u064b\u0627 \u0645\u0646 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a.
identityProviderAlreadyLinkedMessage=\u0627\u0644\u0647\u0648\u064a\u0629 \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u0627\u0644\u062a\u064a \u0623\u0631\u062c\u0639\u0647\u0627 {0} \u0645\u0631\u062a\u0628\u0637\u0629 \u0645\u0633\u0628\u0642\u064b\u0627 \u0628\u0645\u0633\u062a\u062e\u062f\u0645 \u0622\u062e\u0631.
confirmAccountLinking=\u062a\u0623\u0643\u064a\u062f \u0631\u0628\u0637 \u0627\u0644\u062d\u0633\u0627\u0628 {0} \u0645\u0646 \u0645\u0632\u0648\u062f \u0627\u0644\u062d\u0633\u0627\u0628\u0627\u062a {1} \u0645\u0639 \u062d\u0633\u0627\u0628\u0643.
confirmEmailAddressVerification=\u062a\u0623\u0643\u062f \u0645\u0646 \u0635\u062d\u0629 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a {0}.
confirmExecutionOfActions=\u0642\u0645 \u0628\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629
backToApplication=&raquo; \u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642
missingParameterMessage=\u0639\u0648\u0627\u0645\u0644 \u0645\u0641\u0642\u0648\u062f\u0629\: {0}
clientNotFoundMessage=\u0627\u0644\u0639\u0645\u064a\u0644 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f.
clientDisabledMessage=\u0627\u0644\u0639\u0645\u064a\u0644 \u0645\u0639\u0637\u0644.
invalidParameterMessage=\u0639\u0627\u0645\u0644 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\: {0}
alreadyLoggedIn=\u0644\u0642\u062f \u0642\u0645\u062a \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0633\u0628\u0642\u064b\u0627.
differentUserAuthenticated=\u0644\u0642\u062f \u062a\u0645\u062a \u0645\u0635\u0627\u062f\u0642\u062a\u0643 \u0645\u0633\u0628\u0642\u064b\u0627 \u0643\u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u062e\u062a\u0644\u0641 '' {0} '' \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u062c\u0644\u0633\u0629. \u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0623\u0648\u0644\u0627.
brokerLinkingSessionExpired=\u062a\u0645 \u0637\u0644\u0628 \u0631\u0628\u0637 \u062d\u0633\u0627\u0628 \u0627\u0644\u0648\u0633\u064a\u0637\u060c \u0648\u0644\u0643\u0646 \u0627\u0644\u062c\u0644\u0633\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u0644\u0645 \u062a\u0639\u062f \u0635\u0627\u0644\u062d\u0629.
proceedWithAction=&laquo; \u0627\u0646\u0642\u0631 \u0647\u0646\u0627 \u0644\u0644\u0645\u062a\u0627\u0628\u0639\u0629
acrNotFulfilled=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u064a\u0641\u0627\u0621 \u0645\u062a\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629
requiredAction.CONFIGURE_TOTP=\u0625\u0639\u062f\u0627\u062f \u062e\u0627\u0635\u064a\u0629 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642
requiredAction.TERMS_AND_CONDITIONS=\u0627\u0644\u0623\u062d\u0643\u0627\u0645 \u0648\u0627\u0644\u0634\u0631\u0648\u0637
requiredAction.UPDATE_PASSWORD=\u062a\u062d\u062f\u064a\u062b \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
requiredAction.UPDATE_PROFILE=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641\u064a
requiredAction.VERIFY_EMAIL=\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u062a\u0648\u0644\u064a\u062f \u0631\u0645\u0648\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f
requiredAction.webauthn-register-passwordless=\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u062f\u0648\u0646 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Webauthn
invalidTokenRequiredActions=\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629 \u0627\u0644\u0645\u062f\u0631\u062c\u0629 \u0641\u064a \u0627\u0644\u0631\u0627\u0628\u0637 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629
doX509Login=\u0633\u0648\u0641 \u064a\u062a\u0645 \u062a\u0633\u062c\u064a\u0644 \u062f\u062e\u0648\u0644\u0643 \u0643\u0640\:
clientCertificate=\u0634\u0647\u0627\u062f\u0629 \u0627\u0644\u0639\u0645\u064a\u0644 X509\:
noCertificate=[\u0628\u062f\u0648\u0646 \u0634\u0647\u0627\u062f\u0629]
pageNotFound=\u0627\u0644\u0635\u0641\u062d\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629
internalServerError=\u062d\u062f\u062b \u062e\u0637\u0623 \u062f\u0627\u062e\u0644\u064a \u0641\u064a \u0627\u0644\u062e\u0627\u062f\u0645
console-username=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\:
console-password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\:
console-otp=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0644\u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629\:
console-new-password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062c\u062f\u064a\u062f\u0629\:
console-confirm-password=\u062a\u0623\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\:
console-update-password=\u0645\u0637\u0644\u0648\u0628 \u062a\u062d\u062f\u064a\u062b \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643.
console-verify-email=\u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a. \u0644\u0642\u062f \u0623\u0631\u0633\u0644\u0646\u0627 \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0625\u0644\u0649 {0} \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0631\u0645\u0632 \u062a\u062d\u0642\u0642. \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u0641\u064a \u0627\u0644\u0623\u0633\u0641\u0644.
console-email-code=\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a\:
console-accept-terms=\u0642\u0628\u0648\u0644 \u0627\u0644\u0634\u0631\u0648\u0637\u061f [\u0646/\u0644]\:
console-accept=\u0646
openshift.scope.user_info=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
openshift.scope.user_check-access=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
openshift.scope.user_full=\u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0643\u0627\u0645\u0644
openshift.scope.list-projects=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0634\u0627\u0631\u064a\u0639
saml.post-form.title=\u0625\u0639\u0627\u062f\u0629 \u062a\u0648\u062c\u064a\u0647 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629
saml.post-form.message=\u064a\u062a\u0645 \u0627\u0644\u0622\u0646 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0648\u062c\u064a\u0647\u060c \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631.
saml.post-form.js-disabled=\u062a\u0645 \u062a\u0639\u0637\u064a\u0644 \u062c\u0627\u0641\u0627\u0633\u0643\u0631\u0628\u062a. \u0646\u0648\u0635\u064a \u0628\u0634\u062f\u0629 \u0644\u062a\u0645\u0643\u064a\u0646\u0647. \u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u0627\u0644\u0632\u0631 \u0623\u062f\u0646\u0627\u0647 \u0644\u0644\u0645\u062a\u0627\u0628\u0639\u0629.
saml.artifactResolutionServiceInvalidResponse=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0625\u064a\u062c\u0627\u062f \u0627\u0644\u0645\u0639\u0631\u0641 artifact.
otp-display-name=\u062a\u0637\u0628\u064a\u0642 \u0645\u0635\u0627\u062f\u0642
otp-help-text=\u0623\u062f\u062e\u0644 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 \u0627\u0644\u0635\u0627\u062f\u0631\u0629 \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0645\u0635\u0627\u062f\u0642.
otp-reset-description=\u0623\u064a \u0625\u0639\u062f\u0627\u062f \u0644\u062e\u0627\u0635\u064a\u0629 \u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 \u062a\u0631\u063a\u0628 \u0628\u0625\u0632\u0627\u0644\u062a\u0647\u061f
password-display-name=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
password-help-text=\u0633\u062c\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.
auth-username-form-display-name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
auth-username-form-help-text=\u0633\u062c\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
auth-username-password-form-display-name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0648\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
auth-username-password-form-help-text=\u0633\u062c\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0648\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.
auth-recovery-authn-code-form-display-name=\u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f
auth-recovery-authn-code-form-help-text=\u0623\u062f\u062e\u0644 \u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0645\u0633\u0628\u0642\u064b\u0627.
auth-recovery-code-info-message=\u0623\u062f\u062e\u0644 \u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0627\u0644\u0645\u062d\u062f\u062f.
auth-recovery-code-prompt=\u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \#{0}
auth-recovery-code-header=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f
recovery-codes-error-invalid=\u0631\u0645\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
recovery-code-config-header=\u0631\u0645\u0648\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f
recovery-code-config-warning-title=\u0644\u0646 \u062a\u0638\u0647\u0631 \u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0647\u0630\u0647 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0628\u0639\u062f \u0645\u063a\u0627\u062f\u0631\u0629 \u0627\u0644\u0635\u0641\u062d\u0629
recovery-code-config-warning-message=\u062a\u0623\u0643\u062f \u0645\u0646 \u0637\u0628\u0627\u0639\u062a\u0647\u0627 \u0623\u0648 \u062a\u0646\u0632\u064a\u0644\u0647\u0627 \u0623\u0648 \u0646\u0633\u062e\u0647\u0627 \u0625\u0644\u0649 \u0645\u062f\u064a\u0631 \u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0648\u0631 \u0648\u0627\u062d\u062a\u0641\u0638 \u0628\u0647\u0627. \u0633\u064a\u0624\u062f\u064a \u0625\u0644\u063a\u0627\u0621 \u0647\u0630\u0627 \u0627\u0644\u0625\u0639\u062f\u0627\u062f \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u0631\u0645\u0648\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0647\u0630\u0647 \u0645\u0646 \u062d\u0633\u0627\u0628\u0643.
recovery-codes-print=\u0637\u0628\u0627\u0639\u0629
recovery-codes-download=\u062a\u0646\u0632\u064a\u0644
recovery-codes-copy=\u0646\u0633\u062e
recovery-codes-copied=\u062a\u0645 \u0627\u0644\u0646\u0633\u062e
recovery-codes-confirmation-message=\u0644\u0642\u062f \u0642\u0645\u062a \u0628\u062d\u0641\u0638 \u0647\u0630\u0647 \u0627\u0644\u0631\u0645\u0648\u0632 \u0641\u064a \u0645\u0643\u0627\u0646 \u0645\u0627 \u0622\u0645\u0646
recovery-codes-action-complete=\u0625\u0643\u0645\u0627\u0644 \u0627\u0644\u0625\u0639\u062f\u0627\u062f
recovery-codes-action-cancel=\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u0625\u0639\u062f\u0627\u062f
recovery-codes-download-file-header=\u0627\u062d\u062a\u0641\u0638 \u0628\u0631\u0645\u0648\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0647\u0630\u0647 \u0641\u064a \u0645\u0643\u0627\u0646 \u0622\u0645\u0646.
recovery-codes-download-file-description=\u0631\u0645\u0648\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f \u0647\u064a \u0631\u0645\u0648\u0632 \u0645\u0631\u0648\u0631 \u062a\u0633\u062a\u062e\u062f\u0645 \u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629 \u0648\u062a\u0633\u0645\u062d \u0644\u0643 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0625\u0644\u0649 \u062d\u0633\u0627\u0628\u0643 \u0625\u0630\u0627 \u0644\u0645 \u064a\u0643\u0646 \u0644\u062f\u064a\u0643 \u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0645\u0635\u062f\u0642 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.
recovery-codes-download-file-date=\u062a\u0645 \u0625\u0646\u0634\u0627\u0621 \u0647\u0630\u0647 \u0627\u0644\u0631\u0645\u0648\u0632 \u0641\u064a
recovery-codes-label-default=\u0631\u0645\u0648\u0632 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0627\u0633\u062a\u0631\u062f\u0627\u062f
webauthn-display-name=\u0645\u0641\u062a\u0627\u062d \u0623\u0645\u0627\u0646
webauthn-help-text=\u0627\u0633\u062a\u062e\u062f\u0645 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646 \u0644\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644.
webauthn-passwordless-display-name=\u0645\u0641\u062a\u0627\u062d \u0623\u0645\u0627\u0646
webauthn-passwordless-help-text=\u0627\u0633\u062a\u062e\u062f\u0645 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646 \u0644\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u062f\u0648\u0646 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631.
webauthn-login-title=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646
webauthn-registration-title=\u062a\u0633\u062c\u064a\u0644 \u0645\u0641\u062a\u0627\u062d \u0623\u0645\u0627\u0646
webauthn-available-authenticators=\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0623\u0645\u0627\u0646 \u0627\u0644\u0645\u062a\u0627\u062d\u0629
webauthn-unsupported-browser-text=\u0627\u0644\u062e\u0627\u0635\u064a\u0629 WebAuthn \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0645\u062a\u0635\u0641\u062d. \u062c\u0631\u0628 \u0645\u062a\u0635\u0641\u062d \u0622\u062e\u0631 \u0623\u0648 \u062a\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0633\u0624\u0648\u0644 \u0627\u0644\u0646\u0638\u0627\u0645.
webauthn-doAuthenticate=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646
webauthn-createdAt-label=\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u0641\u064a
webauthn-error-title=\u062e\u0637\u0623 \u0641\u064a \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646
webauthn-error-registration=\u0641\u0634\u0644 \u0641\u064a \u062a\u0633\u062c\u064a\u0644 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.<br/> {0}
webauthn-error-api-get=\u0641\u0634\u0644\u062a \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0628\u0648\u0627\u0633\u0637\u0629 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646.<br/> {0}
webauthn-error-different-user=\u0623\u0648\u0644 \u0645\u0633\u062a\u062e\u062f\u0645 \u062a\u0645\u062a \u0645\u0635\u0627\u062f\u0642\u062a\u0647 \u0644\u064a\u0633 \u0647\u0648 \u0627\u0644\u0634\u062e\u0635 \u0627\u0644\u0630\u064a \u062a\u0645\u062a \u0645\u0635\u0627\u062f\u0642\u062a\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646.
webauthn-error-auth-verification=\u0646\u062a\u064a\u062c\u0629 \u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.<br/> {0}
webauthn-error-register-verification=\u0646\u062a\u064a\u062c\u0629 \u062a\u0633\u062c\u064a\u0644 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629.<br/> {0}
webauthn-error-user-not-found=\u0645\u0633\u062a\u062e\u062f\u0645 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641 \u062a\u0645\u062a \u0645\u0635\u0627\u062f\u0642\u062a\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 \u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0623\u0645\u0627\u0646.
identity-provider-redirector=\u0627\u062a\u0635\u0644 \u0628\u0645\u0632\u0648\u062f \u062d\u0633\u0627\u0628\u0627\u062a \u0622\u062e\u0631
identity-provider-login-label=\u0623\u0648 \u0642\u0645 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645
idp-email-verification-display-name=\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a
idp-email-verification-help-text=\u0631\u0628\u0637 \u062d\u0633\u0627\u0628\u0643 \u0639\u0646 \u0637\u0631\u064a\u0642 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u062d\u0629 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0643.
idp-username-password-form-display-name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
idp-username-password-form-help-text=\u0631\u0628\u0637 \u062d\u0633\u0627\u0628\u0643 \u0639\u0646 \u0637\u0631\u064a\u0642 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644.
finalDeletionConfirmation=\u0625\u0630\u0627 \u0642\u0645\u062a \u0628\u062d\u0630\u0641 \u062d\u0633\u0627\u0628\u0643\u060c \u0641\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0633\u062a\u0639\u0627\u062f\u062a\u0647. \u0644\u0644\u0627\u062d\u062a\u0641\u0627\u0638 \u0628\u062d\u0633\u0627\u0628\u0643\u060c \u0627\u0646\u0642\u0631 \u0641\u0648\u0642 \u0625\u0644\u063a\u0627\u0621.
irreversibleAction=\u0647\u0630\u0627 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0644\u0627 \u0631\u062c\u0639\u0629 \u0641\u064a\u0647
deleteAccountConfirm=\u062a\u0623\u0643\u064a\u062f \u062d\u0630\u0641 \u0627\u0644\u062d\u0633\u0627\u0628
deletingImplies=\u062d\u0630\u0641 \u062d\u0633\u0627\u0628\u0643 \u064a\u0639\u0646\u064a \u0636\u0645\u0646\u0627\u064b\:
errasingData=\u0645\u062d\u0648 \u062c\u0645\u064a\u0639 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643
loggingOutImmediately=\u062a\u0633\u062c\u064a\u0644 \u062e\u0631\u0648\u062c\u0643 \u0639\u0644\u0649 \u0627\u0644\u0641\u0648\u0631
accountUnusable=\u0623\u064a \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0644\u0627\u062d\u0642 \u0644\u0644\u062a\u0637\u0628\u064a\u0642 \u0644\u0646 \u064a\u0643\u0648\u0646 \u0645\u0645\u0643\u0646\u0627\u064b \u0645\u0639 \u0647\u0630\u0627 \u0627\u0644\u062d\u0633\u0627\u0628
userDeletedSuccessfully=\u062a\u0645 \u062d\u0630\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0628\u0646\u062c\u0627\u062d
access-denied=\u062a\u0645 \u0631\u0641\u0636 \u0627\u0644\u0648\u0635\u0648\u0644
access-denied-when-idp-auth=\u062a\u0645 \u0631\u0641\u0636 \u0627\u0644\u0627\u062a\u0641\u0627\u0642\u064a\u0629 \u0623\u062b\u0646\u0627\u0621 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0639 {0}
frontchannel-logout.title=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
frontchannel-logout.message=\u0623\u0646\u062a \u062a\u0642\u0648\u0645 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629
logoutConfirmTitle=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
logoutConfirmHeader=\u0647\u0644 \u062a\u0648\u062f \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f
doLogout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
readOnlyUsernameMessage=\u0644\u0627 \u064a\u0645\u0643\u0646\u0643 \u062a\u062d\u062f\u064a\u062b \u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0644\u0623\u0646\u0647 \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637.
shouldBeEqual={0} \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0645\u0633\u0627\u0648\u064a\u064b\u0627 \u0644\u0640 {1}
shouldBeDifferent={0} \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0645\u062e\u062a\u0644\u0641\u064b\u0627 \u0639\u0646 {1}
shouldMatchPattern=`/\u064a\u062c\u0628 \u0623\u0646 \u064a\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637\: `/{0}/
mustBeAnInteger=\u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0639\u062f\u062f\u064b\u0627 \u0635\u062d\u064a\u062d\u064b\u0627
notAValidOption=\u0644\u064a\u0633 \u062e\u064a\u0627\u0631\u064b\u0627 \u0635\u0627\u0644\u062d\u064b\u0627
selectAnOption=\u0627\u062e\u062a\u0631 \u062e\u064a\u0627\u0631\u064b\u0627
remove=\u0625\u0632\u0627\u0644\u0629
addValue=\u0623\u0636\u0641 \u0642\u064a\u0645\u0629
languages=\u0627\u0644\u0644\u063a\u0627\u062a

View File

@ -0,0 +1,441 @@
doLogIn=Inicia la sessi\u00f3
doRegister=Registreu-vos
doRegisterSecurityKey=Registreu-vos
doCancel=Cancel\u00b7la
doSubmit=Envia
doBack=Enrere
doYes=S\u00ed
doNo=No
doContinue=Continua
doIgnore=Ignora
doAccept=Accepta
doDecline=Rebutja
doForgotPassword=Heu oblidat la vostra contrasenya?
doClickHere=Feu clic aqu\u00ed
doImpersonate=Suplanta
doTryAgain=Torna-ho a provar
doTryAnotherWay=Prova d''una altra manera
doConfirmDelete=Confirma la supressi\u00f3
errorDeletingAccount=S''ha produ\u00eft un error en eliminar el compte
deletingAccountForbidden=No teniu permisos suficients per a eliminar el vostre compte, contacteu amb l''administrador.
kerberosNotConfigured=Kerberos no configurat
kerberosNotConfiguredTitle=Kerberos no configurat
bypassKerberosDetail=O b\u00e9 no esteu identificat mitjan\u00e7ant Kerberos o el vostre navegador no est\u00e0 configurat per a identificar-se mitjan\u00e7ant Kerberos. Feu clic per a identificar-vos per un altre mitj\u00e0
kerberosNotSetUp=Kerberos no est\u00e0 configurat. No us podeu identificar.
registerTitle=Registreu-vos
loginAccountTitle=Accediu al vostre compte
loginTitle=Inicia la sessi\u00f3 a {0}
loginTitleHtml={0}
impersonateTitle={0} Suplanta l''usuari
impersonateTitleHtml=<strong>{0}</strong> Suplanta l''usuari
realmChoice=Domini
unknownUser=Usuari desconegut
loginTotpTitle=Configuraci\u00f3 de l''autenticador m\u00f2bil
loginProfileTitle=Actualitzaci\u00f3 de la informaci\u00f3 del compte
loginIdpReviewProfileTitle=Actualitzaci\u00f3 de la informaci\u00f3 del compte
loginTimeout=S''ha excedit el temps per a realitzar una entrada. L''entrada comen\u00e7ar\u00e0 des del principi.
reauthenticate=Torneu a identificar-vos per a continuar
oauthGrantTitle=Concedeix l''acc\u00e9s a {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Assegureu-vos que confieu en {0} assabentant-vos de com {0} gestionar\u00e0 les vostres dades.
oauthGrantReview=Podeu revisar les
oauthGrantTos=condicions del servei.
oauthGrantPolicy=pol\u00edtica de privacitat.
errorTitle=Ho lamentem...
errorTitleHtml=Ho <strong>lamentem</strong>...
emailVerifyTitle=Verificaci\u00f3 del correu electr\u00f2nic
emailForgotTitle=Heu oblidat la contrasenya?
updateEmailTitle=Actualitza el correu electr\u00f2nic
emailUpdateConfirmationSentTitle=S''ha enviat un correu de confirmaci\u00f3
emailUpdateConfirmationSent=S''ha enviat un correu electr\u00f2nic de confirmaci\u00f3 a {0}. Seguiu les instruccions per a completar l''actualitzaci\u00f3 del correu electr\u00f2nic.
emailUpdatedTitle=S''ha actualitzat el correu electr\u00f2nic
emailUpdated=S''ha actualitzat correctament el correu electr\u00f2nic del compte a {0}.
updatePasswordTitle=Actualitza la contrasenya
codeSuccessTitle=Codi d''\u00e8xit
codeErrorTitle=Codi d''error\\\: {0}
displayUnsupported=El tipus de visualitzaci\u00f3 demanat no \u00e9s compatible
browserRequired=Es requereix un navegador per a entrar
browserContinue=Es requereix un navegador per a completar l''entrada
browserContinuePrompt=Voleu obrir el navegador i continuar l''entrada? [s/n]\:
browserContinueAnswer=s
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=Interna
unknown=Desconegut
termsTitle=Termes i condicions
termsText=
termsPlainText=Termes i condicions a definir.
termsAcceptanceRequired=Heu d''acceptar els nostres termes i condicions.
acceptTerms=Accepto els termes i condicions
recaptchaFailed=Recaptcha inv\u00e0lid
recaptchaNotConfigured=El Recaptcha \u00e9s obligatori per\u00f2 no est\u00e0 configurat
consentDenied=Consentiment rebutjat.
noAccount=Usuari nou?
username=Usuari
usernameOrEmail=Usuari o adre\u00e7a electr\u00f2nica
firstName=Nom
givenName=Nom de pila
fullName=Nom complet
lastName=Cognoms
familyName=Cognoms
email=Email
password=Contrasenya
passwordConfirm=Confirma la contrasenya
passwordNew=Contrasenya nova
passwordNewConfirm=Confirma la contrasenya nova
rememberMe=Recorda''m
authenticatorCode=Codi d''un sol \u00fas
address=Adre\u00e7a
street=Carrer
locality=Ciutat o municipi
region=Estat, prov\u00edncia o regi\u00f3
postal_code=Codi postal
country=Pa\u00eds
emailVerified=Adre\u00e7a electr\u00f2nica verificada
website=P\u00e0gina web
phoneNumber=N\u00famero de tel\u00e8fon
phoneNumberVerified=N\u00famero de tel\u00e8fon verificat
gender=G\u00e8nere
birthday=Natalici
zoneinfo=Fus horari
gssDelegationCredential=Credencial de delegaci\u00f3 GSS
logoutOtherSessions=Surt d''altres dispositius
profileScopeConsentText=Perfil d''usuari
emailScopeConsentText=Correu electr\u00f2nic
addressScopeConsentText=Adre\u00e7a
phoneScopeConsentText=N\u00famero de tel\u00e8fon
offlineAccessScopeConsentText=Acc\u00e9s fora de l\u00ednia
samlRoleListScopeConsentText=Els meus rols
rolesScopeConsentText=Rols d''usuari
restartLoginTooltip=Torna a iniciar l''entrada
loginTotpIntro=Heu de configurar un generador de contrasenyes d''un sol \u00fas per a accedir a aquest compte
loginTotpStep1=Instal\u00b7leu una de les aplicacions seg\u00fcents al vostre m\u00f2bil\:
loginTotpStep2=Obriu l''aplicaci\u00f3 i escanegeu el codi de barres\:
loginTotpStep3=Introdu\u00efu el codi d''un sol \u00fas prove\u00eft per l''aplicaci\u00f3 i feu clic a Envia per a finalitzar la configuraci\u00f3.
loginTotpStep3DeviceName=Introdu\u00efu un nom de dispositiu per a ajudar-vos a gestionar els vostres dispositius OTP.
loginTotpManualStep2=Obriu l''aplicaci\u00f3 i introdu\u00efu la clau\:
loginTotpManualStep3=Utilitzeu els valors de configuraci\u00f3 seg\u00fcents si l''aplicaci\u00f3 permet establir-los\:
loginTotpUnableToScan=No podeu escanejar?
loginTotpScanBarcode=Voleu escanejar el codi de barres?
loginCredential=Credencial
loginOtpOneTime=Codi d''un sol \u00fas
loginTotpType=Tipus
loginTotpAlgorithm=Algoritme
loginTotpDigits=D\u00edgits
loginTotpInterval=Interval
loginTotpCounter=Comptador
loginTotpDeviceName=Nom del dispositiu
loginTotp.totp=Basat en temps
loginTotp.hotp=Basat en comptador
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=Seleccioneu un m\u00e8tode d''entrada
oauthGrantRequest=Voleu permetre aquests privilegis d''acc\u00e9s?
inResource=a
oauth2DeviceVerificationTitle=Entrada per dispositiu
verifyOAuth2DeviceUserCode=Introdu\u00efu el codi prove\u00eft pel vostre dispositiu i feu clic a Envia
oauth2DeviceInvalidUserCodeMessage=El codi no \u00e9s v\u00e0lid, torneu-ho a provar.
oauth2DeviceExpiredUserCodeMessage=El codi ha caducat. Torneu al vostre dispositiu i intenteu-ho de nou.
oauth2DeviceVerificationCompleteHeader=Inici de sessi\u00f3 per dispositiu correcte
oauth2DeviceVerificationCompleteMessage=Podeu tancar aquesta finestra del navegador i tornar al vostre dispositiu.
oauth2DeviceVerificationFailedHeader=Ha fallat l''inici de sessi\u00f3 per dispositiu
oauth2DeviceVerificationFailedMessage=Podeu tancar aquesta finestra del navegador i tornar al vostre dispositiu per a tornar a connectar.
oauth2DeviceConsentDeniedMessage=S''ha rebutjat el consentiment per a connectar al dispositiu.
oauth2DeviceAuthorizationGrantDisabledMessage=El client no est\u00e0 autoritzat a iniciar una concessi\u00f3 d''autoritzaci\u00f3 de dispositiu OAuth 2.0. El flux \u00e9s inhabilitat per al client.
emailVerifyInstruction1=S''ha enviat un correu electr\u00f2nic a la vostra adre\u00e7a de correu electr\u00f2nic {0} amb instruccions per a verificar-la.
emailVerifyInstruction2=No heu rebut un codi de verificaci\u00f3 al vostre correu electr\u00f2nic?
emailVerifyInstruction3=per a tornar a enviar el correu electr\u00f2nic.
emailLinkIdpTitle=Enlla\u00e7 a {0}
emailLinkIdp1=S''ha enviat un correu electr\u00f2nic amb instruccions per a enlla\u00e7ar el compte {0} {1} amb el vostre compte {2}.
emailLinkIdp2=No heu rebut un codi de verificaci\u00f3 al vostre correu electr\u00f2nic?
emailLinkIdp3=per a tornar a enviar el correu electr\u00f2nic.
emailLinkIdp4=si ja heu verificat el correu electr\u00f2nic en un altre navegador
emailLinkIdp5=per a continuar.
backToLogin=&laquo; Torna a la identificaci\u00f3
emailInstruction=Introdu\u00efu el vostre nom d''usuari o adre\u00e7a de correu electr\u00f2nic i us enviarem instruccions per a establir una contrasenya nova.
emailInstructionUsername=Introdu\u00efu el vostre nom d''usuari i us enviarem instruccions per a establir una contrasenya nova.
copyCodeInstruction=Copieu i enganxeu aquest codi a la vostra aplicaci\u00f3\:
pageExpiredTitle=La p\u00e0gina ha caducat
pageExpiredMsg1=Per a tornar a iniciar el proc\u00e9s d''entrada
pageExpiredMsg2=Per a continuar el proc\u00e9s d''entrada
personalInfo=Informaci\u00f3 personal\:
role_admin=Administraci\u00f3
role_realm-admin=Administrador del domini
role_create-realm=Crea un domini
role_create-client=Crea un client
role_view-realm=Visualitza el domini
role_view-users=Visualitza els usuaris
role_view-applications=Visualitza les aplicacions
role_view-clients=Visualitza els clients
role_view-events=Visualitza els esdeveniments
role_view-identity-providers=Visualitza els prove\u00efdors d''identitat
role_manage-realm=Gestiona el domini
role_manage-users=Gestiona els usuaris
role_manage-applications=Gestiona les aplicacions
role_manage-identity-providers=Gestiona els prove\u00efdors d''identitat
role_manage-clients=Gestiona els clients
role_manage-events=Gestiona els esdeveniments
role_view-profile=Visualitza el perfil
role_manage-account=Gestiona el compte
role_manage-account-links=Gestiona els enlla\u00e7os del compte
role_read-token=Llegeix el codi d''autoritzaci\u00f3
role_offline-access=Acc\u00e9s fora de l\u00ednia
client_account=Compte
client_account-console=Consola del compte
client_security-admin-console=Consola d''administraci\u00f3 de seguretat
client_admin-cli=CLI d''administraci\u00f3
client_realm-management=Gesti\u00f3 del domini
client_broker=Agent
requiredFields=Camps requerits
invalidUserMessage=El nom d''usuari o contrasenya no s\u00f3n v\u00e0lids.
invalidUsernameMessage=El nom d''usuari no \u00e9s v\u00e0lid.
invalidUsernameOrEmailMessage=El nom d''usuari o correu electr\u00f2nic no s\u00f3n v\u00e0lids.
invalidPasswordMessage=La contrasenya no \u00e9s v\u00e0lida.
invalidEmailMessage=L''adre\u00e7a de correu electr\u00f2nic no \u00e9s v\u00e0lida.
accountDisabledMessage=El compte est\u00e0 inhabilitat, contacteu amb l''administrador.
accountTemporarilyDisabledMessage=El compte est\u00e0 temporalment inhabilitat, contacteu amb l''administrador o intenteu-ho de nou m\u00e9s tard.
expiredCodeMessage=S''ha esgotat el temps m\u00e0xim per a la identificaci\u00f3. Identifiqueu-vos de nou.
expiredActionMessage=L''acci\u00f3 ha caducat. Continueu ara amb l''entrada.
expiredActionTokenNoSessionMessage=L''acci\u00f3 ha caducat.
expiredActionTokenSessionExistsMessage=L''acci\u00f3 ha caducat. Si us plau, comenceu de nou.
sessionLimitExceeded=Hi ha massa sessions.
missingFirstNameMessage=Indiqueu el vostre nom.
missingLastNameMessage=Indiqueu els vostres cognoms.
missingEmailMessage=Indiqueu la vostra adre\u00e7a de correu electr\u00f2nic.
missingUsernameMessage=Indiqueu el vostre nom d''usuari.
missingPasswordMessage=Indiqueu la vostra contrasenya.
missingTotpMessage=Indiqueu el vostre codi d''autenticaci\u00f3.
missingTotpDeviceNameMessage=Indiqueu el nom del vostre dispositiu.
notMatchPasswordMessage=Les contrasenyes no coincideixen.
error-invalid-value=El valor no \u00e9s v\u00e0lid.
error-invalid-blank=Especifiqueu un valor.
error-empty=Especifiqueu un valor.
error-invalid-length=La llarg\u00e0ria ha de ser d''entre {1} i {2}.
error-invalid-length-too-short=La llarg\u00e0ria m\u00ednima \u00e9s de {1}.
error-invalid-length-too-long=La llarg\u00e0ria m\u00e0xima \u00e9s de {2}.
error-invalid-email=L''adre\u00e7a de correu electr\u00f2nic no \u00e9s v\u00e0lida.
error-invalid-number=El nombre no \u00e9s v\u00e0lid.
error-number-out-of-range=El n\u00famero ha de ser entre {1} i {2}.
error-number-out-of-range-too-small=El nombre ha de tindre un valor m\u00ednim de {1}.
error-number-out-of-range-too-big=El nombre ha de tindre un valor m\u00e0xim de {2}.
error-pattern-no-match=El valor no \u00e9s v\u00e0lid.
error-invalid-uri=L''URL no \u00e9s v\u00e0lid.
error-invalid-uri-scheme=L''esquema d''URL no \u00e9s v\u00e0lid.
error-invalid-uri-fragment=El fragment d''URL no \u00e9s v\u00e0lid.
error-user-attribute-required=Especifiqueu aquest camp.
error-invalid-date=La data no \u00e9s v\u00e0lida.
error-user-attribute-read-only=Aquest camp \u00e9s nom\u00e9s de lectura.
error-username-invalid-character=El valor cont\u00e9 un car\u00e0cter no v\u00e0lid.
error-person-name-invalid-character=El valor cont\u00e9 un car\u00e0cter no v\u00e0lid.
error-reset-otp-missing-id=Seleccioneu una configuraci\u00f3 d''OTP.
invalidPasswordExistingMessage=La contrasenya actual no \u00e9s v\u00e0lida.
invalidPasswordBlacklistedMessage=La contrasenya no \u00e9s v\u00e0lida\: est\u00e0 en una llista negra.
invalidPasswordConfirmMessage=La confirmaci\u00f3 de contrasenya no coincideix.
invalidTotpMessage=El codi d''autenticaci\u00f3 no \u00e9s v\u00e0lid.
usernameExistsMessage=El nom d''usuari ja existeix.
emailExistsMessage=El correu electr\u00f2nic ja existeix.
federatedIdentityExistsMessage=Ja existeix un usuari amb {0} {1}. Entreu al gestor de comptes per a enlla\u00e7ar el compte.
federatedIdentityUnavailableMessage=L''usuari {0} autenticat amb el prove\u00efdor d''identitat {1} no existeix. Contacteu amb l''administrador.
federatedIdentityUnmatchedEssentialClaimMessage=El codi d''autoritzaci\u00f3 de l''ID em\u00e8s pel prove\u00efdor d''identitat no concorda amb la declaraci\u00f3 essencial configurada. Contacteu amb l''administrador.
confirmLinkIdpTitle=El compte ja existeix
federatedIdentityConfirmLinkMessage=Ja existeix un usuari amb {0} {1}. Com voleu continuar?
federatedIdentityConfirmReauthenticateMessage=Identifiqueu-vos per a enlla\u00e7ar el vostre compte amb {0}
nestedFirstBrokerFlowMessage=L''usuari {0} de {1} no est\u00e0 enlla\u00e7at a cap usuari conegut.
confirmLinkIdpReviewProfile=Revisa el perfil
confirmLinkIdpContinue=Afegeix al compte existent
configureTotpMessage=Heu de configurar l''aplicaci\u00f3 m\u00f2bil d''autenticaci\u00f3 per a activar el compte.
configureBackupCodesMessage=Heu de configurar els codis de recuperaci\u00f3 per a activar el compte.
updateProfileMessage=Heu d''actualitzar el vostre perfil d''usuari per a activar el compte.
updatePasswordMessage=Heu de canviar la contrasenya per a activar el compte.
updateEmailMessage=Heu d''actualitzar la vostra adre\u00e7a de correu electr\u00f2nic per a activar el compte.
resetPasswordMessage=Heu de canviar la contrasenya.
verifyEmailMessage=Heu de verificar la vostra adre\u00e7a de correu electr\u00f2nic per a activar el compte.
linkIdpMessage=Heu de verificar la vostra adre\u00e7a electr\u00f2nica per a enlla\u00e7ar el compte amb {0}.
emailSentMessage=Aviat haur\u00edeu de rebre un correu electr\u00f2nic amb m\u00e9s instruccions.
emailSendErrorMessage=Ha fallat l''enviament del correu electr\u00f2nic, intenteu-ho de nou m\u00e9s tard.
accountUpdatedMessage=S''ha actualitzat el compte.
accountPasswordUpdatedMessage=S''ha actualitzat la contrasenya.
delegationCompleteHeader=Inici de sessi\u00f3 correcte
delegationCompleteMessage=Podeu tancar aquesta finestra del navegador i tornar a la vostra aplicaci\u00f3 de consola.
delegationFailedHeader=Ha fallat l''inici de sessi\u00f3
delegationFailedMessage=Podeu tancar aquesta finestra del navegador i tornar a la vostra aplicaci\u00f3 de consola per a tornar a connectar.
noAccessMessage=Sense acc\u00e9s
invalidPasswordMinLengthMessage=La contrasenya no \u00e9s v\u00e0lida\: la llarg\u00e0ria m\u00ednima \u00e9s {0}.
invalidPasswordMaxLengthMessage=La contrasenya no \u00e9s v\u00e0lida\: la llarg\u00e0ria m\u00e0xima \u00e9s {0}.
invalidPasswordMinDigitsMessage=La contrasenya no \u00e9s v\u00e0lida\: ha de contenir almenys {0} car\u00e0cters num\u00e8rics.
invalidPasswordMinLowerCaseCharsMessage=La contrasenya no \u00e9s v\u00e0lida\: ha de contenir almenys {0} lletres min\u00fascules.
invalidPasswordMinUpperCaseCharsMessage=La contrasenya no \u00e9s v\u00e0lida\: ha de contenir almenys {0} lletres maj\u00fascules.
invalidPasswordMinSpecialCharsMessage=Contrasenya incorrecta\: ha de contenir almenys {0} car\u00e0cters especials.
invalidPasswordNotUsernameMessage=La contrasenya no \u00e9s v\u00e0lida\: no pot ser igual al nom d''usuari.
invalidPasswordNotEmailMessage=La contrasenya no \u00e9s v\u00e0lida\: no pot ser igual al correu electr\u00f2nic.
invalidPasswordRegexPatternMessage=La contrasenya no \u00e9s v\u00e0lida\: no coincideix amb el patr\u00f3 de l''expressi\u00f3 regular.
invalidPasswordHistoryMessage=Contrasenya incorrecta\: no pot ser igual a cap de les \u00faltimes {0} contrasenyes.
invalidPasswordGenericMessage=La contrasenya no \u00e9s v\u00e0lida\: la contrasenya nova no coincideix amb les pol\u00edtiques de contrasenya.
failedToProcessResponseMessage=No s''ha pogut processar la resposta
httpsRequiredMessage=Es requereix HTTPS
realmNotEnabledMessage=El domini no est\u00e0 habilitat
invalidRequestMessage=Petici\u00f3 incorrecta
successLogout=No esteu identificat
failedLogout=Ha fallat la desconnexi\u00f3.
unknownLoginRequesterMessage=Sol\u00b7licitant d''identificaci\u00f3 desconegut
loginRequesterNotEnabledMessage=El sol\u00b7licitant d''inici de sessi\u00f3 est\u00e0 desactivat
bearerOnlyMessage=Les aplicacions Bearer-only no poden iniciar sessi\u00f3 des del navegador.
standardFlowDisabledMessage=El client no est\u00e0 autoritzat a iniciar una entrada per navegador amb el tipus de resposta donada. El flux est\u00e0ndard est\u00e0 inhabilitat per al client.
implicitFlowDisabledMessage=El client no est\u00e0 autoritzat a iniciar una entrada per navegador amb el tipus de resposta donada. El flux impl\u00edcit est\u00e0 inhabilitat per al client.
invalidRedirectUriMessage=L''URI de redirecci\u00f3 no \u00e9s v\u00e0lid
unsupportedNameIdFormatMessage=El NameIDFormat no est\u00e0 implementat
invalidRequesterMessage=El sol\u00b7licitant no \u00e9s v\u00e0lid
registrationNotAllowedMessage=El registre no est\u00e0 perm\u00e8s
resetCredentialNotAllowedMessage=El reinici de les credencials no est\u00e0 perm\u00e8s
permissionNotApprovedMessage=Perm\u00eds no aprovat.
noRelayStateInResponseMessage=Sense estat de retransmissi\u00f3 en la resposta del prove\u00efdor d''identitat.
insufficientPermissionMessage=Permisos insuficients per a enlla\u00e7ar identitats.
couldNotProceedWithAuthenticationRequestMessage=No s''ha pogut continuar amb la petici\u00f3 d''autenticaci\u00f3 al prove\u00efdor d''identitat.
couldNotObtainTokenMessage=No s''ha pogut obtenir el codi d''autoritzaci\u00f3 del prove\u00efdor d''identitat.
unexpectedErrorRetrievingTokenMessage=Error inesperat en obtenir el codi d''autoritzaci\u00f3 del prove\u00efdor d''identitat
unexpectedErrorHandlingResponseMessage=Error inesperat processant la resposta del prove\u00efdor d''identitat.
identityProviderAuthenticationFailedMessage=Ha fallat l''autenticaci\u00f3. No ha estat possible autenticar-se en el prove\u00efdor d''identitat.
couldNotSendAuthenticationRequestMessage=No s''ha pogut enviar la petici\u00f3 d''identificaci\u00f3 al prove\u00efdor d''identitat.
unexpectedErrorHandlingRequestMessage=Error inesperat durant la petici\u00f3 d''identificaci\u00f3 al prove\u00efdor d''identitat.
invalidAccessCodeMessage=Codi d''acc\u00e9s no v\u00e0lid.
sessionNotActiveMessage=La sessi\u00f3 no est\u00e0 activa
invalidCodeMessage=S''ha produ\u00eft un error, identifiqueu-vos de nou des de la vostra aplicaci\u00f3.
cookieNotFoundMessage=No s''ha trobat la galeta. Assegureu-vos que les galetes estan habilitades al vostre navegador.
insufficientLevelOfAuthentication=El nivell d''autenticaci\u00f3 sol\u00b7licitat no s''ha satisfet.
identityProviderUnexpectedErrorMessage=Error no esperat intentant autenticar en el prove\u00efdor d''identitat.
identityProviderMissingStateMessage=Manca un par\u00e0metre d''estat a la resposta del prove\u00efdor d''identitat.
identityProviderInvalidResponseMessage=La resposta del prove\u00efdor d''identitat no \u00e9s v\u00e0lida.
identityProviderInvalidSignatureMessage=La signatura de la resposta del prove\u00efdor d''identitat no \u00e9s v\u00e0lida.
identityProviderNotFoundMessage=No s''ha trobat cap prove\u00efdor d''identitat.
identityProviderLinkSuccess=Heu verificat el vostre correu electr\u00f2nic correctament. Torneu al vostre navegador original i continueu amb l''entrada all\u00e0.
staleCodeMessage=Aquesta p\u00e0gina ja no \u00e9s v\u00e0lida, torneu a la vostra aplicaci\u00f3 i torneu a entrar
realmSupportsNoCredentialsMessage=El domini no suporta cap tipus de credencials.
credentialSetupRequired=No es pot entrar, es requereix la configuraci\u00f3 de credencials.
identityProviderNotUniqueMessage=El domini suporta m\u00faltiples prove\u00efdors d''identitat. No s''ha pogut determinar el prove\u00efdor d''identitat que hauria de ser utilitzat per identificar-se.
emailVerifiedMessage=S''ha verificat el vostre correu electr\u00f2nic.
staleEmailVerificationLink=L''enlla\u00e7 en qu\u00e8 heu clicat \u00e9s un enlla\u00e7 antic que ja no \u00e9s v\u00e0lid. Potser ja heu verificat el vostre correu electr\u00f2nic.
identityProviderAlreadyLinkedMessage=La identitat federada retornada per {0} ja est\u00e0 enlla\u00e7ada a un altre usuari.
confirmAccountLinking=Confirmeu l''enlla\u00e7at del compte {0} del prove\u00efdor d''identitat {1} amb el vostre compte.
confirmEmailAddressVerification=Confirmeu la validesa de l''adre\u00e7a de correu electr\u00f2nic {0}.
confirmExecutionOfActions=Completeu les accions seg\u00fcents
backToApplication=&laquo; Torna a l''aplicaci\u00f3
missingParameterMessage=Manquen par\u00e0metres\\\: {0}
clientNotFoundMessage=No s''ha trobat el client.
clientDisabledMessage=El client \u00e9s inhabilitat.
invalidParameterMessage=El par\u00e0metre no \u00e9s v\u00e0lid\\\: {0}
alreadyLoggedIn=Ja esteu identificat.
differentUserAuthenticated=Ja esteu identificat amb l''usuari diferent \u00ab{0}\u00bb en aquesta sessi\u00f3. Desconnecteu primer.
brokerLinkingSessionExpired=S''ha sol\u00b7licitat l''enlla\u00e7at d''un compte agent, per\u00f2 la sessi\u00f3 actual ja no \u00e9s v\u00e0lida.
proceedWithAction=&raquo; Feu clic aqu\u00ed per a continuar
acrNotFulfilled=Els requisits d''autenticaci\u00f3 no s''han satisfet
requiredAction.CONFIGURE_TOTP=Configura l''OTP
requiredAction.TERMS_AND_CONDITIONS=Termes i condicions
requiredAction.UPDATE_PASSWORD=Actualitza la contrasenya
requiredAction.UPDATE_PROFILE=Actualitza el perfil
requiredAction.VERIFY_EMAIL=Verifica el correu electr\u00f2nic
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Genera codis de recuperaci\u00f3
requiredAction.webauthn-register-passwordless=Registre sense contrasenya WebAuthn
invalidTokenRequiredActions=Les accions requerides a l''enlla\u00e7 no s\u00f3n v\u00e0lides
doX509Login=Us identificareu com a\\\:
clientCertificate=Certificat de client X509\\\:
noCertificate=[Cap certificat]
pageNotFound=No s''ha trobat la p\u00e0gina
internalServerError=S''ha produ\u00eft un error intern
console-username=Nom d''usuari\:
console-password=Contrasenya\:
console-otp=Contrasenya d''un sol \u00fas\:
console-new-password=Contrasenya nova\:
console-confirm-password=Confirma la contrasenya\:
console-update-password=Es requereix que actualitzeu la vostra contrasenya.
console-verify-email=Heu de verificar l''adre\u00e7a de correu electr\u00f2nic. Hem enviat un correu electr\u00f2nic a {0} que cont\u00e9 un codi de verificaci\u00f3. Introdu\u00efu aquest codi al camp seg\u00fcent.
console-email-code=Codi de verificaci\u00f3\:
console-accept-terms=Voleu acceptar els termes? [s/n]\:
console-accept=s
openshift.scope.user_info=Informaci\u00f3 d''usuari
openshift.scope.user_check-access=Informaci\u00f3 d''accessos d''usuari
openshift.scope.user_full=Acc\u00e9s total
openshift.scope.list-projects=Llista els projectes
saml.post-form.title=Redirecci\u00f3 d''autenticaci\u00f3
saml.post-form.message=S''est\u00e0 redirigint, espereu.
saml.post-form.js-disabled=El JavaScript est\u00e0 inhabilitat. Us recomanem que l''habiliteu. Feu clic al bot\u00f3 de sota per a continuar.
saml.artifactResolutionServiceInvalidResponse=No s''ha pogut resoldre l''artefacte.
otp-display-name=Aplicaci\u00f3 d''autenticaci\u00f3
otp-help-text=Introdu\u00efu el codi de verificaci\u00f3 de l''aplicaci\u00f3 d''autenticaci\u00f3.
otp-reset-description=Quina configuraci\u00f3 d''OTP voleu suprimir?
password-display-name=Contrasenya
password-help-text=Entreu introduint la vostra contrasenya.
auth-username-form-display-name=Nom d''usuari
auth-username-form-help-text=Comenceu a identificar-vos introduint el vostre nom d''usuari
auth-username-password-form-display-name=Nom d''usuari i contrasenya
auth-username-password-form-help-text=Entreu introduint el vostre nom d''usuari i contrasenya.
auth-recovery-authn-code-form-display-name=Codi d''autenticaci\u00f3 de recuperaci\u00f3
auth-recovery-authn-code-form-help-text=Introdu\u00efu un codi d''autenticaci\u00f3 de recuperaci\u00f3 d''una llista pr\u00e8viament generada.
auth-recovery-code-info-message=Introdu\u00efu el codi de recuperaci\u00f3 especificat.
auth-recovery-code-prompt=Codi de recuperaci\u00f3 \#{0}
auth-recovery-code-header=Entreu amb un codi d''autenticaci\u00f3 de recuperaci\u00f3
recovery-codes-error-invalid=El codi d''autenticaci\u00f3 de recuperaci\u00f3 no \u00e9s v\u00e0lid
recovery-code-config-header=Codis d''autenticaci\u00f3 de recuperaci\u00f3
recovery-code-config-warning-title=Aquests codis de recuperaci\u00f3 no es tornaran a mostrar despr\u00e9s que abandoneu la p\u00e0gina
recovery-code-config-warning-message=Assegureu-vos que els imprimiu, baixeu o copieu a un gestor de contrasenyes i els deseu de manera segura. Cancel\u00b7lar aquesta configuraci\u00f3 eliminar\u00e0 aquests codis de recuperaci\u00f3 del vostre compte.
recovery-codes-print=Imprimeix
recovery-codes-download=Baixa
recovery-codes-copy=Copia
recovery-codes-copied=S''ha copiat
recovery-codes-confirmation-message=He desat aquests codis en algun lloc segur
recovery-codes-action-complete=Completa la configuraci\u00f3
recovery-codes-action-cancel=Cancel\u00b7la la configuraci\u00f3
recovery-codes-download-file-header=Deseu aquests codis de recuperaci\u00f3 en un lloc segur.
recovery-codes-download-file-description=Els codis de recuperaci\u00f3 s\u00f3n codis d''acc\u00e9s d''un sol \u00fas que vos permeten entrar al vostre compte si no teniu acc\u00e9s al vostre autenticador.
recovery-codes-download-file-date=Aquests codis s''han generat el
recovery-codes-label-default=Codis de recuperaci\u00f3
webauthn-display-name=Clau de seguretat
webauthn-help-text=Utilitzeu la vostra clau de seguretat per a entrar.
webauthn-passwordless-display-name=Clau de seguretat
webauthn-passwordless-help-text=Utilitzeu la vostra clau de seguretat per a entrar sense contrasenya.
webauthn-login-title=Entrada amb clau de seguretat
webauthn-registration-title=Registre d''una clau de seguretat
webauthn-available-authenticators=Claus de seguretat disponibles
webauthn-unsupported-browser-text=El WebAuthn no est\u00e0 implementat per aquest navegador. Proveu-ho amb un altre o contacteu amb l''administrador.
webauthn-doAuthenticate=Entra amb una clau de seguretat
webauthn-createdAt-label=Creada
webauthn-error-title=Error de la clau de seguretat
webauthn-error-registration=No s''ha pogut registrar la vostra clau de seguretat.<br/> {0}
webauthn-error-api-get=No s''ha pogut identificar amb la clau de seguretat.<br/> {0}
webauthn-error-different-user=L''usuari identificat primer no \u00e9s l''autenticat per la clau de seguretat.
webauthn-error-auth-verification=El resultat de l''autenticaci\u00f3 amb clau de seguretat no \u00e9s v\u00e0lid.<br/>{0}
webauthn-error-register-verification=El resultat del registre amb clau de seguretat no \u00e9s v\u00e0lid.<br/>{0}
webauthn-error-user-not-found=L''usuari identificat per la clau de seguretat \u00e9s desconegut.
identity-provider-redirector=Connecta amb un altre prove\u00efdor d''identitat
identity-provider-login-label=O entra amb
idp-email-verification-display-name=Verificaci\u00f3 de correu electr\u00f2nic
idp-email-verification-help-text=Enllaceu el compte verificant la vostra adre\u00e7a de correu electr\u00f2nic.
idp-username-password-form-display-name=Nom d''usuari i contrasenya
idp-username-password-form-help-text=Enllaceu el vostre compte mitjan\u00e7ant una identificaci\u00f3.
finalDeletionConfirmation=Si elimineu el vostre compte, no es podr\u00e0 restaurar. Per a mantenir el vostre compte, feu clic en Cancel\u00b7la.
irreversibleAction=Aquesta acci\u00f3 \u00e9s irreversible
deleteAccountConfirm=Confirmaci\u00f3 de supressi\u00f3 del compte
deletingImplies=La supressi\u00f3 del vostre compte implica\:
errasingData=Eliminar totes les vostres dades
loggingOutImmediately=Desconnectar-vos immediatament
accountUnusable=Qualsevol \u00fas posterior de l''aplicaci\u00f3 no ser\u00e0 possible amb aquest compte
userDeletedSuccessfully=S''ha eliminat l''usuari correctament
access-denied=S''ha denegat l''acc\u00e9s
access-denied-when-idp-auth=S''ha denegat l''acc\u00e9s mentre s''autenticava amb {0}
frontchannel-logout.title=Sortida
frontchannel-logout.message=Esteu sortint de les aplicacions seg\u00fcents
logoutConfirmTitle=Sortida
logoutConfirmHeader=Esteu segur que voleu sortir?
doLogout=Surt
readOnlyUsernameMessage=No podeu actualitzar el vostre nom d''usuari perqu\u00e8 \u00e9s de nom\u00e9s lectura.
shouldBeEqual={0} hauria de ser igual a {1}
shouldBeDifferent={0} hauria de ser diferent de {1}
shouldMatchPattern=El patr\u00f3 hauria de coincidir\: `/{0}/`
mustBeAnInteger=Ha de ser un enter
notAValidOption=No \u00e9s una opci\u00f3 v\u00e0lida
selectAnOption=Selecciona una opci\u00f3
remove=Elimina
addValue=Afegeix valor
languages=Idiomes

View File

@ -0,0 +1,443 @@
doLogIn=P\u0159ihl\u00e1sit se
doRegister=Registrovat se
doRegisterSecurityKey=Registrovat se
doCancel=Zru\u0161it
doSubmit=Odeslat
doBack=Zp\u011bt
doYes=Ano
doNo=Ne
doContinue=Pokra\u010dovat
doIgnore=Ignorovat
doAccept=Potvrdit
doDecline=Zam\u00edtnout
doForgotPassword=Zapomenut\u00e9 heslo?
doClickHere=Klikn\u011bte zde
doImpersonate=Zosobnit
doTryAgain=Zkusit znovu
doTryAnotherWay=Zkusit jin\u00fdm zp\u016fsobem
doConfirmDelete=Potvrdit odstran\u011bn\u00ed
errorDeletingAccount=Nastala chyba p\u0159i odstra\u0148ov\u00e1n\u00ed \u00fa\u010dtu
deletingAccountForbidden=Nem\u00e1te dostate\u010dn\u00e1 opr\u00e1vn\u011bn\u00ed k odstran\u011bn\u00ed va\u0161eho vlastn\u00edho \u00fa\u010dtu, kontaktujte administr\u00e1tora.
kerberosNotConfigured=Kerberos nen\u00ed nakonfigurov\u00e1n
kerberosNotConfiguredTitle=Kerberos nen\u00ed nakonfigurov\u00e1n
bypassKerberosDetail=Bu\u010f nejste p\u0159ihl\u00e1\u0161eni p\u0159es Kerberos nebo v\u00e1\u0161 prohl\u00ed\u017ee\u010d nen\u00ed nastaven pro p\u0159ihl\u00e1\u0161en\u00ed Kerberos. Klepnut\u00edm na tla\u010d\u00edtko pokra\u010dujte k p\u0159ihl\u00e1\u0161en\u00ed jin\u00fdmi zp\u016fsoby
kerberosNotSetUp=Kerberos nen\u00ed nastaven. Nem\u016f\u017eete se p\u0159ihl\u00e1sit.
registerTitle=Registrovat
loginAccountTitle=P\u0159ihl\u00e1sit k va\u0161emu \u00fa\u010dtu
loginTitle=P\u0159ihl\u00e1sit do {0}
loginTitleHtml={0}
impersonateTitle={0} Zosobnit u\u017eivatele
impersonateTitleHtml=<strong>{0}</strong> Zosobnit u\u017eivatele
realmChoice=Realm
unknownUser=Nezn\u00e1m\u00fd u\u017eivatel
loginTotpTitle=Nastaven\u00ed autentik\u00e1toru OTP
loginProfileTitle=Aktualizovat informace o \u00fa\u010dtu
loginIdpReviewProfileTitle=Aktualizovat informace o \u00fa\u010dtu
loginTimeout=P\u0159ihla\u0161ov\u00e1n\u00ed trvalo p\u0159\u00edli\u0161 dlouho. P\u0159ihla\u0161ovac\u00ed proces za\u010d\u00edn\u00e1 od za\u010d\u00e1tku.
reauthenticate=Pro pokra\u010dov\u00e1n\u00ed se pros\u00edm znovu p\u0159ihlaste
oauthGrantTitle=Ud\u011blit p\u0159\u00edstup {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Ujist\u011bte se, \u017ee d\u016fv\u011b\u0159ujete {0}. Zjist\u011bte, jak {0} nakl\u00e1d\u00e1 s daty u\u017eivatel\u016f.
oauthGrantReview=M\u016f\u017eete si p\u0159e\u010d\u00edst
oauthGrantTos=podm\u00ednky pou\u017e\u00edv\u00e1n\u00ed slu\u017eby.
oauthGrantPolicy=z\u00e1sady ochrany osobn\u00edch \u00fadaj\u016f.
errorTitle=Je n\u00e1m l\u00edto...
errorTitleHtml=<strong>Omlouv\u00e1me</strong> se ...
emailVerifyTitle=Ov\u011b\u0159en\u00ed e-mailu
emailForgotTitle=Zapomn\u011bli jste heslo?
updateEmailTitle=Aktualizace e-mailu
emailUpdateConfirmationSentTitle=Potvrzovac\u00ed e-mail odesl\u00e1n
emailUpdateConfirmationSent=Potvrzovac\u00ed e-mail byl odesl\u00e1n na adresu {0}. Pro dokon\u010den\u00ed aktualizace e-mailu postupujte podle pokyn\u016f.
emailUpdatedTitle=E-mail byl aktualizov\u00e1n
emailUpdated=E-mail \u00fa\u010dtu byl \u00fasp\u011b\u0161n\u011b aktualizov\u00e1n na {0}.
updatePasswordTitle=Aktualizace hesla
codeSuccessTitle=K\u00f3d \u00fasp\u011bchu
codeErrorTitle=K\u00f3d chyby\: {0}
displayUnsupported=Po\u017eadovan\u00fd typ zobrazen\u00ed nen\u00ed podporovan\u00fd
browserRequired=Pro p\u0159ihl\u00e1\u0161en\u00ed je vy\u017eadov\u00e1n prohl\u00ed\u017ee\u010d
browserContinue=Pro dokon\u010den\u00ed p\u0159ihl\u00e1\u0161en\u00ed je vy\u017eadov\u00e1n prohl\u00ed\u017ee\u010d
browserContinuePrompt=Otev\u0159\u00edt prohl\u00ed\u017ee\u010d a pokra\u010dovat v p\u0159ihl\u00e1\u0161en\u00ed? [a/n]\:
browserContinueAnswer=a
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=Intern\u00ed
unknown=Nezn\u00e1m\u00e9
termsTitle=Smluvn\u00ed podm\u00ednky
termsText=
termsPlainText=Smluvn\u00ed podm\u00ednky k odsouhlasen\u00ed.
termsAcceptanceRequired=Mus\u00edte souhlasit s na\u0161imi smluvn\u00edmi podm\u00ednkami.
acceptTerms=Souhlas\u00edm se smluvn\u00edmi podm\u00ednkami
recaptchaFailed=Neplatn\u00e1 Recaptcha
recaptchaNotConfigured=Recaptcha je vy\u017eadov\u00e1na, ale nen\u00ed nakonfigurov\u00e1na
consentDenied=Souhlas byl zam\u00edtnut.
noAccount=Nov\u00fd u\u017eivatel?
username=P\u0159ihla\u0161ovac\u00ed jm\u00e9no
usernameOrEmail=P\u0159ihla\u0161ovac\u00ed jm\u00e9no nebo e-mail
firstName=K\u0159estn\u00ed jm\u00e9no
givenName=K\u0159estn\u00ed jm\u00e9na
fullName=Cel\u00e9 jm\u00e9no
lastName=P\u0159\u00edjmen\u00ed
familyName=P\u0159\u00edjmen\u00ed
email=E-mail
password=Heslo
passwordConfirm=Potvrdit heslo
passwordNew=Nov\u00e9 heslo
passwordNewConfirm=Potvrdit nov\u00e9 heslo
hidePassword=Skr\u00fdt heslo
showPassword=Zobrazit heslo
rememberMe=Pamatovat si m\u011b
authenticatorCode=Jednor\u00e1zov\u00fd k\u00f3d
address=Adresa
street=Ulice
locality=M\u011bsto
region=Kraj
postal_code=PS\u010c
country=St\u00e1t
emailVerified=E-mail ov\u011b\u0159en
website=Webov\u00e1 str\u00e1nka
phoneNumber=Telefonn\u00ed \u010d\u00edslo
phoneNumberVerified=Telefonn\u00ed \u010d\u00edslo ov\u011b\u0159eno
gender=Pohlav\u00ed
birthday=Datum narozen\u00ed
zoneinfo=\u010casov\u00e1 z\u00f3na
gssDelegationCredential=GSS Delegovan\u00e9 Opr\u00e1vn\u011bn\u00ed
logoutOtherSessions=Odhl\u00e1sit se z ostatn\u00edch za\u0159\u00edzen\u00ed
profileScopeConsentText=U\u017eivatelsk\u00fd profil
emailScopeConsentText=E-mailov\u00e1 adresa
addressScopeConsentText=Adresa
phoneScopeConsentText=Telefonn\u00ed \u010d\u00edslo
offlineAccessScopeConsentText=P\u0159\u00edstup offline
samlRoleListScopeConsentText=Moje role
rolesScopeConsentText=U\u017eivatelsk\u00e9 role
restartLoginTooltip=Za\u010d\u00edt s p\u0159ihla\u0161ov\u00e1n\u00edm od za\u010d\u00e1tku
loginTotpIntro=Mus\u00edte si nakonfigurovat gener\u00e1tor jednor\u00e1zov\u00fdch k\u00f3d\u016f (OTP) pro p\u0159\u00edstup k \u00fa\u010dtu
loginTotpStep1=Nainstalujte do mobilu jednu z n\u00e1sleduj\u00edc\u00edch aplikac\u00ed
loginTotpStep2=Otev\u0159ete aplikaci a naskenujte \u010d\u00e1rov\u00fd k\u00f3d
loginTotpStep3=Zadejte jednor\u00e1zov\u00fd k\u00f3d poskytnut\u00fd aplikac\u00ed a klepnut\u00edm na tla\u010d\u00edtko Odeslat dokon\u010dete nastaven\u00ed
loginTotpStep3DeviceName=Zadejte n\u00e1zev za\u0159\u00edzen\u00ed pro jednodu\u0161\u0161\u00ed spr\u00e1vu jednor\u00e1zov\u00fdch k\u00f3d\u016f (OTP) za\u0159\u00edzen\u00ed.
loginTotpManualStep2=Otev\u0159ete aplikaci a zadejte kl\u00ed\u010d
loginTotpManualStep3=Pou\u017eijte n\u00e1sleduj\u00edc\u00ed hodnoty konfigurace, pokud aplikace umo\u017e\u0148uje jejich nastaven\u00ed
loginTotpUnableToScan=Nelze skenovat?
loginTotpScanBarcode=Skenovat \u010d\u00e1rov\u00fd k\u00f3d?
loginCredential=P\u0159ihla\u0161ovac\u00ed \u00fadaje
loginOtpOneTime=Jednor\u00e1zov\u00fd k\u00f3d
loginTotpType=Typ
loginTotpAlgorithm=Algoritmus
loginTotpDigits=\u010c\u00edslice
loginTotpInterval=Interval
loginTotpCounter=Po\u010d\u00edtadlo
loginTotpDeviceName=N\u00e1zev za\u0159\u00edzen\u00ed
loginTotp.totp=Zalo\u017eeno na \u010dase
loginTotp.hotp=Zalo\u017eeno na po\u010d\u00edtadle
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=Vyberte metodu p\u0159ihl\u00e1\u0161en\u00ed
oauthGrantRequest=Poskytujete tyto p\u0159\u00edstupov\u00e1 opr\u00e1vn\u011bn\u00ed?
inResource=v
oauth2DeviceVerificationTitle=P\u0159ihl\u00e1\u0161en\u00ed na za\u0159\u00edzen\u00ed
verifyOAuth2DeviceUserCode=Zadejte k\u00f3d z va\u0161eho za\u0159\u00edzen\u00ed a klikn\u011bte na Odeslat
oauth2DeviceInvalidUserCodeMessage=Nespr\u00e1vn\u00fd k\u00f3d, zkuste to pros\u00edm znovu.
oauth2DeviceExpiredUserCodeMessage=Platnost k\u00f3du vypr\u0161ela. Vra\u0165te se pros\u00edm do va\u0161eho za\u0159\u00edzen\u00ed a zkuste se p\u0159ipojit znovu.
oauth2DeviceVerificationCompleteHeader=\u00dasp\u011b\u0161n\u00e9 p\u0159ihl\u00e1\u0161en\u00ed v za\u0159\u00edzen\u00ed
oauth2DeviceVerificationCompleteMessage=M\u016f\u017eete zav\u0159\u00edt toto okno prohl\u00ed\u017ee\u010de a vr\u00e1tit se do va\u0161eho za\u0159\u00edzen\u00ed.
oauth2DeviceVerificationFailedHeader=Selhalo p\u0159ihl\u00e1\u0161en\u00ed v za\u0159\u00edzen\u00ed
oauth2DeviceVerificationFailedMessage=M\u016f\u017eete zav\u0159\u00edt toto okno prohl\u00ed\u017ee\u010de a vr\u00e1tit se do va\u0161eho za\u0159\u00edzen\u00ed a zkusit se znovu p\u0159ipojit.
oauth2DeviceConsentDeniedMessage=P\u0159ipojen\u00ed za\u0159\u00edzen\u00ed odm\u00edtnuto.
oauth2DeviceAuthorizationGrantDisabledMessage=Klient nem\u00e1 povoleno iniciovat OAuth 2.0 Device Authorization Grant. Flow je pro klienta zak\u00e1z\u00e1no.
emailVerifyInstruction1=Byl V\u00e1m zasl\u00e1n e-mail s pokyny k ov\u011b\u0159en\u00ed va\u0161\u00ed e-mailov\u00e9 adresy.
emailVerifyInstruction2=Nez\u00edskali jste v e-mailu ov\u011b\u0159ovac\u00ed k\u00f3d?
emailVerifyInstruction3=znovu odeslat e-mail.
emailLinkIdpTitle=Odkaz {0}
emailLinkIdp1=Byl v\u00e1m zasl\u00e1n e-mail s pokyny k propojen\u00ed {0} \u00fa\u010dtu {1} s va\u0161\u00edm \u00fa\u010dtem {2}.
emailLinkIdp2=Nez\u00edskali jste v e-mailu ov\u011b\u0159ovac\u00ed k\u00f3d?
emailLinkIdp3=znovu odeslat e-mail.
emailLinkIdp4=Pokud jste ji\u017e ov\u011b\u0159ili e-mail v jin\u00e9m prohl\u00ed\u017ee\u010di
emailLinkIdp5=pokra\u010dovat.
backToLogin=&laquo; Zp\u011bt k p\u0159ihl\u00e1\u0161en\u00ed
emailInstruction=Zadejte sv\u00e9 u\u017eivatelsk\u00e9 jm\u00e9no nebo e-mailovou adresu a my v\u00e1m za\u0161leme pokyny k vytvo\u0159en\u00ed nov\u00e9ho hesla.
emailInstructionUsername=Zadejte sv\u00e9 u\u017eivatelsk\u00e9 jm\u00e9no a my v\u00e1m za\u0161leme pokyny k vytvo\u0159en\u00ed nov\u00e9ho hesla.
copyCodeInstruction=Zkop\u00edrujte tento k\u00f3d a vlo\u017ete jej do sv\u00e9 aplikace\:
pageExpiredTitle=Vypr\u0161ela platnost str\u00e1nky
pageExpiredMsg1=Pro restart procesu p\u0159ihl\u00e1\u0161en\u00ed
pageExpiredMsg2=Pokra\u010dovat v procesu p\u0159ihl\u00e1\u0161en\u00ed
personalInfo=Osobn\u00ed \u00fadaje\:
role_admin=Administr\u00e1tor realmu
role_realm-admin=Administr\u00e1tor realmu
role_create-realm=Vytvo\u0159it realm
role_create-client=Vytvo\u0159it klienta
role_view-realm=Zobrazit realm
role_view-users=Zobrazit u\u017eivatele
role_view-applications=Zobrazit aplikace
role_view-clients=Zobrazit klienty
role_view-events=Zobrazit ud\u00e1losti
role_view-identity-providers=Zobrazit poskytovatele identity
role_manage-realm=Spravovat realm
role_manage-users=Spravovat u\u017eivatele
role_manage-applications=Spravovat aplikace
role_manage-identity-providers=Spravovat poskytovatele identity
role_manage-clients=Spravovat klienty
role_manage-events=Spravovat ud\u00e1losti
role_view-profile=Zobrazit profil
role_manage-account=Spravovat \u00fa\u010det
role_manage-account-links=Spravovat odkazy na \u00fa\u010det
role_read-token=\u010c\u00edst token
role_offline-access=P\u0159\u00edstup offline
client_account=\u00da\u010det
client_account-console=U\u017eivatelsk\u00e1 konzola
client_realm-management=Spr\u00e1va realmu
client_broker=Broker
requiredFields=Vy\u017eadovan\u00e9 polo\u017eky
invalidUserMessage=Neplatn\u00e9 jm\u00e9no nebo heslo.
invalidUsernameMessage=Neplatn\u00e9 jm\u00e9no.
invalidUsernameOrEmailMessage=Neplatn\u00e9 jm\u00e9no nebo e-mail.
invalidPasswordMessage=Neplatn\u00e9 heslo.
invalidEmailMessage=Neplatn\u00fd e-mail.
accountDisabledMessage=\u00da\u010det je neplatn\u00fd, kontaktujte administr\u00e1tora.
accountTemporarilyDisabledMessage=\u00da\u010det je do\u010dasn\u011b deaktivov\u00e1n, kontaktujte administr\u00e1tora nebo zkuste pozd\u011bji.
expiredCodeMessage=Platnost p\u0159ihl\u00e1\u0161en\u00ed vypr\u0161ela. P\u0159ihlaste se znovu.
expiredActionMessage=Akce vypr\u0161ela. Pokra\u010dujte p\u0159ihl\u00e1\u0161en\u00edm.
expiredActionTokenNoSessionMessage=Akce vypr\u0161ela.
expiredActionTokenSessionExistsMessage=Akce vypr\u0161ela. Za\u010dn\u011bte znovu
sessionLimitExceeded=P\u0159\u00edli\u0161 mnoho nav\u00e1zan\u00fdch spojen\u00ed
missingFirstNameMessage=Zadejte pros\u00edm jm\u00e9no.
missingLastNameMessage=Zadejte pros\u00edm p\u0159\u00edjmen\u00ed.
missingEmailMessage=Zadejte pros\u00edm e-mail.
missingUsernameMessage=Zadejte pros\u00edm u\u017eivatelsk\u00e9 jm\u00e9no.
missingPasswordMessage=Zadejte pros\u00edm heslo.
missingTotpMessage=Zadejte pros\u00edm k\u00f3d ov\u011b\u0159ovatele.
missingTotpDeviceNameMessage=Zadejte pros\u00edm jm\u00e9no za\u0159\u00edzen\u00ed.
notMatchPasswordMessage=Hesla se neshoduj\u00ed.
error-invalid-value=Nespr\u00e1vn\u00e1 hodnota.
error-invalid-blank=Zadejte pros\u00edm hodnotu.
error-empty=Zadejte pros\u00edm hodnotu.
error-invalid-length=D\u00e9lka mus\u00ed b\u00fdt mezi {1} a {2}.
error-invalid-length-too-short=Minim\u00e1ln\u00ed d\u00e9lka je {1}.
error-invalid-length-too-long=Maxim\u00e1ln\u00ed d\u00e9lka je {2}.
error-invalid-email=Nespr\u00e1vn\u00e1 e-mailov\u00e1 adresa.
error-invalid-number=Nespr\u00e1vn\u00e9 \u010d\u00edslo.
error-number-out-of-range=\u010c\u00edslo mus\u00ed b\u00fdt mezi {1} a {2}.
error-number-out-of-range-too-small=Minim\u00e1ln\u00ed hodnota \u010d\u00edsla je {1}.
error-number-out-of-range-too-big=Maxim\u00e1ln\u00ed hodnota \u010d\u00edsla je {2}.
error-pattern-no-match=Nespr\u00e1vn\u00e1 hodnota.
error-invalid-uri=Nespr\u00e1vn\u00e1 URL adresa.
error-invalid-uri-scheme=Nespr\u00e1vn\u00e9 URL sch\u00e9ma.
error-invalid-uri-fragment=Nespr\u00e1vn\u00fd fragment URL.
error-user-attribute-required=Zadejte pros\u00edm tuto polo\u017eku.
error-invalid-date=Nespr\u00e1vn\u00e9 datum.
error-user-attribute-read-only=Tato polo\u017eka je jen ke \u010dten\u00ed.
error-username-invalid-character=Hodnota obsahuje nevalidn\u00ed znak.
error-person-name-invalid-character=Hodnota obsahuje nevalidn\u00ed znak.
error-reset-otp-missing-id=Vyberte pros\u00edm OTP konfiguraci.
invalidPasswordExistingMessage=Neplatn\u00e9 existuj\u00edc\u00ed heslo.
invalidPasswordBlacklistedMessage=Neplatn\u00e9 heslo\: heslo je na \u010dern\u00e9 listin\u011b.
invalidPasswordConfirmMessage=Potvrzen\u00ed hesla se neshoduje.
invalidTotpMessage=Neplatn\u00fd k\u00f3d ov\u011b\u0159ov\u00e1n\u00ed.
usernameExistsMessage=U\u017eivatelsk\u00e9 jm\u00e9no ji\u017e existuje.
emailExistsMessage=E-mail ji\u017e existuje.
federatedIdentityExistsMessage=U\u017eivatel s {0} {1} ji\u017e existuje. P\u0159ihlaste se ke spr\u00e1v\u011b \u00fa\u010dtu a propojte \u00fa\u010det.
federatedIdentityUnavailableMessage=U\u017eivatel {0} p\u0159ihl\u00e1\u0161en\u00fd poskytovatelem identit {1} neexistuje. Kontaktujte pros\u00edm administr\u00e1tora.
federatedIdentityUnmatchedEssentialClaimMessage=Token identity vydan\u00fd poskytovatelem identity neodpov\u00edd\u00e1 nakonfigurovan\u00e9mu essential claim. Kontaktujte pros\u00edm administr\u00e1tora.
confirmLinkIdpTitle=\u00da\u010det ji\u017e existuje
federatedIdentityConfirmLinkMessage=U\u017eivatel s {0} {1} ji\u017e existuje. Jak chcete pokra\u010dovat?
federatedIdentityConfirmReauthenticateMessage=Ov\u011b\u0159te jako {0} k propojen\u00ed \u00fa\u010dtu {1}
nestedFirstBrokerFlowMessage={0} u\u017eivatel {1} nen\u00ed propojen s \u017e\u00e1dn\u00fdm zn\u00e1m\u00fdm u\u017eivatelem.
confirmLinkIdpReviewProfile=Zkontrolujte profil
confirmLinkIdpContinue=P\u0159idat do existuj\u00edc\u00edho \u00fa\u010dtu
configureTotpMessage=Chcete-li aktivovat \u00fa\u010det, mus\u00edte nastavit slu\u017ebu Mobile Authenticator.
configureBackupCodesMessage=Pro aktivaci sv\u00e9ho \u00fa\u010dtu mus\u00edte nakonfigurovat z\u00e1lo\u017en\u00ed k\u00f3dy.
updateProfileMessage=Pro aktivaci \u00fa\u010dtu mus\u00edte aktualizovat sv\u016fj u\u017eivatelsk\u00fd profil.
updatePasswordMessage=Pro aktivaci \u00fa\u010dtu mus\u00edte prov\u00e9st aktualizaci hesla.
updateEmailMessage=Pro aktivaci \u00fa\u010dtu mus\u00edte aktualizovat svou e-mailovou adresu.
resetPasswordMessage=Je t\u0159eba zm\u011bnit heslo.
verifyEmailMessage=Pro aktivaci \u00fa\u010dtu mus\u00edte ov\u011b\u0159it va\u0161i e-mailovou adresu.
linkIdpMessage=Pot\u0159ebujete-li ov\u011b\u0159it va\u0161i e-mailovou adresu, propojte sv\u016fj \u00fa\u010det s {0}.
emailSentMessage=M\u011bli byste brzy obdr\u017eet e-mail s dal\u0161\u00edmi pokyny.
emailSendErrorMessage=Nepoda\u0159ilo se odeslat e-mail, zkuste to pros\u00edm pozd\u011bji.
accountUpdatedMessage=V\u00e1\u0161 \u00fa\u010det byl aktualizov\u00e1n.
accountPasswordUpdatedMessage=Va\u0161e heslo bylo aktualizov\u00e1no.
delegationCompleteHeader=P\u0159ihl\u00e1\u0161en\u00ed \u00fasp\u011b\u0161n\u00e9
delegationCompleteMessage=M\u016f\u017eete zav\u0159\u00edt toto okno prohl\u00ed\u017ee\u010de a vr\u00e1tit se do aplikace.
delegationFailedHeader=P\u0159ihl\u00e1\u0161en\u00ed selhalo
delegationFailedMessage=M\u016f\u017eete zav\u0159\u00edt toto okno prohl\u00ed\u017ee\u010de a vr\u00e1tit se do aplikace a zkusit se znovu p\u0159ihl\u00e1sit.
noAccessMessage=\u017d\u00e1dn\u00fd p\u0159\u00edstup
invalidPasswordMinLengthMessage=Neplatn\u00e9 heslo\: minim\u00e1ln\u00ed d\u00e9lka {0}.
invalidPasswordMaxLengthMessage=Neplatn\u00e9 heslo\: maxim\u00e1ln\u00ed d\u00e9lka {0}.
invalidPasswordMinDigitsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahovat nejm\u00e9n\u011b {0} \u010d\u00edslic.
invalidPasswordMinLowerCaseCharsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahovat minim\u00e1ln\u011b {0} mal\u00e9 znaky.
invalidPasswordMinUpperCaseCharsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahovat nejm\u00e9n\u011b {0} velk\u00e1 p\u00edsmena.
invalidPasswordMinSpecialCharsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahovat nejm\u00e9n\u011b {0} speci\u00e1ln\u00ed znaky.
invalidPasswordNotUsernameMessage=Neplatn\u00e9 heslo\: nesm\u00ed b\u00fdt toto\u017en\u00e9 s u\u017eivatelsk\u00fdm jm\u00e9nem.
invalidPasswordNotEmailMessage=Neplatn\u00e9 heslo\: nesm\u00ed b\u00fdt toto\u017en\u00e9 s e-mailovou adresou.
invalidPasswordRegexPatternMessage=Neplatn\u00e9 heslo\: neshoduje se vzorem regul\u00e9rn\u00edho v\u00fdrazu.
invalidPasswordHistoryMessage=Neplatn\u00e9 heslo\: Nesm\u00ed se rovnat \u017e\u00e1dn\u00e9mu z posledn\u00edch {0} hesel.
invalidPasswordGenericMessage=Neplatn\u00e9 heslo\: nov\u00e9 heslo neodpov\u00edd\u00e1 pravidl\u016fm hesla.
failedToProcessResponseMessage=Nepoda\u0159ilo se zpracovat odpov\u011b\u010f
httpsRequiredMessage=Po\u017eadov\u00e1no HTTPS
realmNotEnabledMessage=Realm nen\u00ed povolen
invalidRequestMessage=Neplatn\u00e1 \u017e\u00e1dost
successLogout=Odhl\u00e1\u0161en\u00ed bylo \u00fasp\u011b\u0161n\u00e9
failedLogout=Odhl\u00e1\u0161en\u00ed se nezda\u0159ilo
unknownLoginRequesterMessage=Nezn\u00e1m\u00fd \u017eadatel o p\u0159ihl\u00e1\u0161en\u00ed
loginRequesterNotEnabledMessage=\u017dadatel o p\u0159ihl\u00e1\u0161en\u00ed nen\u00ed povolen
bearerOnlyMessage=Aplikace bearer-only nemohou iniciovat p\u0159ihla\u0161ov\u00e1n\u00ed pomoc\u00ed prohl\u00ed\u017ee\u010de
standardFlowDisabledMessage=Klient nesm\u00ed iniciovat p\u0159ihla\u0161ov\u00e1n\u00ed prohl\u00ed\u017ee\u010de s dan\u00fdm typem odpov\u011bdi. Standardn\u00ed tok je pro klienta zak\u00e1z\u00e1n.
implicitFlowDisabledMessage=Klient nesm\u00ed iniciovat p\u0159ihla\u0161ov\u00e1n\u00ed prohl\u00ed\u017ee\u010de s dan\u00fdm typem odpov\u011bdi. Implicitn\u00ed tok je pro klienta zak\u00e1z\u00e1n.
invalidRedirectUriMessage=Neplatn\u00e1 adresa p\u0159esm\u011brov\u00e1n\u00ed
unsupportedNameIdFormatMessage=Nepodporovan\u00fd NameIDFormat
invalidRequesterMessage=Neplatn\u00fd \u017eadatel
registrationNotAllowedMessage=Registrace nen\u00ed povolena
resetCredentialNotAllowedMessage=Reset Credential nen\u00ed povoleno
permissionNotApprovedMessage=Opr\u00e1vn\u011bn\u00ed nebylo schv\u00e1leno.
noRelayStateInResponseMessage=Chyb\u00ed relay state v odpov\u011bdi od poskytovatele identity.
insufficientPermissionMessage=Nedostate\u010dn\u00e1 opr\u00e1vn\u011bn\u00ed k propojen\u00ed identit.
couldNotProceedWithAuthenticationRequestMessage=Nemohu pokra\u010dovat s \u017e\u00e1dost\u00ed o ov\u011b\u0159en\u00ed poskytovateli identity.
couldNotObtainTokenMessage=Nelze z\u00edskat token od poskytovatele identity.
unexpectedErrorRetrievingTokenMessage=Neo\u010dek\u00e1van\u00e1 chyba p\u0159i na\u010d\u00edt\u00e1n\u00ed tokenu od poskytovatele identity.
unexpectedErrorHandlingResponseMessage=Neo\u010dek\u00e1van\u00e1 chyba p\u0159i zpracov\u00e1n\u00ed odpov\u011bdi od poskytovatele identity.
identityProviderAuthenticationFailedMessage=Ov\u011b\u0159en\u00ed selhalo. Nelze ov\u011b\u0159it s poskytovatelem identity.
couldNotSendAuthenticationRequestMessage=Nelze odeslat \u017e\u00e1dost o ov\u011b\u0159en\u00ed poskytovateli identity.
unexpectedErrorHandlingRequestMessage=Neo\u010dek\u00e1van\u00e1 chyba p\u0159i zpracov\u00e1n\u00ed po\u017eadavku na ov\u011b\u0159en\u00ed poskytovateli identity.
invalidAccessCodeMessage=Neplatn\u00fd p\u0159\u00edstupov\u00fd k\u00f3d.
sessionNotActiveMessage=Session nen\u00ed aktivn\u00ed.
invalidCodeMessage=Do\u0161lo k chyb\u011b, p\u0159ihlaste se znovu prost\u0159ednictv\u00edm sv\u00e9 aplikace.
cookieNotFoundMessage=Soubor cookie nenalezen. Ujist\u011bte se pros\u00edm, \u017ee m\u00e1te v prohl\u00ed\u017ee\u010di povolen\u00e9 cookies.
insufficientLevelOfAuthentication=Nebylo dosa\u017eeno po\u017eadovan\u00e9 \u00farovn\u011b autentizace.
identityProviderUnexpectedErrorMessage=Neo\u010dek\u00e1van\u00e1 chyba p\u0159i ov\u011b\u0159ov\u00e1n\u00ed s poskytovatelem identity
identityProviderMissingStateMessage=V odpov\u011bdi od poskytovatele identit chyb\u00ed parametr state.
identityProviderMissingCodeOrErrorMessage=V odpov\u011bdi poskytovatele identit chyb\u00ed parametr code nebo error.
identityProviderInvalidResponseMessage=Nevalidn\u00ed odpov\u011b\u010f od poskytovatele identity.
identityProviderInvalidSignatureMessage=Nevalidn\u00ed podpis v odpov\u011bdi od poskytovatele identity.
identityProviderNotFoundMessage=Nelze naj\u00edt poskytovatele identity s identifik\u00e1torem.
identityProviderLinkSuccess=\u00dasp\u011b\u0161n\u011b jste ov\u011b\u0159ili sv\u016fj e-mail. Vra\u0165te se pros\u00edm zp\u011bt do p\u016fvodn\u00edho prohl\u00ed\u017ee\u010de a pokra\u010dujte tam s p\u0159ihla\u0161ovac\u00edmi \u00fadaji.
staleCodeMessage=Tato str\u00e1nka ji\u017e nen\u00ed platn\u00e1. Vra\u0165te se zp\u011bt do aplikace a p\u0159ihlaste se znovu
realmSupportsNoCredentialsMessage=Realm nepodporuje \u017e\u00e1dn\u00fd typ pov\u011b\u0159en\u00ed.
credentialSetupRequired=Nen\u00ed mo\u017en\u00e9 se p\u0159ihl\u00e1sit, je vy\u017eadov\u00e1na konfigurace p\u0159\u00edstupov\u00fdch \u00fadaj\u016f.
identityProviderNotUniqueMessage=Realm podporuje v\u00edce poskytovatel\u016f identity. Nelze ur\u010dit, s jak\u00fdm zprost\u0159edkovatelem identity se m\u00e1 ov\u011b\u0159it.
emailVerifiedMessage=Va\u0161e e-mailov\u00e1 adresa byla ov\u011b\u0159ena.
emailVerifiedAlreadyMessage=Va\u0161e e-mailov\u00e1 adresa ji\u017e byla ov\u011b\u0159ena.
staleEmailVerificationLink=Odkaz, na kter\u00fd jste klikli, je star\u00fd odkaz a ji\u017e nen\u00ed platn\u00fd. Mo\u017en\u00e1 jste ji\u017e ov\u011b\u0159ili sv\u016fj e-mail?
identityProviderAlreadyLinkedMessage=Federovan\u00e1 identita vr\u00e1cen\u00e1 {0} je ji\u017e propojena s jin\u00fdm u\u017eivatelem.
confirmAccountLinking=Potvr\u010fte propojen\u00ed \u00fa\u010dtu {0} poskytovatele identity {1} s va\u0161\u00edm \u00fa\u010dtem.
confirmEmailAddressVerification=Potvr\u010fte platnost e-mailov\u00e9 adresy {0}.
confirmExecutionOfActions=Prove\u010fte n\u00e1sleduj\u00edc\u00ed akce
backToApplication=&laquo; Zp\u011bt na aplikaci
missingParameterMessage=Chyb\u011bj\u00edc\u00ed parametry\: {0}
clientNotFoundMessage=Klient nebyl nalezen.
clientDisabledMessage=Klient byl zneplatn\u011bn.
invalidParameterMessage=Neplatn\u00fd parametr\: {0}
alreadyLoggedIn=Jste ji\u017e p\u0159ihl\u00e1\u0161eni.
differentUserAuthenticated=Jste ji\u017e v t\u00e9to relaci ov\u011b\u0159eni jako jin\u00fd u\u017eivatel '' {0} ''. Nejd\u0159\u00edve se odhlaste.
brokerLinkingSessionExpired=Po\u017eadovan\u00e9 propojen\u00ed \u00fa\u010dtu broker\u016f, ale aktu\u00e1ln\u00ed relace ji\u017e nen\u00ed platn\u00e1.
proceedWithAction=&raquo; Klikn\u011bte zde pro pokra\u010dov\u00e1n\u00ed
acrNotFulfilled=Nebyly napln\u011bny po\u017eadavky autentizace
requiredAction.CONFIGURE_TOTP=Konfigurovat OTP
requiredAction.TERMS_AND_CONDITIONS=Smluvn\u00ed podm\u00ednky
requiredAction.UPDATE_PASSWORD=Aktualizace hesla
requiredAction.UPDATE_PROFILE=Aktualizovat profil
requiredAction.VERIFY_EMAIL=Ov\u011b\u0159it e-mail
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generov\u00e1n\u00ed k\u00f3d\u016f pro obnoven\u00ed
invalidTokenRequiredActions=Po\u017eadovan\u00e9 akce obsa\u017een\u00e9 v dan\u00e9m odkazu nejsou validn\u00ed
doX509Login=Budete p\u0159ihl\u00e1\u0161eni jako\:
clientCertificate=Klientsk\u00fd X509 certifik\u00e1t\:
noCertificate=[\u017d\u00e1dn\u00fd certifik\u00e1t]
pageNotFound=Str\u00e1nka nenalezena
internalServerError=Nastala intern\u00ed chyba serveru
console-username=Jm\u00e9no\:
console-password=Heslo\:
console-otp=Jednor\u00e1zov\u00e9 heslo\:
console-new-password=Nov\u00e9 heslo\:
console-confirm-password=Potvrzen\u00ed hesla\:
console-update-password=Je vy\u017eadov\u00e1na zm\u011bna hesla.
console-verify-email=Mus\u00edte ov\u011b\u0159it svou e-mailovou adresu. Odeslali jsme e-mail na {0}, kter\u00fd obsahuje ov\u011b\u0159ovac\u00ed k\u00f3d. Zadejte pros\u00edm tento k\u00f3d do pole n\u00ed\u017ee.
console-email-code=K\u00f3d z e-mailu\:
console-accept-terms=Souhlasit s podm\u00ednkami? [a/n]\:
console-accept=a
openshift.scope.user_info=Informace o u\u017eivateli
openshift.scope.user_check-access=Informace o p\u0159\u00edstupu u\u017eivatele
openshift.scope.user_full=Pln\u00fd p\u0159\u00edstup
openshift.scope.list-projects=Seznam projekt\u016f
saml.post-form.title=P\u0159esm\u011brov\u00e1n\u00ed p\u0159ihl\u00e1\u0161en\u00ed
saml.post-form.message=P\u0159esm\u011brov\u00e1v\u00e1m, \u010dekejte pros\u00edm.
saml.post-form.js-disabled=JavaScript nen\u00ed povolen\u00fd. D\u016frazn\u011b doporu\u010dujeme jej povolit. Pro pokra\u010dov\u00e1n\u00ed stiskn\u011bte tla\u010d\u00edtko n\u00ed\u017ee.
saml.artifactResolutionServiceInvalidResponse=Nepovedlo se rozpoznat SAML artefakt.
otp-display-name=Autentiza\u010dn\u00ed Aplikace
otp-help-text=Zadejte ov\u011b\u0159ovac\u00ed k\u00f3d z aplikace.
otp-reset-description=Kter\u00e1 konfigurace OTP m\u00e1 b\u00fdt odstran\u011bna?
password-display-name=Heslo
password-help-text=P\u0159ihlaste se pomoc\u00ed hesla.
auth-username-form-display-name=Jm\u00e9no
auth-username-form-help-text=Za\u010dn\u011bte p\u0159ihl\u00e1\u0161en\u00ed zad\u00e1n\u00edm sv\u00e9ho u\u017eivatelsk\u00e9ho jm\u00e9na
auth-username-password-form-display-name=Jm\u00e9no a heslo
auth-username-password-form-help-text=P\u0159ihlaste se pomoc\u00ed jm\u00e9na a hesla.
auth-recovery-authn-code-form-display-name=K\u00f3d pro obnovu p\u0159\u00edstupu
auth-recovery-authn-code-form-help-text=Zadejte k\u00f3d pro obnovu p\u0159\u00edstupu z d\u0159\u00edve vygenerovan\u00e9ho seznamu.
auth-recovery-code-info-message=Zadejte specifikovan\u00fd k\u00f3d pro obnovu.
auth-recovery-code-prompt=K\u00f3d pro obnovu \#{0}
auth-recovery-code-header=P\u0159ihlaste se k\u00f3dem pro obnovu p\u0159\u00edstupu
recovery-codes-error-invalid=Nespr\u00e1vn\u00fd k\u00f3d pro obnovu p\u0159\u00edstupu
recovery-code-config-header=K\u00f3dy pro obnovu p\u0159\u00edstupu
recovery-code-config-warning-title=Tyto k\u00f3dy pro obnovu nebudou znovu zobrazeny, kdy\u017e tuto str\u00e1nku opust\u00edte
recovery-code-config-warning-message=K\u00f3dy pro obnovu si vytiskn\u011bte, st\u00e1hn\u011bte nebo zkop\u00edrujte do spr\u00e1vce hesel a dr\u017ete je v bezpe\u010d\u00ed. Stornov\u00e1n\u00ed t\u00e9to konfigurace odstran\u00ed k\u00f3dy pro obnovu z va\u0161eho \u00fa\u010dtu.
recovery-codes-print=Tisknout
recovery-codes-download=St\u00e1hnout
recovery-codes-copy=Kop\u00edrovat
recovery-codes-copied=Zkop\u00edrov\u00e1no
recovery-codes-confirmation-message=M\u00e1m tyto k\u00f3dy bezpe\u010dn\u011b ulo\u017een\u00e9
recovery-codes-action-complete=Dokon\u010dit konfiguraci
recovery-codes-action-cancel=Stornovat konfiguraci
recovery-codes-download-file-header=Uchovejte tyto k\u00f3dy pro obnovu v bezpe\u010d\u00ed.
recovery-codes-download-file-description=K\u00f3dy pro obnovu jsou hesla pro jednor\u00e1zov\u00e9 pou\u017eit\u00ed, pomoc\u00ed kter\u00fdch se m\u016f\u017eete p\u0159ihl\u00e1sit bez p\u0159\u00edstupu k autentik\u00e1toru.
recovery-codes-download-file-date=Tyto k\u00f3dy byly generov\u00e1ny
recovery-codes-label-default=K\u00f3dy pro obnovu
webauthn-display-name=P\u0159\u00edstupov\u00fd kl\u00ed\u010d
webauthn-help-text=Pou\u017eijte k p\u0159ihl\u00e1\u0161en\u00ed p\u0159\u00edstupov\u00fd kl\u00ed\u010d.
webauthn-passwordless-display-name=P\u0159\u00edstupov\u00fd kl\u00ed\u010d
webauthn-passwordless-help-text=Pou\u017eijte p\u0159\u00edstupov\u00fd kl\u00ed\u010d k p\u0159ihl\u00e1\u0161en\u00ed bez hesla.
webauthn-login-title=P\u0159ihl\u00e1\u0161en\u00ed p\u0159\u00edstupov\u00fdm kl\u00ed\u010dem
webauthn-registration-title=Registrace p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de
webauthn-available-authenticators=Dostupn\u00e9 p\u0159\u00edstupov\u00e9 kl\u00ed\u010de
webauthn-unsupported-browser-text=WebAuthn nen\u00ed v tomto prohl\u00ed\u017ee\u010di podporov\u00e1no. Zkuste jin\u00fd prohl\u00ed\u017ee\u010d nebo kontaktujte sv\u00e9ho administr\u00e1tora.
webauthn-doAuthenticate=P\u0159ihl\u00e1\u0161en\u00ed p\u0159\u00edstupov\u00fdm kl\u00ed\u010dem
webauthn-createdAt-label=Vytvo\u0159eno
webauthn-error-title=Chyba p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de
webauthn-error-registration=Selhala registrace va\u0161eho p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de.<br/> {0}
webauthn-error-api-get=Selhalo p\u0159ihl\u00e1\u0161en\u00ed pomoc\u00ed p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de.<br/> {0}
webauthn-error-different-user=Prvn\u00ed p\u0159ihl\u00e1\u0161en\u00fd u\u017eivatel nen\u00ed toto\u017en\u00fd s u\u017eivatelem p\u0159ihl\u00e1\u0161en\u00fdm pomoc\u00ed p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de.
webauthn-error-auth-verification=Nevalidn\u00ed v\u00fdsledek p\u0159ihl\u00e1\u0161en\u00ed pomoc\u00ed p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de.<br/> {0}
webauthn-error-register-verification=Nevalidn\u00ed v\u00fdsledek registrace p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de.<br/> {0}
webauthn-error-user-not-found=Nezn\u00e1m\u00fd u\u017eivatel p\u0159ihl\u00e1\u0161en pomoc\u00ed p\u0159\u00edstupov\u00e9ho kl\u00ed\u010de.
identity-provider-redirector=Propojit s jin\u00fdm poskytovatelem identit
identity-provider-login-label=Nebo se p\u0159ihlaste pomoc\u00ed
idp-email-verification-display-name=Ov\u011b\u0159en\u00ed e-mailu
idp-email-verification-help-text=Prove\u010fte sp\u00e1rov\u00e1n\u00ed \u00fa\u010dtu ov\u011b\u0159en\u00edm e-mailu.
idp-username-password-form-display-name=Jm\u00e9no a p\u0159\u00edjmen\u00ed
idp-username-password-form-help-text=Prove\u010fte sp\u00e1rov\u00e1n\u00ed \u00fa\u010dtu p\u0159ihl\u00e1\u0161en\u00edm.
finalDeletionConfirmation=Pokud sv\u016fj \u00fa\u010det odstran\u00edte, nem\u016f\u017ee b\u00fdt obnoven. Pro zachov\u00e1n\u00ed \u00fa\u010dtu klikn\u011bte na tla\u010d\u00edtko Zru\u0161it.
irreversibleAction=Tuto akci nelze vz\u00edt zp\u011bt
deleteAccountConfirm=Potvrzen\u00ed odstran\u011bn\u00ed \u00fa\u010dtu
deletingImplies=Odstran\u011bn\u00ed va\u0161eho \u00fa\u010dtu znamen\u00e1\:
errasingData=Smaz\u00e1n\u00ed v\u0161ech va\u0161ich dat
loggingOutImmediately=Okam\u017eit\u00e9 odhl\u00e1\u0161en\u00ed
accountUnusable=Dal\u0161\u00ed pou\u017eit\u00ed aplikace s t\u00edmto \u00fa\u010dtem nebude mo\u017en\u00e9
userDeletedSuccessfully=U\u017eivatel \u00fasp\u011b\u0161n\u011b odstran\u011bn
access-denied=P\u0159\u00edstup odep\u0159en
access-denied-when-idp-auth=P\u0159\u00edstup odep\u0159en p\u0159i p\u0159ihl\u00e1\u0161en\u00ed pomoc\u00ed {0}
frontchannel-logout.title=Odhl\u00e1\u0161en\u00ed
frontchannel-logout.message=Odhla\u0161ujete se z n\u00e1sleduj\u00edc\u00edch aplikac\u00ed
logoutConfirmTitle=Odhla\u0161ov\u00e1n\u00ed
logoutConfirmHeader=Chcete se odhl\u00e1sit?
doLogout=Odhl\u00e1sit
readOnlyUsernameMessage=Nem\u016f\u017eete aktualizovat sv\u00e9 u\u017eivatelsk\u00e9 jm\u00e9no, proto\u017ee je pouze pro \u010dten\u00ed.
error-invalid-multivalued-size=Atribut {0} mus\u00ed m\u00edt nejm\u00e9n\u011b {1} {1,choice,0\#hodnot|1\#hodnotu|1<hodnoty|4<hodnot} a nejv\u00edce {2} {2,choice,0\#hodnot|1\#hodnotu|1<hodnoty|4<hodnot}.
shouldBeEqual={0} by m\u011bl b\u00fdt roven {1}
shouldBeDifferent={0} by m\u011bl b\u00fdt odli\u0161n\u00fd od {1}
shouldMatchPattern=Vzor by m\u011bl odpov\u00eddat\: `/{0}/`
mustBeAnInteger=Mus\u00ed b\u00fdt cel\u00e9 \u010d\u00edslo
notAValidOption=Nen\u00ed platn\u00e1 mo\u017enost
selectAnOption=Vyberte mo\u017enost
remove=Odstranit
addValue=P\u0159idat hodnotu
languages=Jazyky

View File

@ -0,0 +1,315 @@
doLogIn=Log ind
doRegister=Registrer
doRegisterSecurityKey=Registrer
doCancel=Annuller
doSubmit=Indsend
doYes=Ja
doNo=Nej
doContinue=Forts\u00e6t
doIgnore=Ignorer
doAccept=Accepter
doDecline=Afsl\u00e5
doForgotPassword=Glemt adgangskode?
doClickHere=Klik her
doImpersonate=Efterlign
kerberosNotConfigured=Kerberos er ikke konfigureret
kerberosNotConfiguredTitle=Kerberos er ikke konfigureret
bypassKerberosDetail=Enten er du ikke logget ind via Kerberos eller ogs\u00e5 er din browser ikke sat op til Kerberos login. Tryk forts\u00e6t for at logge ind p\u00e5 anden vis
kerberosNotSetUp=Kerberos er ikke sat op. Du kan ikke logge ind.
registerTitle=Registrer
loginTitle=Log ind i {0}
loginTitleHtml={0}
impersonateTitle={0} Efterlign bruger
impersonateTitleHtml=<strong>{0}</strong> Efterlign bruger
realmChoice=Rige
unknownUser=Ukendt bruger
loginTotpTitle=Mobil Godkendelses Ops\u00e6tning
loginProfileTitle=Opdater brugerinformationer
loginTimeout=Dit login tog for lang tid. Login processen vil nu begynde forfra.
oauthGrantTitle=Giv adgang til {0}
oauthGrantTitleHtml={0}
errorTitle=Vi beklager...
errorTitleHtml=Vi <strong>beklager</strong> ...
emailVerifyTitle=Email verificering
emailForgotTitle=Glemt din adgangskode?
updatePasswordTitle=Opdater adgangskode
codeSuccessTitle=Success kode
codeErrorTitle=Fejl kode\: {0}
displayUnsupported=Den \u00f8nskede sk\u00e6rmtype underst\u00f8ttes ikke
browserRequired=Brwoseren skal logges ind
browserContinue=Browser p\u00e5kr\u00e6vet for at kunne gennemf\u00f8re login
browserContinuePrompt=\u00c5ben browser for at forts\u00e6tte login? [j/n]\:
browserContinueAnswer=j
termsTitle=Vilk\u00e5r og betingelser
termsText=
termsPlainText=Vilk\u00e5r og betingelser mangler at blive beskrevet.
recaptchaFailed=Ugyldig Recaptcha
recaptchaNotConfigured=Recaptcha er p\u00e5kr\u00e6vet, men ikke konfigureret
consentDenied=Samtykke afsl\u00e5et.
noAccount=Ny bruger?
username=Brugernavn
usernameOrEmail=Brugernavn eller email
firstName=Fornavn
givenName=Fornavn
fullName=Fulde navn
lastName=Efternavn
familyName=Efternavn
email=Email
password=Adgangskode
passwordConfirm=Bekr\u00e6ft adgangskode
passwordNew=Ny Adgangskode
passwordNewConfirm=Bekr\u00e6ft ny adgangskode
rememberMe=Husk mig
authenticatorCode=Engangskode
address=Adresse
street=Vej
locality=By
region=Region
postal_code=Postnummer
country=Land
emailVerified=Email verificeret
gssDelegationCredential=GSS Delegation Credential
profileScopeConsentText=Brugerprofil
emailScopeConsentText=Email adresse
addressScopeConsentText=Adresse
phoneScopeConsentText=Telefonnummer
offlineAccessScopeConsentText=Offline Adgang
samlRoleListScopeConsentText=Mine roller
loginTotpIntro=Du skal ops\u00e6tte en Engangskodegenerator for at kunne tilg\u00e5 denne konto.
loginTotpStep1=Installer en af f\u00f8lgende applikationer p\u00e5 din mobil
loginTotpStep2=\u00c5ben applikationen og skan stregkoden
loginTotpStep3=Indtast engangskoden fra applikationen og tryk Indsend for at gennemf\u00f8re ops\u00e6tningen
loginTotpManualStep2=\u00c5ben applikationen og indtast n\u00f8glen
loginTotpManualStep3=Brug f\u00f8lgende konfigurations v\u00e6rdier hvis applikationen tillader det
loginTotpUnableToScan=Kan du ikke skanne?
loginTotpScanBarcode=Skan stregkode?
loginOtpOneTime=Engangskode
loginTotpType=Type
loginTotpAlgorithm=Algoritme
loginTotpDigits=Cifre
loginTotpInterval=Interval
loginTotpCounter=T\u00e6ller
loginTotp.totp=Tidsbaseret
loginTotp.hotp=T\u00e6llerbaseret
oauthGrantRequest=Bevilger du disse adgangs privilegier?
inResource=ind
emailVerifyInstruction1=En email med instruktioner til, hvordan du verificerer din mail adresse er blevet sendt til dig.
emailVerifyInstruction2=Har du ikke modtaget en verificerings kode i din inbox?
emailVerifyInstruction3=for at gensende emailen.
emailLinkIdpTitle=Link {0}
emailLinkIdp1=En email med instruktioner til hvordan du linker {0} konto {1} med din {2} konto er blevet sendt til dig.
emailLinkIdp2=Har du ikke modtaget en verificerings kode i din inbox?
emailLinkIdp3=for at gensende emailen.
emailLinkIdp4=Hvis du allerede har verificeret din email i en anden browser
emailLinkIdp5=for at forts\u00e6tte.
backToLogin=&laquo; Tilbage til log ind
emailInstruction=Indtast dit brugernavn eller email adresse, s\u00e5 sender vi instruktioner til dig om hvordan du angiver en ny adgangskode.
copyCodeInstruction=Kopier denne kode og inds\u00e6t den i din applikation\:
pageExpiredTitle=Siden er udl\u00f8bet
pageExpiredMsg1=For at genstarte login processen
pageExpiredMsg2=For at forts\u00e6tte login processen
personalInfo=Personlig information\:
role_admin=Admin
role_realm-admin=Rige Admin
role_create-realm=Opret rige
role_create-client=Opret klient
role_view-realm=Se rige
role_view-users=Se brugere
role_view-applications=Se applikationer
role_view-clients=Se klienter
role_view-events=Se h\u00e6ndelser
role_view-identity-providers=Se identitetsudbydere
role_manage-realm=Administrer rige
role_manage-users=Administrer brugere
role_manage-applications=Administrer applikationer
role_manage-identity-providers=Administrer identitetsudbydere
role_manage-clients=Administrer klienter
role_manage-events=Administrer h\u00e6ndelser
role_view-profile=Se profil
role_manage-account=Administrer konto
role_manage-account-links=Administrer konto links
role_read-token=Se token
role_offline-access=Offline adgang
client_account=Konto
client_account-console=Kontokonsol
client_security-admin-console=Sikkerhefds Admin Konsol
client_admin-cli=Admin CLI
client_realm-management=Rige administration
client_broker=Broker
invalidUserMessage=Ugyldig brugernavn eller adgangskode.
invalidEmailMessage=Ugyldig email adresse.
accountDisabledMessage=Kontoen er deaktiveret, kontakt en administrator.
accountTemporarilyDisabledMessage=Kontoen er midlertidigt deaktiveret, kontakt en administrator eller pr\u00f8v igen senere.
expiredCodeMessage=Log ind tog for lang tid. Pr\u00f8v igen.
expiredActionMessage=Handlingen er udl\u00f8bet. Forts\u00e6t med log ind nu.
expiredActionTokenNoSessionMessage=Handling udl\u00f8bet.
expiredActionTokenSessionExistsMessage=Handlingen er udl\u00f8bet. Start venligst forfra.
missingFirstNameMessage=Angiv fornavn.
missingLastNameMessage=Angiv efternavn.
missingEmailMessage=Angiv email adressse.
missingUsernameMessage=Angiv brugernavn.
missingPasswordMessage=Angiv password.
missingTotpMessage=Angiv autentificerings kode.
notMatchPasswordMessage=Passwords er ikke ens.
invalidPasswordExistingMessage=Ugyldig eksisterende adgangskode.
invalidPasswordBlacklistedMessage=Ugyldig adgangskode\: Adgangskoden er sortlisted.
invalidPasswordConfirmMessage=Adgangskoderne er ikke ens
invalidTotpMessage=Ugyldig autentificerings kode.
usernameExistsMessage=Brugernavnet eksisterer allerede.
emailExistsMessage=Email adressen eksisterer allerede.
federatedIdentityExistsMessage=Bruger med {0} {1} eksisterer allerede. Log ind i konto administration for at linke kontoen.
confirmLinkIdpTitle=Kontoen eksisterer allerede
federatedIdentityConfirmLinkMessage=Bruger med {0} {1} eksisterer allerede. Hvordan vil du forts\u00e6tte?
federatedIdentityConfirmReauthenticateMessage=Log ind som {0} for at linke din konto med {1}
confirmLinkIdpReviewProfile=Se profil
confirmLinkIdpContinue=Tilf\u00f8j til eksisterende konto
configureTotpMessage=Du skal ops\u00e6tte en Mobile Authenticator for at kunne aktivere din konto.
updateProfileMessage=Du skal opdatere din brugerprofil for at kunne aktivere din konto.
updatePasswordMessage=Du skal \u00e6ndre din adgangskode for at kunne aktivere din konto.
resetPasswordMessage=Du skal \u00e6ndre din adgangskode.
verifyEmailMessage=Du skal verificere din email adresse for at kunne aktivere din konto.
linkIdpMessage=Du skal verificere din email adresse for at kunne kontoen med {0}.
emailSentMessage=Du vil snarest modtage en email med yderligere instruktioner.
emailSendErrorMessage=Kunne ikke sende email, pr\u00f8v igen senere.
accountUpdatedMessage=Din konto er blevet opdateret.
accountPasswordUpdatedMessage=Din adgangskode er blevet opdateret.
delegationCompleteHeader=Login lykkedes
delegationCompleteMessage=Du kan nu lukke dette browser vindue og g\u00e5 tilbage til din konsol applikation.
delegationFailedHeader=Log ind fejlede
delegationFailedMessage=Du kan nu lukke dette browser vindue og g\u00e5 tilbage til din konsol applikation for at fors\u00f8ge at logge ind igen.
noAccessMessage=Ingen adgang
invalidPasswordMinLengthMessage=Ugyldig adgangskode\: minimum l\u00e6ngde {0}.
invalidPasswordMinDigitsMessage=Ugyldig adgangskode\: skal minimum indeholde {0} tal.
invalidPasswordMinLowerCaseCharsMessage=Ugyldig adgangskode\: skal minimum indeholde {0} sm\u00e5 bogstaver.
invalidPasswordMinUpperCaseCharsMessage=Ugyldig adgangskode\: skal minimum indeholde {0} store bogstaver.
invalidPasswordMinSpecialCharsMessage=Ugyldig adgangskode\: skal minimum indeholde {0} specialtegn.
invalidPasswordNotUsernameMessage=Ugyldig adgangskode\: m\u00e5 ikke v\u00e6re identisk med brugernavnet.
invalidPasswordRegexPatternMessage=Ugyldig adgangskode\: Ikke i stand til at matche regex m\u00f8nstre.
invalidPasswordHistoryMessage=Ugyldig adgangskode\: m\u00e5 ikke v\u00e6re identisk med nogle af de seneste {0} adgangskoder.
invalidPasswordGenericMessage=Ugyldig adgangskode\: ny adgangskode matcher ikke vores adgangskode politikker.
failedToProcessResponseMessage=Ude af stand til at processere svaret
httpsRequiredMessage=HTTPS p\u00e5kr\u00e6vet
realmNotEnabledMessage=Riget er ikke aktiveret
invalidRequestMessage=Ugyldig Foresp\u00f8rgsel
failedLogout=Logud fejlede
unknownLoginRequesterMessage=Ukendt log ind foresp\u00f8rger
loginRequesterNotEnabledMessage=Log ind foresp\u00f8rgeren er ikke aktiveret
bearerOnlyMessage=Bearer-only applikationer m\u00e5 ikke foretage browser login
standardFlowDisabledMessage=Klienten m\u00e5 ikke foretage browser login med den givne response_type. Standard flowet er deaktiveret for klienten.
implicitFlowDisabledMessage=Klienten m\u00e5 ikke foretage browser login med den givne response_type. Implicit flowet er deaktiveret for klienten.
invalidRedirectUriMessage=Ugyldig redirect uri
unsupportedNameIdFormatMessage=Ikke underst\u00f8ttet NameIDFormat
invalidRequesterMessage=Ugyldig foresp\u00f8rger
registrationNotAllowedMessage=Registrering er ikke tilladt
resetCredentialNotAllowedMessage=Reset Credential er ikke tilladt
permissionNotApprovedMessage=Tilladelse ikke godkendt.
noRelayStateInResponseMessage=Ingen rel\u00e6 tilstand i svaret fra identitetsudbyderen.
insufficientPermissionMessage=Utilstr\u00e6kkelig tilladelse for at kunne linke identiter.
couldNotProceedWithAuthenticationRequestMessage=Kunne ikke forts\u00e6tte med godkendelsesanmodning til identitetsudbyderen.
couldNotObtainTokenMessage=Kunne ikke opn\u00e5 token fra identitetsudbyder.
unexpectedErrorRetrievingTokenMessage=Uventet fejl i fors\u00f8get p\u00e5 at hente token fra identitetsudbyder.
unexpectedErrorHandlingResponseMessage=Uventet fejl i fors\u00f8get p\u00e5 at behandle svaret fra identitetsudbyder.
identityProviderAuthenticationFailedMessage=Log ind fejlede. Kunne ikke logge ind ved identitetsudbyder.
couldNotSendAuthenticationRequestMessage=Kunne ikke sende log ind foresp\u00f8rgsel til identitetsudbyder.
unexpectedErrorHandlingRequestMessage=Uventet fejl under h\u00e5ndteringen af foresp\u00f8rgsel til identitetsudbyder.
invalidAccessCodeMessage=Ugyldig adgangskode.
sessionNotActiveMessage=Sessionen er ikke aktiv.
invalidCodeMessage=Der opstod en fejl, log ind igen via din applikation.
identityProviderUnexpectedErrorMessage=Uventet fejl under log ind ved identitetsudbyder
identityProviderNotFoundMessage=Kunne ikke finde en identitetsudbyder med det angivede id.
identityProviderLinkSuccess=Din email er nu verificeret. G\u00e5 tilbage til din oprindelige browser og forts\u00e6t log ind derfra.
staleCodeMessage=Siden er ikke l\u00e6ngere gyldig, g\u00e5 tilbage til din applikation og login igen
realmSupportsNoCredentialsMessage=Riget underst\u00f8tter ikke nogen legimatitionstype.
credentialSetupRequired=Kan ikke logge ind. Legimatitionstype skal konfigureres.
identityProviderNotUniqueMessage=Riget underst\u00f8tter flere forskellige identitetsudbydere. Kunne ikke beslutte hvilken identitetsudbyder der skulle bruges til at logge ind med.
emailVerifiedMessage=Din email adresse er verificeret.
staleEmailVerificationLink=Linket du har klikket p\u00e5 er et gammelt udl\u00f8bet link. M\u00e5ske har du allerede verificeret din mailadresse?
identityProviderAlreadyLinkedMessage=Forbundsidentitet returneret af {0} er allerede linket til en anden bruger.
confirmAccountLinking=Bekr\u00e6ft sammenkobling af konto {0} fra identitetsudbyder {1} med din konto.
confirmEmailAddressVerification=Bekr\u00e6ft gyldigheden af email adresse {0}.
confirmExecutionOfActions=Udf\u00f8r f\u00f8lgende handling(er)
backToApplication=&laquo; Tilbage til applikation
missingParameterMessage=Manglende parametre\: {0}
clientNotFoundMessage=Klienten kunne ikke findes.
clientDisabledMessage=Klienten er deaktiveret.
invalidParameterMessage=Ugyldig parameter\: {0}
alreadyLoggedIn=Du er allerede logget ind.
differentUserAuthenticated=Du er allerede logget ind som en anden bruger ''{0}'' i denne session. Log venligst ud f\u00f8rst.
brokerLinkingSessionExpired=Har foresp\u00f8rgt kobling mellem m\u00e6glerkonti, men den nuv\u00e6rende session er ikke l\u00e6ngere gyldig.
proceedWithAction=&raquo; Tryk her for at forts\u00e6tte
requiredAction.CONFIGURE_TOTP=Konfigurer OTP
requiredAction.TERMS_AND_CONDITIONS=Vilk\u00e5r og betingelser
requiredAction.UPDATE_PASSWORD=Opdater Adgangskode
requiredAction.UPDATE_PROFILE=Opdater Profil
requiredAction.VERIFY_EMAIL=Verificer email adresse
doX509Login=Du vil blive logget ind som\:
clientCertificate=X509 client certificate\:
noCertificate=[No Certificate]
pageNotFound=Siden kunne ikke findes
internalServerError=Der opstod en intern server fejl.
console-username=Brugernavn\:
console-password=Adgangskode\:
console-otp=Engangskode\:
console-new-password=Ny Adgangskode\:
console-confirm-password=Bekr\u00e6ft Adgangskode\:
console-update-password=Du skal opdatere din adgangskode.
console-verify-email=Du skal verificere din email adresse. En email er blevet sendt til {0} som indeholder en verificerings kode. Indtast koden i input feltet herunder.
console-email-code=Email Kode\:
console-accept-terms=Accepter Vilk\u00e5r? [j/n]\:
console-accept=j
auth-username-form-display-name=Brugernavn
auth-username-form-help-text=Start log ind ved at indtaste dit brugernavn
auth-username-password-form-display-name=Brugernavn og adgangskode
auth-username-password-form-help-text=Log ind ved at indtaste dit brugernavn og adgangskode
doBack=Tilbage
doTryAgain=Pr\u00f8v igen
doTryAnotherWay=Pr\u00f8v p\u00e5 en anden m\u00e5de
rolesScopeConsentText=Brugerroller
restartLoginTooltip=Start log ind forfra
loginTotpStep3DeviceName=Angiv et udstyrsnavn for at kunne holde rede p\u00e5 udstyr med engangskode.
loginCredential=Credential
loginTotpDeviceName=Udstyrsnavn
loginChooseAuthenticator=V\u00e6lg metode til log ind
requiredFields=N\u00f8dvendige felter
invalidUsernameMessage=Ugyldigt brugernavn.
invalidUsernameOrEmailMessage=Ugyldigt brugernavn eller email.
invalidPasswordMessage=Ugyldig adangskode.
missingTotpDeviceNameMessage=Angiv venligst et udstyrsnavn.
nestedFirstBrokerFlowMessage={0} brugeren {1} er ikke forbundet til nogen kendt bruger.
openshift.scope.user_info=Brugerinformation
openshift.scope.user_check-access=Brugeradgangsinformation
openshift.scope.user_full=Fuld adgang
openshift.scope.list-projects=Vis liste af projekter
saml.post-form.title=Log ind Redirect
saml.post-form.message=Redirigerer, vent venligst.
saml.post-form.js-disabled=JavaScript er disabled. Vi anbefaler st\u00e6rkt at enbable det. Klik p\u00e5 knappen nedenfor for at forts\u00e6tte.
otp-display-name=Engangskodegenerator
otp-help-text=Indtast en godkendelseskode fra engangskodegeneratoren.
password-display-name=Adgangskode
password-help-text=Log ind ved at indtaste din adgangskode.
webauthn-display-name=Sikkerhedsn\u00f8gle
webauthn-help-text=Brug din sikkerhedsn\u00f8gle for at logge ind.
webauthn-passwordless-display-name=Sikkerhedsn\u00f8gle
webauthn-passwordless-help-text=Brug din sikkerhedsn\u00f8gle for at logge ind uden adgangskode.
webauthn-login-title=Log ind med sikkerhedsn\u00f8gle
webauthn-registration-title=Registrering af Sikkerhedsn\u00f8gle
webauthn-available-authenticators=Tilg\u00e6ngelige log ind m\u00e5der
webauthn-error-title=Sikkerhedsn\u00f8glefejl
webauthn-error-registration=Det lykkedes ikke at registrere din sikkerhedsn\u00f8gle.
webauthn-error-api-get=Det lykkedes ikke at logge ind med din sikkerhedsn\u00f8gle.
webauthn-error-different-user=Den f\u00f8rste authenticatede bruger er ikke den der er authenticated med sikkerhedsn\u00f8glen.
webauthn-error-auth-verification=Resultatet fra log ind med sikkerhedsn\u00f8gle er ugyldigt.
webauthn-error-register-verification=Resultatet fra registrering med sikkerhedsn\u00f8glen er ugyldigt.
webauthn-error-user-not-found=Ukendt bruger authenticated med sikkerhedsn\u00f8glen.
identity-provider-redirector=Forbind med en anden Identitetsudbyder
readOnlyUsernameMessage=Du kan ikke opdatere dit brugernavn da det er read-only.
shouldBeEqual={0} b\u00f8r v\u00e6re lig med {1}
shouldBeDifferent={0} b\u00f8r v\u00e6re forskellig fra {1}
shouldMatchPattern=M\u00f8nsteret b\u00f8r matche\: `/{0}/`
mustBeAnInteger=Skal v\u00e6re et heltal
notAValidOption=Ikke en gyldig mulighed
selectAnOption=V\u00e6lg en mulighed
remove=Fjern
addValue=Tilf\u00f8j v\u00e6rdi
languages=Sprog

View File

@ -0,0 +1,457 @@
doLogIn=Anmelden
doRegister=Registrieren
doRegisterSecurityKey=Registrieren
doCancel=Abbrechen
doSubmit=Absenden
doBack=Zur\u00fcck
doYes=Ja
doNo=Nein
doContinue=Weiter
doIgnore=Ignorieren
doAccept=Annehmen
doDecline=Ablehnen
doForgotPassword=Passwort vergessen?
doClickHere=Hier klicken
doImpersonate=Identit\u00e4tswechsel
doTryAgain=Erneut versuchen
doTryAnotherWay=Einen anderen Weg versuchen
doConfirmDelete=L\u00f6schung best\u00e4tigen
errorDeletingAccount=Beim L\u00f6schen des Kontos ist ein Fehler aufgetreten
deletingAccountForbidden=Sie haben nicht gen\u00fcgend Berechtigungen, um Ihr eigenes Konto zu l\u00f6schen, wenden Sie sich an einen Administrator.
kerberosNotConfigured=Kerberos ist nicht konfiguriert.
kerberosNotConfiguredTitle=Kerberos nicht konfiguriert
bypassKerberosDetail=Sie sind entweder nicht mit Kerberos angemeldet, oder Ihr Browser ist nicht f\u00fcr eine Anmeldung mit Kerberos konfiguriert. Bitte klicken Sie auf Weiter, damit Sie sich auf eine andere Art anmelden k\u00f6nnen
kerberosNotSetUp=Kerberos ist nicht konfiguriert. Sie k\u00f6nnen sich damit nicht anmelden.
registerTitle=Registrierung
loginAccountTitle=Bei Ihrem Konto anmelden
loginTitle=Anmeldung bei {0}
loginTitleHtml={0}
impersonateTitle={0} Identit\u00e4tswechsel
impersonateTitleHtml=<strong>{0}</strong> Identit\u00e4tswechsel
realmChoice=Realm
unknownUser=Unbekannter Benutzer
loginTotpTitle=Mehrfachauthentifizierung konfigurieren
loginProfileTitle=Benutzerkonto Informationen aktualisieren
loginIdpReviewProfileTitle=Benutzerkonto Informationen aktualisieren
loginTimeout=Sie haben zu lange gebraucht, um sich anzumelden. Bitte versuchen Sie es erneut.
reauthenticate=Zum Fortsetzen bitte erneut anmelden
authenticateStrong=Um fortzufahren wird ein st\u00e4rkeres Authentifizierungsverfahren ben\u00f6tigt
oauthGrantTitle=Zugang zu {0} gew\u00e4hren
oauthGrantTitleHtml={0}
oauthGrantInformation=Stellen Sie sicher, dass Sie {0} vertrauen k\u00f6nnen und informieren Sie sich dar\u00fcber, wie {0} mit Ihren Daten umgeht.
oauthGrantReview=Pr\u00fcfen Sie gerne die
oauthGrantTos=Nutzungsbedingungen.
oauthGrantPolicy=Datenschutzrichtlinie.
errorTitle=Es ist ein Fehler aufgetreten.
errorTitleHtml=Es ist ein Fehler aufgetreten.
emailVerifyTitle=E-Mail verifizieren
emailForgotTitle=Passwort vergessen?
updateEmailTitle=E-Mail aktualisieren
emailUpdateConfirmationSentTitle=E-Mail Sendebest\u00e4tigung
emailUpdateConfirmationSent=Eine Best\u00e4tigungs-E-Mail wurde an {0} versendet. Bitte folgen Sie den Anweisungen, um die Aktualisierung der E-Mail abzuschlie\u00dfen.
emailUpdatedTitle=E-Mail aktualisiert
emailUpdated=Die E-Mail wurde erfolgreich zu {0} aktualisiert.
updatePasswordTitle=Passwort aktualisieren
codeSuccessTitle=Erfolgreicher Code
codeErrorTitle=Fehlercode\: {0}
displayUnsupported=Angeforderter Anzeigetyp wird nicht unterst\u00fctzt
browserRequired=Browser f\u00fcr die Anmeldung erforderlich
browserContinue=Browser erforderlich, um die Anmeldung abzuschlie\u00dfen
browserContinuePrompt=Browser \u00f6ffnen und Anmeldung fortsetzen? [y/n]\:
browserContinueAnswer=y
termsTitle=Bedingungen und Konditionen
termsText=
termsPlainText=Zu definierende Bedingungen und Konditionen.
termsAcceptanceRequired=Sie m\u00fcssen unseren Bedingungen und Konditionen zustimmen.
acceptTerms=Ich stimme den Bedingungen und Konditionen zu
deleteCredentialTitle=L\u00f6sche {0}
deleteCredentialMessage=Wollen Sie {0} l\u00f6schen?
recaptchaFailed=Ung\u00fcltiges Recaptcha
recaptchaNotConfigured=Recaptcha Eingabe ist erforderlich, jedoch noch nicht konfiguriert.
consentDenied=Zustimmung verweigert.
noAccount=Neuer Benutzer?
username=Benutzername
usernameOrEmail=Benutzername oder E-Mail
firstName=Vorname
givenName=Vorname
fullName=Voller Name
lastName=Nachname
familyName=Nachname
email=E-Mail
password=Passwort
passwordConfirm=Passwort best\u00e4tigen
passwordNew=Neues Passwort
passwordNewConfirm=Neues Passwort best\u00e4tigen
hidePassword=Passwort ausblenden
showPassword=Passwort einblenden
rememberMe=Angemeldet bleiben
authenticatorCode=One-time Code
address=Adresse
street=Stra\u00dfe
locality=Stadt oder Ortschaft
region=Staat, Provinz, Region
postal_code=PLZ
country=Land
emailVerified=E-Mail verifiziert
website=Website
phoneNumber=Telefonnummer
phoneNumberVerified=Telefonnummer verifiziert
gender=Geschlecht
birthday=Geburtsdatum
zoneinfo=Zeitzone
gssDelegationCredential=GSS delegierte Berechtigung
logoutOtherSessions=Von anderen Ger\u00e4ten abmelden
profileScopeConsentText=Nutzerkonto
emailScopeConsentText=E-Mail Adresse
addressScopeConsentText=Adresse
phoneScopeConsentText=Telefonnummer
offlineAccessScopeConsentText=Offline Zugriff
samlRoleListScopeConsentText=Meine Rollen
rolesScopeConsentText=Nutzerrollen
restartLoginTooltip=Login neu starten
loginTotpIntro=Sie m\u00fcssen einen One Time Passwort-Generator einrichten, um auf dieses Konto zugreifen zu k\u00f6nnen.
loginTotpStep1=Installieren Sie eine der folgenden Applikationen auf Ihrem Smartphone\:
loginTotpStep2=\u00d6ffnen Sie die Applikation und scannen Sie den QR-Code\:
loginTotpStep3=Geben Sie den von der Applikation generierten One-time Code ein und klicken Sie auf Absenden.
loginTotpStep3DeviceName=Geben Sie einen Ger\u00e4tenamen an, um die Verwaltung Ihrer OTP-Ger\u00e4te zu erleichtern.
loginTotpManualStep2=\u00d6ffnen Sie die Applikation und geben Sie den folgenden Schl\u00fcssel ein\:
loginTotpManualStep3=Verwenden Sie die folgenden Konfigurationswerte, falls Sie diese f\u00fcr die Applikation anpassen k\u00f6nnen\:
loginTotpUnableToScan=Sie k\u00f6nnen den QR-Code nicht scannen?
loginTotpScanBarcode=QR-Code scannen?
loginCredential=Anmeldeinformation
loginOtpOneTime=One-time code
loginTotpType=Typ
loginTotpAlgorithm=Algorithmus
loginTotpDigits=Ziffern
loginTotpInterval=Intervall
loginTotpCounter=Z\u00e4hler
loginTotpDeviceName=Ger\u00e4tename
loginTotp.totp=zeitbasiert (time-based)
loginTotp.hotp=z\u00e4hlerbasiert (counter-based)
loginChooseAuthenticator=Login Methode ausw\u00e4hlen
oauthGrantRequest=Wollen Sie diese Zugriffsrechte gew\u00e4hren?
inResource=in
oauth2DeviceVerificationTitle=Ger\u00e4te-Login
verifyOAuth2DeviceUserCode=Geben Sie den Code von Ihrem Ger\u00e4t ein und klicken Sie auf Senden
oauth2DeviceInvalidUserCodeMessage=Ung\u00fcltiger Code, bitte probieren Sie es erneut.
oauth2DeviceExpiredUserCodeMessage=Der Code ist abgelaufen. Bitte versuchen Sie, Ihr Ger\u00e4t erneut zu verbinden.
oauth2DeviceVerificationCompleteHeader=Ger\u00e4te-Login erfolgreich
oauth2DeviceVerificationCompleteMessage=Sie k\u00f6nnen dieses Browser-Fenster schlie\u00dfen und auf Ihrem Ger\u00e4t weiterarbeiten.
oauth2DeviceVerificationFailedHeader=Ger\u00e4te-Login fehlgeschlagen
oauth2DeviceVerificationFailedMessage=Sie k\u00f6nnen dieses Browser-Fenster schlie\u00dfen und versuchen, Ihr Ger\u00e4t erneut zu verbinden.
oauth2DeviceConsentDeniedMessage=Zustimmung f\u00fcr Verbindung mit dem Ger\u00e4t verweigert.
oauth2DeviceAuthorizationGrantDisabledMessage=Der Client ist nicht berechtigt, den OAuth 2.0 Device Authorization Grant auszuf\u00fchren. Der Flow wurde f\u00fcr diesen Client deaktiviert.
emailVerifyInstruction1=Eine E-Mail mit Anweisungen, um Ihre E-Mail-Adresse zu \u00fcberpr\u00fcfen, wurde an Ihre Adresse geschickt {0}.
emailVerifyInstruction2=Sie haben keinen verifizierungs Code in Ihrer E-Mail erhalten?
emailVerifyInstruction3=um eine neue E-Mail versenden zu lassen.
emailLinkIdpTitle={0} verkn\u00fcpfen
emailLinkIdp1=Eine E-Mail mit weiteren Anweisungen um {0} Konto {1} mit Ihrem {2} Konto zu verkn\u00fcpfen wurde an Sie versendet.
emailLinkIdp2=Sie haben keinen Code in Ihrer E-Mail erhalten?
emailLinkIdp3=um eine neue E-Mail versenden zu lassen.
emailLinkIdp4=Wenn Sie die E-Mail bereits in einem anderen Browser verifiziert haben
emailLinkIdp5=um fortzufahren.
backToLogin=&laquo; Zur\u00fcck zur Anmeldung
emailInstruction=Geben Sie Ihren Benutzernamen oder Ihre E-Mail Adresse ein und klicken Sie auf Absenden. Danach werden wir Ihnen eine E-Mail mit weiteren Instruktionen zusenden.
emailInstructionUsername=Geben Sie Ihren Benutzernamen ein und klicken Sie auf Absenden. Danach werden wir Ihnen eine E-Mail mit weiteren Instruktionen zusenden.
copyCodeInstruction=Bitte kopieren Sie den folgenden Code und f\u00fcgen ihn in die Applikation ein\:
pageExpiredTitle=Diese Seite ist nicht mehr g\u00fcltig.
pageExpiredMsg1=Um den Anmeldevorgang neu zu starten
pageExpiredMsg2=Um den Anmeldevorgang fortzusetzen
personalInfo=Pers\u00f6nliche Informationen\:
role_admin=Admin
role_realm-admin=Realm Admin
role_create-realm=Realm erstellen
role_create-client=Client erstellen
role_view-realm=Realm ansehen
role_view-users=Benutzer ansehen
role_view-applications=Applikationen ansehen
role_view-clients=Clients ansehen
role_view-events=Events ansehen
role_view-identity-providers=Identity Provider ansehen
role_manage-realm=Realm verwalten
role_manage-users=Benutzer verwalten
role_manage-applications=Applikationen verwalten
role_manage-identity-providers=Identity Provider verwalten
role_manage-clients=Clients verwalten
role_manage-events=Events verwalten
role_view-profile=Profile ansehen
role_manage-account=Profile verwalten
role_manage-account-links=Profil-Links verwalten
role_read-token=Token lesen
role_offline-access=Offline-Zugriff
client_account=Clientkonto
client_account-console=Accountkonsole
client_security-admin-console=Security Adminkonsole
client_admin-cli=Admin CLI
client_realm-management=Realm-Management
client_broker=Broker
requiredFields=Ben\u00f6tigte Felder
invalidUserMessage=Ung\u00fcltiger Benutzername oder Passwort.
invalidUsernameMessage=Ung\u00fcltiger Benutzername.
invalidUsernameOrEmailMessage=Ung\u00fcltiger Benutzername oder E-Mail.
invalidPasswordMessage=Ung\u00fcltiges Passwort.
invalidEmailMessage=Ung\u00fcltige E-Mail-Adresse.
accountDisabledMessage=Ihr Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
accountTemporarilyDisabledMessage=Ihr Benutzerkonto ist tempor\u00e4r gesperrt. Bitte kontaktieren Sie den Admin oder versuchen Sie es sp\u00e4ter noch einmal.
expiredCodeMessage=Zeit\u00fcberschreitung bei der Anmeldung. Bitte melden Sie sich erneut an.
expiredActionMessage=Die Aktion ist nicht mehr g\u00fcltig. Bitte fahren Sie nun mit der Anmeldung fort.
expiredActionTokenNoSessionMessage=Die Aktion ist nicht mehr g\u00fcltig.
expiredActionTokenSessionExistsMessage=Die Aktion ist nicht mehr g\u00fcltig. Bitte fangen Sie noch einmal an.
sessionLimitExceeded=Es existieren zu viele aktive Sessions
missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
missingLastNameMessage=Bitte geben Sie einen Nachnamen ein.
missingEmailMessage=Bitte geben Sie eine E-Mail-Adresse ein.
missingUsernameMessage=Bitte geben Sie einen Benutzernamen ein.
missingPasswordMessage=Bitte geben Sie ein Passwort ein.
missingTotpMessage=Bitte geben Sie den One-time Code ein.
missingTotpDeviceNameMessage=Bitte geben Sie einen Ger\u00e4tenamen ein.
notMatchPasswordMessage=Passw\u00f6rter sind nicht identisch.
error-invalid-value=Ung\u00fcltiger Wert.
error-invalid-blank=Bitte geben Sie einen Wert an.
error-empty=Bitte geben Sie einen Wert an.
error-invalid-length=L\u00e4nge muss zwischen {1} und {2} Zeichen liegen.
error-invalid-length-too-short=Minimale L\u00e4nge ist {1}.
error-invalid-length-too-long=Maximale L\u00e4nge ist {2}.
error-invalid-email=Ung\u00fcltige E-Mail-Adresse.
error-invalid-number=Ung\u00fcltige Nummer.
error-number-out-of-range=Nummer muss zwischen {1} und {2} liegen.
error-number-out-of-range-too-small=Nummer muss einen minimalen Wert von {1} haben.
error-number-out-of-range-too-big=Nummer muss einen maximalen Wert von {2} haben.
error-pattern-no-match=Ung\u00fcltiger Wert.
error-invalid-uri=Ung\u00fcltige URL.
error-invalid-uri-scheme=Ung\u00fcltiges URL-Schema.
error-invalid-uri-fragment=Ung\u00fcltiger URL-Bestandteil.
error-user-attribute-required=Bitte f\u00fcllen Sie dieses Feld aus.
error-invalid-date=Ung\u00fcltiges Datum.
error-user-attribute-read-only=Dieses Feld darf nicht editiert werden.
error-username-invalid-character=Wert enth\u00e4lt ung\u00fcltiges Zeichen.
error-person-name-invalid-character=Wert enth\u00e4lt ung\u00fcltiges Zeichen.
error-reset-otp-missing-id=Bitte w\u00e4hlen Sie eine OTP-Konfiguration aus.
invalidPasswordExistingMessage=Das aktuelle Passwort ist ung\u00fcltig.
invalidPasswordBlacklistedMessage=Ung\u00fcltiges Passwort\: Das Passwort steht auf der Blockliste (schwarzen Liste).
invalidPasswordConfirmMessage=Die Passwortbest\u00e4tigung ist nicht identisch.
invalidTotpMessage=Ung\u00fcltiger One-time Code.
usernameExistsMessage=Benutzername existiert bereits.
emailExistsMessage=E-Mail existiert bereits.
federatedIdentityExistsMessage=Ein Benutzer mit {0} {1} existiert bereits. Bitte melden Sie sich an der Benutzerkontoverwaltung an um den Benutzer zu verkn\u00fcpfen.
federatedIdentityUnavailableMessage=Der mit dem Identit\u00e4tsanbieter {1} authentifizierte Benutzer {0} ist nicht vorhanden. Bitte wenden Sie sich an Ihren Administrator.
federatedIdentityUnmatchedEssentialClaimMessage=Dem vom Identit\u00e4tsanbieter ausgestellten ID-Token fehlen die passenden Claims. Bitte kontaktieren Sie Ihren Administrator.
confirmLinkIdpTitle=Das Benutzerkonto existiert bereits.
federatedIdentityConfirmLinkMessage=Ein Benutzer mit {0} {1} existiert bereits. Wie m\u00f6chten Sie fortfahren?
federatedIdentityConfirmReauthenticateMessage=Anmelden um das Benutzerkonto mit {0} zu verkn\u00fcpfen
nestedFirstBrokerFlowMessage=Der {0} Benutzer {1} ist mit keinem bekannten Benutzer verkn\u00fcpfen.
confirmLinkIdpReviewProfile=Benutzerkonto \u00fcberpr\u00fcfen
confirmLinkIdpContinue=Zu einem bestehenden Benutzerkonto hinzuf\u00fcgen
configureTotpMessage=Sie m\u00fcssen eine Mehrfachauthentifizierung einrichten, um das Benutzerkonto zu aktivieren.
configureBackupCodesMessage=Sie m\u00fcssen Backup Codes einrichten, um das Benutzerkonto zu aktivieren.
updateProfileMessage=Sie m\u00fcssen Ihr Benutzerkonto aktualisieren, um das Benutzerkonto zu aktivieren.
updatePasswordMessage=Sie m\u00fcssen Ihr Passwort \u00e4ndern, um das Benutzerkonto zu aktivieren.
updateEmailMessage=Sie m\u00fcssen Ihre E-Mail-Adresse aktualisieren, um das Benutzerkonto zu aktivieren..
resetPasswordMessage=Sie m\u00fcssen Ihr Passwort \u00e4ndern.
verifyEmailMessage=Sie m\u00fcssen Ihre E-Mail-Adresse verifizieren, um das Benutzerkonto zu aktivieren.
linkIdpMessage=Sie m\u00fcssen Ihre E-Mail-Adresse verifizieren, um Ihr Benutzerkonto mit {0} zu verkn\u00fcpfen.
emailSentMessage=Sie sollten in K\u00fcrze eine E-Mail mit weiteren Instruktionen erhalten.
emailSendErrorMessage=Die E-Mail konnte nicht versendet werden. Bitte versuchen Sie es sp\u00e4ter noch einmal.
accountUpdatedMessage=Ihr Benutzerkonto wurde aktualisiert.
accountPasswordUpdatedMessage=Ihr Passwort wurde aktualisiert.
delegationCompleteHeader=Login Erfolgreich
delegationCompleteMessage=Sie k\u00f6nnen dieses Browserfenster schlie\u00dfen und zu Ihrer Konsolenanwendung zur\u00fcckkehren.
delegationFailedHeader=Login Fehlgeschlagen
delegationFailedMessage=Sie k\u00f6nnen dieses Browserfenster schlie\u00dfen und zu Ihrer Konsolenanwendung zur\u00fcckkehren und versuchen, sich erneut anzumelden.
noAccessMessage=Kein Zugriff
invalidPasswordMinLengthMessage=Ung\u00fcltiges Passwort\: Es muss mindestens {0} Zeichen lang sein.
invalidPasswordMaxLengthMessage=Ung\u00fcltiges Passwort\: Es darf h\u00f6chstens {0} Zeichen lang sein.
invalidPasswordMinDigitsMessage=Ung\u00fcltiges Passwort\: Es muss mindestens {0} Zahl(en) beinhalten.
invalidPasswordMinLowerCaseCharsMessage=Ung\u00fcltiges Passwort\: Es muss mindestens {0} Kleinbuchstaben beinhalten.
invalidPasswordMinUpperCaseCharsMessage=Ung\u00fcltiges Passwort\: Es muss mindestens {0} Gro\u00dfbuchstaben beinhalten.
invalidPasswordMinSpecialCharsMessage=Ung\u00fcltiges Passwort\: Es muss mindestens {0} Sonderzeichen beinhalten.
invalidPasswordNotUsernameMessage=Ung\u00fcltiges Passwort\: Es darf nicht gleich sein wie der Benutzername.
invalidPasswordNotEmailMessage=Ung\u00fcltiges Passwort\: darf nicht identisch mit der E-Mail-Adresse sein.
invalidPasswordRegexPatternMessage=Ung\u00fcltiges Passwort\: Es entspricht nicht dem Regex-Muster.
invalidPasswordHistoryMessage=Ung\u00fcltiges Passwort\: Es darf nicht einem der letzten {0} Passw\u00f6rter entsprechen.
invalidPasswordGenericMessage=Ung\u00fcltiges Passwort\: Es verletzt die Passwort-Richtlinien.
failedToProcessResponseMessage=Konnte Antwort nicht verarbeiten.
httpsRequiredMessage=HTTPS erforderlich.
realmNotEnabledMessage=Realm nicht aktiviert.
invalidRequestMessage=Ung\u00fcltiger Request.
successLogout=Sie sind abgemeldet.
failedLogout=Logout fehlgeschlagen.
unknownLoginRequesterMessage=Ung\u00fcltiger Login Requester.
loginRequesterNotEnabledMessage=Login Requester nicht aktiviert.
bearerOnlyMessage=Bearer-only Clients k\u00f6nnen sich nicht via Browser anmelden.
standardFlowDisabledMessage=Client darf sich mit diesem response_type nicht via Browser anmelden. Standard Flow ist f\u00fcr diesen Client deaktiviert.
implicitFlowDisabledMessage=Client darf sich mit diesem response_type nicht via Browser anmelden. Implicit Flow ist f\u00fcr diesen Client deaktiviert.
invalidRedirectUriMessage=Ung\u00fcltige Redirect Uri.
unsupportedNameIdFormatMessage=Nicht unterst\u00fctztes NameIDFormat.
invalidRequesterMessage=Ung\u00fcltiger Requester.
registrationNotAllowedMessage=Registrierung nicht erlaubt.
resetCredentialNotAllowedMessage=Reset Credential nicht erlaubt.
permissionNotApprovedMessage=Berechtigung nicht best\u00e4tigt.
noRelayStateInResponseMessage=Kein Relay State in der Antwort von Identity Provider.
insufficientPermissionMessage=Nicht gen\u00fcgend Rechte, um die Identit\u00e4t zu verkn\u00fcpfen.
couldNotProceedWithAuthenticationRequestMessage=Konnte die Authentifizierungsanfrage nicht weiter verarbeiten.
couldNotObtainTokenMessage=Konnte kein Token vom Identity Provider erhalten.
unexpectedErrorRetrievingTokenMessage=Unerwarteter Fehler w\u00e4hrend dem Empfang des Tokens vom Identity Provider.
unexpectedErrorHandlingResponseMessage=Unerwarteter Fehler w\u00e4hrend der Bearbeitung der Antwort vom Identity Provider.
identityProviderAuthenticationFailedMessage=Authentifizierung fehlgeschlagen. Authentifizierung mit dem Identity Provider nicht m\u00f6glich.
couldNotSendAuthenticationRequestMessage=Konnte Authentifizierungsanfrage nicht an den Identity Provider senden.
unexpectedErrorHandlingRequestMessage=Unerwarteter Fehler w\u00e4hrend der Bearbeitung der Anfrage an den Identity Provider.
invalidAccessCodeMessage=Ung\u00fcltiger Access-Code.
sessionNotActiveMessage=Session nicht aktiv.
invalidCodeMessage=Ung\u00fcltiger Code, bitte melden Sie sich erneut \u00fcber die Applikation an.
cookieNotFoundMessage=Cookie konnte nicht gefunden werden. Bitte stellen Sie sicher, dass Cookies in Ihrem Browser aktiviert sind.
insufficientLevelOfAuthentication=Die angefragte St\u00e4rke des Authentifizierungsverfahrens wurde nicht erf\u00fcllt.
identityProviderUnexpectedErrorMessage=Unerwarteter Fehler w\u00e4hrend der Authentifizierung mit dem Identity Provider.
identityProviderMissingStateMessage=Fehlender state-Parameter in der Antwort vom Identit\u00e4tsanbieter.
identityProviderMissingCodeOrErrorMessage=Fehlender code- oder error-Parameter in der Antwort vom Identit\u00e4tsanbieter.
identityProviderInvalidResponseMessage=Ung\u00fcltige Antwort vom Identity Provider.
identityProviderInvalidSignatureMessage=Ung\u00fcltige Signatur in der Antwort vom Identity Provider.
identityProviderNotFoundMessage=Konnte keinen Identity Provider zu der Identit\u00e4t finden.
identityProviderLinkSuccess=Sie haben Ihre E-Mail-Adresse erfolgreich verifiziert. Bitte kehren Sie zu Ihrem urspr\u00fcnglichen Browser zur\u00fcck und fahren Sie dort mit der Anmeldung fort.
staleCodeMessage=Diese Seite ist nicht mehr g\u00fcltig, bitte kehren Sie zu Ihrer Applikation zur\u00fck und melden Sie sich erneut an.
realmSupportsNoCredentialsMessage=Realm unterst\u00fctzt keine Credential Typen.
credentialSetupRequired=Anmeldung nicht m\u00f6glich, Einrichtung der Anmeldeinformationen erforderlich.
identityProviderNotUniqueMessage=Der Realm unterst\u00fctzt mehrere Identity Provider. Es konnte kein eindeutiger Identity Provider zum Authentifizieren gew\u00e4hlt werden.
emailVerifiedMessage=Ihre E-Mail-Adresse wurde erfolgreich verifiziert.
emailVerifiedAlreadyMessage=Ihre E-Mail-Adresse wurde bereits verifiziert.
staleEmailVerificationLink=Der von Ihnen angeklickte Link ist nicht mehr g\u00fcltig. Eventuell haben Sie Ihre E-Mail-Adresse bereits verifiziert.
identityProviderAlreadyLinkedMessage=Die f\u00f6derierte Identit\u00e4t von {0} ist bereits einem anderen Benutzer zugewiesen.
confirmAccountLinking=Best\u00e4tigen Sie den Account {0} des Identity Provider {1} mit Ihrem Account zu verkn\u00fcpfen.
confirmEmailAddressVerification=Best\u00e4tigen Sie, dass die E-Mail-Adresse {0} g\u00fcltig ist.
confirmExecutionOfActions=F\u00fchren Sie die folgende(n) Aktion(en) aus
backToApplication=&laquo; Zur\u00fcck zur Applikation
missingParameterMessage=Fehlender Parameter\: {0}
clientNotFoundMessage=Client nicht gefunden.
clientDisabledMessage=Client deaktiviert.
invalidParameterMessage=Ung\u00fcltiger Parameter\: {0}
alreadyLoggedIn=Sie sind bereits angemeldet.
differentUserAuthenticated=Sie sind in dieser Session bereits mit einem anderen Benutzer ''{0}'' angemeldet. Bitte melden Sie sich zuerst ab.
brokerLinkingSessionExpired=Broker Account Linking angefordert; Ihre Session ist allerdings nicht mehr g\u00fcltig.
proceedWithAction=\u00bb Klicken Sie hier um fortzufahren
acrNotFulfilled=Anforderungen an die Authentifizierung nicht erf\u00fcllt
requiredAction.CONFIGURE_TOTP=Mehrfachauthentifizierung konfigurieren
requiredAction.TERMS_AND_CONDITIONS=Bedingungen und Konditionen
requiredAction.UPDATE_PASSWORD=Passwort aktualisieren
requiredAction.UPDATE_PROFILE=Profil aktualisieren
requiredAction.VERIFY_EMAIL=E-Mail-Adresse verifizieren
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Wiederherstellungscodes einrichten
requiredAction.webauthn-register-passwordless=Kennwortlose Authentifizierung einrichten
invalidTokenRequiredActions=Die im Link angegebenen erforderlichen Aktionen sind nicht bekannt
doX509Login=Sie werden angemeldet als\:
clientCertificate=X509 Client Zertifikat\:
noCertificate=[Kein Zertifikat]
pageNotFound=Seite nicht gefunden
internalServerError=Es ist ein interner Server-Fehler aufgetreten
console-username=Benutzername\:
console-password=Passwort\:
console-otp=One Time Passwort\:
console-new-password=Neues Passwort\:
console-confirm-password=Passwort best\u00e4tigen\:
console-update-password=Eine Aktualisierung Ihres Passworts ist erforderlich.
console-verify-email=Sie m\u00fcssen Ihre E-Mail-Adresse verifizieren. Wir haben eine E-Mail an {0} gesendet, die einen Verifizierungscode enth\u00e4lt. Bitte geben Sie diesen Code in das untenstehende Eingabefeld ein.
console-email-code=E-Mail Code\:
console-accept-terms=Nutzungsbedingungen akzeptieren? [y/n]\:
console-accept=y
openshift.scope.user_info=Nutzerinformation
openshift.scope.user_check-access=Benutzerzugriffsinformationen
openshift.scope.user_full=Voller Zugriff
openshift.scope.list-projects=Projekte auflisten
saml.post-form.title=Authentifizierungsumleitung
saml.post-form.message=Sie werden weitergeleitet, bitte warten.
saml.post-form.js-disabled=JavaScript ist deaktiviert. Wir empfehlen dringend, es zu aktivieren. Klicken Sie auf die Schaltfl\u00e4che unten, um fortzufahren.
saml.artifactResolutionServiceInvalidResponse=Artefakt konnte nicht aufgel\u00f6st werden.
otp-display-name=Authenticator-Anwendung
otp-help-text=Eingabe eines Verifizierungscodes aus der Authenticator-Anwendung.
otp-reset-description=Welche OTP-Konfiguration soll entfernt werden?
password-display-name=Passwort
password-help-text=Melden Sie sich an, indem Sie Ihr Passwort eingeben.
auth-username-form-display-name=Benutzername
auth-username-form-help-text=Anmelden durch Eingabe des Benutzernamens
auth-username-password-form-display-name=Benutzername und Passwort
auth-username-password-form-help-text=Anmelden, indem Sie Ihren Benutzernamen und Ihr Passwort eingeben.
auth-recovery-authn-code-form-display-name=Wiederherstellungscode
auth-recovery-authn-code-form-help-text=Geben Sie einen Wiederherstellungscode aus einer zuvor erstellten Liste ein.
auth-recovery-code-info-message=Geben Sie den angegebenen Wiederherstellungscode ein.
auth-recovery-code-prompt=Wiederherstellungscode \#{0}
auth-recovery-code-header=Anmeldung mit einem Wiederherstellungscode
recovery-codes-error-invalid=Ung\u00fcltiger Wiederherstellungscode
recovery-code-config-header=Wiederherstellungscode
recovery-code-config-warning-title=Diese Wiederherstellungscodes werden nach Verlassen dieser Seite nicht mehr angezeigt
recovery-code-config-warning-message=Drucken Sie sie aus, laden Sie sie herunter oder kopieren Sie sie in einen Passwort-Manager und speichern Sie sie. Wenn Sie diese Einrichtung abbrechen, werden die Wiederherstellungscodes von Ihrem Konto entfernt.
recovery-codes-print=Drucken
recovery-codes-download=Herunterladen
recovery-codes-copy=Kopieren
recovery-codes-copied=Kopiert
recovery-codes-confirmation-message=Ich habe diese Codes an einem sicheren Ort gespeichert
recovery-codes-action-complete=Fertigstellen
recovery-codes-action-cancel=Abbrechen
recovery-codes-download-file-header=Bewahren Sie diese Wiederherstellungscodes an einem sicheren Ort auf.
recovery-codes-download-file-description=Wiederherstellungscodes sind einmalig verwendbare Passw\u00f6rter, mit denen Sie sich bei Ihrem Konto anmelden k\u00f6nnen, wenn Sie keinen Zugriff auf Ihren Authentifikator haben.
recovery-codes-download-file-date=Diese Codes wurden generiert am
recovery-codes-label-default=Wiederherstellungscodes
webauthn-display-name=Passkey
webauthn-help-text=Verwenden Sie Ihren Passkey zur Anmeldung.
webauthn-passwordless-display-name=Passkey
webauthn-passwordless-help-text=Verwenden Sie Ihren Passkey zur kennwortlosen Anmeldung.
webauthn-login-title=Anmeldung mit Passkey
webauthn-registration-title=Passkey registrieren
webauthn-available-authenticators=Verf\u00fcgbare Passkeys
webauthn-unsupported-browser-text=WebAuthn wird von diesem Browser nicht unterst\u00fctzt. Versuchen Sie es mit einem anderen oder wenden Sie sich an Ihren Administrator.
webauthn-doAuthenticate=Anmelden mit Passkey
webauthn-createdAt-label=Angelegt
webauthn-error-title=Passkey Fehler
webauthn-error-registration=Fehler beim Registrieren Ihres Passkeys.<br/> {0}
webauthn-error-api-get=Fehler beim Authentifizieren mit dem Passkey.<br/> {0}
webauthn-error-different-user=Der erste authentifizierte Benutzer ist nicht derjenige, der durch den Passkey authentifiziert wurde.
webauthn-error-auth-verification=Das Ergebnis der Passkey-Authentifizierung ist ung\u00fcltig.<br/> {0}
webauthn-error-register-verification=Das Ergebnis der Passkey-Registrierung ist ung\u00fcltig.<br/> {0}
webauthn-error-user-not-found=Unbekannter Benutzer, der mit dem Passkey authentifiziert wurde.
identity-provider-redirector=Mit einem anderen Indentit\u00e4tsprovider verbinden
identity-provider-login-label=Oder anmelden mit
idp-email-verification-display-name=E-Mail Verifizierung
idp-email-verification-help-text=Best\u00e4tigen Sie Ihr Benutzerkonto \u00fcber den Empfang einer E-Mail
idp-username-password-form-display-name=Passwort Verifizierung
idp-username-password-form-help-text=Best\u00e4tigen Sie Ihr Benutzerkonto mit Benutzername und Passwort
finalDeletionConfirmation=Wenn Sie Ihr Konto l\u00f6schen, kann es nicht wiederhergestellt werden. Um Ihr Konto zu behalten, klicken Sie auf Abbrechen.
irreversibleAction=Diese Aktion ist unwiderruflich
deleteAccountConfirm=L\u00f6schung des Kontos best\u00e4tigen
deletingImplies=Die L\u00f6schung Ihres Kontos bedeutet\:
errasingData=L\u00f6schen aller Ihrer Daten
loggingOutImmediately=Sofortige Abmeldung
accountUnusable=Eine sp\u00e4tere Nutzung der Anwendung ist mit diesem Konto nicht mehr m\u00f6glich
userDeletedSuccessfully=Nutzer erfolgreich gel\u00f6scht
access-denied=Zugriff verweigert
access-denied-when-idp-auth=Zugriff verweigert wenn \u00fcber {0} authentifiziert
frontchannel-logout.title=Abmelden
frontchannel-logout.message=Sie melden sich von folgenden Anwendungen ab
logoutConfirmTitle=Abmelden
logoutConfirmHeader=Wollen Sie sich abmelden?
doLogout=Abmelden
readOnlyUsernameMessage=Sie k\u00f6nnen Ihren Benutzernamen nicht \u00e4ndern, da er schreibgesch\u00fctzt ist.
error-invalid-multivalued-size=Attribut {0} muss mindestens {1} und h\u00f6chstens {2} Werte haben.
webauthn-registration-init-label=Passkey (Standard Bezeichnung)
nfc=NFC
identityProviderLogoutFailure=Fehler bei Logout mit SAML Identit\u00e4tsanbieter
webauthn-registration-init-label-prompt=Bitte geben Sie die Bezeichnung Ihres registrierten Passkeys ein
internal=Intern
unknown=Unbekannt
usb=USB
bluetooth=Bluetooth
organizationScopeConsentText=Organisation
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
confirmOverrideIdpTitle=Es besteht bereits eine Verk\u00fcpfung mit einem Identit\u00e4tsanbieter
federatedIdentityConfirmOverrideMessage=Sie versuchen, Ihr Benutzerkonto {0} mit dem {1} Benutzerkonto {2} zu verkn\u00fcpfen. Ihr Benutzerkonto ist jedoch bereits mit einem anderen {3} Benutzerkonto {4} verkn\u00fcpft. K\u00f6nnen Sie best\u00e4tigen, ob Sie die bestehende Verkn\u00fcpfung durch das neue Benutzerkonto ersetzen m\u00f6chten?
confirmOverrideIdpContinue=Ja, die Verkn\u00fcpfung mit dem neuen Benutzerkonto ersetzen.
invalidPasswordNotContainsUsernameMessage=Ung\u00fcltiges Passwort\: darf nicht den Benutzernamen enthalten.
shouldBeEqual={0} sollte gleich {1} sein
shouldBeDifferent={0} sollte sich von {1} unterscheiden
shouldMatchPattern=Muster sollte \u00fcbereinstimmen\: `/{0}/`
mustBeAnInteger=Muss eine ganze Zahl sein
notAValidOption=Keine g\u00fcltige Option
selectAnOption=W\u00e4hlen Sie eine Option
remove=Entfernen
addValue=Wert hinzuf\u00fcgen
languages=Sprachen

View File

@ -0,0 +1,436 @@
doLogIn=\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2
doRegister=\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae
doRegisterSecurityKey=\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae
doCancel=\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7
doSubmit=\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae
doBack=\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae
doYes=\u039d\u03b1\u03b9
doNo=\u038c\u03c7\u03b9
doContinue=\u03a3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1
doIgnore=\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7
doAccept=\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae
doDecline=\u0391\u03c0\u03cc\u03c1\u03c1\u03b9\u03c8\u03b7
doForgotPassword=\u039e\u03b5\u03c7\u03ac\u03c3\u03b1\u03c4\u03b5 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc;
doClickHere=\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u0395\u03b4\u03ce
doImpersonate=\u03a0\u03c1\u03bf\u03c3\u03c0\u03bf\u03af\u03b7\u03c3\u03b7
doTryAgain=\u0394\u03bf\u03ba\u03b9\u03bc\u03ae \u039e\u03b1\u03bd\u03ac
doTryAnotherWay=\u0394\u03bf\u03ba\u03b9\u03bc\u03ae \u03bc\u03b5 \u03ac\u03bb\u03bb\u03b7 \u03bc\u03ad\u03b8\u03bf\u03b4\u03bf
doConfirmDelete=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2
errorDeletingAccount=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
deletingAccountForbidden=\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b4\u03b9\u03ba\u03b1\u03af\u03c9\u03bc\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2, \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae.
kerberosNotConfigured=\u03a4\u03bf Kerberos \u0394\u03b5\u03bd \u0388\u03c7\u03b5\u03b9 \u03a1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af
kerberosNotConfiguredTitle=\u03a4\u03bf Kerberos \u0394\u03b5\u03bd \u0388\u03c7\u03b5\u03b9 \u03a1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af
bypassKerberosDetail=\u0395\u03af\u03c4\u03b5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03bc\u03ad\u03c3\u03c9 Kerberos \u03ae \u03bf \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af \u03b3\u03b9\u03b1 \u03b5\u03af\u03c3\u03bf\u03b4\u03bf \u03bc\u03b5 Kerberos. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03af\u03c3\u03bf\u03b4\u03bf \u03bc\u03b5 \u03ac\u03bb\u03bb\u03b5\u03c2 \u03bc\u03b5\u03b8\u03cc\u03b4\u03bf\u03c5\u03c2
kerberosNotSetUp=\u03a4\u03bf Kerberos \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af. \u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ad\u03bb\u03b8\u03b5\u03c4\u03b5.
registerTitle=\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae
loginAccountTitle=\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2 \u03c3\u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2
loginTitle=\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2 \u03c3\u03c4\u03bf {0}
loginTitleHtml={0}
impersonateTitle={0} \u03a0\u03c1\u03bf\u03c3\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7
impersonateTitleHtml=<strong>{0}</strong> \u03a0\u03c1\u03bf\u03c3\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7
realmChoice=\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae
unknownUser=\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2
loginTotpTitle=\u03a1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 Authenticator \u039a\u03b9\u03bd\u03b7\u03c4\u03bf\u03cd
loginProfileTitle=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u039b\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
loginIdpReviewProfileTitle=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u039b\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
loginTimeout=\u0397 \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03c3\u03b1\u03c2 \u03ad\u03bb\u03b7\u03be\u03b5. \u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03ae.
reauthenticate=\u0393\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b3\u03b9\u03b1 \u03b1\u03c5\u03b8\u03b5\u03bd\u03c4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03be\u03b1\u03bd\u03ac
oauthGrantTitle=\u0394\u03ce\u03c3\u03c4\u03b5 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u0392\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b5\u03bc\u03c0\u03b9\u03c3\u03c4\u03b5\u03cd\u03b5\u03c3\u03c4\u03b5 \u03c4\u03bf {0} \u03bc\u03b1\u03b8\u03b1\u03af\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c0\u03c9\u03c2 \u03c4\u03bf {0} \u03b8\u03b1 \u03c7\u03b5\u03b9\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c3\u03b1\u03c2.
oauthGrantReview=\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03bb\u03ad\u03b3\u03be\u03b5\u03c4\u03b5 \u03c4\u03b1
oauthGrantTos=\u03cc\u03c1\u03bf\u03b9 \u03c4\u03b7\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1\u03c2.
oauthGrantPolicy=\u03c0\u03bf\u03bb\u03b9\u03c4\u03b9\u03ba\u03ae \u03b9\u03b4\u03b9\u03c9\u03c4\u03b9\u03ba\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
errorTitle=\u0396\u03b7\u03c4\u03ac\u03bc\u03b5 \u03c3\u03c5\u03b3\u03bd\u03ce\u03bc\u03b7...
errorTitleHtml=\u0396\u03b7\u03c4\u03ac\u03bc\u03b5 <strong>\u03c3\u03c5\u03b3\u03bd\u03ce\u03bc\u03b7</strong> ...
emailVerifyTitle=\u03a0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 Email
emailForgotTitle=\u039e\u03b5\u03c7\u03ac\u03c3\u03b1\u03c4\u03b5 \u03c4\u03bf \u039a\u03c9\u03b4\u03b9\u03ba\u03cc;
updateEmailTitle=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 email
emailUpdateConfirmationSentTitle=\u03a3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5 email \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7\u03c2
emailUpdateConfirmationSent=\u0388\u03bd\u03b1 email \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7\u03c2 \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5 \u03c3\u03c4\u03bf {0}. \u0391\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03bf\u03b4\u03b7\u03b3\u03af\u03b5\u03c2 \u03b5\u03ba\u03b5\u03af, \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 email.
emailUpdatedTitle=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 email
emailUpdated=\u03a4\u03bf email \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03ac\u03bb\u03bb\u03b1\u03be\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ce\u03c2 \u03c3\u03b5 {0}.
updatePasswordTitle=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd
codeSuccessTitle=\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2
codeErrorTitle=\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03bf\u03c2\: {0}
displayUnsupported=\u039c\u03b7 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2
browserRequired=\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 browser \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b5\u03af\u03c3\u03bf\u03b4\u03bf
browserContinue=\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 browser \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03bf\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5
browserContinuePrompt=\u0395\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 browser \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1 \u03c3\u03c4\u03b7\u03bd \u03b5\u03af\u03c3\u03bf\u03b4\u03bf [\u03bd/\u03bf]\:
browserContinueAnswer=\u03bd
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=\u0395\u03c3\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc
unknown=\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf
termsTitle=\u038c\u03c1\u03bf\u03b9 \u03ba\u03b1\u03b9 \u03a3\u03c5\u03bd\u03b8\u03ae\u03ba\u03b5\u03c2
termsText=
termsPlainText=\u0394\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03bf\u03c1\u03b9\u03c3\u03c4\u03b5\u03af \u038c\u03c1\u03bf\u03b9 \u03ba\u03b1\u03b9 \u03a3\u03c5\u03bd\u03b8\u03ae\u03ba\u03b5\u03c2.
recaptchaFailed=\u0386\u03ba\u03c5\u03c1\u03bf Recaptcha
recaptchaNotConfigured=\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 Recaptcha, \u03b1\u03bb\u03bb\u03ac \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03c1\u03c5\u03b8\u03bc\u03b9\u03c3\u03c4\u03b5\u03af
consentDenied=\u0386\u03c1\u03bd\u03b7\u03c3\u03b7 \u03a3\u03c5\u03bd\u03b1\u03af\u03bd\u03b5\u03c3\u03b7\u03c2.
noAccount=\u039d\u03ad\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2;
username=\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7
usernameOrEmail=\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae email
firstName=\u038c\u03bd\u03bf\u03bc\u03b1
givenName=\u038c\u03bd\u03bf\u03bc\u03b1
fullName=\u039f\u03bd\u03bf\u03bc\u03b1\u03c4\u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf
lastName=\u0395\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf
familyName=\u0395\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf
email=Email
password=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
passwordConfirm=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd
passwordNew=\u039d\u03ad\u03bf\u03c2 \u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
passwordNewConfirm=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u039d\u03ad\u03bf\u03c5 \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd
rememberMe=\u039d\u03b1 \u03bc\u03b5 \u03b8\u03c5\u03bc\u03ac\u03c3\u03b1\u03b9
authenticatorCode=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03bc\u03af\u03b1\u03c2-\u03c7\u03c1\u03ae\u03c3\u03b7\u03c2
address=\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7
street=\u039f\u03b4\u03cc\u03c2
locality=\u03a0\u03cc\u03bb\u03b7 \u03ae \u0394\u03ae\u03bc\u03bf\u03c2
region=\u039d\u03bf\u03bc\u03cc\u03c2 \u03ae \u03a0\u03b5\u03c1\u03b9\u03c6\u03ad\u03c1\u03b5\u03b9\u03b1
postal_code=\u03a4\u03b1\u03c7\u03c5\u03b4\u03c1\u03bf\u03bc\u03b9\u03ba\u03cc\u03c2 \u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2
country=\u03a7\u03ce\u03c1\u03b1
emailVerified=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03bc\u03ad\u03bd\u03bf Email
website=\u0399\u03c3\u03c4\u03bf\u03c3\u03b5\u03bb\u03af\u03b4\u03b1
phoneNumber=\u03a4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf
phoneNumberVerified=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03bc\u03ad\u03bd\u03bf \u03c4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf
gender=\u03a6\u03cd\u03bb\u03bf
birthday=\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b3\u03ad\u03bd\u03bd\u03b7\u03c3\u03b7\u03c2
zoneinfo=\u0396\u03ce\u03bd\u03b7 \u03ce\u03c1\u03b1\u03c2
gssDelegationCredential=GSS \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2
logoutOtherSessions=\u0388\u03be\u03bf\u03b4\u03bf\u03c2 \u03b1\u03c0\u03cc \u03ac\u03bb\u03bb\u03b5\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2
profileScopeConsentText=\u03a0\u03c1\u03bf\u03c6\u03af\u03bb \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7
emailScopeConsentText=\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email
addressScopeConsentText=\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7
phoneScopeConsentText=\u03a4\u03b7\u03bb\u03ad\u03c6\u03c9\u03bd\u03bf
offlineAccessScopeConsentText=\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b5\u03ba\u03c4\u03cc\u03c2-\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2
samlRoleListScopeConsentText=\u039f\u03b9 \u03a1\u03cc\u03bb\u03bf\u03b9 \u039c\u03bf\u03c5
rolesScopeConsentText=\u03a1\u03cc\u03bb\u03bf\u03b9 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7
restartLoginTooltip=\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u0395\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5
loginTotpIntro=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03bf\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b3\u03b5\u03bd\u03bd\u03ae\u03c4\u03c1\u03b9\u03b1 \u039a\u03c9\u03b4\u03b9\u03ba\u03ce\u03bd \u039c\u03af\u03b1\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc
loginTotpStep1=\u0395\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03c4\u03b5 \u03bc\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03b9\u03c2 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b5\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 \u03c3\u03c4\u03bf \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03c3\u03b1\u03c2\:
loginTotpStep2=\u0391\u03bd\u03bf\u03af\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03ba\u03b1\u03b9 \u03c3\u03b1\u03c1\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf \u039a\u03ce\u03b4\u03b9\u03ba\u03b1 QR\:
loginTotpStep3=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03bc\u03af\u03b1\u03c2-\u03c7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03cc\u03c0\u03c9\u03c2 \u03c0\u03b1\u03c1\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03ba\u03b1\u03b9 \u03c0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5.
loginTotpStep3DeviceName=\u03a0\u03b1\u03c1\u03ad\u03c7\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u038c\u03bd\u03bf\u03bc\u03b1 \u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03c5\u03ba\u03bf\u03bb\u03af\u03b1 \u03b4\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7\u03c2 \u03c4\u03c9\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ce\u03bd OTP.
loginTotpManualStep2=\u0391\u03bd\u03bf\u03af\u03be\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03ba\u03b1\u03b9 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bc\u03c5\u03c3\u03c4\u03b9\u03ba\u03cc \u03ba\u03bb\u03b5\u03b9\u03b4\u03af\:
loginTotpManualStep3=\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c4\u03b9\u03bc\u03ad\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c9\u03bd \u03b1\u03bd \u03b7 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03c4\u03bf \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9\:
loginTotpUnableToScan=\u03a0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03c3\u03c4\u03b7 \u03c3\u03ac\u03c1\u03c9\u03c3\u03b7;
loginTotpScanBarcode=\u03a3\u03ac\u03c1\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 QR;
loginCredential=\u0394\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03ae\u03c1\u03b9\u03b1
loginOtpOneTime=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03bc\u03af\u03b1\u03c2-\u03c7\u03c1\u03ae\u03c3\u03b7\u03c2
loginTotpType=\u03a4\u03cd\u03c0\u03bf\u03c2
loginTotpAlgorithm=\u0391\u03bb\u03b3\u03cc\u03c1\u03b9\u03b8\u03bc\u03bf\u03c2
loginTotpDigits=\u03a8\u03b7\u03c6\u03af\u03b1
loginTotpInterval=\u0394\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1
loginTotpCounter=\u039c\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae\u03c2
loginTotpDeviceName=\u038c\u03bd\u03bf\u03bc\u03b1 \u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2
loginTotp.totp=\u03a7\u03c1\u03bf\u03bd\u03b9\u03ba\u03cc\u03c2
loginTotp.hotp=\u03a3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03cc\u03c2
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03ad\u03b8\u03bf\u03b4\u03bf \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5
oauthGrantRequest=\u03a0\u03b1\u03c1\u03b1\u03c7\u03c9\u03c1\u03b5\u03af\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03b4\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2;
inResource=\u03c3\u03b5
oauth2DeviceVerificationTitle=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2
verifyOAuth2DeviceUserCode=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03bf\u03c5 \u03c0\u03b1\u03c1\u03ad\u03c7\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03ba\u03b1\u03b9 \u03c0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03a5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae
oauth2DeviceInvalidUserCodeMessage=\u0386\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.
oauth2DeviceExpiredUserCodeMessage=\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03bb\u03ae\u03be\u03b5\u03b9. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b7\u03b3\u03b1\u03af\u03bd\u03b5\u03c4\u03b5 \u03c0\u03af\u03c3\u03c9 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.
oauth2DeviceVerificationCompleteHeader=\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2
oauth2DeviceVerificationCompleteMessage=\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c4\u03bf\u03c5 browser \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c3\u03b1\u03c2.
oauth2DeviceVerificationFailedHeader=\u0397 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5
oauth2DeviceVerificationFailedMessage=\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03c0\u03ac\u03c4\u03b5 \u03c0\u03af\u03c3\u03c9 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03c0\u03c1\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.
oauth2DeviceConsentDeniedMessage=\u0394\u03b5\u03bd \u03b4\u03ce\u03b8\u03b7\u03ba\u03b5 \u03c3\u03c5\u03b3\u03ba\u03b1\u03c4\u03ac\u03b8\u03b5\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae.
oauth2DeviceAuthorizationGrantDisabledMessage=\u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03c4\u03bf OAuth 2.0 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c7\u03bf\u03c1\u03ae\u03b3\u03b7\u03c3\u03b7 \u03b5\u03be\u03bf\u03c5\u03c3\u03b9\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2. \u0391\u03c5\u03c4\u03ae \u03b7 \u03c1\u03bf\u03ae \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7.
emailVerifyInstruction1=\u03a3\u03b1\u03c2 \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5 \u03ad\u03bd\u03b1 email \u03bc\u03b5 \u03bf\u03b4\u03b7\u03b3\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03c9\u03c2 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03c3\u03b1\u03c2 {0}.
emailVerifyInstruction2=\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03bb\u03ac\u03b2\u03b5\u03b9 \u03ad\u03bd\u03b1\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03c0\u03b1\u03bb\u03ae\u03b8\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf email \u03c3\u03b1\u03c2;
emailVerifyInstruction3=\u03bd\u03b1 \u03be\u03b1\u03bd\u03b1\u03c3\u03c4\u03b1\u03bb\u03b5\u03af \u03c4\u03bf email.
emailLinkIdpTitle=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 {0}
emailLinkIdp1=\u03a3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5 \u03ad\u03bd\u03b1 email \u03bc\u03b5 \u03bf\u03b4\u03b7\u03b3\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf {0} \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc {1} \u03bc\u03b5 \u03c4\u03bf {2} \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc.
emailLinkIdp2=\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03bb\u03ac\u03b2\u03b5\u03b9 \u03ad\u03bd\u03b1\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03c0\u03b1\u03bb\u03ae\u03b8\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf email \u03c3\u03b1\u03c2;
emailLinkIdp3=\u03bd\u03b1 \u03be\u03b1\u03bd\u03b1\u03c3\u03c4\u03b1\u03bb\u03b5\u03af \u03c4\u03bf email.
emailLinkIdp4=\u0391\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03ae\u03b4\u03b7 \u03b5\u03c0\u03b1\u03bb\u03c5\u03b8\u03b5\u03cd\u03c3\u03b5\u03b9 \u03c4\u03bf email \u03c3\u03b5 \u03ad\u03bd\u03b1\u03bd \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae
emailLinkIdp5=\u03b3\u03b9\u03b1 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1.
backToLogin=&laquo; \u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u0395\u03af\u03c3\u03bf\u03b4\u03bf
emailInstruction=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae \u03c4\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email \u03ba\u03b1\u03b9 \u03b8\u03b1 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b1\u03bb\u03bf\u03cd\u03bd \u03bf\u03b4\u03b7\u03b3\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03c9\u03c2 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc.
emailInstructionUsername=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03b8\u03b1 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03b1\u03bb\u03bf\u03cd\u03bd \u03bf\u03b4\u03b7\u03b3\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03c9\u03c2 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bd\u03ad\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc.
copyCodeInstruction=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c8\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03c3\u03b1\u03c2\:
pageExpiredTitle=\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03ad\u03bb\u03b7\u03be\u03b5
pageExpiredMsg1=\u0393\u03b9\u03b1 \u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5
pageExpiredMsg2=\u0393\u03b9\u03b1 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1 \u03c4\u03b7\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5
personalInfo=\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1\:
role_admin=\u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2
role_realm-admin=\u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03a4\u03cc\u03c0\u03bf\u03c5
role_create-realm=\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c4\u03bf\u03bc\u03ad\u03b1
role_create-client=\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7
role_view-realm=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03bf\u03bc\u03ad\u03b1
role_view-users=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd
role_view-applications=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ce\u03bd
role_view-clients=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c0\u03b5\u03bb\u03b1\u03c4\u03ce\u03bd
role_view-events=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd\u03c4\u03c9\u03bd
role_view-identity-providers=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c0\u03b1\u03c1\u03cc\u03c7\u03c9\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2
role_manage-realm=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03c4\u03bf\u03bc\u03ad\u03b1
role_manage-users=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd
role_manage-applications=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ce\u03bd
role_manage-identity-providers=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03c0\u03b1\u03c1\u03cc\u03c7\u03c9\u03bd \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2
role_manage-clients=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03c0\u03b5\u03bb\u03b1\u03c4\u03ce\u03bd
role_manage-events=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03c3\u03c5\u03bc\u03b2\u03ac\u03bd\u03c4\u03c9\u03bd
role_view-profile=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb
role_manage-account=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
role_manage-account-links=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c9\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
role_read-token=\u0391\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03bf\u03cd
role_offline-access=\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b5\u03ba\u03c4\u03cc\u03c2-\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2
client_account=\u039b\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2
client_account-console=\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1 \u039b\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
client_security-admin-console=\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1 \u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u0391\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1\u03c2
client_admin-cli=CLI \u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7\u03c2
client_realm-management=\u0394\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03a4\u03bf\u03bc\u03ad\u03b1
client_broker=\u039c\u03b5\u03c3\u03bf\u03bb\u03b1\u03b2\u03b7\u03c4\u03ae\u03c2
requiredFields=\u0391\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03b1 \u03c0\u03b5\u03b4\u03af\u03b1
invalidUserMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2.
invalidUsernameMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7.
invalidUsernameOrEmailMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae email.
invalidPasswordMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2.
invalidEmailMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email.
accountDisabledMessage=\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af, \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae.
accountTemporarilyDisabledMessage=\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03c0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ac, \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03ae \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1.
expiredCodeMessage=\u039b\u03ae\u03be\u03b7 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.
expiredActionMessage=\u0397 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1 \u03ad\u03bb\u03b7\u03be\u03b5. \u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03ce\u03c1\u03b1 \u03bc\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7.
expiredActionTokenNoSessionMessage=\u0397 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1 \u03ad\u03bb\u03b7\u03be\u03b5.
expiredActionTokenSessionExistsMessage=\u0397 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1 \u03ad\u03bb\u03b5\u03b9\u03be\u03b5. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03c1\u03c7\u03af\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.
sessionLimitExceeded=\u03a0\u03ac\u03c1\u03b1 \u03c0\u03bf\u03bb\u03bb\u03ad\u03c2 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b5\u03c2
missingFirstNameMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03cc\u03bd\u03bf\u03bc\u03b1.
missingLastNameMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03b5\u03c0\u03ce\u03bd\u03c5\u03bc\u03bf.
missingEmailMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 email.
missingUsernameMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7.
missingPasswordMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2.
missingTotpMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b1\u03c0\u03cc \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2.
missingTotpDeviceNameMessage=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2.
notMatchPasswordMessage=\u039f\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03af \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b4\u03b5 \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03bf\u03c5\u03bd.
error-invalid-value=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03c4\u03b9\u03bc\u03ae.
error-invalid-blank=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03c4\u03b9\u03bc\u03ae.
error-empty=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03c4\u03b9\u03bc\u03ae.
error-invalid-length=\u03a4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03be\u03cd {1} \u03ba\u03b1\u03b9 {2}.
error-invalid-length-too-short=\u0395\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 {1}.
error-invalid-length-too-long=\u039c\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 {2}.
error-invalid-email=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email.
error-invalid-number=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2.
error-number-out-of-range=\u039f \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1\u03be\u03cd {1} \u03ba\u03b1\u03b9 {2}.
error-number-out-of-range-too-small=\u039f \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03b5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03b7 \u03c4\u03b9\u03bc\u03ae {1}.
error-number-out-of-range-too-big=\u039f \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03bc\u03ad\u03b3\u03b9\u03c3\u03c4\u03b7 \u03c4\u03b9\u03bc\u03ae {1}.
error-pattern-no-match=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03c4\u03b9\u03bc\u03ae.
error-invalid-uri=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf URL.
error-invalid-uri-scheme=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c3\u03c7\u03ae\u03bc\u03b1 URL.
error-invalid-uri-fragment=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03ba\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9 URL.
error-user-attribute-required=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03bf\u03c1\u03af\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf.
error-invalid-date=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1.
error-user-attribute-read-only=\u0391\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf \u03b5\u03af\u03bd\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7 \u03bc\u03cc\u03bd\u03bf.
error-username-invalid-character=\u0397 \u03c4\u03b9\u03bc\u03ae \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c5\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2.
error-person-name-invalid-character=\u0397 \u03c4\u03b9\u03bc\u03ae \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03bc\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1.
invalidPasswordExistingMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2.
invalidPasswordBlacklistedMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c0\u03b1\u03b3\u03bf\u03c1\u03b5\u03c5\u03bc\u03ad\u03bd\u03bf\u03c2.
invalidPasswordConfirmMessage=\u0397 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b4\u03b5 \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9.
invalidTotpMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03bc\u03af\u03b1\u03c2 \u03c7\u03c1\u03ae\u03c3\u03b7\u03c2.
usernameExistsMessage=\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7.
emailExistsMessage=\u03a4\u03bf email \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7.
federatedIdentityExistsMessage=\u039f \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03bc\u03b5 {0} {1} \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b1\u03c7\u03b5\u03af\u03c1\u03b9\u03c3\u03b7 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc.
federatedIdentityUnavailableMessage=\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 {0} \u03c0\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 {1} . \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae.
confirmLinkIdpTitle=\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7
federatedIdentityConfirmLinkMessage=\u039f \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 {0} {1} \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7. \u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03c9;
federatedIdentityConfirmReauthenticateMessage=\u0391\u03c5\u03b8\u03b5\u03bd\u03c4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2 \u03bc\u03b5 \u03c4\u03bf {0}
nestedFirstBrokerFlowMessage=\u039f {0} \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 {1} \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af \u03bc\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf \u03b3\u03bd\u03c9\u03c3\u03c4\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7.
confirmLinkIdpReviewProfile=\u0395\u03be\u03ad\u03c4\u03b1\u03c3\u03b7 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb
confirmLinkIdpContinue=\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03b5 \u03c5\u03c0\u03ac\u03c1\u03c7\u03c9\u03bd \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc
configureTotpMessage=\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03c4\u03b5 \u03bc\u03b9\u03b1 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03a4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf \u03ba\u03b9\u03bd\u03b7\u03c4\u03cc \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc.
configureBackupCodesMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03bf\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd\u03c2 \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.
updateProfileMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c0\u03c1\u03bf\u03c6\u03af\u03bb \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.
updatePasswordMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b1\u03bb\u03bb\u03ac\u03be\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.
updateEmailMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf email \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b1\u03c2.
resetPasswordMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b1\u03bb\u03bb\u03ac\u03be\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b1\u03c2.
verifyEmailMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf email \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.
linkIdpMessage=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf email \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2 \u03bc\u03b5 \u03c4\u03bf {0}.
emailSentMessage=\u0398\u03b1 \u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 email \u03c3\u03cd\u03bd\u03c4\u03bf\u03bc\u03b1 \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c0\u03bb\u03ad\u03c9\u03bd \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2.
emailSendErrorMessage=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae\u03c2 email, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1.
accountUpdatedMessage=\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b1\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03c9\u03b8\u03b5\u03af.
accountPasswordUpdatedMessage=\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5.
delegationCompleteHeader=\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2 \u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2
delegationCompleteMessage=\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03bb\u03b5\u03af\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c4\u03bf\u03c5 browser \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2.
delegationFailedHeader=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u0395\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5
delegationFailedMessage=\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03bb\u03b5\u03af\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2 \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03bc\u03c0\u03b5\u03af\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac.
noAccessMessage=\u039a\u03b1\u03bc\u03af\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7
invalidPasswordMinLengthMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03b5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 {0}.
invalidPasswordMaxLengthMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03bc\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 {0}.
invalidPasswordMinDigitsMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd {0} \u03c8\u03b7\u03c6\u03af\u03b1.
invalidPasswordMinLowerCaseCharsMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd {0} \u03c0\u03b5\u03b6\u03bf\u03cd\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2.
invalidPasswordMinUpperCaseCharsMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd {0} \u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03bf\u03c5\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2.
invalidPasswordMinSpecialCharsMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd {0} \u03b5\u03b9\u03b4\u03b9\u03ba\u03bf\u03cd\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2.
invalidPasswordNotUsernameMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03af\u03c3\u03bf \u03bc\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7.
invalidPasswordNotEmailMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03af\u03c3\u03bf \u03bc\u03b5 \u03c4\u03bf email.
invalidPasswordRegexPatternMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03b4\u03b5 \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03c4\u03b1 \u03bc\u03bf\u03c4\u03af\u03b2\u03b1 regex.
invalidPasswordHistoryMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03b4\u03b5 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03bf \u03af\u03b4\u03b9\u03bf \u03bc\u03b5 \u03c4\u03bf\u03c5\u03c2 \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c5\u03c2 {0} \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd\u03c2.
invalidPasswordGenericMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\: \u03bf \u03bd\u03ad\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b4\u03b5 \u03c3\u03c5\u03bc\u03c6\u03c9\u03bd\u03b5\u03af \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03bf\u03bb\u03b9\u03c4\u03b9\u03ba\u03ad\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03ce\u03bd.
failedToProcessResponseMessage=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1\u03c2 \u03c4\u03b7\u03c2 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7\u03c2
httpsRequiredMessage=\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 HTTPS
realmNotEnabledMessage=\u039f \u03c4\u03bf\u03bc\u03ad\u03b1\u03c2 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03cc\u03c2
invalidRequestMessage=\u039c\u03b7 \u0388\u03b3\u03ba\u03c5\u03c1\u03b7 \u0391\u03af\u03c4\u03b7\u03c3\u03b7
successLogout=\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af
failedLogout=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2
unknownLoginRequesterMessage=\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf\u03c2 \u03b1\u03b9\u03c4\u03ce\u03bd \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2
loginRequesterNotEnabledMessage=\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03bf \u03b1\u03b9\u03c4\u03ce\u03bd \u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2
bearerOnlyMessage=\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c5 Bearer-only \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03ba\u03ba\u03b9\u03bd\u03ae\u03c3\u03bf\u03c5\u03bd \u03b5\u03af\u03c3\u03bf\u03b4\u03bf \u03bc\u03ad\u03c3\u03c9 browser
standardFlowDisabledMessage=\u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ac \u03b5\u03af\u03c3\u03bf\u03b4\u03bf \u03bc\u03ad\u03c3\u03c9 browser \u03bc\u03b5 \u03c4\u03bf \u03b4\u03bf\u03b8\u03ad\u03bd response_type. \u0397 \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b7 \u03c1\u03bf\u03ae \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7.
implicitFlowDisabledMessage=\u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ac \u03b5\u03af\u03c3\u03bf\u03b4\u03bf \u03bc\u03ad\u03c3\u03c9 browser \u03bc\u03b5 \u03c4\u03bf \u03b4\u03bf\u03b8\u03ad\u03bd response_type. \u0397 \u03ad\u03bc\u03bc\u03b5\u03c3\u03b7 \u03c1\u03bf\u03ae \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7.
invalidRedirectUriMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf redirect uri
unsupportedNameIdFormatMessage=\u039c\u03b7 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03b6\u03cc\u03bc\u03b5\u03bd\u03b7 NamedIDFormat
invalidRequesterMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03b1\u03b9\u03c4\u03ce\u03bd
registrationNotAllowedMessage=\u0397 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9
resetCredentialNotAllowedMessage=\u0397 \u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u0394\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03b7\u03c1\u03af\u03c9\u03bd \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9
permissionNotApprovedMessage=\u0397 \u03ac\u03b4\u03b5\u03b9\u03b1 \u03b4\u03b5\u03bd \u03b5\u03b3\u03ba\u03c1\u03af\u03b8\u03b7\u03ba\u03b5.
noRelayStateInResponseMessage=\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b2\u03af\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7\u03bd \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
insufficientPermissionMessage=\u0394\u03b5\u03bd \u03b5\u03c0\u03b1\u03c1\u03ba\u03bf\u03cd\u03bd \u03c4\u03b1 \u03b4\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03b1 \u03b3\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c4\u03b1\u03c5\u03c4\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd.
couldNotProceedWithAuthenticationRequestMessage=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03bf\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c3\u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
couldNotObtainTokenMessage=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b1\u03c0\u03cc\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03bf\u03cd \u03b1\u03c0\u03cc \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
unexpectedErrorRetrievingTokenMessage=\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03c0\u03cc\u03ba\u03c4\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03bf\u03cd \u03b1\u03c0\u03cc \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
unexpectedErrorHandlingResponseMessage=\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03bf \u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03bc\u03cc \u03c4\u03b7\u03c2 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
identityProviderAuthenticationFailedMessage=\u0397 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5. \u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b7\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03bc\u03b5 \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
couldNotSendAuthenticationRequestMessage=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae\u03c2 \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c3\u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
unexpectedErrorHandlingRequestMessage=\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03bf \u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03bc\u03cc \u03c4\u03bf\u03c5 \u03b1\u03b9\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
invalidAccessCodeMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2.
sessionNotActiveMessage=\u0397 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae.
invalidCodeMessage=\u03a3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03ad\u03bd\u03b1 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b3\u03b9\u03b1 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2 \u03c3\u03b1\u03c2.
cookieNotFoundMessage=\u0394\u03b5 \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c4\u03bf cookie. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03b1 cookies \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ac \u03c3\u03c4\u03bf browser \u03c3\u03b1\u03c2.
insufficientLevelOfAuthentication=\u0394\u03b5\u03bd \u03b9\u03ba\u03b1\u03bd\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03c4\u03bf \u03b5\u03c0\u03af\u03c0\u03b5\u03b4\u03bf \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03b6\u03b7\u03c4\u03ae\u03b8\u03b7\u03ba\u03b5.
identityProviderUnexpectedErrorMessage=\u0391\u03c0\u03c1\u03cc\u03c3\u03bc\u03b5\u03bd\u03bf \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2
identityProviderMissingStateMessage=\u039b\u03b5\u03af\u03c0\u03b5\u03b9 \u03b7 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03c2 state \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
identityProviderInvalidResponseMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
identityProviderInvalidSignatureMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03c5\u03c0\u03bf\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u03b1\u03c0\u03ac\u03bd\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2.
identityProviderNotFoundMessage=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7\u03c2 \u03b5\u03bd\u03cc\u03c2 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03bc\u03b5 \u03c4\u03bf \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc.
identityProviderLinkSuccess=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b1\u03c4\u03b5 \u03c4\u03bf email \u03c3\u03b1\u03c2 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03ce\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b9\u03ba\u03cc browser \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03c4\u03b5 \u03b5\u03ba\u03b5\u03af \u03c4\u03b7\u03bd \u03b5\u03af\u03c3\u03bf\u03b4\u03bf.
staleCodeMessage=\u0391\u03c5\u03c4\u03ae \u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03b9\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac
realmSupportsNoCredentialsMessage=\u039f \u03c4\u03bf\u03bc\u03ad\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03ba\u03b1\u03bd\u03ad\u03bd\u03b1 \u03c4\u03cd\u03c0\u03bf \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03b7\u03c1\u03af\u03c9\u03bd.
credentialSetupRequired=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5, \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03b4\u03b9\u03b1\u03c0\u03b9\u03c3\u03c4\u03b5\u03c5\u03c4\u03b7\u03c1\u03af\u03c9\u03bd.
identityProviderNotUniqueMessage=\u039f \u03c4\u03bf\u03bc\u03ad\u03b1\u03c2 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03bf\u03cd\u03c2 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5\u03c2 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2. \u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03cc\u03c7\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7.
emailVerifiedMessage=\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email \u03c3\u03b1\u03c2 \u03ad\u03c7\u03b5\u03b9 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af.
staleEmailVerificationLink=\u039f \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03cc\u03c2 \u03c0\u03bf\u03c5 \u03c0\u03b1\u03c4\u03ae\u03c3\u03b1\u03c4\u03b5 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03b1\u03bb\u03b9\u03cc\u03c2 \u03ba\u03b1\u03b9 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03c0\u03b9\u03b1. \u038a\u03c3\u03c9\u03c2 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03ae\u03b4\u03b7 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03b9 \u03c4\u03bf email \u03c3\u03b1\u03c2.
identityProviderAlreadyLinkedMessage=\u0397 \u03bf\u03bc\u03cc\u03c3\u03c0\u03bf\u03bd\u03b4\u03b7 \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c6\u03b5\u03b9 \u03c4\u03bf {0} \u03b5\u03af\u03bd\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b4\u03b5\u03bc\u03ad\u03bd\u03b7 \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03ac\u03bb\u03bb\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7.
confirmAccountLinking=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd {0} \u03c3\u03c4\u03bf \u03c0\u03ac\u03c1\u03bf\u03c7\u03bf \u03c4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 {1} \u03bc\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.
confirmEmailAddressVerification=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03b3\u03ba\u03c5\u03c1\u03cc\u03c4\u03b7\u03c4\u03b1 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7\u03c2 email {0}.
confirmExecutionOfActions=\u03a0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1(\u03b5\u03c2)
backToApplication=&laquo; \u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03b7\u03bd \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae
missingParameterMessage=\u039b\u03b5\u03af\u03c0\u03bf\u03c5\u03bd \u03bf\u03b9 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03b9\: {0}
clientNotFoundMessage=\u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b4\u03b5 \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5.
clientDisabledMessage=\u039f \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7\u03c2 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5.
invalidParameterMessage=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03c0\u03b1\u03c1\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03c2\: {0}
alreadyLoggedIn=\u0388\u03c7\u03b5\u03c4\u03b5 \u03ae\u03b4\u03b7 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af.
differentUserAuthenticated=\u0388\u03c7\u03b5\u03c4\u03b5 \u03ae\u03b4\u03b7 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03c9\u03c2 \u03bf \u03ac\u03bb\u03bb\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 ''{0}''. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03c1\u03ce\u03c4\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5.
brokerLinkingSessionExpired=\u0391\u03b9\u03c4\u03ae\u03b8\u03b7\u03ba\u03b5 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03bc\u03b5\u03c3\u03bf\u03bb\u03b1\u03b2\u03b7\u03c4\u03ae, \u03b1\u03bb\u03bb\u03ac \u03b7 \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1 \u03c3\u03c5\u03bd\u03b5\u03b4\u03c1\u03af\u03b1 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03b9\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7.
proceedWithAction=&raquo; \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b5\u03b4\u03ce \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5
acrNotFulfilled=\u0394\u03b5\u03bd \u03b9\u03ba\u03b1\u03bd\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03bf\u03b9 \u03b1\u03c0\u03b1\u03b9\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
requiredAction.CONFIGURE_TOTP=\u03a1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 OTP
requiredAction.terms_and_conditions=\u038c\u03c1\u03bf\u03b9 \u03ba\u03b1\u03b9 \u03a3\u03c5\u03bd\u03b8\u03ae\u03ba\u03b5\u03c2
requiredAction.UPDATE_PASSWORD=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
requiredAction.UPDATE_PROFILE=\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03a0\u03c1\u03bf\u03c6\u03af\u03bb
requiredAction.VERIFY_EMAIL=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 Email
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u039a\u03c9\u03b4\u03b9\u03ba\u03ce\u03bd \u0391\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2
requiredAction.webauthn-register-passwordless=\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03b5 Webauthn \u03a7\u03c9\u03c1\u03af\u03c2-\u039a\u03c9\u03b4\u03b9\u03ba\u03cc-\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
invalidTokenRequiredActions=\u039f\u03b9 \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03b5\u03c2 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b5\u03c2 \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b5\u03c2
doX509Login=\u0398\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c9\u03c2\:
clientCertificate=\u03a0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc \u03c0\u03b5\u03bb\u03ac\u03c4\u03b7 X509\:
noCertificate=[\u039a\u03b1\u03bd\u03ad\u03bd\u03b1 \u03a0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03cc]
pageNotFound=\u0397 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b4\u03b5 \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5
internalServerError=\u03a3\u03c5\u03bd\u03ad\u03b2\u03b7 \u03ad\u03bd\u03b1 \u03b5\u03c3\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03c3\u03c4\u03b7\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1
console-username=\u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7\:
console-password=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\:
console-otp=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u039c\u03af\u03b1\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2\:
console-new-password=\u039d\u03ad\u03bf\u03c2 \u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2\:
console-confirm-password=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd\:
console-update-password=\u0391\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b1\u03c2.
console-verify-email=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email \u03c3\u03b1\u03c2. \u03a3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5 \u03ad\u03bd\u03b1 email \u03c3\u03c4\u03bf {0} \u03c4\u03bf \u03bf\u03c0\u03bf\u03af\u03bf \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03ad\u03bd\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c0\u03b5\u03b4\u03af\u03bf.
console-email-code=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 Email\:
console-accept-terms=\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae \u038c\u03c1\u03c9\u03bd [\u03bd/\u03bf]\:
console-accept=\u03bd
openshift.scope.user_info=\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7
openshift.scope.user_check-access=\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7
openshift.scope.user_full=\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7
openshift.scope.list-projects=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1\u03c2 \u03ad\u03c1\u03b3\u03c9\u03bd
saml.post-form.title=\u0391\u03bd\u03b1\u03ba\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03a4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
saml.post-form.message=\u0391\u03bd\u03b1\u03ba\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03bd\u03b1\u03bc\u03ad\u03bd\u03b1\u03c4\u03b5.
saml.post-form.js-disabled=\u0388\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03b7 JavaScript. \u03a3\u03c5\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bc\u03b5 \u03bd\u03b1 \u03c4\u03b7\u03bd \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03bf\u03c5\u03bc\u03c0\u03af \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5.
saml.artifactResolutionServiceInvalidResponse=\u0391\u03b4\u03c5\u03bd\u03b1\u03bc\u03af\u03b1 \u03b5\u03c0\u03af\u03bb\u03c5\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5.
otp-display-name=\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03a4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
otp-help-text=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2.
password-display-name=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
password-help-text=\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03b2\u03ac\u03b6\u03bf\u03bd\u03c4\u03b1\u03c2 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b1\u03c2.
auth-username-form-display-name=\u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7
auth-username-form-help-text=\u039e\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b5\u03af\u03c3\u03bf\u03b4\u03bf \u03bc\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03b1\u03c2
auth-username-password-form-display-name=\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
auth-username-password-form-help-text=\u03a3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03c4\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b1\u03c2.
auth-recovery-authn-code-form-display-name=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u0391\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03a4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
auth-recovery-authn-code-form-help-text=\u0394\u03ce\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03bc\u03b9\u03b1 \u03c0\u03c1\u03bf\u03cb\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03c3\u03b1 \u03bb\u03af\u03c3\u03c4\u03b1.
auth-recovery-code-info-message=\u0394\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2.
auth-recovery-code-prompt=\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \#{0}
auth-recovery-code-header=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
recovery-codes-error-invalid=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
recovery-code-config-header=\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03af \u0391\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03a4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2
recovery-code-config-warning-title=\u0391\u03c5\u03c4\u03bf\u03af \u03bf\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03af \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03b9\u03b1 \u03bf\u03c1\u03b1\u03c4\u03ae \u03bc\u03b5\u03c4\u03ac \u03c0\u03bf\u03c5 \u03b8\u03b1 \u03b2\u03b3\u03b5\u03af\u03c4\u03b5 \u03b1\u03c0\u03cc \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1
recovery-code-config-warning-message=\u0392\u03b5\u03b2\u03b1\u03b9\u03c9\u03b8\u03b5\u03af\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03c4\u03bf\u03c5\u03c2 \u03b5\u03ba\u03c4\u03c5\u03c0\u03ce\u03c3\u03b1\u03c4\u03b5, \u03ba\u03b1\u03c4\u03b5\u03b2\u03ac\u03c3\u03b1\u03c4\u03b5 \u03ae \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c8\u03b1\u03c4\u03b5 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03ba\u03c9\u03b4\u03b9\u03ba\u03ce\u03bd \u03c3\u03b1\u03c2 \u03bc\u03b5 \u03b1\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1. \u0397 \u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2 \u03b8\u03b1 \u03b1\u03c6\u03b1\u03b9\u03c1\u03ad\u03c3\u03b5\u03b9 \u03b1\u03c5\u03c4\u03bf\u03cd\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd\u03c2 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2.
recovery-codes-print=\u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7
recovery-codes-download=\u039b\u03ae\u03c8\u03b7
recovery-codes-copy=\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae
recovery-codes-copied=\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5
recovery-codes-confirmation-message=\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b1 \u03b1\u03c5\u03c4\u03bf\u03cd\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd\u03c2 \u03bc\u03b5 \u03b1\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1
recovery-codes-action-complete=\u039f\u03bb\u03bf\u03ba\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2
recovery-codes-action-cancel=\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2
recovery-codes-download-file-header=\u039a\u03c1\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u03b1\u03c5\u03c4\u03bf\u03cd\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd\u03c2 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03ba\u03ac\u03c0\u03bf\u03c5 \u03b1\u03c3\u03c6\u03b1\u03bb\u03ad\u03c2.
recovery-codes-download-file-description=\u039f\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03af \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03c5\u03c3\u03c4\u03b9\u03ba\u03ac \u03bc\u03af\u03b1\u03c2 \u03c7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03bf\u03c5\u03bd \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03b1\u03bd \u03b4\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2.
recovery-codes-download-file-date=\u0391\u03c5\u03c4\u03bf\u03af \u03bf\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03af \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b1\u03bd \u03c3\u03c4\u03b9\u03c2
recovery-codes-label-default=\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03af \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7\u03c2
webauthn-display-name=\u039a\u03bb\u03b5\u03b9\u03b4\u03af \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-help-text=\u03a7\u03c1\u03ae\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7.
webauthn-passwordless-display-name=\u039a\u03bb\u03b5\u03b9\u03b4\u03af \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-passwordless-help-text=\u03a7\u03c1\u03ae\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c7\u03c9\u03c1\u03af\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2.
webauthn-login-title=\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2 \u03bc\u03b5 \u039a\u03bb\u03b5\u03b9\u03b4\u03af \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-registration-title=\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-available-authenticators=\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-unsupported-browser-text=\u03a4\u03bf WebAuthn \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf browser. \u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03bd \u03ac\u03bb\u03bb\u03bf \u03ae \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae.
webauthn-doAuthenticate=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf \u039a\u03bb\u03b5\u03b9\u03b4\u03af \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-createdAt-label=\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5
webauthn-error-title=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u0391\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2
webauthn-error-registration=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2 \u03c3\u03b1\u03c2.<br/> {0}
webauthn-error-api-get=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03bf\u03c5 \u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2.<br/> {0}
webauthn-error-different-user=\u039f \u03b1\u03c1\u03c7\u03b9\u03ba\u03cc\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03bf \u03af\u03b4\u03b9\u03bf\u03c2 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c0\u03bf\u03c5 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03c4\u03bf \u039a\u03bb\u03b5\u03b9\u03b4\u03af \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2.
webauthn-error-auth-verification=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2.<br/> {0}
webauthn-error-register-verification=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03c4\u03bf\u03c5 \u039a\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2.<br/> {0}
webauthn-error-user-not-found=\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03bf\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03c4\u03bf \u039a\u03bb\u03b5\u03b9\u03b4\u03af \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2.
identity-provider-redirector=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03ac\u03bb\u03bb\u03bf \u03a0\u03ac\u03c1\u03bf\u03c7\u03bf \u03a4\u03b1\u03c5\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2
identity-provider-login-label=\u0389 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5
idp-email-verification-display-name=\u03a0\u03b9\u03c3\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 Email
idp-email-verification-help-text=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 email \u03c3\u03b1\u03c2.
idp-username-password-form-display-name=\u038c\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
idp-username-password-form-help-text=\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03b7\u03c2 \u03b5\u03b9\u03c3\u03cc\u03b4\u03bf\u03c5 \u03c3\u03b1\u03c2.
finalDeletionConfirmation=\u0391\u03bd \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc \u03c3\u03b1\u03c2, \u03b7 \u03b1\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03b4\u03cd\u03bd\u03b1\u03c4\u03b7. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03b1\u03c1\u03b1\u03bc\u03b5\u03af\u03bd\u03b5\u03b9, \u03c0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7.
irreversibleAction=\u0391\u03c5\u03c4\u03ae \u03b7 \u03b5\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b7 \u03b1\u03bd\u03b1\u03c3\u03c4\u03c1\u03ad\u03c8\u03b9\u03bc\u03b7
deleteAccountConfirm=\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd
deletingImplies=\u0397 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd \u03c3\u03b1\u03c2 \u03c3\u03c5\u03bd\u03b5\u03c0\u03ac\u03b3\u03b5\u03c4\u03b1\u03b9\:
errasingData=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03b1\u03c2
loggingOutImmediately=\u0386\u03bc\u03b5\u03c3\u03b7 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03b1\u03c2
accountUnusable=\u039a\u03ac\u03b8\u03b5 \u03bc\u03b5\u03c4\u03b1\u03b3\u03b5\u03bd\u03ad\u03c3\u03c4\u03b5\u03c1\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2 \u03b4\u03b5\u03bd \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc
userDeletedSuccessfully=\u039f \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c6\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03b5\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1
access-denied=\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7
access-denied-when-idp-auth=\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9 \u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7 \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bc\u03b5 {0}
frontchannel-logout.title=\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7
frontchannel-logout.message=\u0391\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03ad\u03b5\u03c3\u03c4\u03b5 \u03b1\u03c0\u03cc \u03c4\u03b9\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2
logoutConfirmTitle=\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7
logoutConfirmHeader=\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b3\u03af\u03bd\u03b5\u03b9 \u03b1\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7;
doLogout=\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7
readOnlyUsernameMessage=\u0394\u03b5 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03cc\u03bd\u03bf-\u03b3\u03b9\u03b1-\u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7.
shouldBeEqual=\u03a4\u03bf {0} \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03af\u03c3\u03bf \u03bc\u03b5 {1}
shouldBeDifferent=\u03a4\u03bf {0} \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03c6\u03ad\u03c1\u03b5\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf {1}
shouldMatchPattern=\u03a4\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9\: `/{0}/`
mustBeAnInteger=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03ba\u03ad\u03c1\u03b1\u03b9\u03bf\u03c2
notAValidOption=\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b9\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae
selectAnOption=\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae
remove=\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7
addValue=\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c4\u03b9\u03bc\u03ae\u03c2
languages=\u0393\u03bb\u03ce\u03c3\u03c3\u03b5\u03c2

View File

@ -0,0 +1,468 @@
doLogIn=Sign In
doRegister=Register
doRegisterSecurityKey=Register
doCancel=Cancel
doSubmit=Submit
doBack=Back
doYes=Yes
doNo=No
doContinue=Continue
doIgnore=Ignore
doAccept=Accept
doDecline=Decline
doForgotPassword=Forgot Password?
doClickHere=Click here
doImpersonate=Impersonate
doTryAgain=Try again
doTryAnotherWay=Try Another Way
doConfirmDelete=Confirm deletion
errorDeletingAccount=Error happened while deleting account
deletingAccountForbidden=You do not have enough permissions to delete your own account, contact admin.
kerberosNotConfigured=Kerberos Not Configured
kerberosNotConfiguredTitle=Kerberos Not Configured
bypassKerberosDetail=Either you are not logged in by Kerberos or your browser is not set up for Kerberos login. Please click continue to login in through other means
kerberosNotSetUp=Kerberos is not set up. You cannot login.
registerTitle=Register
loginAccountTitle=Sign in to your account
loginTitle=Sign in to {0}
loginTitleHtml={0}
impersonateTitle={0} Impersonate User
impersonateTitleHtml=<strong>{0}</strong> Impersonate User
realmChoice=Realm
unknownUser=Unknown user
loginTotpTitle=Mobile Authenticator Setup
loginProfileTitle=Update Account Information
loginIdpReviewProfileTitle=Update Account Information
loginTimeout=Your login attempt timed out. Login will start from the beginning.
reauthenticate=Please re-authenticate to continue
authenticateStrong=Strong authentication required to continue
oauthGrantTitle=Grant Access to {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Make sure you trust {0} by learning how {0} will handle your data.
oauthGrantReview=You could review the
oauthGrantTos=terms of service.
oauthGrantPolicy=privacy policy.
errorTitle=We are sorry...
errorTitleHtml=We are <strong>sorry</strong> ...
emailVerifyTitle=Email verification
emailForgotTitle=Forgot Your Password?
updateEmailTitle=Update email
emailUpdateConfirmationSentTitle=Confirmation email sent
emailUpdateConfirmationSent=A confirmation email has been sent to {0}. You must follow the instructions of the former to complete the email update.
emailUpdatedTitle=Email updated
emailUpdated=The account email has been successfully updated to {0}.
updatePasswordTitle=Update password
codeSuccessTitle=Success code
codeErrorTitle=Error code\: {0}
displayUnsupported=Requested display type unsupported
browserRequired=Browser required to login
browserContinue=Browser required to complete login
browserContinuePrompt=Open browser and continue login? [y/n]\:
browserContinueAnswer=y
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=Internal
unknown=Unknown
termsTitle=Terms and Conditions
termsText=
termsPlainText=Terms and conditions to be defined.
termsAcceptanceRequired=You must agree to our terms and conditions.
acceptTerms=I agree to the terms and conditions
deleteCredentialTitle=Delete {0}
deleteCredentialMessage=Do you want to delete {0}?
recaptchaFailed=Invalid Recaptcha
recaptchaNotConfigured=Recaptcha is required, but not configured
consentDenied=Consent denied.
noAccount=New user?
username=Username
usernameOrEmail=Username or email
firstName=First name
givenName=Given name
fullName=Full name
lastName=Last name
familyName=Family name
email=Email
password=Password
passwordConfirm=Confirm password
passwordNew=New Password
passwordNewConfirm=New Password confirmation
hidePassword=Hide password
showPassword=Show password
rememberMe=Remember me
authenticatorCode=One-time code
address=Address
street=Street
locality=City or Locality
region=State, Province, or Region
postal_code=Zip or Postal code
country=Country
emailVerified=Email verified
website=Web page
phoneNumber=Phone number
phoneNumberVerified=Phone number verified
gender=Gender
birthday=Birthdate
zoneinfo=Time zone
gssDelegationCredential=GSS Delegation Credential
logoutOtherSessions=Sign out from other devices
profileScopeConsentText=User profile
emailScopeConsentText=Email address
addressScopeConsentText=Address
phoneScopeConsentText=Phone number
offlineAccessScopeConsentText=Offline Access
samlRoleListScopeConsentText=My Roles
rolesScopeConsentText=User roles
organizationScopeConsentText=Organization
restartLoginTooltip=Restart login
loginTotpIntro=You need to set up a One Time Password generator to access this account
loginTotpStep1=Install one of the following applications on your mobile\:
loginTotpStep2=Open the application and scan the barcode\:
loginTotpStep3=Enter the one-time code provided by the application and click Submit to finish the setup.
loginTotpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
loginTotpManualStep2=Open the application and enter the key\:
loginTotpManualStep3=Use the following configuration values if the application allows setting them\:
loginTotpUnableToScan=Unable to scan?
loginTotpScanBarcode=Scan barcode?
loginCredential=Credential
loginOtpOneTime=One-time code
loginTotpType=Type
loginTotpAlgorithm=Algorithm
loginTotpDigits=Digits
loginTotpInterval=Interval
loginTotpCounter=Counter
loginTotpDeviceName=Device Name
loginTotp.totp=Time-based
loginTotp.hotp=Counter-based
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=Select login method
oauthGrantRequest=Do you grant these access privileges?
inResource=in
oauth2DeviceVerificationTitle=Device Login
verifyOAuth2DeviceUserCode=Enter the code provided by your device and click Submit
oauth2DeviceInvalidUserCodeMessage=Invalid code, please try again.
oauth2DeviceExpiredUserCodeMessage=The code has expired. Please go back to your device and try connecting again.
oauth2DeviceVerificationCompleteHeader=Device Login Successful
oauth2DeviceVerificationCompleteMessage=You may close this browser window and go back to your device.
oauth2DeviceVerificationFailedHeader=Device Login Failed
oauth2DeviceVerificationFailedMessage=You may close this browser window and go back to your device and try connecting again.
oauth2DeviceConsentDeniedMessage=Consent denied for connecting the device.
oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
emailVerifyInstruction1=An email with instructions to verify your email address has been sent to your address {0}.
emailVerifyInstruction2=Haven''t received a verification code in your email?
emailVerifyInstruction3=to re-send the email.
emailLinkIdpTitle=Link {0}
emailLinkIdp1=An email with instructions to link {0} account {1} with your {2} account has been sent to you.
emailLinkIdp2=Haven''t received a verification code in your email?
emailLinkIdp3=to re-send the email.
emailLinkIdp4=If you already verified the email in different browser
emailLinkIdp5=to continue.
backToLogin=&laquo; Back to Login
emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.
emailInstructionUsername=Enter your username and we will send you instructions on how to create a new password.
copyCodeInstruction=Please copy this code and paste it into your application\:
pageExpiredTitle=Page has expired
pageExpiredMsg1=To restart the login process
pageExpiredMsg2=To continue the login process
personalInfo=Personal Info\:
role_admin=Admin
role_realm-admin=Realm Admin
role_create-realm=Create realm
role_create-client=Create client
role_view-realm=View realm
role_view-users=View users
role_view-applications=View applications
role_view-clients=View clients
role_view-events=View events
role_view-identity-providers=View identity providers
role_manage-realm=Manage realm
role_manage-users=Manage users
role_manage-applications=Manage applications
role_manage-identity-providers=Manage identity providers
role_manage-clients=Manage clients
role_manage-events=Manage events
role_view-profile=View profile
role_manage-account=Manage account
role_manage-account-links=Manage account links
role_read-token=Read token
role_offline-access=Offline access
client_account=Account
client_account-console=Account Console
client_security-admin-console=Security Admin Console
client_admin-cli=Admin CLI
client_realm-management=Realm Management
client_broker=Broker
requiredFields=Required fields
invalidUserMessage=Invalid username or password.
invalidUsernameMessage=Invalid username.
invalidUsernameOrEmailMessage=Invalid username or email.
invalidPasswordMessage=Invalid password.
invalidEmailMessage=Invalid email address.
accountDisabledMessage=Account is disabled, contact your administrator.
accountTemporarilyDisabledMessage=Account is temporarily disabled; contact your administrator or retry later.
expiredCodeMessage=Login timeout. Please sign in again.
expiredActionMessage=Action expired. Please continue with login now.
expiredActionTokenNoSessionMessage=Action expired.
expiredActionTokenSessionExistsMessage=Action expired. Please start again.
sessionLimitExceeded=There are too many sessions
identityProviderLogoutFailure=SAML IdP Logout Failure
missingFirstNameMessage=Please specify first name.
missingLastNameMessage=Please specify last name.
missingEmailMessage=Please specify email.
missingUsernameMessage=Please specify username.
missingPasswordMessage=Please specify password.
missingTotpMessage=Please specify authenticator code.
missingTotpDeviceNameMessage=Please specify device name.
notMatchPasswordMessage=Passwords don''t match.
error-invalid-value=Invalid value.
error-invalid-blank=Please specify value.
error-empty=Please specify value.
error-invalid-length=Length must be between {1} and {2}.
error-invalid-length-too-short=Minimal length is {1}.
error-invalid-length-too-long=Maximal length is {2}.
error-invalid-email=Invalid email address.
error-invalid-number=Invalid number.
error-number-out-of-range=Number must be between {1} and {2}.
error-number-out-of-range-too-small=Number must have minimal value of {1}.
error-number-out-of-range-too-big=Number must have maximal value of {2}.
error-pattern-no-match=Invalid value.
error-invalid-uri=Invalid URL.
error-invalid-uri-scheme=Invalid URL scheme.
error-invalid-uri-fragment=Invalid URL fragment.
error-user-attribute-required=Please specify this field.
error-invalid-date=Invalid date.
error-user-attribute-read-only=This field is read only.
error-username-invalid-character=Value contains invalid character.
error-person-name-invalid-character=Value contains invalid character.
error-reset-otp-missing-id=Please choose an OTP configuration.
invalidPasswordExistingMessage=Invalid existing password.
invalidPasswordBlacklistedMessage=Invalid password\: password is blacklisted.
invalidPasswordConfirmMessage=Password confirmation doesn''t match.
invalidTotpMessage=Invalid authenticator code.
usernameExistsMessage=Username already exists.
emailExistsMessage=Email already exists.
federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account.
federatedIdentityUnavailableMessage=User {0} authenticated with identity provider {1} does not exist. Please contact your administrator.
federatedIdentityUnmatchedEssentialClaimMessage=The ID token issued by the identity provider does not match the configured essential claim. Please contact your administrator.
confirmLinkIdpTitle=Account already exists
confirmOverrideIdpTitle=Broker link already exists
federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?
federatedIdentityConfirmOverrideMessage=You are trying to link your account {0} with the {1} account {2}. But your account is already linked with different {3} account {4}. Can you confirm if you want to replace the existing link with the new account?
federatedIdentityConfirmReauthenticateMessage=Authenticate to link your account with {0}
nestedFirstBrokerFlowMessage=The {0} user {1} is not linked to any known user.
confirmLinkIdpReviewProfile=Review profile
confirmLinkIdpContinue=Add to existing account
confirmOverrideIdpContinue=Yes, override link with current account
configureTotpMessage=You need to set up Mobile Authenticator to activate your account.
configureBackupCodesMessage=You need to set up Backup Codes to activate your account.
updateProfileMessage=You need to update your user profile to activate your account.
updatePasswordMessage=You need to change your password to activate your account.
updateEmailMessage=You need to update your email address to activate your account.
resetPasswordMessage=You need to change your password.
verifyEmailMessage=You need to verify your email address to activate your account.
linkIdpMessage=You need to verify your email address to link your account with {0}.
emailSentMessage=You should receive an email shortly with further instructions.
emailSendErrorMessage=Failed to send email, please try again later.
accountUpdatedMessage=Your account has been updated.
accountPasswordUpdatedMessage=Your password has been updated.
delegationCompleteHeader=Login Successful
delegationCompleteMessage=You may close this browser window and go back to your console application.
delegationFailedHeader=Login Failed
delegationFailedMessage=You may close this browser window and go back to your console application and try logging in again.
noAccessMessage=No access
invalidPasswordMinLengthMessage=Invalid password\: minimum length {0}.
invalidPasswordMaxLengthMessage=Invalid password\: maximum length {0}.
invalidPasswordMinDigitsMessage=Invalid password\: must contain at least {0} numerical digits.
invalidPasswordMinLowerCaseCharsMessage=Invalid password\: must contain at least {0} lower case characters.
invalidPasswordMinUpperCaseCharsMessage=Invalid password\: must contain at least {0} upper case characters.
invalidPasswordMinSpecialCharsMessage=Invalid password\: must contain at least {0} special characters.
invalidPasswordNotUsernameMessage=Invalid password\: must not be equal to the username.
invalidPasswordNotContainsUsernameMessage=Invalid password\: Can not contain the username.
invalidPasswordNotEmailMessage=Invalid password\: must not be equal to the email.
invalidPasswordRegexPatternMessage=Invalid password\: fails to match regex pattern(s).
invalidPasswordHistoryMessage=Invalid password\: must not be equal to any of last {0} passwords.
invalidPasswordGenericMessage=Invalid password\: new password doesn''t match password policies.
failedToProcessResponseMessage=Failed to process response
httpsRequiredMessage=HTTPS required
realmNotEnabledMessage=Realm not enabled
invalidRequestMessage=Invalid Request
successLogout=You are logged out
failedLogout=Logout failed
unknownLoginRequesterMessage=Unknown login requester
loginRequesterNotEnabledMessage=Login requester not enabled
bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login
standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
invalidRedirectUriMessage=Invalid redirect uri
unsupportedNameIdFormatMessage=Unsupported NameIDFormat
invalidRequesterMessage=Invalid requester
registrationNotAllowedMessage=Registration not allowed
resetCredentialNotAllowedMessage=Reset Credential not allowed
permissionNotApprovedMessage=Permission not approved.
noRelayStateInResponseMessage=No relay state in response from identity provider.
insufficientPermissionMessage=Insufficient permissions to link identities.
couldNotProceedWithAuthenticationRequestMessage=Could not proceed with authentication request to identity provider.
couldNotObtainTokenMessage=Could not obtain token from identity provider.
unexpectedErrorRetrievingTokenMessage=Unexpected error when retrieving token from identity provider.
unexpectedErrorHandlingResponseMessage=Unexpected error when handling response from identity provider.
identityProviderAuthenticationFailedMessage=Authentication failed. Could not authenticate with identity provider.
couldNotSendAuthenticationRequestMessage=Could not send authentication request to identity provider.
unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider.
invalidAccessCodeMessage=Invalid access code.
sessionNotActiveMessage=Session not active.
invalidCodeMessage=An error occurred, please login again through your application.
cookieNotFoundMessage=Cookie not found. Please make sure cookies are enabled in your browser.
insufficientLevelOfAuthentication=The requested level of authentication has not been satisfied.
identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider
identityProviderMissingStateMessage=Missing state parameter in response from identity provider.
identityProviderMissingCodeOrErrorMessage=Missing code or error parameter in response from identity provider.
identityProviderInvalidResponseMessage=Invalid response from identity provider.
identityProviderInvalidSignatureMessage=Invalid signature in response from identity provider.
identityProviderNotFoundMessage=Could not find an identity provider with the identifier.
identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login.
staleCodeMessage=This page is no longer valid, please go back to your application and sign in again
realmSupportsNoCredentialsMessage=Realm does not support any credential type.
credentialSetupRequired=Cannot login, credential setup required.
identityProviderNotUniqueMessage=Realm supports multiple identity providers. Could not determine which identity provider should be used to authenticate with.
emailVerifiedMessage=Your email address has been verified.
emailVerifiedAlreadyMessage=Your email address has been verified already.
staleEmailVerificationLink=The link you clicked is an old stale link and is no longer valid. Maybe you have already verified your email.
identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
confirmAccountLinking=Confirm linking the account {0} of identity provider {1} with your account.
confirmEmailAddressVerification=Confirm validity of e-mail address {0}.
confirmExecutionOfActions=Perform the following action(s)
backToApplication=&laquo; Back to Application
missingParameterMessage=Missing parameters\: {0}
clientNotFoundMessage=Client not found.
clientDisabledMessage=Client disabled.
invalidParameterMessage=Invalid parameter\: {0}
alreadyLoggedIn=You are already logged in.
differentUserAuthenticated=You are already authenticated as different user ''{0}'' in this session. Please sign out first.
brokerLinkingSessionExpired=Requested broker account linking, but current session is no longer valid.
proceedWithAction=&raquo; Click here to proceed
acrNotFulfilled=Authentication requirements not fulfilled
requiredAction.CONFIGURE_TOTP=Configure OTP
requiredAction.TERMS_AND_CONDITIONS=Terms and Conditions
requiredAction.UPDATE_PASSWORD=Update Password
requiredAction.UPDATE_PROFILE=Update Profile
requiredAction.VERIFY_EMAIL=Verify Email
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
requiredAction.webauthn-register-passwordless=Webauthn Register Passwordless
invalidTokenRequiredActions=Required actions included in the link are not valid
doX509Login=You will be logged in as\:
clientCertificate=X509 client certificate\:
noCertificate=[No Certificate]
pageNotFound=Page not found
internalServerError=An internal server error has occurred
console-username=Username\:
console-password=Password\:
console-otp=One Time Password\:
console-new-password=New Password\:
console-confirm-password=Confirm Password\:
console-update-password=Update of your password is required.
console-verify-email=You need to verify your email address. We sent an email to {0} that contains a verification code. Please enter this code into the input below.
console-email-code=Email Code\:
console-accept-terms=Accept Terms? [y/n]\:
console-accept=y
openshift.scope.user_info=User information
openshift.scope.user_check-access=User access information
openshift.scope.user_full=Full Access
openshift.scope.list-projects=List projects
saml.post-form.title=Authentication Redirect
saml.post-form.message=Redirecting, please wait.
saml.post-form.js-disabled=JavaScript is disabled. We strongly recommend to enable it. Click the button below to continue.
saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
otp-display-name=Authenticator Application
otp-help-text=Enter a verification code from authenticator application.
otp-reset-description=Which OTP configuration should be removed?
password-display-name=Password
password-help-text=Sign in by entering your password.
auth-username-form-display-name=Username
auth-username-form-help-text=Start sign in by entering your username
auth-username-password-form-display-name=Username and password
auth-username-password-form-help-text=Sign in by entering your username and password.
auth-x509-client-username-form-display-name=X509 Certificate
auth-x509-client-username-form-help-text=Sign in with an X509 client certificate.
auth-recovery-authn-code-form-display-name=Recovery Authentication Code
auth-recovery-authn-code-form-help-text=Enter a recovery authentication code from a previously generated list.
auth-recovery-code-info-message=Enter the specified recovery code.
auth-recovery-code-prompt=Recovery code \#{0}
auth-recovery-code-header=Login with a recovery authentication code
recovery-codes-error-invalid=Invalid recovery authentication code
recovery-code-config-header=Recovery Authentication Codes
recovery-code-config-warning-title=These recovery codes won''t appear again after leaving this page
recovery-code-config-warning-message=Make sure to print, download, or copy them to a password manager and keep them save. Canceling this setup will remove these recovery codes from your account.
recovery-codes-print=Print
recovery-codes-download=Download
recovery-codes-copy=Copy
recovery-codes-copied=Copied
recovery-codes-confirmation-message=I have saved these codes somewhere safe
recovery-codes-action-complete=Complete setup
recovery-codes-action-cancel=Cancel setup
recovery-codes-download-file-header=Keep these recovery codes somewhere safe.
recovery-codes-download-file-description=Recovery codes are single-use passcodes that allow you to sign in to your account if you do not have access to your authenticator.
recovery-codes-download-file-date=These codes were generated on
recovery-codes-label-default=Recovery codes
webauthn-display-name=Passkey
webauthn-help-text=Use your Passkey to sign in.
webauthn-passwordless-display-name=Passkey
webauthn-passwordless-help-text=Use your Passkey for passwordless sign in.
webauthn-login-title=Passkey login
webauthn-registration-title=Passkey Registration
webauthn-available-authenticators=Available Passkeys
webauthn-unsupported-browser-text=WebAuthn is not supported by this browser. Try another one or contact your administrator.
webauthn-doAuthenticate=Sign in with Passkey
webauthn-createdAt-label=Created
webauthn-registration-init-label=Passkey (Default Label)
webauthn-registration-init-label-prompt=Please input your registered passkey''s label
webauthn-error-title=Passkey Error
webauthn-error-registration=Failed to register your Passkey.<br/> {0}
webauthn-error-api-get=Failed to authenticate by the Passkey.<br/> {0}
webauthn-error-different-user=First authenticated user is not the one authenticated by the Passkey.
webauthn-error-auth-verification=Passkey authentication result is invalid.<br/> {0}
webauthn-error-register-verification=Passkey registration result is invalid.<br/> {0}
webauthn-error-user-not-found=Unknown user authenticated by the Passkey.
passkey-login-title=Passkey login
passkey-available-authenticators=Available Passkeys
passkey-unsupported-browser-text=Passkey is not supported by this browser. Try another one or contact your administrator.
passkey-doAuthenticate=Sign in with Passkey
passkey-createdAt-label=Created
passkey-autofill-select=Select your passkey
identity-provider-redirector=Connect with another Identity Provider
identity-provider-login-label=Or sign in with
idp-email-verification-display-name=Email Verification
idp-email-verification-help-text=Link your account by validating your email.
idp-username-password-form-display-name=Username and password
idp-username-password-form-help-text=Link your account by logging in.
finalDeletionConfirmation=If you delete your account, it cannot be restored. To keep your account, click Cancel.
irreversibleAction=This action is irreversible
deleteAccountConfirm=Delete account confirmation
deletingImplies=Deleting your account implies\:
errasingData=Erasing all your data
loggingOutImmediately=Logging you out immediately
accountUnusable=Any subsequent use of the application will not be possible with this account
userDeletedSuccessfully=User deleted successfully
access-denied=Access denied
access-denied-when-idp-auth=Access denied when authenticating with {0}
frontchannel-logout.title=Logging out
frontchannel-logout.message=You are logging out from following apps
logoutConfirmTitle=Logging out
logoutConfirmHeader=Do you want to log out?
doLogout=Logout
readOnlyUsernameMessage=You can''t update your username as it is read-only.
error-invalid-multivalued-size=Attribute {0} must have at least {1} and at most {2} value(s).
organization.confirm-membership.title=You are about to join organization ${kc.org.name}
organization.confirm-membership=By clicking on the link below, you will become a member of the {0} organization\:
organization.member.register.title=Create an account to join the ${kc.org.name} organization
shouldBeEqual={0} should be equal to {1}
shouldBeDifferent={0} should be different to {1}
shouldMatchPattern=Pattern should match\: `/{0}/`
mustBeAnInteger=Must be an integer
notAValidOption=Not a valid option
selectAnOption=Select an option
remove=Remove
addValue=Add value
languages=Languages

View File

@ -0,0 +1,450 @@
doLogIn=Iniciar sesi\u00f3n
doRegister=Reg\u00edstrate
doRegisterSecurityKey=Reg\u00edstrate
doCancel=Cancelar
doSubmit=Enviar
doYes=S\u00ed
doNo=No
doContinue=Continuar
doAccept=Aceptar
doDecline=Declinar
doForgotPassword=\u00bfHas olvidado tu contrase\u00f1a?
doClickHere=Haz clic aqu\u00ed
doImpersonate=Personificar
kerberosNotConfigured=Kerberos no configurado
kerberosNotConfiguredTitle=Kerberos no configurado
bypassKerberosDetail=O bien no est\u00e1s identificado mediante Kerberos o tu navegador no est\u00e1 configurado para identificarse mediante Kerberos. Por favor haz clic para identificarte por otro medio.
kerberosNotSetUp=Kerberos no est\u00e1 configurado. No puedes identificarte.
registerWithTitle=Reg\u00edstrate con {0}
registerWithTitleHtml={0}
loginAccountTitle=Acceder a tu cuenta
loginTitle=Inicia sesi\u00f3n en {0}
loginTitleHtml={0}
impersonateTitle={0}\u00a0Personificar Usuario
impersonateTitleHtml=<strong>{0}</strong> Personificar Usuario
realmChoice=Dominio
unknownUser=Usuario desconocido
loginTotpTitle=Configura tu aplicaci\u00f3n de identificaci\u00f3n m\u00f3vil
loginProfileTitle=Actualiza la informaci\u00f3n de tu cuenta
loginTimeout=Has tardado demasiado en identificarte. Inicia de nuevo la identificaci\u00f3n.
oauthGrantTitle=Concesi\u00f3n OAuth
oauthGrantTitleHtml={0}
errorTitle=Lo sentimos...
errorTitleHtml=Lo <strong>sentimos</strong>...
emailVerifyTitle=Verificaci\u00f3n del email
emailForgotTitle=\u00bfHas olvidado tu contrase\u00f1a?
updatePasswordTitle=Modificaci\u00f3n de contrase\u00f1a
codeSuccessTitle=C\u00f3digo de \u00e9xito
codeErrorTitle=C\u00f3digo de error\: {0}
termsTitle=T\u00e9rminos y Condiciones
termsTitleHtml=T\u00e9rminos y Condiciones
termsText=
recaptchaFailed=Reconocimiento de texto inv\u00e1lido
recaptchaNotConfigured=El reconocimiento de texto es obligatorio pero no est\u00e1 configurado
consentDenied=Consentimiento rechazado.
noAccount=\u00bfUsuario nuevo?
username=Usuario
usernameOrEmail=Usuario o email
firstName=Nombre
givenName=Nombre de pila
fullName=Nombre completo
lastName=Apellidos
familyName=Apellidos
email=Email
password=Contrase\u00f1a
passwordConfirm=Confirma la contrase\u00f1a
passwordNew=Nueva contrase\u00f1a
passwordNewConfirm=Confirma la nueva contrase\u00f1a
rememberMe=Seguir conectado
authenticatorCode=C\u00f3digo de identificaci\u00f3n
address=Direcci\u00f3n
street=Calle
locality=Ciudad o Municipio
region=Estado, Provincia, o Regi\u00f3n
postal_code=C\u00f3digo Postal
country=Pa\u00eds
emailVerified=Email verificado
gssDelegationCredential=GSS Delegation Credential
loginTotpIntro=Es necesario configurar un generador de claves de un s\u00f3lo uso para acceder a esta cuenta
loginTotpStep1=Instala <a href\="https\://freeotp.github.io/" target\="_blank">FreeOTP</a> o Google Authenticator en tu tel\u00e9fono m\u00f3vil. Ambas aplicaciones est\u00e1n disponibles en <a href\="https\://play.google.com">Google Play</a> y en la App Store de Apple.
loginTotpStep2=Abre la aplicaci\u00f3n y escanea el c\u00f3digo o introduce la clave.
loginTotpStep3=Introduce el c\u00f3digo \u00fanico que te muestra la aplicaci\u00f3n de autenticaci\u00f3n y haz clic en Enviar para finalizar la configuraci\u00f3n
loginTotpStep3DeviceName=Introduce un nombre de dispositivo para que te ayude a gestionar tus dispositivos OTP.
loginTotpManualStep2=Abre la aplicaci\u00f3n e introduce la clave\:
loginTotpManualStep3=Usa los siguientes par\u00e1metros de configuraci\u00f3n si la aplicaci\u00f3n te permite introducirlos\:
loginTotpUnableToScan=\u00bfNo consigues escanear?
loginTotpScanBarcode=\u00bfEscanear el c\u00f3digo de barras?
loginCredential=Credenciales
loginOtpOneTime=C\u00f3digo de un solo uso
loginTotpType=Tipo
loginTotpAlgorithm=Algoritmo
loginTotpDigits=D\u00edgitos
loginTotpInterval=Intervalo
loginTotpCounter=Contador
loginTotpDeviceName=Nombre del dispositivo
oauthGrantRequest=\u00bfQuieres permitir estos privilegios de acceso?
inResource=en
emailVerifyInstruction1=Te hemos enviado un email con instrucciones para verificar tu email.
emailVerifyInstruction2=\u00bfNo has recibido un c\u00f3digo de verificaci\u00f3n en tu email?
emailVerifyInstruction3=para reenviar el email.
backToLogin=&laquo; Volver a la identificaci\u00f3n
emailInstruction=Indica tu usuario o email y te enviaremos instrucciones indicando c\u00f3mo generar una nueva contrase\u00f1a.
copyCodeInstruction=Por favor, copia y pega este c\u00f3digo en tu aplicaci\u00f3n\:
personalInfo=Informaci\u00f3n personal\:
role_admin=Admin
role_realm-admin=Administrador del dominio
role_create-realm=Crear dominio
role_create-client=Crear cliente
role_view-realm=Ver dominio
role_view-users=Ver usuarios
role_view-applications=Ver aplicaciones
role_view-clients=Ver clientes
role_view-events=Ver eventos
role_view-identity-providers=Ver proveedores de identidad
role_manage-realm=Gestionar dominio
role_manage-users=Gestionar usuarios
role_manage-applications=Gestionar aplicaciones
role_manage-identity-providers=Gestionar proveedores de identidad
role_manage-clients=Gestionar clientes
role_manage-events=Gestionar eventos
role_view-profile=Ver perfil
role_manage-account=Gestionar cuenta
role_read-token=Leer token
role_offline-access=Acceso sin conexi\u00f3n
client_account=Cuenta
client_security-admin-console=Consola de Administraci\u00f3n de Seguridad
client_realm-management=Gesti\u00f3n del dominio
client_broker=Broker
invalidUserMessage=Usuario o contrase\u00f1a incorrectos.
invalidEmailMessage=Email no v\u00e1lido
accountDisabledMessage=La cuenta est\u00e1 desactivada, contacta con el administrador.
accountTemporarilyDisabledMessage=La cuenta est\u00e1 temporalmente desactivada, contacta con el administrador o int\u00e9ntalo de nuevo m\u00e1s tarde.
expiredCodeMessage=Se agot\u00f3 el tiempo m\u00e1ximo para la identificaci\u00f3n. Por favor identificate de nuevo.
expiredActionMessage=Acci\u00f3n caducada. Contin\u00fae con el inicio de sesi\u00f3n ahora.
sessionLimitExceeded=Hay demasiadas sesiones.
missingFirstNameMessage=Por favor indica tu nombre.
missingLastNameMessage=Por favor indica tus apellidos.
missingEmailMessage=Por favor indica tu email.
missingUsernameMessage=Por favor indica tu usuario.
missingPasswordMessage=Por favor indica tu contrase\u00f1a.
missingTotpMessage=Por favor indica tu c\u00f3digo de autenticaci\u00f3n
notMatchPasswordMessage=Las contrase\u00f1as no coinciden.
invalidPasswordExistingMessage=La contrase\u00f1a actual no es correcta.
invalidPasswordBlacklistedMessage=Contrase\u00f1a no v\u00e1lida\: la contrase\u00f1a est\u00e1 en la lista negra.
invalidPasswordConfirmMessage=La confirmaci\u00f3n de contrase\u00f1a no coincide.
invalidTotpMessage=El c\u00f3digo de autenticaci\u00f3n no es v\u00e1lido.
usernameExistsMessage=El nombre de usuario ya existe
emailExistsMessage=El email ya existe
federatedIdentityEmailExistsMessage=Ya existe un usuario con este email. Por favor accede a la gesti\u00f3n de tu cuenta para enlazarlo.
federatedIdentityUsernameExistsMessage=Ya existe un usuario con este nombre de usuario. Por favor accede a la gesti\u00f3n de tu cuenta para enlazarlo.
federatedIdentityExistsMessage=El usuario con {0} {1} ya existe. Inicie sesi\u00f3n en la administraci\u00f3n de cuentas para vincular la cuenta.
federatedIdentityUnavailableMessage=El usuario {0} autenticado con el proveedor de identidad {1} no existe. P\u00f3ngase en contacto con su administrador.
configureTotpMessage=Tienes que configurar la aplicaci\u00f3n m\u00f3vil de identificaci\u00f3n para activar tu cuenta.
configureBackupCodesMessage=Tienes que configurar c\u00f3digos de respaldo para activar su cuenta.
updateProfileMessage=Tienes que actualizar tu perfil de usuario para activar tu cuenta.
updatePasswordMessage=Tienes que cambiar tu contrase\u00f1a para activar tu cuenta.
updateEmailMessage=Tienes que actualizar su direcci\u00f3n de correo electr\u00f3nico para activar su cuenta.
resetPasswordMessage=Tienes que cambiar tu contrase\u00f1a.
verifyEmailMessage=Tienes que verificar tu email para activar tu cuenta.
linkIdpMessage=Debe verificar su direcci\u00f3n de correo electr\u00f3nico para vincular su cuenta con {0}.
emailSentMessage=En breve deber\u00edas recibir un mensaje con m\u00e1s instrucciones
emailSendErrorMessage=Fall\u00f3 el env\u00edo del email, por favor int\u00e9ntalo de nuevo m\u00e1s tarde.
accountUpdatedMessage=Tu cuenta se ha actualizado.
accountPasswordUpdatedMessage=Tu contrase\u00f1a se ha actualizado.
noAccessMessage=Sin acceso
invalidPasswordMinLengthMessage=Contrase\u00f1a incorrecta\: longitud m\u00ednima {0}.
invalidPasswordMinDigitsMessage=Contrase\u00f1a incorrecta\: debe contaner al menos {0} caracteres num\u00e9ricos.
invalidPasswordMinLowerCaseCharsMessage=Contrase\u00f1a incorrecta\: debe contener al menos {0} letras min\u00fasculas.
invalidPasswordMinUpperCaseCharsMessage=Contrase\u00f1a incorrecta\: debe contener al menos {0} letras may\u00fasculas.
invalidPasswordMinSpecialCharsMessage=Contrase\u00f1a incorrecta\: debe contener al menos {0} caracteres especiales.
invalidPasswordNotUsernameMessage=Contrase\u00f1a incorrecta\: no puede ser igual al nombre de usuario.
invalidPasswordRegexPatternMessage=Contrase\u00f1a incorrecta\: no cumple la expresi\u00f3n regular.
invalidPasswordHistoryMessage=Contrase\u00f1a incorrecta\: no puede ser igual a ninguna de las \u00faltimas {0} contrase\u00f1as.
failedToProcessResponseMessage=Fallo al procesar la respuesta
httpsRequiredMessage=HTTPS obligatorio
realmNotEnabledMessage=El dominio no est\u00e1 activado
invalidRequestMessage=Petici\u00f3n incorrecta
failedLogout=Fall\u00f3 la desconexi\u00f3n.
unknownLoginRequesterMessage=Solicitante de identificaci\u00f3n desconocido
loginRequesterNotEnabledMessage=El solicitante de inicio de sesi\u00f3n est\u00e1 desactivado
bearerOnlyMessage=Las aplicaciones Bearer-only no pueden iniciar sesi\u00f3n desde el navegador.
directGrantsOnlyMessage=Los clientes de tipo Direct-grants-only no pueden iniciar sesi\u00f3n desde el navegador.
invalidRedirectUriMessage=La URI de redirecci\u00f3n no es correcta
unsupportedNameIdFormatMessage=NameIDFormat no soportado
invalidRequesterMessage=Solicitante no v\u00e1lido
registrationNotAllowedMessage=El registro no est\u00e1 permitido
resetCredentialNotAllowedMessage=El reinicio de las credenciales no est\u00e1 permitido
permissionNotApprovedMessage=Permiso no aprobado.
noRelayStateInResponseMessage=Sin estado de retransmisi\u00f3n en la respuesta del proveedor de identidad.
identityProviderAlreadyLinkedMessage=La identidad devuelta por el proveedor de identidad ya est\u00e1 asociada a otro usuario.
insufficientPermissionMessage=Permisos insuficientes para enlazar identidades.
couldNotProceedWithAuthenticationRequestMessage=No se pudo continuar con la petici\u00f3n de autenticaci\u00f3n al proveedor de identidad.
couldNotObtainTokenMessage=.No se pudo obtener el c\u00f3digo del proveedor de identidad
unexpectedErrorRetrievingTokenMessage=Error inesperado obteniendo el token del proveedor de identidad
unexpectedErrorHandlingResponseMessage=Error inesperado procesando la respuesta del proveedor de identidad.
identityProviderAuthenticationFailedMessage=Fall\u00f3 la autenticaci\u00f3n. No fue posible autenticarse en el proveedor de identidad.
couldNotSendAuthenticationRequestMessage=No se pudo enviar la petici\u00f3n de identificaci\u00f3n al proveedor de identidad.
unexpectedErrorHandlingRequestMessage=Error inesperado durante la petici\u00f3n de identificaci\u00f3n al proveedor de identidad.
invalidAccessCodeMessage=C\u00f3digo de acceso no v\u00e1lido.
sessionNotActiveMessage=La sesi\u00f3n no est\u00e1 activa
invalidCodeMessage=Ha ocurrido un error, por favor identificate de nuevo desde tu aplicaci\u00f3n.
identityProviderUnexpectedErrorMessage=Error no esperado intentado autenticar en el proveedor de identidad.
identityProviderNotFoundMessage=No se encontr\u00f3 un proveedor de identidad.
realmSupportsNoCredentialsMessage=El dominio no soporta ning\u00fan tipo de credenciales.
identityProviderNotUniqueMessage=El dominio soporta m\u00faltiples proveedores de identidad. No se pudo determinar el proveedor de identidad que deber\u00eda ser utilizado para identificarse.
emailVerifiedMessage=Tu email ha sido verificado.
staleEmailVerificationLink=El enlace en el que hizo clic es un enlace obsoleto antiguo y ya no es v\u00e1lido. Tal vez ya hayas verificado tu correo electr\u00f3nico.
identityProviderInvalidResponseMessage=Respuesta no v\u00e1lida del proveedor de identidad.
confirmAccountLinking=Confirme la vinculaci\u00f3n de la cuenta {0} del proveedor de identidad {1} con su cuenta.
identityProviderMissingStateMessage=Falta el par\u00e1metro de estado en respuesta del proveedor de identidad.
confirmEmailAddressVerification=Confirme la validez de la direcci\u00f3n de correo electr\u00f3nico {0}.
confirmExecutionOfActions=Realice las siguientes acciones
backToApplication=&laquo; Volver a la aplicaci\u00f3n
missingParameterMessage=Par\u00e1metros que faltan\: {0}
clientNotFoundMessage=Cliente no encontrado
invalidParameterMessage=Par\u00e1metro no v\u00e1lido\: {0}
alreadyLoggedIn=Ya se ha autentificado.
proceedWithAction=\u00bb Haz click aqu\u00ed para proceder
requiredAction.CONFIGURE_TOTP=Configurar OTP
requiredAction.TERMS_AND_CONDITIONS=T\u00e9rminos y condiciones
requiredAction.UPDATE_PASSWORD=Actualizaci\u00f3n de contrase\u00f1a
requiredAction.UPDATE_PROFILE=Actualizaci\u00f3n del perfil
requiredAction.VERIFY_EMAIL=Verificar correo electr\u00f3nico
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generar c\u00f3digos de recuperaci\u00f3n
requiredAction.webauthn-register-passwordless=Webauthn Registro sin contrase\u00f1a
pageNotFound=P\u00e1gina no encontrada
internalServerError=Se ha producido un error interno del servidor.
identity-provider-redirector=Inicie sesi\u00f3n con otro proveedor de identidad
identity-provider-login-label=O inicie sesi\u00f3n con
idp-email-verification-display-name=Verificacion de email
idp-email-verification-help-text=Vincule su cuenta validando su correo electr\u00f3nico.
idp-username-password-form-display-name=Usuario y contrase\u00f1a
idp-username-password-form-help-text=Vincule su cuenta iniciando sesi\u00f3n.
access-denied=Acceso denegado
logoutConfirmTitle=Cerrando sesi\u00f3n
logoutConfirmHeader=\u00bfQuieres cerrar sesi\u00f3n?
doLogout=Cerrar sesi\u00f3n
doBack=Atr\u00e1s
doIgnore=Ignorar
doTryAgain=Intentar otra vez
doTryAnotherWay=Prueba de otra manera
doConfirmDelete=Confirmar la eliminaci\u00f3n
errorDeletingAccount=Ocurri\u00f3 un error al intentar eliminar la cuenta
deletingAccountForbidden=No tiene suficientes permisos para eliminar su propia cuenta, comun\u00edquese con un administrador.
registerTitle=Registro
loginIdpReviewProfileTitle=Actualizar informaci\u00f3n de la cuenta
reauthenticate=Vuelva a autenticar para continuar
oauthGrantInformation=Aseg\u00farese de que conf\u00eda en {0} aprendiendo c\u00f3mo {0} manejar\u00e1 sus datos.
oauthGrantReview=Podr\u00edas revisar el
oauthGrantTos=t\u00e9rminos de servicio.
oauthGrantPolicy=pol\u00edtica de privacidad.
updateEmailTitle=Actualizar correo electr\u00f3nico
emailUpdateConfirmationSentTitle=Correo de confirmaci\u00f3n enviado
emailUpdateConfirmationSent=Se ha enviado un correo electr\u00f3nico de confirmaci\u00f3n a {0}. Debe seguir las instrucciones de este para completar la actualizaci\u00f3n del correo electr\u00f3nico.
emailUpdatedTitle=Correo electr\u00f3nico actualizado
emailUpdated=El correo electr\u00f3nico de la cuenta se ha actualizado correctamente a {0}.
displayUnsupported=Tipo de visualizaci\u00f3n solicitado no soportado
browserRequired=El navegador requerido para iniciar sesi\u00f3n
browserContinue=El navegador requerido para completar el inicio de sesi\u00f3n
browserContinuePrompt=\u00bfAbrir el navegador y continuar iniciando sesi\u00f3n?[y/n]\:
browserContinueAnswer=Y
usb=usb
nfc=nfc
bluetooth=bluetooth
internal=Interna
unknown=Desconocida
termsPlainText=T\u00e9rminos y condiciones a definir.
termsAcceptanceRequired=Debe aceptar nuestros t\u00e9rminos y condiciones.
acceptTerms=Estoy de acuerdo con los t\u00e9rminos y condiciones
hidePassword=Ocultar contrase\u00f1a
showPassword=Mostrar contrase\u00f1a
website=P\u00e1gina web
phoneNumber=N\u00famero de tel\u00e9fono
phoneNumberVerified=N\u00famero de tel\u00e9fono verificado
gender=G\u00e9nero
birthday=Fecha de nacimiento
zoneinfo=Zona horaria
logoutOtherSessions=Cerrar sesi\u00f3n en otros dispositivos
profileScopeConsentText=Perfil del usuario
emailScopeConsentText=Direcci\u00f3n de correo electr\u00f3nico
addressScopeConsentText=Direcci\u00f3n
phoneScopeConsentText=N\u00famero de tel\u00e9fono
offlineAccessScopeConsentText=Acceso fuera de l\u00ednea
samlRoleListScopeConsentText=Mis roles
rolesScopeConsentText=Roles del usuario
restartLoginTooltip=Reiniciar el inicio de sesi\u00f3n
loginTotp.totp=Basado en el tiempo
loginTotp.hotp=Basado en contador
totpAppFreeOTPName=FreeOtp
totpAppGoogleName=Autenticador de Google
totpAppMicrosoftAuthenticatorName=Autenticador de Microsoft
loginChooseAuthenticator=Seleccione el m\u00e9todo de inicio de sesi\u00f3n
oauth2DeviceVerificationTitle=Inicio de sesi\u00f3n del dispositivo
verifyOAuth2DeviceUserCode=Ingrese el c\u00f3digo proporcionado por su dispositivo y haga clic en Enviar
oauth2DeviceInvalidUserCodeMessage=C\u00f3digo no v\u00e1lido, por favor vuelva a intentarlo.
oauth2DeviceExpiredUserCodeMessage=El c\u00f3digo ha expirado. Vuelva a su dispositivo e intente conectarse nuevamente.
oauth2DeviceVerificationCompleteHeader=Inicio de sesi\u00f3n del dispositivo exitoso
oauth2DeviceVerificationCompleteMessage=Puede cerrar esta ventana del navegador y volver a su dispositivo.
oauth2DeviceVerificationFailedHeader=Fall\u00f3 el inicio de sesi\u00f3n del dispositivo
oauth2DeviceVerificationFailedMessage=Puede cerrar esta ventana del navegador y volver a su dispositivo e intentar conectarse nuevamente.
oauth2DeviceConsentDeniedMessage=Consentimiento denegado por conectar el dispositivo.
oauth2DeviceAuthorizationGrantDisabledMessage=El cliente no puede iniciar la petici\u00f3n de autorizaci\u00f3n del dispositivo OAuth 2.0. El flujo est\u00e1 deshabilitado para el cliente.
emailLinkIdpTitle=Enlace {0}
emailLinkIdp1=Se le ha enviado un correo electr\u00f3nico con instrucciones para vincular {0} cuenta {1} con su cuenta {2}.
emailLinkIdp2=\u00bfNo ha recibido un c\u00f3digo de verificaci\u00f3n en su correo electr\u00f3nico?
emailLinkIdp3=Para volver a enviar el correo electr\u00f3nico.
emailLinkIdp4=Si ya verific\u00f3 el correo electr\u00f3nico en diferentes navegadores
emailLinkIdp5=continuar.
emailInstructionUsername=Ingrese su nombre de usuario y le enviaremos instrucciones sobre c\u00f3mo crear una nueva contrase\u00f1a.
pageExpiredTitle=La p\u00e1gina ha expirado
pageExpiredMsg1=Para reiniciar el proceso de inicio de sesi\u00f3n
pageExpiredMsg2=Para continuar el proceso de inicio de sesi\u00f3n
role_manage-account-links=Administrar enlaces de cuenta
client_account-console=Consola de cuentas
client_admin-cli=Administrador cli
requiredFields=Campos requeridos
invalidUsernameMessage=Nombre de usuario no v\u00e1lido.
invalidUsernameOrEmailMessage=Nombre de usuario o correo electr\u00f3nico no v\u00e1lidos.
invalidPasswordMessage=Contrase\u00f1a inv\u00e1lida.
expiredActionTokenNoSessionMessage=Acci\u00f3n expirada.
expiredActionTokenSessionExistsMessage=Acci\u00f3n expirada. Comience de nuevo.
missingTotpDeviceNameMessage=Especifique el nombre del dispositivo.
error-invalid-value=Valor no v\u00e1lido.
error-invalid-blank=Especifique el valor.
error-empty=Especifique el valor.
error-invalid-length=La longitud debe estar entre {1} y {2}.
error-invalid-length-too-short=La longitud m\u00ednima es {1}.
error-invalid-length-too-long=La longitud m\u00e1xima es {2}.
error-invalid-email=Direcci\u00f3n de correo electr\u00f3nico no v\u00e1lida.
error-invalid-number=N\u00famero invalido.
error-number-out-of-range=El n\u00famero debe estar entre {1} y {2}.
error-number-out-of-range-too-small=El n\u00famero debe tener un valor m\u00ednimo de {1}.
error-number-out-of-range-too-big=El n\u00famero debe tener un valor m\u00e1ximo de {2}.
error-pattern-no-match=Valor no v\u00e1lido.
error-invalid-uri=URL invalida.
error-invalid-uri-scheme=Esquema de URL no v\u00e1lido.
error-invalid-uri-fragment=Fragmento de URL no v\u00e1lido.
error-user-attribute-required=Especifique este campo.
error-invalid-date=Fecha inv\u00e1lida.
error-user-attribute-read-only=Este campo es de solo lectura.
error-username-invalid-character=El valor contiene car\u00e1cter inv\u00e1lido.
error-person-name-invalid-character=El valor contiene car\u00e1cter inv\u00e1lido.
error-reset-otp-missing-id=Elija una configuraci\u00f3n OTP.
federatedIdentityUnmatchedEssentialClaimMessage=El token de identificaci\u00f3n emitido por el proveedor de identidad no coincide con el reclamo esencial configurado. P\u00f3ngase en contacto con su administrador.
confirmLinkIdpTitle=La cuenta ya existe
federatedIdentityConfirmLinkMessage=El usuario con {0} {1} ya existe.\u00bfC\u00f3mo quieres continuar?
federatedIdentityConfirmReauthenticateMessage=Autenticar para vincular su cuenta con {0}
nestedFirstBrokerFlowMessage=El usuario {0} {1} no est\u00e1 vinculado a ning\u00fan usuario conocido.
confirmLinkIdpReviewProfile=Perfil de revisi\u00f3n
confirmLinkIdpContinue=Agregar a la cuenta existente
delegationCompleteHeader=Inicio de sesi\u00f3n correcto
delegationCompleteMessage=Puede cerrar esta ventana del navegador y volver a la aplicaci\u00f3n de su consola.
delegationFailedHeader=Error de inicio de sesi\u00f3n
delegationFailedMessage=Puede cerrar esta ventana del navegador y volver a la aplicaci\u00f3n de su consola e intentar iniciar sesi\u00f3n nuevamente.
invalidPasswordMaxLengthMessage=Contrase\u00f1a no v\u00e1lida\: longitud m\u00e1xima {0}.
invalidPasswordNotEmailMessage=Contrase\u00f1a no v\u00e1lida\: no debe ser igual al correo electr\u00f3nico.
invalidPasswordGenericMessage=Contrase\u00f1a no v\u00e1lida\: la nueva contrase\u00f1a no coincide con las pol\u00edticas de contrase\u00f1a.
successLogout=Est\u00e1 desconectado
standardFlowDisabledMessage=El cliente no puede iniciar el inicio de sesi\u00f3n del navegador con el tipo de respuesta dado. El flujo est\u00e1ndar est\u00e1 deshabilitado para el cliente.
implicitFlowDisabledMessage=El cliente no puede iniciar el inicio de sesi\u00f3n del navegador con el tipo de respuesta dado. El flujo impl\u00edcito est\u00e1 deshabilitado para el cliente.
cookieNotFoundMessage=Cookie no encontrada. Aseg\u00farese de que las cookies est\u00e9n habilitadas en su navegador.
insufficientLevelOfAuthentication=El nivel de autenticaci\u00f3n solicitado no se ha cumplido.
identityProviderMissingCodeOrErrorMessage=C\u00f3digo faltante o par\u00e1metro de error en respuesta del proveedor de identidad.
identityProviderInvalidSignatureMessage=Firma no v\u00e1lida en respuesta del proveedor de identidad.
identityProviderLinkSuccess=Verific\u00f3 con \u00e9xito su correo electr\u00f3nico. Vuelva a su navegador original y contin\u00fae all\u00ed con el inicio de sesi\u00f3n.
staleCodeMessage=Esta p\u00e1gina ya no es v\u00e1lida, vuelva a su solicitud e inicie sesi\u00f3n nuevamente.
credentialSetupRequired=No se puede iniciar sesi\u00f3n, se requiere configuraci\u00f3n de credencial.
clientDisabledMessage=Cliente deshabilitado.
differentUserAuthenticated=Ya est\u00e1 autenticado como un usuario diferente ''{0}'' en esta sesi\u00f3n. Por favor cierre sesi\u00f3n primero.
brokerLinkingSessionExpired=Vinculaci\u00f3n de la cuenta del corredor solicitada, pero la sesi\u00f3n actual ya no es v\u00e1lida.
acrNotFulfilled=Requisitos de autenticaci\u00f3n no cumplidos
invalidTokenRequiredActions=Las acciones requeridas incluidas en el enlace no son v\u00e1lidas
doX509Login=Se registrar\u00e1 como\:
clientCertificate=Certificado de cliente X509\:
noCertificate=[Sin certificado]
console-username=Nombre de usuario\:
console-password=Contrase\u00f1a\:
console-otp=Contrase\u00f1a de una sola vez\:
console-new-password=Nueva contrase\u00f1a\:
console-confirm-password=Confirmar Contrase\u00f1a\:
console-update-password=Se requiere la actualizaci\u00f3n de su contrase\u00f1a.
console-verify-email=Debe verificar su direcci\u00f3n de correo electr\u00f3nico. Enviamos un correo electr\u00f3nico a {0} que contiene un c\u00f3digo de verificaci\u00f3n. Ingrese este c\u00f3digo en la entrada a continuaci\u00f3n.
console-email-code=C\u00f3digo de correo electr\u00f3nico\:
console-accept-terms=\u00bfAceptar los terminos?[y/n]\:
console-accept=Y
openshift.scope.user_info=Informacion del usuario
openshift.scope.user_check-access=Informaci\u00f3n de acceso de usuario
openshift.scope.user_full=Acceso completo
openshift.scope.list-projects=Listar proyectos
saml.post-form.title=Redirecci\u00f3n de autenticaci\u00f3n
saml.post-form.message=Redireccionando, por favor espere.
saml.post-form.js-disabled=JavaScript est\u00e1 deshabilitado. Recomendamos encarecidamente habilitarlo. Haga clic en el bot\u00f3n de abajo para continuar.
saml.artifactResolutionServiceInvalidResponse=Incapaz de resolver artefactos.
otp-display-name=Aplicaci\u00f3n de autenticador
otp-help-text=Ingrese un c\u00f3digo de verificaci\u00f3n de la aplicaci\u00f3n Authenticator.
otp-reset-description=\u00bfQu\u00e9 configuraci\u00f3n de OTP debe eliminarse?
password-display-name=Contrase\u00f1a
password-help-text=Inicie sesi\u00f3n ingresando su contrase\u00f1a.
auth-username-form-display-name=Nombre de usuario
auth-username-form-help-text=Comience el inicio de sesi\u00f3n ingresando su nombre de usuario
auth-username-password-form-display-name=Nombre de usuario y contrase\u00f1a
auth-username-password-form-help-text=Inicie sesi\u00f3n ingresando su nombre de usuario y contrase\u00f1a.
auth-recovery-authn-code-form-display-name=C\u00f3digo de autenticaci\u00f3n de recuperaci\u00f3n
auth-recovery-authn-code-form-help-text=Ingrese un c\u00f3digo de autenticaci\u00f3n de recuperaci\u00f3n desde una lista generada anteriormente.
auth-recovery-code-info-message=Ingrese el c\u00f3digo de recuperaci\u00f3n especificado.
auth-recovery-code-prompt=C\u00f3digo de recuperaci\u00f3n \#{0}
auth-recovery-code-header=Iniciar sesi\u00f3n con un c\u00f3digo de autenticaci\u00f3n de recuperaci\u00f3n
recovery-codes-error-invalid=C\u00f3digo de autenticaci\u00f3n de recuperaci\u00f3n no v\u00e1lida
recovery-code-config-header=C\u00f3digos de autenticaci\u00f3n de recuperaci\u00f3n
recovery-code-config-warning-title=Estos c\u00f3digos de recuperaci\u00f3n no aparecer\u00e1n nuevamente despu\u00e9s de dejar esta p\u00e1gina.
recovery-code-config-warning-message=Aseg\u00farese de imprimir, descargarlos o copiarlos a un administrador de contrase\u00f1as y mantenerlos seguros. Cancelar esta configuraci\u00f3n eliminar\u00e1 estos c\u00f3digos de recuperaci\u00f3n de su cuenta.
recovery-codes-print=Imprimir
recovery-codes-download=Descargar
recovery-codes-copy=Copiar
recovery-codes-copied=Copiada
recovery-codes-confirmation-message=He guardado estos c\u00f3digos en alg\u00fan lugar seguro
recovery-codes-action-complete=Configuraci\u00f3n completa
recovery-codes-action-cancel=Cancelar configuraci\u00f3n
recovery-codes-download-file-header=Mantenga estos c\u00f3digos de recuperaci\u00f3n en alg\u00fan lugar seguros.
recovery-codes-download-file-description=Los c\u00f3digos de recuperaci\u00f3n son c\u00f3digos de acceso de un solo uso que le permiten iniciar sesi\u00f3n en su cuenta si no tiene acceso a su autenticador.
recovery-codes-download-file-date=Estos c\u00f3digos se generaron en
recovery-codes-label-default=C\u00f3digos de recuperaci\u00f3n
webauthn-display-name=Clave de seguridad
webauthn-help-text=Use su clave de seguridad para iniciar sesi\u00f3n.
webauthn-passwordless-display-name=Clave de seguridad
webauthn-passwordless-help-text=Use su clave de seguridad para iniciar sesi\u00f3n sin contrase\u00f1a.
webauthn-login-title=Inicio de sesi\u00f3n de la clave de seguridad
webauthn-registration-title=Registro de clave de seguridad
webauthn-available-authenticators=Claves de seguridad disponibles
webauthn-unsupported-browser-text=WebAuthn no es compatible con este navegador. Pruebe con otro o comun\u00edquese con su administrador.
webauthn-doAuthenticate=Iniciar sesi\u00f3n con la clave de seguridad
webauthn-createdAt-label=Creada
webauthn-error-title=Error de clave de seguridad
webauthn-error-registration=No se pudo registrar su clave de seguridad. <br/> {0}
webauthn-error-api-get=No se pudo autenticar por la clave de seguridad. <br/> {0}
webauthn-error-different-user=El primer usuario autenticado no es el autenticado por la clave de seguridad.
webauthn-error-auth-verification=El resultado de la autenticaci\u00f3n de la clave de seguridad no es v\u00e1lido. <br/> {0}
webauthn-error-register-verification=El resultado de registro de clave de seguridad no es v\u00e1lido. <br/> {0}
webauthn-error-user-not-found=Usuario desconocido autenticado por la clave de seguridad.
finalDeletionConfirmation=Si elimina su cuenta, no se puede restaurar. Para mantener su cuenta, haga clic en Cancelar.
irreversibleAction=Esta acci\u00f3n es irreversible
deleteAccountConfirm=Eliminar la confirmaci\u00f3n de la cuenta
deletingImplies=Eliminar su cuenta implica\:
errasingData=Borrando todos sus datos
loggingOutImmediately=Registr\u00e1ndole inmediatamente
accountUnusable=Cualquier uso posterior de la aplicaci\u00f3n no ser\u00e1 posible con esta cuenta
userDeletedSuccessfully=Usuario eliminado con \u00e9xito
access-denied-when-idp-auth=Acceso negado al autenticar con {0}
frontchannel-logout.title=Saliendo de tu cuenta
frontchannel-logout.message=Est\u00e1s cerrando las siguientes aplicaciones
readOnlyUsernameMessage=No puede actualizar su nombre de usuario, ya que es de solo lectura.
shouldBeEqual={0} deber\u00eda ser igual a {1}
shouldBeDifferent={0} deber\u00eda ser diferente a {1}
shouldMatchPattern=El patr\u00f3n deber\u00eda coincidir\: `/{0}/`
mustBeAnInteger=Debe ser un n\u00famero entero
notAValidOption=No es una opci\u00f3n v\u00e1lida
selectAnOption=Selecciona una opci\u00f3n
remove=Eliminar
addValue=A\u00f1adir valor
languages=Idiomas

View File

@ -0,0 +1,436 @@
doLogIn=\u0648\u0631\u0648\u062f
doRegister=\u062b\u0628\u062a \u0646\u0627\u0645
doRegisterSecurityKey=\u062b\u0628\u062a \u0646\u0627\u0645
doCancel=\u0644\u063a\u0648
doSubmit=\u0627\u0631\u0633\u0627\u0644
doBack=\u0628\u0627\u0632\u06af\u0634\u062a
doYes=\u0628\u0644\u0647
doNo=\u062e\u06cc\u0631
doContinue=\u0627\u062f\u0627\u0645\u0647
doIgnore=\u0646\u0627\u062f\u06cc\u062f\u0647\u200c\u06af\u06cc\u0631\u06cc
doAccept=\u067e\u0630\u06cc\u0631\u0641\u062a\u0646
doDecline=\u0631\u062f \u06a9\u0631\u062f\u0646
doForgotPassword=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0641\u0631\u0627\u0645\u0648\u0634 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f?
doClickHere=\u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f
doImpersonate=\u062a\u0642\u0644\u06cc\u062f \u06a9\u0631\u062f\u0646
doTryAgain=\u062a\u0644\u0627\u0634 \u0645\u062c\u062f\u062f
doTryAnotherWay=\u0631\u0627\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f
doConfirmDelete=\u062a\u0627\u06cc\u06cc\u062f \u062d\u0630\u0641
errorDeletingAccount=\u062e\u0637\u0627\u06cc\u06cc \u0647\u0646\u06af\u0627\u0645 \u062d\u0630\u0641 \u062d\u0633\u0627\u0628 \u0631\u062e \u062f\u0627\u062f
deletingAccountForbidden=\u0634\u0645\u0627 \u0645\u062c\u0648\u0632 \u06a9\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0631\u0627 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0627 \u0627\u062f\u0645\u06cc\u0646 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f.
kerberosNotConfigured=Kerberos \u062a\u0646\u0638\u06cc\u0645 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a
kerberosNotConfiguredTitle=Kerberos \u062a\u0646\u0638\u06cc\u0645 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a
bypassKerberosDetail=\u06cc\u0627 \u062a\u0648\u0633\u0637 Kerberos \u0648\u0627\u0631\u062f \u0646\u0634\u062f\u0647 \u0627\u06cc\u062f \u06cc\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 Kerberos \u062a\u0646\u0638\u06cc\u0645 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0644\u0637\u0641\u0627 \u0631\u0648\u06cc \u0627\u062f\u0627\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0631\u0627\u0647 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
kerberosNotSetUp=Kerberos \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
registerTitle=\u062b\u0628\u062a \u0646\u0627\u0645
loginAccountTitle=\u0628\u0647 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
loginTitle=\u0628\u0647 {0} \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
loginTitleHtml={0}
impersonateTitle={0} \u062a\u0642\u0644\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631
impersonateTitleHtml=<strong>{0}</strong> \u062a\u0642\u0644\u06cc\u062f \u06a9\u0627\u0631\u0628\u0631
realmChoice=\u0642\u0644\u0645\u0631\u0648
unknownUser=\u06a9\u0627\u0631\u0628\u0631 \u0646\u0627\u0634\u0646\u0627\u0633
loginTotpTitle=\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u062f\u0633\u062a\u06af\u0627\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u0645\u0648\u0628\u0627\u06cc\u0644
loginProfileTitle=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0628
loginIdpReviewProfileTitle=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u0633\u0627\u0628
loginTimeout=\u0632\u0645\u0627\u0646 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0634\u0645\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f. \u0648\u0631\u0648\u062f \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0634\u0631\u0648\u0639 \u062e\u0648\u0627\u0647\u062f \u0634\u062f.
reauthenticate=\u0644\u0637\u0641\u0627\u064b \u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0646\u06cc\u062f
oauthGrantTitle=\u0627\u0639\u0637\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u0628\u0627 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a {0} \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0628\u0647 {0} \u0627\u0639\u062a\u0645\u0627\u062f \u062f\u0627\u0631\u06cc\u062f.
oauthGrantReview=\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f
oauthGrantTos=\u0634\u0631\u0627\u06cc\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062e\u062f\u0645\u0627\u062a.
oauthGrantPolicy=\u0633\u06cc\u0627\u0633\u062a \u062d\u0641\u0638 \u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc.
errorTitle=\u0645\u062a\u0627\u0633\u0641\u06cc\u0645...
errorTitleHtml=\u0645\u0627 <strong>\u0645\u062a\u0627\u0633\u0641\u06cc\u0645</strong>...
emailVerifyTitle=\u062a\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0645\u06cc\u0644
emailForgotTitle=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u0641\u0631\u0627\u0645\u0648\u0634 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u061f
updateEmailTitle=\u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f
emailUpdateConfirmationSentTitle=\u0627\u06cc\u0645\u06cc\u0644 \u062a\u0627\u06cc\u06cc\u062f \u0641\u0631\u0633\u062a\u0627\u062f\u0647 \u0634\u062f
emailUpdateConfirmationSent=\u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u062a\u0623\u06cc\u06cc\u062f \u0628\u0647 {0} \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0627\u06cc\u0645\u06cc\u0644\u060c \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.
emailUpdatedTitle=\u0627\u06cc\u0645\u06cc\u0644 \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f
emailUpdated=\u0627\u06cc\u0645\u06cc\u0644 \u062d\u0633\u0627\u0628 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0647 {0} \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f.
updatePasswordTitle=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f
codeSuccessTitle=\u06a9\u062f \u0645\u0648\u0641\u0642\u06cc\u062a
codeErrorTitle=\u06a9\u062f \u062e\u0637\u0627\: {0}
displayUnsupported=\u0646\u0648\u0639 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u0634\u0648\u062f
browserRequired=\u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0631\u0648\u0631\u06af\u0631 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a
browserContinue=\u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0648\u0631\u0648\u062f \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a
browserContinuePrompt=\u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0648\u0631\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f\u061f [y/n]\:
browserContinueAnswer=y
usb=USB
nfc=NFC
bluetooth=\u0628\u0644\u0648\u062a\u0648\u062b
internal=\u062f\u0627\u062e\u0644\u06cc
unknown=\u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647
termsTitle=\u0634\u0631\u0627\u06cc\u0637 \u0648 \u0636\u0648\u0627\u0628\u0637
termsText=
termsPlainText=\u0634\u0631\u0627\u06cc\u0637 \u0648 \u0636\u0648\u0627\u0628\u0637 \u0628\u0627\u06cc\u062f \u062a\u0639\u0631\u06cc\u0641 \u0634\u0648\u062f.
recaptchaFailed=Recaptcha \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a
recaptchaNotConfigured=Recaptcha \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a
consentDenied=\u0631\u0636\u0627\u06cc\u062a \u0631\u062f \u0634\u062f.
noAccount=\u06a9\u0627\u0631\u0628\u0631 \u062c\u062f\u06cc\u062f \u0647\u0633\u062a\u06cc\u062f\u061f
username=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc
usernameOrEmail=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9
firstName=\u0646\u0627\u0645
givenName=\u0644\u0642\u0628
fullName=\u0646\u0627\u0645 \u06a9\u0627\u0645\u0644
lastName=\u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc
familyName=\u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc
email=\u0627\u06cc\u0645\u06cc\u0644
password=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631
passwordConfirm=\u062a\u0627\u0626\u06cc\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631
passwordNew=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f
passwordNewConfirm=\u062a\u0627\u0626\u06cc\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f
rememberMe=\u0645\u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631
authenticatorCode=\u06a9\u062f \u06cc\u06a9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641
address=\u0622\u062f\u0631\u0633
street=\u062e\u06cc\u0627\u0628\u0627\u0646
locality=\u0634\u0647\u0631 \u06cc\u0627 \u0645\u062d\u0644\u0647
region=\u0627\u06cc\u0627\u0644\u062a\u060c \u0627\u0633\u062a\u0627\u0646 \u06cc\u0627 \u0645\u0646\u0637\u0642\u0647
postal_code=\u06a9\u062f \u067e\u0633\u062a\u06cc
country=\u06a9\u0634\u0648\u0631
emailVerified=\u0627\u06cc\u0645\u06cc\u0644 \u062a\u0623\u06cc\u06cc\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a
website=\u0635\u0641\u062d\u0647 \u0648\u0628
phoneNumber=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646
phoneNumberVerified=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u062a\u0627\u06cc\u06cc\u062f \u0634\u062f
gender=\u062c\u0646\u0633\u06cc\u062a
birthday=\u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u062f
zoneinfo=\u0645\u0646\u0637\u0642\u0647 \u0632\u0645\u0627\u0646\u06cc
gssDelegationCredential=\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc GSS
logoutOtherSessions=\u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f
profileScopeConsentText=\u0645\u0634\u062e\u0635\u0627\u062a \u06a9\u0627\u0631\u0628\u0631
emailScopeConsentText=\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644
addressScopeConsentText=\u0646\u0634\u0627\u0646\u06cc
phoneScopeConsentText=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646
offlineAccessScopeConsentText=\u062f\u0633\u062a\u0631\u0633\u06cc \u0622\u0641\u0644\u0627\u06cc\u0646
samlRoleListScopeConsentText=\u0646\u0642\u0634 \u0647\u0627\u06cc \u0645\u0646
rolesScopeConsentText=\u0646\u0642\u0634 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631
restartLoginTooltip=\u0648\u0631\u0648\u062f \u0645\u062c\u062f\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f
loginTotpIntro=\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u062d\u0633\u0627\u0628\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u0646\u062f\u0647 \u0631\u0645\u0632 \u06cc\u06a9 \u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f
loginTotpStep1=\u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0631\u0648\u06cc \u0645\u0648\u0628\u0627\u06cc\u0644 \u062e\u0648\u062f \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f\:
loginTotpStep2=\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0627\u0631\u06a9\u062f \u0631\u0627 \u0627\u0633\u06a9\u0646 \u06a9\u0646\u06cc\u062f\:
loginTotpStep3=\u06a9\u062f \u06cc\u06a9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0648\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.
loginTotpStep3DeviceName=\u06cc\u06a9 \u0646\u0627\u0645 \u062f\u0633\u062a\u06af\u0627\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0645\u06a9 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc OTP \u062e\u0648\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f.
loginTotpManualStep2=\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f\:
loginTotpManualStep3=\u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062c\u0627\u0632\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\:
loginTotpUnableToScan=\u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u06a9\u0646 \u06a9\u0646\u06cc\u062f\u061f
loginTotpScanBarcode=\u0627\u0633\u06a9\u0646 \u0628\u0627\u0631\u06a9\u062f\u061f
loginCredential=\u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647
loginOtpOneTime=\u06a9\u062f \u06cc\u06a9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641
loginTotpType=\u0646\u0648\u0639
loginTotpAlgorithm=\u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645
loginTotpDigits=\u0627\u0631\u0642\u0627\u0645
loginTotpInterval=\u0641\u0627\u0635\u0644\u0647
loginTotpCounter=\u0634\u0645\u0627\u0631\u0646\u062f\u0647
loginTotpDeviceName=\u0646\u0627\u0645 \u062f\u0633\u062a\u06af\u0627\u0647
loginTotp.totp=\u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0632\u0645\u0627\u0646
loginTotp.hotp=\u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0634\u0645\u0627\u0631\u0646\u062f\u0647
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u0631\u0648\u0634 \u0648\u0631\u0648\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f
oauthGrantRequest=\u0622\u06cc\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u06cc \u062f\u0647\u06cc\u062f\u061f
inResource=\u062f\u0631
oauth2DeviceVerificationTitle=\u0648\u0631\u0648\u062f \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647
verifyOAuth2DeviceUserCode=\u06a9\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0631\u0648\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f
oauth2DeviceInvalidUserCodeMessage=\u06a9\u062f \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a\u060c \u0644\u0637\u0641\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f.
oauth2DeviceExpiredUserCodeMessage=\u06a9\u062f \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0644\u0637\u0641\u0627\u064b \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0648\u0635\u0644 \u0634\u0648\u06cc\u062f.
oauth2DeviceVerificationCompleteHeader=\u0648\u0631\u0648\u062f \u062f\u0633\u062a\u06af\u0627\u0647 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u062f
oauth2DeviceVerificationCompleteMessage=\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0648\u062f \u0628\u0627\u0632\u06af\u0631\u062f\u06cc\u062f.
oauth2DeviceVerificationFailedHeader=\u0648\u0631\u0648\u062f \u062f\u0633\u062a\u06af\u0627\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f
oauth2DeviceVerificationFailedMessage=\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0633\u062a\u06af\u0627\u0647 \u062e\u0648\u062f \u0628\u0627\u0632\u06af\u0631\u062f\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0648\u0635\u0644 \u0634\u0648\u06cc\u062f.
oauth2DeviceConsentDeniedMessage=\u0631\u0636\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u062f\u0633\u062a\u06af\u0627\u0647 \u0631\u062f \u0634\u062f.
oauth2DeviceAuthorizationGrantDisabledMessage=\u0645\u0634\u062a\u0631\u06cc \u0645\u062c\u0627\u0632 \u0628\u0647 \u0634\u0631\u0648\u0639 OAuth 2.0 Device Authorization Grant \u0646\u06cc\u0633\u062a. \u062c\u0631\u06cc\u0627\u0646 \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a.
emailVerifyInstruction1=\u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u062d\u0627\u0648\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627 \u0628\u0647 \u0622\u062f\u0631\u0633 \u0634\u0645\u0627 {0} \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.
emailVerifyInstruction2=\u0622\u06cc\u0627 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u062f\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u061f
emailVerifyInstruction3=\u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u0627\u06cc\u0645\u06cc\u0644
emailLinkIdpTitle=\u067e\u06cc\u0648\u0646\u062f {0}
emailLinkIdp1=\u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u067e\u06cc\u0648\u0646\u062f {0} \u062d\u0633\u0627\u0628 {1} \u0628\u0627 \u062d\u0633\u0627\u0628 {2} \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.
emailLinkIdp2=\u0622\u06cc\u0627 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u062f\u0631 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u061f
emailLinkIdp3=\u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u0627\u06cc\u0645\u06cc\u0644
emailLinkIdp4=\u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u062f\u06cc\u06af\u0631\u06cc \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f
emailLinkIdp5=\u0627\u062f\u0627\u0645\u0647.
backToLogin=&laquo; \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f
emailInstruction=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.
emailInstructionUsername=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0627\u0631\u0633\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.
copyCodeInstruction=\u0644\u0637\u0641\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f\:
pageExpiredTitle=\u0635\u0641\u062d\u0647 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a
pageExpiredMsg1=\u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0641\u0631\u0622\u06cc\u0646\u062f \u0648\u0631\u0648\u062f
pageExpiredMsg2=\u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u0631\u0648\u0646\u062f \u0648\u0631\u0648\u062f
personalInfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc\:
role_admin=\u0627\u062f\u0645\u06cc\u0646
role_realm-admin=\u0627\u062f\u0645\u06cc\u0646 \u0642\u0644\u0645\u0631\u0648
role_create-realm=\u0627\u06cc\u062c\u0627\u062f \u0642\u0644\u0645\u0631\u0648
role_create-client=\u0627\u06cc\u062c\u0627\u062f \u0645\u0634\u062a\u0631\u06cc
role_view-realm=\u0645\u0634\u0627\u0647\u062f\u0647 \u0642\u0644\u0645\u0631\u0648
role_view-users=\u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646
role_view-applications=\u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627
role_view-clients=\u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u0634\u062a\u0631\u06cc\u200c\u0647\u0627
role_view-events=\u0645\u0634\u0627\u0647\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f
role_view-identity-providers=\u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0647\u0648\u06cc\u062a
role_manage-realm=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0642\u0644\u0645\u0631\u0648
role_manage-users=\u0645\u06cc\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646
role_manage-applications=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627
role_manage-identity-providers=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0647\u0648\u06cc\u062a
role_manage-clients=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0634\u062a\u0631\u06cc\u0627\u0646
role_manage-events=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627
role_view-profile=\u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644
role_manage-account=\u0645\u06cc\u062f\u0631\u06cc\u062a \u062d\u0633\u0627\u0628
role_manage-account-links=\u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u06cc\u0648\u0646\u062f\u0647\u0627\u06cc \u062d\u0633\u0627\u0628
role_read-token=\u062e\u0648\u0627\u0646\u062f\u0646 Token
role_offline-access=\u062f\u0633\u062a\u0631\u0633\u06cc \u0622\u0641\u0644\u0627\u06cc\u0646
client_account=\u062d\u0633\u0627\u0628
client_account-console=\u06a9\u0646\u0633\u0648\u0644 \u062d\u0633\u0627\u0628
client_security-admin-console=\u06a9\u0646\u0633\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0645\u0646\u06cc\u062a
client_admin-cli=\u0627\u062f\u0645\u06cc\u0646 CLI
client_realm-management=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0642\u0644\u0645\u0631\u0648
client_broker=\u062f\u0644\u0627\u0644
requiredFields=\u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632
invalidUserMessage=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
invalidUsernameMessage=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
invalidUsernameOrEmailMessage=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
invalidPasswordMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631.
invalidEmailMessage=\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
accountDisabledMessage=\u062d\u0633\u0627\u0628 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a\u060c \u0628\u0627 \u0633\u0631\u067e\u0631\u0633\u062a \u062e\u0648\u062f \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f.
accountTemporarilyDisabledMessage=\u062d\u0633\u0627\u0628 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u0642\u062a \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a; \u0628\u0627 \u0633\u0631\u067e\u0631\u0633\u062a \u062e\u0648\u062f \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06cc\u0627 \u0628\u0639\u062f\u0627\u064b \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f.
expiredCodeMessage=\u0627\u062a\u0645\u0627\u0645 \u0645\u062f\u062a \u0648\u0631\u0648\u062f. \u0644\u0637\u0641\u0627\u064b \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
expiredActionMessage=\u0627\u0642\u062f\u0627\u0645 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0644\u0637\u0641\u0627 \u0647\u0645\u06cc\u0646 \u0627\u0644\u0627\u0646 \u0628\u0627 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.
expiredActionTokenNoSessionMessage=\u0627\u0642\u062f\u0627\u0645 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.
expiredActionTokenSessionExistsMessage=\u0627\u0642\u062f\u0627\u0645 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0644\u0637\u0641\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.
sessionLimitExceeded=\u062a\u0639\u062f\u0627\u062f \u062c\u0644\u0633\u0627\u062a \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f \u0627\u0633\u062a
missingFirstNameMessage=\u0644\u0637\u0641\u0627 \u0646\u0627\u0645 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
missingLastNameMessage=\u0644\u0637\u0641\u0627 \u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
missingEmailMessage=\u0644\u0637\u0641\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
missingUsernameMessage=\u0644\u0637\u0641\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
missingPasswordMessage=\u0644\u0637\u0641\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
missingTotpMessage=\u0644\u0637\u0641\u0627 \u06a9\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f.
missingTotpDeviceNameMessage=\u0644\u0637\u0641\u0627 \u0646\u0627\u0645 \u062f\u0633\u062a\u06af\u0627\u0647 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f.
notMatchPasswordMessage=\u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0647\u0627 \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u0646\u062f
error-invalid-value=\u0645\u0642\u062f\u0627\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-invalid-blank=\u0644\u0637\u0641\u0627 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
error-empty=\u0644\u0637\u0641\u0627 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f
error-invalid-length=\u0637\u0648\u0644 \u0628\u0627\u06cc\u062f \u0628\u06cc\u0646 {1} \u0648 {2} \u0628\u0627\u0634\u062f.
error-invalid-length-too-short=\u062d\u062f\u0627\u0642\u0644 \u0637\u0648\u0644 {1} \u0627\u0633\u062a.
error-invalid-length-too-long=\u062d\u062f\u0627\u06a9\u062b\u0631 \u0637\u0648\u0644 {2} \u0627\u0633\u062a.
error-invalid-email=\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-invalid-number=\u0639\u062f\u062f \u0646\u0627\u0645\u0639\u062a\u0628\u0631.
error-number-out-of-range=\u0634\u0645\u0627\u0631\u0647 \u0628\u0627\u06cc\u062f \u0628\u06cc\u0646 {1} \u0648 {2} \u0628\u0627\u0634\u062f.
error-number-out-of-range-too-small=\u0639\u062f\u062f \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 \u0645\u0642\u062f\u0627\u0631 {1} \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.
error-number-out-of-range-too-big=\u0639\u062f\u062f \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 \u0645\u0642\u062f\u0627\u0631 {2} \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.
error-pattern-no-match=\u0645\u0642\u062f\u0627\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-invalid-uri=URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-invalid-uri-scheme=\u0637\u0631\u062d URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-invalid-uri-fragment=\u0642\u0637\u0639\u0647 URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-user-attribute-required=\u0644\u0637\u0641\u0627 \u0627\u06cc\u0646 \u0641\u06cc\u0644\u062f \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u062f.
error-invalid-date=\u062a\u0627\u0631\u06cc\u062e \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-user-attribute-read-only=\u0627\u06cc\u0646 \u0641\u06cc\u0644\u062f \u0641\u0642\u0637 \u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0627\u0633\u062a.
error-username-invalid-character=\u0645\u0642\u062f\u0627\u0631 \u062d\u0627\u0648\u06cc \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
error-person-name-invalid-character=\u0645\u0642\u062f\u0627\u0631 \u062d\u0627\u0648\u06cc \u0646\u0648\u06cc\u0633\u0647 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
invalidPasswordExistingMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u0648\u062c\u0648\u062f \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
invalidPasswordBlacklistedMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062f\u0631 \u0644\u06cc\u0633\u062a \u0633\u06cc\u0627\u0647 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0627\u0633\u062a.
invalidPasswordConfirmMessage=\u062a\u0623\u06cc\u06cc\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u062f.
invalidTotpMessage=\u06a9\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.
usernameExistsMessage=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.
emailExistsMessage=\u0627\u06cc\u0645\u06cc\u0644 \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.
federatedIdentityExistsMessage=\u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 {0} {1} \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0644\u0637\u0641\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0646 \u062d\u0633\u0627\u0628 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0633\u0627\u0628 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
federatedIdentityUnavailableMessage=\u06a9\u0627\u0631\u0628\u0631 {0} \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062f\u0647 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a {1} \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0644\u0637\u0641\u0627 \u0628\u0627 \u0627\u062f\u0645\u06cc\u0646 \u062e\u0648\u062f \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f.
confirmLinkIdpTitle=\u062d\u0633\u0627\u0628 \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f
federatedIdentityConfirmLinkMessage=\u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 {0} {1} \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f\u061f
federatedIdentityConfirmReauthenticateMessage=\u0628\u0631\u0627\u06cc \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627 {0} \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a
nestedFirstBrokerFlowMessage=\u06a9\u0627\u0631\u0628\u0631 {0} {1} \u0628\u0647 \u0647\u06cc\u0686 \u06a9\u0627\u0631\u0628\u0631 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u06cc \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.
confirmLinkIdpReviewProfile=\u0628\u0631\u0631\u0633\u06cc \u0646\u0645\u0627\u06cc\u0647
confirmLinkIdpContinue=\u0627\u0636\u0627\u0641\u0647\u200c\u200c\u06a9\u0631\u062f\u0646 \u0628\u0647 \u062d\u0633\u0627\u0628 \u0645\u0648\u062d\u0648\u062f
configureTotpMessage=\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0648\u0628\u0627\u06cc\u0644 \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.
configureBackupCodesMessage=\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.
updateProfileMessage=\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f.
updatePasswordMessage=\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.
updateEmailMessage=\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f.
resetPasswordMessage=\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f.
verifyEmailMessage=\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627\u06cc\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.
linkIdpMessage=\u0628\u0631\u0627\u06cc \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0646 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0628\u0627 {0}\u060c \u0628\u0627\u06cc\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.
emailSentMessage=\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0632\u0648\u062f\u06cc \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.
emailSendErrorMessage=\u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u0628\u0639\u062f\u0627\u064b \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f.
accountUpdatedMessage=\u062d\u0633\u0627\u0628 \u0634\u0645\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a.
accountPasswordUpdatedMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a.
delegationCompleteHeader=\u0648\u0631\u0648\u062f \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a
delegationCompleteMessage=\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f \u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0646\u0633\u0648\u0644 \u062e\u0648\u062f \u0628\u0627\u0632\u06af\u0631\u062f\u06cc\u062f.
delegationFailedHeader=\u0648\u0631\u0648\u062f \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f
delegationFailedMessage=\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u0628\u0628\u0646\u062f\u06cc\u062f \u0648 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0646\u0633\u0648\u0644 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
noAccessMessage=\u0628\u0630\u0648\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc
invalidPasswordMinLengthMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u062d\u062f\u0627\u0642\u0644 \u0637\u0648\u0644 {0}.
invalidPasswordMaxLengthMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u062d\u062f\u0627\u06a9\u062b\u0631 \u0637\u0648\u0644 {0}.
invalidPasswordMinDigitsMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 \u062f\u0627\u0631\u0627\u06cc {0} \u0631\u0642\u0645 \u0639\u062f\u062f\u06cc \u0628\u0627\u0634\u062f.
invalidPasswordMinLowerCaseCharsMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 \u062f\u0627\u0631\u0627\u06cc {0} \u0646\u0648\u06cc\u0633\u0647 \u06a9\u0648\u0686\u06a9 \u0628\u0627\u0634\u062f.
invalidPasswordMinUpperCaseCharsMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 \u062f\u0627\u0631\u0627\u06cc {0} \u0646\u0648\u06cc\u0633\u0647 \u0628\u0632\u0631\u06af \u0628\u0627\u0634\u062f.
invalidPasswordMinSpecialCharsMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0628\u0627\u06cc\u062f \u062d\u062f\u0627\u0642\u0644 \u062f\u0627\u0631\u0627\u06cc {0} \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u062e\u0627\u0635 \u0628\u0627\u0634\u062f.
invalidPasswordNotUsernameMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0646\u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627\u0634\u062f.
invalidPasswordNotEmailMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0646\u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u0628\u0631 \u0628\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0627\u0634\u062f.
invalidPasswordRegexPatternMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0628\u0627 \u0627\u0644\u06af\u0648(\u0647\u0627\u06cc) regex \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u062f.
invalidPasswordHistoryMessage=\u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0646\u0628\u0627\u06cc\u062f \u0628\u0627 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0631\u0645\u0632\u0647\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u062e\u06cc\u0631 {0} \u0628\u0631\u0627\u0628\u0631 \u0628\u0627\u0634\u062f.
invalidPasswordGenericMessage=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f \u0628\u0627 \u062e\u0637 \u0645\u0634\u06cc \u0647\u0627\u06cc \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u062f.
failedToProcessResponseMessage=\u067e\u0627\u0633\u062e \u067e\u0631\u062f\u0627\u0632\u0634 \u0646\u0634\u062f
httpsRequiredMessage=HTTPS \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a
realmNotEnabledMessage=\u0642\u0644\u0645\u0631\u0648 \u0641\u0639\u0627\u0644 \u0646\u06cc\u0633\u062a
invalidRequestMessage=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0646\u0627\u0645\u0639\u062a\u0628\u0631
successLogout=\u0634\u0645\u0627 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0634\u062f\u0647 \u0627\u06cc\u062f
failedLogout=\u062e\u0631\u0648\u062c \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f
unknownLoginRequesterMessage=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u0648\u0631\u0648\u062f \u0646\u0627\u0645\u0634\u062e\u0635
loginRequesterNotEnabledMessage=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u0648\u0631\u0648\u062f \u0641\u0639\u0627\u0644 \u0646\u06cc\u0633\u062a
bearerOnlyMessage=\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0641\u0642\u0637 \u062d\u0627\u0645\u0644 \u0645\u062c\u0627\u0632 \u0628\u0647 \u0634\u0631\u0648\u0639 \u0648\u0631\u0648\u062f \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0646\u06cc\u0633\u062a\u0646\u062f
standardFlowDisabledMessage=\u0645\u0634\u062a\u0631\u06cc \u0645\u062c\u0627\u0632 \u0628\u0647 \u0634\u0631\u0648\u0639 \u0648\u0631\u0648\u062f \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627 response_type \u0646\u06cc\u0633\u062a. \u062c\u0631\u06cc\u0627\u0646 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a.
implicitFlowDisabledMessage=\u0645\u0634\u062a\u0631\u06cc \u0645\u062c\u0627\u0632 \u0628\u0647 \u0634\u0631\u0648\u0639 \u0648\u0631\u0648\u062f \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627 answer_type \u0646\u06cc\u0633\u062a. \u062c\u0631\u06cc\u0627\u0646 \u0636\u0645\u0646\u06cc \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a.
invalidRedirectUriMessage=uri \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u06cc\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a
unsupportedNameIdFormatMessage=NameIDFormat \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0634\u062f\u0647
invalidRequesterMessage=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0646\u0646\u062f\u0647 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a
registrationNotAllowedMessage=\u062b\u0628\u062a \u0646\u0627\u0645 \u0645\u062c\u0627\u0632 \u0646\u06cc\u0633\u062a
resetCredentialNotAllowedMessage=\u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u0645\u062c\u0627\u0632 \u0646\u06cc\u0633\u062a
permissionNotApprovedMessage=\u0645\u062c\u0648\u0632 \u062a\u0627\u06cc\u06cc\u062f \u0646\u0634\u062f
noRelayStateInResponseMessage=\u0647\u06cc\u0686 \u062d\u0627\u0644\u062a \u0631\u0644\u0647 \u0627\u06cc \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0632 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.
insufficientPermissionMessage=\u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u06a9\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0646 \u0647\u0648\u06cc\u062a \u0647\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.
couldNotProceedWithAuthenticationRequestMessage=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0647 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0627\u062f\u0627\u0645\u0647 \u062f\u0627\u062f.
couldNotObtainTokenMessage=\u0631\u0645\u0632 \u0627\u0632 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0634\u062f.
unexpectedErrorRetrievingTokenMessage=\u062e\u0637\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0645\u0632 \u0627\u0632 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a.
unexpectedErrorHandlingResponseMessage=\u062e\u0637\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u067e\u0627\u0633\u062e \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a.
identityProviderAuthenticationFailedMessage=\u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f. \u0628\u0627 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0646\u06cc\u0633\u062a.
couldNotSendAuthenticationRequestMessage=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0627\u0631\u0633\u0627\u0644 \u0646\u0634\u062f.
unexpectedErrorHandlingRequestMessage=\u062e\u0637\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0647 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a.
invalidAccessCodeMessage=\u06a9\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631.
sessionNotActiveMessage=\u0646\u0634\u0633\u062a \u0641\u0639\u0627\u0644 \u0646\u06cc\u0633\u062a
invalidCodeMessage=\u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0644\u0637\u0641\u0627\u064b \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
cookieNotFoundMessage=\u06a9\u0648\u06a9\u06cc \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f \u0644\u0637\u0641\u0627 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u0648\u06a9\u06cc \u0647\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0641\u0639\u0627\u0644 \u0647\u0633\u062a\u0646\u062f.
insufficientLevelOfAuthentication=\u0633\u0637\u062d \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.
identityProviderUnexpectedErrorMessage=\u062e\u0637\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a
identityProviderMissingStateMessage=\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062d\u0627\u0644\u062a \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0632 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.
identityProviderInvalidResponseMessage=\u067e\u0627\u0633\u062e \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0632 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a.
identityProviderInvalidSignatureMessage=\u0627\u0645\u0636\u0627\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0632 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a.
identityProviderNotFoundMessage=\u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f.
identityProviderLinkSuccess=\u0634\u0645\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0631\u062f\u06cc\u062f. \u0644\u0637\u0641\u0627\u064b \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0627\u0635\u0644\u06cc \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0628\u0627 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.
staleCodeMessage=\u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a\u060c \u0644\u0637\u0641\u0627\u064b \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
realmSupportsNoCredentialsMessage=\u0642\u0644\u0645\u0631\u0648 \u0627\u0632 \u0647\u06cc\u0686 \u0646\u0648\u0639 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f.
credentialSetupRequired=\u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0648\u0627\u0631\u062f \u0634\u062f\u060c \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a.
identityProviderNotUniqueMessage=\u0642\u0644\u0645\u0631\u0648 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f \u06a9\u0647 \u0628\u0627 \u06a9\u062f\u0627\u0645 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.
emailVerifiedMessage=\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0634\u0645\u0627 \u062a\u0627\u06cc\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a.
staleEmailVerificationLink=\u067e\u06cc\u0648\u0646\u062f\u06cc \u06a9\u0647 \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u06cc\u062f \u06cc\u06a9 \u067e\u06cc\u0648\u0646\u062f \u0642\u062f\u06cc\u0645\u06cc \u0627\u0633\u062a \u0648 \u062f\u06cc\u06af\u0631 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a. \u0634\u0627\u06cc\u062f \u0642\u0628\u0644\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f.
identityProviderAlreadyLinkedMessage=\u0647\u0648\u06cc\u062a \u0641\u062f\u0631\u0627\u0644 \u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 {0} \u0642\u0628\u0644\u0627\u064b \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u06af\u0631\u06cc \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.
confirmAccountLinking=\u067e\u06cc\u0648\u0646\u062f \u062d\u0633\u0627\u0628 {0} \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a {1} \u0631\u0627 \u0628\u0627 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.
confirmEmailAddressVerification=\u0627\u0639\u062a\u0628\u0627\u0631 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 {0} \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f.
confirmExecutionOfActions=\u0639\u0645\u0644(\u0647\u0627\u06cc) \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f
backToApplication=&laquo; \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647
missingParameterMessage=\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u0632 \u062f\u0633\u062a \u0631\u0641\u062a\u0647\: {0}
clientNotFoundMessage=\u0645\u0634\u062a\u0631\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f
clientDisabledMessage=\u0645\u0634\u062a\u0631\u06cc \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a.
invalidParameterMessage=\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631\: {0}
alreadyLoggedIn=\u0634\u0645\u0627 \u067e\u06cc\u0634\u062a\u0631 \u0648\u0627\u0631\u062f \u0634\u062f\u0647\u0627\u06cc\u062f - \u0644\u0627\u06af\u06cc\u0646 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f.
differentUserAuthenticated=\u0634\u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u062f\u06cc\u06af\u0631\u06cc ''{0}'' \u062f\u0631 \u0627\u06cc\u0646 \u062c\u0644\u0633\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062f\u0647 \u0627\u06cc\u062f. \u0644\u0637\u0641\u0627 \u0627\u0628\u062a\u062f\u0627 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f.
brokerLinkingSessionExpired=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u06cc\u0648\u0646\u062f \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u06af\u0632\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062c\u0644\u0633\u0647 \u0641\u0639\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a.
proceedWithAction=&raquo; \u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0627 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f
acrNotFulfilled=\u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a
requiredAction.CONFIGURE_TOTP=OTP \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f
requiredAction.TERMS_AND_CONDITIONS=\u0634\u0631\u0627\u06cc\u0637 \u0648 \u0636\u0648\u0627\u0628\u0637
requiredAction.UPDATE_PASSWORD=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f
requiredAction.UPDATE_PROFILE=\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644
requiredAction.VERIFY_EMAIL=\u062a\u0623\u06cc\u06cc\u062f \u0627\u06cc\u0645\u06cc\u0644
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f
requiredAction.webauthn-register-passwordless=Webauthn \u062b\u0628\u062a \u0646\u0627\u0645 \u0628\u062f\u0648\u0646 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631
invalidTokenRequiredActions=\u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0644\u0627\u0632\u0645 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u06cc\u0648\u0646\u062f \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a\u0646\u062f
doX509Login=\u0634\u0645\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646\: \u0648\u0627\u0631\u062f \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f\:
clientCertificate=\u06af\u0648\u0627\u0647\u06cc \u0645\u0634\u062a\u0631\u06cc X509\:
noCertificate=[\u0628\u062f\u0648\u0646 \u06af\u0648\u0627\u0647\u06cc]
pageNotFound=\u0635\u0641\u062d\u0647 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f
internalServerError=\u06cc\u06a9 \u062e\u0637\u0627\u06cc \u0633\u0631\u0648\u0631 \u062f\u0627\u062e\u0644\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a
console-username=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc\:
console-password=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631\:
console-otp=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06cc\u06a9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641\:
console-new-password=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062c\u062f\u06cc\u062f\:
console-confirm-password=\u062a\u0627\u06cc\u06cc\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\:
console-update-password=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0634\u0645\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a.
console-verify-email=\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0647 {0} \u0627\u0631\u0633\u0627\u0644 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u062d\u0627\u0648\u06cc \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0627\u0633\u062a. \u0644\u0637\u0641\u0627 \u0627\u06cc\u0646 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0648\u0631\u0648\u062f\u06cc \u0632\u06cc\u0631 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.
console-email-code=\u06a9\u062f \u0627\u06cc\u0645\u06cc\u0644\:
console-accept-terms=\u0634\u0631\u0627\u06cc\u0637 \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u06cc\u062f\u061f [y/n]\:
console-accept=y
openshift.scope.user_info=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631
openshift.scope.user_check-access=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0631\u0628\u0631
openshift.scope.user_full=\u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0645\u0644
openshift.scope.list-projects=\u0644\u06cc\u0633\u062a \u067e\u0631\u0648\u0698\u0647 \u0647\u0627
saml.post-form.title=\u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u06cc\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a
saml.post-form.message=\u062f\u0631 \u062d\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u06cc\u0631\u060c \u0644\u0637\u0641\u0627 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f.
saml.post-form.js-disabled=\u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0627\u0633\u062a. \u0645\u0627 \u0642\u0648\u06cc\u0627\u064b \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u0632\u06cc\u0631 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.
saml.artifactResolutionServiceInvalidResponse=\u0642\u0627\u062f\u0631 \u0628\u0647 \u062d\u0644 \u0645\u0635\u0646\u0648\u0639 \u0646\u06cc\u0633\u062a.
otp-display-name=\u0628\u0631\u0646\u0627\u0645\u0647 Authenticator
otp-help-text=\u06cc\u06a9 \u06a9\u062f \u062a\u0623\u06cc\u06cc\u062f \u0631\u0627 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.
password-display-name=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631
password-help-text=\u0628\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
auth-username-form-display-name=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc
auth-username-form-help-text=\u0628\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0633\u06cc\u0633\u062a\u0645 \u0634\u0648\u06cc\u062f
auth-username-password-form-display-name=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631
auth-username-password-form-help-text=\u0628\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f.
auth-recovery-authn-code-form-display-name=\u06a9\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc
auth-recovery-authn-code-form-help-text=\u06cc\u06a9 \u06a9\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0627 \u0627\u0632 \u0644\u06cc\u0633\u062a\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.
auth-recovery-code-info-message=\u06a9\u062f \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.
auth-recovery-code-prompt=\u06a9\u062f \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \#{0}
auth-recovery-code-header=\u0628\u0627 \u06cc\u06a9 \u06a9\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
recovery-codes-error-invalid=\u06a9\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a
recovery-code-config-header=\u06a9\u062f\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc
recovery-code-config-warning-title=\u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u067e\u0633 \u0627\u0632 \u062e\u0631\u0648\u062c \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631 \u0638\u0627\u0647\u0631 \u0646\u0645\u06cc \u0634\u0648\u0646\u062f
recovery-code-config-warning-message=\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0686\u0627\u067e\u060c \u062f\u0627\u0646\u0644\u0648\u062f \u06cc\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062f\u06cc\u0631 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f. \u0644\u063a\u0648 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u060c \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0627 \u0627\u0632 \u062d\u0633\u0627\u0628 \u0634\u0645\u0627 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f.
recovery-codes-print=\u0686\u0627\u067e
recovery-codes-download=\u062f\u0627\u0646\u0644\u0648\u062f
recovery-codes-copy=\u06a9\u067e\u06cc
recovery-codes-copied=\u06a9\u067e\u06cc \u0634\u062f
recovery-codes-confirmation-message=\u0645\u0646 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0627\u0645\u0646 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645
recovery-codes-action-complete=\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644
recovery-codes-action-cancel=\u0644\u063a\u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc
recovery-codes-download-file-header=\u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0627\u0645\u0646 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f.
recovery-codes-download-file-description=\u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0647\u0627\u06cc \u06cc\u06a9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0639\u062f\u0645 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0634\u0648\u06cc\u062f.
recovery-codes-download-file-date=\u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u062f\u0631 \u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0646\u062f
recovery-codes-label-default=\u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc
webauthn-display-name=\u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc
webauthn-help-text=\u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0632 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.
webauthn-passwordless-display-name=\u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc
webauthn-passwordless-help-text=\u0627\u0632 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u062f\u0648\u0646 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.
webauthn-login-title=\u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc
webauthn-registration-title=\u062b\u0628\u062a \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc
webauthn-available-authenticators=\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u0645\u0648\u062c\u0648\u062f
webauthn-unsupported-browser-text=WebAuthn \u062a\u0648\u0633\u0637 \u0627\u06cc\u0646 \u0645\u0631\u0648\u0631\u06af\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u0634\u0648\u062f. \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0628\u0627 \u0633\u0631\u067e\u0631\u0633\u062a \u062e\u0648\u062f \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f.
webauthn-doAuthenticate=\u0628\u0627 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
webauthn-createdAt-label=\u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062f\u0631
webauthn-error-title=\u062e\u0637\u0627\u06cc \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc
webauthn-error-registration=\u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0634\u0645\u0627 \u062b\u0628\u062a \u0646\u0634\u062f.<br/> {0}
webauthn-error-api-get=\u0628\u0627 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f.<br/> {0}
webauthn-error-different-user=\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062f\u0647 \u06a9\u0633\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062f\u0647 \u0627\u0633\u062a.
webauthn-error-auth-verification=\u0646\u062a\u06cc\u062c\u0647 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.<br/> {0}
webauthn-error-register-verification=\u0646\u062a\u06cc\u062c\u0647 \u062b\u0628\u062a \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.<br/> {0}
webauthn-error-user-not-found=\u06a9\u0627\u0631\u0628\u0631 \u0646\u0627\u0634\u0646\u0627\u0633 \u0628\u0627 \u06a9\u0644\u06cc\u062f \u0627\u0645\u0646\u06cc\u062a\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0634\u062f\u0647 \u0627\u0633\u062a.
identity-provider-redirector=\u0628\u0627 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u06cc\u062f
identity-provider-login-label=\u06cc\u0627 \u0628\u0627 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f
idp-email-verification-display-name=\u062a\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0645\u06cc\u0644
idp-email-verification-help-text=\u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u067e\u06cc\u0648\u0646\u062f \u062f\u0647\u06cc\u062f.
idp-username-password-form-display-name=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631
idp-username-password-form-help-text=\u0628\u0627 \u0648\u0631\u0648\u062f \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u0648\u0646\u062f \u062f\u0647\u06cc\u062f.
finalDeletionConfirmation=\u0627\u06af\u0631 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0642\u0627\u0628\u0644 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0646\u06cc\u0633\u062a. \u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f\u060c \u0631\u0648\u06cc \u0644\u063a\u0648 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.
irreversibleAction=\u0627\u06cc\u0646 \u0639\u0645\u0644 \u0628\u0631\u06af\u0634\u062a \u0646\u0627\u067e\u0630\u06cc\u0631 \u0627\u0633\u062a
deleteAccountConfirm=\u062a\u0627\u06cc\u06cc\u062f \u062d\u0630\u0641 \u062d\u0633\u0627\u0628
deletingImplies=\u062d\u0630\u0641 \u062d\u0633\u0627\u0628 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a\:
errasingData=\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0645\u0627\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627
loggingOutImmediately=\u062e\u0631\u0648\u062c \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0634\u0645\u0627
accountUnusable=\u0647\u0631 \u06af\u0648\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0639\u062f\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0633\u0627\u0628 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f
userDeletedSuccessfully=\u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u062d\u0630\u0641 \u0634\u062f
access-denied=\u062f\u0633\u062a\u0631\u0633\u06cc \u0631\u062f \u0634\u062f
access-denied-when-idp-auth=\u0647\u0646\u06af\u0627\u0645 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0628\u0627 {0}\u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0645\u0646\u0648\u0639 \u0634\u062f
frontchannel-logout.title=\u062e\u0631\u0648\u062c \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645
frontchannel-logout.message=\u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062e\u0631\u0648\u062c \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0647\u0633\u062a\u06cc\u062f
logoutConfirmTitle=\u062e\u0631\u0648\u062c
logoutConfirmHeader=\u0622\u06cc\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f\u061f
doLogout=\u062e\u0631\u0648\u062c
readOnlyUsernameMessage=\u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0641\u0642\u0637 \u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0627\u0633\u062a.
shouldBeEqual={0} \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u0628\u0631 \u0628\u0627\u0634\u062f \u0628\u0627 {1}
shouldBeDifferent={0} \u0628\u0627\u06cc\u062f \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0627\u0634\u062f \u0627\u0632 {1}
shouldMatchPattern=\u0627\u0644\u06af\u0648 \u0628\u0627\u06cc\u062f \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\: `/{0}/`
mustBeAnInteger=\u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0639\u062f\u062f \u0635\u062d\u06cc\u062d \u0628\u0627\u0634\u062f
notAValidOption=\u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a
selectAnOption=\u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f
remove=\u062d\u0630\u0641
addValue=\u0627\u0641\u0632\u0648\u062f\u0646 \u0645\u0642\u062f\u0627\u0631
languages=\u0632\u0628\u0627\u0646\u200c\u0647\u0627

View File

@ -0,0 +1,375 @@
doLogIn=Kirjaudu
doRegister=Rekister\u00f6idy
doRegisterSecurityKey=Rekister\u00f6idy
doCancel=Peruuta
doSubmit=L\u00e4het\u00e4
doBack=Takaisin
doYes=Kyll\u00e4
doNo=Ei
doContinue=Jatka
doIgnore=Sivuuta
doAccept=Hyv\u00e4ksy
doDecline=En hyv\u00e4ksy
doForgotPassword=Unohditko salasanan?
doClickHere=Klikkaa t\u00e4st\u00e4
doImpersonate=Edusta
doTryAgain=Yrit\u00e4 uudelleen
doTryAnotherWay=Yrit\u00e4 toista tapaa
doConfirmDelete=Vahvista poisto
errorDeletingAccount=Tilin poistossa tapahtui virhe
deletingAccountForbidden=Sinulla ei ole riitt\u00e4vi\u00e4 oikeuksia poistaakseesi omaa tili\u00e4, ota yhteytt\u00e4 j\u00e4rjestelm\u00e4nvalvojaan.
kerberosNotConfigured=Kerberosta ei ole konfiguroitu
kerberosNotConfiguredTitle=Kerberosta ei ole konfiguroitu
bypassKerberosDetail=Joko et ole kirjautunut Kerberoksen kautta tai selaintasi ei ole asetettu k\u00e4ytt\u00e4m\u00e4\u00e4n Kerberosta kirjautumiseen. Klikkaa jatkaaksesi kirjautumista jollain toisella tavalla
kerberosNotSetUp=Kerberosta ei ole asennettu. Et voi kirjautua sis\u00e4\u00e4n.
registerTitle=Rekister\u00f6idy
loginAccountTitle=Kirjaudu sis\u00e4\u00e4n
loginTitle=Kirjaudu {0}
loginTitleHtml={0}
impersonateTitle={0} Edusta k\u00e4ytt\u00e4j\u00e4\u00e4
impersonateTitleHtml=<strong>{0}</strong> Edusta k\u00e4ytt\u00e4j\u00e4\u00e4
realmChoice=Realm
unknownUser=Tuntematon k\u00e4ytt\u00e4j\u00e4
loginTotpTitle=Mobiili-todentajan asetukset
loginProfileTitle=P\u00e4ivit\u00e4 k\u00e4ytt\u00e4j\u00e4tilin tiedot
loginIdpReviewProfileTitle=P\u00e4ivit\u00e4 k\u00e4ytt\u00e4j\u00e4tilin tiedot
loginTimeout=Kirjautumisyritys kesti liian kauan. Kirjautuminen aloitetaan alusta.
oauthGrantTitle=My\u00f6nn\u00e4 p\u00e4\u00e4sy {0}
oauthGrantTitleHtml={0}
errorTitle=Pahoittelut...
errorTitleHtml=Olemme <strong>pahoillamme</strong> ...
emailVerifyTitle=S\u00e4hk\u00f6postiosoitteen varmistus
emailForgotTitle=Unohditko salasanasi?
updatePasswordTitle=P\u00e4ivit\u00e4 salasana
codeSuccessTitle=Success-koodi
codeErrorTitle=Virhekoodi\: {0}
displayUnsupported=Pyydetty n\u00e4ytt\u00f6tyyppi ei ole tuettu
browserRequired=Selain vaatii sis\u00e4\u00e4nkirjautumista
browserContinue=Selain vaatii sis\u00e4\u00e4nkirjautumisen viimeistely\u00e4
browserContinuePrompt=Avaa selain ja jatka kirjautumista? [k/e]\:
browserContinueAnswer=k
termsTitle=K\u00e4ytt\u00f6ehdot
termsText=
termsPlainText=K\u00e4ytt\u00f6ehdot ja niiden m\u00e4\u00e4rittely.
recaptchaFailed=Virheellinen Recaptcha
recaptchaNotConfigured=Recaptcha vaaditaan, mutta sit\u00e4 ei ole konfiguroitu
consentDenied=Suostumus kielletty.
noAccount=Uusi k\u00e4ytt\u00e4j\u00e4?
username=K\u00e4ytt\u00e4j\u00e4tunnus
usernameOrEmail=K\u00e4ytt\u00e4j\u00e4tunnus tai s\u00e4hk\u00f6postiosoite
firstName=Etunimi
givenName=Sukunimi
fullName=Koko nimi
lastName=Sukunimi
familyName=Sukunimi
email=S\u00e4hk\u00f6posti
password=Salasana
passwordConfirm=Salasana uudelleen
passwordNew=Uusi salasana
passwordNewConfirm=Uusi salasana uudelleen
rememberMe=Muista minut
authenticatorCode=Kertak\u00e4ytt\u00f6koodi
address=Osoite
street=Katu
locality=Kaupunki
region=Osavaltio, Provinssi, tai Alue
postal_code=Postinumero
country=Maa
emailVerified=S\u00e4hk\u00f6posti vahvistettu
website=Verkkosivu
phoneNumber=Puhelinnumero
phoneNumberVerified=Puhelinnumero varmennettu
gender=Sukupuoli
birthday=Syntym\u00e4p\u00e4iv\u00e4
zoneinfo=Aikavy\u00f6hyke
gssDelegationCredential=GSS Delegation Credential
logoutOtherSessions=Kirjaudu ulos muilta laitteilta
profileScopeConsentText=K\u00e4ytt\u00e4j\u00e4n profiili
emailScopeConsentText=S\u00e4hk\u00f6postiosoite
addressScopeConsentText=Osoite
phoneScopeConsentText=Puhelinnumero
offlineAccessScopeConsentText=Offline-k\u00e4ytt\u00f6
samlRoleListScopeConsentText=Omat roolit
rolesScopeConsentText=K\u00e4ytt\u00e4j\u00e4roolit
restartLoginTooltip=Aloita kirjautuminen alusta
loginTotpIntro=Sinun t\u00e4ytyy asentaa OTP (One Time Password) luontity\u00f6kalu p\u00e4\u00e4st\u00e4ksesi t\u00e4lle tilille
loginTotpStep1=Asenna yksi seuraavista sovelluksista puhelimeesi\:
loginTotpStep2=Avaa sovellus ja skannaa viivakoodi
loginTotpStep3=Liit\u00e4 sovelluksesta saatu kertaluontoinen koodi ja paina L\u00e4het\u00e4 viimeistell\u00e4ksesi asennuksen
loginTotpStep3DeviceName=Anna laitteelle nimi, jotta voit hallinnoida OTP-laitteitasi.
loginTotpManualStep2=Avaa sovellus ja liit\u00e4 avain
loginTotpManualStep3=K\u00e4yt\u00e4 seuraavia konfiguraatioarvoja jos sovellus antaa asettaa ne\:
loginTotpUnableToScan=Ongelmia skannauksessa?
loginTotpScanBarcode=Skannaa viivakoodi?
loginCredential=Kirjautumistieto
loginTotpOneTime=Kertaluontoinen koodi
loginTotpType=Tyyppi
loginTotpAlgorithm=Algoritmi
loginTotpDigits=Numerot
loginTotpInterval=Intervalli
loginTotpCounter=Laskuri
loginTotpDeviceName=Laitteen nimi
loginTotp.totp=Aikapohjainen
loginTotp.hotp=Laskuripohjainen
loginChooseAuthenticator=Valitse kirjautumistapa
oauthGrantRequest=My\u00f6nn\u00e4tk\u00f6 n\u00e4m\u00e4 k\u00e4ytt\u00f6oikeudet?
inResource=in
oauth2DeviceVerificationTitle=Laitekirjautuminen
verifyOAuth2DeviceUserCode=Liit\u00e4 laitteeltasi saamasi kertaluontoinen koodi ja paina L\u00e4het\u00e4
oauth2DeviceInvalidUserCodeMessage=Virheellinen koodi. yrit\u00e4 uudelleen.
oauth2DeviceExpiredUserCodeMessage=Koodi on vanhentunut. Ole hyv\u00e4 ja mene takaisin laitteellesi ja yrit\u00e4 yhdist\u00e4mist\u00e4 uudellleen.
oauth2DeviceVerificationCompleteHeader=Laitekirjautuminen onnistui
oauth2DeviceVerificationCompleteMessage=Voit sulkea t\u00e4m\u00e4n ikkunan ja menn\u00e4 takaisin laitteellesi.
oauth2DeviceVerificationFailedHeader=Laitekirjautuminen ep\u00e4onnistui
oauth2DeviceVerificationFailedMessage=Voit sulkea t\u00e4m\u00e4n ikkunan, menn\u00e4 takaisin laitteellesi ja yritt\u00e4\u00e4 kirjautumista uudelleen.
oauth2DeviceConsentDeniedMessage=Laitteen kirjautumisen suostumus ev\u00e4tty.
oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
emailVerifyInstruction1=S\u00e4hk\u00f6postin vahvistamisohjeet sis\u00e4lt\u00e4v\u00e4 viesti on l\u00e4hetetty s\u00e4hk\u00f6postiisi.
emailVerifyInstruction2=Etk\u00f6 ole saanut vahvistuskoodia s\u00e4hk\u00f6postiisi?
emailVerifyInstruction3=saadaksesi uuden s\u00e4hk\u00f6postiviestin.
emailLinkIdpTitle=Linkit\u00e4 {0}
emailLinkIdp1=Sinulle on l\u00e4hetetty ohjeet tunnuksen linkitt\u00e4miseen palvelun {0} kanssa.
emailLinkIdp2=Etk\u00f6 saanut vahvistuskoodia s\u00e4hk\u00f6postiisi?
emailLinkIdp3=saadaksesi uuden s\u00e4hk\u00f6postiviestin.
emailLinkIdp4=Jos olet jo vahvistanut s\u00e4hk\u00f6postisi toisella selaimella,
emailLinkIdp5=jatkaaksesi.
backToLogin=&laquo; Takaisin kirjautumiseen
emailInstruction=Sy\u00f6t\u00e4 k\u00e4ytt\u00e4j\u00e4tunnuksesi tai s\u00e4hk\u00f6postiosoitteesi niin l\u00e4het\u00e4mme sinulle ohjeet salasanan palauttamista varten.
emailInstructionUsername=Sy\u00f6t\u00e4 k\u00e4ytt\u00e4j\u00e4nimesi niin l\u00e4het\u00e4mme sinulle ohjeet uuden salasanan luomiseksi.
copyCodeInstruction=Ole hyv\u00e4 ja kopioi t\u00e4m\u00e4 koodi ja liit\u00e4 se sovellukseesi\:
pageExpiredTitle=Sivu on vanhentunut
pageExpiredMsg1=Aloita kirjautuminen alusta
pageExpiredMsg2=Jatka kirjautumista
personalInfo=Henkil\u00f6kohtaiset tiedot\:
role_admin=J\u00e4rjestelm\u00e4nvalvoja
role_realm-admin=Realm J\u00e4rjestelm\u00e4nvalvoja
role_create-realm=Luo realm
role_create-client=Luo asiakas
role_view-realm=N\u00e4yt\u00e4 realm
role_view-users=N\u00e4yt\u00e4 k\u00e4ytt\u00e4j\u00e4t
role_view-applications=N\u00e4yt\u00e4 sovellukset
role_view-clients=N\u00e4yt\u00e4 asiakkaat
role_view-events=N\u00e4yt\u00e4 tapahtumat
role_view-identity-providers=N\u00e4yt\u00e4 henkil\u00f6llisyyden tarjoajat
role_manage-realm=Hallinnoi realmia
role_manage-users=Hallinnoi k\u00e4ytt\u00e4ji\u00e4
role_manage-applications=Hallinnoi sovelluksia
role_manage-identity-providers=Hallinnoi henkil\u00f6llisyyden tarjoajia
role_manage-clients=Hallinnoi asiakkaita
role_manage-events=Hallinnoi tapahtumia
role_view-profile=N\u00e4yt\u00e4 profiili
role_manage-account=Hallitse tili\u00e4
role_manage-account-links=Hallitse tilin linkkej\u00e4
role_read-token=Lue token
role_offline-access=Offline-p\u00e4\u00e4sy
client_account=Tili
client_account-console=Tilin konsoli
client_security-admin-console=Turvallisuus-hallintapaneeli
client_admin-cli=Admin CLI
client_realm-management=Realm Hallinta
client_broker=Broker
requiredFields=Vaaditut kent\u00e4t
invalidUserMessage=Virheellinen k\u00e4ytt\u00e4j\u00e4tunnus tai salasana.
invalidUsernameMessage=V\u00e4\u00e4r\u00e4 salasana.
invalidUsernameOrEmailMessage=V\u00e4\u00e4r\u00e4 salasana tai s\u00e4hk\u00f6posti.
invalidPasswordMessage=V\u00e4\u00e4r\u00e4 salasana.
invalidEmailMessage=Virheellinen s\u00e4hk\u00f6postiosoite.
accountDisabledMessage=Tili on poistettu k\u00e4yt\u00f6st\u00e4, ota yhteytt\u00e4 j\u00e4rjestelm\u00e4nvalvojaan.
accountTemporarilyDisabledMessage=Tili on v\u00e4liaikaisesti poissa k\u00e4yt\u00f6st\u00e4, ota yhteytt\u00e4 j\u00e4rjestelm\u00e4nvalvojaan tai yrit\u00e4 my\u00f6hemmin uudelleen.
expiredCodeMessage=Kirjautuminen kesti liian kauan. Ole hyv\u00e4 ja kirjaudu uudestaan.
expiredActionMessage=Toiminto kesti liian kauan. Ole hyv\u00e4 ja jatka kirjautumiseen.
expiredActionTokenNoSessionMessage=Toiminto vanhentui.
expiredActionTokenSessionExistsMessage=Toiminto vanhentui. Aloita alusta.
missingFirstNameMessage=Anna etunimi.
missingLastNameMessage=Anna sukunimi.
missingEmailMessage=Anna s\u00e4hk\u00f6postiosoite.
missingUsernameMessage=Anna k\u00e4ytt\u00e4j\u00e4tunnus.
missingPasswordMessage=Anna salasana.
missingTotpMessage=Ole hyv\u00e4 ja m\u00e4\u00e4rittele todentajan koodi.
missingTotpDeviceNameMessage=Ole hyv\u00e4 ja m\u00e4\u00e4rittele laitteen nimi.
notMatchPasswordMessage=Salasanat eiv\u00e4t t\u00e4sm\u00e4\u00e4.
error-invalid-value=V\u00e4\u00e4r\u00e4 arvo.
error-invalid-blank=Ole hyv\u00e4 ja m\u00e4\u00e4rit\u00e4 arvo.
error-empty=Ole hyv\u00e4 ja m\u00e4\u00e4rit\u00e4 arvo.
error-invalid-length=Ominaisuudella {0} t\u00e4ytyy olla pituus v\u00e4lilt\u00e4 {1} ja {2}.
error-invalid-length-too-short=Ominaisuudella {0} t\u00e4ytyy olla minimipituus {1}.
error-invalid-length-too-long=Ominaisuudella {0} t\u00e4ytyy olla maksimipituus {2}.
error-invalid-email=V\u00e4\u00e4r\u00e4 s\u00e4hk\u00f6postiosoite.
error-invalid-number=V\u00e4\u00e4r\u00e4 numero.
error-number-out-of-range=Ominaisuuden {0} t\u00e4ytyy olla numero v\u00e4lilt\u00e4 {1} ja {2}.
error-number-out-of-range-too-small=Ominaisuudella {0} t\u00e4ytyy olla minimiarvona {1}.
error-number-out-of-range-too-big=Ominaisuudella {0} t\u00e4ytyy olla maksimiarvona {2}.
error-pattern-no-match=V\u00e4\u00e4r\u00e4 arvo.
error-invalid-uri=V\u00e4\u00e4r\u00e4 URL.
error-invalid-uri-scheme=V\u00e4\u00e4r\u00e4 URL\:n malli.
error-invalid-uri-fragment=V\u00e4\u00e4r\u00e4 URL\:n osa.
error-user-attribute-required=Ole hyv\u00e4 ja m\u00e4\u00e4rit\u00e4 ominaisuus {0}.
error-invalid-date=V\u00e4\u00e4r\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4.
error-user-attribute-read-only=Kentt\u00e4 {0} on "vain luku"-tilassa.
error-username-invalid-character=K\u00e4ytt\u00e4j\u00e4nimi sis\u00e4lt\u00e4\u00e4 v\u00e4\u00e4ri\u00e4 merkkej\u00e4.
error-person-name-invalid-character=Nimi sis\u00e4lt\u00e4\u00e4 v\u00e4\u00e4ri\u00e4 merkkej\u00e4.
invalidPasswordExistingMessage=Vanha salasana on virheellinen.
invalidPasswordBlacklistedMessage=V\u00e4\u00e4r\u00e4 salasana\: salasana on lis\u00e4tty mustalle listalle.
invalidPasswordConfirmMessage=Salasanan vahvistus ei t\u00e4sm\u00e4\u00e4.
invalidTotpMessage=V\u00e4\u00e4r\u00e4 todentaja-koodi.
usernameExistsMessage=K\u00e4ytt\u00e4j\u00e4nimi on varattu.
emailExistsMessage=S\u00e4hk\u00f6postiosoite on jo k\u00e4yt\u00f6ss\u00e4.
federatedIdentityExistsMessage=K\u00e4ytt\u00e4j\u00e4 {0} {1} on jo olemassa. Kirjaudu tilihallintaan linkitt\u00e4\u00e4ksesi tilin.
federatedIdentityUnavailableMessage=K\u00e4ytt\u00e4j\u00e4 {0} joka on tunnistettu henkil\u00f6llisyyden tarjoajalla {1} ei ole olemassa. Ota yhteytt\u00e4 j\u00e4rjestelm\u00e4nvalvojaan.
confirmLinkIdpTitle=K\u00e4ytt\u00e4j\u00e4tunnus on jo olemassa
federatedIdentityConfirmLinkMessage=K\u00e4ytt\u00e4j\u00e4tunnus, jolla {0} on {1} on jo olemassa. Kuinka haluat jatkaa?
federatedIdentityConfirmReauthenticateMessage=Tunnistaudu linkitt\u00e4\u00e4ksesi {0}-tilin.
nestedFirstBrokerFlowMessage={0} k\u00e4ytt\u00e4j\u00e4 {1} ei ole linkitetty tunnettuun k\u00e4ytt\u00e4j\u00e4\u00e4n.
confirmLinkIdpReviewProfile=Tarkastele profiilia
confirmLinkIdpContinue=Lis\u00e4\u00e4 olemassa olevaan tiliin
configureTotpMessage=Sinun t\u00e4ytyy asentaa mobiili-todentaja aktivoidaksesi tilin.
updateProfileMessage=Sinun tulee p\u00e4ivitt\u00e4\u00e4 profiilisi aktivoidaksesi tilisi.
updatePasswordMessage=Sinun tulee vaihtaa salasanasi aktivoidaksesi tilisi.
resetPasswordMessage=Sinun tulee p\u00e4ivitt\u00e4\u00e4 salasanasi.
verifyEmailMessage=Sinun tulee vahvistaa s\u00e4hk\u00f6postiosoitteesi aktivoidaksesi tilisi.
linkIdpMessage=Sinun tulee vahvistaa s\u00e4hk\u00f6postiosoitteesi linkitt\u00e4\u00e4ksesi tilin palvelun {0} kanssa.
emailSentMessage=Sinun pit\u00e4isi saada s\u00e4hk\u00f6postiisi lis\u00e4ohjeita hetken kuluttua.
emailSendErrorMessage=S\u00e4hk\u00f6postin l\u00e4hett\u00e4minen ep\u00e4onnistui. Yrit\u00e4 hetken kuluttua uudelleen.
accountUpdatedMessage=K\u00e4ytt\u00e4j\u00e4tiedot p\u00e4ivitetty.
accountPasswordUpdatedMessage=Salasana vaihdettu.
delegationCompleteHeader=Kirjautuminen onnistui
delegationCompleteMessage=Voit sulkea t\u00e4m\u00e4n ikkunan ja siirty\u00e4 takaisin konsolisovellukseen.
delegationFailedHeader=Kirjautuminen ep\u00e4onnistui
delegationFailedMessage=Voit sulkea t\u00e4m\u00e4n selaimen, siirty\u00e4 takaisin konsolisovellukseen ja yritt\u00e4\u00e4 kirjautumista uudelleen.
noAccessMessage=Ei p\u00e4\u00e4sy\u00e4
invalidPasswordMinLengthMessage=Virheellinen salasana\: v\u00e4himm\u00e4ispituus {0}.
invalidPasswordMaxLengthMessage=Virheellinen salasana\: maksimipituus {0}.
invalidPasswordMinDigitsMessage=Virheellinen salasana\: salasanassa tulee olla v\u00e4hint\u00e4\u00e4n {0} numeroa.
invalidPasswordMinLowerCaseCharsMessage=Virheellinen salasana\: salasanassa tulee olla v\u00e4hint\u00e4\u00e4n {0} pient\u00e4 kirjainta.
invalidPasswordMinUpperCaseCharsMessage=Virheellinen salasana\: salasanassa tulee olla v\u00e4hint\u00e4\u00e4n {0} isoa kirjainta.
invalidPasswordMinSpecialCharsMessage=Virheellinen salasana\: salasanassa tulee olla v\u00e4hint\u00e4\u00e4n {0} erikoismerkki\u00e4.
invalidPasswordNotUsernameMessage=Virheellinen salasana\: salasana ei saa olla sama kuin k\u00e4ytt\u00e4j\u00e4tunnus.
invalidPasswordNotEmailMessage=Virheellinen salasana\: ei voi olla sama kuin s\u00e4hk\u00f6posti.
invalidPasswordRegexPatternMessage=Virheellinen salasana\: ei vastaa "regex pattern(s)".
invalidPasswordHistoryMessage=Virheellinen salasana\: salasana ei saa olla sama kuin {0} edellist\u00e4 salasanaasi.
invalidPasswordGenericMessage=Virheellinen salasana\: uusi salasana ei t\u00e4yt\u00e4 salasanavaatimuksia.
failedToProcessResponseMessage=Vastauksen k\u00e4sittely ep\u00e4onnistui
httpsRequiredMessage=HTTPS vaaditaan
realmNotEnabledMessage=Realm ei otettu k\u00e4ytt\u00f6\u00f6n
invalidRequestMessage=Virheellinen pyynt\u00f6
failedLogout=Uloskirjautuminen ep\u00e4onnistui
unknownLoginRequesterMessage=Tuntematon kirjautumispyynn\u00f6n tekij\u00e4
loginRequesterNotEnabledMessage=kirjautumispyynn\u00f6n tekij\u00e4\u00e4 ei ole otettu k\u00e4ytt\u00f6\u00f6n
bearerOnlyMessage="Bearer-only" sovellusten ei ole sallittua aloittaa selainkirjautumista
standardFlowDisabledMessage=Asiakas ei saa aloittaa selainkirjautumista annetulla vastaustyypill\u00e4 ("response_type"). "Standard flow" on poistettu k\u00e4yt\u00f6st\u00e4 asiakkaalla.
implicitFlowDisabledMessage=Asiakas ei saa aloittaa selainkirjautumista annetulla vastaustyypill\u00e4 ("response_type"). "Implicit flow" on poistettu k\u00e4yt\u00f6st\u00e4 asiakkaalla.
invalidRedirectUriMessage=Virheellinen uudelleenohjaus-uri
unsupportedNameIdFormatMessage=Ei-tuettu "NameIDFormat"
invalidRequesterMessage=Virheellinen pyynn\u00f6n tekij\u00e4
registrationNotAllowedMessage=Rekister\u00f6inti ei ole sallittu
resetCredentialNotAllowedMessage=Kirjautumistietojen nollaus ei ole sallittu
permissionNotApprovedMessage=Lupaa ei my\u00f6nnetty
noRelayStateInResponseMessage="relay state" puuttuu henkil\u00f6llisyyden tarjoajan vastauksesta.
insufficientPermissionMessage=Riitt\u00e4m\u00e4tt\u00f6m\u00e4t oikeudet henkil\u00f6llisyyksien linkitt\u00e4miseksi.
couldNotProceedWithAuthenticationRequestMessage=Tunnistuspyynt\u00f6\u00e4 henkil\u00f6llisyyden tarjoajalle ei voitu jatkaa.
couldNotObtainTokenMessage=Ei voitu saada tokenia henkil\u00f6llisyyden tarjoajalta.
unexpectedErrorRetrievingTokenMessage=Odottamaton virhe hankkiessa tokenia henkil\u00f6llisyyden tarjoajalta.
unexpectedErrorHandlingResponseMessage=Odottamaton virhe k\u00e4sitelt\u00e4ess\u00e4 vastausta henkil\u00f6llisyyden tarjoajalta.
identityProviderAuthenticationFailedMessage=Tunnistautuminen ep\u00e4onnistui. Ei voitu tunnistautua henkil\u00f6llisyyden tarjoajan kautta.
identityProviderDifferentUserMessage=Tunnistautunut {0}, vaikka pit\u00e4isi olla tunnistautunut {1}
couldNotSendAuthenticationRequestMessage=Ei voitu l\u00e4hett\u00e4\u00e4 tunnistautumispyynt\u00f6 henkil\u00f6llisyyden tarjoajalle.
unexpectedErrorHandlingRequestMessage=Odottamaton virhe k\u00e4sitelt\u00e4ess\u00e4 tunnistautumispyynt\u00f6 henkil\u00f6llisyyden tarjoajalle.
invalidAccessCodeMessage=Virheellinen p\u00e4\u00e4sykoodi
sessionNotActiveMessage=Istunto ei ole aktiivinen.
invalidCodeMessage=Tapahtui virhe, ole hyv\u00e4 ja kirjaudu uudelleen sovelluksesi kautta.
identityProviderUnexpectedErrorMessage=Tunnistautumisen yhteydess\u00e4 tapahtui virhe tunnistetietojen tarjoajan kanssa.
identityProviderNotFoundMessage=Tunnisteella ei l\u00f6ytynyt henkil\u00f6llisyyden tarjoajaa.
identityProviderLinkSuccess=S\u00e4hk\u00f6postin vahvistus onnistui Ole hyv\u00e4 ja palaa alkuper\u00e4iseen selainikkunaan jatkaaksesi kirjautumista.
staleCodeMessage=T\u00e4m\u00e4 sivu ei ole en\u00e4\u00e4 voimassa, ole hyv\u00e4 ja palaa sovellukseesi ja kirjaudu uudelleen
realmSupportsNoCredentialsMessage=Realm ei tue mit\u00e4\u00e4n kirjautumistiedon tyyppi\u00e4.
credentialSetupRequired=Ei voida kirjautua, kirjautumistietojen asetukset vaaditaan.
identityProviderNotUniqueMessage=Realm tukee useita henkil\u00f6llisyyden tarjoajia. Ei voitu m\u00e4\u00e4ritt\u00e4\u00e4, mit\u00e4 henkil\u00f6llisyyden tarjoajaa pit\u00e4isi k\u00e4ytt\u00e4\u00e4 tunnistautumiseen.
emailVerifiedMessage=S\u00e4hk\u00f6postisi on vahvistettu.
staleEmailVerificationLink=Klikkaamasi linkki on vanhentunut eik\u00e4 en\u00e4\u00e4 toimi. Oletko jo vahvistanut s\u00e4hk\u00f6postisi?
identityProviderAlreadyLinkedMessage=Yhdistetty henkil\u00f6llisyys, mink\u00e4 {0} palautti, on jo linkitetty toiseen k\u00e4ytt\u00e4j\u00e4\u00e4n.
confirmAccountLinking=Vahvista tilin {0} linkitys, henkil\u00f6llisyyden tarjoajalta {1}, tiliisi.
confirmEmailAddressVerification=Vahvista s\u00e4hk\u00f6postiosoitteen {0} voimassaolo.
confirmExecutionOfActions=Suorita seuraavat toiminnot
backToApplication=&laquo; Takaisin sovellukseen
missingParameterMessage=Puuttuva parametri\: {0}
clientNotFoundMessage=Asiakasta ei l\u00f6ytynyt.
clientDisabledMessage=Asiakas ei ole k\u00e4yt\u00f6ss\u00e4.
invalidParameterMessage=Ep\u00e4kelpo parametri\: {0}
alreadyLoggedIn=Olet jo kirjautunut sis\u00e4\u00e4n
differentUserAuthenticated=Olet kirjautunut sis\u00e4\u00e4n tilill\u00e4 ''{0}''. Ole hyv\u00e4 ja kirjaudu ulos ensin.
brokerLinkingSessionExpired=Pyysit tilin yhdist\u00e4mist\u00e4 mutta sessio on vanhentunut.
proceedWithAction=&raquo; Klikkaa t\u00e4st\u00e4 jatkaaksesi
requiredAction.CONFIGURE_TOTP=Konfiguroi OTP
requiredAction.TERMS_AND_CONDITIONS=K\u00e4ytt\u00f6ehdot
requiredAction.UPDATE_PASSWORD=P\u00e4ivit\u00e4 salasana
requiredAction.UPDATE_PROFILE=P\u00e4ivit\u00e4 profiili
requiredAction.VERIFY_EMAIL=Vahvista s\u00e4hk\u00f6posti
doX509Login=Kirjaudut sis\u00e4\u00e4n nimell\u00e4\:
clientCertificate=X509 asiakas-varmenne\:
noCertificate=[No Certificate]
pageNotFound=Sivua ei l\u00f6ytynyt
internalServerError=Tapahtui sis\u00e4inen virhe palvelimella.
console-username=K\u00e4ytt\u00e4j\u00e4nimi\:
console-password=Salasana\:
console-otp=One Time Password\:
console-new-password=Uusi salasana\:
console-confirm-password=Vahvista salana\:
console-update-password=Salasanan p\u00e4ivitys vaaditaan.
console-verify-email=Sinun t\u00e4ytyy vahvistaa s\u00e4hk\u00f6postiosoitteesi. S\u00e4hk\u00f6posti, mik\u00e4 sis\u00e4lt\u00e4\u00e4 vahvistuskoodin, on l\u00e4hetetty osoitteeseen {0}. Ole hyv\u00e4 ja kirjoita t\u00e4m\u00e4 koodi alapuolella olevaan kentt\u00e4\u00e4n.
console-email-code=S\u00e4hk\u00f6posti-koodi\:
console-accept-terms=Hyv\u00e4ksy k\u00e4ytt\u00f6ehdot? [k/e]\:
console-accept=k
openshift.scope.user_info=K\u00e4ytt\u00e4j\u00e4n tiedot
openshift.scope.user_check-access=K\u00e4ytt\u00e4j\u00e4n k\u00e4ytt\u00f6oikeustiedot
openshift.scope.user_full=T\u00e4ysi k\u00e4ytt\u00f6oikeus
openshift.scope.list-projects=Listaa projektit
saml.post-form.title=Tunnistautumisen uudelleenohjaus
saml.post-form.message=Uudelleenohjataan, odota hetki..
saml.post-form.js-disabled=JavaScript on pois k\u00e4yt\u00f6st\u00e4. Suosittelemme vahvasti sen k\u00e4ytt\u00f6\u00f6nottoa. Klikkaa alla olevaa nappia jatkaaksesi.
saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
otp-display-name=Todentajasovellus
otp-help-text=Sy\u00f6t\u00e4 todentajasovelluksen tarjoama vahvistuskoodi.
password-display-name=Salasana
password-help-text=Kirjaudu sis\u00e4\u00e4n sy\u00f6tt\u00e4m\u00e4ll\u00e4 salasanasi.
auth-username-form-display-name=K\u00e4ytt\u00e4j\u00e4nimi
auth-username-form-help-text=Aloita kirjautuminen sy\u00f6tt\u00e4m\u00e4ll\u00e4 k\u00e4ytt\u00e4j\u00e4nimesi
auth-username-password-form-display-name=k\u00e4ytt\u00e4j\u00e4nimi ja salasana
auth-username-password-form-help-text=Kirjaudu sis\u00e4\u00e4n sy\u00f6tt\u00e4m\u00e4ll\u00e4 k\u00e4ytt\u00e4j\u00e4nimi ja salasana.
webauthn-display-name=Turva-avain
webauthn-help-text=K\u00e4yt\u00e4 Turva-avaintasi kirjatuaksesi sis\u00e4\u00e4n.
webauthn-passwordless-display-name=Turva-avain
webauthn-passwordless-help-text=K\u00e4yt\u00e4 Turva-avaintasi kirjatuaksesi sis\u00e4\u00e4n ilman salasanaa.
webauthn-login-title=Turva-avain kirjautuminen
webauthn-registration-title=Turva-avain rekister\u00f6inti
webauthn-available-authenticators=Saatavilla olevat todentajat
webauthn-unsupported-browser-text="WebAuthn" ei ole tuettu t\u00e4ll\u00e4 selaimella. Kokeile jotain toista tai ota yhteytt\u00e4 j\u00e4rjestelm\u00e4nvalvojaan.
webauthn-doAuthenticate=Kirjaudu sis\u00e4\u00e4n Turva-avaimella
webauthn-error-title=Turva-avain virhe
webauthn-error-registration=Turva-avaimen rekister\u00f6inti ep\u00e4onnistui.<br/> {0}
webauthn-error-api-get=Tunnistautuminen Turva-avaimella ep\u00e4onnistui.<br/> {0}
webauthn-error-different-user=Ensiksi tunnistautunut k\u00e4ytt\u00e4j\u00e4 ei ole sama kuin Turva-avaimella tunnistaunut.
webauthn-error-auth-verification=Turva-avain -tunnistautumisen tulos on virheellinen.<br/> {0}
webauthn-error-register-verification=Turva-avaimen rekister\u00f6innin tulos on virheellinen.<br/> {0}
webauthn-error-user-not-found=Tuntematon k\u00e4ytt\u00e4j\u00e4 tunnistautui Turva-avaimella.
identity-provider-redirector=Yhdist\u00e4 k\u00e4ytt\u00e4m\u00e4ll\u00e4 toista henkil\u00f6llisyyden tarjoajaa
identity-provider-login-label=Tai kirjaudu jollain n\u00e4ist\u00e4\:
finalDeletionConfirmation=Jos poistat tilisi, sit\u00e4 ei voida en\u00e4\u00e4 palauttaa. S\u00e4ilytt\u00e4\u00e4ksesi tilisi, paina Peruuta.
irreversibleAction=T\u00e4t\u00e4 toimintoa ei voi peruuttaa
deleteAccountConfirm=Tilin poistamisen vahvistus
deletingImplies=Tilin poisto tarkoittaa sit\u00e4, ett\u00e4\:
errasingData=Kaikki tietosi poistetaan
loggingOutImmediately=Sinut kirjataan ulos v\u00e4litt\u00f6m\u00e4sti
accountUnusable=T\u00e4m\u00e4n sovelluksen k\u00e4ytt\u00f6 ei my\u00f6hemmin en\u00e4\u00e4 ole mahdollista t\u00e4ll\u00e4 k\u00e4ytt\u00e4j\u00e4tilill\u00e4
userDeletedSuccessfully=K\u00e4ytt\u00e4j\u00e4 poistettu onnistuneesti
access-denied=P\u00e4\u00e4sy ev\u00e4tty
readOnlyUsernameMessage=Et voi p\u00e4ivitt\u00e4\u00e4 k\u00e4ytt\u00e4j\u00e4nime\u00e4si, koska se on "vain-luku"-tilassa.
shouldBeEqual={0} pit\u00e4isi olla yht\u00e4 suuri kuin {1}
shouldBeDifferent={0} pit\u00e4isi olla erilainen kuin {1}
shouldMatchPattern=Mallin tulisi vastata\: `/{0}/`
mustBeAnInteger=On oltava kokonaisluku
notAValidOption=Ei ole kelvollinen vaihtoehto
selectAnOption=Valitse vaihtoehto
remove=Poista
addValue=Lis\u00e4\u00e4 arvo
languages=Kielet

View File

@ -0,0 +1,391 @@
doLogIn=Connexion
doRegister=Enregistrement
doRegisterSecurityKey=Enregistrement
doCancel=Annuler
doSubmit=Soumettre
doBack=Retour
doYes=Oui
doNo=Non
doContinue=Continuer
doIgnore=Ignorer
doAccept=Accepter
doDecline=D\u00e9cliner
doForgotPassword=Mot de passe oubli\u00e9 ?
doClickHere=Cliquez ici
doImpersonate=Usurper l''identit\u00e9
doTryAgain=R\u00e9essayer
doTryAnotherWay=Essayer une autre m\u00e9thode
doConfirmDelete=Confirmer la suppression
errorDeletingAccount=Erreur lors de la suppression du compte
deletingAccountForbidden=Permissions insuffisantes pour supprimer votre propre compte, contactez un administrateur.
kerberosNotConfigured=Kerberos non configur\u00e9
kerberosNotConfiguredTitle=Kerberos non configur\u00e9
bypassKerberosDetail=Si vous n''\u00eates pas connect\u00e9 via Kerberos ou bien que votre navigateur n''est pas configur\u00e9 pour la connexion via Kerberos. Veuillez cliquer pour vous connecter via un autre moyen.
kerberosNotSetUp=Kerberos n''est pas configur\u00e9. Connexion impossible.
registerTitle=S''enregistrer
loginAccountTitle=Connectez-vous \u00e0 votre compte
registerWithTitle=Enregistrement avec {0}
registerWithTitleHtml={0}
loginTitle=Se connecter \u00e0 {0}
loginTitleHtml={0}
impersonateTitle={0} utilisateur usurp\u00e9
impersonateTitleHtml=<strong>{0}</strong> utilisateur usurp\u00e9
realmChoice=Domaine
unknownUser=Utilisateur inconnu
loginTotpTitle=Configuration de l''authentification par mobile
loginProfileTitle=Mise \u00e0 jour du compte
loginIdpReviewProfileTitle=V\u00e9rifiez vos informations de profil
loginTimeout=Le temps imparti pour la connexion est \u00e9coul\u00e9. Le processus de connexion red\u00e9marre depuis le d\u00e9but.
oauthGrantTitle=Accorder l''acc\u00e8s \u00e0 {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Assurez-vous de faire confiance \u00e0 {0} en apprenant comment {0} traitera vos donn\u00e9es.
oauthGrantReview=Vous pourriez examiner
oauthGrantTos=les conditions g\u00e9n\u00e9rales d''utilisation.
oauthGrantPolicy=la politique de confidentialit\u00e9.
errorTitle=Nous sommes d\u00e9sol\u00e9s...
errorTitleHtml=Nous sommes <strong>d\u00e9sol\u00e9s</strong>...
emailVerifyTitle=V\u00e9rification du courriel
emailForgotTitle=Mot de passe oubli\u00e9 ?
updateEmailTitle=Mise \u00e0 jour du courriel
emailUpdateConfirmationSentTitle=Courriel de confirmation envoy\u00e9
emailUpdateConfirmationSent=Un courriel de confirmation a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0}. Vous devez suivre les instructions de ce dernier afin de compl\u00e9ter la mise \u00e0 jour.
emailUpdatedTitle=Adresse courriel mis \u00e0 jour
emailUpdated=La mise \u00e0 jour de votre adresse courriel vers {0} a \u00e9t\u00e9 compl\u00e9t\u00e9e avec succ\u00e8s.
updatePasswordTitle=Mise \u00e0 jour du mot de passe
codeSuccessTitle=Code succ\u00e8s
codeErrorTitle=Code d''erreur \: {0}
displayUnsupported=Type d''affichage demand\u00e9 non support\u00e9
browserRequired=Navigateur requis pour se connecter
browserContinue=Navigateur requis pour continuer la connexion
browserContinuePrompt=Ouvrir le navigateur et continuer la connexion? [y/n]\:
browserContinueAnswer=y
termsTitle=Termes et Conditions
termsTitleHtml=Termes et Conditions
termsText=
termsPlainText=Termes et conditions \u00e0 d\u00e9finir
termsAcceptanceRequired=Vous devez accepter les termes et conditions.
acceptTerms=J''accepte les termes et conditions
recaptchaFailed=Re-captcha invalide
recaptchaNotConfigured=Re-captcha est requis, mais il n''est pas configur\u00e9
consentDenied=Consentement refus\u00e9.
noAccount=Nouvel utilisateur ?
username=Nom d''utilisateur
usernameOrEmail=Nom d''utilisateur ou courriel
firstName=Pr\u00e9nom
givenName=Pr\u00e9nom
fullName=Nom complet
lastName=Nom
familyName=Nom de famille
email=Courriel
password=Mot de passe
passwordConfirm=Confirmation du mot de passe
passwordNew=Nouveau mot de passe
passwordNewConfirm=Confirmation du nouveau mot de passe
rememberMe=Se souvenir de moi
authenticatorCode=Code \u00e0 usage unique
address=Adresse
street=Rue
locality=Ville ou Localit\u00e9
region=\u00c9tat, Province ou R\u00e9gion
postal_code=Code postal
country=Pays
emailVerified=Courriel v\u00e9rifi\u00e9
website=Page web
phoneNumber=Num\u00e9ro de t\u00e9l\u00e9phone
phoneNumberVerified=Num\u00e9ro de t\u00e9l\u00e9phone v\u00e9rifi\u00e9
gender=Sexe
birthday=Date de naissance
zoneinfo=Fuseau horaire
gssDelegationCredential=Accr\u00e9ditation de d\u00e9l\u00e9gation GSS
logoutOtherSessions=Se d\u00e9connecter des autres appareils
profileScopeConsentText=Profil utilisateur
emailScopeConsentText=Courriel
addressScopeConsentText=Adresse
phoneScopeConsentText=Num\u00e9ro de t\u00e9l\u00e9phone
offlineAccessScopeConsentText=Acc\u00e8s hors-ligne
samlRoleListScopeConsentText=Mes r\u00f4les
rolesScopeConsentText=R\u00f4les utilisateur
restartLoginTooltip=Red\u00e9marrer la connexion
loginTotpIntro=Il est n\u00e9cessaire de configurer un g\u00e9n\u00e9rateur One Time Password pour acc\u00e9der \u00e0 ce compte
loginTotpStep1=Installez une des applications suivantes sur votre mobile\:
loginTotpStep2=Ouvrez l''application et scannez le code-barres ou entrez la clef.
loginTotpStep3=Entrez le code \u00e0 usage unique fourni par l''application et cliquez sur Sauvegarder pour terminer.
loginTotpStep3DeviceName=Renseignez un nom d''appareil pour vous aider \u00e0 g\u00e9rer vos a appareils OTP.
loginTotpManualStep2=Ouvrez l''application et saisissez la cl\u00e9
loginTotpManualStep3=Utilisez la configuration de valeur suivante si l''application permet son \u00e9dition
loginTotpUnableToScan=Impossible de scanner?
loginTotpScanBarcode=Scanner le code barre ?
loginCredential=Accr\u00e9ditation
loginOtpOneTime=Code \u00e0 usage unique
loginTotpType=Type
loginTotpAlgorithm=Algorithme
loginTotpDigits=Chiffres
loginTotpInterval=Intervalle
loginTotpCounter=Compteur
loginTotpDeviceName=Nom d''appareil
loginTotp.totp=Bas\u00e9 sur le temps
loginTotp.hotp=Bas\u00e9 sur les compteurs
loginChooseAuthenticator=S\u00e9lectionnez une m\u00e9thode de connexion
oauthGrantRequest=Voulez-vous accorder ces privil\u00e8ges d''acc\u00e8s ?
inResource=dans
oauth2DeviceVerificationTitle=Connexion de l''appareil
verifyOAuth2DeviceUserCode=Entrez le code \u00e0 usage unique fourni par votre appareil et cliquez sur Soumettre.
oauth2DeviceInvalidUserCodeMessage=Code invalide, veuillez r\u00e9essayer.
oauth2DeviceExpiredUserCodeMessage=Le code a expir\u00e9. Veuillez r\u00e9essayer de vous connecter depuis votre appareil.
oauth2DeviceVerificationCompleteHeader=Connexion de l''appareil r\u00e9ussie
oauth2DeviceVerificationCompleteMessage=Vous pouvez fermer cette fen\u00eatre de navigateur et retourner sur votre appareil.
oauth2DeviceVerificationFailedHeader=\u00c9chec de la connexion au dispositif
oauth2DeviceVerificationFailedMessage=Vous pouvez fermer cette fen\u00eatre de navigateur et retourner sur votre appareil, puis r\u00e9essayer de vous connecter.
oauth2DeviceConsentDeniedMessage=Consentement refus\u00e9 pour connecter l''appareil.
oauth2DeviceAuthorizationGrantDisabledMessage=Le client n''est pas autoris\u00e9 \u00e0 initier OAuth 2.0 Device Authorization Grant. Le flux est d\u00e9sactiv\u00e9 pour ce client.
emailVerifyInstruction1=Un courriel avec des instructions \u00e0 suivre a \u00e9t\u00e9 envoy\u00e9 \u00e0 votre adresse {0}.
emailVerifyInstruction2=Vous n''avez pas re\u00e7u de code dans le courriel ?
emailVerifyInstruction3=pour renvoyer le courriel.
emailLinkIdpTitle=Association avec {0}
emailLinkIdp1=Un courriel avec des instructions pour associer le compte {1} sur {0} avec votre compte {2} vous a \u00e9t\u00e9 envoy\u00e9.
emailLinkIdp2=Vous n''avez pas re\u00e7u de code dans le courriel ?
emailLinkIdp3=pour renvoyer le courriel.
emailLinkIdp4=Si vous avez d\u00e9j\u00e0 v\u00e9rifi\u00e9 votre courriel dans un autre navigateur
emailLinkIdp5=pour continuer.
backToLogin=&laquo; Retour \u00e0 la connexion
emailInstruction=Entrez votre nom d''utilisateur ou votre courriel ; un courriel va vous \u00eatre envoy\u00e9 vous permettant de cr\u00e9er un nouveau mot de passe.
emailInstructionUsername=Entrez votre nom d''utilisateur ; un courriel va vous \u00eatre envoy\u00e9 vous permettant de cr\u00e9er un nouveau mot de passe.
copyCodeInstruction=Copiez le code et recopiez le dans votre application \:
pageExpiredTitle=La page a expir\u00e9
pageExpiredMsg1=Pour recommencer le processus d''authentification
pageExpiredMsg2=Pour continuer le processus d''authentification
personalInfo=Information personnelle \:
role_admin=Administrateur
role_realm-admin=Administrateur du domaine
role_create-realm=Cr\u00e9er un domaine
role_create-client=Cr\u00e9er un client
role_view-realm=Voir un domaine
role_view-users=Voir les utilisateurs
role_view-applications=Voir les applications
role_view-clients=Voir les clients
role_view-events=Voir les \u00e9v\u00e9nements
role_view-identity-providers=Voir les fournisseurs d''identit\u00e9
role_manage-realm=G\u00e9rer le domaine
role_manage-users=G\u00e9rer les utilisateurs
role_manage-applications=G\u00e9rer les applications
role_manage-identity-providers=G\u00e9rer les fournisseurs d''identit\u00e9
role_manage-clients=G\u00e9rer les clients
role_manage-events=G\u00e9rer les \u00e9v\u00e9nements
role_view-profile=Voir le profil
role_manage-account=G\u00e9rer le compte
role_manage-account-links=G\u00e9rer les liens de compte
role_read-token=Lire le jeton d''authentification
role_offline-access=Acc\u00e8s hors-ligne
client_account=Compte
client_account-console=Console de gestion du compte
client_security-admin-console=Console d''administration de la s\u00e9curit\u00e9
client_admin-cli=Admin CLI
client_realm-management=Gestion du domaine
client_broker=Broker
requiredFields=Champs requis
invalidUserMessage=Nom d''utilisateur ou mot de passe invalide.
invalidUsernameMessage=Nom d''utilisateur invalide.
invalidUsernameOrEmailMessage=Nom d''utilisateur ou courriel invalide.
invalidPasswordMessage=Mot de passe invalide.
invalidEmailMessage=Courriel invalide.
accountDisabledMessage=Compte d\u00e9sactiv\u00e9, contactez votre administrateur.
accountTemporarilyDisabledMessage=Ce compte est temporairement d\u00e9sactiv\u00e9, contactez votre administrateur ou bien r\u00e9essayez plus tard.
expiredCodeMessage=Connexion expir\u00e9e. Veuillez vous reconnecter.
expiredActionMessage=Action expir\u00e9e. Merci de continuer la connexion.
expiredActionTokenNoSessionMessage=Action expir\u00e9e.
expiredActionTokenSessionExistsMessage=Action expir\u00e9e. Merci de recommencer.
missingFirstNameMessage=Veuillez entrer votre pr\u00e9nom.
missingLastNameMessage=Veuillez entrer votre nom.
missingEmailMessage=Veuillez entrer votre courriel.
missingUsernameMessage=Veuillez entrer votre nom d''utilisateur.
missingPasswordMessage=Veuillez entrer votre mot de passe.
missingTotpMessage=Veuillez entrer votre code d''authentification.
missingTotpDeviceNameMessage=Veuillez entrer le nom de votre appareil.
notMatchPasswordMessage=Les mots de passe ne sont pas identiques.
error-invalid-value=Valeur invalide.
error-invalid-blank=Veuillez entrer une valeur.
error-empty=Veuillez entrer une valeur.
error-invalid-length=La longueur doit \u00eatre entre {1} et {2}.
error-invalid-length-too-short=La longueur minimale est {1}.
error-invalid-length-too-long=La longueur maximale est {2}.
error-invalid-email=Courriel invalide.
error-invalid-number=Nombre invalide.
error-number-out-of-range=Le nombre doit \u00eatre entre {1} et {2}.
error-number-out-of-range-too-small=Le nombre doit avoir une valeur minimale de {1}.
error-number-out-of-range-too-big=Le nombre doit avoir une valeur maximale de {2}.
error-pattern-no-match=Valeur invalide.
error-invalid-uri=URL invalide.
error-invalid-uri-scheme=Sch\u00e9ma d''URL invalide.
error-invalid-uri-fragment=Fragment d''URL invalide.
error-user-attribute-required=Veuillez renseigner ce champ.
error-invalid-date=Date invalide.
error-user-attribute-read-only=Ce champ est en lecture seule.
error-username-invalid-character=La valeur contient des caract\u00e8res invalides.
error-person-name-invalid-character=La valeur contient des caract\u00e8res invalides.
invalidPasswordExistingMessage=Mot de passe existant invalide.
invalidPasswordBlacklistedMessage=Mot de passe invalide \: ce mot de passe est blacklist\u00e9.
invalidPasswordConfirmMessage=Le mot de passe de confirmation ne correspond pas.
invalidTotpMessage=Le code d''authentification est invalide.
usernameExistsMessage=Le nom d''utilisateur existe d\u00e9j\u00e0.
emailExistsMessage=Le courriel existe d\u00e9j\u00e0.
federatedIdentityExistsMessage=L''utilisateur avec {0} {1} existe d\u00e9j\u00e0. Veuillez acc\u00e9der \u00e0 au gestionnaire de compte pour lier le compte.
federatedIdentityEmailExistsMessage=Cet utilisateur avec ce courriel existe d\u00e9j\u00e0. Veuillez vous connecter au gestionnaire de compte pour lier le compte.
confirmLinkIdpTitle=Ce compte existe d\u00e9j\u00e0
federatedIdentityConfirmLinkMessage=L''utilisateur {0} {1} existe d\u00e9j\u00e0. Que souhaitez-vous faire ?
federatedIdentityConfirmReauthenticateMessage=Identifiez vous afin de lier votre compte avec {0}
nestedFirstBrokerFlowMessage=L''utilisateur {0} {1} n''est li\u00e9 \u00e0 aucun utilisateur connu.
confirmLinkIdpReviewProfile=V\u00e9rifiez vos informations de profil
confirmLinkIdpContinue=Souhaitez-vous lier {0} \u00e0 votre compte existant
configureTotpMessage=Vous devez configurer l''authentification par mobile pour activer votre compte.
updateProfileMessage=Vous devez mettre \u00e0 jour votre profil pour activer votre compte.
updatePasswordMessage=Vous devez changer votre mot de passe pour activer votre compte.
updateEmailMessage=Vous devez mettre \u00e0 votre addresse de courriel pour activer votre compte.
resetPasswordMessage=Vous devez changer votre mot de passe.
verifyEmailMessage=Vous devez v\u00e9rifier votre courriel pour activer votre compte.
linkIdpMessage=Vous devez v\u00e9rifier votre courriel pour lier votre compte avec {0}.
emailSentMessage=Vous devriez recevoir rapidement un courriel avec de plus amples instructions.
emailSendErrorMessage=Erreur lors de l''envoi du courriel, veuillez essayer plus tard.
accountUpdatedMessage=Votre compte a \u00e9t\u00e9 mis \u00e0 jour.
accountPasswordUpdatedMessage=Votre mot de passe a \u00e9t\u00e9 mis \u00e0 jour.
delegationCompleteHeader=Connexion r\u00e9ussie
delegationCompleteMessage=Vous pouvez fermer cette fen\u00eatre de navigateur et retourner sur votre application console.
delegationFailedHeader=Connexion \u00e9chou\u00e9e
delegationFailedMessage=Vous pouvez fermer cette fen\u00eatre de navigateur et retourner sur votre application console, puis r\u00e9essayer de vous connecter.
noAccessMessage=Aucun acc\u00e8s
invalidPasswordMinLengthMessage=Mot de passe invalide \: longueur minimale requise de {0}.
invalidPasswordMaxLengthMessage=Mot de passe invalide \: longueur maximale de {0}.
invalidPasswordMinDigitsMessage=Mot de passe invalide \: doit contenir au moins {0} chiffre(s).
invalidPasswordMinLowerCaseCharsMessage=Mot de passe invalide \: doit contenir au moins {0} lettre(s) en minuscule.
invalidPasswordMinUpperCaseCharsMessage=Mot de passe invalide \: doit contenir au moins {0} lettre(s) en majuscule.
invalidPasswordMinSpecialCharsMessage=Mot de passe invalide \: doit contenir au moins {0} caract\u00e8re(s) sp\u00e9ciaux.
invalidPasswordNotUsernameMessage=Mot de passe invalide \: ne doit pas \u00eatre identique au nom d''utilisateur.
invalidPasswordNotEmailMessage=Mot de passe invalide\: ne doit pas \u00eatre identique au courriel.
invalidPasswordRegexPatternMessage=Mot de passe invalide \: ne valide pas l''expression rationnelle.
invalidPasswordHistoryMessage=Mot de passe invalide \: ne doit pas \u00eatre \u00e9gal aux {0} derniers mots de passe.
invalidPasswordGenericMessage=Mot de passe invalide \: le nouveau mot de passe ne r\u00e9pond pas \u00e0 la politique de mot de passe.
failedToProcessResponseMessage=Erreur lors du traitement de la r\u00e9ponse
httpsRequiredMessage=Le protocole HTTPS est requis
realmNotEnabledMessage=Le domaine n''est pas activ\u00e9
invalidRequestMessage=Requ\u00eate invalide
successLogout=Vous \u00eates d\u00e9connect\u00e9
failedLogout=La d\u00e9connexion a \u00e9chou\u00e9e
unknownLoginRequesterMessage=Compte inconnu du demandeur
loginRequesterNotEnabledMessage=La connexion du demandeur n''est pas active
bearerOnlyMessage=Les applications Bearer-only ne sont pas autoris\u00e9es \u00e0 initier la connexion par navigateur.
standardFlowDisabledMessage=Le client n''est pas autoris\u00e9 \u00e0 initier une connexion avec le navigateur avec ce response_type. Le flux standard est d\u00e9sactiv\u00e9 pour le client.
implicitFlowDisabledMessage=Le client n''est pas autoris\u00e9 \u00e0 initier une connexion avec le navigateur avec ce response_type. Le flux implicite est d\u00e9sactiv\u00e9 pour le client.
invalidRedirectUriMessage=L''URI de redirection est invalide
unsupportedNameIdFormatMessage=NameIDFormat non support\u00e9
invalidRequesterMessage=Demandeur invalide
registrationNotAllowedMessage=L''enregistrement n''est pas autoris\u00e9
resetCredentialNotAllowedMessage=La remise \u00e0 z\u00e9ro n''est pas autoris\u00e9e
permissionNotApprovedMessage=La permission n''est pas approuv\u00e9e.
noRelayStateInResponseMessage=Aucun \u00e9tat de relais dans la r\u00e9ponse du fournisseur d''identit\u00e9.
insufficientPermissionMessage=Permissions insuffisantes pour lier les identit\u00e9s.
couldNotProceedWithAuthenticationRequestMessage=Impossible de continuer avec la requ\u00eate d''authentification vers le fournisseur d''identit\u00e9.
couldNotObtainTokenMessage=Impossible de r\u00e9cup\u00e9rer le jeton du fournisseur d''identit\u00e9.
unexpectedErrorRetrievingTokenMessage=Erreur inattendue lors de la r\u00e9cup\u00e9ration du jeton provenant du fournisseur d''identit\u00e9.
unexpectedErrorHandlingResponseMessage=Erreur inattendue lors du traitement de la r\u00e9ponse provenant du fournisseur d''identit\u00e9.
identityProviderAuthenticationFailedMessage=L''authentification a \u00e9chou\u00e9e. Impossible de s''authentifier avec le fournisseur d''identit\u00e9.
couldNotSendAuthenticationRequestMessage=Impossible d''envoyer la requ\u00eate d''authentification vers le fournisseur d''identit\u00e9.
unexpectedErrorHandlingRequestMessage=Erreur inattendue lors du traitement de la requ\u00eate vers le fournisseur d''identit\u00e9.
invalidAccessCodeMessage=Code d''acc\u00e8s invalide.
sessionNotActiveMessage=La session n''est pas active.
invalidCodeMessage=Une erreur est survenue, veuillez vous reconnecter \u00e0 votre application.
cookieNotFoundMessage=Cookie introuvable. Assurez-vous que les cookies soient activ\u00e9s dans votre navigateur.
identityProviderUnexpectedErrorMessage=Erreur inattendue lors de l''authentification avec fournisseur d''identit\u00e9.
identityProviderMissingStateMessage=Param\u00e8tre d''\u00e9tat manquant dans la r\u00e9ponse du fournisseur d''identit\u00e9.
identityProviderNotFoundMessage=Impossible de trouver le fournisseur d''identit\u00e9 avec cet identifiant.
identityProviderLinkSuccess=Votre compte a \u00e9t\u00e9 correctement li\u00e9 avec {0} compte {1} .
staleCodeMessage=Cette page n''est plus valide, merci de retourner \u00e0 votre application et de vous connecter \u00e0 nouveau.
realmSupportsNoCredentialsMessage=Ce domaine ne supporte aucun type d''accr\u00e9ditation.
credentialSetupRequired=Connexion impossible, configuration d''accr\u00e9ditation requise.
identityProviderNotUniqueMessage=Ce domaine autorise plusieurs fournisseurs d''identit\u00e9. Impossible de d\u00e9terminer le fournisseur d''identit\u00e9 avec lequel s''authentifier.
emailVerifiedMessage=Votre courriel a \u00e9t\u00e9 v\u00e9rifi\u00e9.
staleEmailVerificationLink=Le lien que vous avez cliqu\u00e9 est p\u00e9rim\u00e9 et n''est plus valide. Peut-\u00eatre avez vous d\u00e9j\u00e0 v\u00e9rifi\u00e9 votre mot de passe ?
identityProviderAlreadyLinkedMessage=L''identit\u00e9 f\u00e9d\u00e9r\u00e9e retourn\u00e9e par {0} est d\u00e9j\u00e0 li\u00e9e \u00e0 un autre utilisateur.
confirmAccountLinking=Confirmez la liaison du compte {0} du fournisseur d''entit\u00e9 {1} avec votre compte.
confirmEmailAddressVerification=Confirmez la validit\u00e9 de l''adresse courriel {0}.
confirmExecutionOfActions=Suivez les instructions suivantes
backToApplication=&laquo; Revenir \u00e0 l''application
missingParameterMessage=Param\u00e8tres manquants \: {0}
clientNotFoundMessage=Client inconnu.
clientDisabledMessage=Client d\u00e9sactiv\u00e9.
invalidParameterMessage=Param\u00e8tre invalide \: {0}
alreadyLoggedIn=Vous \u00eates d\u00e9j\u00e0 connect\u00e9.
differentUserAuthenticated=Vous \u00eates d\u00e9j\u00e0 authentifi\u00e9 avec un autre utilisateur ''{0}'' dans cette session. Merci de vous d\u00e9connecter.
brokerLinkingSessionExpired=La liaison entre comptes broker a \u00e9t\u00e9 demand\u00e9e, mais la session n''est plus valide.
proceedWithAction=\u00bb Cliquez ici
requiredAction.CONFIGURE_TOTP=Configurer OTP
requiredAction.TERMS_AND_CONDITIONS=Termes et conditions
requiredAction.UPDATE_PASSWORD=Mettre \u00e0 jour votre mot de passe
requiredAction.UPDATE_PROFILE=Mettre \u00e0 jour votre profil
requiredAction.VERIFY_EMAIL=Valider votre adresse email
doX509Login=Vous allez \u00eatre connect\u00e9 en tant que\:
clientCertificate=X509 certificat client\:
noCertificate=[Pas de certificat]
pageNotFound=Page non trouv\u00e9e
internalServerError=Une erreur interne du serveur s''est produite
identity-provider-redirector=Connexion avec un autre fournisseur d''identit\u00e9
identity-provider-login-label=Ou se connecter avec
idp-email-verification-display-name=V\u00e9rification du courriel
idp-email-verification-help-text=Lier votre compte en validant votre courriel.
idp-username-password-form-display-name=Nom d''utilisateur et mot de passe
idp-username-password-form-help-text=Lier votre compte en vous connectant.
console-username=Nom d''utilisateur\:
console-password=Mot de passe\:
console-otp=Code \u00e0 usage unique\:
console-new-password=Nouveau mot de passe\:
console-confirm-password=Confirmez les mot de passe\:
console-update-password=La mise \u00e0 jour de votre mot de passe est requise.
console-verify-email=Vous devez v\u00e9rifier votre adresse courriel. Nous avons envoy\u00e9 un courriel \u00e0 {0} contenant un code de v\u00e9rification. Veuillez saisir ce code ci-dessous.
console-email-code=Code courriel\:
console-accept-terms=Accepter les conditions? [o/n]\:
console-accept=o
password-display-name=Mot de passe
password-help-text=Connectez-vous en saisissant votre mot de passe.
auth-username-form-display-name=Nom d''utilisateur
auth-username-form-help-text=Commencez la connexion en saisissant votre nom d''utilisateur.
auth-username-password-form-display-name=Nom d''utilisateur et mot de passe
auth-username-password-form-help-text=Connectez-vous en saisissant votre nom d''utilisateur et votre mot de passe.
webauthn-display-name=Cl\u00e9 de S\u00e9curit\u00e9
webauthn-help-text=Utilisez votre cl\u00e9 de s\u00e9curit\u00e9 pour vous connecter.
webauthn-passwordless-display-name=Cl\u00e9 de S\u00e9curit\u00e9
webauthn-passwordless-help-text=Utilisez votre cl\u00e9 de s\u00e9curit\u00e9 pour vous connecter sans mot de passe.
webauthn-login-title=Connexion avec une Cl\u00e9 de S\u00e9curit\u00e9
webauthn-registration-title=Enregistrement d''une Cl\u00e9 de S\u00e9curit\u00e9
webauthn-available-authenticators=Cl\u00e9s de S\u00e9curit\u00e9 disponibles
webauthn-unsupported-browser-text=WebAuthn n''est pas support\u00e9 par ce navigateur. Essayez une autre m\u00e9thode ou contactez votre administrateur.
webauthn-doAuthenticate=Se connecter avec une Cl\u00e9 de S\u00e9curit\u00e9
webauthn-createdAt-label=Cr\u00e9\u00e9 le
webauthn-error-title=Erreur lors de l''utilisation de la Cl\u00e9 de S\u00e9curit\u00e9
webauthn-error-registration=L''enregistrement de la Cl\u00e9 de S\u00e9curit\u00e9 a \u00e9chou\u00e9.<br/> {0}
webauthn-error-api-get=L''authentification via la Cl\u00e9 de S\u00e9curit\u00e9 a \u00e9chou\u00e9.<br/> {0}
webauthn-error-different-user=Le premier utilisateur authentifi\u00e9 ne correspond pas \u00e0 celui qui est authentifi\u00e9 par la Cl\u00e9 de S\u00e9curit\u00e9.
webauthn-error-auth-verification=Le r\u00e9sultat de l''authentification produite par la cl\u00e9 de s\u00e9curit\u00e9 est invalide.<br/> {0}
webauthn-error-register-verification=Le r\u00e9sultat de l''enregistrement de la cl\u00e9 de s\u00e9curit\u00e9 est invalide.<br/> {0}
webauthn-error-user-not-found=La Cl\u00e9 de S\u00e9curit\u00e9 a authentifi\u00e9 un utilisateur inconnu.
finalDeletionConfirmation=Si vous supprimez votre compte, il ne pourra pas \u00eatre restaur\u00e9. Pour conserver votre compte, cliquez sur Annuler.
irreversibleAction=Cette action est irr\u00e9versible
deleteAccountConfirm=Confirmation de suppression de compte
deletingImplies=Supprimer votre compte implique\:
errasingData=Supprimer toutes vos donn\u00e9es
loggingOutImmediately=Vous d\u00e9connecter imm\u00e9diatement
accountUnusable=Toute utilisation future de l''application sera impossible avec ce compte
userDeletedSuccessfully=Utilisateur supprim\u00e9 avec succ\u00e8s
access-denied=Acc\u00e8s refus\u00e9
frontchannel-logout.title=D\u00e9connexion
frontchannel-logout.message=Vous \u00eates d\u00e9connect\u00e9 des applications suivantes
logoutConfirmTitle=D\u00e9connexion
logoutConfirmHeader=\u00cates-vous s\u00fbr de vouloir vous d\u00e9connecter ?
doLogout=Se d\u00e9connecter
shouldBeEqual={0} devrait \u00eatre \u00e9gal \u00e0 {1}
shouldBeDifferent={0} devrait \u00eatre diff\u00e9rent de {1}
shouldMatchPattern=Le motif devrait correspondre\: `/{0}/`
mustBeAnInteger=Doit \u00eatre un entier
notAValidOption=Pas une option valide
selectAnOption=S\u00e9lectionnez une option
remove=Supprimer
addValue=Ajouter une valeur
languages=Langues

View File

@ -0,0 +1,441 @@
doLogIn=Bel\u00e9p\u00e9s
doRegister=Regisztr\u00e1ci\u00f3
doRegisterSecurityKey=Regisztr\u00e1ci\u00f3
doCancel=M\u00e9gsem
doSubmit=Elk\u00fcld
doBack=Vissza
doYes=Igen
doNo=Nem
doContinue=Folytat
doIgnore=Mell\u0151z
doAccept=Elfogad
doDecline=Elutas\u00edt
doForgotPassword=Elfelejtette a jelszav\u00e1t?
doClickHere=Kattintson ide
doImpersonate=Megszem\u00e9lyes\u00edt\u00e9s
doTryAgain=Pr\u00f3b\u00e1lja \u00fajra
doTryAnotherWay=P\u00f3rb\u00e1lja m\u00e1shogyan
doConfirmDelete=T\u00f6rl\u00e9s meger\u0151s\u00edt\u00e9se
errorDeletingAccount=Hiba t\u00f6rt\u00e9nt a fi\u00f3k t\u00f6rl\u00e9se k\u00f6zben
deletingAccountForbidden=Nincs jogosults\u00e1ga a felhaszn\u00e1l\u00f3i fi\u00f3kj\u00e1nak t\u00f6rl\u00e9s\u00e9hez. K\u00e9rem, vegye fel a kapcsolatot az alkalmaz\u00e1s adminisztr\u00e1tor\u00e1val.
kerberosNotConfigured=Nincs be\u00e1ll\u00edtva Kerberos
kerberosNotConfiguredTitle=Nincs be\u00e1ll\u00edtva Kerberos
bypassKerberosDetail=Vagy nem Kerberosszal l\u00e9pett be, vagy a b\u00f6ng\u00e9sz\u0151je nem kezeli a Kerberos alap\u00fa bel\u00e9p\u00e9st. K\u00e9rem, kattintson a Folytat gombra, egy m\u00e1sik bel\u00e9p\u00e9si m\u00f3dhoz.
kerberosNotSetUp=Nincs be\u00e1ll\u00edtva Kerberos, nem lehet bel\u00e9pni.
registerTitle=Regisztr\u00e1ci\u00f3
loginAccountTitle=Jelentkezzen be a fi\u00f3kj\u00e1ba
loginTitle=Bel\u00e9p\u00e9s ide\: {0}
loginTitleHtml={0}
impersonateTitle={0} megszem\u00e9lyes\u00edtett felhaszn\u00e1l\u00f3
impersonateTitleHtml=<strong>{0}</strong> megszem\u00e9lyes\u00edtett felhaszn\u00e1l\u00f3
realmChoice=Tartom\u00e1ny
unknownUser=Ismeretlen felhaszn\u00e1l\u00f3
loginTotpTitle=Mobil hiteles\u00edt\u0151 eszk\u00f6z be\u00e1ll\u00edt\u00e1sa
loginProfileTitle=Felhaszn\u00e1l\u00f3i fi\u00f3k adatok m\u00f3dos\u00edt\u00e1sa
loginIdpReviewProfileTitle=Fi\u00f3k adatainak m\u00f3dos\u00edt\u00e1sa
loginTimeout=Bel\u00e9p\u00e9si k\u00eds\u00e9rlete id\u0151t\u00fall\u00e9p\u00e9s miatt meghi\u00fasult, a bel\u00e9p\u00e9si elj\u00e1r\u00e1s \u00fajraindul.
reauthenticate=K\u00e9rem, jelentkezzen be \u00fajra a folytat\u00e1shoz
oauthGrantTitle=Hozz\u00e1f\u00e9r\u00e9s enged\u00e9lyez\u00e9se a k\u00f6vetkez\u0151 sz\u00e1m\u00e1ra\: {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Gy\u0151z\u0151dj\u00f6n meg arr\u00f3l, hogy megb\u00edzik a(z) {0} alkalmaz\u00e1sban az\u00e1ltal, hogy megismeri, hogyan kezeli az adatait.
oauthGrantReview=Tekintse \u00e1t
oauthGrantTos=a Felhaszn\u00e1l\u00e1si felt\u00e9teleket.
oauthGrantPolicy=az Adatv\u00e9delmi ir\u00e1nyelveket.
errorTitle=Nagyon sajn\u00e1ljuk...
errorTitleHtml=Nagyon <strong>sajn\u00e1ljuk</strong> ...
emailVerifyTitle=E-mail ellen\u0151rz\u00e9s
emailForgotTitle=Elfelejtette a jelszav\u00e1t?
updateEmailTitle=E-mail c\u00edm m\u00f3dos\u00edt\u00e1sa
emailUpdateConfirmationSentTitle=Meger\u0151s\u00edt\u0151 e-mail elk\u00fcldve
emailUpdateConfirmationSent=Egy meger\u0151s\u00edt\u0151 e-mail ker\u00fclt elk\u00fcld\u00e9sre a(z) {0} c\u00edmre. K\u00f6vesse az abban tal\u00e1lhat\u00f3 utas\u00edt\u00e1sokat a v\u00e1ltoztat\u00e1sok v\u00e9gleges\u00edt\u00e9s\u00e9hez.
emailUpdatedTitle=E-mail c\u00edm m\u00f3dos\u00edtva
emailUpdated=A fi\u00f3k e-mail c\u00edme a k\u00f6vetkez\u0151re m\u00f3dosult\: {0}.
updatePasswordTitle=Jelsz\u00f3 m\u00f3dos\u00edt\u00e1sa
codeSuccessTitle=Sikeres k\u00e9r\u00e9s k\u00f3dja
codeErrorTitle=Hibak\u00f3d\: {0}
displayUnsupported=A k\u00e9rt megjelen\u00edt\u00e9si m\u00f3d nem t\u00e1mogatott
browserRequired=A bel\u00e9p\u00e9shez b\u00f6ng\u00e9sz\u0151 sz\u00fcks\u00e9ges
browserContinue=A bel\u00e9p\u00e9s befejez\u00e9s\u00e9hez b\u00f6ng\u00e9sz\u0151 sz\u00fcks\u00e9ges
browserContinuePrompt=Megnyitja a b\u00f6ng\u00e9sz\u0151t \u00e9s folytatja a bel\u00e9p\u00e9st? [i/n]\:
browserContinueAnswer=i
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=Bels\u0151
unknown=Ismeretlen
termsTitle=Felhaszn\u00e1l\u00e1si felt\u00e9telek
termsText=
termsPlainText=Felhaszn\u00e1l\u00e1si felt\u00e9telek helye
termsAcceptanceRequired=El kell fogadnia a felhaszn\u00e1l\u00e1si felt\u00e9teleket.
acceptTerms=Elfogadom a felhaszn\u00e1l\u00e1si felt\u00e9teleket
recaptchaFailed=\u00c9rv\u00e9nytelen Recaptcha
recaptchaNotConfigured=Recaptcha sz\u00fcks\u00e9ges, de nincsen be\u00e1ll\u00edtva
consentDenied=J\u00f3v\u00e1hagy\u00f3 nyilatkozat elutas\u00edtva.
noAccount=\u00daj felhaszn\u00e1l\u00f3?
username=Felhaszn\u00e1l\u00f3n\u00e9v
usernameOrEmail=Felhaszn\u00e1l\u00f3n\u00e9v vagy email
firstName=Keresztn\u00e9v
givenName=Keresztn\u00e9v
fullName=Teljes n\u00e9v
lastName=Vezet\u00e9kn\u00e9v
familyName=Vezet\u00e9kn\u00e9v
email=E-mail c\u00edm
password=Jelsz\u00f3
passwordConfirm=Jelsz\u00f3 meger\u0151s\u00edt\u00e9se
passwordNew=\u00daj jelsz\u00f3
passwordNewConfirm=\u00daj jelsz\u00f3 meger\u0151s\u00edt\u00e9se
rememberMe=Automatikus bejelentkez\u00e9s
authenticatorCode=Egyszer haszn\u00e1latos hiteles\u00edt\u0151 k\u00f3d
address=C\u00edm
street=K\u00f6zter\u00fclet
locality=Telep\u00fcl\u00e9s
region=\u00c1llam, Tartom\u00e1ny, Megye, R\u00e9gi\u00f3
postal_code=Ir\u00e1ny\u00edt\u00f3sz\u00e1m
country=Orsz\u00e1g
emailVerified=Ellen\u0151rz\u00f6tt e-mail c\u00edm
website=Weboldal
phoneNumber=Telefonsz\u00e1m
phoneNumberVerified=Ellen\u0151rz\u00f6tt telefonsz\u00e1m
gender=Nem
birthday=Sz\u00fclet\u00e9si d\u00e1tum
zoneinfo=Id\u0151z\u00f3na
gssDelegationCredential=GSS deleg\u00e1lt hiteles\u00edt\u00e9s
logoutOtherSessions=Kijelentkez\u00e9s m\u00e1s eszk\u00f6z\u00f6kr\u0151l
profileScopeConsentText=Felhaszn\u00e1l\u00f3i fi\u00f3k
emailScopeConsentText=E-mail c\u00edm
addressScopeConsentText=C\u00edm
phoneScopeConsentText=Telefonsz\u00e1m
offlineAccessScopeConsentText=Offline hozz\u00e1f\u00e9r\u00e9s
samlRoleListScopeConsentText=Szerepk\u00f6reim
rolesScopeConsentText=Felhaszn\u00e1l\u00f3i szerepk\u00f6r\u00f6k
restartLoginTooltip=Bel\u00e9p\u00e9s \u00fajrakezd\u00e9se
loginTotpIntro=A felhaszn\u00e1l\u00f3i fi\u00f3k hozz\u00e1f\u00e9r\u00e9shez be kell \u00e1ll\u00edtania egy egyszer haszn\u00e1latos jelsz\u00f3t (OTP) gener\u00e1l\u00f3 alkalmaz\u00e1st.
loginTotpStep1=K\u00e9rem, telep\u00edtse az itt felsorolt alkalmaz\u00e1sok egyik\u00e9t a mobil eszk\u00f6z\u00e9re\:
loginTotpStep2=Ind\u00edtsa el az alkalmaz\u00e1st a mobil eszk\u00f6z\u00e9n \u00e9s olvassa be ezt a (QR) k\u00f3dot\:
loginTotpStep3=Adja meg az alkalmaz\u00e1s \u00e1ltal gener\u00e1lt egyszer haszn\u00e1latos k\u00f3dot majd kattintson az Elk\u00fcld gombra a be\u00e1ll\u00edt\u00e1s befejez\u00e9s\u00e9hez.
loginTotpStep3DeviceName=Adja meg a mobil eszk\u00f6z nev\u00e9t. Ez a k\u00e9s\u0151bbiekben seg\u00edthet az eszk\u00f6z azonos\u00edt\u00e1s\u00e1ban.
loginTotpManualStep2=Ind\u00edtsa el az alkalmaz\u00e1st \u00e9s adja meg a k\u00f6vetkez\u0151 kulcsot\:
loginTotpManualStep3=Haszn\u00e1lja a k\u00f6vetkez\u0151 be\u00e1ll\u00edt\u00e1sokat, ha az alkalmaz\u00e1sa t\u00e1mogatja ezeket\:
loginTotpUnableToScan=Nem tud (QR) k\u00f3dot beolvasni?
loginTotpScanBarcode=Ink\u00e1bb (QR) k\u00f3dot olvasna be?
loginCredential=Jelsz\u00f3
loginOtpOneTime=Egyszer haszn\u00e1latos k\u00f3d
loginTotpType=T\u00edpus
loginTotpAlgorithm=Algoritmus
loginTotpDigits=Sz\u00e1mjegyek
loginTotpInterval=Intervallum
loginTotpCounter=Sz\u00e1ml\u00e1l\u00f3
loginTotpDeviceName=Eszk\u00f6z neve
loginTotp.totp=Id\u0151 alap\u00fa
loginTotp.hotp=Sz\u00e1ml\u00e1l\u00f3 alap\u00fa
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=V\u00e1lasszon egy bel\u00e9p\u00e9si m\u00f3dszert
oauthGrantRequest=Enged\u00e9lyezi a k\u00f6vetkez\u0151 hozz\u00e1f\u00e9r\u00e9s jogosults\u00e1gokat?
inResource=Itt\:
oauth2DeviceVerificationTitle=Eszk\u00f6z hiteles\u00edt\u00e9se
verifyOAuth2DeviceUserCode=\u00cdrja be az eszk\u00f6z \u00e1ltal gener\u00e1lt k\u00f3dot, majd kattintson az Elk\u00fcld gombra
oauth2DeviceInvalidUserCodeMessage=\u00c9rv\u00e9nytelen k\u00f3d, k\u00e9rem, pr\u00f3b\u00e1lja \u00fajra.
oauth2DeviceExpiredUserCodeMessage=A k\u00f3d \u00e9rv\u00e9nyess\u00e9ge lej\u00e1rt. K\u00e9rem, t\u00e9rjen vissza az eszk\u00f6zh\u00f6z \u00e9s pr\u00f3b\u00e1lja \u00fajra.
oauth2DeviceVerificationCompleteHeader=Eszk\u00f6z hiteles\u00edt\u00e9se sikeres
oauth2DeviceVerificationCompleteMessage=Bez\u00e1rhatja ezt az oldalt \u00e9s visszat\u00e9rhet az eszk\u00f6zh\u00f6z.
oauth2DeviceVerificationFailedHeader=Eszk\u00f6z hiteles\u00edt\u00e9se sikertelen
oauth2DeviceVerificationFailedMessage=Bez\u00e1rhatja ezt az oldalt. K\u00e9rem, t\u00e9rjen vissza az eszk\u00f6zh\u00f6z \u00e9s pr\u00f3b\u00e1ljon meg csatlakozni \u00fajra.
oauth2DeviceConsentDeniedMessage=J\u00f3v\u00e1hagy\u00f3 nyilatkozat elutas\u00edtva az eszk\u00f6z sz\u00e1m\u00e1ra.
oauth2DeviceAuthorizationGrantDisabledMessage=Az alkalmaz\u00e1s nem ind\u00edthat OAuth 2.0 Eszk\u00f6z Hiteles\u00edt\u00e9st. Ez a folyamat nincsen enged\u00e9lyezve ezen alkalmaz\u00e1s sz\u00e1m\u00e1ra.
emailVerifyInstruction1=A megadott e-mail c\u00edmre elk\u00fcldt\u00fck az e-mail c\u00edm meger\u0151s\u00edt\u00e9s\u00e9hez sz\u00fcks\u00e9ges l\u00e9p\u00e9seket tartalmaz\u00f3 \u00fczenetet.
emailVerifyInstruction2=Nem kapott meger\u0151s\u00edt\u0151 k\u00f3dot tartalmaz\u00f3 e-mail \u00fczenetet?
emailVerifyInstruction3=az ellen\u0151rz\u0151 k\u00f3d ism\u00e9telt kik\u00fcld\u00e9s\u00e9hez.
emailLinkIdpTitle={0} \u00f6sszek\u00f6t\u00e9s
emailLinkIdp1=A(z) {1} {0} fi\u00f3k \u00e9s a(z) {2} fi\u00f3kj\u00e1nak \u00f6sszek\u00f6t\u00e9s\u00e9hez sz\u00fcks\u00e9ges tudnival\u00f3kat e-mail \u00fczenetben elk\u00fcldt\u00fck \u00d6nnek.
emailLinkIdp2=Nem kapott meger\u0151s\u00edt\u0151 k\u00f3dot tartalmaz\u00f3 e-mail \u00fczenetet?
emailLinkIdp3=az ellen\u0151rz\u0151 k\u00f3d ism\u00e9telt kik\u00fcld\u00e9s\u00e9hez.
emailLinkIdp4=Ha egy m\u00e1sik b\u00f6ng\u00e9sz\u0151ben m\u00e1r j\u00f3v\u00e1hagyta az e-mail c\u00edm\u00e9t
emailLinkIdp5=a folytat\u00e1shoz.
backToLogin=&laquo; Vissza a bel\u00e9p\u00e9shez
emailInstruction=Adja meg a felhaszn\u00e1l\u00f3nev\u00e9t vagy e-mail c\u00edm\u00e9t, hogy az \u00faj jelsz\u00f3 be\u00e1ll\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges tudnival\u00f3kat elk\u00fcldhess\u00fck \u00d6nnek.
emailInstructionUsername=Adja meg a felhaszn\u00e1l\u00f3nev\u00e9t, hogy az \u00faj jelsz\u00f3 be\u00e1ll\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges tudnival\u00f3kat elk\u00fcldhess\u00fck \u00d6nnek.
copyCodeInstruction=K\u00e9rem, m\u00e1solja ki ezt a k\u00f3dot \u00e9s illessze be az alkalmaz\u00e1s\u00e1ba\:
pageExpiredTitle=A lap \u00e9rv\u00e9nyess\u00e9ge lej\u00e1rt
pageExpiredMsg1=Ahhoz, hogy \u00fajrakezdje a bel\u00e9p\u00e9si elj\u00e1r\u00e1st
pageExpiredMsg2=Ahhoz, hogy folytassa a bel\u00e9p\u00e9si elj\u00e1r\u00e1st
personalInfo=Szem\u00e9lyes adatok\:
role_admin=Adminisztr\u00e1tor
role_realm-admin=Tartom\u00e1ny Adminisztr\u00e1tor
role_create-realm=Tartom\u00e1ny l\u00e9trehoz\u00e1sa
role_create-client=Kliens l\u00e9trehoz\u00e1sa
role_view-realm=Tartom\u00e1nyok megtekint\u00e9se
role_view-users=Felhaszn\u00e1l\u00f3k megtekint\u00e9se
role_view-applications=Alkalmaz\u00e1sok megtekint\u00e9se
role_view-clients=Kliensek megtekint\u00e9se
role_view-events=Esem\u00e9nyek megtekint\u00e9se
role_view-identity-providers=Szem\u00e9lyazonoss\u00e1g-kezel\u0151k megtekint\u00e9se
role_manage-realm=Tartom\u00e1nyok kezel\u00e9se
role_manage-users=Felhaszn\u00e1l\u00f3k kezel\u00e9se
role_manage-applications=Alkalmaz\u00e1sok kezel\u00e9se
role_manage-identity-providers=Szem\u00e9lyazonoss\u00e1g-kezel\u0151k karbantart\u00e1sa
role_manage-clients=Kliensek kezel\u00e9se
role_manage-events=Esem\u00e9nyek kezel\u00e9se
role_view-profile=Fi\u00f3k megtekint\u00e9se
role_manage-account=Fi\u00f3k kezel\u00e9se
role_manage-account-links=Fi\u00f3k \u00f6sszek\u00f6t\u00e9sek kezel\u00e9se
role_read-token=Olvas\u00e1si token
role_offline-access=Offline hozz\u00e1f\u00e9r\u00e9s
client_account=Fi\u00f3k
client_account-console=Fi\u00f3k kezel\u00e9s
client_security-admin-console=Biztons\u00e1gi, adminisztr\u00e1tor fi\u00f3k kezel\u00e9s
client_admin-cli=Admin CLI
client_realm-management=Tartom\u00e1ny kezel\u00e9s
client_broker=\u00dcgyn\u00f6k
requiredFields=K\u00f6telez\u0151en kit\u00f6ltend\u0151 mez\u0151k
invalidUserMessage=\u00c9rv\u00e9nytelen felhaszn\u00e1l\u00f3n\u00e9v vagy jelsz\u00f3.
invalidUsernameMessage=\u00c9rv\u00e9nytelen felhaszn\u00e1l\u00f3n\u00e9v.
invalidUsernameOrEmailMessage=\u00c9rv\u00e9nytelen felhaszn\u00e1l\u00f3n\u00e9v vagy e-mail c\u00edm.
invalidPasswordMessage=\u00c9rv\u00e9nytelen jelsz\u00f3.
invalidEmailMessage=\u00c9rv\u00e9nytelen e-mail c\u00edm.
accountDisabledMessage=Felhaszn\u00e1l\u00f3i fi\u00f3kja inakt\u00edv, k\u00e9rem, vegye fel a kapcsolatot az alkalmaz\u00e1s adminisztr\u00e1tor\u00e1val.
accountTemporarilyDisabledMessage=Felhaszn\u00e1l\u00f3i fi\u00f3kja \u00e1tmenetileg inakt\u00edv, k\u00e9rem, vegye fel a kapcsolatot az alkalmaz\u00e1s adminisztr\u00e1tor\u00e1val, vagy pr\u00f3b\u00e1lkozzon k\u00e9s\u0151bb.
expiredCodeMessage=Bel\u00e9p\u00e9si id\u0151t\u00fall\u00e9p\u00e9s, k\u00e9rem, l\u00e9pjen be \u00fajra.
expiredActionMessage=A m\u0171velet \u00e9rv\u00e9nyess\u00e9gi ideje lej\u00e1rt. K\u00e9rem, l\u00e9pjen be \u00fajra.
expiredActionTokenNoSessionMessage=A m\u0171velet \u00e9rv\u00e9nyess\u00e9gi ideje lej\u00e1rt.
expiredActionTokenSessionExistsMessage=A m\u0171velet \u00e9rv\u00e9nyess\u00e9gi ideje lej\u00e1rt. K\u00e9rem, ism\u00e9telje meg a m\u0171veletet.
sessionLimitExceeded=T\u00fal sok az akt\u00edv munkamenet
missingFirstNameMessage=K\u00e9rem, adja meg a keresztnevet.
missingLastNameMessage=K\u00e9rem, adja meg a vezet\u00e9knevet.
missingEmailMessage=K\u00e9rem, adja meg az e-mail c\u00edmet.
missingUsernameMessage=K\u00e9rem, adja meg a felhaszn\u00e1l\u00f3nev\u00e9t.
missingPasswordMessage=K\u00e9rem, adja meg a jelsz\u00f3t.
missingTotpMessage=K\u00e9rem, adja meg a hiteles\u00edt\u0151 k\u00f3dot.
missingTotpDeviceNameMessage=K\u00e9rem, adja meg az eszk\u00f6z nev\u00e9t.
notMatchPasswordMessage=A jelszavak nem egyeznek meg.
error-invalid-value=\u00c9rv\u00e9nytelen \u00e9rt\u00e9k
error-invalid-blank=K\u00e9rem, adja meg a mez\u0151 \u00e9rt\u00e9k\u00e9t.
error-empty=K\u00e9rem, adja meg a mez\u0151 \u00e9rt\u00e9k\u00e9t.
error-invalid-length=A hossznak {1} \u00e9s {2} karakter k\u00f6z\u00f6tt kell lennie.
error-invalid-length-too-short=A minim\u00e1lis hossz {1} karakter.
error-invalid-length-too-long=A maxim\u00e1lis hossz {2} karakter.
error-invalid-email=\u00c9rv\u00e9nytelen e-mail c\u00edm.
error-invalid-number=\u00c9rv\u00e9nytelen sz\u00e1m.
error-number-out-of-range=A sz\u00e1m {1} \u00e9s {2} k\u00f6z\u00f6tti \u00e9rt\u00e9ket vehet fel.
error-number-out-of-range-too-small=A sz\u00e1m minim\u00e1lis \u00e9rt\u00e9ke\: {1}.
error-number-out-of-range-too-big=A sz\u00e1m maxim\u00e1lis \u00e9rt\u00e9ke\: {2}.
error-pattern-no-match=\u00c9rv\u00e9nytelen \u00e9rt\u00e9k.
error-invalid-uri=\u00c9rv\u00e9nytelen URL.
error-invalid-uri-scheme=\u00c9rv\u00e9nytelen URL s\u00e9ma.
error-invalid-uri-fragment=\u00c9rv\u00e9nytelen URL fragmens.
error-user-attribute-required=K\u00e9rem, t\u00f6ltse ki ezt a mez\u0151t.
error-invalid-date=\u00c9rv\u00e9nytelen d\u00e1tum.
error-user-attribute-read-only=Ez a mez\u0151 csak olvashat\u00f3.
error-username-invalid-character=A felhaszn\u00e1l\u00f3n\u00e9v \u00e9rv\u00e9nytelen karaktert tartalmaz.
error-person-name-invalid-character=A n\u00e9v \u00e9rv\u00e9nytelen karaktert tartalmaz.
error-reset-otp-missing-id=K\u00e9rem, v\u00e1lasszon egyszer haszn\u00e1latos hiteles\u00edt\u00e9si (OTP) elj\u00e1r\u00e1st.
invalidPasswordExistingMessage=\u00c9rv\u00e9nytelen jelenlegi jelsz\u00f3.
invalidPasswordBlacklistedMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: a jelsz\u00f3 tilt\u00f3 list\u00e1n szerepel.
invalidPasswordConfirmMessage=A jelszavak nem egyeznek meg.
invalidTotpMessage=\u00c9rv\u00e9nytelen hiteles\u00edt\u0151 k\u00f3d.
usernameExistsMessage=Ez a felhaszn\u00e1l\u00f3n\u00e9v m\u00e1r foglalt.
emailExistsMessage=Ez az e-mail c\u00edm m\u00e1r foglalt.
federatedIdentityExistsMessage=A megadott {0} {1} felhaszn\u00e1l\u00f3 m\u00e1r l\u00e9tezik. K\u00e9rem, l\u00e9pjen be a Keycloak Fi\u00f3k Kezel\u0151be, hogy \u00f6sszek\u00f6thesse a fi\u00f3kokat.
federatedIdentityUnavailableMessage=A(z) {1} szem\u00e9lyazonoss\u00e1g-kezel\u0151 \u00e1ltal hiteles\u00edtett felhaszn\u00e1l\u00f3, {0} nem l\u00e9tezik. K\u00e9rem, vegye fel a kapcsolatot az alkalmaz\u00e1s adminisztr\u00e1tor\u00e1val.
federatedIdentityUnmatchedEssentialClaimMessage=A szem\u00e9lyazonoss\u00e1g-kezel\u0151 \u00e1ltal ki\u00e1ll\u00edtott ID token nem egyezik az alapvet\u0151 be\u00e1ll\u00edt\u00e1ssal. K\u00e9rem, vegye fel a kapcsolatot az alkalmaz\u00e1s adminisztr\u00e1tor\u00e1val.
confirmLinkIdpTitle=A felhaszn\u00e1l\u00f3i fi\u00f3k m\u00e1r l\u00e9tezik
federatedIdentityConfirmLinkMessage=A megadott {0} {1} felhaszn\u00e1l\u00f3 m\u00e1r l\u00e9tezik. Hogyan tov\u00e1bb?
federatedIdentityConfirmReauthenticateMessage=Azonos\u00edtsa mag\u00e1t, hogy \u00f6sszek\u00f6thesse a felhaszn\u00e1l\u00f3i fi\u00f3kj\u00e1t a k\u00f6vetkez\u0151vel\: {0}
nestedFirstBrokerFlowMessage=A(z) {0} {1} felhaszn\u00e1l\u00f3 nincs \u00f6sszek\u00f6tve egyetlen ismert felhaszn\u00e1l\u00f3val sem.
confirmLinkIdpReviewProfile=Fi\u00f3k \u00e1ttekint\u00e9se
confirmLinkIdpContinue=Hozz\u00e1ad\u00e1s megl\u00e9v\u0151 fi\u00f3khoz
configureTotpMessage=Fi\u00f3kja aktiv\u00e1l\u00e1s\u00e1hoz el\u0151bb be kell \u00e1ll\u00edtania egy mobil hiteles\u00edt\u0151 eszk\u00f6zt.
configureBackupCodesMessage=Fi\u00f3kja aktiv\u00e1l\u00e1s\u00e1hoz el\u0151bb l\u00e9tre kell hoznia Biztons\u00e1gi K\u00f3dokat.
updateProfileMessage=Fi\u00f3kja aktiv\u00e1l\u00e1s\u00e1hoz el\u0151bb m\u00f3dos\u00edtania kell a felhaszn\u00e1l\u00f3i adatait.
updatePasswordMessage=Fi\u00f3kja aktiv\u00e1l\u00e1s\u00e1hoz el\u0151bb le kell cser\u00e9lnie a jelszav\u00e1t.
updateEmailMessage=Fi\u00f3kja aktiv\u00e1l\u00e1s\u00e1hoz el\u0151bb m\u00f3dos\u00edtania kell e-mail c\u00edm\u00e9t.
resetPasswordMessage=Cser\u00e9lje le jelszav\u00e1t\!
verifyEmailMessage=Fi\u00f3kja aktiv\u00e1l\u00e1s\u00e1hoz el\u0151bb er\u0151s\u00edtse meg e-mail c\u00edm\u00e9t.
linkIdpMessage=Fi\u00f3kja \u00f6sszek\u00f6t\u00e9s\u00e9hez el\u0151bb er\u0151s\u00edtse meg e-mail c\u00edm\u00e9t a k\u00f6vetkez\u0151vel\: {0}.
emailSentMessage=Hamarosan e-mail \u00fczenetet k\u00fcld\u00fcnk a tov\u00e1bbi tudnival\u00f3kr\u00f3l.
emailSendErrorMessage=Az e-mail \u00fczenetet nem tudtuk elk\u00fcldeni. K\u00e9rem, pr\u00f3b\u00e1lja meg k\u00e9s\u0151bb.
accountUpdatedMessage=A felhaszn\u00e1l\u00f3i fi\u00f3k adatai megv\u00e1ltoztak.
accountPasswordUpdatedMessage=A jelszava megv\u00e1ltozott.
delegationCompleteHeader=Sikeres bel\u00e9p\u00e9s
delegationCompleteMessage=Becsukhatja a b\u00f6ng\u00e9sz\u0151 ablakot \u00e9s visszat\u00e9rhet a konzolos alkalmaz\u00e1s\u00e1hoz.
delegationFailedHeader=Sikertelen bel\u00e9p\u00e9s
delegationFailedMessage=Becsukhatja a b\u00f6ng\u00e9sz\u0151 ablakot \u00e9s visszat\u00e9rhet a konzolos alkalmaz\u00e1s\u00e1hoz, ahol \u00fajb\u00f3l megpr\u00f3b\u00e1lhat a bel\u00e9pni.
noAccessMessage=Nincs hozz\u00e1f\u00e9r\u00e9s
invalidPasswordMinLengthMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: minimum hossz\: {0}.
invalidPasswordMaxLengthMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: maximum hossz\: {0}.
invalidPasswordMinDigitsMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: legal\u00e1bb {0} darab sz\u00e1mjegyet kell tartalmaznia.
invalidPasswordMinLowerCaseCharsMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: legal\u00e1bb {0} darab kisbet\u0171t kell tartalmaznia.
invalidPasswordMinUpperCaseCharsMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: legal\u00e1bb {0} darab nagybet\u0171t kell tartalmaznia.
invalidPasswordMinSpecialCharsMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: legal\u00e1bb {0} darab speci\u00e1lis karaktert (pl. \#\!$@ stb.) kell tartalmaznia.
invalidPasswordNotUsernameMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: nem lehet azonos a felhaszn\u00e1l\u00f3n\u00e9vvel.
invalidPasswordNotEmailMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: nem lehet azonos az e-mail c\u00edmmel.
invalidPasswordRegexPatternMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: a jelsz\u00f3 nem illeszkedik a megadott regul\u00e1ris kifejez\u00e9s mint\u00e1ra.
invalidPasswordHistoryMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: nem lehet azonos az utols\u00f3 {0} darab, kor\u00e1bban alkalmazott jelsz\u00f3val.
invalidPasswordGenericMessage=\u00c9rv\u00e9nytelen jelsz\u00f3\: az \u00faj jelsz\u00f3 nem felel meg a jelsz\u00f3 h\u00e1zirendnek.
failedToProcessResponseMessage=A v\u00e1lasz \u00fczenet feldolgoz\u00e1sa nem siker\u00fclt.
httpsRequiredMessage=HTTPS protokoll haszn\u00e1lata k\u00f6telez\u0151.
realmNotEnabledMessage=A tartom\u00e1ny inakt\u00edv.
invalidRequestMessage=\u00c9rv\u00e9nytelen k\u00e9r\u00e9s.
successLogout=Sikeres kil\u00e9p\u00e9s.
failedLogout=A kil\u00e9p\u00e9s sikertelen.
unknownLoginRequesterMessage=A bel\u00e9p\u00e9st k\u00e9relmez\u0151 ismeretlen.
loginRequesterNotEnabledMessage=A bel\u00e9p\u00e9st k\u00e9relmez\u0151 inakt\u00edv.
bearerOnlyMessage=Bearer-only alkalmaz\u00e1sok nem kezdem\u00e9nyezhetnek b\u00f6ng\u00e9sz\u0151 alap\u00fa bel\u00e9ptet\u00e9st.
standardFlowDisabledMessage=Ez a kliens nem kezdem\u00e9nyezhet b\u00f6ng\u00e9sz\u0151 alap\u00fa bel\u00e9ptet\u00e9st a megadott v\u00e1lasz t\u00edpussal. A standard bel\u00e9p\u00e9si elj\u00e1r\u00e1s (flow) tiltott a kliensen.
implicitFlowDisabledMessage=Ez a kliens nem kezdem\u00e9nyezhet b\u00f6ng\u00e9sz\u0151 alap\u00fa bel\u00e9ptet\u00e9st a megadott v\u00e1lasz t\u00edpussal. Az implicit bel\u00e9p\u00e9si elj\u00e1r\u00e1s (flow) tiltott a kliensen.
invalidRedirectUriMessage=\u00c9rv\u00e9nytelen \u00e1tir\u00e1ny\u00edt\u00e1si c\u00edm (URI)
unsupportedNameIdFormatMessage=Nem t\u00e1mogatott NameIDFormat
invalidRequesterMessage=\u00c9rv\u00e9nytelen k\u00e9relmez\u0151
registrationNotAllowedMessage=A felhaszn\u00e1l\u00f3 regisztr\u00e1ci\u00f3 tiltott.
resetCredentialNotAllowedMessage=A jelsz\u00f3 vissza\u00e1ll\u00edt\u00e1s tiltott.
permissionNotApprovedMessage=A jogosults\u00e1g nincsen j\u00f3v\u00e1hagyva.
noRelayStateInResponseMessage=Nincsen "relay state" a szem\u00e9lyazonoss\u00e1g-kezel\u0151 v\u00e1lasz\u00fczenet\u00e9ben.
insufficientPermissionMessage=Nincs el\u00e9g jogosults\u00e1g a fi\u00f3kok \u00f6sszek\u00f6t\u00e9s\u00e9hez.
couldNotProceedWithAuthenticationRequestMessage=A szem\u00e9lyazonoss\u00e1g-kezel\u0151 fel\u00e9 ind\u00edtott hiteles\u00edt\u00e9si k\u00e9r\u00e9s sikertelen.
couldNotObtainTokenMessage=Nem siker\u00fclt tokent ig\u00e9nyelni a szem\u00e9lyazonoss\u00e1g-kezel\u0151t\u0151l.
unexpectedErrorRetrievingTokenMessage=V\u00e1ratlan hiba t\u00f6rt\u00e9nt a szem\u00e9lyazonoss\u00e1g-kezel\u0151 token ig\u00e9nyl\u00e9se k\u00f6zben.
unexpectedErrorHandlingResponseMessage=V\u00e1ratlan hiba t\u00f6rt\u00e9nt a szem\u00e9lyazonoss\u00e1g-kezel\u0151 v\u00e1lasz\u00fczenet\u00e9nek feldolgoz\u00e1sa k\u00f6zben.
identityProviderAuthenticationFailedMessage=Nem siker\u00fclt a szem\u00e9lyazonoss\u00e1g-kezel\u0151n kereszt\u00fcl int\u00e9zett hiteles\u00edt\u00e9s.
couldNotSendAuthenticationRequestMessage=Nem siker\u00fclt a szem\u00e9lyazonoss\u00e1g-kezel\u0151h\u00f6z int\u00e9zett hiteles\u00edt\u00e9s k\u00e9r\u00e9s elk\u00fcld\u00e9se.
unexpectedErrorHandlingRequestMessage=V\u00e1ratlan hiba t\u00f6rt\u00e9nt a szem\u00e9lyazonoss\u00e1g-kezel\u0151 hiteles\u00edt\u00e9s k\u00e9r\u00e9s feldolgoz\u00e1sa k\u00f6zben.
invalidAccessCodeMessage=\u00c9rv\u00e9nytelen hozz\u00e1f\u00e9r\u00e9si k\u00f3d.
sessionNotActiveMessage=A munkamenet inakt\u00edv.
invalidCodeMessage=Hiba t\u00f6rt\u00e9nt, k\u00e9rem, l\u00e9pjen be \u00fajra az alkalmaz\u00e1s\u00e1n kereszt\u00fcl.
cookieNotFoundMessage=S\u00fcti nem tal\u00e1lhat\u00f3. K\u00e9rem, ellen\u0151rizze, hogy a b\u00f6ng\u00e9sz\u0151j\u00e9ben enged\u00e9lyezve vannak-e a s\u00fctik.
insufficientLevelOfAuthentication=A k\u00e9rt hiteles\u00edt\u00e9si szint nem teljes\u00fclt
identityProviderUnexpectedErrorMessage=V\u00e1ratlan hiba t\u00f6rt\u00e9nt a szem\u00e9lyazonoss\u00e1g-kezel\u0151n kereszt\u00fcl int\u00e9zett hiteles\u00edt\u00e9s sor\u00e1n.
identityProviderMissingStateMessage=Nincsen "state" a szem\u00e9lyazonoss\u00e1g-kezel\u0151 v\u00e1lasz\u00fczenet\u00e9ben.
identityProviderInvalidResponseMessage=\u00c9rv\u00e9nytelen v\u00e1lasz a szem\u00e9lyazonoss\u00e1g-kezel\u0151t\u0151l.
identityProviderInvalidSignatureMessage=\u00c9rv\u00e9nytelen al\u00e1\u00edr\u00e1s a szem\u00e9lyazonoss\u00e1g-kezel\u0151 v\u00e1lasz\u00fczenet\u00e9ben.
identityProviderNotFoundMessage=A megadott azonos\u00edt\u00f3val szem\u00e9lyazonoss\u00e1g-kezel\u0151 nem tal\u00e1lhat\u00f3.
identityProviderLinkSuccess=Sikeresen meger\u0151s\u00edtette e-mail c\u00edm\u00e9t. K\u00e9rem, t\u00e9rjen vissza az eredeti b\u00f6ng\u00e9sz\u0151j\u00e9be, \u00e9s onnan folytassa a bel\u00e9p\u00e9si elj\u00e1r\u00e1st.
staleCodeMessage=Ez a lap m\u00e1r nem \u00e9rv\u00e9nyes, k\u00e9rem, t\u00e9rjen vissza az alkalmaz\u00e1s\u00e1ba \u00e9s l\u00e9pjen be ism\u00e9t.
realmSupportsNoCredentialsMessage=Ez a tartom\u00e1ny nem t\u00e1mogat jelsz\u00f3 alap\u00fa azonos\u00edt\u00e1st.
credentialSetupRequired=Bel\u00e9p\u00e9s sikertelen, jelsz\u00f3 be\u00e1ll\u00edt\u00e1s sz\u00fcks\u00e9ges.
identityProviderNotUniqueMessage=Ez a tartom\u00e1ny t\u00f6bb szem\u00e9lyazonoss\u00e1g-kezel\u0151t t\u00e1mogat. Nem siker\u00fclt meghat\u00e1rozni, hogy melyik szem\u00e9lyazonoss\u00e1g-kezel\u0151t kellene a hiteles\u00edt\u00e9shez alkalmazni.
emailVerifiedMessage=Az e-mail c\u00edm\u00e9t meger\u0151s\u00edtett\u00fck.
staleEmailVerificationLink=Az a hivatkoz\u00e1s, amelyikre r\u00e1kattintott el\u00e9v\u00fclt \u00e9s \u00e9rv\u00e9ny\u00e9t vesztette. Tal\u00e1n m\u00e1r kor\u00e1bban meger\u0151s\u00edtette az e-mail c\u00edm\u00e9t?
identityProviderAlreadyLinkedMessage=A(z) {0}-t\u00f3l/t\u0151l visszakapott \u00f6sszekapcsolt szem\u00e9lyazonoss\u00e1g m\u00e1r \u00f6ssze van k\u00f6tve egy m\u00e1sik felhaszn\u00e1l\u00f3i fi\u00f3kkal.
confirmAccountLinking=Er\u0151s\u00edtse meg a(z) {0} szem\u00e9lyazonoss\u00e1g-kezel\u0151 {1} fi\u00f3kj\u00e1nak \u00f6sszek\u00f6t\u00e9s\u00e9t a felhaszn\u00e1l\u00f3i fi\u00f3kj\u00e1val.
confirmEmailAddressVerification=Er\u0151s\u00edtse meg a(z) {0} e-mail c\u00edm \u00e9rv\u00e9nyess\u00e9g\u00e9t.
confirmExecutionOfActions=Hajtsa v\u00e9gre a k\u00f6vetkez\u0151 m\u0171velet(ek)et
backToApplication=&laquo; Vissza az alkalmaz\u00e1sba
missingParameterMessage=Hi\u00e1nyz\u00f3 param\u00e9terek\: {0}
clientNotFoundMessage=A kliens nem tal\u00e1lhat\u00f3.
clientDisabledMessage=A kliens inakt\u00edv.
invalidParameterMessage=\u00c9rv\u00e9nytelen param\u00e9ter\: {0}
alreadyLoggedIn=M\u00e1r kor\u00e1bban bel\u00e9pett.
differentUserAuthenticated=Ebben a munkamenetben m\u00e1r kor\u00e1bban bel\u00e9pett ''{0}'' felhaszn\u00e1l\u00f3n\u00e9vvel. K\u00e9rem, el\u0151bb l\u00e9pjen ki a munkamenetb\u0151l.
brokerLinkingSessionExpired=\u00dcgyn\u00f6k fi\u00f3k \u00f6sszek\u00f6t\u00e9st kezdem\u00e9nyezett, de az aktu\u00e1lis munkamenete m\u00e1r \u00e9rv\u00e9nytelen.
proceedWithAction=&raquo; Kattintson ide a folytat\u00e1shoz
acrNotFulfilled=A hiteles\u00edt\u00e9si k\u00f6vetelm\u00e9nyek nem teljes\u00fcltek
requiredAction.CONFIGURE_TOTP=Egyszer haszn\u00e1latos jelsz\u00f3 (OTP) be\u00e1ll\u00edt\u00e1sa
requiredAction.TERMS_AND_CONDITIONS=Felhaszn\u00e1l\u00e1si felt\u00e9telek
requiredAction.UPDATE_PASSWORD=Jelsz\u00f3 csere
requiredAction.UPDATE_PROFILE=Fi\u00f3k adatok m\u00f3dos\u00edt\u00e1sa
requiredAction.VERIFY_EMAIL=E-mail c\u00edm meger\u0151s\u00edt\u00e9se
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Biztons\u00e1gi k\u00f3dok gener\u00e1l\u00e1sa
requiredAction.webauthn-register-passwordless=Jelsz\u00f3 n\u00e9lk\u00fcli WebAuthn regisztr\u00e1l\u00e1sa
invalidTokenRequiredActions=A linkben tal\u00e1lhat\u00f3 sz\u00fcks\u00e9ges m\u0171veletek \u00e9rv\u00e9nytelenek.
doX509Login=Bel\u00e9ptet\u00e9s mint\:
clientCertificate=X509 kliens tan\u00fas\u00edtv\u00e1ny\:
noCertificate=[Nincs tan\u00fas\u00edtv\u00e1ny]
pageNotFound=A k\u00e9rt lap nem tal\u00e1lhat\u00f3
internalServerError=Bels\u0151 hiba t\u00f6rt\u00e9nt
console-username=Felhaszn\u00e1l\u00f3n\u00e9v\:
console-password=Jelsz\u00f3\:
console-otp=Egyszer haszn\u00e1latos jelsz\u00f3 (OTP)\:
console-new-password=\u00daj jelsz\u00f3\:
console-confirm-password=Jelsz\u00f3 meger\u0151s\u00edt\u00e9s\:
console-update-password=Cser\u00e9lje le jelszav\u00e1t.
console-verify-email=Meg kell er\u0151s\u00edtenie az e-mail c\u00edm\u00e9t. Egy e-mail \u00fczenetet k\u00fcldt\u00fcnk a(z) {0} e-mail c\u00edmre amely egy meger\u0151s\u00edt\u0151 k\u00f3dot tartalmaz. K\u00e9rem, \u00edrja be a kapott k\u00f3dot a lenti beviteli mez\u0151be.
console-email-code=e-mail \u00fczenetben kapott ellen\u0151rz\u0151 k\u00f3d\:
console-accept-terms=Elfogadja a felhaszn\u00e1l\u00e1si felt\u00e9teleket? [i/n]\:
console-accept=i
openshift.scope.user_info=Felhaszn\u00e1l\u00f3 adatok
openshift.scope.user_check-access=Felhaszn\u00e1l\u00f3 hozz\u00e1f\u00e9r\u00e9s adatok
openshift.scope.user_full=Teljes hozz\u00e1f\u00e9r\u00e9s
openshift.scope.list-projects=Projektek list\u00e1ja
saml.post-form.title=Hiteles\u00edt\u00e9s \u00e1tir\u00e1ny\u00edt\u00e1s
saml.post-form.message=\u00c1tir\u00e1ny\u00edt\u00e1s folyamatban, k\u00e9rem, v\u00e1rjon.
saml.post-form.js-disabled=A JavaScript nincs enged\u00e9lyezve. A folytat\u00e1s el\u0151tt aj\u00e1nlott bekapcsolni a JavaScript t\u00e1mogat\u00e1st. Kattintson a lenti gombra a folytat\u00e1shoz.
saml.artifactResolutionServiceInvalidResponse=Az artifact nem tal\u00e1lhat\u00f3.
otp-display-name=Hiteles\u00edt\u0151 alkalmaz\u00e1s
otp-help-text=Adja meg az ellen\u0151rz\u0151 k\u00f3dot a hiteles\u00edt\u0151 alkalmaz\u00e1sb\u00f3l
otp-reset-description=Melyik OTP be\u00e1ll\u00edt\u00e1st kell elt\u00e1vol\u00edtani?
password-display-name=Jelsz\u00f3
password-help-text=L\u00e9pjen be a jelszava megad\u00e1s\u00e1val
auth-username-form-display-name=Felhaszn\u00e1l\u00f3n\u00e9v
auth-username-form-help-text=Kezdje meg a bel\u00e9p\u00e9st a felhaszn\u00e1l\u00f3nev\u00e9nek megad\u00e1s\u00e1val
auth-username-password-form-display-name=Felhaszn\u00e1l\u00f3n\u00e9v \u00e9s jelsz\u00f3
auth-username-password-form-help-text=L\u00e9pjen be a felhaszn\u00e1l\u00f3neve \u00e9s jelszava megad\u00e1s\u00e1val.
auth-recovery-authn-code-form-display-name=Biztons\u00e1gi hiteles\u00edt\u0151 k\u00f3d
auth-recovery-authn-code-form-help-text=\u00cdrjon be egy biztons\u00e1gi k\u00f3dot a kor\u00e1bban gener\u00e1ltak k\u00f6z\u00fcl.
auth-recovery-code-info-message=\u00cdrja be a haszn\u00e1lni k\u00edv\u00e1nt biztons\u00e1gi k\u00f3dot
auth-recovery-code-prompt=Biztons\u00e1gi k\u00f3d \#{0}
auth-recovery-code-header=Bejelentkez\u00e9s egy biztons\u00e1gi k\u00f3d seg\u00edts\u00e9g\u00e9vel
recovery-codes-error-invalid=\u00c9rv\u00e9nytelen biztons\u00e1gi k\u00f3d
recovery-code-config-header=Biztons\u00e1gi hiteles\u00edt\u0151 k\u00f3dok
recovery-code-config-warning-title=Ezen k\u00f3dok megtekint\u00e9s\u00e9re nincs lehet\u0151s\u00e9g az oldal elhagy\u00e1sa ut\u00e1n
recovery-code-config-warning-message=Nyomtassa ki, t\u00f6ltse le vagy mentse el a k\u00f3dokat egy biztons\u00e1gos helyre. A be\u00e1ll\u00edt\u00e1s megszak\u00edt\u00e1sa t\u00f6rli ezeket a k\u00f3dokat a felhaszn\u00e1l\u00f3i fi\u00f3kj\u00e1b\u00f3l.
recovery-codes-print=Nyomtat\u00e1s
recovery-codes-download=Let\u00f6lt\u00e9s
recovery-codes-copy=M\u00e1sol\u00e1s
recovery-codes-copied=V\u00e1g\u00f3lapra m\u00e1solva
recovery-codes-confirmation-message=Elmentettem a biztons\u00e1gi k\u00f3dokat egy biztons\u00e1gos helyre
recovery-codes-action-complete=Be\u00e1ll\u00edt\u00e1s befejez\u00e9se
recovery-codes-action-cancel=Be\u00e1ll\u00edt\u00e1s megszak\u00edt\u00e1sa
recovery-codes-download-file-header=Tartsa a biztons\u00e1gi k\u00f3dokat egy biztons\u00e1gos helyen
recovery-codes-download-file-description=A biztons\u00e1gi k\u00f3dok egyszer haszn\u00e1latos jelk\u00f3dok, melyek seg\u00edts\u00e9g\u00e9vel bejelentkezhet a fi\u00f3kj\u00e1ba, ha nem f\u00e9r hozz\u00e1 a hiteles\u00edt\u0151 alkalmaz\u00e1shoz.
recovery-codes-download-file-date=Biztons\u00e1gi k\u00f3dok gener\u00e1lva
recovery-codes-label-default=Biztons\u00e1gi k\u00f3dok
webauthn-display-name=Biztons\u00e1gi kulcs
webauthn-help-text=Haszn\u00e1lja a biztons\u00e1gi kulcs\u00e1t a bel\u00e9p\u00e9shez.
webauthn-passwordless-display-name=Biztons\u00e1gi kulcs
webauthn-passwordless-help-text=Haszn\u00e1lja a biztons\u00e1gi kulcs\u00e1t a jelsz\u00f3mentes bel\u00e9p\u00e9shez.
webauthn-login-title=Biztons\u00e1gi kulcs alap\u00fa bel\u00e9p\u00e9s
webauthn-registration-title=Biztons\u00e1gi kulcs regisztr\u00e1ci\u00f3
webauthn-available-authenticators=El\u00e9rhet\u0151 hiteles\u00edt\u0151 alkalmaz\u00e1sok
webauthn-unsupported-browser-text=A WebAuthn protokoll a b\u00f6ng\u00e9sz\u0151 \u00e1ltal nem t\u00e1mogatott. Pr\u00f3b\u00e1lja egy m\u00e1sikkal, vagy vegye fel a kapcsolatot az alkalmaz\u00e1s adminisztr\u00e1tor\u00e1val.
webauthn-doAuthenticate=Bejelentkez\u00e9s biztons\u00e1gi kulccsal
webauthn-createdAt-label=L\u00e9trehozva
webauthn-error-title=Biztons\u00e1gi kulcs hiba
webauthn-error-registration=Nem siker\u00fclt regisztr\u00e1lni a biztons\u00e1gi kulcsot.
webauthn-error-api-get=Nem siker\u00fclt a hiteles\u00edt\u00e9s a biztons\u00e1gi kulccsal.
webauthn-error-different-user=Az el\u0151sz\u00f6r hiteles\u00edtett felhaszn\u00e1l\u00f3 nem az, akit a biztons\u00e1gi kulccsal azonos\u00edtottunk.
webauthn-error-auth-verification=A biztons\u00e1gi kulcs alap\u00fa hiteles\u00edt\u00e9s eredm\u00e9nye \u00e9rv\u00e9nytelen.
webauthn-error-register-verification=A biztons\u00e1gi kulcs alap\u00fa regisztr\u00e1ci\u00f3 eredm\u00e9nye \u00e9rv\u00e9nytelen.
webauthn-error-user-not-found=Ismeretlen felhaszn\u00e1l\u00f3t hiteles\u00edtett\u00fcnk a biztons\u00e1gi kulcs alapj\u00e1n.
identity-provider-redirector=\u00d6sszek\u00f6t\u00e9s m\u00e1sik szem\u00e9lyazonoss\u00e1g-kezel\u0151vel
identity-provider-login-label=Egy\u00e9b bejelentkez\u00e9si m\u00f3dok
idp-email-verification-display-name=E-mail meger\u0151s\u00edt\u00e9s
idp-email-verification-help-text=Felhaszn\u00e1l\u00f3i fi\u00f3k \u00f6sszekapcsol\u00e1sa az e-mail c\u00edm meger\u0151s\u00edt\u00e9s\u00e9vel.
idp-username-password-form-display-name=Felhaszn\u00e1l\u00f3n\u00e9v \u00e9s jelsz\u00f3
idp-username-password-form-help-text=Felhaszn\u00e1l\u00f3i fi\u00f3k \u00f6sszekapcsol\u00e1sa bejelentkez\u00e9ssel.
finalDeletionConfirmation=A felhaszn\u00e1l\u00f3i fi\u00f3k t\u00f6rl\u00e9se ut\u00e1n annak vissza\u00e1ll\u00edt\u00e1s\u00e1ra nincs m\u00f3d. A fi\u00f3kja megtart\u00e1s\u00e1hoz kattintson a M\u00e9gse gombra.
irreversibleAction=Ez a m\u0171velet visszavonhatatlan
deleteAccountConfirm=Felhaszn\u00e1l\u00f3i fi\u00f3k t\u00f6rl\u00e9s\u00e9nek meger\u0151s\u00edt\u00e9se
deletingImplies=A felhaszn\u00e1l\u00f3i fi\u00f3kj\u00e1nak t\u00f6rl\u00e9s\u00e9vel j\u00e1r\:
errasingData=\u00d6sszes adat\u00e1nak t\u00f6rl\u00e9se
loggingOutImmediately=Azonnali kijelentkez\u00e9s
accountUnusable=Az alkalmaz\u00e1s tov\u00e1bbi haszn\u00e1lata nem lesz lehets\u00e9ges ezzel a felhaszn\u00e1l\u00f3i fi\u00f3kkal
userDeletedSuccessfully=Felhaszn\u00e1l\u00f3i fi\u00f3k t\u00f6rl\u00e9se sikeres
access-denied=Hozz\u00e1f\u00e9r\u00e9s megtagadva
access-denied-when-idp-auth=Hozz\u00e1f\u00e9r\u00e9s megtagadva hiteles\u00edt\u00e9s sor\u00e1n\: {0}
frontchannel-logout.title=Kijelentkez\u00e9s
frontchannel-logout.message=A k\u00f6vetkez\u0151 alkalmaz\u00e1sokb\u00f3l jelentkezik ki
logoutConfirmTitle=Kijelentkez\u00e9s
logoutConfirmHeader=Val\u00f3ban ki szeretne jelentkezni?
doLogout=Kijelentkez\u00e9s
readOnlyUsernameMessage=A felhaszn\u00e1l\u00f3n\u00e9v nem m\u00f3dos\u00edthat\u00f3.
shouldBeEqual={0} egyenl\u0151 kell legyen {1}-vel
shouldBeDifferent={0} k\u00fcl\u00f6nb\u00f6z\u0151nek kell lennie, mint {1}
shouldMatchPattern=A mint\u00e1nak egyeznie kell\: `/{0}/`
mustBeAnInteger=Eg\u00e9sz sz\u00e1mnak kell lennie
notAValidOption=Nem \u00e9rv\u00e9nyes opci\u00f3
selectAnOption=V\u00e1lasszon egy lehet\u0151s\u00e9get
remove=Elt\u00e1vol\u00edt\u00e1s
addValue=\u00c9rt\u00e9k hozz\u00e1ad\u00e1sa
languages=Nyelvek

View File

@ -0,0 +1,316 @@
doLogIn=Accedi
doRegister=Registrati
doRegisterSecurityKey=Registrati
doCancel=Annulla
doSubmit=Invia
doBack=Indietro
doYes=S\u00ec
doNo=No
doContinue=Continua
doIgnore=Ignora
doAccept=Accetta
doDecline=Nega
doForgotPassword=Password dimenticata?
doClickHere=Clicca qui
doImpersonate=Impersona
doTryAgain=Prova ancora
doTryAnotherWay=Prova in un altro modo
kerberosNotConfigured=Kerberos non configurato
kerberosNotConfiguredTitle=Kerberos non configurato
bypassKerberosDetail=Non sei connesso via Kerberos o il tuo browser non supporta l''autenticazione a Kerberos. Fai clic su Continua per accedere in modo alternativo.
kerberosNotSetUp=Kerberos non \u00e8 configurato. Non puoi effettuare l''accesso.
registerTitle=Registrati
loginAccountTitle=Accedi
loginTitle=Accedi a {0}
loginTitleHtml={0}
impersonateTitle={0} Impersona utente
impersonateTitleHtml=<strong>{0}</strong> Impersona utente
realmChoice=Realm
unknownUser=Utente sconosciuto
loginTotpTitle=Configura autenticazione mobile
loginProfileTitle=Aggiorna profilo
loginTimeout=Stai impiegando troppo tempo per accedere. Il processo di autenticazione verr\u00e0 riavviato.
oauthGrantTitle=Autenticazione concessa
oauthGrantTitleHtml={0}
errorTitle=Siamo spiacenti\u2026
errorTitleHtml=Siamo <strong>spiacenti</strong>...
emailVerifyTitle=Verifica l''email
emailForgotTitle=Password dimenticata?
updatePasswordTitle=Aggiorna password
codeSuccessTitle=Codice di successo
codeErrorTitle=Codice di errore\: {0}
displayUnsupported=Tipo display richiesto non supportato
browserRequired=\u00c8 richiesto il browser per il login
browserContinue=\u00c8 richiesto il browser per continuare il login
browserContinuePrompt=Aprire il browser per continuare il login? [y/n]\:
browserContinueAnswer=y
termsTitle=Termini e condizioni
termsText=
termsPlainText=Termini e condizioni da definire.
recaptchaFailed=Recaptcha non valido
recaptchaNotConfigured=Il Recaptcha \u00e8 obbligatorio, ma non configurato
consentDenied=Permesso negato.
noAccount=Nuovo utente?
username=Username
usernameOrEmail=Username o email
firstName=Nome
givenName=Nome
fullName=Nome completo
lastName=Cognome
familyName=Cognome
email=Email
password=Password
passwordConfirm=Conferma password
passwordNew=Nuova Password
passwordNewConfirm=Conferma nuova password
rememberMe=Ricordami
authenticatorCode=Codice One-time
address=Indirizzo
locality=Citt\u00e0 o Localit\u00e0
street=Via
region=Stato, Provincia, o Regione
postal_code=CAP
country=Paese
emailVerified=Email verificata
gssDelegationCredential=Credenziali delega GSS
profileScopeConsentText=Profilo utente
emailScopeConsentText=Indirizzo email
addressScopeConsentText=Indirizzo
phoneScopeConsentText=Numero di telefono
offlineAccessScopeConsentText=Accesso offline
samlRoleListScopeConsentText=I miei ruoli
rolesScopeConsentText=Ruoli utente
restartLoginTooltip=Riavvia login
loginTotpIntro=Devi impostare un generatore di OTP (password temporanea valida una volta sola) per accedere a questo account
loginTotpStep1=Installa una delle seguenti applicazioni sul tuo dispositivo mobile
loginTotpStep2=Apri l''applicazione e scansiona il codice QR
loginTotpStep3=Scrivi il codice monouso fornito dall''applicazione e premi Invia per completare il setup
loginTotpStep3DeviceName=Fornisci il nome del dispositivo per aiutarti a gestire i dispositivi di autenticazione.
loginTotpManualStep2=Apri l''applicazione e scrivi la chiave
loginTotpManualStep3=Usa le seguenti impostazioni se l''applicazione lo consente
loginTotpUnableToScan=Non riesci a scansionare il codice QR?
loginTotpScanBarcode=Vuoi scansionare il codice QR?
loginCredential=Credenziali
loginOtpOneTime=Codice monouso
loginTotpType=Tipo
loginTotpAlgorithm=Algoritmo
loginTotpDigits=Cifre
loginTotpInterval=Intervallo
loginTotpCounter=Contatore
loginTotpDeviceName=Nome del dispositivo di autenticazione
loginTotp.totp=Basato sull''ora
loginTotp.hotp=Basato sul contatore
loginChooseAuthenticator=Seleziona il tuo metodo di autenticazione
oauthGrantRequest=Vuoi assegnare questi privilegi di accesso?
inResource=per
emailVerifyInstruction1=Ti \u00e8 stata inviata una email con le istruzioni per la verifica della tua email.
emailVerifyInstruction2=Non hai ricevuto un codice di verifica nella tua email?
emailVerifyInstruction3=per rinviare la email.
emailLinkIdpTitle=Collega {0}
emailLinkIdp1=Ti \u00e8 stata inviata una email con le istruzioni per collegare l''account {0} {1} con il tuo account {2}.
emailLinkIdp2=Non hai ricevuto un codice di verifica nella tua email?
emailLinkIdp3=Per rinviare la email.
emailLinkIdp4=Se hai gi\u00e0 verificato l''indirizzo email in un altro browser
emailLinkIdp5=per continuare.
backToLogin=&laquo; Torna al Login
emailInstruction=Inserisci la tua username o l''indirizzo email e ti manderemo le istruzioni per creare una nuova password.
copyCodeInstruction=Copia questo codice e incollalo nella tua applicazione\:
pageExpiredTitle=La pagina \u00e8 scaduta
pageExpiredMsg1=Per ripetere il login
pageExpiredMsg2=Per continuare con il login
personalInfo=Informazioni personali\:
role_admin=Admin
role_realm-admin=Realm Admin
role_create-realm=Crea realm
role_create-client=Crea client
role_view-realm=Visualizza realm
role_view-users=Visualizza utenti
role_view-applications=Visualizza applicazioni
role_view-clients=Visualizza client
role_view-events=Visualizza eventi
role_view-identity-providers=Visualizza identity provider
role_manage-realm=Gestisci realm
role_manage-users=Gestisci utenti
role_manage-applications=Gestisci applicazioni
role_manage-identity-providers=Gestisci identity provider
role_manage-clients=Gestisci client
role_manage-events=Gestisci eventi
role_view-profile=Visualizza profilo
role_manage-account=Gestisci account
role_manage-account-links=Gestisci i link per l''account
role_read-token=Leggi il token
role_offline-access=Accesso offline
client_account=Account
client_account-console=Console account
client_security-admin-console=Console di amministrazione di sicurezza
client_admin-cli=Admin CLI
client_realm-management=Gestione realm
client_broker=Broker
requiredFields=Campi obbligatori
invalidUserMessage=Username o password non validi.
invalidUsernameMessage=Username non valido.
invalidUsernameOrEmailMessage=Username o email non validi.
invalidPasswordMessage=Password non valida.
invalidEmailMessage=Indirizzo email non valido.
accountDisabledMessage=L''account \u00e8 disabilitato, contatta il tuo amministratore.
accountTemporarilyDisabledMessage=L''account \u00e8 temporaneamente disabilitato; contatta il tuo amministratore o prova pi\u00f9 tardi.
expiredCodeMessage=Login scaduto. Riprovare.
expiredActionMessage=Azione scaduta. Continuare adesso con in login.
expiredActionTokenNoSessionMessage=Azione scaduta.
expiredActionTokenSessionExistsMessage=Azione scaduta. Ricominciare.
missingFirstNameMessage=Inserisci il nome.
missingLastNameMessage=Inserisci il cognome.
missingEmailMessage=Inserisci l''email.
missingUsernameMessage=Inserisci l''username.
missingPasswordMessage=Inserisci la password.
missingTotpMessage=Inserisci il codice di autenticazione.
missingTotpDeviceNameMessage=Inserisci il nome del dispositivo di autenticazione.
notMatchPasswordMessage=Le password non coincidono.
invalidPasswordExistingMessage=Password esistente non valida.
invalidPasswordBlacklistedMessage=Password non valida\: la password non \u00e8 consentita.
invalidPasswordConfirmMessage=La password di conferma non coincide.
invalidTotpMessage=Codice di autenticazione non valido.
usernameExistsMessage=Username gi\u00e0 esistente.
emailExistsMessage=Email gi\u00e0 esistente.
federatedIdentityExistsMessage=L''utente con {0} {1} esiste gi\u00e0. Effettua il login nella gestione account per associare l''account.
confirmLinkIdpTitle=Account gi\u00e0 esistente
federatedIdentityConfirmLinkMessage=L''utente con {0} {1} esiste gi\u00e0. Come vuoi procedere?
federatedIdentityConfirmReauthenticateMessage=Autenticati per associare il tuo account con {0}
confirmLinkIdpReviewProfile=Rivedi profilo
confirmLinkIdpContinue=Aggiungi all''account esistente
configureTotpMessage=Devi impostare un autenticatore per attivare il tuo account.
updateProfileMessage=Devi aggiornare il tuo profilo utente per attivare il tuo account.
updatePasswordMessage=Devi cambiare la password per attivare il tuo account.
resetPasswordMessage=Devi cambiare la password.
verifyEmailMessage=Devi verificare il tuo indirizzo email per attivare il tuo account.
linkIdpMessage=Devi verificare il tuo indirizzo email per associare il tuo account con {0}.
emailSentMessage=Riceverai a breve una email con maggiori istruzioni.
emailSendErrorMessage=Invio email fallito, riprova pi\u00f9 tardi.
accountUpdatedMessage=Il tuo account \u00e8 stato aggiornato.
accountPasswordUpdatedMessage=La tua password \u00e8 stata aggiornata.
delegationCompleteHeader=Login completato
delegationCompleteMessage=Puoi chiudere questa finestra del browser e tornare alla tua applicazione.
delegationFailedHeader=Login fallito
delegationFailedMessage=Puoi chiudere questa finestra del browser e tornare alla tua applicazione per provare ad accedere nuovamente.
noAccessMessage=Nessun accesso
invalidPasswordMinLengthMessage=Password non valida\: lunghezza minima {0}.
invalidPasswordMinDigitsMessage=Password non valida\: deve contenere almeno {0} numeri.
invalidPasswordMinLowerCaseCharsMessage=Password non valida\: deve contenere almeno {0} caratteri minuscoli.
invalidPasswordMinUpperCaseCharsMessage=Password non valida\: deve contenere almeno {0} caratteri maiuscoli.
invalidPasswordMinSpecialCharsMessage=Password non valida\: deve contenere almeno {0} caratteri speciali.
invalidPasswordNotUsernameMessage=Password non valida\: non deve essere uguale alla username.
invalidPasswordRegexPatternMessage=Password non valida\: fallito il match con una o pi\u00f9 espressioni regolari.
invalidPasswordHistoryMessage=Password non valida\: non deve essere uguale ad una delle ultime {0} password.
invalidPasswordGenericMessage=Password non valida\: la nuova password non rispetta le indicazioni previste.
failedToProcessResponseMessage=Fallimento nell''elaborazione della risposta
httpsRequiredMessage=HTTPS richiesto
realmNotEnabledMessage=Realm non abilitato
invalidRequestMessage=Richiesta non valida
failedLogout=Logout fallito
unknownLoginRequesterMessage=Richiedente di Login non riconosciuto
loginRequesterNotEnabledMessage=Richiedente di Login non abilitato
bearerOnlyMessage=Alle applicazioni di tipo Bearer-only non \u00e8 consentito di effettuare il login tramite browser
standardFlowDisabledMessage=Al client non \u00e8 consentito di effettuare il login tramite browser con questo response_type. Standard flow \u00e8 stato disabilitato per il client.
implicitFlowDisabledMessage=Al client non \u00e8 consentito di effettuare il login tramite browser con questo response_type. Implicit flow \u00e8 stato disabilitato per il client.
invalidRedirectUriMessage=Redirect uri non valido
unsupportedNameIdFormatMessage=NameIDFormat non supportato
invalidRequesterMessage=Richiedente non valido
registrationNotAllowedMessage=Registrazione non permessa
resetCredentialNotAllowedMessage=Reimpostazione della credenziale non permessa
permissionNotApprovedMessage=Permesso non approvato.
noRelayStateInResponseMessage=Nessun relay state in risposta dall''identity provider.
insufficientPermissionMessage=Permessi insufficienti per associare le identit\u00e0.
couldNotProceedWithAuthenticationRequestMessage=Impossibile procedere con la richiesta di autenticazione all''identity provider
couldNotObtainTokenMessage=Non posso ottenere un token dall''identity provider.
unexpectedErrorRetrievingTokenMessage=Errore inaspettato nel recupero del token dall''identity provider.
unexpectedErrorHandlingResponseMessage=Errore inaspettato nella gestione della risposta dall''identity provider.
identityProviderAuthenticationFailedMessage=Autenticazione fallita. Non posso effettuare l''autenticazione con l''identity provider.
couldNotSendAuthenticationRequestMessage=Impossibile inviare la richiesta di autenticazione all''identity provider.
unexpectedErrorHandlingRequestMessage=Errore inaspettato nella gestione della richiesta di autenticazione all''identity provider.
invalidAccessCodeMessage=Codice di accesso non valido.
sessionNotActiveMessage=Sessione non attiva.
invalidCodeMessage=Si \u00e8 verificato un errore, effettua di nuovo il login nella tua applicazione.
identityProviderUnexpectedErrorMessage=Errore imprevisto durante l''autenticazione con identity provider
identityProviderNotFoundMessage=Non posso trovare un identity provider con l''identificativo.
identityProviderLinkSuccess=Hai verificato con successo la tua email. Torna al tuo browser iniziale e continua da l\u00ec con il login.
staleCodeMessage=Questa pagina non \u00e8 pi\u00f9 valida, torna alla tua applicazione ed effettua nuovamente l''accesso
realmSupportsNoCredentialsMessage=Il realm non supporta nessun tipo di credenziali.
credentialSetupRequired=Impossibile effettuare il login, \u00e8 richiesto il setup delle credenziali.
identityProviderNotUniqueMessage=Il realm supporta pi\u00f9 di un identity provider. Impossibile determinare quale identity provider deve essere utilizzato per autenticarti.
emailVerifiedMessage=Il tuo indirizzo email \u00e8 stato verificato.
staleEmailVerificationLink=Il link che hai cliccato \u00e8 un link scaduto e non \u00e8 pi\u00f9 valido. Forse hai gi\u00e0 verificato la tua email?
identityProviderAlreadyLinkedMessage=L''identit\u00e0 federata restituita dall''identity provider {0} \u00e8 gi\u00e0 associata ad un altro utente.
confirmAccountLinking=Conferma il collegamento per l''account {0} dell''identity provider {1} con il tuo account.
confirmEmailAddressVerification=Conferma la validit\u00e0 dell''indirizzo email {0}.
confirmExecutionOfActions=Esegui la/le seguenti azione/i
backToApplication=&laquo; Torna all''applicazione
missingParameterMessage=Parametri mancanti\: {0}
clientNotFoundMessage=Client non trovato.
clientDisabledMessage=Client disabilitato.
invalidParameterMessage=Parametro non valido\: {0}
alreadyLoggedIn=Sei gi\u00e0 connesso.
differentUserAuthenticated=Se gi\u00e0 autenticato con l''utente ''{0}'' in questa sessione. Per favore, fai prima il logout.
brokerLinkingSessionExpired=\u00c8 stato richiesta un''associazione a un account broker, ma la sessione corrente non \u00e8 pi\u00f9 valida.
proceedWithAction=\u00bb Clicca qui per continuare
requiredAction.CONFIGURE_TOTP=Configura OTP
requiredAction.TERMS_AND_CONDITIONS=Termini e condizioni
requiredAction.UPDATE_PASSWORD=Aggiornamento password
requiredAction.UPDATE_PROFILE=Aggiornamento profilo
requiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email
doX509Login=Sarai connesso come\:
clientCertificate=Certificato client X509\:
noCertificate=[Nessun certificato]
pageNotFound=Pagina non trovata
internalServerError=Si \u00e8 verificato un errore interno del server
console-username=Username\:
console-password=Password\:
console-otp=One-time password\:
console-new-password=Nuova password\:
console-confirm-password=Conferma password\:
console-update-password=\u00c8 richiesto l''aggiornamento della tua password.
console-verify-email=Devi verificare il tuo indirizzo email. \u00c8 stata inviata una email a {0} che contiene un codice di verifica. Per favore inserisci il codice nella casella di testo seguente.
console-email-code=Codice email\:
console-accept-terms=Accetti i termini? [y/n]\:
console-accept=y
openshift.scope.user_info=Informazioni utente
openshift.scope.user_check-access=Informazioni di accesso per l''utente
openshift.scope.user_full=Accesso completo
openshift.scope.list-projects=Elenca i progetti
saml.post-form.title=Reindirizzamento per l''autenticazione
saml.post-form.message=Reindirizzamento, attendere per favore.
saml.post-form.js-disabled=JavaScript \u00e8 disabilitato. \u00c8 fortemente consigliato abilitarlo. Clicca sul bottone seguente per continuare.
otp-display-name=Applicazione di autenticazione
otp-help-text=Inserire un codice di verifica fornito dall''applicazione di autenticazione.
password-display-name=Password
password-help-text=Accedi inserendo la tua password.
auth-username-form-display-name=Username
auth-username-form-help-text=Inizia il login inserendo la tua username
auth-username-password-form-display-name=Username e password
auth-username-password-form-help-text=Accedi inserendo la tua username e la password.
webauthn-display-name=Chiave di sicurezza
webauthn-help-text=Utilizza la tua chiave di sicurezza per accedere.
webauthn-passwordless-display-name=Chiave di sicurezza
webauthn-passwordless-help-text=Utilizza la tua chiave di sicurezza per l''accesso senza password.
webauthn-login-title=Login con chiave di sicurezza
webauthn-registration-title=Registrazione chiave di sicurezza
webauthn-available-authenticators=Autenticatori disponibili
webauthn-error-title=Errore della chiave di sicurezza
webauthn-error-registration=Impossibile registrare la tua chiave di sicurezza.
webauthn-error-api-get=Autenticazione con la chiave di sicurezza fallita.
webauthn-error-different-user=Il primo utente autenticato non \u00e8 quello autenticato tramite la chiave di sicurezza.
webauthn-error-auth-verification=Il risultato dell''autenticazione con la chiave di sicurezza non \u00e8 valido.
webauthn-error-register-verification=Il risultato della registrazione della chiave di sicurezza non \u00e8 valido.
webauthn-error-user-not-found=Utente sconosciuto autenticato con la chiave di sicurezza.
identity-provider-redirector=Connettiti con un altro identity provider.
identity-provider-login-label=Oppure accedi con
readOnlyUsernameMessage=Non puoi aggiornare il tuo nome utente poich\u00e9 \u00e8 in modalit\u00e0 sola lettura.
shouldBeEqual={0} dovrebbe essere uguale a {1}
shouldBeDifferent={0} dovrebbe essere diverso da {1}
shouldMatchPattern=Il modello dovrebbe corrispondere\: `/{0}/`
mustBeAnInteger=Deve essere un numero intero
notAValidOption=Non \u00e8 un''opzione valida
selectAnOption=Seleziona un''opzione
remove=Rimuovi
addValue=Aggiungi valore
languages=Lingue

View File

@ -0,0 +1,321 @@
doLogIn=\u30ed\u30b0\u30a4\u30f3
doRegister=\u767b\u9332
doRegisterSecurityKey=\u767b\u9332
doCancel=\u30ad\u30e3\u30f3\u30bb\u30eb
doSubmit=\u9001\u4fe1
doBack=\u623b\u308b
doYes=\u306f\u3044
doNo=\u3044\u3044\u3048
doContinue=\u7d9a\u3051\u308b
doIgnore=\u7121\u8996
doAccept=\u627f\u8afe
doDecline=\u5374\u4e0b
doForgotPassword=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u304a\u5fd8\u308c\u3067\u3059\u304b?
doClickHere=\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044
doImpersonate=\u4ee3\u7406\u30ed\u30b0\u30a4\u30f3
doTryAgain=\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044
doTryAnotherWay=\u5225\u306e\u65b9\u6cd5\u3092\u8a66\u3057\u3066\u304f\u3060\u3055\u3044
kerberosNotConfigured=Kerberos\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
kerberosNotConfiguredTitle=Kerberos\u306f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
bypassKerberosDetail=Kerberos\u3067\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u306a\u3044\u304b\u3001\u30d6\u30e9\u30a6\u30b6\u30fc\u3067Kerberos\u30ed\u30b0\u30a4\u30f3\u306e\u8a2d\u5b9a\u304c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4ed6\u306e\u624b\u6bb5\u3067\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u306b\u306f\u300c\u7d9a\u3051\u308b\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
kerberosNotSetUp=Kerberos\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u307e\u305b\u3093\u3002
registerTitle=\u767b\u9332
loginAccountTitle=\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u30ed\u30b0\u30a4\u30f3
loginTitle={0}\u306b\u30ed\u30b0\u30a4\u30f3
loginTitleHtml={0}
impersonateTitle={0}\u30e6\u30fc\u30b6\u30fc\u306e\u4ee3\u7406
impersonateTitleHtml=<strong>{0}</strong>\u30e6\u30fc\u30b6\u30fc\u306e\u4ee3\u7406
realmChoice=\u30ec\u30eb\u30e0
unknownUser=\u4e0d\u660e\u306a\u30e6\u30fc\u30b6\u30fc
loginTotpTitle=\u30e2\u30d0\u30a4\u30eb\u30fb\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7
loginProfileTitle=\u30a2\u30ab\u30a6\u30f3\u30c8\u60c5\u5831\u306e\u66f4\u65b0
loginTimeout=\u30ed\u30b0\u30a4\u30f3\u8a66\u884c\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002\u30ed\u30b0\u30a4\u30f3\u306f\u6700\u521d\u304b\u3089\u958b\u59cb\u3055\u308c\u307e\u3059\u3002
oauthGrantTitle={0}\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef
oauthGrantTitleHtml={0}
errorTitle=\u7533\u3057\u8a33\u3054\u3056\u3044\u307e\u305b\u3093
errorTitleHtml=<strong>\u7533\u3057\u8a33\u3054\u3056\u3044\u307e\u305b\u3093</strong>
emailVerifyTitle=E\u30e1\u30fc\u30eb\u78ba\u8a8d
emailForgotTitle=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u304a\u5fd8\u308c\u3067\u3059\u304b?
updatePasswordTitle=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u66f4\u65b0
codeSuccessTitle=\u6210\u529f\u30b3\u30fc\u30c9
codeErrorTitle=\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\: {0}
displayUnsupported=\u8981\u6c42\u3055\u308c\u305f\u8868\u793a\u30bf\u30a4\u30d7\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
browserRequired=\u30ed\u30b0\u30a4\u30f3\u306b\u5fc5\u8981\u306a\u30d6\u30e9\u30a6\u30b6\u30fc
browserContinue=\u30ed\u30b0\u30a4\u30f3\u3092\u5b8c\u4e86\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u30d6\u30e9\u30a6\u30b6\u30fc
browserContinuePrompt=\u30d6\u30e9\u30a6\u30b6\u30fc\u3092\u958b\u3044\u3066\u30ed\u30b0\u30a4\u30f3\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f [y/n]\:
browserContinueAnswer=y
termsTitle=\u5229\u7528\u898f\u7d04
termsText=
termsPlainText=\u5b9a\u7fa9\u3055\u308c\u308b\u5229\u7528\u898f\u7d04\u3002
recaptchaFailed=\u7121\u52b9\u306areCAPTCHA
recaptchaNotConfigured=reCAPTCHA\u304c\u5fc5\u9808\u3067\u3059\u304c\u3001\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
consentDenied=\u540c\u610f\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002
noAccount=\u65b0\u898f\u30e6\u30fc\u30b6\u30fc\u3067\u3059\u304b?
username=\u30e6\u30fc\u30b6\u30fc\u540d
usernameOrEmail=\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9
firstName=\u540d
givenName=\u540d
fullName=\u6c0f\u540d
lastName=\u59d3
familyName=\u59d3
email=E\u30e1\u30fc\u30eb
password=\u30d1\u30b9\u30ef\u30fc\u30c9
passwordConfirm=\u30d1\u30b9\u30ef\u30fc\u30c9\uff08\u78ba\u8a8d\uff09
passwordNew=\u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9
passwordNewConfirm=\u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9\uff08\u78ba\u8a8d\uff09
rememberMe=\u30ed\u30b0\u30a4\u30f3\u72b6\u614b\u306e\u4fdd\u5b58
authenticatorCode=\u30ef\u30f3\u30bf\u30a4\u30e0\u30b3\u30fc\u30c9
address=\u4f4f\u6240
street=\u756a\u5730
locality=\u5e02\u533a\u753a\u6751
region=\u90fd\u9053\u5e9c\u770c
postal_code=\u90f5\u4fbf\u756a\u53f7
country=\u56fd
emailVerified=\u78ba\u8a8d\u6e08\u307fE\u30e1\u30fc\u30eb
gssDelegationCredential=GSS\u59d4\u8b72\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb
profileScopeConsentText=\u30e6\u30fc\u30b6\u30fc\u30fb\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb
emailScopeConsentText=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9
addressScopeConsentText=\u30a2\u30c9\u30ec\u30b9
phoneScopeConsentText=\u96fb\u8a71\u756a\u53f7
offlineAccessScopeConsentText=\u30aa\u30d5\u30e9\u30a4\u30f3\u30fb\u30a2\u30af\u30bb\u30b9
samlRoleListScopeConsentText=\u30ed\u30fc\u30eb
rolesScopeConsentText=\u30e6\u30fc\u30b6\u30fc\u30ed\u30fc\u30eb
restartLoginTooltip=\u30ed\u30b0\u30a4\u30f3\u3092\u518d\u958b
loginTotpIntro=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u3001\u30ef\u30f3\u30bf\u30a4\u30e0\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u30fb\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
loginTotpStep1=\u6b21\u306e\u3044\u305a\u308c\u304b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30e2\u30d0\u30a4\u30eb\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002
loginTotpStep2=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u304d\u3001\u30d0\u30fc\u30b3\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u307e\u3059\u3002
loginTotpStep3=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u63d0\u4f9b\u3055\u308c\u305f\u30ef\u30f3\u30bf\u30a4\u30e0\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3001\u9001\u4fe1\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3092\u7d42\u4e86\u3057\u307e\u3059\u3002
loginTotpStep3DeviceName=OTP\u30c7\u30d0\u30a4\u30b9\u306e\u7ba1\u7406\u306b\u5f79\u7acb\u3064\u30c7\u30d0\u30a4\u30b9\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002
loginTotpManualStep2=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u304d\u3001\u30ad\u30fc\u3092\u5165\u529b\u3057\u307e\u3059\uff1a
loginTotpManualStep3=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a\u3067\u304d\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u8a2d\u5b9a\u5024\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
loginTotpUnableToScan=\u30b9\u30ad\u30e3\u30f3\u3067\u304d\u307e\u305b\u3093\u304b\uff1f
loginTotpScanBarcode=\u30d0\u30fc\u30b3\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u307e\u3059\u304b\uff1f
loginCredential=\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb
loginOtpOneTime=\u30ef\u30f3\u30bf\u30a4\u30e0\u30b3\u30fc\u30c9
loginTotpType=\u30bf\u30a4\u30d7
loginTotpAlgorithm=\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0
loginTotpDigits=\u6841
loginTotpInterval=\u9593\u9694
loginTotpCounter=\u30ab\u30a6\u30f3\u30bf\u30fc
loginTotpDeviceName=\u30c7\u30d0\u30a4\u30b9\u540d
loginTotp.totp=\u6642\u9593\u30d9\u30fc\u30b9
loginTotp.hotp=\u30ab\u30a6\u30f3\u30bf\u30fc\u30d9\u30fc\u30b9
loginChooseAuthenticator=\u30ed\u30b0\u30a4\u30f3\u65b9\u6cd5\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
oauthGrantRequest=\u3053\u308c\u3089\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u4ed8\u4e0e\u3057\u307e\u3059\u304b\uff1f
inResource=in
emailVerifyInstruction1=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u624b\u9806\u3092\u8a18\u8f09\u3057\u305fE\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002
emailVerifyInstruction2=E\u30e1\u30fc\u30eb\u3067\u78ba\u8a8d\u30b3\u30fc\u30c9\u3092\u53d7\u3051\u53d6\u3063\u3066\u3044\u307e\u305b\u3093\u304b?
emailVerifyInstruction3=E\u30e1\u30fc\u30eb\u3092\u518d\u9001\u4fe1\u3057\u307e\u3059\u3002
emailLinkIdpTitle=\u30ea\u30f3\u30af {0}
emailLinkIdp1={0}\u306e{1}\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u3042\u306a\u305f\u306e{2}\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u30ea\u30f3\u30af\u3059\u308b\u305f\u3081\u306e\u624b\u9806\u3092\u8a18\u8f09\u3057\u305fE\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002
emailLinkIdp2=E\u30e1\u30fc\u30eb\u3067\u78ba\u8a8d\u30b3\u30fc\u30c9\u3092\u53d7\u3051\u53d6\u3063\u3066\u3044\u307e\u305b\u3093\u304b?
emailLinkIdp3=E\u30e1\u30fc\u30eb\u3092\u518d\u9001\u4fe1\u3057\u307e\u3059\u3002
emailLinkIdp4=\u5225\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u3067\u30e1\u30fc\u30eb\u3092\u78ba\u8a8d\u6e08\u307f\u306e\u5834\u5408
emailLinkIdp5=\u7d9a\u3051\u308b\u306b\u306f
backToLogin=&laquo; \u30ed\u30b0\u30a4\u30f3\u306b\u623b\u308b
emailInstruction=\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u8a2d\u5b9a\u65b9\u6cd5\u3092\u3054\u6848\u5185\u3044\u305f\u3057\u307e\u3059\u3002
copyCodeInstruction=\u3053\u306e\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3057\u3001\u3042\u306a\u305f\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30da\u30fc\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\uff1a
pageExpiredTitle=\u30da\u30fc\u30b8\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u3066\u3044\u307e\u3059
pageExpiredMsg1=\u30ed\u30b0\u30a4\u30f3\u30d7\u30ed\u30bb\u30b9\u3092\u518d\u958b\u3059\u308b\u306b\u306f
pageExpiredMsg2=\u30ed\u30b0\u30a4\u30f3\u51e6\u7406\u3092\u7d9a\u884c\u3059\u308b\u306b\u306f
personalInfo=\u500b\u4eba\u60c5\u5831\:
role_admin=\u7ba1\u7406\u8005
role_realm-admin=\u30ec\u30eb\u30e0\u7ba1\u7406\u8005
role_create-realm=\u30ec\u30eb\u30e0\u306e\u4f5c\u6210
role_create-client=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u4f5c\u6210
role_view-realm=\u30ec\u30eb\u30e0\u306e\u53c2\u7167
role_view-users=\u30e6\u30fc\u30b6\u30fc\u306e\u53c2\u7167
role_view-applications=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u53c2\u7167
role_view-clients=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u53c2\u7167
role_view-events=\u30a4\u30d9\u30f3\u30c8\u306e\u53c2\u7167
role_view-identity-providers=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u53c2\u7167
role_manage-realm=\u30ec\u30eb\u30e0\u306e\u7ba1\u7406
role_manage-users=\u30e6\u30fc\u30b6\u30fc\u306e\u7ba1\u7406
role_manage-applications=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7ba1\u7406
role_manage-identity-providers=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u7ba1\u7406
role_manage-clients=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u7ba1\u7406
role_manage-events=\u30a4\u30d9\u30f3\u30c8\u306e\u7ba1\u7406
role_view-profile=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u53c2\u7167
role_manage-account=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u7ba1\u7406
role_manage-account-links=\u30a2\u30ab\u30a6\u30f3\u30c8\u30ea\u30f3\u30af\u306e\u7ba1\u7406
role_read-token=\u30c8\u30fc\u30af\u30f3\u306e\u53c2\u7167
role_offline-access=\u30aa\u30d5\u30e9\u30a4\u30f3\u30fb\u30a2\u30af\u30bb\u30b9
client_account=\u30a2\u30ab\u30a6\u30f3\u30c8
client_account-console=\u30a2\u30ab\u30a6\u30f3\u30c8\u30fb\u30b3\u30f3\u30bd\u30fc\u30eb
client_security-admin-console=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb
client_admin-cli=\u7ba1\u7406CLI
client_realm-management=\u30ec\u30eb\u30e0\u7ba1\u7406
client_broker=\u30d6\u30ed\u30fc\u30ab\u30fc
requiredFields=\u5fc5\u9808\u30d5\u30a3\u30fc\u30eb\u30c9
invalidUserMessage=\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u3059\u3002
invalidUsernameMessage=\u30e6\u30fc\u30b6\u30fc\u540d\u304c\u7121\u52b9\u3067\u3059\u3002
invalidUsernameOrEmailMessage=\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u7121\u52b9\u3067\u3059\u3002
invalidPasswordMessage=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u7121\u52b9\u3067\u3059\u3002
invalidEmailMessage=\u7121\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059\u3002
accountDisabledMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u7121\u52b9\u3067\u3059\u3002\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
accountTemporarilyDisabledMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u4e00\u6642\u7684\u306b\u7121\u52b9\u3067\u3059\u3002\u7ba1\u7406\u8005\u306b\u9023\u7d61\u3059\u308b\u304b\u3001\u3057\u3070\u3089\u304f\u6642\u9593\u3092\u304a\u3044\u3066\u304b\u3089\u518d\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002
expiredCodeMessage=\u30ed\u30b0\u30a4\u30f3\u30fb\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u518d\u5ea6\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
expiredActionMessage=\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u671f\u9650\u5207\u308c\u3067\u3059\u3002\u4eca\u3059\u3050\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
expiredActionTokenNoSessionMessage=\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u671f\u9650\u5207\u308c\u3067\u3059\u3002
expiredActionTokenSessionExistsMessage=\u30a2\u30af\u30b7\u30e7\u30f3\u306f\u671f\u9650\u5207\u308c\u3067\u3059\u3002\u3082\u3046\u4e00\u5ea6\u3084\u308a\u76f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingFirstNameMessage=\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingLastNameMessage=\u59d3\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingEmailMessage=E\u30e1\u30fc\u30eb\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingUsernameMessage=\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingPasswordMessage=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingTotpMessage=\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc\u30fb\u30b3\u30fc\u30c9\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
missingTotpDeviceNameMessage=\u30c7\u30d0\u30a4\u30b9\u540d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
notMatchPasswordMessage=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u3066\u3044\u307e\u305b\u3093\u3002
invalidPasswordExistingMessage=\u65e2\u5b58\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e0d\u6b63\u3067\u3059\u3002
invalidPasswordBlacklistedMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
invalidPasswordConfirmMessage=\u30d1\u30b9\u30ef\u30fc\u30c9\u78ba\u8a8d\u304c\u4e00\u81f4\u3057\u3066\u3044\u307e\u305b\u3093\u3002
invalidTotpMessage=\u7121\u52b9\u306a\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc\u30fb\u30b3\u30fc\u30c9\u3067\u3059\u3002
usernameExistsMessage=\u65e2\u306b\u5b58\u5728\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u540d\u3067\u3059\u3002
emailExistsMessage=\u65e2\u306b\u5b58\u5728\u3059\u308bE\u30e1\u30fc\u30eb\u3067\u3059\u3002
federatedIdentityExistsMessage={0}{1}\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u305d\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ea\u30f3\u30af\u3059\u308b\u306b\u306f\u30a2\u30ab\u30a6\u30f3\u30c8\u7ba1\u7406\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
confirmLinkIdpTitle=\u65e2\u306b\u5b58\u5728\u3059\u308b\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u3059\u3002
federatedIdentityConfirmLinkMessage={0}{1}\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\u7d99\u7d9a\u3057\u307e\u3059\u304b?
federatedIdentityConfirmReauthenticateMessage={1}\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ea\u30f3\u30af\u3059\u308b\u305f\u3081\u306b{0}\u3068\u3057\u3066\u8a8d\u8a3c\u3057\u307e\u3059
nestedFirstBrokerFlowMessage={0}\u30e6\u30fc\u30b6\u30fc{1}\u306f\u65e2\u77e5\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30ea\u30f3\u30af\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
confirmLinkIdpReviewProfile=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u78ba\u8a8d
confirmLinkIdpContinue=\u65e2\u5b58\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u8ffd\u52a0\u3059\u308b
configureTotpMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30e2\u30d0\u30a4\u30eb\u30fb\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u304c\u5fc5\u8981\u3067\u3059\u3002
updateProfileMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30e6\u30fc\u30b6\u30fc\u30fb\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0\u304c\u5fc5\u8981\u3067\u3059\u3002
updatePasswordMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u66f4\u65b0\u304c\u5fc5\u8981\u3067\u3059\u3002
resetPasswordMessage=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
verifyEmailMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u78ba\u8a8d\u304c\u5fc5\u8981\u3067\u3059\u3002
linkIdpMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092{0}\u3068\u30ea\u30f3\u30af\u3059\u308b\u306b\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u78ba\u8a8d\u304c\u5fc5\u8981\u3067\u3059\u3002
emailSentMessage=\u8a73\u7d30\u306a\u624b\u9806\u3092\u8a18\u8f09\u3057\u305fE\u30e1\u30fc\u30eb\u3092\u3059\u3050\u306b\u53d7\u4fe1\u3057\u3066\u304f\u3060\u3055\u3044\u3002
emailSendErrorMessage=E\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u3057\u3070\u3089\u304f\u6642\u9593\u3092\u304a\u3044\u3066\u304b\u3089\u518d\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002
accountUpdatedMessage=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002
accountPasswordUpdatedMessage=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002
delegationCompleteHeader=\u30ed\u30b0\u30a4\u30f3\u306b\u6210\u529f\u3057\u307e\u3057\u305f
delegationCompleteMessage=\u3053\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u9589\u3058\u3066\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u623b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
delegationFailedHeader=\u30ed\u30b0\u30a4\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f
delegationFailedMessage=\u3053\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u30fb\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u9589\u3058\u3066\u30b3\u30f3\u30bd\u30fc\u30eb\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u623b\u308a\u3001\u518d\u5ea6\u30ed\u30b0\u30a4\u30f3\u3092\u8a66\u307f\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002
noAccessMessage=\u30a2\u30af\u30bb\u30b9\u304c\u3042\u308a\u307e\u305b\u3093
invalidPasswordMinLengthMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u6700\u5c0f{0}\u306e\u9577\u3055\u304c\u5fc5\u8981\u3067\u3059\u3002
invalidPasswordMinDigitsMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u5c11\u306a\u304f\u3068\u3082{0}\u6587\u5b57\u306e\u6570\u5b57\u3092\u542b\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
invalidPasswordMinLowerCaseCharsMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u5c11\u306a\u304f\u3068\u3082{0}\u6587\u5b57\u306e\u5c0f\u6587\u5b57\u3092\u542b\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
invalidPasswordMinUpperCaseCharsMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u5c11\u306a\u304f\u3068\u3082{0}\u6587\u5b57\u306e\u5927\u6587\u5b57\u3092\u542b\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
invalidPasswordMinSpecialCharsMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u5c11\u306a\u304f\u3068\u3082{0}\u6587\u5b57\u306e\u7279\u6b8a\u6587\u5b57\u3092\u542b\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
invalidPasswordNotUsernameMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u30e6\u30fc\u30b6\u30fc\u540d\u3068\u540c\u3058\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u7981\u6b62\u3055\u308c\u3066\u3044\u307e\u3059\u3002
invalidPasswordRegexPatternMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
invalidPasswordHistoryMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u6700\u8fd1\u306e{0}\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u3044\u305a\u308c\u304b\u3068\u540c\u3058\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u7981\u6b62\u3055\u308c\u3066\u3044\u307e\u3059\u3002
invalidPasswordGenericMessage=\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\: \u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u30fb\u30dd\u30ea\u30b7\u30fc\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
failedToProcessResponseMessage=\u5fdc\u7b54\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
httpsRequiredMessage=HTTPS\u304c\u5fc5\u9808\u3067\u3059
realmNotEnabledMessage=\u30ec\u30eb\u30e0\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093
invalidRequestMessage=\u7121\u52b9\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u3059
failedLogout=\u30ed\u30b0\u30a2\u30a6\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f
unknownLoginRequesterMessage=\u4e0d\u660e\u306a\u30ed\u30b0\u30a4\u30f3\u8981\u6c42\u5143\u3067\u3059
loginRequesterNotEnabledMessage=\u30ed\u30b0\u30a4\u30f3\u8981\u6c42\u5143\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093
bearerOnlyMessage=bearer-only\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u30d6\u30e9\u30a6\u30b6\u30fc\u30fb\u30ed\u30b0\u30a4\u30f3\u3092\u958b\u59cb\u3059\u308b\u3053\u3068\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
standardFlowDisabledMessage=\u4e0e\u3048\u3089\u308c\u305fresponse_type\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u30d6\u30e9\u30a6\u30b6\u30fc\u30fb\u30ed\u30b0\u30a4\u30f3\u3092\u958b\u59cb\u3059\u308b\u3053\u3068\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u6a19\u6e96\u30d5\u30ed\u30fc\u306f\u7121\u52b9\u3067\u3059\u3002
implicitFlowDisabledMessage=\u4e0e\u3048\u3089\u308c\u305fresponse_type\u3067\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u30d6\u30e9\u30a6\u30b6\u30fc\u30fb\u30ed\u30b0\u30a4\u30f3\u3092\u958b\u59cb\u3059\u308b\u3053\u3068\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a4\u30f3\u30d7\u30ea\u30b7\u30c3\u30c8\u30fb\u30d5\u30ed\u30fc\u306f\u7121\u52b9\u3067\u3059\u3002
invalidRedirectUriMessage=\u7121\u52b9\u306a\u30ea\u30c0\u30a4\u30ec\u30af\u30c8URI\u3067\u3059
unsupportedNameIdFormatMessage=\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044NameID Format\u3067\u3059
invalidRequesterMessage=\u7121\u52b9\u306a\u8981\u6c42\u5143\u3067\u3059
registrationNotAllowedMessage=\u767b\u9332\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
resetCredentialNotAllowedMessage=\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u306e\u30ea\u30bb\u30c3\u30c8\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093
permissionNotApprovedMessage=\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u306f\u627f\u8a8d\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
noRelayStateInResponseMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304b\u3089\u306e\u5fdc\u7b54\u306bRelayState\u304c\u3042\u308a\u307e\u305b\u3093\u3002
insufficientPermissionMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u306b\u30ea\u30f3\u30af\u3059\u308b\u306b\u306f\u4e0d\u5341\u5206\u306a\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3067\u3059\u3002
couldNotProceedWithAuthenticationRequestMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3078\u306e\u8a8d\u8a3c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7d9a\u884c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
couldNotObtainTokenMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304b\u3089\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
unexpectedErrorRetrievingTokenMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304b\u3089\u306e\u30c8\u30fc\u30af\u30f3\u53d6\u5f97\u3067\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
unexpectedErrorHandlingResponseMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304b\u3089\u306e\u5fdc\u7b54\u3092\u51e6\u7406\u3059\u308b\u969b\u306b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
identityProviderAuthenticationFailedMessage=\u8a8d\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u8a8d\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
couldNotSendAuthenticationRequestMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306b\u8a8d\u8a3c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
unexpectedErrorHandlingRequestMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3078\u306e\u8a8d\u8a3c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u969b\u306b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
invalidAccessCodeMessage=\u7121\u52b9\u306a\u30a2\u30af\u30bb\u30b9\u30b3\u30fc\u30c9\u3067\u3059\u3002
sessionNotActiveMessage=\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
invalidCodeMessage=\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4ecb\u3057\u3066\u518d\u5ea6\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
identityProviderUnexpectedErrorMessage=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306b\u3088\u308b\u8a8d\u8a3c\u306e\u969b\u306b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
identityProviderNotFoundMessage=\u8a72\u5f53\u306e\u8b58\u5225\u5b50\u3092\u6301\u3064\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
identityProviderLinkSuccess=E\u30e1\u30fc\u30eb\u3092\u6b63\u5e38\u306b\u78ba\u8a8d\u3057\u307e\u3057\u305f\u3002\u5143\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u623b\u3063\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
staleCodeMessage=\u3053\u306e\u30da\u30fc\u30b8\u306f\u3082\u306f\u3084\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u306e\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u623b\u308a\u518d\u5ea6\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044
realmSupportsNoCredentialsMessage=\u30ec\u30eb\u30e0\u306f\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u30fb\u30bf\u30a4\u30d7\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002
credentialSetupRequired=\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u307e\u305b\u3093\u3002\u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u304c\u5fc5\u8981\u3067\u3059\u3002
identityProviderNotUniqueMessage=\u30ec\u30eb\u30e0\u306f\u8907\u6570\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3069\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304c\u8a8d\u8a3c\u306b\u4f7f\u7528\u3055\u308c\u308b\u3079\u304d\u304b\u5224\u65ad\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
emailVerifiedMessage=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002
staleEmailVerificationLink=\u30af\u30ea\u30c3\u30af\u3057\u305f\u30ea\u30f3\u30af\u306f\u53e4\u3044\u30ea\u30f3\u30af\u3067\u3042\u308a\u3001\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u304a\u305d\u3089\u304f\u3001\u3059\u3067\u306b\u30e1\u30fc\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u3044\u307e\u3059\u3002
identityProviderAlreadyLinkedMessage={0}\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u305f\u9023\u643a\u6e08\u307f\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u306f\u3001\u3059\u3067\u306b\u5225\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u30ea\u30f3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\u3002
confirmAccountLinking=\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc{1}\u306e\u30a2\u30ab\u30a6\u30f3\u30c8{0}\u3068\u3042\u306a\u305f\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u306e\u30ea\u30f3\u30af\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
confirmEmailAddressVerification=E\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9{0}\u306e\u6709\u52b9\u6027\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
confirmExecutionOfActions=\u6b21\u306e\u64cd\u4f5c\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002
backToApplication=&laquo; \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u623b\u308b
missingParameterMessage=\u4e0d\u8db3\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\: {0}
clientNotFoundMessage=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
clientDisabledMessage=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002
invalidParameterMessage=\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\: {0}
alreadyLoggedIn=\u65e2\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u307e\u3059\u3002
differentUserAuthenticated=\u3059\u3067\u306b\u3053\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3067\u7570\u306a\u308b\u30e6\u30fc\u30b6\u30fc''{0}''\u3068\u3057\u3066\u8a8d\u8a3c\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u307e\u305a\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002
brokerLinkingSessionExpired=\u8981\u6c42\u3055\u308c\u305f\u30d6\u30ed\u30fc\u30ab\u30fc\u30fb\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30ea\u30f3\u30af\u306f\u3001\u73fe\u5728\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3067\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
proceedWithAction=&raquo; \u7d9a\u884c\u3059\u308b\u306b\u306f\u3053\u3053\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044
requiredAction.CONFIGURE_TOTP=OTP\u306e\u8a2d\u5b9a
requiredAction.TERMS_AND_CONDITIONS=\u5229\u7528\u898f\u7d04
requiredAction.UPDATE_PASSWORD=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u66f4\u65b0
requiredAction.UPDATE_PROFILE=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0
requiredAction.VERIFY_EMAIL=E\u30e1\u30fc\u30eb\u306e\u78ba\u8a8d
doX509Login=\u6b21\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\:
clientCertificate=X509\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8a3c\u660e\u66f8\:
noCertificate=[\u8a3c\u660e\u66f8\u306a\u3057]
pageNotFound=\u30da\u30fc\u30b8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
internalServerError=\u5185\u90e8\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
console-username=\u30e6\u30fc\u30b6\u30fc\u540d\:
console-password=\u30d1\u30b9\u30ef\u30fc\u30c9\:
console-otp=\u30ef\u30f3\u30bf\u30a4\u30e0\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\:
console-new-password=\u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9\:
console-confirm-password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u78ba\u8a8d\:
console-update-password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u66f4\u65b0\u304c\u5fc5\u8981\u3067\u3059\u3002
console-verify-email=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u78ba\u8a8d\u30b3\u30fc\u30c9\u3092\u542b\u3080\u30e1\u30fc\u30eb\u3092{0}\u306b\u9001\u4fe1\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u30b3\u30fc\u30c9\u3092\u4ee5\u4e0b\u306b\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
console-email-code=E\u30e1\u30fc\u30eb\u30b3\u30fc\u30c9\uff1a
console-accept-terms=\u5229\u7528\u898f\u7d04\u306b\u540c\u610f\u3057\u307e\u3059\u304b\uff1f [y/n]\:
console-accept=y
openshift.scope.user_info=\u30e6\u30fc\u30b6\u30fc\u60c5\u5831
openshift.scope.user_check-access=\u30e6\u30fc\u30b6\u30fc\u30a2\u30af\u30bb\u30b9\u60c5\u5831
openshift.scope.user_full=\u30d5\u30eb\u30a2\u30af\u30bb\u30b9
openshift.scope.list-projects=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4e00\u89a7\u8868\u793a
saml.post-form.title=\u8a8d\u8a3c\u30ea\u30c0\u30a4\u30ec\u30af\u30c8
saml.post-form.message=\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002
saml.post-form.js-disabled=JavaScript\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u5f37\u304f\u304a\u52e7\u3081\u3057\u307e\u3059\u3002\u7d99\u7d9a\u3059\u308b\u306b\u306f\u3001\u4e0b\u306e\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
otp-display-name=\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3
otp-help-text=\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u53d6\u5f97\u3057\u305f\u78ba\u8a8d\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
password-display-name=\u30d1\u30b9\u30ef\u30fc\u30c9
password-help-text=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002
auth-username-form-display-name=\u30e6\u30fc\u30b6\u30fc\u540d
auth-username-form-help-text=\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u5165\u529b\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3092\u958b\u59cb\u3057\u307e\u3059
auth-username-password-form-display-name=\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9
auth-username-password-form-help-text=\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
webauthn-display-name=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc
webauthn-help-text=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002
webauthn-passwordless-display-name=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc
webauthn-passwordless-help-text=\u30d1\u30b9\u30ef\u30fc\u30c9\u30ec\u30b9\u30fb\u30ed\u30b0\u30a4\u30f3\u306b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
webauthn-login-title=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u30fb\u30ed\u30b0\u30a4\u30f3
webauthn-registration-title=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u306e\u767b\u9332
webauthn-available-authenticators=\u5229\u7528\u53ef\u80fd\u306a\u30aa\u30fc\u30bb\u30f3\u30c6\u30a3\u30b1\u30fc\u30bf\u30fc
webauthn-error-title=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u30fb\u30a8\u30e9\u30fc
webauthn-error-registration=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u3092\u767b\u9332\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
webauthn-error-api-get=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u306b\u3088\u308b\u8a8d\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
webauthn-error-different-user=\u6700\u521d\u306b\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u306b\u3088\u3063\u3066\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
webauthn-error-auth-verification=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u306e\u8a8d\u8a3c\u7d50\u679c\u304c\u7121\u52b9\u3067\u3059\u3002
webauthn-error-register-verification=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u306e\u767b\u9332\u7d50\u679c\u304c\u7121\u52b9\u3067\u3059\u3002
webauthn-error-user-not-found=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u30ad\u30fc\u3067\u8a8d\u8a3c\u3055\u308c\u305f\u4e0d\u660e\u306a\u30e6\u30fc\u30b6\u30fc\u3002
identity-provider-redirector=\u5225\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3068\u63a5\u7d9a\u3059\u308b
frontchannel-logout.title=\u30ed\u30b0\u30a2\u30a6\u30c8
frontchannel-logout.message=\u4ee5\u4e0b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002
logoutConfirmTitle=\u30ed\u30b0\u30a2\u30a6\u30c8
logoutConfirmHeader=\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u307e\u3059\u304b\uff1f
doLogout=\u30ed\u30b0\u30a2\u30a6\u30c8
readOnlyUsernameMessage=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306e\u305f\u3081\u3001\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
shouldBeEqual={0} \u306f {1} \u3068\u7b49\u3057\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
shouldBeDifferent={0} \u306f {1} \u3068\u7570\u306a\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
shouldMatchPattern=\u30d1\u30bf\u30fc\u30f3\u306f\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\: `/{0}/`
mustBeAnInteger=\u6574\u6570\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
notAValidOption=\u6709\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093
selectAnOption=\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e
remove=\u524a\u9664
addValue=\u5024\u3092\u8ffd\u52a0
languages=\u8a00\u8a9e

View File

@ -0,0 +1,466 @@
emailVerifyTitle=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0
emailForgotTitle=\u10d3\u10d0\u10d2\u10d0\u10d5\u10d8\u10ec\u10e7\u10d3\u10d0\u10d7 \u10de\u10d0\u10e0\u10dd\u10da\u10d8?
emailUpdateConfirmationSent=\u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10d2\u10d0\u10d8\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d6\u10d4 {0}. \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0\u10d6\u10d4 \u10d2\u10d0\u10db\u10dd\u10d2\u10d6\u10d0\u10d5\u10dc\u10d8\u10e1 \u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10e5\u10ea\u10d8\u10d4\u10d1\u10e1 \u10db\u10d8\u10f0\u10e7\u10d4\u10d5\u10d8\u10d7.
codeErrorTitle=\u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8\: {0}
acceptTerms=\u10db\u10d4 \u10d5\u10d4\u10d7\u10d0\u10dc\u10ee\u10db\u10d4\u10d1\u10d8 \u10ec\u10d4\u10e1\u10d4\u10d1\u10e1 \u10d3\u10d0 \u10de\u10d8\u10e0\u10dd\u10d1\u10d4\u10d1\u10e1
unknown=\u10e3\u10ea\u10dc\u10dd\u10d1\u10d8
noAccount=\u10d0\u10ee\u10d0\u10da\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10d1\u10e0\u10eb\u10d0\u10dc\u10d3\u10d4\u10d1\u10d8\u10d7?
firstName=\u10e1\u10d0\u10ee\u10d4\u10da\u10d8
givenName=\u10d3\u10d0\u10e0\u10e5\u10db\u10d4\u10e3\u10da\u10d8 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8
fullName=\u10e1\u10e0\u10e3\u10da\u10d8 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8
lastName=\u10d2\u10d5\u10d0\u10e0\u10d8
address=\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8
region=\u10e8\u10e2\u10d0\u10e2\u10d8, \u10de\u10e0\u10dd\u10d5\u10d8\u10dc\u10ea\u10d8\u10d0 \u10d0\u10dc \u10e0\u10d4\u10d2\u10d8\u10dd\u10dc\u10d8
postal_code=Zip \u10d0\u10dc \u10e1\u10d0\u10e4\u10dd\u10e1\u10e2\u10dd \u10d9\u10dd\u10d3\u10d8
phoneNumberVerified=\u10e2\u10d4\u10da\u10d4\u10e4\u10dd\u10dc\u10d8\u10e1 \u10dc\u10dd\u10db\u10d4\u10e0\u10d8 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10e3\u10da\u10d8\u10d0
birthday=\u10d3\u10d0\u10d1\u10d0\u10d3\u10d4\u10d1\u10d8\u10e1 \u10d7\u10d0\u10e0\u10d8\u10e6\u10d8
gender=\u10e1\u10e5\u10d4\u10e1\u10d8
gssDelegationCredential=GSS \u10d3\u10d4\u10da\u10d4\u10d2\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d0\u10d5\u10e2\u10dd\u10e0\u10d8\u10d6\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d4\u10e2\u10d0\u10da\u10d4\u10d1\u10d8
addressScopeConsentText=\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8
offlineAccessScopeConsentText=\u10d8\u10dc\u10e2\u10d4\u10e0\u10dc\u10d4\u10e2\u10d2\u10d0\u10e0\u10d4\u10e8\u10d4 \u10ec\u10d5\u10d3\u10dd\u10db\u10d0
phoneScopeConsentText=\u10e2\u10d4\u10da\u10d4\u10e4\u10dd\u10dc\u10d8\u10e1 \u10dc\u10dd\u10db\u10d4\u10e0\u10d8
samlRoleListScopeConsentText=\u10e9\u10d4\u10db\u10d8 \u10e0\u10dd\u10da\u10d4\u10d1\u10d8
rolesScopeConsentText=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e0\u10dd\u10da\u10d4\u10d1\u10d8
organizationScopeConsentText=\u10dd\u10e0\u10d2\u10d0\u10dc\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0
restartLoginTooltip=\u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d0
loginTotpStep1=\u10d3\u10d0\u10d0\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d4\u10e0\u10d7-\u10d4\u10e0\u10d7\u10d8 \u10d0\u10db \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10d7\u10d0\u10d2\u10d0\u10dc\u10d8 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10dd\u10d1\u10d8\u10da\u10e3\u10e0\u10d6\u10d4\:
loginTotpStep3DeviceName=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8, \u10e0\u10dd\u10db \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 OTP \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0\u10e8\u10d8 \u10d3\u10d0\u10d2\u10d4\u10ee\u10db\u10d0\u10e0\u10dd\u10d7.
loginTotpManualStep3=\u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8 \u10d9\u10dd\u10dc\u10e4\u10d8\u10d2\u10e3\u10e0\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d4\u10d1\u10d8, \u10d7\u10e3 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10e1\u10d0\u10e8\u10e3\u10d0\u10da\u10d4\u10d1\u10d0\u10e1 \u10d2\u10d0\u10eb\u10da\u10d4\u10d5\u10d7, \u10d3\u10d0\u10d0\u10e7\u10d4\u10dc\u10dd\u10d7 \u10d8\u10e1\u10d8\u10dc\u10d8\:
oauth2DeviceExpiredUserCodeMessage=\u10d9\u10dd\u10d3\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0. \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d0\u10d6\u10d4 \u10d3\u10d0 \u10d3\u10d0\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d4\u10d1\u10d0 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10e1\u10ea\u10d0\u10d3\u10d4\u10d7.
oauth2DeviceVerificationFailedMessage=\u10e8\u10d4\u10d2\u10d8\u10eb\u10da\u10d8\u10d0\u10d7 \u10d3\u10d0\u10ee\u10e3\u10e0\u10dd\u10d7 \u10d4\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10e1 \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0, \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d0\u10d6\u10d4 \u10d3\u10d0 \u10db\u10d8\u10d4\u10e0\u10d7\u10d4\u10d1\u10d0 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10e1\u10ea\u10d0\u10d3\u10dd\u10d7.
oauth2DeviceAuthorizationGrantDisabledMessage=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10e1 OAuth 2.0 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10d0\u10d5\u10e2\u10dd\u10e0\u10d8\u10d6\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d8\u10e1 \u10e3\u10e4\u10da\u10d4\u10d1\u10d0 \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1. \u10d4\u10e1 \u10d3\u10d8\u10dc\u10d4\u10d1\u10d0 \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0 \u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1.
oauth2DeviceVerificationCompleteMessage=\u10e8\u10d4\u10d2\u10d8\u10eb\u10da\u10d8\u10d0\u10d7 \u10d3\u10d0\u10ee\u10e3\u10e0\u10dd\u10d7 \u10d4\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10e1 \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0 \u10d3\u10d0 \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d0\u10d6\u10d4.
oauth2DeviceVerificationFailedHeader=\u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0
emailVerifyInstruction2=\u10d0\u10e0 \u10db\u10d8\u10d2\u10d8\u10e6\u10d8\u10d0\u10d7 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0\u10d6\u10d4?
oauth2DeviceConsentDeniedMessage=\u10d7\u10d0\u10dc\u10ee\u10db\u10dd\u10d1\u10d0 \u10e3\u10d0\u10e0\u10e7\u10dd\u10e4\u10d8\u10da\u10d8\u10d0 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10d3\u10d0\u10e1\u10d0\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d4\u10d1\u10da\u10d0\u10d3.
unexpectedErrorHandlingRequestMessage=\u10db\u10dd\u10e3\u10da\u10dd\u10d3\u10dc\u10d4\u10da\u10d8 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10d7\u10d0\u10dc \u10d2\u10d0\u10e1\u10d0\u10d2\u10d6\u10d0\u10d5\u10dc\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10e1 \u10d3\u10d0\u10db\u10e3\u10e8\u10d0\u10d5\u10d4\u10d1\u10d8\u10e1\u10d0\u10e1.
confirmOverrideIdpTitle=\u10d1\u10e0\u10dd\u10d9\u10d4\u10e0\u10d8\u10e1 \u10d1\u10db\u10e3\u10da\u10d8 \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1
confirmLinkIdpTitle=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1
nestedFirstBrokerFlowMessage={0} \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 {1} \u10ea\u10dc\u10dd\u10d1\u10d8\u10da \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d6\u10d4 \u10db\u10d8\u10d1\u10db\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0.
confirmLinkIdpReviewProfile=\u10de\u10e0\u10dd\u10e4\u10d8\u10da\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10ee\u10d4\u10d3\u10d5\u10d0
confirmOverrideIdpContinue=\u10d3\u10d8\u10d0\u10ee, \u10d2\u10d0\u10d3\u10d0\u10e4\u10d0\u10e0\u10d4 \u10d1\u10db\u10e3\u10da\u10d8 \u10db\u10d8\u10db\u10d3\u10d8\u10dc\u10d0\u10e0\u10d4 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10d7
confirmLinkIdpContinue=\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0 \u10d0\u10e0\u10e1\u10d4\u10d1\u10e3\u10da \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d6\u10d4
updatePasswordMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10da\u10d0\u10d3 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10e8\u10d4\u10ea\u10d5\u10da\u10d0 \u10d2\u10ed\u10d8\u10e0\u10d3\u10d4\u10d1\u10d0\u10d7.
linkIdpMessage=\u10d8\u10db\u10d8\u10e1\u10d0\u10d7\u10d5\u10d8\u10e1, \u10e0\u10dd\u10db \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 {0}-\u10d6\u10d4 \u10db\u10d8\u10d0\u10d1\u10d0\u10d7, \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0\u10d0 \u10e1\u10d0\u10ed\u10d8\u10e0\u10dd.
invalidPasswordMinLengthMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10db\u10d8\u10dc\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d2\u10e0\u10eb\u10d4\u10d0 {0}.
invalidPasswordMaxLengthMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d2\u10e0\u10eb\u10d4\u10d0 {0}.
successLogout=\u10d7\u10e5\u10d5\u10d4\u10dc \u10d2\u10d0\u10ee\u10d5\u10d4\u10d3\u10d8\u10d7
unknownLoginRequesterMessage=\u10e3\u10ea\u10dc\u10dd\u10d1\u10d8 \u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10db\u10dd\u10db\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8
bearerOnlyMessage=\u10db\u10ee\u10dd\u10da\u10dd\u10d3-\u10db\u10d0\u10e2\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8\u10e1 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d4\u10d1\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d8\u10e1 \u10e3\u10e4\u10da\u10d4\u10d1\u10d0 \u10d0\u10e0 \u10d2\u10d0\u10d0\u10e9\u10dc\u10d8\u10d0\u10d7
standardFlowDisabledMessage=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10e1 \u10e3\u10e4\u10da\u10d4\u10d1\u10d0, \u10e0\u10dd\u10db \u10d3\u10d0\u10d8\u10ec\u10e7\u10dd\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8 \u10de\u10d0\u10e1\u10e3\u10ee\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8\u10d7, \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1. \u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 \u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8 \u10d3\u10d8\u10dc\u10d4\u10d1\u10d0 \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0.
emailInstruction=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8 \u10d0\u10dc \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d3\u10d0 \u10d2\u10d0\u10db\u10dd\u10d2\u10d8\u10d2\u10d6\u10d0\u10d5\u10dc\u10d8\u10d7 \u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10e5\u10ea\u10d8\u10d4\u10d1\u10e1, \u10e0\u10dd\u10d2\u10dd\u10e0 \u10e8\u10d4\u10e5\u10db\u10dc\u10d0\u10d7 \u10d0\u10ee\u10d0\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
role_view-clients=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d4\u10d1\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
invalidUserMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10d0\u10dc \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
emailLinkIdp1=\u10d2\u10d0\u10db\u10dd\u10d2\u10d4\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0\u10d7 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10e5\u10ea\u10d8\u10d4\u10d1\u10d8\u10d7, \u10e0\u10dd\u10d2\u10dd\u10e0 \u10db\u10d8\u10d0\u10d1\u10d0\u10d7 {0} \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 {1} \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 {2}-\u10d8\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10e1.
emailLinkIdp3=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d2\u10d0\u10e1\u10d0\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0\u10d3.
emailLinkIdp5=\u10d2\u10d0\u10e1\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10da\u10d0\u10d3.
emailLinkIdp2=\u10d0\u10e0 \u10db\u10d8\u10d2\u10d8\u10e6\u10d8\u10d0\u10d7 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0\u10d6\u10d4?
emailLinkIdp4=\u10d7\u10e3 \u10e3\u10d9\u10d5\u10d4 \u10d2\u10d0\u10d3\u10d0\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d7 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10e1\u10ee\u10d5\u10d0 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e8\u10d8
role_view-realm=\u10e0\u10d4\u10d0\u10da\u10db\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
role_view-identity-providers=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d4\u10d1\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
emailInstructionUsername=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8 \u10d3\u10d0 \u10d2\u10d0\u10db\u10dd\u10d2\u10d8\u10d2\u10d6\u10d0\u10d5\u10dc\u10d8\u10d7 \u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10e5\u10ea\u10d8\u10d4\u10d1\u10e1, \u10e0\u10dd\u10d2\u10dd\u10e0 \u10e8\u10d4\u10e5\u10db\u10dc\u10d0\u10d7 \u10d0\u10ee\u10d0\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
pageExpiredMsg2=\u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10de\u10e0\u10dd\u10ea\u10d4\u10e1\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10da\u10d0\u10d3
role_manage-applications=\u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_offline-access=\u10d8\u10dc\u10e2\u10d4\u10e0\u10dc\u10d4\u10e2\u10d2\u10d0\u10e0\u10d4\u10e8\u10d4 \u10ec\u10d5\u10d3\u10dd\u10db\u10d0
accountTemporarilyDisabledMessage=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10d3\u10e0\u10dd\u10d4\u10d1\u10d8\u10d7 \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0. \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0\u10e1 \u10d0\u10dc \u10db\u10dd\u10d2\u10d5\u10d8\u10d0\u10dc\u10d4\u10d1\u10d8\u10d7 \u10e1\u10ea\u10d0\u10d3\u10d4\u10d7.
role_create-realm=\u10e0\u10d4\u10d0\u10da\u10db\u10d8\u10e1 \u10e8\u10d4\u10e5\u10db\u10dc\u10d0
role_create-client=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8\u10e1 \u10e8\u10d4\u10e5\u10db\u10dc\u10d0
role_view-users=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d4\u10d1\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
role_view-applications=\u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
role_manage-clients=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_view-events=\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d4\u10d1\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
client_account=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8
role_manage-realm=\u10e0\u10d4\u10d0\u10da\u10db\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_manage-users=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_manage-identity-providers=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_manage-events=\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_read-token=\u10d9\u10dd\u10d3\u10d8\u10e1 \u10ec\u10d0\u10d9\u10d8\u10d7\u10ee\u10d5\u10d0
client_account-console=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d9\u10dd\u10dc\u10e1\u10dd\u10da\u10d8
invalidRequesterMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d2\u10d0\u10db\u10dd\u10db\u10d7\u10ee\u10dd\u10d5\u10d8
registrationNotAllowedMessage=\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0 \u10d3\u10d0\u10e8\u10d5\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
role_view-profile=\u10de\u10e0\u10dd\u10e4\u10d8\u10da\u10d8\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d0
role_manage-account-links=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
role_manage-account=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
client_security-admin-console=\u10e3\u10e1\u10d0\u10e4\u10e0\u10d7\u10ee\u10dd\u10d4\u10d1\u10d8\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1 \u10d9\u10dd\u10dc\u10e1\u10dd\u10da\u10d8
resetCredentialNotAllowedMessage=\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8\u10d6\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d4\u10e2\u10d0\u10da\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d0\u10db\u10dd\u10e7\u10e0\u10d0 \u10d3\u10d0\u10e8\u10d5\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
permissionNotApprovedMessage=\u10ec\u10d5\u10d3\u10dd\u10db\u10d0 \u10d0\u10e0 \u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d3\u10d0.
expiredActionTokenNoSessionMessage=\u10e5\u10db\u10d4\u10d3\u10d4\u10d1\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0.
expiredActionTokenSessionExistsMessage=\u10e5\u10db\u10d4\u10d3\u10d4\u10d1\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0. \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d3\u10d0\u10d8\u10ec\u10e7\u10d4\u10d7.
notMatchPasswordMessage=\u10de\u10d0\u10e0\u10dd\u10da\u10d4\u10d1\u10d8 \u10d0\u10e0 \u10d4\u10db\u10d7\u10ee\u10d5\u10d4\u10d5\u10d0.
error-invalid-blank=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0.
expiredActionMessage=\u10e5\u10db\u10d4\u10d3\u10d4\u10d1\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0. \u10d2\u10d0\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0.
missingTotpDeviceNameMessage=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8.
error-empty=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0.
error-invalid-value=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0.
error-invalid-length=\u10e1\u10d8\u10d2\u10e0\u10eb\u10d8\u10e1 \u10d3\u10d0\u10e8\u10d5\u10d4\u10d1\u10e3\u10da\u10d8 \u10e8\u10e3\u10d0\u10da\u10d4\u10d3\u10d8\u10d0 {0}-{1}.
identityProviderInvalidSignatureMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10ee\u10d4\u10da\u10db\u10dd\u10ec\u10d4\u10e0\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10d0\u10e1\u10e3\u10ee\u10e8\u10d8.
identityProviderInvalidResponseMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e1\u10e3\u10ee\u10d8 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1\u10d2\u10d0\u10dc.
identityProviderNotFoundMessage=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10d7 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10d8 \u10d5\u10d4\u10e0 \u10d5\u10d8\u10de\u10dd\u10d5\u10d4.
credentialSetupRequired=\u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10e8\u10d4\u10e3\u10eb\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0. \u10d0\u10e3\u10ea\u10d8\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0 \u10d0\u10d5\u10e2\u10dd\u10e0\u10d8\u10d6\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d4\u10e2\u10d0\u10da\u10d4\u10d1\u10d8\u10e1 \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10d0.
staleCodeMessage=\u10d4\u10e1 \u10d2\u10d5\u10d4\u10e0\u10d3\u10d8 \u10e3\u10d9\u10d5\u10d4 \u10e1\u10ec\u10dd\u10e0\u10d8 \u10d0\u10e6\u10d0\u10e0\u10d0\u10d0. \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10e8\u10d8 \u10d3\u10d0 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10e8\u10d4\u10db\u10dd\u10d3\u10d8\u10d7
identityProviderNotUniqueMessage=\u10e0\u10d4\u10d0\u10da\u10db\u10e1 \u10d4\u10e0\u10d7\u10d6\u10d4 \u10db\u10d4\u10e2\u10d8 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0 \u10d2\u10d0\u10d0\u10e9\u10dc\u10d8\u10d0. \u10e8\u10d4\u10e3\u10eb\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0 \u10d3\u10d0\u10d3\u10d2\u10d4\u10dc\u10d0, \u10e0\u10dd\u10db\u10d4\u10da\u10d8 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10d8\u10e5\u10dc\u10d4\u10e1 \u10d2\u10d0\u10db\u10dd\u10e7\u10d4\u10dc\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1.
realmSupportsNoCredentialsMessage=\u10e0\u10d4\u10d0\u10da\u10db\u10e1 \u10d0\u10d5\u10e2\u10dd\u10e0\u10d8\u10d6\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d4\u10e2\u10d0\u10da\u10d4\u10d1\u10d8\u10e1 \u10d0\u10e0\u10ea \u10d4\u10e0\u10d7\u10d8 \u10e2\u10d8\u10de\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0 \u10d2\u10d0\u10d0\u10e9\u10dc\u10d8\u10d0.
emailVerifiedMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10e3\u10da\u10d8\u10d0.
emailVerifiedAlreadyMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10e3\u10d9\u10d5\u10d4 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10e3\u10da\u10d8\u10d0.
staleEmailVerificationLink=\u10d1\u10db\u10e3\u10da\u10d8, \u10e0\u10dd\u10db\u10d4\u10da\u10d6\u10d4\u10ea \u10d3\u10d0\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d7, \u10eb\u10d5\u10d4\u10da\u10d8, \u10e3\u10db\u10dd\u10e5\u10db\u10d4\u10d3\u10dd \u10d1\u10db\u10e3\u10da\u10d8\u10d0 \u10d3\u10d0 \u10d0\u10e6\u10d0\u10e0 \u10db\u10e3\u10e8\u10d0\u10dd\u10d1\u10e1. \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0, \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10e3\u10d9\u10d5\u10d4 \u10d2\u10d0\u10d3\u10d0\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d7.
identityProviderAlreadyLinkedMessage=\u10e4\u10d4\u10d3\u10d4\u10e0\u10d0\u10ea\u10d8\u10e3\u10da\u10d8 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8, \u10e0\u10dd\u10db\u10d4\u10da\u10d8\u10ea {0}-\u10db\u10d0 \u10d3\u10d0\u10d0\u10d1\u10e0\u10e3\u10dc\u10d0, \u10e3\u10d9\u10d5\u10d4 \u10db\u10d8\u10d1\u10db\u10e3\u10da\u10d8\u10d0 \u10e1\u10ee\u10d5\u10d0 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d6\u10d4.
confirmAccountLinking=\u10d3\u10d0\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d7 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 {0} \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10d3\u10d0\u10dc {1} \u10db\u10d8\u10d1\u10db\u10d0 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d6\u10d4.
confirmEmailAddressVerification=\u10d3\u10d0\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d7 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8\u10e1 {0} \u10e1\u10d8\u10e1\u10ec\u10dd\u10e0\u10d4.
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d4\u10dc\u10d4\u10e0\u10d0\u10ea\u10d8\u10d0
confirmExecutionOfActions=\u10e8\u10d4\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d7 \u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8 \u10e5\u10db\u10d4\u10d3\u10d4\u10d1\u10d4\u10d1\u10d8
backToApplication=&laquo; \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10d6\u10d4 \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0
brokerLinkingSessionExpired=\u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10da\u10d8\u10d0 \u10d1\u10e0\u10dd\u10d9\u10d4\u10e0\u10d8\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10db\u10d8\u10d1\u10db\u10d0, \u10db\u10d0\u10d2\u10e0\u10d0\u10db \u10db\u10d8\u10db\u10d3\u10d8\u10dc\u10d0\u10e0\u10d4 \u10e1\u10d4\u10e1\u10d8\u10d0 \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8\u10d0.
differentUserAuthenticated=\u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10e3\u10d9\u10d5\u10d4 \u10d2\u10d0\u10d8\u10d0\u10e0\u10d4\u10d7 \u10e1\u10ee\u10d5\u10d0 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10d7 "{0}" \u10d0\u10db \u10e1\u10d4\u10e1\u10d8\u10d0\u10e8\u10d8. \u10ef\u10d4\u10e0 \u10e3\u10dc\u10d3\u10d0 \u10d2\u10d0\u10ee\u10d5\u10d8\u10d3\u10d4\u10d7.
requiredAction.TERMS_AND_CONDITIONS=\u10ec\u10d4\u10e1\u10d4\u10d1\u10d8 \u10d3\u10d0 \u10de\u10d8\u10e0\u10dd\u10d1\u10d4\u10d1\u10d8
acrNotFulfilled=\u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d4\u10d1\u10d8 \u10d3\u10d0\u10d9\u10db\u10d0\u10e7\u10dd\u10e4\u10d8\u10da\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
requiredAction.CONFIGURE_TOTP=OTP-\u10d8\u10e1 \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10d0
requiredAction.webauthn-register-passwordless=Webauthn-\u10d6\u10d4 \u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0 \u10e3\u10de\u10d0\u10e0\u10dd\u10da\u10dd\u10d3
clientCertificate=X509 \u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8\u10e1 \u10e1\u10d4\u10e0\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10d8\:
invalidTokenRequiredActions=\u10d0\u10db \u10d1\u10db\u10e3\u10da\u10e8\u10d8 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10da\u10d8 \u10e5\u10db\u10d4\u10d3\u10d4\u10d1\u10d4\u10d1\u10d8 \u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8\u10d0
internalServerError=\u10d0\u10e6\u10db\u10dd\u10e9\u10d4\u10dc\u10d8\u10da\u10d8\u10d0 \u10e1\u10d4\u10e0\u10d5\u10d4\u10e0\u10d8\u10e1 \u10e8\u10d8\u10d3\u10d0 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0
noCertificate=[\u10e1\u10d4\u10e0\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4]
pageNotFound=\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8 \u10d5\u10d4\u10e0 \u10d5\u10d8\u10de\u10dd\u10d5\u10d4
openshift.scope.user_full=\u10e1\u10e0\u10e3\u10da\u10d8 \u10ec\u10d5\u10d3\u10dd\u10db\u10d0
console-verify-email=\u10e1\u10d0\u10ed\u10d8\u10e0\u10dd\u10d0, \u10d2\u10d0\u10d3\u10d0\u10d0\u10db\u10dd\u10ec\u10db\u10dd\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8. \u10d2\u10d0\u10db\u10dd\u10d2\u10d8\u10d2\u10d6\u10d0\u10d5\u10dc\u10d4\u10d7 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 {0}-\u10d6\u10d4, \u10e0\u10dd\u10db\u10d4\u10da\u10d8\u10ea \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d8\u10e1 \u10d9\u10dd\u10d3\u10e1 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10e1. \u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d4\u10e1 \u10d9\u10dd\u10d3\u10d8 \u10e5\u10d5\u10d4\u10db\u10dd\u10d7 \u10d5\u10d4\u10da\u10e8\u10d8.
saml.artifactResolutionServiceInvalidResponse=\u10d0\u10e0\u10e2\u10d4\u10e4\u10d0\u10e5\u10e2\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10ec\u10e7\u10d5\u10d4\u10e2\u10d0 \u10e8\u10d4\u10e3\u10eb\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0.
openshift.scope.user_check-access=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0
openshift.scope.list-projects=\u10de\u10e0\u10dd\u10d4\u10e5\u10e2\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0
otp-help-text=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10d3\u10d0\u10dc.
saml.post-form.js-disabled=JavaScript \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0. \u10d2\u10d8\u10e0\u10e9\u10d4\u10d5\u10d7, \u10e9\u10d0\u10e0\u10d7\u10dd\u10d7 \u10d8\u10e1. \u10d2\u10d0\u10e1\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10da\u10d0\u10d3 \u10d3\u10d0\u10d0\u10ec\u10d4\u10e5\u10d8\u10d7 \u10e6\u10d8\u10da\u10d0\u10d9\u10e1 \u10e5\u10d5\u10d4\u10db\u10dd\u10d7.
password-display-name=\u10de\u10d0\u10e0\u10dd\u10da\u10d8
otp-display-name=\u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0
otp-reset-description=\u10e0\u10dd\u10db\u10d4\u10da\u10d8 OTP-\u10d8\u10e1 \u10d9\u10dd\u10dc\u10e4\u10d8\u10d2\u10e3\u10e0\u10d0\u10ea\u10d8\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0 \u10d2\u10dc\u10d4\u10d1\u10d0\u10d5\u10d7?
auth-recovery-authn-code-form-help-text=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10e1\u10d8\u10d8\u10d3\u10d0\u10dc, \u10e0\u10dd\u10db\u10d4\u10da\u10d8\u10ea \u10d0\u10d3\u10e0\u10d4 \u10d2\u10d0\u10d3\u10db\u10dd\u10d2\u10d4\u10ea\u10d0\u10d7.
recovery-code-config-warning-title=\u10d4\u10e1 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8 \u10d0\u10e6\u10d0\u10e0\u10d0\u10e1\u10d3\u10e0\u10dd\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10dc\u10d3\u10d4\u10d1\u10d0, \u10e0\u10dd\u10ea\u10d0 \u10d0\u10db \u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10d3\u10d0\u10dc \u10d2\u10d0\u10ee\u10d5\u10d0\u10da\u10d7
auth-recovery-authn-code-form-display-name=\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8
auth-recovery-code-info-message=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8.
recovery-codes-error-invalid=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8
auth-recovery-code-prompt=\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8 \#{0}
auth-recovery-code-header=\u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8\u10d7
recovery-code-config-header=\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10d8\u10ea\u10d8\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8
recovery-codes-print=\u10d3\u10d0\u10d1\u10d4\u10ed\u10d3\u10d5\u10d0
recovery-codes-copy=\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0
recovery-codes-download-file-description=\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8 \u10d4\u10e0\u10d7\u10ef\u10d4\u10e0\u10d0\u10d3\u10d8 \u10e1\u10d0\u10d9\u10d5\u10d0\u10dc\u10eb\u10dd \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8\u10d0, \u10e0\u10dd\u10db\u10d4\u10da\u10d8\u10ea \u10e1\u10d0\u10e8\u10e3\u10d0\u10da\u10d4\u10d1\u10d0\u10e1 \u10d2\u10d0\u10eb\u10da\u10d4\u10d5\u10d7, \u10e8\u10d4\u10ee\u10d5\u10d8\u10d3\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10e8\u10d8, \u10d7\u10e3 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d7\u10d0\u10dc \u10ec\u10d5\u10d3\u10dd\u10db\u10d0 \u10d3\u10d0\u10d9\u10d0\u10e0\u10d2\u10d4\u10d7.
recovery-codes-label-default=\u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8
recovery-codes-download=\u10d2\u10d0\u10d3\u10db\u10dd\u10ec\u10d4\u10e0\u10d0
webauthn-display-name=Passkey
webauthn-help-text=\u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 Passkey \u10e8\u10d4\u10e1\u10d0\u10e1\u10d5\u10da\u10d4\u10da\u10d0\u10d3.
recovery-codes-copied=\u10d3\u10d0\u10d9\u10dd\u10de\u10d8\u10e0\u10d3\u10d0
recovery-codes-confirmation-message=\u10db\u10d4 \u10e8\u10d4\u10d5\u10d8\u10dc\u10d0\u10ee\u10d4 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8 \u10e3\u10e1\u10d0\u10e4\u10e0\u10d7\u10ee\u10dd \u10d0\u10d3\u10d2\u10d8\u10da\u10d0\u10e1
webauthn-passwordless-display-name=Passkey
webauthn-passwordless-help-text=\u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 Passkey \u10e3\u10de\u10d0\u10e0\u10dd\u10da\u10dd\u10d3 \u10e8\u10d4\u10e1\u10d0\u10e1\u10d5\u10da\u10d4\u10da\u10d0\u10d3.
webauthn-unsupported-browser-text=\u10d0\u10db \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e1 WebAuthn-\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0 \u10d0\u10e0 \u10d2\u10d0\u10d0\u10e9\u10dc\u10d8\u10d0. \u10e1\u10ea\u10d0\u10d3\u10d4\u10d7 \u10e1\u10ee\u10d5\u10d0 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8 \u10d0\u10dc \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10e1\u10d8\u10e1\u10e2\u10d4\u10db\u10e3\u10e0 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0\u10e1.
webauthn-doAuthenticate=Passkey-\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0
webauthn-registration-init-label=Passkey (\u10dc\u10d0\u10d2\u10e3\u10da\u10d8\u10e1\u10ee\u10db\u10d4\u10d5\u10d8 \u10ed\u10d3\u10d4)
webauthn-error-title=Passkey-\u10d8\u10e1 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0
webauthn-createdAt-label=\u10e8\u10d4\u10d8\u10e5\u10db\u10dc\u10d0
webauthn-registration-init-label-prompt=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d3\u10d0\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 Passkey-\u10d8\u10e1 \u10ed\u10d3\u10d4
webauthn-error-registration=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 Passkey-\u10d8\u10e1 \u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0.<br/>{0}
passkey-unsupported-browser-text=Passkey-\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0 \u10d0\u10db \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e1 \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1. \u10e1\u10ea\u10d0\u10d3\u10d4\u10d7 \u10e1\u10ee\u10d5\u10d0 \u10d0\u10dc \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0\u10e1.
webauthn-error-api-get=Passkey-\u10d8\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0.<br/>{0}
passkey-doAuthenticate=Passkey-\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0
webauthn-error-different-user=\u10de\u10d8\u10e0\u10d5\u10d4\u10da\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8, \u10d5\u10d8\u10dc\u10ea \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10d2\u10d0\u10d8\u10d0\u10e0\u10d0, Passkey-\u10d8\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10e1 \u10d0\u10e0 \u10d4\u10db\u10d7\u10ee\u10d5\u10d4\u10d5\u10d0.
passkey-createdAt-label=\u10e8\u10d4\u10d8\u10e5\u10db\u10dc\u10d0
passkey-autofill-select=\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 Passkey
idp-email-verification-help-text=\u10db\u10d8\u10d0\u10d1\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d8\u10d7.
idp-username-password-form-display-name=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10d3\u10d0 \u10de\u10d0\u10e0\u10dd\u10da\u10d8
identity-provider-redirector=\u10d3\u10d0\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d4\u10d1\u10d0 \u10e1\u10ee\u10d5\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10d7
identity-provider-login-label=\u10d0\u10dc \u10e8\u10d4\u10d3\u10d8\u10d7 \u10db\u10d4\u10d7\u10dd\u10d3\u10d8\u10d7
idp-username-password-form-help-text=\u10db\u10d8\u10d0\u10d1\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10e1\u10d8\u10e1\u10e2\u10d4\u10db\u10d0\u10e8\u10d8 \u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10d7.
frontchannel-logout.message=\u10db\u10d8\u10db\u10d3\u10d8\u10dc\u10d0\u10e0\u10d4\u10dd\u10d1\u10e1 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d2\u10d0\u10e1\u10d5\u10da\u10d0 \u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8 \u10d0\u10de\u10d4\u10d1\u10d8\u10d3\u10d0\u10dc
logoutConfirmTitle=\u10db\u10d8\u10db\u10d3\u10d8\u10dc\u10d0\u10e0\u10d4\u10dd\u10d1\u10e1 \u10d2\u10d0\u10e1\u10d5\u10da\u10d0
finalDeletionConfirmation=\u10d7\u10e3 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d8\u10d7, \u10db\u10d0\u10e1 \u10d5\u10d4\u10e6\u10d0\u10e0 \u10d0\u10e6\u10d0\u10d3\u10d2\u10d4\u10dc\u10d7. \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10e8\u10d4\u10e1\u10d0\u10dc\u10d0\u10e0\u10e9\u10e3\u10dc\u10d4\u10d1\u10da\u10d0\u10d3 \u10d3\u10d0\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d7 \u10e6\u10d8\u10da\u10d0\u10d9\u10d6\u10d4 ''\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0''.
deleteAccountConfirm=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0
loggingOutImmediately=\u10d3\u10d0\u10e3\u10e7\u10dd\u10d5\u10dc\u10d4\u10d1\u10da\u10d8\u10d5 \u10d2\u10d0\u10d2\u10d3\u10d4\u10d1\u10d0\u10e1
userDeletedSuccessfully=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10ec\u10d0\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7 \u10ec\u10d0\u10d8\u10e8\u10d0\u10da\u10d0
logoutConfirmHeader=\u10d2\u10dc\u10d4\u10d1\u10d0\u10d5\u10d7, \u10d2\u10d0\u10ee\u10d5\u10d8\u10d3\u10d4\u10d7?
frontchannel-logout.title=\u10db\u10d8\u10db\u10d3\u10d8\u10dc\u10d0\u10e0\u10d4\u10dd\u10d1\u10e1 \u10d2\u10d0\u10e1\u10d5\u10da\u10d0
readOnlyUsernameMessage=\u10d7\u10e5\u10d5\u10d4\u10dc \u10d5\u10d4\u10e0 \u10d2\u10d0\u10dc\u10d0\u10d0\u10ee\u10da\u10d4\u10d1\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10e1, \u10e0\u10d0\u10d3\u10d2\u10d0\u10dc \u10d8\u10e1 \u10db\u10ee\u10dd\u10da\u10dd\u10d3-\u10ec\u10d0\u10d9\u10d8\u10d7\u10ee\u10d5\u10d0\u10d3\u10d8\u10d0.
doLogout=\u10d2\u10d0\u10e1\u10d5\u10da\u10d0
error-invalid-multivalued-size=\u10d0\u10e2\u10e0\u10d8\u10d1\u10e3\u10e2\u10d8 {0} \u10db\u10d8\u10dc\u10d8\u10db\u10e3\u10db {1} \u10d3\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10e3\u10db {2} \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0\u10e1 \u10e3\u10dc\u10d3\u10d0 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10d3\u10d4\u10e1.
doLogIn=\u10e8\u10d4\u10e1\u10d5\u10da\u10d0
doRegister=\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0
doRegisterSecurityKey=\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0
doCancel=\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0
doSubmit=\u10d2\u10d0\u10d3\u10d0\u10ea\u10d4\u10db\u10d0
doNo=\u10d0\u10e0\u10d0
doContinue=\u10d2\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10d0
doDecline=\u10e3\u10d0\u10e0\u10e7\u10dd\u10e4\u10d0
doForgotPassword=\u10d3\u10d0\u10d2\u10d0\u10d5\u10d8\u10ec\u10e7\u10d3\u10d0\u10d7 \u10de\u10d0\u10e0\u10dd\u10da\u10d8?
doClickHere=\u10d3\u10d0\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d7 \u10d0\u10e5
doImpersonate=\u10d2\u10d0\u10dc\u10e1\u10d0\u10ee\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0
doTryAnotherWay=\u10e1\u10ee\u10d5\u10d0\u10dc\u10d0\u10d8\u10e0\u10d0\u10d3 \u10ea\u10d3\u10d0
doConfirmDelete=\u10ec\u10d0\u10e8\u10da\u10d8\u10e1 \u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d0
kerberosNotConfigured=Kerberos \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
kerberosNotSetUp=Kerberos \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0. \u10d5\u10d4\u10e0 \u10e8\u10d4\u10ee\u10d5\u10d0\u10da\u10d7.
registerTitle=\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0
loginAccountTitle=\u10e8\u10d4\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10e8\u10d8
loginTitle={0}-\u10e8\u10d8 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0
loginTitleHtml={0}
impersonateTitle={0} \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10d2\u10d0\u10dc\u10e1\u10d0\u10ee\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0
realmChoice=\u10e0\u10d4\u10d0\u10da\u10db\u10d8
unknownUser=\u10e3\u10ea\u10dc\u10dd\u10d1\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8
loginProfileTitle=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0
reauthenticate=\u10d2\u10d0\u10e1\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10da\u10d0\u10d3 \u10e1\u10d0\u10ed\u10d8\u10e0\u10dd\u10d0, \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d2\u10d0\u10d8\u10d0\u10e0\u10dd\u10d7
authenticateStrong=\u10d2\u10d0\u10e1\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10da\u10d0\u10d3 \u10e1\u10d0\u10ed\u10d8\u10e0\u10dd\u10d0 \u10eb\u10da\u10d8\u10d4\u10e0\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0
oauthGrantTitle={0}-\u10e1\u10d7\u10d0\u10dc \u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1 \u10db\u10d8\u10ea\u10d4\u10db\u10d0
oauthGrantTitleHtml={0}
oauthGrantInformation=\u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d3\u10d8\u10d7, \u10e0\u10dd\u10db \u10d4\u10dc\u10d3\u10dd\u10d1\u10d8\u10d7 {0}-\u10e1 \u10dc\u10d0\u10ee\u10d5\u10d8\u10d7, \u10e0\u10dd\u10d2\u10dd\u10e0 \u10d3\u10d0\u10d0\u10db\u10e3\u10e8\u10d0\u10d5\u10d4\u10d1\u10e1 {0} \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10dd\u10dc\u10d0\u10ea\u10d4\u10db\u10d4\u10d1\u10e1.
oauthGrantReview=\u10e8\u10d4\u10d2\u10d8\u10eb\u10da\u10d8\u10d0\u10d7, \u10d2\u10d0\u10d3\u10d0\u10ee\u10d4\u10d3\u10dd\u10d7
oauthGrantTos=\u10d2\u10d0\u10db\u10dd\u10e7\u10d4\u10dc\u10d4\u10d1\u10d8\u10e1 \u10de\u10d8\u10e0\u10dd\u10d1\u10d4\u10d1\u10e1.
oauthGrantPolicy=\u10d9\u10dd\u10dc\u10e4\u10d8\u10d3\u10d4\u10dc\u10ea\u10d8\u10d0\u10da\u10dd\u10d1\u10d8\u10e1 \u10de\u10dd\u10da\u10d8\u10e2\u10d8\u10d9\u10d0.
errorTitle=\u10d5\u10ec\u10e3\u10ee\u10d5\u10d0\u10e0\u10d7...
errorTitleHtml=<strong>\u10d5\u10ec\u10e3\u10ee\u10d5\u10d0\u10e0\u10d7</strong>...
updateEmailTitle=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0
emailUpdateConfirmationSentTitle=\u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10d2\u10d0\u10d8\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0
emailUpdatedTitle=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d3\u10d0
emailUpdated=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10ec\u10d0\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d3\u10d0 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0\u10d6\u10d4 {0}.
updatePasswordTitle=\u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0
codeSuccessTitle=\u10ec\u10d0\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8
displayUnsupported=\u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10da\u10d8 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d8\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
browserRequired=\u10e8\u10d4\u10e1\u10d0\u10e1\u10d5\u10da\u10d4\u10da\u10d0\u10d3 \u10d0\u10e3\u10ea\u10d8\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8
browserContinue=\u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10d3\u10d0\u10e1\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10da\u10d0\u10d3 \u10d0\u10e3\u10ea\u10d8\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8
browserContinuePrompt=\u10d2\u10d0\u10d5\u10ee\u10e1\u10dc\u10d0 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8 \u10d3\u10d0 \u10d2\u10d0\u10d5\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10dd \u10e8\u10d4\u10e1\u10d5\u10da\u10d0? [y/n]\:
browserContinueAnswer=y
usb=USB
nfc=NFC
bluetooth=\u10d1\u10da\u10e3\u10d7\u10e3\u10d6\u10d8
internal=\u10e8\u10d8\u10d3\u10d0
termsTitle=\u10ec\u10d4\u10e1\u10d4\u10d1\u10d8 \u10d3\u10d0 \u10de\u10d8\u10e0\u10dd\u10d1\u10d4\u10d1\u10d8
termsText=
termsPlainText=\u10d0\u10e6\u10e1\u10d0\u10ec\u10d4\u10e0\u10d8 \u10e2\u10d4\u10e0\u10db\u10d8\u10dc\u10d4\u10d1\u10d8 \u10d3\u10d0 \u10de\u10d8\u10e0\u10dd\u10d1\u10d4\u10d1\u10d8.
termsAcceptanceRequired=\u10e3\u10dc\u10d3\u10d0 \u10d3\u10d0\u10d4\u10d7\u10d0\u10dc\u10ee\u10db\u10dd\u10d7 \u10e9\u10d5\u10d4\u10dc\u10e1 \u10e2\u10d4\u10e0\u10db\u10d8\u10dc\u10d4\u10d1\u10e1 \u10d3\u10d0 \u10de\u10d8\u10e0\u10dd\u10d1\u10d4\u10d1\u10e1.
deleteCredentialTitle={0}-\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0
deleteCredentialMessage=\u10d2\u10dc\u10d4\u10d1\u10d0\u10d5\u10d7, \u10ec\u10d0\u10e8\u10d0\u10da\u10dd\u10d7 {0}?
recaptchaFailed=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 Recaptcha
recaptchaNotConfigured=Recaptcha \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10da\u10d8\u10d0, \u10db\u10d0\u10d2\u10e0\u10d0\u10db \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
consentDenied=\u10d7\u10d0\u10dc\u10ee\u10db\u10dd\u10d1\u10d0 \u10e3\u10d0\u10e0\u10e7\u10dd\u10e4\u10d8\u10da\u10d8\u10d0.
username=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8
usernameOrEmail=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8 \u10d0\u10dc \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0
familyName=\u10db\u10d4\u10e2\u10e1\u10d0\u10ee\u10d4\u10da\u10d8
email=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0
password=\u10de\u10d0\u10e0\u10dd\u10da\u10d8
passwordConfirm=\u10d2\u10d0\u10d8\u10db\u10d4\u10dd\u10e0\u10d4\u10d7 \u10de\u10d0\u10e0\u10dd\u10da\u10d8
passwordNew=\u10d0\u10ee\u10d0\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8
passwordNewConfirm=\u10d0\u10ee\u10d0\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8 \u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d0
hidePassword=\u10de\u10d0\u10e0\u10dd\u10da\u10d8 \u10d3\u10d0\u10db\u10d0\u10da\u10d5\u10d0
showPassword=\u10de\u10d0\u10e0\u10dd\u10da\u10d8 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0
rememberMe=\u10d3\u10d0\u10db\u10d8\u10db\u10d0\u10ee\u10e1\u10dd\u10d5\u10e0\u10d4
authenticatorCode=\u10d4\u10e0\u10d7\u10ef\u10d4\u10e0\u10d0\u10d3\u10d8 \u10d9\u10dd\u10d3\u10d8
street=\u10e5\u10e3\u10e9\u10d0
locality=\u10e5\u10d0\u10da\u10d0\u10e5\u10d8 \u10d0\u10dc \u10d3\u10d0\u10d1\u10d0
country=\u10e5\u10d5\u10d4\u10e7\u10d0\u10dc\u10d0
emailVerified=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10e3\u10da\u10d8\u10d0
website=\u10d5\u10d4\u10d1\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8
phoneNumber=\u10e2\u10d4\u10da\u10d4\u10e4\u10dd\u10dc\u10d8\u10e1 \u10dc\u10dd\u10db\u10d4\u10e0\u10d8
zoneinfo=\u10d3\u10e0\u10dd\u10d8\u10e1 \u10e1\u10d0\u10e0\u10e2\u10e7\u10d4\u10da\u10d8
logoutOtherSessions=\u10d2\u10d0\u10e1\u10d5\u10da\u10d0 \u10e1\u10ee\u10d5\u10d0 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d4\u10d1\u10d8\u10d3\u10d0\u10dc
profileScopeConsentText=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10e0\u10dd\u10e4\u10d8\u10da\u10d8
emailScopeConsentText=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8
loginTotpIntro=\u10d0\u10db \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d7\u10d0\u10dc \u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 \u10d4\u10e0\u10d7\u10ef\u10d4\u10e0\u10d0\u10d3\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10d2\u10d4\u10dc\u10d4\u10e0\u10d0\u10e2\u10dd\u10e0\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10db\u10dd\u10d8\u10e0\u10d2\u10dd\u10d7
loginTotpStep2=\u10d2\u10d0\u10ee\u10e1\u10d4\u10dc\u10d8\u10d7 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10d3\u10d0 \u10d3\u10d0\u10d0\u10e1\u10d9\u10d0\u10dc\u10d8\u10e0\u10d4\u10d7 \u10d1\u10d0\u10e0\u10d9\u10dd\u10d3\u10d8\:
loginTotpStep3=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10d8\u10d4\u10e0 \u10db\u10dd\u10ec\u10dd\u10d3\u10d4\u10d1\u10e3\u10da\u10d8 \u10d4\u10e0\u10d7\u10ef\u10d4\u10e0\u10d0\u10d3\u10d8 \u10d9\u10dd\u10d3\u10d8 \u10d3\u10d0 \u10d3\u10d0\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d7 \u10d2\u10d0\u10d3\u10d0\u10ea\u10d4\u10db\u10d0\u10d6\u10d4, \u10e0\u10dd\u10db \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10d0 \u10d3\u10d0\u10d0\u10e1\u10e0\u10e3\u10da\u10dd\u10d7.
loginTotpManualStep2=\u10d2\u10d0\u10ee\u10e1\u10d4\u10dc\u10d8\u10d7 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10d3\u10d0 \u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d9\u10dd\u10d3\u10d8\:
loginTotpUnableToScan=\u10d5\u10d4\u10e0 \u10d3\u10d0\u10d0\u10e1\u10d9\u10d0\u10dc\u10d4\u10e0\u10d4\u10d7?
loginTotpScanBarcode=\u10d3\u10d0\u10d5\u10d0\u10e1\u10d9\u10d0\u10dc\u10d4\u10e0\u10dd \u10d1\u10d0\u10e0\u10d9\u10dd\u10d3\u10d8?
loginCredential=\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8\u10d6\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d4\u10e2\u10d0\u10da\u10d8
loginOtpOneTime=\u10d4\u10e0\u10d7\u10ef\u10d4\u10e0\u10d0\u10d3\u10d8 \u10d9\u10dd\u10d3\u10d8
loginTotpType=\u10e2\u10d8\u10de\u10d8
loginTotpAlgorithm=\u10d0\u10da\u10d2\u10dd\u10e0\u10d8\u10d7\u10db\u10d8
loginTotpDigits=\u10ea\u10d8\u10e4\u10e0\u10d4\u10d1\u10d8
loginTotpInterval=\u10d8\u10dc\u10e2\u10d4\u10e0\u10d5\u10d0\u10da\u10d8
loginTotpCounter=\u10db\u10d7\u10d5\u10da\u10d4\u10da\u10d8
loginTotpDeviceName=\u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8
loginTotp.totp=\u10d3\u10e0\u10dd\u10d6\u10d4-\u10d3\u10d0\u10e4\u10e3\u10eb\u10dc\u10d4\u10d1\u10e3\u10da\u10d8
loginTotp.hotp=\u10db\u10d7\u10d5\u10da\u10d4\u10da\u10d6\u10d4-\u10d3\u10d0\u10e4\u10e3\u10eb\u10dc\u10d4\u10d1\u10e3\u10da\u10d8
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10db\u10d4\u10d7\u10dd\u10d3\u10d8
oauthGrantRequest=\u10d0\u10dc\u10d8\u10ed\u10d4\u10d1\u10d7 \u10d0\u10db \u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1 \u10e3\u10e4\u10da\u10d4\u10d1\u10d4\u10d1\u10e1?
inResource=\u10e1\u10d0\u10d3
oauth2DeviceVerificationTitle=\u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0
verifyOAuth2DeviceUserCode=\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d9\u10dd\u10d3\u10d8, \u10e0\u10dd\u10db\u10d4\u10da\u10d8\u10ea \u10d7\u10e5\u10d5\u10d4\u10dc\u10db\u10d0 \u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d0\u10db \u10db\u10dd\u10d2\u10d0\u10ec\u10dd\u10d3\u10d0\u10d7 \u10d3\u10d0 \u10d3\u10d0\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d7 \u10e6\u10d8\u10da\u10d0\u10d9\u10d6\u10d4 ''\u10d2\u10d0\u10d3\u10d0\u10ea\u10d4\u10db\u10d0''
oauth2DeviceInvalidUserCodeMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d9\u10dd\u10d3\u10d8. \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10e1\u10ea\u10d0\u10d3\u10d4\u10d7.
oauth2DeviceVerificationCompleteHeader=\u10db\u10dd\u10ec\u10e7\u10dd\u10d1\u10d8\u10da\u10dd\u10d1\u10d8\u10e1 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10ec\u10d0\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10e3\u10da\u10d8\u10d0
emailVerifyInstruction1=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10e5\u10ea\u10d8\u10d4\u10d1\u10d8\u10d7, \u10e0\u10dd\u10db \u10d2\u10d0\u10d3\u10d0\u10d5\u10d0\u10db\u10dd\u10ec\u10db\u10dd\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8, \u10d2\u10d0\u10d8\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d6\u10d4 {0}.
emailVerifyInstruction3=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d2\u10d0\u10e1\u10d0\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0\u10d3.
emailLinkIdpTitle={0}-\u10d8\u10e1 \u10db\u10d8\u10d1\u10db\u10d0
backToLogin=&laquo; \u10e8\u10d4\u10e1\u10d5\u10da\u10d0\u10d6\u10d4 \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0
copyCodeInstruction=\u10d3\u10d0\u10d0\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d7 \u10d4\u10e1 \u10d9\u10dd\u10d3\u10d8 \u10d3\u10d0 \u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10e8\u10d8\:
pageExpiredTitle=\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0
pageExpiredMsg1=\u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10de\u10e0\u10dd\u10ea\u10d4\u10e1\u10d8\u10e1 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d3\u10d0\u10e1\u10d0\u10ec\u10e7\u10d4\u10d1\u10d0\u10d3
personalInfo=\u10de\u10d4\u10e0\u10e1\u10dd\u10dc\u10d0\u10da\u10e3\u10e0\u10d8 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0\:
role_admin=\u10d0\u10d3\u10db\u10d8\u10dc\u10d8
role_realm-admin=\u10e0\u10d4\u10d0\u10da\u10db\u10d8\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8
client_admin-cli=\u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1 CLI
client_realm-management=\u10e0\u10d4\u10d0\u10da\u10db\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0
requiredFields=\u10d0\u10e3\u10ea\u10d8\u10da\u10d4\u10d1\u10d4\u10da\u10d8 \u10d5\u10d4\u10da\u10d4\u10d1\u10d8
client_broker=\u10d1\u10e0\u10dd\u10d9\u10d4\u10e0\u10d8
invalidUsernameMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8.
invalidUsernameOrEmailMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8 \u10d0\u10dc \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0.
invalidPasswordMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
invalidEmailMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8.
accountDisabledMessage=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0. \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0\u10e1.
expiredCodeMessage=\u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10db\u10dd\u10da\u10dd\u10d3\u10d8\u10dc\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0. \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10e8\u10d4\u10d3\u10d8\u10d7.
sessionLimitExceeded=\u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1 \u10db\u10d4\u10e2\u10d8\u10e1\u10db\u10d4\u10e2\u10d0\u10d3 \u10d1\u10d4\u10d5\u10e0\u10d8 \u10e1\u10d4\u10e1\u10d8\u10d0
identityProviderLogoutFailure=SAML IdP \u10d2\u10d0\u10e1\u10d5\u10da\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0
missingFirstNameMessage=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8.
missingLastNameMessage=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10d2\u10d5\u10d0\u10e0\u10d8.
missingEmailMessage=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0.
missingUsernameMessage=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8.
missingPasswordMessage=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
missingTotpMessage=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8.
error-invalid-length-too-short=\u10db\u10d8\u10dc\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d2\u10e0\u10eb\u10d4\u10d0 {1}.
error-invalid-length-too-long=\u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d2\u10e0\u10eb\u10d4\u10d0 {2}.
error-invalid-email=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8.
error-invalid-number=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10e0\u10d8\u10ea\u10ee\u10d5\u10d8.
error-number-out-of-range=\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10d8\u10e7\u10dd\u10e1 \u10e8\u10e3\u10d0\u10da\u10d4\u10d3\u10d8\u10d3\u10d0\u10dc {1}-{2}.
error-number-out-of-range-too-big=\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10e1 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0\u10d0 {2}.
error-number-out-of-range-too-small=\u10e0\u10d8\u10ea\u10ee\u10d5\u10d8\u10e1 \u10db\u10d8\u10dc\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0\u10d0 {1}.
error-pattern-no-match=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0.
error-invalid-uri=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 URL.
error-invalid-uri-scheme=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e1\u10e5\u10d4\u10db\u10d0.
error-invalid-uri-fragment=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 URL-\u10d8\u10e1 \u10e4\u10e0\u10d0\u10d2\u10db\u10d4\u10dc\u10e2\u10d8.
error-user-attribute-required=\u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10d4\u10e1 \u10d5\u10d4\u10da\u10d8.
error-invalid-date=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d7\u10d0\u10e0\u10d8\u10e6\u10d8.
error-user-attribute-read-only=\u10d4\u10e1 \u10d5\u10d4\u10da\u10d8 \u10db\u10ee\u10dd\u10da\u10dd\u10d3-\u10ec\u10d0\u10d9\u10d8\u10d7\u10ee\u10d5\u10d0\u10d3\u10d8\u10d0.
error-username-invalid-character=\u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0 \u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10e1 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10e1.
error-person-name-invalid-character=\u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0 \u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10e1 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10e1.
error-reset-otp-missing-id=\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 OTP-\u10d8\u10e1 \u10d9\u10dd\u10dc\u10e4\u10d8\u10d2\u10e3\u10e0\u10d0\u10ea\u10d8\u10d0.
invalidPasswordExistingMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d0\u10e0\u10e1\u10d4\u10d1\u10e3\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
invalidPasswordBlacklistedMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10de\u10d0\u10e0\u10dd\u10da\u10d8 \u10e8\u10d0\u10d5 \u10e1\u10d8\u10d0\u10e8\u10d8\u10d0.
invalidPasswordConfirmMessage=\u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10d3\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d0 \u10d0\u10e0 \u10d4\u10db\u10d7\u10ee\u10d5\u10d4\u10d5\u10d0.
invalidTotpMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8.
usernameExistsMessage=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8 \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1.
emailExistsMessage=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0 \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1.
federatedIdentityExistsMessage=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 {0}-\u10d8\u10d7 {1} \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1. \u10e8\u10d4\u10d3\u10d8\u10d7 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e0\u10d7\u10d5\u10d0\u10e8\u10d8, \u10e0\u10dd\u10db \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10db\u10d8\u10d0\u10d1\u10d0\u10d7.
federatedIdentityUnavailableMessage=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10db\u10d0 {0} \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10d7 {1} \u10d2\u10d0\u10d8\u10d0\u10e0\u10d0 \u10d3\u10d0 \u10d0\u10e0 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1. \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0.
federatedIdentityUnmatchedEssentialClaimMessage=ID-\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8, \u10e0\u10dd\u10db\u10d4\u10da\u10d8\u10ea \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10db\u10d0 \u10d2\u10d0\u10db\u10dd\u10e1\u10ea\u10d0, \u10d0\u10e0 \u10d4\u10db\u10d7\u10ee\u10d5\u10d4\u10d5\u10d0 \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da \u10eb\u10d8\u10e0\u10d8\u10d7\u10d0\u10d3 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d0\u10e1. \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0\u10e1.
federatedIdentityConfirmLinkMessage=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 {0}-\u10d8\u10d7 {1} \u10e3\u10d9\u10d5\u10d4 \u10d0\u10e0\u10e1\u10d4\u10d1\u10dd\u10d1\u10e1. \u10e0\u10dd\u10d2\u10dd\u10e0 \u10d2\u10dc\u10d4\u10d1\u10d0\u10d5\u10d7 \u10d2\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10d0?
federatedIdentityConfirmOverrideMessage=\u10ea\u10d3\u10d8\u10da\u10dd\u10d1\u10d7, \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 {0} {1}-\u10d8\u10d7 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10e1 {2}. \u10db\u10d0\u10d2\u10e0\u10d0\u10db \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10e3\u10d9\u10d5\u10d4 \u10db\u10d8\u10d1\u10db\u10e3\u10da\u10d8\u10d0 \u10e1\u10ee\u10d5\u10d0 {3} \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10e1 {4}. \u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d1\u10d7, \u10e0\u10dd\u10db \u10d2\u10dc\u10d4\u10d1\u10d0\u10d5\u10d7, \u10d0\u10e0\u10e1\u10d4\u10d1\u10e3\u10da\u10d8 \u10d1\u10db\u10e3\u10da\u10d8 \u10d0\u10ee\u10d0\u10da\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10d7 \u10e9\u10d0\u10d0\u10dc\u10d0\u10ea\u10d5\u10da\u10dd\u10d7?
federatedIdentityConfirmReauthenticateMessage=\u10d2\u10d0\u10d8\u10d0\u10e0\u10d4\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0, \u10e0\u10dd\u10db \u10db\u10d8\u10d0\u10d1\u10d0\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 {0}-\u10e1
configureTotpMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10da\u10d0\u10d3 \u10db\u10dd\u10d1\u10d8\u10da\u10e3\u10e0\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8 \u10d2\u10ed\u10d8\u10e0\u10d3\u10d4\u10d1\u10d0\u10d7.
configureBackupCodesMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10da\u10d0\u10d3 \u10db\u10d0\u10e0\u10e5\u10d0\u10e4\u10d8 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10db\u10dd\u10d8\u10e0\u10d2\u10dd\u10d7.
updateProfileMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10da\u10d0\u10d3 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10e0\u10dd\u10e4\u10d8\u10da\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10d2\u10d0\u10dc\u10d0\u10d0\u10ee\u10da\u10dd\u10d7.
updateEmailMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10da\u10d0\u10d3 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0 \u10d2\u10ed\u10d8\u10e0\u10d3\u10d4\u10d1\u10d0\u10d7.
resetPasswordMessage=\u10e1\u10d0\u10ed\u10d8\u10e0\u10dd\u10d0, \u10e8\u10d4\u10ea\u10d5\u10d0\u10da\u10dd\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8.
verifyEmailMessage=\u10e1\u10d0\u10ed\u10d8\u10e0\u10dd\u10d0, \u10d2\u10d0\u10d3\u10d0\u10d0\u10db\u10dd\u10ec\u10db\u10dd\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8, \u10e0\u10dd\u10db \u10d2\u10d0\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10dd\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8.
emailSentMessage=\u10db\u10d0\u10da\u10d4 \u10e8\u10d4\u10db\u10d3\u10d2\u10dd\u10db\u10d8 \u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10e5\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10db\u10ea\u10d5\u10d4\u10da \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0\u10e1 \u10db\u10d8\u10d8\u10e6\u10d4\u10d1\u10d7.
emailSendErrorMessage=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10d2\u10d6\u10d0\u10d5\u10dc\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0. \u10db\u10dd\u10d2\u10d5\u10d8\u10d0\u10dc\u10d4\u10d1\u10d8\u10d7 \u10e1\u10ea\u10d0\u10d3\u10d4\u10d7.
accountUpdatedMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d3\u10d0.
accountPasswordUpdatedMessage=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d3\u10d0.
delegationCompleteHeader=\u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10ec\u10d0\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10e3\u10da\u10d8\u10d0
delegationCompleteMessage=\u10e8\u10d4\u10d2\u10d8\u10eb\u10da\u10d8\u10d0\u10d7 \u10d3\u10d0\u10ee\u10e3\u10e0\u10dd\u10d7 \u10d4\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10e1 \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0 \u10d3\u10d0 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d9\u10dd\u10dc\u10e1\u10dd\u10da\u10d8\u10e1 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10d6\u10d4 \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d4\u10d7.
delegationFailedHeader=\u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0
delegationFailedMessage=\u10e8\u10d4\u10d2\u10d8\u10eb\u10da\u10d8\u10d0\u10d7, \u10d3\u10d0\u10ee\u10e3\u10e0\u10dd\u10d7 \u10d4\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10e1 \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0 \u10d3\u10d0 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d9\u10dd\u10dc\u10e1\u10dd\u10da\u10d8\u10e1 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10d6\u10d4 \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d4\u10d7 \u10d3\u10d0 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10e1\u10ea\u10d0\u10d3\u10dd\u10d7.
noAccessMessage=\u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4
invalidPasswordMinDigitsMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10e3\u10dc\u10d3\u10d0 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10d3\u10d4\u10e1, \u10e1\u10e3\u10da \u10ea\u10dd\u10e2\u10d0 {0} \u10ea\u10d8\u10e4\u10e0\u10e1.
invalidPasswordMinLowerCaseCharsMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10e3\u10dc\u10d3\u10d0 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10d3\u10d4\u10e1, \u10e1\u10e3\u10da \u10ea\u10dd\u10e2\u10d0 {0} \u10de\u10d0\u10e2\u10d0\u10e0\u10d0 \u10d0\u10e1\u10dd\u10e1.
invalidPasswordMinUpperCaseCharsMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10e3\u10dc\u10d3\u10d0 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10d3\u10d4\u10e1, \u10e1\u10e3\u10da \u10ea\u10dd\u10e2\u10d0 {0} \u10d3\u10d8\u10d3 \u10d0\u10e1\u10dd\u10e1.
invalidPasswordMinSpecialCharsMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10e3\u10dc\u10d3\u10d0 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10d3\u10d4\u10e1, \u10e1\u10e3\u10da \u10ea\u10dd\u10e2\u10d0 {0} \u10e1\u10de\u10d4\u10ea\u10d8\u10d0\u10da\u10e3\u10e0 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10e1.
invalidPasswordNotUsernameMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10d0\u10e0 \u10e3\u10dc\u10d3\u10d0 \u10d8\u10e7\u10dd\u10e1 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8\u10e1 \u10e2\u10dd\u10da\u10d8.
invalidPasswordNotContainsUsernameMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10d0\u10e0 \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0, \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10e1 \u10e8\u10d4\u10d8\u10ea\u10d0\u10d5\u10d3\u10d4\u10e1.
invalidPasswordNotEmailMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10d0\u10e0 \u10e3\u10dc\u10d3\u10d0 \u10e3\u10d3\u10e0\u10d8\u10d3\u10d4\u10e1 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0\u10e1.
invalidPasswordRegexPatternMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10d0\u10e0 \u10d4\u10db\u10d7\u10ee\u10d5\u10d4\u10d5\u10d0 \u10e0\u10d4\u10d2\u10d2\u10d0\u10db\u10dd\u10e1\u10d8\u10e1 \u10dc\u10d8\u10db\u10e3\u10e8(\u10d4\u10d1)-\u10e1.
invalidPasswordHistoryMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10d0\u10e0 \u10e3\u10dc\u10d3\u10d0 \u10e3\u10d3\u10e0\u10d8\u10d3\u10d4\u10e1 \u10d1\u10dd\u10da\u10dd {0} \u10de\u10d0\u10e0\u10dd\u10da\u10e1.
invalidPasswordGenericMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\: \u10d0\u10ee\u10d0\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8 \u10d0\u10e0 \u10d0\u10d9\u10db\u10d0\u10e7\u10dd\u10e4\u10d8\u10da\u10d4\u10d1\u10e1 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10de\u10dd\u10da\u10d8\u10e2\u10d8\u10d9\u10d4\u10d1\u10e1.
failedToProcessResponseMessage=\u10de\u10d0\u10e1\u10e3\u10ee\u10d8\u10e1 \u10d3\u10d0\u10db\u10e3\u10e8\u10d0\u10d5\u10d4\u10d1\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0
httpsRequiredMessage=HTTPS \u10d0\u10e3\u10ea\u10d8\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0
realmNotEnabledMessage=\u10e0\u10d4\u10d0\u10da\u10db\u10d8 \u10e9\u10d0\u10e0\u10d7\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
invalidRequestMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d0
failedLogout=\u10d2\u10d0\u10e1\u10d5\u10da\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0
loginRequesterNotEnabledMessage=\u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10db\u10dd\u10db\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8 \u10e9\u10d0\u10e0\u10d7\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
implicitFlowDisabledMessage=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10e1 \u10e3\u10e4\u10da\u10d4\u10d1\u10d0, \u10e0\u10dd\u10db \u10d3\u10d0\u10d8\u10ec\u10e7\u10dd\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8 \u10de\u10d0\u10e1\u10e3\u10ee\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8\u10d7, \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1. \u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 \u10de\u10d8\u10e0\u10d3\u10d0\u10de\u10d8\u10e0\u10d8 \u10d3\u10d8\u10dc\u10d4\u10d1\u10d0 \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0.
invalidRedirectUriMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d2\u10d0\u10d3\u10d0\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d4\u10d1\u10d8\u10e1 uri
unsupportedNameIdFormatMessage=\u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10e3\u10ed\u10d4\u10e0\u10d4\u10da\u10d8 NameIDFormat
noRelayStateInResponseMessage=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10d0\u10e1\u10e3\u10ee\u10e8\u10d8 \u10e0\u10d4\u10da\u10d4\u10e1 \u10db\u10d3\u10d2\u10dd\u10db\u10d0\u10e0\u10d4\u10dd\u10d1\u10d0 \u10d0\u10e6\u10db\u10dd\u10e9\u10d4\u10dc\u10d8\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0.
insufficientPermissionMessage=\u10d0\u10e0\u10d0\u10e1\u10d0\u10d9\u10db\u10d0\u10e0\u10d8\u10e1\u10d8 \u10ec\u10d5\u10d3\u10dd\u10db\u10d4\u10d1\u10d8 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10e1\u10d0\u10d1\u10db\u10d4\u10da\u10d0\u10d3.
couldNotProceedWithAuthenticationRequestMessage=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10d7\u10d0\u10dc \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10e1 \u10d2\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10d0 \u10e8\u10d4\u10e3\u10eb\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0.
couldNotObtainTokenMessage=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10d3\u10d0\u10dc \u10d9\u10dd\u10d3\u10d8\u10e1 \u10db\u10d8\u10e6\u10d4\u10d1\u10d0 \u10e8\u10d4\u10e3\u10eb\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0.
unexpectedErrorRetrievingTokenMessage=\u10db\u10dd\u10e3\u10da\u10dd\u10d3\u10dc\u10d4\u10da\u10d8 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10d3\u10d0\u10dc \u10d9\u10dd\u10d3\u10d8\u10e1 \u10db\u10d8\u10e6\u10d4\u10d1\u10d8\u10e1\u10d0\u10e1.
unexpectedErrorHandlingResponseMessage=\u10db\u10dd\u10e3\u10da\u10dd\u10d3\u10dc\u10d4\u10da\u10d8 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10d0\u10e1\u10e3\u10ee\u10d8\u10e1 \u10d3\u10d0\u10db\u10e3\u10e8\u10d0\u10d5\u10d4\u10d1\u10d8\u10e1\u10d0\u10e1.
identityProviderAuthenticationFailedMessage=\u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0. \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10d7\u10d0\u10dc \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0 \u10e9\u10d0\u10d5\u10d0\u10e0\u10d3\u10d0.
couldNotSendAuthenticationRequestMessage=\u10d5\u10d4\u10e0 \u10d2\u10d0\u10d5\u10d0\u10d2\u10d6\u10d0\u10d5\u10dc\u10d4 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10d4\u10da\u10d7\u10d0\u10dc.
invalidAccessCodeMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8.
sessionNotActiveMessage=\u10e1\u10d4\u10e1\u10d8\u10d0 \u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d8 \u10d0\u10e0\u10d0\u10d0.
invalidCodeMessage=\u10d0\u10e6\u10db\u10dd\u10e9\u10d4\u10dc\u10d8\u10da\u10d8\u10d0 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0. \u10e8\u10d4\u10d3\u10d8\u10d7 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10d7.
cookieNotFoundMessage=\u10e5\u10e3\u10e5\u10d8 \u10d5\u10d4\u10e0 \u10d5\u10d8\u10de\u10dd\u10d5\u10d4. \u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d3\u10d8\u10d7, \u10e0\u10dd\u10db \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e8\u10d8 \u10e5\u10e3\u10e5\u10d8\u10d4\u10d1\u10d8 \u10e9\u10d0\u10e0\u10d7\u10e3\u10da\u10d8 \u10d2\u10d0\u10e5\u10d5\u10d7.
insufficientLevelOfAuthentication=\u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10dd\u10d7\u10ee\u10dd\u10d5\u10dc\u10d8\u10da\u10d8 \u10d3\u10dd\u10dc\u10d4 \u10d0\u10e0 \u10d3\u10d0\u10d9\u10db\u10d0\u10e7\u10dd\u10e4\u10d8\u10da\u10d4\u10d1\u10e3\u10da\u10d0.
identityProviderUnexpectedErrorMessage=\u10db\u10dd\u10e3\u10da\u10dd\u10d3\u10dc\u10d4\u10da\u10d8 \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1\u10d0\u10e1
identityProviderMissingStateMessage=\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10d0\u10e1\u10e3\u10ee\u10e8\u10d8 \u10db\u10d3\u10d2\u10dd\u10db\u10d0\u10e0\u10d4\u10dd\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d8 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0.
identityProviderMissingCodeOrErrorMessage=\u10dc\u10d0\u10d9\u10da\u10e3\u10da\u10d8 \u10d9\u10dd\u10d3\u10d8 \u10d0\u10dc \u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d8 \u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10db\u10ec\u10dd\u10d3\u10d4\u10d1\u10da\u10d8\u10e1 \u10de\u10d0\u10e1\u10e3\u10ee\u10e8\u10d8.
identityProviderLinkSuccess=\u10d7\u10e5\u10d5\u10d4\u10dc \u10ec\u10d0\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7 \u10d2\u10d0\u10d3\u10d0\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d0. \u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d3\u10d8\u10d7 \u10e1\u10d0\u10ec\u10e7\u10d8\u10e1 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e8\u10d8 \u10d3\u10d0 \u10d2\u10d0\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0.
missingParameterMessage=\u10dc\u10d0\u10d9\u10da\u10e3\u10da\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8\: {0}
clientNotFoundMessage=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8 \u10d5\u10d4\u10e0 \u10d5\u10d8\u10de\u10dd\u10d5\u10d4.
clientDisabledMessage=\u10d9\u10da\u10d8\u10d4\u10dc\u10e2\u10d8 \u10d2\u10d0\u10d7\u10d8\u10e8\u10e3\u10da\u10d8\u10d0.
invalidParameterMessage=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d8\: {0}
alreadyLoggedIn=\u10e3\u10d9\u10d5\u10d4 \u10e8\u10d4\u10e1\u10e3\u10da\u10d8 \u10d1\u10e0\u10eb\u10d0\u10dc\u10d3\u10d4\u10d1\u10d8\u10d7.
proceedWithAction=&raquo; \u10d3\u10d0\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d7 \u10d0\u10e5 \u10d2\u10d0\u10e1\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d1\u10da\u10d0\u10d3
requiredAction.UPDATE_PASSWORD=\u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0
requiredAction.UPDATE_PROFILE=\u10de\u10e0\u10dd\u10e4\u10d8\u10da\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0
requiredAction.VERIFY_EMAIL=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0
doX509Login=\u10e8\u10d4\u10ee\u10d5\u10d0\u10da\u10d7, \u10e0\u10dd\u10d2\u10dd\u10e0\u10ea\:
console-username=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8\:
console-password=\u10de\u10d0\u10e0\u10dd\u10da\u10d8\:
console-otp=\u10d4\u10e0\u10d7\u10ef\u10d4\u10e0\u10d0\u10d3\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\:
console-new-password=\u10d0\u10ee\u10d0\u10da\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\:
console-confirm-password=\u10d3\u10d0\u10d0\u10d3\u10d0\u10e1\u10e2\u10e3\u10e0\u10d4\u10d7 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\:
console-update-password=\u10d0\u10e3\u10ea\u10d8\u10da\u10d4\u10d1\u10d4\u10da\u10d8\u10d0 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0.
console-email-code=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8\:
console-accept-terms=\u10d4\u10d7\u10d0\u10dc\u10ee\u10db\u10d4\u10d1\u10d8\u10d7 \u10ec\u10d4\u10e1\u10d4\u10d1\u10e1? [y/n]\:
console-accept=y
openshift.scope.user_info=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0
saml.post-form.title=\u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d4\u10d1\u10d0
saml.post-form.message=\u10db\u10d8\u10db\u10d3\u10d8\u10dc\u10d0\u10e0\u10d4\u10dd\u10d1\u10e1 \u10d2\u10d0\u10d3\u10d0\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d4\u10d1\u10d0. \u10d2\u10d7\u10ee\u10dd\u10d5\u10d7, \u10db\u10dd\u10d8\u10d7\u10db\u10d8\u10dc\u10dd\u10d7.
password-help-text=\u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10d7.
auth-username-form-display-name=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8
auth-username-form-help-text=\u10d3\u10d0\u10d8\u10ec\u10e7\u10d4\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8\u10e1 \u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10d7
auth-username-password-form-display-name=\u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10d3\u10d0 \u10de\u10d0\u10e0\u10dd\u10da\u10d8
auth-username-password-form-help-text=\u10e8\u10d4\u10d3\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1\u10d0 \u10d3\u10d0 \u10de\u10d0\u10e0\u10dd\u10da\u10d8\u10e1 \u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10d7.
recovery-code-config-warning-message=\u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d3\u10d8\u10d7, \u10e0\u10dd\u10db \u10d3\u10d0\u10d1\u10d4\u10ed\u10d3\u10dd\u10d7, \u10d2\u10d0\u10d3\u10db\u10dd\u10ec\u10d4\u10e0\u10dd\u10d7 \u10d0\u10dc \u10e8\u10d4\u10d8\u10dc\u10d0\u10ee\u10dd\u10d7 \u10d8\u10e1\u10d8\u10dc\u10d8 \u10de\u10d0\u10e0\u10dd\u10da\u10d4\u10d1\u10d8\u10e1 \u10db\u10db\u10d0\u10e0\u10d7\u10d5\u10d4\u10da\u10e8\u10d8 \u10d3\u10d0 \u10d8\u10e5\u10dd\u10dc\u10d8\u10d4\u10d7 \u10d8\u10e1\u10d8\u10dc\u10d8 \u10e3\u10e1\u10d0\u10e4\u10e0\u10d7\u10ee\u10dd\u10d3. \u10d0\u10db \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10d3\u10d0\u10dc \u10d0\u10db \u10d9\u10dd\u10d3\u10d4\u10d1\u10e1 \u10ec\u10d0\u10e8\u10da\u10d8\u10e1.
recovery-codes-action-complete=\u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10d0
recovery-codes-action-cancel=\u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0
recovery-codes-download-file-header=\u10e8\u10d4\u10d8\u10dc\u10d0\u10ee\u10d4\u10d7 \u10d4\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8 \u10e1\u10d0\u10d3\u10db\u10d4 \u10e3\u10e1\u10d0\u10e4\u10e0\u10d7\u10ee\u10dd \u10d0\u10d3\u10d2\u10d8\u10da\u10d0\u10e1.
recovery-codes-download-file-date=\u10d4\u10e1 \u10d9\u10dd\u10d3\u10d4\u10d1\u10d8 \u10d3\u10d0\u10d0\u10d2\u10d4\u10dc\u10d4\u10e0\u10d8\u10e0\u10d0
webauthn-login-title=Passkey-\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0
webauthn-registration-title=Passkey-\u10d8\u10e1\u10d8\u10e1 \u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d0
webauthn-available-authenticators=\u10ee\u10d4\u10da\u10db\u10d8\u10e1\u10d0\u10ec\u10d5\u10d3\u10dd\u10db\u10d8 Passkeys
webauthn-error-auth-verification=Passkey-\u10d8\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1 \u10e8\u10d4\u10d3\u10d4\u10d2\u10d8 \u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8\u10d0.<br/>{0}
webauthn-error-register-verification=Passkey-\u10d8\u10e1 \u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d0\u10ea\u10d8\u10d8\u10e1 \u10e8\u10d4\u10d3\u10d4\u10d2\u10d8 \u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8\u10d0.<br/>{0}
webauthn-error-user-not-found=Passkey-\u10d8\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10d2\u10d0\u10d5\u10da\u10d8\u10da\u10d8 \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10e3\u10ea\u10dc\u10dd\u10d1\u10d8\u10d0.
irreversibleAction=\u10d4\u10e1 \u10e5\u10db\u10d4\u10d3\u10d4\u10d1\u10d0 \u10e8\u10d4\u10e3\u10e5\u10ea\u10d4\u10d5\u10d0\u10d3\u10d8\u10d0
accountUnusable=\u10d0\u10db \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10d7 \u10d0\u10db\u10d8\u10e1 \u10e8\u10d4\u10db\u10d3\u10d4\u10d2 \u10d0\u10de\u10da\u10d8\u10d9\u10d0\u10ea\u10d8\u10d0\u10e1 \u10d5\u10d4\u10e0 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d1\u10d7
passkey-login-title=Passkey-\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0
passkey-available-authenticators=\u10ee\u10d4\u10da\u10db\u10d8\u10e1\u10d0\u10ec\u10d5\u10d3\u10dd\u10db\u10d8 Passkeys
idp-email-verification-display-name=\u10d4\u10da\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0
deletingImplies=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0 \u10d2\u10d0\u10db\u10dd\u10d8\u10ec\u10d5\u10d4\u10d5\u10e1\:
errasingData=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10db\u10dd\u10dc\u10d0\u10ea\u10d4\u10db\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0\u10e1
access-denied=\u10ec\u10d5\u10d3\u10dd\u10db\u10d0 \u10d0\u10d9\u10e0\u10eb\u10d0\u10da\u10e3\u10da\u10d8\u10d0
access-denied-when-idp-auth=\u10ec\u10d5\u10d3\u10dd\u10db\u10d0 \u10d0\u10d9\u10e0\u10eb\u10d0\u10da\u10e3\u10da\u10d8\u10d0 {0}-\u10d8\u10d7 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10ea\u10d8\u10d8\u10e1\u10d0\u10e1
doAccept=\u10db\u10d8\u10e6\u10d4\u10d1\u10d0
doTryAgain=\u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10ea\u10d3\u10d0
errorDeletingAccount=\u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d8\u10e1\u10d0\u10e1
kerberosNotConfiguredTitle=Kerberos \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8 \u10d0\u10e0\u10d0\u10d0
doBack=\u10e3\u10d9\u10d0\u10dc
doYes=\u10d3\u10d8\u10d0\u10ee
doIgnore=\u10d2\u10d0\u10db\u10dd\u10e2\u10dd\u10d5\u10d4\u10d1\u10d0
impersonateTitleHtml=<strong>{0}</strong> \u10db\u10dd\u10db\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10da\u10d8\u10e1 \u10d2\u10d0\u10dc\u10e1\u10d0\u10ee\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0
loginTimeout=\u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10e8\u10d4\u10e1\u10d5\u10da\u10d8\u10e1 \u10db\u10ea\u10d3\u10d4\u10da\u10dd\u10d1\u10d8\u10e1 \u10db\u10dd\u10da\u10dd\u10d3\u10d8\u10dc\u10d8\u10e1 \u10d5\u10d0\u10d3\u10d0 \u10d0\u10db\u10dd\u10d8\u10ec\u10e3\u10e0\u10d0. \u10e8\u10d4\u10e1\u10d5\u10da\u10d0 \u10d7\u10d0\u10d5\u10d8\u10d3\u10d0\u10dc \u10d3\u10d0\u10d8\u10ec\u10e7\u10d4\u10d1\u10d0.
deletingAccountForbidden=\u10d7\u10e5\u10d5\u10d4\u10dc \u10d0\u10e0 \u10d2\u10d0\u10e5\u10d5\u10d7 \u10e1\u10d0\u10d9\u10db\u10d0\u10e0\u10d8\u10e1\u10d8 \u10ec\u10d5\u10d3\u10dd\u10db\u10d4\u10d1\u10d8, \u10e0\u10dd\u10db \u10e1\u10d0\u10d9\u10e3\u10d7\u10d0\u10e0\u10d8 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8 \u10ec\u10d0\u10e8\u10d0\u10da\u10dd\u10d7. \u10d3\u10d0\u10e3\u10d9\u10d0\u10d5\u10e8\u10d8\u10e0\u10d3\u10d8\u10d7 \u10d0\u10d3\u10db\u10d8\u10dc\u10d8\u10e1\u10e2\u10e0\u10d0\u10e2\u10dd\u10e0\u10e1.
bypassKerberosDetail=\u10d0\u10dc \u10e8\u10d4\u10e1\u10e3\u10da\u10d8 \u10d0\u10e0 \u10d1\u10e0\u10eb\u10d0\u10dc\u10d3\u10d4\u10d1\u10d8\u10d7 Kerberos-\u10d8\u10d7, \u10d0\u10dc \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8 Kerberos-\u10d8\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0\u10d6\u10d4 \u10d0\u10e0\u10d0\u10d0 \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8. \u10d2\u10d0\u10d0\u10d2\u10e0\u10eb\u10d4\u10da\u10d4\u10d7 \u10e8\u10d4\u10e1\u10d5\u10da\u10d0, \u10dd\u10e6\u10dd\u10dc\u10d3 \u10e1\u10ee\u10d5\u10d0 \u10e1\u10d0\u10e8\u10e3\u10d0\u10da\u10d4\u10d1\u10d4\u10d1\u10d8\u10d7
loginTotpTitle=\u10db\u10dd\u10d1\u10d8\u10da\u10e3\u10e0\u10d8 \u10d0\u10d5\u10d7\u10d4\u10dc\u10e2\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8\u10e1 \u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10d0
loginIdpReviewProfileTitle=\u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0
organization.confirm-membership.title=\u10d0\u10de\u10d8\u10e0\u10d4\u10d1\u10d7, \u10e8\u10d4\u10e3\u10d4\u10e0\u10d7\u10d3\u10d4\u10d7 \u10dd\u10e0\u10d2\u10d0\u10dc\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0\u10e1 ${kc.org.name}
organization.confirm-membership=\u10e5\u10d5\u10d4\u10db\u10dd\u10d7 \u10d1\u10db\u10e3\u10da\u10d6\u10d4 \u10d3\u10d0\u10ec\u10d9\u10d0\u10de\u10e3\u10dc\u10d4\u10d1\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc \u10e8\u10d4\u10e3\u10d4\u10e0\u10d7\u10d3\u10d4\u10d1\u10d8\u10d7 \u10dd\u10e0\u10d2\u10d0\u10dc\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0\u10e1 {0}\:
organization.member.register.title=\u10e8\u10d4\u10e5\u10db\u10d4\u10dc\u10d8\u10d7 \u10d0\u10dc\u10d2\u10d0\u10e0\u10d8\u10e8\u10d8, \u10e0\u10dd\u10db \u10e8\u10d4\u10e3\u10d4\u10e0\u10d7\u10d3\u10d4\u10d7 \u10dd\u10e0\u10d2\u10d0\u10dc\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0\u10e1 ${kc.org.name}
shouldBeEqual={0} \u10e3\u10dc\u10d3\u10d0 \u10d8\u10e7\u10dd\u10e1 \u10e2\u10dd\u10da\u10d8 {1}-\u10e1\u10d7\u10d5\u10d8\u10e1
shouldBeDifferent={0} \u10e3\u10dc\u10d3\u10d0 \u10d8\u10e7\u10dd\u10e1 \u10e1\u10ee\u10d5\u10d0 {1}-\u10e1\u10d7\u10d5\u10d8\u10e1
shouldMatchPattern=\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10e1 \u10e3\u10dc\u10d3\u10d0 \u10d4\u10db\u10d7\u10ee\u10d5\u10d4\u10d5\u10d0\: `/{0}/`
mustBeAnInteger=\u10e3\u10dc\u10d3\u10d0 \u10d8\u10e7\u10dd\u10e1 \u10db\u10d7\u10d4\u10da\u10d8 \u10e0\u10d8\u10ea\u10ee\u10d5\u10d8
notAValidOption=\u10d0\u10e0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d8 \u10d5\u10d0\u10e0\u10d8\u10d0\u10dc\u10e2\u10d8
selectAnOption=\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 \u10d5\u10d0\u10e0\u10d8\u10d0\u10dc\u10e2\u10d8
remove=\u10ec\u10d0\u10e8\u10d0\u10da\u10d4\u10d7
addValue=\u10d3\u10d0\u10d0\u10db\u10d0\u10e2\u10d4\u10d7 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10d4\u10da\u10dd\u10d1\u10d0
languages=\u10d4\u10dc\u10d4\u10d1\u10d8

View File

@ -0,0 +1,201 @@
doLogIn=Prisijungti
doRegister=Registruotis
doRegisterSecurityKey=Registruotis
doCancel=At\u0161aukti
doSubmit=Patvirtinti
doYes=Taip
doNo=Ne
doContinue=T\u0119sti
doAccept=Patvirtinti
doDecline=At\u0161aukti
doForgotPassword=Pamir\u0161ote slapta\u017eod\u012f?
doClickHere=Spauskite \u010dia
doImpersonate=Apsimesti kaip
kerberosNotConfigured=Kerberos nesukonfig\u016bruotas
kerberosNotConfiguredTitle=Kerberos nesukonfig\u016bruotas
bypassKerberosDetail=J\u016bs neprisijung\u0119s per Kerberos arba J\u016bs\u0173 nar\u0161ykl\u0117 nesukonfig\u016bruota Kerberos prisijungimui. T\u0119skite ir pasirinkite kit\u0105 prisijungimo b\u016bd\u0105
kerberosNotSetUp=Kerberos nesukonfig\u016bruotas. J\u016bs negalite prisijungti.
registerWithTitle=Registruotis su {0}
registerWithTitleHtml={0}
loginTitle=Prisijungti su {0}
loginTitleHtml={0}
impersonateTitle=Apsimesti kaip naudotojas {0}
impersonateTitleHtml=Apsimesti kaip <strong>{0}</strong>
realmChoice=Sritis
unknownUser=Ne\u017einomas naudotojas
loginTotpTitle=Mobilaus autentifikatoriaus nustatymas
loginProfileTitle=Atnaujinti paskyros informacij\u0105
loginTimeout=U\u017etrukote per ilgai. Prisijungimo procesas pradedamas i\u0161 naujo.
oauthGrantTitle=Suteitikti prieig\u0105
oauthGrantTitleHtml={0}
errorTitle=Atsipra\u0161ome ...
errorTitleHtml=<strong>Atsipra\u0161ome</strong> ...
emailVerifyTitle=El. pa\u0161to adreso patvirtinimas
emailForgotTitle=Pamir\u0161ote slapta\u017eod\u012f?
updatePasswordTitle=Atnaujinti slapta\u017eod\u012f
codeSuccessTitle=S\u0117km\u0117
codeErrorTitle=Klaidos kodas\: {0}
termsTitle=Naudojimo s\u0105lygos
termsTitleHtml=Naudojimo s\u0105lygos
termsText=
recaptchaFailed=Recaptcha neteisingas
recaptchaNotConfigured=Reikalingas Recaptcha nesukonfig\u016bruotas
consentDenied=Prieiga draud\u017eiama.
noAccount=Dar neturite paskyros?
username=Naudotojo vardas
usernameOrEmail=Naudotojo vardas arba el. pa\u0161to adresas
firstName=Vardas
givenName=Vardas
fullName=Pavard\u0117
lastName=Pavard\u0117
familyName=Pavard\u0117
email=El. pa\u0161tas
password=Slapta\u017eodis
passwordConfirm=Pakartotas slapta\u017eodis
passwordNew=Naujas slapta\u017eodis
passwordNewConfirm=Pakartotas naujas slapta\u017eodis
rememberMe=Prisiminti mane
authenticatorCode=Vienkartinis kodas
address=Adresas
street=Gatv\u0117
locality=Miestas arba vietov\u0117
region=Rajonas
postal_code=Pa\u0161to kodas
country=\u0160alis
emailVerified=El. pa\u0161to adresas patvirtintas
gssDelegationCredential=GSS prisijungimo duomen\u0173 delegavimas
loginTotpStep1=\u012ediekite <a href\="https\://freeotp.github.io/" target\="_blank">FreeOTP</a> arba Google Authenticator savo \u012frenginyje. Program\u0117l\u0117s prieinamos <a href\="https\://play.google.com">Google Play</a> ir Apple App Store.
loginTotpStep2=Atidarykite program\u0117l\u0119 ir nuskenuokite barkod\u0105 arba \u012fveskite kod\u0105.
loginTotpStep3=\u012eveskite program\u0117l\u0117je sugeneruot\u0105 vien\u0105 kart\u0105 galiojant\u012f kod\u0105 ir paspauskite Saugoti nor\u0117dami prisijungti.
loginOtpOneTime=Vienkartinis kodas
oauthGrantRequest=Ar J\u016bs suteikiate \u0161ias prieigos teises?
inResource=\u012f
emailVerifyInstruction1=El. pa\u0161tas su instrukcijomis ir patvirtinimo nuoroda nusi\u0173sti \u012f J\u016bs\u0173 el. pa\u0161t\u0105.
emailVerifyInstruction2=El. pa\u0161tu negavote patvirtinimo kodo?
emailVerifyInstruction3=pakartotoinai si\u0173sti el. lai\u0161k\u0105.
emailLinkIdpTitle=Susieti {0}
emailLinkIdp1=El. pa\u0161to lai\u0161kas su instrukcijomis susieti {0} paskyr\u0105 {1} su {2} buvo nusi\u0173stas.
emailLinkIdp2=Negavote patvirtinimo kodo el. pa\u0161tu?
emailLinkIdp3=pakartotoinai si\u0173sti el. lai\u0161k\u0105.
backToLogin=&laquo; Gr\u012f\u017eti \u012f prisijungimo lang\u0105
emailInstruction=\u012eveskite naudotojo vard\u0105 arba slapta\u017eod\u012f ir slapta\u017eod\u017eio pakeitimo instrukcijos bus atsi\u0173stos Jums el. pa\u0161tu
copyCodeInstruction=Nukopijuokite \u0161\u012f kod\u0105 \u012f J\u016bs\u0173 program\u0105\:
personalInfo=Asmenin\u0117 informacija\:
role_admin=Administratorius
role_realm-admin=Srities administravimas
role_create-realm=Kurti srit\u012f
role_create-client=Kurti program\u0105
role_view-realm=Per\u017ei\u016br\u0117ti srit\u012f
role_view-users=Per\u017ei\u016br\u0117ti naudotojus
role_view-applications=Per\u017ei\u016br\u0117ti programas
role_view-clients=Per\u017ei\u016br\u0117ti klientines programas
role_view-events=Per\u017ei\u016br\u0117ti \u012fvyki\u0173 \u017eurnal\u0105
role_view-identity-providers=Per\u017ei\u016br\u0117ti tapatyb\u0117s teik\u0117jus
role_manage-realm=Valdyti sritis
role_manage-users=Valdyti naudotojus
role_manage-applications=Valdyti programas
role_manage-identity-providers=Valdyti tapatyb\u0117s teik\u0117jus
role_manage-clients=Valdyti programas
role_manage-events=Valdyti \u012fvykius
role_view-profile=Per\u017ei\u016br\u0117ti paskyr\u0105
role_manage-account=Valdyti paskyr\u0105
role_read-token=Skaityti prieigos rak\u0161\u0105
role_offline-access=Darbas neprisijungus
client_account=Paskyra
client_security-admin-console=Saugumo administravimo konsol\u0117
client_admin-cli=Administravimo CLI
client_realm-management=Srities valdymas
client_broker=Tarpininkas
invalidUserMessage=Neteisingas naudotojo vardas arba slapta\u017eodis.
invalidEmailMessage=Neteisingas el. pa\u0161to adresas.
accountDisabledMessage=Paskyros galiojimas sustabdytas, kreipkit\u0117s \u012f administratori\u0173.
accountTemporarilyDisabledMessage=Paskyros galiojimas laikinai sustabdytas. Kreipkit\u0117s \u012f administratori\u0173 arba pabandykite v\u0117liau.
expiredCodeMessage=Prisijungimo laikas baig\u0117si. Bandykite dar kart\u0105.
missingFirstNameMessage=Pra\u0161ome \u012fvesti vard\u0105.
missingLastNameMessage=Pra\u0161ome \u012fvesti pavard\u0119.
missingEmailMessage=Pra\u0161ome \u012fvesti el. pa\u0161to adres\u0105.
missingUsernameMessage=Pra\u0161ome \u012fvesti naudotojo vard\u0105.
missingPasswordMessage=Pra\u0161ome \u012fvesti slapta\u017eod\u012f.
missingTotpMessage=Pra\u0161ome \u012fvesti autentifikacijos kod\u0105.
notMatchPasswordMessage=Slapta\u017eod\u017eiai nesutampa.
invalidPasswordExistingMessage=Neteisingas dabartinis slapta\u017eodis.
invalidPasswordConfirmMessage=Pakartotas slapta\u017eodis nesutampa.
invalidTotpMessage=Neteisingas autentifikacijos kodas.
usernameExistsMessage=Toks naudotojas jau egzistuoja.
emailExistsMessage=El. pa\u0161to adresas jau egzistuoja.
federatedIdentityExistsMessage=Naudotojas {0} {1} jau egzistuoja. Pra\u0161ome prsijungti prie naudotoj\u0173 valdymo posistem\u0117s paskyr\u0173 susiejimui.
confirmLinkIdpTitle=Paskyra jau egzistuoja
federatedIdentityConfirmLinkMessage=Naudotojas {0} {1} jau egzistuoja. Ar t\u0119sti?
federatedIdentityConfirmReauthenticateMessage=Prisijunkite nor\u0117dami susieti paskyr\u0105 su {0}
confirmLinkIdpReviewProfile=Per\u017ei\u016br\u0117ti naudotojo profilio informacij\u0105
confirmLinkIdpContinue=Susieti su egzistuojan\u010dia paskyra
configureTotpMessage=Paskyros aktyvavimui Jums reikalingas Mobilus autentifikatorius.
updateProfileMessage=Paskyros aktyvavimui Jums reikia atnaujinti profilio informacij\u0105.
updatePasswordMessage=Paskyros aktyvavimui Jums reikia pakeisti slapta\u017eod\u012f.
verifyEmailMessage=Paskyros aktyvavimui Jums reikia patvirtinti el. pa\u0161to adres\u0105.
linkIdpMessage=El. pa\u0161to adreso susiejimui su J\u016bsu paskyra {0} reikalingas patvirtinimas.
emailSentMessage=Netrukus tur\u0117tum\u0117te gauti el. pa\u0161to adres\u0105 su instrukcijomis.
emailSendErrorMessage=Klaida siun\u010diant el. pa\u0161t\u0105, bandykite v\u0117liau.
accountUpdatedMessage=J\u0173s\u0173 paskyros informacija atnaujinta.
accountPasswordUpdatedMessage=J\u016bs\u0173 slapta\u017eodis pakeistas.
noAccessMessage=Prieiga negalima
invalidPasswordMinLengthMessage=Neteisingas slapta\u017eodis\: privalomi bent {0} simboliai.
invalidPasswordMinDigitsMessage=Neteisingas slapta\u017eodis\: privalomi bent {0} skaitmenys.
invalidPasswordMinLowerCaseCharsMessage=Neteisingas slapta\u017eodis\: privalomos bent {0} ma\u017eosios raid\u0117s.
invalidPasswordMinUpperCaseCharsMessage=Neteisingas slapta\u017eodis\: privalomos bent {0} did\u017eiosios raid\u0117s.
invalidPasswordMinSpecialCharsMessage=Neteisingas slapta\u017eodis\: privalomi bent {0} special\u016bs simboliai.
invalidPasswordNotUsernameMessage=Neteisingas slapta\u017eodis\: negali sutapti su naudotojo vardu.
invalidPasswordRegexPatternMessage=Neteisingas slapta\u017eodis\: neatitinka regexp taisykl\u0117s.
invalidPasswordHistoryMessage=Neteisingas slapta\u017eodis\: negali sutapti su prie\u0161 tai naudotais {0} slapta\u017eod\u017eiais.
failedToProcessResponseMessage=Klaida apdorojant atsakym\u0105
httpsRequiredMessage=Privalomas HTTPS
realmNotEnabledMessage=Srities galiojimas i\u0161jungtas
invalidRequestMessage=Neteisinga u\u017eklausa
failedLogout=Nepavyko u\u017ebaigti sesijos
unknownLoginRequesterMessage=Ne\u017einomas prisijungimo pra\u0161ytojas
loginRequesterNotEnabledMessage=Prisijungimo pra\u0161ytojo galiojimas i\u0161jungtas
bearerOnlyMessage=Programos, sukonfig\u016bruotos tik kaip perdav\u0117jai, negali inicijuoti prisijungim\u0105 per nar\u0161ykl\u0119.
standardFlowDisabledMessage=Su pateiktu atsakymo tipu prisijungimas per nar\u0161ykl\u0119 \u0161iam klientui negalimas. \u0160iam klientui ne\u012fgalinta standartin\u0117 seka.
implicitFlowDisabledMessage=Su pateiktu atsakymo tipu prisijungimas per nar\u0161ykl\u0119 \u0161iam klientui negalimas. \u0160iam klientui ne\u012fgalinta i\u0161reik\u0161tin\u0117 seka.
invalidRedirectUriMessage=Neteisinga nukreipimo nuoroda
unsupportedNameIdFormatMessage=Nepalaikomas NameIDFormat
invalidRequesterMessage=Neteisingas pra\u0161ytojas
registrationNotAllowedMessage=Registracija negalima
resetCredentialNotAllowedMessage=Prisijungimo duomen\u0173 atk\u016brimas negalimas
permissionNotApprovedMessage=Teis\u012f nepatvirtinta.
noRelayStateInResponseMessage=Tapatyb\u0117s teik\u0117jo atsakyme tr\u016bksta perdavimo b\u016bsenos.
insufficientPermissionMessage=Tr\u016bksta teisi\u0173 tapatybi\u0173 susiejimui.
couldNotProceedWithAuthenticationRequestMessage=Nepavyksta prad\u0117ti tapatyb\u0117s teik\u0117jo autentifikacijos u\u017eklausos.
couldNotObtainTokenMessage=Negaunamas prieigos raktas i\u0161 tapatyb\u0117s teik\u0117jo.
unexpectedErrorRetrievingTokenMessage=Prieigos rak\u0161o gavimo i\u0161 tapatyb\u0117s teik\u0117jo metu \u012fvyko netik\u0117ta klaida.
unexpectedErrorHandlingResponseMessage=Tapatyb\u0117s teik\u0117jo atsakymo apdorojimo metu \u012fvyko netik\u0117ta klaida.
identityProviderAuthenticationFailedMessage=Autentifikacijos klaida. Nepavyksta autentifikacija su tapatyb\u0117s teik\u0117ju.
couldNotSendAuthenticationRequestMessage=Tapatyb\u0117s teik\u0117jui nepavyksta nusi\u0173sti autentifikacijos u\u017eklausos.
unexpectedErrorHandlingRequestMessage=U\u017eklausos tapatyb\u0117s teik\u0117jui formavimo metu \u012fvyko netik\u0117ta klaida.
invalidAccessCodeMessage=Neteisingas prieigos kodas.
sessionNotActiveMessage=Sesija neaktyvi.
invalidCodeMessage=\u012evyko klaida. Pra\u0161ome bandyti prisijungti dar kart\u0105.
identityProviderUnexpectedErrorMessage=Autentifikavimo su i\u0161oriniu tapatyb\u0117s teik\u0117ju metu \u012fvyko netik\u0117ta klaida.
identityProviderNotFoundMessage=Su nurodytu identifikatoriumi nerastas tapatyb\u0117s teik\u0117jas.
identityProviderLinkSuccess=J\u016bs\u0173 naudotojo paskyra buvo s\u0117kmingai susieta su {0} paskyra {1} .
staleCodeMessage=\u0160is puslapis nebegalioja. Pra\u0161ome gr\u012f\u017eti \u012f program\u0105 ir bandyti prisijungti i\u0161 naujo.
realmSupportsNoCredentialsMessage=Sritis nepalaiko prisijungim\u0173 naudojant prisijungimo duomenis.
identityProviderNotUniqueMessage=Sritis palaiko daugiau nei vien\u0105 tapatyb\u0117s teik\u0117j\u0105. Negalima nustatyti kuris tapatyb\u0117s teik\u0117jas turi b\u016bti naudojamas autentifikacijai.
emailVerifiedMessage=J\u016bs\u0173 el. pa\u0161to adresas patvirtintas.
staleEmailVerificationLink=Nuoroda, kuri\u0105 paspaud\u0117te nebegalioja? Galb\u016bt J\u016bs jau patvirtinote el. pa\u0161to adres\u0105?
backToApplication=&laquo; Gr\u012f\u017eti \u012f program\u0105
missingParameterMessage=Nenurodytas parametras\: {0}
clientNotFoundMessage=Nenurodytas klientas.
clientDisabledMessage=Kliento galiojimas i\u0161jungtas.
invalidParameterMessage=Neteisingas parametras\: {0}
alreadyLoggedIn=J\u016bs jau esate prisijung\u0119.
shouldBeEqual={0} tur\u0117t\u0173 b\u016bti lygus {1}
shouldBeDifferent={0} tur\u0117t\u0173 skirtis nuo {1}
shouldMatchPattern=\u0160ablonas tur\u0117t\u0173 atitikti\: `/{0}/`
mustBeAnInteger=Turi b\u016bti sveikasis skai\u010dius
notAValidOption=Netinkama parinktis
selectAnOption=Pasirinkite parinkt\u012f
remove=Pa\u0161alinti
addValue=Prid\u0117ti reik\u0161m\u0119
languages=Kalbos

View File

@ -0,0 +1,212 @@
doLogIn=Piesl\u0113gties
doRegister=Re\u0123istr\u0113ties
doRegisterSecurityKey=Re\u0123istr\u0113ties
doCancel=Atcelt
doSubmit=Iesniegt
doBack=Atpaka\u013c
doYes=J\u0101
doNo=N\u0113
doContinue=Turpin\u0101t
doIgnore=Ignor\u0113t
doAccept=Pie\u0146emt
doDecline=Atteikties
doForgotPassword=Aizmirs\u0101t paroli?
doClickHere=Spiediet \u0161eit
doImpersonate=Uzdoties
doTryAgain=M\u0113\u0123in\u0101t v\u0113lreiz
doTryAnotherWay=M\u0113\u0123in\u0101t cit\u0101 veid\u0101
doConfirmDelete=Apstiprin\u0101t dz\u0113\u0161anu
errorDeletingAccount=K\u013c\u016bda dz\u0113\u0161ot kontu
deletingAccountForbidden=Jums nav pie\u0161\u0137irtas at\u013caujas sava konta dz\u0113\u0161anai, sazinieties ar administratoru.
kerberosNotConfigured=Kerberos nav konfigur\u0113ts
kerberosNotConfiguredTitle=Kerberos nav konfigur\u0113ts
bypassKerberosDetail=J\u016bs neesat piesl\u0113dzies izmantojot Kerberos vai j\u016bsu p\u0101rl\u016bks nav iestat\u012bts Kerberos autentifik\u0101cijai. Spiediet turpin\u0101t, lai piesl\u0113gtos cit\u0101 veid\u0101
kerberosNotSetUp=Kerberos nav uzst\u0101d\u012bts. J\u016bs nevarat piesl\u0113gties.
registerTitle=Re\u0123istr\u0101cija
loginAccountTitle=Piesl\u0113gties savam kontam
loginTitle=Piesl\u0113gties {0}
loginTitleHtml={0}
impersonateTitle={0} uzdoties par lietot\u0101ju
impersonateTitleHtml=<strong>{0}</strong> uzdoties par lietot\u0101ju
realmChoice=Realm
unknownUser=Nezin\u0101ms lietot\u0101js
loginTotpTitle=Mobil\u0101 autentifikatora uzst\u0101d\u012b\u0161ana
loginProfileTitle=Atjaunot profila inform\u0101ciju
loginIdpReviewProfileTitle=Atjaunot konta inform\u0101cija
loginTimeout=J\u016bs p\u0101r\u0101k ilgi piesl\u0113dzaties. Piesl\u0113g\u0161an\u0101s process tiks s\u0101kts no jauna.
oauthGrantTitle=Pie\u0161\u0137irt at\u013cauju {0}
oauthGrantTitleHtml={0}
errorTitle=Notikusi k\u013c\u016bme...
errorTitleHtml=Notikusi <strong>k\u013c\u016bme</strong> ...
emailVerifyTitle=E-pasta apstiprin\u0101\u0161ana
emailForgotTitle=Aizmirs\u0101t paroli?
updatePasswordTitle=Atjaunot paroli
codeSuccessTitle=Kods
codeErrorTitle=K\u013c\u016bdas kods\: {0}
displayUnsupported=Piepras\u012btais att\u0113lo\u0161anas veids netiek atbalst\u012bts
browserRequired=Nepiecie\u0161ama piesl\u0113g\u0161an\u0101s caur p\u0101rl\u016bku
browserContinue=Nepiecie\u0161ama piesl\u0113g\u0161an\u0101s caur p\u0101rl\u016bku, lai turpin\u0101tu autentifik\u0101ciju
browserContinuePrompt=Vai atv\u0113rt p\u0101rl\u016bku lai turpin\u0101tu piesl\u0113g\u0161anos? [y/n]\:
browserContinueAnswer=y
termsTitle=Noteikumi un nosac\u012bjumi
termsText=
termsPlainText=Noteikumi un nosac\u012bjumi j\u0101nosaka
recaptchaFailed=Nekorekts Recaptcha
recaptchaNotConfigured=Recaptcha ir oblig\u0101ts, bet nav uzst\u0101d\u012bts
consentDenied=Piekri\u0161ana liegta.
noAccount=Jauns lietot\u0101js?
username=Lietot\u0101jv\u0101rds
usernameOrEmail=Lietot\u0101jv\u0101rds vai e-pasts
firstName=V\u0101rds
givenName=V\u0101rds
fullName=Pilns v\u0101rds
lastName=Uzv\u0101rds
familyName=Uzv\u0101rds
email=E-pasts
password=Parole
passwordConfirm=Parole atk\u0101rtoti
passwordNew=Jauna parole
passwordNewConfirm=Jauna parole atk\u0101rtoti
rememberMe=Atcer\u0113ties mani
authenticatorCode=Vienreiz\u0113j\u0101 parole
address=Adrese
street=Iela
locality=Pils\u0113ta
region=Novads vai re\u0123ions
postal_code=Pasta indegs
country=Valsts
emailVerified=E-pasts apstiprin\u0101ts
website=T\u012bmek\u013ca vietne
phoneNumber=T\u0101lru\u0146a numurs
phoneNumberVerified=T\u0101lru\u0146a numurs apstiprin\u0101ts
gender=Dzimums
birthday=Dzim\u0161anas datums
zoneinfo=Laika josla
gssDelegationCredential=GSS deleg\u0101cijas atsl\u0113ga
logoutOtherSessions=Atteikties no vis\u0101m ier\u012bc\u0113m
profileScopeConsentText=Lietot\u0101ja profils
emailScopeConsentText=E-pasta adrese
addressScopeConsentText=Adrese
phoneScopeConsentText=T\u0101lrunis
offlineAccessScopeConsentText=Bezsaustes piek\u013cuve
samlRoleListScopeConsentText=Manas lomas
rolesScopeConsentText=Lietot\u0101ju lomas
restartLoginTooltip=Atk\u0101rtot piesl\u0113g\u0161anos
emailVerifyInstruction1=E-pasts ar instrukcij\u0101m e-pasta apstiprin\u0101\u0161anai ir nos\u016bt\u012bts
emailVerifyInstruction2=Nesa\u0146\u0113m\u0101t apsiptin\u0101\u0161anas kodu sav\u0101 e-past\u0101?
emailVerifyInstruction3=lai atk\u0101rtoti nos\u016bt\u012btu e-pastu.
emailLinkIdpTitle=Saist\u012bt {0}
emailLinkIdp1=E-pasts ar instrukcij\u0101m, lai saist\u012btu {0} kontu {1} ar savu {2} kontu ir nos\u016bt\u012bts.
emailLinkIdp2=Nesa\u0146\u0113m\u0101t apsiptin\u0101\u0161anas kodu sav\u0101 e-past\u0101?
emailLinkIdp3=lai atk\u0101rtoti nos\u016bt\u012btu e-pastu.
emailLinkIdp4=Ja j\u016bs jau apstiprin\u0101j\u0101t e-pastu cit\u0101 p\u0101rl\u016bk\u0101
emailLinkIdp5=lai turpin\u0101tu.
backToLogin=&laquo; Atpaka\u013c uz piesl\u0113g\u0161anos
emailInstruction=Ievadiet lietot\u0101jv\u0101rdu vai e-pasta adresi un m\u0113s nos\u016bt\u012bsim jums instrukcijas k\u0101 izveidot jaunu paroli.
copyCodeInstruction=L\u016bdzu nokop\u0113jiet \u0161o kodu un iel\u012bm\u0113jiet sav\u0101 lietojumprogramm\u0101\:
pageExpiredTitle=Lapa ir beigusies
pageExpiredMsg1=Lai ats\u0101ktu piesl\u0113g\u0161an\u0101s procesu
pageExpiredMsg2=Lai turpin\u0101tu piesl\u0113g\u0161an\u0101s procesu
personalInfo=Personisk\u0101 inform\u0101cija\:
role_admin=Administrators
role_realm-admin=Realm administrators
role_create-realm=Izveidot realm
role_view-realm=Skat\u012bt realm
role_view-users=Skat\u012bt lieto\u0101jus
role_view-applications=Skat\u012bt lietojumprogrammas
role_view-clients=Skat\u012bt klientus
role_view-events=Skat\u012bt notikumus
role_view-identity-providers=Skat\u012bt identit\u0101tes sniedz\u0113jus
role_manage-realm=P\u0101rvald\u012bt realm
role_manage-users=P\u0101rvald\u012bt lietot\u0101jus
role_manage-applications=P\u0101rvald\u012bt lietojumprogrammas
role_manage-identity-providers=P\u0101rvald\u012bt identit\u0101tes sniedz\u0113jus
role_manage-clients=P\u0101rvald\u012bt klientus
role_manage-events=P\u0101rvald\u012bt notikumus
role_view-profile=Skat\u012bt profilu
role_manage-account=P\u0101rvald\u012bt kontu
role_manage-account-links=P\u0101rvald\u012bt konta saites
role_read-token=Las\u012bt talonu (token)
role_offline-access=Bezsaistes piek\u013cuve
role_uma_authorization=Ieg\u016bt at\u013caujas
client_account=Konts
client_security-admin-console=Dro\u0161\u012bbas administr\u0101cijas konsole
client_admin-cli=Administr\u0101cijas CLI
client_realm-management=Realm p\u0101rvald\u012bba
client_broker=Brokeris
invalidUserMessage=Nekorekts lietot\u0101jv\u0101rds vai parole.
invalidEmailMessage=Nekorekta e-pasta adrese.
accountDisabledMessage=Konts ir atsp\u0113jots, sazinieties ar administratoru.
accountTemporarilyDisabledMessage=Konts ir uz laiku atsp\u0113jots, sazinieties ar administratoru vai m\u0113\u0123iniet v\u0113l\u0101k.
expiredCodeMessage=Piesl\u0113g\u0161an\u0101s noilgums. L\u016bdzu piesl\u0113dzieties atk\u0101rtoti.
expiredActionMessage=Darb\u012bba noilgusi. L\u016bdzu turpiniet ar piesl\u0113g\u0161anos.
expiredActionTokenNoSessionMessage=Darb\u012bba noilgusi.
expiredActionTokenSessionExistsMessage=Darb\u012bba noilgusi. L\u016bdzu uzs\u0101ciet to no jauna.
missingFirstNameMessage=L\u016bdzu nor\u0101di v\u0101rdu.
missingLastNameMessage=L\u016bdzu nor\u0101di uzv\u0101rdu.
missingEmailMessage=L\u016bdzu nor\u0101di e-pastu.
missingUsernameMessage=L\u016bdzu nor\u0101di lietot\u0101jv\u0101rdu.
missingPasswordMessage=L\u016bdzu nor\u0101di paroli.
notMatchPasswordMessage=Paroles nesakr\u012bt.
invalidPasswordExistingMessage=Nekorekta pa\u0161reiz\u0113j\u0101 parole.
invalidPasswordBlacklistedMessage=Nekorekta parole\: parole ir melnaj\u0101 sarakst\u0101.
invalidPasswordConfirmMessage=Paroles apstiprin\u0101jums nav pareizs.
usernameExistsMessage=Lietot\u0101jv\u0101rds jau eksist\u0113.
emailExistsMessage=E-pasts jau eksist\u0113.
federatedIdentityExistsMessage=Lietot\u0101jv\u0101rds ar {0} {1} jau eksist\u0113. L\u016bdzu piesl\u0113dzieties konta p\u0101rvaldniekam lai savienotu kontus.
confirmLinkIdpTitle=Konts jau eksist\u0113
federatedIdentityConfirmLinkMessage=Konts ar {0} {1} jau eksist\u0113. K\u0101 v\u0113lies turpin\u0101t?
federatedIdentityConfirmReauthenticateMessage=Piesl\u0113dzieties ar {0}, lai savienotu kontu ar {1}
confirmLinkIdpReviewProfile=P\u0101rskat\u012bt profilu
confirmLinkIdpContinue=Pievienot eksist\u0113jo\u0161am kontam
accountUpdatedMessage=J\u016bsu konts ir atjaunots.
accountPasswordUpdatedMessage=J\u016bsu parole ir atjaunota.
delegationCompleteHeader=Piesl\u0113g\u0161an\u0101s veiksm\u012bga
delegationCompleteMessage=J\u016bs varat aizv\u0113rt \u0161o p\u0101rl\u016bka logu un doties atpaka\u013c uz konsoles lietojumprogrammu.
delegationFailedHeader=Piesl\u0113g\u0161an\u0101s neizdev\u0101s
delegationFailedMessage=J\u016bs varat aizv\u0113rt \u0161o p\u0101rl\u016bka logu un doties atpaka\u013c uz konsoles lietojumprogrammu un m\u0113\u0123in\u0101t piesl\u0113gties atk\u0101rtoti.
noAccessMessage=Nav piek\u013cuves
invalidPasswordMinLengthMessage=Nekorekta parole\: minim\u0101lais paroles garums {0}.
invalidPasswordMinDigitsMessage=Nekorekta parole\: tai j\u0101satur vismaz {0} cipari.
invalidPasswordMinLowerCaseCharsMessage=Nekorekta parole\: tai j\u0101satur vismaz {0} mazie burti.
invalidPasswordMinUpperCaseCharsMessage=Nekorekta parole\: tai j\u0101satur vismaz {0} lielie burti.
invalidPasswordMinSpecialCharsMessage=Nekorekta parole\: tai j\u0101satur vismaz {0} speci\u0101lie simboli.
invalidPasswordNotUsernameMessage=Nekorekta parole\: t\u0101 nedr\u012bkst sakrist ar lietot\u0101jv\u0101rdu.
invalidPasswordRegexPatternMessage=Nekorekta parole\: netabilst regex \u0161ablonam(iem).
invalidPasswordHistoryMessage=Nekorekta parole\: nedr\u012bkst b\u016bt vien\u0101da ar iepriek\u0161\u0113j\u0101m {0} parol\u0113m.
invalidPasswordGenericMessage=Nekorekta parole\: jaun\u0101 parole neatbilst paroles noteikumiem.
backToApplication=&laquo; Atpaka\u013c uz lietojumprogrammu
missingParameterMessage=Tr\u016bkst parametru\: {0}
clientNotFoundMessage=Klients nav atrasts.
clientDisabledMessage=Klients atsp\u0113jos.
invalidParameterMessage=Nekorekts parametrs\: {0}
alreadyLoggedIn=Tu jau esi piesl\u0113dzies.
differentUserAuthenticated=J\u016bs jau esat piesl\u0113dzies ar citu lietot\u0101ju ''{0}'' \u0161aj\u0101 sesij\u0101. L\u016bdzu vispirms atsl\u0113gties.
proceedWithAction=\u00bb Spiediet \u0161eit lai turpin\u0101tu
requiredAction.CONFIGURE_TOTP=Konfigur\u0113t OTP
requiredAction.TERMS_AND_CONDITIONS=Noteikumi un nosac\u012bjumi
requiredAction.UPDATE_PASSWORD=Atjaunot paroli
requiredAction.UPDATE_PROFILE=Atjaunot profilu
requiredAction.VERIFY_EMAIL=Apstiprin\u0101t e-pastu
pageNotFound=Lapa nav atrasta
internalServerError=Notikusi servera k\u013c\u016bme
console-username=Lietot\u0101jv\u0101rds\:
console-password=Parole\:
console-otp=Vienreiz\u0113j\u0101 parole\:
console-new-password=Jauna parole\:
console-confirm-password=Parole atk\u0101rtoti\:
console-update-password=Jums ir j\u0101atjauno parole.
console-verify-email=Jums ir j\u0101apstiprina e-pasta adrese. E-pasts tika nos\u016bt\u012bts uz {0}, kas satur apstiprin\u0101juma kodu. L\u016bdzu ievadiet \u0161o kodu ievadlauk\u0101 zem\u0101k.
console-email-code=E-pasta kods\:
console-accept-terms=Piekrist noteikumiem? [y/n]\:
console-accept=y
shouldBeEqual={0} j\u0101b\u016bt vien\u0101dam ar {1}
shouldBeDifferent={0} j\u0101b\u016bt at\u0161\u0137ir\u012bgam no {1}
shouldMatchPattern=Mustrim j\u0101sakr\u012bt\: `/{0}/`
mustBeAnInteger=J\u0101b\u016bt veselam skaitlim
notAValidOption=Nav der\u012bga opcija
selectAnOption=Izv\u0113lieties opciju
remove=No\u0146emt
addValue=Pievienot v\u0113rt\u012bbu
languages=Valodas

View File

@ -0,0 +1,283 @@
doLogIn=Inloggen
doRegister=Registreer
doRegisterSecurityKey=Registreer
doCancel=Annuleer
doSubmit=Verzenden
doBack=Terug
doYes=Ja
doNo=Nee
doContinue=Doorgaan
doIgnore=Negeer
doAccept=Accepteren
doDecline=Afwijzen
doForgotPassword=Wachtwoord vergeten?
doClickHere=Klik hier
doImpersonate=Identiteit overnemen
doTryAgain=Probeer opnieuw
doTryAnotherWay=Probeer op een ander manier
doConfirmDelete=Bevestig verwijderen
errorDeletingAccount=Onverwachte fout bij het verwijderen van account
deletingAccountForbidden=U heeft onvoldoende rechten om dit account te verwijderen, neem contact op met beheer.
kerberosNotConfigured=Kerberos is niet geconfigureerd
kerberosNotConfiguredTitle=Kerberos is niet geconfigureerd
bypassKerberosDetail=U bent niet ingelogd via Kerberos of uw browser kan niet met Kerberos inloggen. Klik op ''doorgaan'' om via een andere manier in te loggen
kerberosNotSetUp=Kerberos is onjuist geconfigureerd. U kunt niet inloggen.
registerTitle=Registreer
loginAccountTitle=Inloggen met uw account
loginTitle=Log in met {0}
loginTitleHtml={0}
impersonateTitle={0} Identiteit overnemen
impersonateTitleHtml=<strong>{0}</strong> Identiteit overnemen
realmChoice=Realm
unknownUser=Onbekende gebruiker
loginTotpTitle=Mobiele Authenticator Instellen
loginProfileTitle=Update accountinformatie
loginTimeout=U bent te lang bezig geweest met inloggen. Het inlogproces begint opnieuw.
reauthenticate=Log opnieuw in om verder te gaan
oauthGrantTitle=Verleen Toegang
oauthGrantTitleHtml={0}
errorTitle=Er is een fout opgetreden...
errorTitleHtml=Er is een fout opgetreden...
emailVerifyTitle=E-mailadres-verificatie
emailForgotTitle=Wachtwoord vergeten?
updatePasswordTitle=Wachtwoord updaten
codeSuccessTitle=Succescode
codeErrorTitle=Foutcode\: {0}
displayUnsupported=Opgevraagde weergave type is niet ondersteund
browserRequired=Om in te loggen is een browser vereist
browserContinue=Om het loginproces af te ronden is een browser vereist
browserContinuePrompt=Open een browser en ga door met inloggen? [y/n]\:
browserContinueAnswer=y
termsTitle=Voorwaarden
termsText=
termsPlainText=Voorwaarden
recaptchaFailed=Ongeldige Recaptcha
recaptchaNotConfigured=Recaptcha is verplicht, maar niet geconfigureerd
consentDenied=Toestemming geweigerd.
noAccount=Nieuwe gebruiker?
username=Gebruikersnaam
usernameOrEmail=Gebruikersnaam of e-mailadres
firstName=Voornaam
givenName=Voornaam
fullName=Volledige naam
lastName=Achternaam
familyName=Familienaam
email=E-mailadres
password=Wachtwoord
passwordConfirm=Bevestig wachtwoord
passwordNew=Nieuw wachtwoord
passwordNewConfirm=Bevestiging nieuwe wachtwoord
rememberMe=Ingelogd blijven
authenticatorCode=Authenticatiecode
address=Adres
street=Straat
locality=Woonplaats
region=Provincie of regio
postal_code=Postcode
country=Land
emailVerified=E-mailadres geverifieerd
gssDelegationCredential=GSS delegatie Credential
profileScopeConsentText=Gebruikersprofiel
emailScopeConsentText=E-mailadres
addressScopeConsentText=Adres
phoneScopeConsentText=Telefoonnummer
offlineAccessScopeConsentText=Offline toegang
samlRoleListScopeConsentText=Mijn rollen
rolesScopeConsentText=Gebruikersrollen
loginTotpIntro=U bent verplicht om tweefactor-authenticatie in te stellen om dit account te kunnen gebruiken
loginTotpStep1=Installeer een van de volgende applicaties op uw mobile telefoon
loginTotpStep2=Open de applicatie en scan de barcode
loginTotpStep3=Voer de eenmalige code die door de applicatie is aangeleverd in en klik op ''Verzenden'' om de setup te voltooien
loginTotpManualStep2=Open de applicatie en voer de sleutel in
loginTotpManualStep3=Gebruik de volgende configuratiewaarden (als de applicatie dit ondersteund)
loginTotpUnableToScan=Lukt het scannen niet?
loginTotpScanBarcode=Scan barcode?
loginOtpOneTime=Eenmalige code
loginTotpType=Type
loginTotpAlgorithm=Algoritme
loginTotpDigits=Cijfers
loginTotpInterval=Interval
loginTotpCounter=Teller
loginTotpDeviceName=Apparaatnaam
loginTotp.totp=Time-based
loginTotp.hotp=Counter-based
oauthGrantRequest=Wilt u deze toegangsrechten verlenen?
inResource=in
emailVerifyInstruction1=Een e-mail met instructies om uw e-mailadres te verifi\u00ebren is zojuist verzonden.
emailVerifyInstruction2=Heeft u geen verificatiecode ontvangen in uw e-mail?
emailVerifyInstruction3=om opnieuw een e-mail te versturen.
emailLinkIdpTitle=Link {0}
emailLinkIdp1=Er is een e-mail met instructies verzonden om {0} account {1} te koppelen met uw {2} account.
emailLinkIdp2=Heeft u geen verificatiecode in uw e-mail ontvangen?
emailLinkIdp3=om opnieuw een e-mail te versturen.
emailLinkIdp4=Als u deze mail al geverifieerd hebt in een andere browser
emailLinkIdp5=om door te gaan.
backToLogin=&laquo; Terug naar Inloggen
emailInstruction=Voer uw gebruikersnaam of e-mailadres in en wij sturen u een e-mailbericht met instructies voor het aanmaken van een nieuw wachtwoord.
copyCodeInstruction=Kopieer deze code en plak deze in uw applicatie\:
pageExpiredTitle=Sessie is verlopen
pageExpiredMsg1=Om het loginproces opnieuw te doen
pageExpiredMsg2=Om door te gaan met het loginproces
personalInfo=Persoonlijke informatie\:
role_admin=Admin
role_realm-admin=Realm beheren
role_create-realm=Realm aanmaken
role_create-client=Client aanmaken
role_view-realm=Bekijk realm
role_view-users=Bekijk gebruikers
role_view-applications=Bekijk applicaties
role_view-clients=Bekijk clients
role_view-events=Bekijk gebeurtenissen
role_view-identity-providers=Bekijk identity providers
role_manage-realm=Beheer realm
role_manage-users=Gebruikers beheren
role_manage-applications=Beheer applicaties
role_manage-identity-providers=Beheer identity providers
role_manage-clients=Beheer clients
role_manage-events=Beheer gebeurtenissen
role_view-profile=Profiel bekijken
role_manage-account=Beheer account
role_manage-account-links=Beheer accountlinks
role_read-token=Token lezen
role_offline-access=Offline toegang
client_account=Account
client_security-admin-console=Security Admin Console
client_admin-cli=Admin CLI
client_realm-management=Realm-beheer
client_broker=Broker
invalidUserMessage=Ongeldige gebruikersnaam of wachtwoord.
invalidEmailMessage=Ongeldig e-mailadres.
accountDisabledMessage=Account is uitgeschakeld, neem contact op met beheer.
accountTemporarilyDisabledMessage=Account is tijdelijk uitgeschakeld, neem contact op met beheer of probeer het later opnieuw.
expiredCodeMessage=Logintijd verlopen. Gelieve opnieuw in te loggen.
expiredActionMessage=Actietijd verlopen. Log daarom opnieuw in.
expiredActionTokenNoSessionMessage=Actietijd verlopen.
expiredActionTokenSessionExistsMessage=Actietijd verlopen. Gelieve de actie opnieuw doen.
missingFirstNameMessage=Voer uw voornaam in.
missingLastNameMessage=Voer uw achternaam in.
missingEmailMessage=Voer uw e-mailadres in.
missingUsernameMessage=Voer uw gebruikersnaam in.
missingPasswordMessage=Voer uw wachtwoord in.
missingTotpMessage=Voer uw authenticatiecode in.
notMatchPasswordMessage=Wachtwoorden komen niet overeen.
invalidPasswordExistingMessage=Ongeldig bestaand wachtwoord.
invalidPasswordBlacklistedMessage=Ongeldig wachtwoord\: wachtwoord is geblacklist.
invalidPasswordConfirmMessage=Wachtwoord komt niet overeen met wachtwoordbevestiging.
invalidTotpMessage=Ongeldige authenticatiecode.
usernameExistsMessage=Gebruikersnaam bestaat al.
emailExistsMessage=E-mailadres bestaat al.
federatedIdentityExistsMessage=Gebruiker met {0} {1} bestaat al. Log in met het beheerdersaccount om het account te koppelen.
confirmLinkIdpTitle=Account bestaat al
federatedIdentityConfirmLinkMessage=Gebruiker met {0} {1} bestaat al. Hoe wilt u doorgaan?
federatedIdentityConfirmReauthenticateMessage=Authenticeer om uw account te koppelen {0}
confirmLinkIdpReviewProfile=Nalopen profiel
confirmLinkIdpContinue=Voeg toe aan bestaande account
configureTotpMessage=U moet de Mobile Authenticator configuren om uw account te activeren.
updateProfileMessage=U moet uw gebruikersprofiel bijwerken om uw account te activeren.
updatePasswordMessage=U moet uw wachtwoord wijzigen om uw account te activeren.
resetPasswordMessage=U moet uw wachtwoord wijzigen.
verifyEmailMessage=U moet uw e-mailadres verifi\u00ebren om uw account te activeren.
linkIdpMessage=U moet uw e-mailadres verifi\u00ebren om uw account te koppelen aan {0}.
emailSentMessage=U ontvangt binnenkort een e-mail met verdere instructies.
emailSendErrorMessage=Het versturen van de e-mail is mislukt, probeer het later opnieuw.
accountUpdatedMessage=Uw account is gewijzigd.
accountPasswordUpdatedMessage=Uw wachtwoord is gewijzigd.
delegationCompleteHeader=Login gelukt
delegationCompleteMessage=U mag uw browser sluiten en terug gaan naar uw console applicatie
delegationFailedHeader=Login mislukt
delegationFailedMessage=U mag uw browser sluiten en terug gaan naar uw console applicatie om daar het loginproces nogmaalt te proberen.
noAccessMessage=Geen toegang
invalidPasswordMinLengthMessage=Ongeldig wachtwoord, de minimumlengte is {0} karakters.
invalidPasswordMinDigitsMessage=Ongeldig wachtwoord, deze moet minstens {0} cijfers bevatten.
invalidPasswordMinLowerCaseCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} kleine letters bevatten.
invalidPasswordMinUpperCaseCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} hoofdletters bevatten.
invalidPasswordMinSpecialCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} speciale tekens bevatten.
invalidPasswordNotUsernameMessage=Ongeldig wachtwoord, deze mag niet overeen komen met de gebruikersnaam.
invalidPasswordRegexPatternMessage=Ongeldig wachtwoord, deze komt niet overeen met opgegeven reguliere expressie(s).
invalidPasswordHistoryMessage=Ongeldig wachtwoord, deze mag niet overeen komen met een van de laatste {0} wachtwoorden.
invalidPasswordGenericMessage=Ongeldig wachtwoord\: het nieuwe wachtwoord voldoet niet aan de opgestelde eisen.
failedToProcessResponseMessage=Het verwerken van de respons is mislukt
httpsRequiredMessage=HTTPS vereist
realmNotEnabledMessage=Realm niet geactiveerd
invalidRequestMessage=Ongeldige request
failedLogout=Afmelden is mislukt
unknownLoginRequesterMessage=De login requester is onbekend
loginRequesterNotEnabledMessage=De login requester is niet geactiveerd
bearerOnlyMessage=Bearer-only applicaties mogen geen browserlogin initi\u00ebren
standardFlowDisabledMessage=Client mag geen browserlogin starten met het opgegeven response_type. Standard flow is uitgeschakeld voor de client.
implicitFlowDisabledMessage=Client mag geen browserlogin starten met opgegeven response_type. Implicit flow is uitgeschakeld voor de klant.
invalidRedirectUriMessage=Ongeldige redirect-URI
unsupportedNameIdFormatMessage=Niet-ondersteunde NameIDFormat
invalidRequesterMessage=Ongeldige requester
registrationNotAllowedMessage=Registratie is niet toegestaan
resetCredentialNotAllowedMessage=Het opnieuw instellen van de aanmeldgegevens is niet toegestaan
permissionNotApprovedMessage=Recht verworpen.
noRelayStateInResponseMessage=Geen relay state in antwoord van de identity provider.
insufficientPermissionMessage=Onvoldoende rechten om identiteiten te koppelen.
couldNotProceedWithAuthenticationRequestMessage=Het authenticatieverzoek naar de identity provider wordt afgebroken.
couldNotObtainTokenMessage=Kon geen token bemachtigen van de identity provider.
unexpectedErrorRetrievingTokenMessage=Onverwachte fout bij het ophalen van de token van de identity provider.
unexpectedErrorHandlingResponseMessage=Onverwachte fout bij het verwerken van de respons van de identity provider.
identityProviderAuthenticationFailedMessage=Verificatie mislukt. Er kon niet worden geauthenticeerd met de identity provider.
couldNotSendAuthenticationRequestMessage=Kan het authenticatieverzoek niet verzenden naar de identity provider.
unexpectedErrorHandlingRequestMessage=Onverwachte fout bij het verwerken van het authenticatieverzoek naar de identity provider.
invalidAccessCodeMessage=Ongeldige toegangscode.
sessionNotActiveMessage=Sessie inactief.
invalidCodeMessage=Er is een fout opgetreden, probeer nogmaals in te loggen.
identityProviderUnexpectedErrorMessage=Onverwachte fout tijdens de authenticatie met de identity provider
identityProviderNotFoundMessage=Geen identity provider gevonden met deze naam.
identityProviderLinkSuccess=Uw account is met succes gekoppeld aan {0} account {1}.
staleCodeMessage=Deze pagina is verlopen. Keer terug naar uw applicatie om opnieuw in te loggen.
realmSupportsNoCredentialsMessage=Realm ondersteunt geen enkel soort aanmeldgegeven.
identityProviderNotUniqueMessage=Realm ondersteunt meerdere identity providers. Er kon niet bepaald worden welke identity provider er gebruikt zou moeten worden tijdens de authenticatie.
emailVerifiedMessage=Uw e-mailadres is geverifieerd.
staleEmailVerificationLink=De link die u gebruikt is verlopen, wellicht omdat u uw e-mailadres al eerder geverifieerd heeft.
identityProviderAlreadyLinkedMessage=De door {0} teruggegeven gefedereerde identiteit is al aan een andere gebruiker gekoppeld.
confirmAccountLinking=Bevestig dat het account {0} van identity provider {1} overeenkomt met uw account.
confirmEmailAddressVerification=Bevestig dat e-mailadres {0} valide is.
confirmExecutionOfActions=Voer de volgende actie(s) uit
backToApplication=&laquo; Terug naar de applicatie
missingParameterMessage=Missende parameters\: {0}
clientNotFoundMessage=Client niet gevonden.
clientDisabledMessage=Client is inactief.
invalidParameterMessage=Ongeldige parameter\: {0}
alreadyLoggedIn=U bent al ingelogd.
differentUserAuthenticated=U bent in deze sessie al als de gebruiker "{0}" aangemeld. Log eerst uit.
brokerLinkingSessionExpired=Broker account linking aangevraagd, maar de huidige sessie in verlopen.
proceedWithAction=&raquo; Klik hier om verder te gaan
requiredAction.CONFIGURE_TOTP=Configureer OTP
requiredAction.TERMS_AND_CONDITIONS=Voorwaarden
requiredAction.UPDATE_PASSWORD=Update wachtwoord
requiredAction.UPDATE_PROFILE=Update profiel
requiredAction.VERIFY_EMAIL=Verifieer e-mail
doX509Login=U wordt ingelogd als\:
clientCertificate=X509 client certificate\:
noCertificate=[No Certificate]
pageNotFound=Pagina niet gevonden
internalServerError=Er is een interne serverfout opgetreden
console-username=Gebruikersnaam\:
console-password=Wachtwoord\:
console-otp=Eenmalige code\:
console-new-password=Nieuw wachtwoord\:
console-confirm-password=Bevestig wachtwoord\:
console-update-password=Een update van uw wachtwoord is verplicht.
console-verify-email=U bent verplicht om uw e-mailadres te verifi\u00ebren. Een e-mail met de verificatiecode is naar {0} gestuurd. Voer deze code hieronder in.
console-email-code=E-mail Code\:
console-accept-terms=Accepteert u de voorwaarden? [y/n]\:
console-accept=y
identity-provider-redirector=Gebruik een andere Identity Provider
identity-provider-login-label=Of login met
idp-email-verification-display-name=E-mail Verificatie
idp-email-verification-help-text=Bevestig uw account per e-mail.
idp-username-password-form-display-name=Gebruikersnaam en wachtwoord
idp-username-password-form-help-text=Bevestig uw account door in te loggen.
shouldBeEqual={0} moet gelijk zijn aan {1}
shouldBeDifferent={0} moet verschillen van {1}
shouldMatchPattern=Patroon moet overeenkomen\: `/{0}/`
mustBeAnInteger=Moet een geheel getal zijn
notAValidOption=Geen geldige optie
selectAnOption=Selecteer een optie
remove=Verwijderen
addValue=Waarde toevoegen
languages=Talen

View File

@ -0,0 +1,200 @@
doLogIn=Logg inn
doRegister=Registrer deg
doRegisterSecurityKey=Registrer deg
doCancel=Avbryt
doSubmit=Send inn
doYes=Ja
doNo=Nei
doContinue=Fortsett
doAccept=Aksepter
doDecline=Avsl\u00e5
doForgotPassword=Glemt passord?
doClickHere=Klikk her
doImpersonate=Utgi deg for \u00e5 v\u00e6re en annen bruker
kerberosNotConfigured=Kerberos er ikke konfigurert
kerberosNotConfiguredTitle=Kerberos er ikke konfigurert
bypassKerberosDetail=Enten er du ikke logget inn via Kerberos eller s\u00e5 st\u00f8tter ikke nettleseren innlogging med Kerberos. Vennligst klikk Fortsett for \u00e5 logge inn p\u00e5 andre m\u00e5ter
kerberosNotSetUp=Kerberos er ikke konfigurert. Du kan ikke logge inn.
registerWithTitle=Registrer deg med {0}
registerWithTitleHtml={0}
loginTitle=Logg inn p\u00e5 {0}
loginTitleHtml={0}
impersonateTitle={0} Gi deg ut for \u00e5 v\u00e6re en annen bruker
impersonateTitleHtml=<strong>{0}</strong> Gi deg ut for \u00e5 v\u00e6re en annen bruker
realmChoice=Sikkerhetsdomene
unknownUser=Ukjent bruker
loginTotpTitle=Konfigurer autentifikator for mobil
loginProfileTitle=Oppdater konto
loginTimeout=Du brukte for lang tid p\u00e5 \u00e5 logge inn. Vennligst pr\u00f8v igjen.
oauthGrantTitle=Gi tilgang
oauthGrantTitleHtml={0}
errorTitle=Vi beklager...
errorTitleHtml=Vi <strong>beklager</strong> ...
emailVerifyTitle=E-postbekreftelse
emailForgotTitle=Glemt passord?
updatePasswordTitle=Oppdater passord
codeSuccessTitle=Suksesskode
codeErrorTitle=Feilkode\: {0}
termsTitle=Vilk\u00e5r og betingelser
termsTitleHtml=Vilk\u00e5r og betingelser
termsText=
recaptchaFailed=Ugyldig Bildebekreftelse
recaptchaNotConfigured=Bildebekreftelse er p\u00e5krevet, men er ikke konfigurert
consentDenied=Samtykke avsl\u00e5tt.
noAccount=Ny bruker?
username=Brukernavn
usernameOrEmail=Brukernavn eller e-postadresse
firstName=Fornavn
givenName=Fornavn
fullName=Fullstendig navn
lastName=Etternavn
familyName=Etternavn
email=E-postadresse
password=Passord
passwordConfirm=Bekreft passord
passwordNew=Nytt passord
passwordNewConfirm=Bekreft nytt Passord
rememberMe=Husk meg
authenticatorCode=Engangskode
address=Adresse
street=Gate-/veinavn + husnummer
locality=By
region=Fylke
postal_code=Postnummer
country=Land
emailVerified=E-postadresse bekreftet
gssDelegationCredential=GSS legitimasjons-delegering
loginTotpStep1=Installer <a href\="https\://freeotp.github.io/" target\="_blank">FreeOTP</a> eller Google Authenticator p\u00e5 din mobiltelefon. Begge applikasjoner er tilgjengelige p\u00e5 <a href\="https\://play.google.com">Google Play</a> og Apple App Store.
loginTotpStep2=\u00c5pne applikasjonen og skann strekkoden eller skriv inn koden
loginTotpStep3=Skriv inn engangskoden fra applikasjonen og klikk send inn for \u00e5 fullf\u00f8re
loginOtpOneTime=Engangskode
oauthGrantRequest=Vil du gi disse tilgangsrettighetene?
inResource=i
emailVerifyInstruction1=En e-post med instruksjoner for \u00e5 bekrefte din e-postadresse har blitt sendt til deg.
emailVerifyInstruction2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?
emailVerifyInstruction3=for \u00e5 sende e-post p\u00e5 nytt.
emailLinkIdpTitle=Lenke {0}
emailLinkIdp1=En e-post med instruksjoner for \u00e5 koble {0} konto med din {2} konto har blitt sendt til deg.
emailLinkIdp2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?
emailLinkIdp3=for \u00e5 sende e-post p\u00e5 nytt.
backToLogin=&laquo; Tilbake til innlogging
emailInstruction=Skriv inn e-postadressen din og vi vil sende deg instruksjoner for hvordan du oppretter et nytt passord.
copyCodeInstruction=Vennligst kopier denne koden og lim den inn i applikasjonen din\:
personalInfo=Personlig informasjon\:
role_admin=Administrator
role_realm-admin=Administrator for sikkerhetsdomene
role_create-realm=Opprette sikkerhetsdomene
role_create-client=Opprette klient
role_view-realm=Se sikkerhetsdomene
role_view-users=Se brukere
role_view-applications=Se applikasjoner
role_view-clients=Se klienter
role_view-events=Se hendelser
role_view-identity-providers=Se identitetsleverand\u00f8rer
role_manage-realm=Administrere sikkerhetsdomene
role_manage-users=Administrere brukere
role_manage-applications=Administrere applikasjoner
role_manage-identity-providers=Administrere identitetsleverand\u00f8rer
role_manage-clients=Administrere klienter
role_manage-events=Administrere hendelser
role_view-profile=Se profil
role_manage-account=Administrere konto
role_read-token=Lese token
role_offline-access=Frakoblet tilgang
role_uma_authorization=Skaffe tillatelser
client_account=Konto
client_security-admin-console=Sikkerthetsadministrasjonskonsoll
client_realm-management=Sikkerhetsdomene-administrasjon
client_broker=Broker
invalidUserMessage=Ugyldig brukernavn eller passord.
invalidEmailMessage=Ugyldig e-postadresse.
accountDisabledMessage=Konto er deaktivert, kontakt administrator.
accountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller pr\u00f8v p\u00e5 nytt senere.
expiredCodeMessage=Login ble tidsavbrutt. Vennligst logg inn p\u00e5 nytt.
missingFirstNameMessage=Vennligst oppgi fornavn.
missingLastNameMessage=Vennligst oppgi etternavn.
missingEmailMessage=Vennligst oppgi e-postadresse.
missingUsernameMessage=Vennligst oppgi brukernavn.
missingPasswordMessage=Vennligst oppgi passord.
missingTotpMessage=Vennligst oppgi autentiseringskode.
notMatchPasswordMessage=Passordene er ikke like.
invalidPasswordExistingMessage=Ugyldig eksisterende passord.
invalidPasswordConfirmMessage=Passord er ikke like.
invalidTotpMessage=Ugyldig engangskode.
usernameExistsMessage=Brukernavnet finnes allerede.
emailExistsMessage=E-post finnes allerede.
federatedIdentityExistsMessage=Bruker med {0} {1} finnes allerede. Vennligst logg inn p\u00e5 kontoadministratsjon for \u00e5 koble sammen kontoene.
confirmLinkIdpTitle=Kontoen finnes allerede
federatedIdentityConfirmLinkMessage=Bruker med {0} {1} finnes allerede. Hvordan vil du fortsette?
confirmLinkIdpReviewProfile=Se over og bekreft profil
confirmLinkIdpContinue=Legg til eksisterende konto
configureTotpMessage=Du m\u00e5 sette opp en engangskode-generator for \u00e5 aktivere konto.
updateProfileMessage=Du m\u00e5 oppdatere brukerprofilen din for \u00e5 aktivere konto.
updatePasswordMessage=Du m\u00e5 skifte passord for \u00e5 aktivere kontoen din.
verifyEmailMessage=Du m\u00e5 bekrefte e-postadressen din for \u00e5 aktivere konto.
linkIdpMessage=You need to verify your email address to link your account with {0}.
emailSentMessage=Du vil straks motta en e-post med ytterlige instruksjoner.
emailSendErrorMessage=Mislyktes \u00e5 sende e-post, vennligst pr\u00f8v igjen senere.
accountUpdatedMessage=Din konto har blitt oppdatert.
accountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.
noAccessMessage=Ingen tilgang
invalidPasswordMinLengthMessage=Ugyldig passord\: minimum lengde {0}.
invalidPasswordMinDigitsMessage=Ugyldig passord\: m\u00e5 inneholde minimum {0} sifre.
invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord\: m\u00e5 inneholde minimum {0} sm\u00e5 bokstaver.
invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord\: m\u00e5 inneholde minimum {0} store bokstaver.
invalidPasswordMinSpecialCharsMessage=Ugyldig passord\: m\u00e5 inneholde minimum {0} spesialtegn.
invalidPasswordNotUsernameMessage=Ugyldig passord\: kan ikke v\u00e6re likt brukernavn.
invalidPasswordRegexPatternMessage=Ugyldig passord\: tilfredsstiller ikke kravene for passord-m\u00f8nster.
invalidPasswordHistoryMessage=Ugyldig passord\: kan ikke v\u00e6re likt noen av de {0} foreg\u00e5ende passordene.
failedToProcessResponseMessage=Kunne ikke behandle svar
httpsRequiredMessage=HTTPS p\u00e5krevd
realmNotEnabledMessage=Sikkerhetsdomene er ikke aktivert
invalidRequestMessage=Ugyldig foresp\u00f8rsel
failedLogout=Utlogging feilet
unknownLoginRequesterMessage=Ukjent anmoder for innlogging
loginRequesterNotEnabledMessage=Anmoder for innlogging er ikke aktivert
bearerOnlyMessage=Bearer-only applikasjoner har ikke lov til \u00e5 initiere innlogging via nettleser
standardFlowDisabledMessage=Klienten har ikke lov til \u00e5 initiere innlogging via nettleser med gitt response_type. Standard flow er deaktivert for denne klienten.
implicitFlowDisabledMessage=Klienten har ikke lov til \u00e5 initiere innlogging via nettleser med gitt response_type. Implicit flow er deaktivert for denne klienten.
invalidRedirectUriMessage=Ugyldig redirect uri
unsupportedNameIdFormatMessage=NameIDFormat er ikke st\u00f8ttet
invalidRequesterMessage=Ugyldig sender av foresp\u00f8rsel
registrationNotAllowedMessage=Registrering er ikke lov
resetCredentialNotAllowedMessage=Tilbakestilling av innloggingsdata er ikke lov
permissionNotApprovedMessage=Tillatelse ikke godkjent.
noRelayStateInResponseMessage=Ingen relay state i svar fra identitetsleverand\u00f8r.
insufficientPermissionMessage=Utilstrekkelige rettigheter for \u00e5 koble identiteter.
couldNotProceedWithAuthenticationRequestMessage=Kunne ikke g\u00e5 videre med autentiseringsforesp\u00f8rsel til identitetsleverand\u00f8r.
couldNotObtainTokenMessage=Klarte ikke \u00e5 innhente token fra identitetsleverand\u00f8r.
unexpectedErrorRetrievingTokenMessage=Uventet feil ved henting av token fra identitetsleverand\u00f8r.
unexpectedErrorHandlingResponseMessage=Uventet feil ved h\u00e5ndtering av svar fra identitetsleverand\u00f8r.
identityProviderAuthenticationFailedMessage=Autentisering feilet. Kunne ikke autentisere med identitetsleverand\u00f8r.
couldNotSendAuthenticationRequestMessage=Kunne ikke sende autentiseringsforesp\u00f8rsel til identitetsleverand\u00f8r.
unexpectedErrorHandlingRequestMessage=Uventet feil ved h\u00e5ndtering av autentiseringsforesp\u00f8rsel til identitetsleverand\u00f8r.
invalidAccessCodeMessage=Ugyldig tilgangskode.
sessionNotActiveMessage=Sesjonen er ikke aktiv.
invalidCodeMessage=En feil oppstod, vennligst logg inn p\u00e5 nytt i din applikasjon.
identityProviderUnexpectedErrorMessage=Uventet feil ved autentisering med identitetsleverand\u00f8r
identityProviderNotFoundMessage=Kunne ikke finne en identitetsleverand\u00f8r med identifikatoren.
identityProviderLinkSuccess=Din konto ble suksessfullt koblet med {0} konto {1}.
staleCodeMessage=Denne siden er ikke lenger gyldig. Vennligst g\u00e5 tilbake til applikasjonen din og logg inn p\u00e5 nytt.
realmSupportsNoCredentialsMessage=Sikkerhetsdomene st\u00f8tter ingen legitimasjonstyper.
identityProviderNotUniqueMessage=Sikkerhetsdomene st\u00f8tter flere identitetsleverand\u00f8rer. Kunne ikke avgj\u00f8re hvilken identitetsleverand\u00f8r som burde brukes for autentisering.
emailVerifiedMessage=Din e-postadresse har blitt verifisert.
staleEmailVerificationLink=Lenken du klikket er utg\u00e5tt og er ikke lenger gyldig. Har du kanskje allerede bekreftet e-postadressen din?
backToApplication=&laquo; Tilbake til applikasjonen
missingParameterMessage=Manglende parameter\: {0}
clientNotFoundMessage=Klient ikke funnet.
clientDisabledMessage=Klient deaktivert.
invalidParameterMessage=Ugyldig parameter\: {0}
alreadyLoggedIn=Du er allerede innlogget.
shouldBeEqual={0} skal v\u00e6re lik {1}
shouldBeDifferent={0} skal v\u00e6re forskjellig fra {1}
shouldMatchPattern=M\u00f8nsteret skal matche\: `/{0}/`
mustBeAnInteger=M\u00e5 v\u00e6re et heltall
notAValidOption=Ikke et gyldig alternativ
selectAnOption=Velg et alternativ
remove=Fjern
addValue=Legg til verdi
languages=Spr\u00e5k

View File

@ -0,0 +1,290 @@
doLogIn=Logowanie
doRegister=Rejestracja
doRegisterSecurityKey=Rejestracja
doCancel=Anuluj
doSubmit=Zatwierd\u017a
doBack=Cofnij
doYes=Tak
doNo=Nie
doContinue=Kontynuuj
doIgnore=Ignoruj
doAccept=Akceptuj
doDecline=Odrzu\u0107
doForgotPassword=Nie pami\u0119tasz has\u0142a?
doClickHere=Kliknij tutaj
doImpersonate=Wciel si\u0119
doTryAgain=Spr\u00f3buj ponownie
doTryAnotherWay=Spr\u00f3buj inn\u0105 metod\u0105
kerberosNotConfigured=Kerberos nie jest skonfigurowany
kerberosNotConfiguredTitle=Kerberos nie jest skonfigurowany
bypassKerberosDetail=Albo nie jeste\u015b zalogowany przez Kerberos albo twoja przegl\u0105darka nie jest skonfigurowana do logowania Kerberos. Kliknij kontynuuj by zalogowa\u0107 si\u0119 w inny spos\u00f3b.
kerberosNotSetUp=Kerberos nie jest skonfigurowany. Nie mo\u017cna si\u0119 zalogowa\u0107.
registerTitle=Rejestracja
loginAccountTitle=Zaloguj si\u0119 na swoje konto
loginTitle=Zaloguj si\u0119 do {0}
loginTitleHtml={0}
impersonateTitle=Wcielenie {0}
impersonateTitleHtml=Wcielenie <strong>{0}</strong>
realmChoice=Strefa
unknownUser=Nieznany u\u017cytkownik
loginTotpTitle=Konfiguracja dla Mobile Authenticator
loginProfileTitle=Zaktualizuj informacje konta
loginTimeout=Zbyt du\u017co czasu zaj\u0119\u0142o logowanie. Proces logowania rozpocznie si\u0119 od nowa.
oauthGrantTitle=Przydziel dost\u0119p dla {0}
oauthGrantTitleHtml={0}
errorTitle=Przykro nam...
errorTitleHtml=<strong>Przykro</strong> nam...
emailVerifyTitle=Weryfikacja e-maila
emailForgotTitle=Nie pami\u0119tasz has\u0142a?
updatePasswordTitle=Aktualizacja has\u0142a
codeSuccessTitle=Kod sukcesu
codeErrorTitle=Kod b\u0142\u0119du\: {0}
displayUnsupported=\u017b\u0105dany typ wy\u015bwietlania jest nieobs\u0142ugiwany
browserRequired=Do zalogowania wymagana jest przegl\u0105darka
browserContinue=Przegl\u0105darka jest wymagana by doko\u0144czy\u0107 logowanie
browserContinuePrompt=Otworzy\u0107 przegl\u0105dark\u0119 i kontynuowa\u0107 logowanie? [t/n]\:
browserContinueAnswer=t
termsTitle=Regulamin
termsText=
termsPlainText=Regulamin, kt\u00f3ry nale\u017cy zdefiniowa\u0107.
recaptchaFailed=B\u0142\u0119dna Recaptcha
recaptchaNotConfigured=Recaptcha jest wymagana, ale nie skonfigurowana
consentDenied=Zgoda odrzucona.
noAccount=Nie masz konta?
username=Nazwa u\u017cytkownika (login)
usernameOrEmail=Nazwa u\u017cytkownika lub e-mail (login)
firstName=Imi\u0119
givenName=Nadane imi\u0119
fullName=Pe\u0142ne imi\u0119 i nazwisko
lastName=Nazwisko
familyName=Nazwisko rodowe
email=E-mail
password=Has\u0142o
passwordConfirm=Potwierd\u017a has\u0142o
passwordNew=Nowe has\u0142o
passwordNewConfirm=Potwierdzenie nowego has\u0142a
rememberMe=Zapami\u0119taj mnie
authenticatorCode=Kod jednorazowy
address=Adres
street=Ulica
locality=Miejscowo\u015b\u0107
region=Wojew\u00f3dztwo
postal_code=Kod pocztowy
country=Pa\u0144stwo
emailVerified=Email zweryfikowany
website=Strona internetowa
phoneNumber=Nr telefonu
phoneNumberVerified=Nr telefonu zweryfikowany
gender=P\u0142e\u0107
birthday=Data urodzenia
zoneinfo=Strefa czasowa
gssDelegationCredential=\u015awiadectwo przekazania uprawnie\u0144 GSS
profileScopeConsentText=Profil u\u017cytkownika
emailScopeConsentText=Adres email
addressScopeConsentText=Adres
phoneScopeConsentText=Numer telefonu
offlineAccessScopeConsentText=Dost\u0119p offline
samlRoleListScopeConsentText=Moje role
rolesScopeConsentText=Role u\u017cytkownika
restartLoginTooltip=Restart logowania
loginTotpIntro=Aby uzyska\u0107 dost\u0119p do tego konta, musisz skonfigurowa\u0107 generator hase\u0142 jednorazowych
loginTotpStep1=Zainstaluj jedn\u0105 z nast\u0119puj\u0105cych aplikacji na telefonie kom\u00f3rkowym
loginTotpStep2=Otw\u00f3rz aplikacj\u0119 i zeskanuj kod kreskowy
loginTotpStep3=Wprowad\u017a jednorazowy kod podany przez aplikacj\u0119 i kliknij Prze\u015blij aby zako\u0144czy\u0107 konfiguracj\u0119
loginTotpManualStep2=Otw\u00f3rz aplikacj\u0119 i wprowad\u017a klucz
loginTotpManualStep3=U\u017cyj poni\u017cszych warto\u015bci konfiguracji, je\u015bli aplikacja pozwala na ich ustawienie
loginTotpUnableToScan=Nie mo\u017cna skanowa\u0107?
loginTotpScanBarcode=Zeskanowa\u0107 kod paskowy?
loginCredential=Po\u015bwiadczenia
loginOtpOneTime=Kod jednorazowy
loginTotpType=Typ
loginTotpAlgorithm=Algorytm
loginTotpDigits=Cyfry
loginTotpInterval=Interwa\u0142
loginTotpCounter=Licznik
loginTotpDeviceName=Nazwa urz\u0105dzenia
loginTotp.totp=Oparte o czas
loginTotp.hotp=Oparte o licznik
loginChooseAuthenticator=Wybierz metod\u0119 logowania
oauthGrantRequest=Czy przyznajesz te uprawnienia dost\u0119pu?
inResource=w
emailVerifyInstruction1=Zosta\u0142a wys\u0142ana do Ciebie wiadomo\u015b\u0107 e-mail z instrukcjami jak zweryfikowa\u0107 sw\u00f3j adres e-mail.
emailVerifyInstruction2=Nie otrzyma\u0142em kodu weryfikacyjnego w wiadomo\u015bci e-mail?
emailVerifyInstruction3=aby ponownie wys\u0142a\u0107 wiadomo\u015b\u0107 e-mail.
emailLinkIdpTitle=Link {0}
emailLinkIdp1=Wiadomo\u015b\u0107 e-mail z instrukcjami, aby powi\u0105za\u0107 konto {0} {1} z kontem {2} zosta\u0142a wys\u0142ana do Ciebie.
emailLinkIdp2=Nie otrzyma\u0142em kodu weryfikacyjnego w wiadomo\u015bci e-mail?
emailLinkIdp3=aby ponownie wys\u0142a\u0107 wiadomo\u015b\u0107 e-mail.
emailLinkIdp4=Je\u015bli ju\u017c zweryfikowana e-mail w innej przegl\u0105darce
emailLinkIdp5=aby kontynuowa\u0107.
backToLogin=&laquo; Powr\u00f3t do logowania
emailInstruction=Wpisz sw\u00f3j adres e-mail lub nazw\u0119 u\u017cytkownika a wy\u015blemy do Ciebie instrukcje, jak utworzy\u0107 nowe has\u0142o.
copyCodeInstruction=Prosz\u0119 skopiowa\u0107 ten kod i wklej go do aplikacji\:
pageExpiredTitle=Strona wygas\u0142a
pageExpiredMsg1=Aby ponownie uruchomi\u0107 proces logowania
pageExpiredMsg2=Aby kontynuowa\u0107 proces logowania
personalInfo=Informacje osobiste\:
role_admin=Admin
role_realm-admin=Strefa Admin
role_create-realm=Utw\u00f3rz stref\u0119
role_create-client=Utw\u00f3rz klienta
role_view-realm=Wy\u015bwietl stref\u0119
role_view-users=Wy\u015bwietl u\u017cytkownik\u00f3w
role_view-applications=Wy\u015bwietl aplikacje
role_view-clients=Wy\u015bwietl klient\u00f3w
role_view-events=Wy\u015bwietl zdarzenia
role_view-identity-providers=Wy\u015bwietl dostawc\u00f3w to\u017csamo\u015bci
role_manage-realm=Zarz\u0105dzaj stref\u0105
role_manage-users=Zarz\u0105dzaj u\u017cytkownikami
role_manage-applications=Zarz\u0105dzaj aplikacjami
role_manage-identity-providers=Zarz\u0105dzaj dostawcami to\u017csamo\u015bci
role_manage-clients=Zarz\u0105dzaj klientami
role_manage-events=Zarz\u0105dzaj zdarzeniami
role_view-profile=Zobacz profil
role_manage-account=Zarz\u0105dzaj kontem
role_manage-account-links=Zarz\u0105dzanie \u0142\u0105czami konta
role_read-token=Odczytu tokenu
role_offline-access=Dost\u0119p offline
client_account=Konto
client_account-console=Konsola konta
client_security-admin-console=Konsola administratora bezpiecze\u0144stwa
client_admin-cli=Admin CLI
client_realm-management=Zarz\u0105dzanie stref\u0105
client_broker=Broker
requiredFields=Wymagane pola
invalidUserMessage=Nieprawid\u0142owa nazwa u\u017cytkownika lub has\u0142o.
invalidUsernameMessage=Nieprawid\u0142owa nazwa u\u017cytkownika.
invalidUsernameOrEmailMessage=Nieprawid\u0142owa nazwa u\u017cytkownika lub has\u0142o.
invalidPasswordMessage=Nieprawid\u0142owe has\u0142o.
invalidEmailMessage=Nieprawid\u0142owy adres e-mail.
accountDisabledMessage=Konto jest wy\u0142\u0105czone, skontaktuj si\u0119 z administratorem.
accountTemporarilyDisabledMessage=Konto jest tymczasowo wy\u0142\u0105czone, skontaktuj si\u0119 z administratorem lub spr\u00f3buj ponownie p\u00f3\u017aniej.
expiredCodeMessage=Przekroczono limit czasu logowania. Prosz\u0119 Zaloguj si\u0119 ponownie.
expiredActionMessage=Akcja wygas\u0142a. Prosz\u0119 kontynuowa\u0107 logowanie.
expiredActionTokenNoSessionMessage=Akcja wygas\u0142a.
expiredActionTokenSessionExistsMessage=Akcja wygas\u0142a. Prosz\u0119 uruchomi\u0107 ponownie.
missingFirstNameMessage=Prosz\u0119 poda\u0107 imi\u0119.
missingLastNameMessage=Prosz\u0119 poda\u0107 nazwisko.
missingEmailMessage=Prosz\u0119 poda\u0107 e-mail.
missingUsernameMessage=Prosz\u0119 poda\u0107 nazw\u0119 u\u017cytkownika.
missingPasswordMessage=Prosz\u0119 poda\u0107 has\u0142o.
missingTotpMessage=Prosz\u0119 poda\u0107 kod uwierzytelniaj\u0105cy.
missingTotpDeviceNameMessage=Prosz\u0119 poda\u0107 nazw\u0119 urz\u0105dzenia.
notMatchPasswordMessage=Has\u0142a nie s\u0105 zgodne.
invalidPasswordExistingMessage=Nieprawid\u0142owe istniej\u0105ce has\u0142o.
invalidPasswordBlacklistedMessage=Nieprawid\u0142owe has\u0142o\: has\u0142o jest na czarnej li\u015bcie.
invalidPasswordConfirmMessage=Potwierdzenie has\u0142a nie pasuje.
invalidTotpMessage=Nieprawid\u0142owy kod uwierzytelnienia.
usernameExistsMessage=Nazwa u\u017cytkownika ju\u017c istnieje.
emailExistsMessage=Email ju\u017c istnieje.
federatedIdentityExistsMessage=U\u017cytkownik z {0} {1} ju\u017c istnieje. Zaloguj si\u0119 do zarz\u0105dzania kontem aby po\u0142\u0105czy\u0107 konto.
confirmLinkIdpTitle=Konto ju\u017c istnieje
federatedIdentityConfirmLinkMessage=U\u017cytkownik z {0} {1} ju\u017c istnieje. Co chcesz zrobi\u0107?
federatedIdentityConfirmReauthenticateMessage=Uwierzytelnij si\u0119 aby po\u0142\u0105czy\u0107 swoje konto z {0}
nestedFirstBrokerFlowMessage=U\u017cytkownik {0} {1} nie jest powi\u0105zany z \u017cadnym znanym u\u017cytkownikiem.
confirmLinkIdpReviewProfile=Przejrzyj profil
confirmLinkIdpContinue=Dodaj do istniej\u0105cego konta
configureTotpMessage=Musisz skonfigurowa\u0107 Mobile Authenticator aby aktywowa\u0107 swoje konto.
updateProfileMessage=Musisz zaktualizowa\u0107 profilu u\u017cytkownika aby aktywowa\u0107 swoje konto.
updatePasswordMessage=Musisz zmieni\u0107 swoje has\u0142o aby aktywowa\u0107 swoje konto.
resetPasswordMessage=Musisz zmieni\u0107 swoje has\u0142o.
verifyEmailMessage=Musisz zweryfikowa\u0107 sw\u00f3j adres e-mail aby aktywowa\u0107 swoje konto.
linkIdpMessage=Musisz zweryfikowa\u0107 sw\u00f3j adres e-mail, aby po\u0142\u0105czy\u0107 swoje konto z {0}.
emailSentMessage=Powiniene\u015b otrzymywa\u0107 wkr\u00f3tce poczt\u0119 z dalszymi instrukcjami.
emailSendErrorMessage=Nie mo\u017cna wys\u0142a\u0107 wiadomo\u015bci e-mail, prosz\u0119 spr\u00f3bowa\u0107 ponownie p\u00f3\u017aniej.
accountUpdatedMessage=Twoje konto zosta\u0142o zaktualizowane.
accountPasswordUpdatedMessage=Twoje has\u0142o zosta\u0142o zaktualizowane.
delegationCompleteHeader=Logowanie udane
delegationCompleteMessage=Mo\u017cesz zamkn\u0105\u0107 okno przegl\u0105darki i przej\u015b\u0107 wstecz do aplikacji konsoli.
delegationFailedHeader=Logowanie nie powiod\u0142o si\u0119
delegationFailedMessage=Mo\u017cesz zamkn\u0105\u0107 okno przegl\u0105darki, wr\u00f3ci\u0107 do aplikacji konsoli i spr\u00f3bowa\u0107 zalogowa\u0107 si\u0119 ponownie.
noAccessMessage=Brak dost\u0119pu
invalidPasswordMinLengthMessage=Nieprawid\u0142owe has\u0142o\: minimalna d\u0142ugo\u015b\u0107 {0}.
invalidPasswordMinDigitsMessage=Nieprawid\u0142owe has\u0142o\: musi zawiera\u0107 przynajmniej {0} cyfr.
invalidPasswordMinLowerCaseCharsMessage=Nieprawid\u0142owe has\u0142o\: musi zawiera\u0107 co najmniej {0} ma\u0142ych liter.
invalidPasswordMinUpperCaseCharsMessage=Nieprawid\u0142owe has\u0142o\: musi zawiera\u0107 co najmniej {0} wielkich liter.
invalidPasswordMinSpecialCharsMessage=Nieprawid\u0142owe has\u0142o\: musi zawiera\u0107 przynajmniej {0} znak\u00f3w specjalnych.
invalidPasswordNotUsernameMessage=Nieprawid\u0142owe has\u0142o\: nie mo\u017ce by\u0107 nazw\u0105 u\u017cytkownika.
invalidPasswordRegexPatternMessage=Nieprawid\u0142owe has\u0142o\: brak zgodno\u015bci z wyra\u017ceniem regularnym.
invalidPasswordHistoryMessage=Nieprawid\u0142owe has\u0142o\: nie mo\u017ce by\u0107 takie jak {0} ostatnich hase\u0142.
invalidPasswordGenericMessage=Nieprawid\u0142owe has\u0142o\: nowe has\u0142o nie jest zgodne z zasadami hase\u0142.
failedToProcessResponseMessage=Nie mo\u017cna przetworzy\u0107 odpowiedzi
httpsRequiredMessage=Wymagany HTTPS
realmNotEnabledMessage=Strefa nie jest aktywna
invalidRequestMessage=Nieprawid\u0142owe \u017c\u0105danie
failedLogout=Wylogowanie nie powiod\u0142o si\u0119
unknownLoginRequesterMessage=Nieznany \u017c\u0105daj\u0105cy logowania
loginRequesterNotEnabledMessage=\u017b\u0105daj\u0105cy logowania nie jest aktywny
bearerOnlyMessage=Klienci bearer-only nie mog\u0105 inicjowa\u0107 logowania przez przegl\u0105dark\u0119
standardFlowDisabledMessage=Klient nie mo\u017ce zainicjowa\u0107 logowania przez przegl\u0105dark\u0119 z podanym response_type. Standardowy przep\u0142yw jest wy\u0142\u0105czony dla klienta.
implicitFlowDisabledMessage=Klient nie mo\u017ce zainicjowa\u0107 logowania przez przegl\u0105dark\u0119 z podanym response_type. Niejawny przep\u0142yw jest wy\u0142\u0105czony dla klienta.
invalidRedirectUriMessage=Nieprawid\u0142owy uri przekierowania
unsupportedNameIdFormatMessage=Nieobs\u0142ugiwany NameIDFormat
invalidRequesterMessage=Nieprawid\u0142owy \u017c\u0105daj\u0105cy
registrationNotAllowedMessage=Rejestracja nie jest dozwolona
resetCredentialNotAllowedMessage=Zresetowanie po\u015bwiadcze\u0144 nie jest dozwolone
permissionNotApprovedMessage=Uprawnienie nie zatwierdzone.
noRelayStateInResponseMessage=Brak przekazanego stanu w odpowiedzi dostawcy to\u017csamo\u015bci.
insufficientPermissionMessage=Niewystarczaj\u0105ce uprawnienia do \u0142\u0105czenia to\u017csamo\u015bci.
couldNotProceedWithAuthenticationRequestMessage=Nie mo\u017cna kontynuowa\u0107 \u017c\u0105dania uwierzytelnienia do dostawcy to\u017csamo\u015bci.
couldNotObtainTokenMessage=Nie mo\u017cna uzyska\u0107 tokenu od dostawcy to\u017csamo\u015bci.
unexpectedErrorRetrievingTokenMessage=Nieoczekiwany b\u0142\u0105d podczas pobierania tokenu od dostawcy to\u017csamo\u015bci.
unexpectedErrorHandlingResponseMessage=Nieoczekiwany b\u0142\u0105d podczas obs\u0142ugi odpowiedzi od dostawcy to\u017csamo\u015bci.
identityProviderAuthenticationFailedMessage=Uwierzytelnianie nie powiod\u0142o si\u0119. Nie mo\u017cna uwierzytelni\u0107 za pomoc\u0105 dostawcy to\u017csamo\u015bci.
couldNotSendAuthenticationRequestMessage=Nie mo\u017ce wysy\u0142a\u0107 \u017c\u0105dania uwierzytelniania do dostawcy to\u017csamo\u015bci.
unexpectedErrorHandlingRequestMessage=Nieoczekiwany b\u0142\u0105d podczas obs\u0142ugi \u017c\u0105dania uwierzytelnienia do dostawcy to\u017csamo\u015bci.
invalidAccessCodeMessage=Nieprawid\u0142owy kod dost\u0119pu.
sessionNotActiveMessage=Sesja nie jest aktywna.
invalidCodeMessage=Wyst\u0105pi\u0142 b\u0142\u0105d, zaloguj si\u0119 ponownie za po\u015brednictwem aplikacji.
identityProviderUnexpectedErrorMessage=Nieoczekiwany b\u0142\u0105d podczas uwierzytelniania u dostawcy to\u017csamo\u015bci
identityProviderNotFoundMessage=Nie mo\u017cna odnale\u017a\u0107 dostawcy to\u017csamo\u015bci z tym identyfikatorem.
identityProviderLinkSuccess=Pomy\u015blnie zweryfikowano e-mail. Wr\u00f3\u0107 do oryginalnej przegl\u0105darki i tam kontynuuj logowanie.
staleCodeMessage=Ta strona nie jest ju\u017c wa\u017cna, prosz\u0119 wr\u00f3ci\u0107 do aplikacji i zalogowa\u0107 si\u0119 ponownie
realmSupportsNoCredentialsMessage=Strefa nie obs\u0142uguje dowolnego typu po\u015bwiadcze\u0144.
identityProviderNotUniqueMessage=Strefa obs\u0142uguje wielu dostawc\u00f3w to\u017csamo\u015bci. Nie mo\u017cna okre\u015bli\u0107 dostawcy to\u017csamo\u015bci, kt\u00f3ry powinien by\u0107 u\u017cywany do uwierzytelniania.
emailVerifiedMessage=Tw\u00f3j adres e-mail zosta\u0142 zweryfikowany.
staleEmailVerificationLink=U\u017cyto nieaktualny link stanu, kt\u00f3ry straci\u0142 wa\u017cno\u015b\u0107. Mo\u017ce e-mail zosta\u0142 ju\u017c zweryfikowany?
identityProviderAlreadyLinkedMessage=Stowarzyszona to\u017csamo\u015b\u0107, zwr\u00f3cona przez {0} jest ju\u017c po\u0142\u0105czona z innym u\u017cytkownikiem.
confirmAccountLinking=Potwierd\u017a powi\u0105zanie konta {0} dostawcy to\u017csamo\u015bci {1} z twoim kontem.
confirmEmailAddressVerification=Potwierd\u017a wa\u017cno\u015b\u0107 adresu e-mail {0}.
confirmExecutionOfActions=Wykonaj nast\u0119puj\u0105ce akcje
backToApplication=&laquo; Powr\u00f3t do aplikacji
missingParameterMessage=Brakuj\u0105ce parametry\: {0}
clientNotFoundMessage=Klient nie znaleziony.
clientDisabledMessage=Klient nieaktywny.
invalidParameterMessage=Nieprawid\u0142owy parametr\: {0}
alreadyLoggedIn=Jeste\u015b ju\u017c zalogowany.
differentUserAuthenticated=Jeste\u015b ju\u017c uwierzytelniona/y jako inny u\u017cytkownik ''{0}'' w tej sesji. Najpierw si\u0119 wyloguj.
brokerLinkingSessionExpired=\u017b\u0105dano \u0142\u0105czenia kont brokera, ale bie\u017c\u0105ca sesja ju\u017c jest niewa\u017cna.
proceedWithAction=&raquo; kliknij tutaj, aby przej\u015b\u0107
requiredAction.CONFIGURE_TOTP=Skonfiguruj OTP
requiredAction.TERMS_AND_CONDITIONS=Regulamin
requiredAction.UPDATE_PASSWORD=Zaktualizuj has\u0142o
requiredAction.UPDATE_PROFILE=Zaktualizuj profil
requiredAction.VERIFY_EMAIL=Zweryfikuj adres e-mail
doX509Login=U\u017cytkownik b\u0119dzie zalogowany jako\:
clientCertificate=X509 certyfikat klienta\:
noCertificate=[brak certyfikatu]
pageNotFound=Nie znaleziono strony
internalServerError=Wyst\u0105pi\u0142 b\u0142\u0105d wewn\u0119trzny serwera
console-username=Nazwa u\u017cytkownika\:
console-password=Has\u0142o\:
console-otp=Has\u0142o jednorazowe\:
console-new-password=Nowe has\u0142o\:
console-confirm-password=Potwierd\u017a has\u0142o\:
console-update-password=Aktualizacja has\u0142a jest wymagana.
console-verify-email=Musisz zweryfikowa\u0107 sw\u00f3j adres e-mail. Wiadomo\u015b\u0107 e-mail z kodem weryfikacyjnym zosta\u0142a wys\u0142ana do {0}. Podaj ten kod poni\u017cej.
console-email-code=Kod z e-mail\:
console-accept-terms=Akceptujesz warunki? [t/n]\:
console-accept=t
readOnlyUsernameMessage=Zmiana nazwy u\u017cytkownika nie jest mo\u017cliwa, poniewa\u017c edycja konta jest zablokowana.
shouldBeEqual={0} powinno by\u0107 r\u00f3wne {1}
shouldBeDifferent={0} powinno by\u0107 r\u00f3\u017cne od {1}
shouldMatchPattern=Wz\u00f3r pow inien pasowa\u0107\: `/{0}/`
mustBeAnInteger=Musi by\u0107 liczb\u0105 ca\u0142kowit\u0105
notAValidOption=Nieprawid\u0142owa opcja
selectAnOption=Wybierz opcj\u0119
remove=Usu\u0144
addValue=Dodaj warto\u015b\u0107
languages=J\u0119zyki

View File

@ -0,0 +1,345 @@
doLogIn=Entrar
doRegister=Cadastre-se
doRegisterSecurityKey=Cadastre-se
doCancel=Cancelar
doSubmit=Ok
doBack=Voltar
doYes=Sim
doNo=N\u00e3o
doContinue=Continuar
doIgnore=Ignorar
doAccept=Aceitar
doDecline=Rejeitar
doForgotPassword=Esqueceu sua senha?
doClickHere=Clique aqui
doImpersonate=Personificar
doTryAgain=Tente novamente
doTryAnotherWay=Tente outra forma
doConfirmDelete=Confirmar descadastramento
errorDeletingAccount=Falha ao apagar conta
deletingAccountForbidden=Voc\u00ea n\u00e3o tem permiss\u00f5es para apagar a sua pr\u00f3pria conta, entre em contato com um administrador.
kerberosNotConfigured=Kerberos N\u00e3o Configurado
kerberosNotConfiguredTitle=Kerberos N\u00e3o Configurado
bypassKerberosDetail=Ou voc\u00ea n\u00e3o possui uma sess\u00e3o Kerberos ou o seu navegador n\u00e3o est\u00e1 configurado para usar o acesso do Kerberos. Por favor, clique em continuar para fazer o login no atrav\u00e9s de outros meios
kerberosNotSetUp=Kerberos n\u00e3o est\u00e1 configurado. Voc\u00ea n\u00e3o pode acessar a aplica\u00e7\u00e3o.
registerTitle=Registre-se
loginAccountTitle=Entrar na sua conta
loginTitle=Entrar em {0}
loginTitleHtml={0}
impersonateTitle={0} Personificar Usu\u00e1rio
impersonateTitleHtml=<strong>{0}</strong> Personificar Usu\u00e1rio
realmChoice=Dom\u00ednio
unknownUser=Usu\u00e1rio desconhecido
loginTotpTitle=Configura\u00e7\u00e3o do autenticador m\u00f3vel
loginProfileTitle=Atualizar Informa\u00e7\u00f5es da Conta
loginTimeout=Voc\u00ea demorou muito para entrar. Por favor, recomece o processo de login.
oauthGrantTitle=Conceder acesso a {0}
oauthGrantTitleHtml={0}
errorTitle=Sentimos muito...
errorTitleHtml=<strong>Sentimos</strong> muito ...
emailVerifyTitle=Verifica\u00e7\u00e3o de endere\u00e7o de e-mail
emailForgotTitle=Esqueceu sua senha?
updatePasswordTitle=Atualizar senha
codeSuccessTitle=C\u00f3digo de sucesso
codeErrorTitle=C\u00f3digo de erro\: {0}
displayUnsupported=Tipo de exibi\u00e7\u00e3o solicitado n\u00e3o suportado
browserRequired=Navegador necess\u00e1rio para realizar acesso
browserContinue=Navegador necess\u00e1rio para concluir o login
browserContinuePrompt=Abrir navegador e continuar o login? [s/n]\:
browserContinueAnswer=s
termsTitle=Termos e Condi\u00e7\u00f5es
termsText=
termsPlainText=Termos e condi\u00e7\u00f5es a serem definidos.
recaptchaFailed=Recaptcha Inv\u00e1lido
recaptchaNotConfigured=O recaptcha \u00e9 necess\u00e1rio, mas n\u00e3o foi configurado
consentDenied=Consentimento negado.
noAccount=Novo usu\u00e1rio?
username=Nome de usu\u00e1rio
usernameOrEmail=Nome de usu\u00e1rio ou e-mail
firstName=Primeiro nome
givenName=Primeiro nome
fullName=Nome completo
lastName=Sobrenome
familyName=Sobrenome
email=Endere\u00e7o de e-mail
password=Senha
passwordConfirm=Confirme a senha
passwordNew=Nova senha
passwordNewConfirm=Confirma\u00e7\u00e3o de Nova Senha
rememberMe=Mantenha-me conectado
authenticatorCode=C\u00f3digo autenticador
address=Endere\u00e7o
street=Logradouro
locality=Cidade ou localidade
region=Estado
postal_code=CEP
country=Pa\u00eds
emailVerified=Endere\u00e7o de e-mail verificado
website=P\u00e1gina da web
phoneNumber=N\u00famero de telefone
phoneNumberVerified=N\u00famero de telefone verificado
gender=G\u00eanero
birthday=Data de nascimento
zoneinfo=Zona hor\u00e1ria
gssDelegationCredential=Delega\u00e7\u00e3o de Credenciais GSS
logoutOtherSessions=Sair dos outros dispositivos
profileScopeConsentText=Perfil de usu\u00e1rio
emailScopeConsentText=Endere\u00e7o de e-mail
addressScopeConsentText=Endere\u00e7o
phoneScopeConsentText=N\u00famero de telefone
offlineAccessScopeConsentText=Acesso Offline
samlRoleListScopeConsentText=Meus Perfis de Acesso
rolesScopeConsentText=Perfis de acesso do usu\u00e1rio
restartLoginTooltip=Reiniciar o login
loginTotpIntro=Voc\u00ea precisa configurar um gerador de c\u00f3digo de uso \u00fanico para acessar esta conta
loginTotpStep1=Instale um dos seguintes aplicativos no seu celular\:
loginTotpStep2=Abra o aplicativo e escaneie o c\u00f3digo QR\:
loginTotpStep3=Digite o c\u00f3digo de uso \u00fanico fornecido pelo aplicativo e clique em Ok para concluir a configura\u00e7\u00e3o.
loginTotpStep3DeviceName=Forne\u00e7a um nome de dispositivo para ajud\u00e1-lo a gerenciar seus dispositivos de autentica\u00e7\u00e3o de dois fatores.
loginTotpManualStep2=Abra o aplicativo e digite a chave\:
loginTotpManualStep3=Use os seguintes valores de configura\u00e7\u00e3o se o aplicativo permitir defini-los\:
loginTotpUnableToScan=N\u00e3o foi poss\u00edvel ler o c\u00f3digo QR?
loginTotpScanBarcode=Escanear c\u00f3digo QR?
loginCredential=Credencial
loginOtpOneTime=C\u00f3digo de uso \u00fanico
loginTotpType=Tipo
loginTotpAlgorithm=Algoritmo
loginTotpDigits=D\u00edgitos
loginTotpInterval=Intervalo
loginTotpCounter=Contador
loginTotpDeviceName=Nome do dispositivo
loginTotp.totp=Baseado em tempo
loginTotp.hotp=Baseado em contador
loginChooseAuthenticator=Selecione o m\u00e9todo de login
oauthGrantRequest=Voc\u00ea concede esses privil\u00e9gios de acesso?
inResource=em
emailVerifyInstruction1=Um e-mail com instru\u00e7\u00f5es para verificar o seu endere\u00e7o de e-mail foi enviado para voc\u00ea.
emailVerifyInstruction2=N\u00e3o recebeu um c\u00f3digo de verifica\u00e7\u00e3o em seu e-mail?
emailVerifyInstruction3=para reenviar o e-mail.
emailLinkIdpTitle=Vincular {0}
emailLinkIdp1=Um e-mail com instru\u00e7\u00f5es para vincular a conta {0} {1} com sua conta {2} foi enviado para voc\u00ea.
emailLinkIdp2=N\u00e3o recebeu um c\u00f3digo de verifica\u00e7\u00e3o no e-mail?
emailLinkIdp3=para reenviar o e-mail.
emailLinkIdp4=Se voc\u00ea j\u00e1 verificou o email em outro navegador
emailLinkIdp5=para continuar.
backToLogin=&laquo; Voltar ao Login
emailInstruction=Digite seu nome de usu\u00e1rio ou endere\u00e7o de e-mail e n\u00f3s lhe enviaremos instru\u00e7\u00f5es sobre como criar uma nova senha.
copyCodeInstruction=Por favor, copie o c\u00f3digo e cole-o em seu aplicativo\:
pageExpiredTitle=A p\u00e1gina expirou
pageExpiredMsg1=Para reiniciar o processo de login
pageExpiredMsg2=Para continuar o processo de login
personalInfo=Informa\u00e7\u00f5es Pessoais\:
role_admin=Admininstrador
role_realm-admin=Admininstrador do Dom\u00ednio
role_create-realm=Criar dom\u00ednio
role_create-client=Criar cliente
role_view-realm=Visualizar dom\u00ednio
role_view-users=Visualizar usu\u00e1rios
role_view-applications=Visualizar aplicativos
role_view-clients=Visualizar clientes
role_view-events=Visualizar eventos
role_view-identity-providers=Visualizar provedores de identidade
role_manage-realm=Gerenciar dom\u00ednio
role_manage-users=Gerenciar usu\u00e1rios
role_manage-applications=Gerenciar aplicativos
role_manage-identity-providers=Gerenciar provedores de identidade
role_manage-clients=Gerenciar clientes
role_manage-events=Gerenciar eventos
role_view-profile=Visualizar perfil
role_manage-account=Gerenciar conta
role_manage-account-links=Gerenciar vincula\u00e7\u00f5es de conta
role_read-token=Ler token
role_offline-access=Acesso offline
client_account=Conta
client_account-console=Console da Conta
client_security-admin-console=Console de Administra\u00e7\u00e3o de Seguran\u00e7a
client_admin-cli=CLI de Administra\u00e7\u00e3o
client_realm-management=Gerenciamento de Dom\u00ednio
client_broker=Provedor de Identidade
requiredFields=Campos obrigat\u00f3rios
invalidUserMessage=Nome de usu\u00e1rio ou senha inv\u00e1lida.
invalidUsernameMessage=Nome de usu\u00e1rio inv\u00e1lido.
invalidUsernameOrEmailMessage=Nome de usu\u00e1rio ou endere\u00e7o de e-mail inv\u00e1lido.
invalidPasswordMessage=Senha inv\u00e1lida.
invalidEmailMessage=Endere\u00e7o de e-mail inv\u00e1lido.
accountDisabledMessage=Conta desativada, por favor, contate um administrador.
accountTemporarilyDisabledMessage=Conta temporariamente indispon\u00edvel, por favor, contate um administrador ou tente novamente mais tarde.
expiredCodeMessage=Tempo de login expirado. Por favor, fa\u00e7a login novamente.
expiredActionMessage=A\u00e7\u00e3o expirada. Por favor, continue com o login agora.
expiredActionTokenNoSessionMessage=A\u00e7\u00e3o expirada.
expiredActionTokenSessionExistsMessage=A\u00e7\u00e3o expirada. Por favor, comece novamente.
missingFirstNameMessage=Por favor, informe o primeiro nome.
missingLastNameMessage=Por favor, informe o sobrenome.
missingEmailMessage=Por favor, informe o endere\u00e7o de e-mail.
missingUsernameMessage=Por favor, informe o nome de usu\u00e1rio.
missingPasswordMessage=Por favor, informe a senha.
missingTotpMessage=Por favor, informe o c\u00f3digo de uso \u00fanico.
missingTotpDeviceNameMessage=Por favor, informe o nome do dispositivo.
notMatchPasswordMessage=As senhas n\u00e3o coincidem.
invalidPasswordExistingMessage=Senha atual inv\u00e1lida.
invalidPasswordBlacklistedMessage=Senha inv\u00e1lida, devido a lista de exclus\u00e3o.
invalidPasswordConfirmMessage=Senha de confirma\u00e7\u00e3o n\u00e3o coincide.
invalidTotpMessage=C\u00f3digo de uso \u00fanico inv\u00e1lido.
usernameExistsMessage=Nome de usu\u00e1rio j\u00e1 existe.
emailExistsMessage=Endere\u00e7o de e-mail j\u00e1 existe.
federatedIdentityExistsMessage=Usu\u00e1rio com {0} {1} j\u00e1 existe. Por favor, entre no gerenciamento de conta para vincular a conta.
federatedIdentityUnavailableMessage=Usu\u00e1rio {0} autenticado com o provedor de identidade {1} n\u00e3o existe. Por favor, entre em contato com um administrador.
confirmLinkIdpTitle=Conta j\u00e1 existente
federatedIdentityConfirmLinkMessage=Usu\u00e1rio com {0} {1} j\u00e1 existe. Como voc\u00ea quer continuar?
federatedIdentityConfirmReauthenticateMessage=Autenticar para vincular sua conta com {0}
nestedFirstBrokerFlowMessage=O usu\u00e1rio {0} {1} n\u00e3o est\u00e1 vinculado a nenhum usu\u00e1rio conhecido.
confirmLinkIdpReviewProfile=Revisar informa\u00e7\u00f5es do perfil
confirmLinkIdpContinue=Vincular \u00e0 conta existente
configureTotpMessage=Voc\u00ea precisa configurar seu celular com o autenticador Mobile para ativar sua conta.
updateProfileMessage=Voc\u00ea precisa atualizar o seu perfil de usu\u00e1rio para ativar sua conta.
updatePasswordMessage=Voc\u00ea precisa mudar sua senha para ativar sua conta.
resetPasswordMessage=Voc\u00ea precisa mudar sua senha.
verifyEmailMessage=Voc\u00ea precisa verificar o seu endere\u00e7o de e-mail para ativar sua conta.
linkIdpMessage=Voc\u00ea precisa confirmar o seu endere\u00e7o de e-mail para vincular sua conta com {0}.
emailSentMessage=Voc\u00ea dever\u00e1 receber um e-mail em breve com mais instru\u00e7\u00f5es.
emailSendErrorMessage=Falha ao enviar e-mail, por favor, tente novamente mais tarde.
accountUpdatedMessage=Sua conta foi atualizada.
accountPasswordUpdatedMessage=Sua senha foi atualizada.
delegationCompleteHeader=Autentica\u00e7\u00e3o Bem Sucedida
delegationCompleteMessage=Voc\u00ea pode fechar esta janela do navegador e voltar ao seu aplicativo.
delegationFailedHeader=Falha na Autentica\u00e7\u00e3o
delegationFailedMessage=Voc\u00ea pode fechar esta janela do navegador e voltar ao aplicativo e tentar fazer login novamente.
noAccessMessage=Sem acesso
invalidPasswordMinLengthMessage=Senha inv\u00e1lida\: deve ter pelo menos {0} caracteres.
invalidPasswordMinDigitsMessage=Senha inv\u00e1lida\: deve conter pelo menos {0} n\u00famero(s).
invalidPasswordMinLowerCaseCharsMessage=Senha inv\u00e1lida\: deve conter pelo menos {0} letra(s) min\u00fascula(s).
invalidPasswordMinUpperCaseCharsMessage=Senha inv\u00e1lida\: deve conter pelo menos {0} letra(s) mai\u00fascula(s).
invalidPasswordMinSpecialCharsMessage=Senha inv\u00e1lida\: deve conter pelo menos {0} caractere(s) especial(is).
invalidPasswordNotUsernameMessage=Senha inv\u00e1lida\: n\u00e3o pode ser igual ao nome de usu\u00e1rio
invalidPasswordNotContainsUsernameMessage=Senha inv\u00e1lida\: n\u00e3o pode conter o nome de usu\u00e1rio.
invalidPasswordNotEmailMessage=Senha inv\u00e1lida\: n\u00e3o pode ser igual ao endere\u00e7o de e-mail.
invalidPasswordRegexPatternMessage=Senha inv\u00e1lida\: n\u00e3o corresponde ao(s) padr\u00e3o(\u00f5es) de express\u00e3o regular.
invalidPasswordHistoryMessage=Senha inv\u00e1lida\: n\u00e3o pode ser igual a qualquer uma da(s) \u00faltima(s) {0} senha(s).
invalidPasswordGenericMessage=Senha inv\u00e1lida\: a nova senha n\u00e3o cumpre as pol\u00edticas de senha.
failedToProcessResponseMessage=Falha ao processar a resposta
httpsRequiredMessage=HTTPS necess\u00e1rio
realmNotEnabledMessage=Dom\u00ednio desativado
invalidRequestMessage=Solicita\u00e7\u00e3o inv\u00e1lida
failedLogout=Falha ao sair
unknownLoginRequesterMessage=Solicitante de login desconhecido
loginRequesterNotEnabledMessage=Solicitante de login desativado
bearerOnlyMessage=Aplicativos configurados como Bearer-Only n\u00e3o t\u00eam permiss\u00e3o para iniciar o login pelo navegador
standardFlowDisabledMessage=O cliente n\u00e3o tem permiss\u00e3o para iniciar o login com o response_type informado. O fluxo padr\u00e3o est\u00e1 desabilitado para o cliente.
implicitFlowDisabledMessage=O cliente n\u00e3o tem permiss\u00e3o para iniciar o login com o response_type informado. O fluxo impl\u00edcito est\u00e1 desabilitado para o cliente.
invalidRedirectUriMessage=URI de redirecionamento inv\u00e1lido
unsupportedNameIdFormatMessage=NameIDFormat n\u00e3o suportado
invalidRequesterMessage=Solicitante inv\u00e1lido
registrationNotAllowedMessage=Cadastro n\u00e3o \u00e9 permitido
resetCredentialNotAllowedMessage=Sem permiss\u00e3o de redefini\u00e7\u00e3o de credenciais
permissionNotApprovedMessage=Permiss\u00e3o n\u00e3o aprovada.
noRelayStateInResponseMessage=Sem estado de retransmiss\u00e3o na resposta do provedor de identidade.
insufficientPermissionMessage=Permiss\u00f5es insuficientes para vincular identidades.
couldNotProceedWithAuthenticationRequestMessage=N\u00e3o foi poss\u00edvel proceder com a solicita\u00e7\u00e3o de autentica\u00e7\u00e3o ao provedor de identidade.
couldNotObtainTokenMessage=N\u00e3o foi poss\u00edvel obter token do provedor de identidade.
unexpectedErrorRetrievingTokenMessage=Erro inesperado ao recuperar token do provedor de identidade.
unexpectedErrorHandlingResponseMessage=Erro inesperado ao tratar a resposta do provedor de identidade.
identityProviderAuthenticationFailedMessage=Falha na autentica\u00e7\u00e3o. N\u00e3o foi poss\u00edvel autenticar com o provedor de identidade.
couldNotSendAuthenticationRequestMessage=N\u00e3o foi poss\u00edvel enviar a solicita\u00e7\u00e3o de autentica\u00e7\u00e3o ao provedor de identidade.
unexpectedErrorHandlingRequestMessage=Erro inesperado ao tratar o pedido de autentica\u00e7\u00e3o ao provedor de identidade.
invalidAccessCodeMessage=C\u00f3digo de acesso inv\u00e1lido.
sessionNotActiveMessage=Sess\u00e3o inativa.
invalidCodeMessage=Um erro correu, por favor, fa\u00e7a login novamente atrav\u00e9s da aplica\u00e7\u00e3o.
identityProviderUnexpectedErrorMessage=Erro inesperado durante a autentica\u00e7\u00e3o com o provedor de identidade
identityProviderMissingStateMessage=Par\u00e2metro de estado ausente da resposta do provedor de identidades.
identityProviderNotFoundMessage=N\u00e3o foi poss\u00edvel encontrar um provedor de identidade com o identificador.
identityProviderLinkSuccess=O seu endere\u00e7o de e-mail foi confirmado com sucesso. Por favor, retorne \u00e0 aba original e continue com o login.
staleCodeMessage=Esta p\u00e1gina n\u00e3o \u00e9 mais v\u00e1lida. Por favor, volte \u00e0 aplica\u00e7\u00e3o e fa\u00e7a login novamente
realmSupportsNoCredentialsMessage=O dom\u00ednio n\u00e3o suporta qualquer tipo de credencial.
credentialSetupRequired=N\u00e3o \u00e9 poss\u00edvel fazer o login, a configura\u00e7\u00e3o de credencial \u00e9 necess\u00e1ria.
identityProviderNotUniqueMessage=O dom\u00ednio suporta m\u00faltiplos provedores de identidade. N\u00e3o foi poss\u00edvel determinar qual o provedor de identidade deve ser usado para autentica\u00e7\u00e3o.
emailVerifiedMessage=O seu endere\u00e7o de e-mail foi confirmado.
staleEmailVerificationLink=O link em que voc\u00ea clicou \u00e9 um link antigo e n\u00e3o \u00e9 mais v\u00e1lido. Talvez voc\u00ea j\u00e1 tenha confirmado o seu endere\u00e7o de e-mail.
identityProviderAlreadyLinkedMessage=A conta retornada do {0} j\u00e1 est\u00e1 vinculada a outro usu\u00e1rio.
confirmAccountLinking=Confirme o vincula\u00e7\u00e3o da conta {0} do provedor de identidade {1} \u00e0 sua conta.
confirmEmailAddressVerification=Confirme a validade do endere\u00e7o de e-mail {0}.
confirmExecutionOfActions=Execute a(s) seguinte(s) a\u00e7\u00e3o(\u00f5es)
backToApplication=&laquo; Voltar para o aplicativo
missingParameterMessage=Par\u00e2metros ausentes\: {0}
clientNotFoundMessage=Cliente n\u00e3o encontrado.
clientDisabledMessage=Cliente desativado.
invalidParameterMessage=Par\u00e2metro inv\u00e1lido\: {0}
alreadyLoggedIn=Voc\u00ea j\u00e1 est\u00e1 logado.
differentUserAuthenticated=Voc\u00ea j\u00e1 est\u00e1 autenticado como outro usu\u00e1rio ''{0}'' nesta sess\u00e3o. Por favor, finalize a sess\u00e3o primeiro.
brokerLinkingSessionExpired=A vincul\u00e7\u00e3o de conta do provedor de identidade foi solicitado, mas a sess\u00e3o atual n\u00e3o \u00e9 mais v\u00e1lida.
proceedWithAction=\u00bb Clique aqui para continuar
requiredAction.CONFIGURE_TOTP=Configurar Autentica\u00e7\u00e3o de Dois Fatores
requiredAction.TERMS_AND_CONDITIONS=Termos e Condi\u00e7\u00f5es
requiredAction.UPDATE_PASSWORD=Atualizar Senha
requiredAction.UPDATE_PROFILE=Atualizar Perfil
requiredAction.VERIFY_EMAIL=Verificar Endere\u00e7o de E-mail
doX509Login=Voc\u00ea ser\u00e1 logado como\:
clientCertificate=Certificado X509 do cliente\:
noCertificate=[Sem Certificado]
pageNotFound=P\u00e1gina n\u00e3o encontrada
internalServerError=Ocorreu um erro interno no servidor
console-username=Nome de usu\u00e1rio\:
console-password=Senha\:
console-otp=C\u00f3digo de uso \u00fanico\:
console-new-password=Nova Senha\:
console-confirm-password=Confirma\u00e7\u00e3o de Senha\:
console-update-password=Voc\u00ea precisa atualizar a sua senha.
console-verify-email=Voc\u00ea precisa verificar o seu endere\u00e7o de e-mail. Enviamos um e-mail para {0} que cont\u00e9m um c\u00f3digo de verifica\u00e7\u00e3o. Digite o c\u00f3digo enviado no campo abaixo.
console-email-code=C\u00f3digo do e-mail\:
console-accept-terms=Aceita os Termos? [s/n]\:
console-accept=s
openshift.scope.user_info=Informa\u00e7\u00f5es do usu\u00e1rio
openshift.scope.user_check-access=Informa\u00e7\u00f5es de acesso do usu\u00e1rio
openshift.scope.user_full=Acesso Completo
openshift.scope.list-projects=Listar projetos
saml.post-form.title=Redirecionamento de Autentica\u00e7\u00e3o
saml.post-form.message=Redirecionando... Por favor, aguarde.
saml.post-form.js-disabled=O JavaScript est\u00e1 desabilitado. \u00c9 altamente recomend\u00e1vel habilit\u00e1-lo. Clique no bot\u00e3o abaixo para continuar.
otp-display-name=Aplicativo Autenticador
otp-help-text=Insira o c\u00f3digo de verifica\u00e7\u00e3o do aplicativo autenticador.
password-display-name=Senha
password-help-text=Fa\u00e7a o login digitando sua senha.
auth-username-form-display-name=Nome de usu\u00e1rio
auth-username-form-help-text=Fa\u00e7a o login digitando seu nome de usu\u00e1rio.
auth-username-password-form-display-name=Nome de usu\u00e1rio e senha
auth-username-password-form-help-text=Fa\u00e7a o login digitando seu nome de usu\u00e1rio e senha.
webauthn-display-name=Chave de Seguran\u00e7a
webauthn-help-text=Use sua chave de seguran\u00e7a para fazer login.
webauthn-passwordless-display-name=Chave de Seguran\u00e7a
webauthn-passwordless-help-text=Use sua chave de seguran\u00e7a para fazer login sem senha.
webauthn-login-title=Login com Chave de Seguran\u00e7a
webauthn-registration-title=Registrar Chave de Seguran\u00e7a
webauthn-available-authenticators=Autenticadores dispon\u00edveis
webauthn-unsupported-browser-text=WebAuthn n\u00e3o \u00e9 suportada pelo seu navegador. Tente outro navegador ou entre em contato com um administrador.
webauthn-error-title=Erro de Chave de Seguran\u00e7a
webauthn-error-registration=Falha ao registrar sua Chave de Seguran\u00e7a.
webauthn-error-api-get=Falha ao autenticar usando a Chave de Seguran\u00e7a.
webauthn-error-different-user=O primeiro usu\u00e1rio autenticado n\u00e3o corresponde \u00e0quele autenticado pela Chave de Seguran\u00e7a.
webauthn-error-auth-verification=O resultado da autentica\u00e7\u00e3o da Chave de Seguran\u00e7a \u00e9 inv\u00e1lido.<br /> {0}
webauthn-error-register-verification=O resultado do registro da Chave de Seguran\u00e7a \u00e9 inv\u00e1lido.<br /> {0}
webauthn-error-user-not-found=Usu\u00e1rio desconhecido autenticado pela Chave de Seguran\u00e7a.
identity-provider-redirector=Conecte-se com outro Provedor de Identidade
identity-provider-login-label=Ou entre com
finalDeletionConfirmation=Se voc\u00ea apagar a sua conta, ela n\u00e3o poder\u00e1 ser recuperada. Para manter a sua conta, clique em Cancelar.
irreversibleAction=Esta a\u00e7\u00e3o \u00e9 irrevers\u00edvel
deleteAccountConfirm=Confirma\u00e7\u00e3o de descadastramento
deletingImplies=Apagar a sua conta implica em\:
errasingData=Remover todos os seus dados
loggingOutImmediately=Sair da aplica\u00e7\u00e3o imediatamente
accountUnusable=Qualquer uso subsequente da aplica\u00e7\u00e3o n\u00e3o ser\u00e1 poss\u00edvel com esta conta
userDeletedSuccessfully=Usu\u00e1rio exclu\u00eddo com sucesso
readOnlyUsernameMessage=Voc\u00ea n\u00e3o pode atualizar o seu nome de usu\u00e1rio, uma vez que \u00e9 apenas de leitura.
frontchannel-logout.title=Saindo
frontchannel-logout.message=Voc\u00ea est\u00e1 saindo dos seguintes aplicativos
logoutConfirmTitle=Saindo
logoutConfirmHeader=Voc\u00ea realmente deseja sair?
doLogout=Sair
shouldBeEqual={0} deve ser igual a {1}
shouldBeDifferent={0} deve ser diferente de {1}
shouldMatchPattern=O padr\u00e3o deve corresponder\: `/{0}/`
mustBeAnInteger=Deve ser um n\u00famero inteiro
notAValidOption=N\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida
selectAnOption=Selecione uma op\u00e7\u00e3o
remove=Remover
addValue=Adicionar valor
languages=Idiomas

View File

@ -0,0 +1,446 @@
doLogIn=Entrar
doRegister=Criar conta
doRegisterSecurityKey=Criar conta
doCancel=Cancelar
doSubmit=Confirmar
doBack=Voltar
doYes=Sim
doNo=N\u00e3o
doContinue=Continuar
doIgnore=Ignorar
doAccept=Aceitar
doDecline=Rejeitar
doForgotPassword=Esqueceu-se da sua palavra-passe?
doClickHere=Clique aqui
doImpersonate=Personificar
doTryAgain=Tente novamente
doTryAnotherWay=Tente outra forma
doConfirmDelete=Confirmar apagar conta
errorDeletingAccount=Falha ao apagar conta
deletingAccountForbidden=N\u00e3o tem permiss\u00f5es para apagar a sua pr\u00f3pria conta, entre em contacto com um administrador.
kerberosNotConfigured=Kerberos N\u00e3o Configurado
kerberosNotConfiguredTitle=Kerberos N\u00e3o Configurado
bypassKerberosDetail=N\u00e3o possui uma sess\u00e3o Kerberos ou o seu navegador n\u00e3o est\u00e1 configurado para usar o acesso do Kerberos. Por favor, clique em continuar para fazer o login atrav\u00e9s de outros meios
kerberosNotSetUp=Kerberos n\u00e3o est\u00e1 configurado. N\u00e3o pode aceder a aplica\u00e7\u00e3o.
registerTitle=Registe-se
loginAccountTitle=Entrar na sua conta
loginTitle=Entrar em {0}
loginTitleHtml={0}
impersonateTitle={0} Personificar utilizador
impersonateTitleHtml=<strong>{0}</strong> Personificar utilizador
realmChoice=Dom\u00ednio
unknownUser=Utilizador desconhecido
loginTotpTitle=Configura\u00e7\u00e3o do autenticador m\u00f3vel
loginProfileTitle=Atualizar Informa\u00e7\u00f5es da Conta
loginIdpReviewProfileTitle=Atualizar informa\u00e7\u00f5es da conta
loginTimeout=Demorou muito tempo para entrar. Por favor, recomece o processo de login.
reauthenticate=Autentique-se novamente para continuar
oauthGrantTitle=Conceder acesso a {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Certifique-se de confiar em {0} aprendendo como {0} lidar\u00e1 com os seus dados.
oauthGrantReview=Pode rever o
oauthGrantTos=termos de servi\u00e7o.
oauthGrantPolicy=pol\u00edtica de privacidade.
errorTitle=Lamentamos...
errorTitleHtml=<strong>Lamentamos</strong> ...
emailVerifyTitle=Verifica\u00e7\u00e3o do endere\u00e7o de e-mail
emailForgotTitle=Esqueceu-se da sua palavra-passe?
updateEmailTitle=Atualizar e-mail
emailUpdateConfirmationSentTitle=E-mail de confirma\u00e7\u00e3o enviado
emailUpdateConfirmationSent=Um e-mail de confirma\u00e7\u00e3o foi enviado para {0}. Deve seguir as instru\u00e7\u00f5es do primeiro para concluir a atualiza\u00e7\u00e3o do e-mail.
emailUpdatedTitle=E-mail atualizado.
emailUpdated=O e-mail da conta foi atualizado com sucesso para {0}.
updatePasswordTitle=Atualizar palavra-passe
codeSuccessTitle=C\u00f3digo de sucesso
codeErrorTitle=C\u00f3digo de erro\: {0}
displayUnsupported=Tipo de exibi\u00e7\u00e3o solicitado n\u00e3o suportado
browserRequired=Navegador necess\u00e1rio para realizar acesso
browserContinue=Navegador necess\u00e1rio para concluir o login
browserContinuePrompt=Abrir navegador e continuar o login? [s/n]\:
browserContinueAnswer=s
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=Interno
unknown=Desconhecido
termsTitle=Termos e Condi\u00e7\u00f5es
termsText=
termsPlainText=Termos e condi\u00e7\u00f5es a serem definidos.
termsAcceptanceRequired=Tem que concordar com os termos e condi\u00e7\u00f5es.
acceptTerms=Concordo com os termos e condi\u00e7\u00f5es
recaptchaFailed=Recaptcha Inv\u00e1lido
recaptchaNotConfigured=O recaptcha \u00e9 necess\u00e1rio, mas n\u00e3o foi configurado
consentDenied=Consentimento negado.
noAccount=Novo utilizador?
username=Nome de utilizador
usernameOrEmail=Nome de utilizador ou e-mail
firstName=Nome
givenName=Nome
fullName=Nome completo
lastName=Apelido
familyName=Apelido
email=Endere\u00e7o de e-mail
password=Palavra-passe
passwordConfirm=Confirme a palavra-passe
passwordNew=Nova palavra-passe
passwordNewConfirm=Confirma\u00e7\u00e3o da nova palavra-passe
hidePassword=Esconder palavra-passe
showPassword=Mostrar palavra-passe
rememberMe=Lembre-se de mim
authenticatorCode=C\u00f3digo autenticador
address=Endere\u00e7o
street=Rua
locality=Cidade ou localidade
region=Distrito
postal_code=C\u00f3digo Postal
country=Pa\u00eds
emailVerified=Endere\u00e7o de e-mail verificado
website=P\u00e1gina da web
phoneNumber=N\u00famero de telefone
phoneNumberVerified=N\u00famero de telefone verificado
gender=G\u00e9nero
birthday=Data de nascimento
zoneinfo=Zona hor\u00e1ria
gssDelegationCredential=Delega\u00e7\u00e3o de Credenciais GSS
logoutOtherSessions=Sair dos outros dispositivos
profileScopeConsentText=Perfil de utilizador
emailScopeConsentText=Endere\u00e7o de e-mail
addressScopeConsentText=Endere\u00e7o
phoneScopeConsentText=N\u00famero de telefone
offlineAccessScopeConsentText=Acesso Offline
samlRoleListScopeConsentText=Os meus Perfis de Acesso
rolesScopeConsentText=Perfis de acesso do utilizador
restartLoginTooltip=Reiniciar o login
loginTotpIntro=Precisa configurar um gerador de c\u00f3digo de uso \u00fanico para aceder a esta conta
loginTotpStep1=Instale um das seguintes aplica\u00e7\u00f5es no seu telem\u00f3vel\:
loginTotpStep2=Abra a aplica\u00e7\u00e3o e leia o c\u00f3digo QR\:
loginTotpStep3=Digite o c\u00f3digo de uso \u00fanico fornecido pela aplica\u00e7\u00e3o e clique em Ok para concluir a configura\u00e7\u00e3o.
loginTotpStep3DeviceName=Forne\u00e7a um nome de dispositivo para ajud\u00e1-lo a gerir os seus dispositivos de autentica\u00e7\u00e3o de dois fatores.
loginTotpManualStep2=Abra a aplica\u00e7\u00e3o e digite a chave\:
loginTotpManualStep3=Use os seguintes valores de configura\u00e7\u00e3o se a aplica\u00e7\u00e3o permitir defini-los\:
loginTotpUnableToScan=N\u00e3o foi poss\u00edvel ler o c\u00f3digo QR?
loginTotpScanBarcode=Ler c\u00f3digo QR?
loginCredential=Credencial
loginOtpOneTime=C\u00f3digo de uso \u00fanico
loginTotpType=Tipo
loginTotpAlgorithm=Algoritmo
loginTotpDigits=D\u00edgitos
loginTotpInterval=Intervalo
loginTotpCounter=Contador
loginTotpDeviceName=Nome do dispositivo
loginTotp.totp=Baseado em tempo
loginTotp.hotp=Baseado em contador
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=Selecione o m\u00e9todo de login
oauthGrantRequest=Concede esses privil\u00e9gios de acesso?
inResource=em
oauth2DeviceVerificationTitle=Login do dispositivo
verifyOAuth2DeviceUserCode=Insira o c\u00f3digo fornecido pelo seu dispositivo e clique em Confirmar
oauth2DeviceInvalidUserCodeMessage=C\u00f3digo inv\u00e1lido, tente novamente.
oauth2DeviceExpiredUserCodeMessage=O c\u00f3digo expirou. Por favor, volte para o seu dispositivo e tente novamente.
oauth2DeviceVerificationCompleteHeader=Login do dispositivo bem-sucedido
oauth2DeviceVerificationCompleteMessage=Pode fechar esta janela do navegador e voltar ao seu dispositivo.
oauth2DeviceVerificationFailedHeader=Falha no login do dispositivo
oauth2DeviceVerificationFailedMessage=Pode fechar esta janela do navegador, voltar ao seu dispositivo e tentar novamente.
oauth2DeviceConsentDeniedMessage=Consentimento negado para conectar o dispositivo.
oauth2DeviceAuthorizationGrantDisabledMessage=O cliente n\u00e3o tem permiss\u00e3o para iniciar a concess\u00e3o de autoriza\u00e7\u00e3o de dispositivo OAuth 2.0. O fluxo \u00e9 desativado para o cliente.
emailVerifyInstruction1=Foi-lhe enviado um e-mail com instru\u00e7\u00f5es para verificar o seu endere\u00e7o de e-mail.
emailVerifyInstruction2=N\u00e3o recebeu um c\u00f3digo de verifica\u00e7\u00e3o no seu e-mail?
emailVerifyInstruction3=para reenviar o e-mail.
emailLinkIdpTitle=Vincular {0}
emailLinkIdp1=Foi-lhe enviado um e-mail com instru\u00e7\u00f5es para vincular a conta {0} {1} com a sua conta {2}.
emailLinkIdp2=N\u00e3o recebeu um c\u00f3digo de verifica\u00e7\u00e3o no e-mail?
emailLinkIdp3=para reenviar o e-mail.
emailLinkIdp4=Se j\u00e1 verificou o e-mail em outro navegador
emailLinkIdp5=para continuar.
backToLogin=&laquo; Voltar ao Login
emailInstruction=Insira o seu nome de utilizador ou endere\u00e7o de e-mail e enviaremos instru\u00e7\u00f5es sobre como definir uma nova palavra-passe.
emailInstructionUsername=Insira o seu nome de utilizador e enviaremos instru\u00e7\u00f5es sobre como criar uma palavra-passe.
copyCodeInstruction=Por favor, copie o c\u00f3digo e cole na sua aplica\u00e7\u00e3o\:
pageExpiredTitle=A p\u00e1gina expirou
pageExpiredMsg1=Para reiniciar o processo de login
pageExpiredMsg2=Para continuar o processo de login
personalInfo=Informa\u00e7\u00f5es Pessoais\:
role_admin=Admininstrador
role_realm-admin=Admininstrador do Dom\u00ednio
role_create-realm=Criar dom\u00ednio
role_create-client=Criar cliente
role_view-realm=Visualizar dom\u00ednio
role_view-users=Visualizar utilizadores
role_view-applications=Visualizar aplica\u00e7\u00f5es
role_view-clients=Visualizar clientes
role_view-events=Visualizar eventos
role_view-identity-providers=Visualizar provedores de identidade
role_manage-realm=Gerir dom\u00ednio
role_manage-users=Gerir utilizadores
role_manage-applications=Gerir aplica\u00e7\u00f5es
role_manage-identity-providers=Gerir provedores de identidade
role_manage-clients=Gerir clientes
role_manage-events=Gerir eventos
role_view-profile=Visualizar perfil
role_manage-account=Gerir conta
role_manage-account-links=Gerir vincula\u00e7\u00f5es de conta
role_read-token=Ler token
role_offline-access=Acesso offline
client_account=Conta
client_account-console=Consola da Conta
client_security-admin-console=Consola de Administra\u00e7\u00e3o de Seguran\u00e7a
client_admin-cli=CLI de Administra\u00e7\u00e3o
client_realm-management=Gerir de Dom\u00ednio
client_broker=Provedor de Identidade
requiredFields=Campos obrigat\u00f3rios
invalidUserMessage=Nome de utilizador ou palavra-passe inv\u00e1lida.
invalidUsernameMessage=Nome de utilizador inv\u00e1lido.
invalidUsernameOrEmailMessage=Nome de utilizador ou endere\u00e7o de e-mail inv\u00e1lido.
invalidPasswordMessage=Palavra-passe inv\u00e1lida.
invalidEmailMessage=Endere\u00e7o de e-mail inv\u00e1lido.
accountDisabledMessage=Conta desativada, por favor, contacte um administrador.
accountTemporarilyDisabledMessage=Conta temporariamente indispon\u00edvel, por favor, contacte um administrador ou tente novamente mais tarde.
expiredCodeMessage=Tempo de login expirado. Por favor, fa\u00e7a login novamente.
expiredActionMessage=A\u00e7\u00e3o expirada. Por favor, continue com o login agora.
expiredActionTokenNoSessionMessage=A\u00e7\u00e3o expirada.
expiredActionTokenSessionExistsMessage=A\u00e7\u00e3o expirada. Por favor, comece novamente.
sessionLimitExceeded=H\u00e1 demasiadas sess\u00f5es
missingFirstNameMessage=Por favor, insira o nome.
missingLastNameMessage=Por favor, insira o apelido.
missingEmailMessage=Por favor, insira o endere\u00e7o de e-mail.
missingUsernameMessage=Por favor, insira o nome de utilizador.
missingPasswordMessage=Por favor, insira a palavra-passe.
missingTotpMessage=Por favor, insira o c\u00f3digo de uso \u00fanico.
missingTotpDeviceNameMessage=Por favor, insira o nome do dispositivo.
notMatchPasswordMessage=As palavras-passes n\u00e3o coincidem.
error-invalid-value=Valor inv\u00e1lido.
error-invalid-blank=Especifique o valor.
error-empty=Especifique o valor.
error-invalid-length=O tamanho deve estar entre {1} e {2}.
error-invalid-length-too-short=O tamanho m\u00ednimo \u00e9 {1}.
error-invalid-length-too-long=O tamanho m\u00e1ximo \u00e9 {2}.
error-invalid-email=Endere\u00e7o de e-mail inv\u00e1lido.
error-invalid-number=N\u00famero inv\u00e1lido.
error-number-out-of-range=O n\u00famero deve estar entre {1} e {2}.
error-number-out-of-range-too-small=O n\u00famero deve ter um valor m\u00ednimo de {1}.
error-number-out-of-range-too-big=O n\u00famero deve ter o valor m\u00e1ximo de {2}.
error-pattern-no-match=Valor inv\u00e1lido.
error-invalid-uri=URL inv\u00e1lido.
error-invalid-uri-scheme=Esquema de URL inv\u00e1lido.
error-invalid-uri-fragment=Fragmento de URL inv\u00e1lido.
error-user-attribute-required=Especifique este campo.
error-invalid-date=Data inv\u00e1lida.
error-user-attribute-read-only=Este campo \u00e9 s\u00f3 de leitura.
error-username-invalid-character=O valor cont\u00e9m caracteres inv\u00e1lidos.
error-person-name-invalid-character=O valor cont\u00e9m caracteres inv\u00e1lidos.
error-reset-otp-missing-id=Por favor, escolha uma configura\u00e7\u00e3o de dois fatores.
invalidPasswordExistingMessage=Palavra-passe atual inv\u00e1lida.
invalidPasswordBlacklistedMessage=Palavra-passe inv\u00e1lida, devido \u00e0 lista de exclus\u00e3o.
invalidPasswordConfirmMessage=Palavra-passe de confirma\u00e7\u00e3o n\u00e3o coincide.
invalidTotpMessage=C\u00f3digo de uso \u00fanico inv\u00e1lido.
usernameExistsMessage=Nome de utilizador j\u00e1 existe.
emailExistsMessage=Endere\u00e7o de e-mail j\u00e1 existe.
federatedIdentityExistsMessage=Utilizador com {0} {1} j\u00e1 existe. Por favor, entre no gestor de conta para vincular a conta.
federatedIdentityUnavailableMessage=Utilizador {0} autenticado com o provedor de identidade {1} n\u00e3o existe. Por favor, entre em contacto com um administrador.
federatedIdentityUnmatchedEssentialClaimMessage=O token de ID emitido pelo provedor de identidade n\u00e3o corresponde \u00e0 declara\u00e7\u00e3o essencial configurada. Por favor, entre em contacto com um administrador.
confirmLinkIdpTitle=Conta j\u00e1 existente
federatedIdentityConfirmLinkMessage=Utilizador com {0} {1} j\u00e1 existe. Como quer continuar?
federatedIdentityConfirmReauthenticateMessage=Autenticar para vincular a sua conta com {0}
nestedFirstBrokerFlowMessage=O utilizador {0} {1} n\u00e3o est\u00e1 vinculado a nenhum utilizador conhecido.
confirmLinkIdpReviewProfile=Rever informa\u00e7\u00f5es do perfil
confirmLinkIdpContinue=Vincular \u00e0 conta existente
configureTotpMessage=Precisa configurar o seu telem\u00f3vel com o autenticador para ativar a sua conta.
configureBackupCodesMessage=Precisa configurar c\u00f3digos de seguran\u00e7a para ativar a sua conta.
updateProfileMessage=Precisa atualizar o seu perfil de utilizador para ativar a sua conta.
updatePasswordMessage=Precisa mudar a sua palavra-passe para ativar a sua conta.
updateEmailMessage=Precisa atualizar o seu endere\u00e7o de e-mail para ativar a sua conta.
resetPasswordMessage=Precisa mudar a sua palavra-passe.
verifyEmailMessage=Precisa verificar o seu endere\u00e7o de e-mail para ativar a sua conta.
linkIdpMessage=Precisa confirmar o seu endere\u00e7o de e-mail para vincular a sua conta com {0}.
emailSentMessage=Dever\u00e1 receber um e-mail em breve com mais instru\u00e7\u00f5es.
emailSendErrorMessage=Falha ao enviar e-mail, por favor, tente novamente mais tarde.
accountUpdatedMessage=A sua conta foi atualizada.
accountPasswordUpdatedMessage=A sua palavra-passe foi atualizada.
delegationCompleteHeader=Autentica\u00e7\u00e3o Bem Sucedida
delegationCompleteMessage=Pode fechar esta janela do navegador e voltar \u00e0 aplica\u00e7\u00e3o.
delegationFailedHeader=Falha na Autentica\u00e7\u00e3o
delegationFailedMessage=Pode fechar esta janela do navegador e voltar \u00e0 aplica\u00e7\u00e3o e tentar fazer login novamente.
noAccessMessage=Sem acesso
invalidPasswordMinLengthMessage=Palavra-passe inv\u00e1lida\: deve ter pelo menos {0} caracteres.
invalidPasswordMaxLengthMessage=Palavra-passe inv\u00e1lida\: deve ter no m\u00e1ximo {0} caracteres.
invalidPasswordMinDigitsMessage=Palavra-passe inv\u00e1lida\: deve conter pelo menos {0} n\u00famero(s).
invalidPasswordMinLowerCaseCharsMessage=Palavra-passe inv\u00e1lida\: deve conter pelo menos {0} letra(s) min\u00fascula(s).
invalidPasswordMinUpperCaseCharsMessage=Palavra-passe inv\u00e1lida\: deve conter pelo menos {0} letra(s) mai\u00fascula(s).
invalidPasswordMinSpecialCharsMessage=Palavra-passe inv\u00e1lida\: deve conter pelo menos {0} caractere(s) especial(is).
invalidPasswordNotUsernameMessage=Palavra-passe inv\u00e1lida\: n\u00e3o pode ser igual ao nome de utilizador
invalidPasswordNotEmailMessage=Palavra-passe inv\u00e1lida\: n\u00e3o pode ser igual ao endere\u00e7o de e-mail.
invalidPasswordRegexPatternMessage=Palavra-passe inv\u00e1lida\: n\u00e3o corresponde ao(s) padr\u00e3o(\u00f5es) de express\u00e3o regular.
invalidPasswordHistoryMessage=Palavra-passe inv\u00e1lida\: n\u00e3o pode ser igual a qualquer uma da(s) \u00faltima(s) {0} palavra-passe(s).
invalidPasswordGenericMessage=Palavra-passe inv\u00e1lida\: a nova palavra-passe n\u00e3o cumpre as pol\u00edticas de palavra-passe.
failedToProcessResponseMessage=Falha ao processar a resposta
httpsRequiredMessage=HTTPS necess\u00e1rio
realmNotEnabledMessage=Dom\u00ednio desativado
invalidRequestMessage=Pedido inv\u00e1lido
successLogout=A sua sess\u00e3o foi terminada
failedLogout=Falha ao sair
unknownLoginRequesterMessage=Solicitante de login desconhecido
loginRequesterNotEnabledMessage=Solicitante de login desativado
bearerOnlyMessage=Aplica\u00e7\u00f5es configuradas como Bearer-Only n\u00e3o t\u00eam permiss\u00e3o para iniciar o login pelo navegador
standardFlowDisabledMessage=O cliente n\u00e3o tem permiss\u00e3o para iniciar o login com o response_type definido. O fluxo padr\u00e3o est\u00e1 desativado para o cliente.
implicitFlowDisabledMessage=O cliente n\u00e3o tem permiss\u00e3o para iniciar o login com o response_type definido. O fluxo impl\u00edcito est\u00e1 desativado para o cliente.
invalidRedirectUriMessage=URI de redirecionamento inv\u00e1lido
unsupportedNameIdFormatMessage=NameIDFormat n\u00e3o suportado
invalidRequesterMessage=Solicitante inv\u00e1lido
registrationNotAllowedMessage=Registo n\u00e3o \u00e9 permitido
resetCredentialNotAllowedMessage=Sem permiss\u00e3o de redefini\u00e7\u00e3o de credenciais
permissionNotApprovedMessage=Permiss\u00e3o n\u00e3o aprovada.
noRelayStateInResponseMessage=Sem estado de retransmiss\u00e3o na resposta do provedor de identidade.
insufficientPermissionMessage=Permiss\u00f5es insuficientes para vincular identidades.
couldNotProceedWithAuthenticationRequestMessage=N\u00e3o foi poss\u00edvel proceder com a solicita\u00e7\u00e3o de autentica\u00e7\u00e3o ao provedor de identidade.
couldNotObtainTokenMessage=N\u00e3o foi poss\u00edvel obter token do provedor de identidade.
unexpectedErrorRetrievingTokenMessage=Erro inesperado ao recuperar token do provedor de identidade.
unexpectedErrorHandlingResponseMessage=Erro inesperado ao tratar a resposta do provedor de identidade.
identityProviderAuthenticationFailedMessage=Falha na autentica\u00e7\u00e3o. N\u00e3o foi poss\u00edvel autenticar com o provedor de identidade.
couldNotSendAuthenticationRequestMessage=N\u00e3o foi poss\u00edvel enviar a solicita\u00e7\u00e3o de autentica\u00e7\u00e3o ao provedor de identidade.
unexpectedErrorHandlingRequestMessage=Erro inesperado ao tratar o pedido de autentica\u00e7\u00e3o ao provedor de identidade.
invalidAccessCodeMessage=C\u00f3digo de acesso inv\u00e1lido.
sessionNotActiveMessage=Sess\u00e3o inativa.
invalidCodeMessage=Um erro correu, por favor, fa\u00e7a login novamente atrav\u00e9s da aplica\u00e7\u00e3o.
cookieNotFoundMessage=Cookie n\u00e3o encontrado. Certifique-se de que os cookies est\u00e3o ativos no seu navegador.
insufficientLevelOfAuthentication=O n\u00edvel de autentica\u00e7\u00e3o solicitado n\u00e3o foi satisfeito.
identityProviderUnexpectedErrorMessage=Erro inesperado durante a autentica\u00e7\u00e3o com o provedor de identidade
identityProviderMissingStateMessage=Par\u00e2metro de estado ausente na resposta do provedor de identidades.
identityProviderMissingCodeOrErrorMessage=C\u00f3digo ausente ou par\u00e2metro de erro na resposta do provedor de identidade.
identityProviderInvalidResponseMessage=Resposta inv\u00e1lida do provedor de identidade.
identityProviderInvalidSignatureMessage=Assinatura inv\u00e1lida na resposta do provedor de identidade.
identityProviderNotFoundMessage=N\u00e3o foi poss\u00edvel encontrar um provedor de identidade com o identificador.
identityProviderLinkSuccess=O seu endere\u00e7o de e-mail foi confirmado com sucesso. Por favor, retorne \u00e0 aba original e continue com o login.
staleCodeMessage=Esta p\u00e1gina n\u00e3o \u00e9 mais v\u00e1lida. Por favor, volte \u00e0 aplica\u00e7\u00e3o e fa\u00e7a login novamente
realmSupportsNoCredentialsMessage=O dom\u00ednio n\u00e3o suporta nenhum tipo de credencial.
credentialSetupRequired=N\u00e3o \u00e9 poss\u00edvel fazer o login, a configura\u00e7\u00e3o de credencial \u00e9 necess\u00e1ria.
identityProviderNotUniqueMessage=O dom\u00ednio suporta m\u00faltiplos provedores de identidade. N\u00e3o foi poss\u00edvel determinar qual o provedor de identidade deve ser usado para autentica\u00e7\u00e3o.
emailVerifiedMessage=O seu endere\u00e7o de e-mail foi confirmado.
emailVerifiedAlreadyMessage=O seu endere\u00e7o de e-mail j\u00e1 foi confirmado.
staleEmailVerificationLink=A liga\u00e7\u00e3o em que clicou \u00e9 uma liga\u00e7\u00e3o antiga e est\u00e1 inv\u00e1lida. Talvez j\u00e1 tenha confirmado o seu endere\u00e7o de e-mail.
identityProviderAlreadyLinkedMessage=A conta retornada do {0} j\u00e1 est\u00e1 vinculada a outro utilizador.
confirmAccountLinking=Confirme a vincula\u00e7\u00e3o da conta {0} do provedor de identidade {1} \u00e0 sua conta.
confirmEmailAddressVerification=Confirme a validade do endere\u00e7o de e-mail {0}.
confirmExecutionOfActions=Execute a(s) seguinte(s) a\u00e7\u00e3o(\u00f5es)
backToApplication=&laquo; Voltar para a aplica\u00e7\u00e3o
missingParameterMessage=Par\u00e2metros ausentes\: {0}
clientNotFoundMessage=Cliente n\u00e3o encontrado.
clientDisabledMessage=Cliente desativado.
invalidParameterMessage=Par\u00e2metro inv\u00e1lido\: {0}
alreadyLoggedIn=J\u00e1 est\u00e1 logado.
differentUserAuthenticated=J\u00e1 est\u00e1 autenticado como outro utilizador ''{0}'' nesta sess\u00e3o. Por favor, finalize a sess\u00e3o primeiro.
brokerLinkingSessionExpired=A vincul\u00e7\u00e3o de conta do provedor de identidade foi solicitado, mas a sess\u00e3o atual n\u00e3o \u00e9 mais v\u00e1lida.
proceedWithAction=&raquo; Clique aqui para continuar
acrNotFulfilled=Requisitos de autentica\u00e7\u00e3o n\u00e3o cumpridos
requiredAction.CONFIGURE_TOTP=Configurar Autentica\u00e7\u00e3o de Dois Fatores
requiredAction.TERMS_AND_CONDITIONS=Termos e Condi\u00e7\u00f5es
requiredAction.UPDATE_PASSWORD=Atualizar Palavra-passe
requiredAction.UPDATE_PROFILE=Atualizar Perfil
requiredAction.VERIFY_EMAIL=Verificar Endere\u00e7o de E-mail
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Gerar c\u00f3digos de recupera\u00e7\u00e3o
requiredAction.webauthn-register-passwordless=Webauthn Registe-se sem palavra-passe
invalidTokenRequiredActions=As a\u00e7\u00f5es necess\u00e1rias inclu\u00eddas na liga\u00e7\u00e3o s\u00e3o inv\u00e1lidas
doX509Login=Ser\u00e1 logado como\:
clientCertificate=Certificado X509 do cliente\:
noCertificate=[Sem Certificado]
pageNotFound=P\u00e1gina n\u00e3o encontrada
internalServerError=Ocorreu um erro interno no servidor
console-username=Nome de utilizador\:
console-password=Palavra-passe\:
console-otp=C\u00f3digo de uso \u00fanico\:
console-new-password=Nova Palavra-passe\:
console-confirm-password=Confirma\u00e7\u00e3o de Palavra-passe\:
console-update-password=Precisa atualizar a sua palavra-passe.
console-verify-email=Precisa verificar o seu endere\u00e7o de e-mail. Envi\u00e1mos um e-mail para {0} que cont\u00e9m um c\u00f3digo de verifica\u00e7\u00e3o. Digite o c\u00f3digo enviado no campo abaixo.
console-email-code=C\u00f3digo do e-mail\:
console-accept-terms=Aceita os Termos? [s/n]\:
console-accept=s
openshift.scope.user_info=Informa\u00e7\u00f5es do utilizador
openshift.scope.user_check-access=Informa\u00e7\u00f5es de acesso do utilizador
openshift.scope.user_full=Acesso Completo
openshift.scope.list-projects=Listar projetos
saml.post-form.title=Redirecionamento de Autentica\u00e7\u00e3o
saml.post-form.message=Redirecionando... Por favor, aguarde.
saml.post-form.js-disabled=O JavaScript est\u00e1 desativado. \u00c9 altamente recomend\u00e1vel ativ\u00e1-lo. Clique no bot\u00e3o abaixo para continuar.
saml.artifactResolutionServiceInvalidResponse=N\u00e3o foi poss\u00edvel resolver o artefacto.
otp-display-name=Aplica\u00e7\u00e3o Autenticador
otp-help-text=Insira o c\u00f3digo de verifica\u00e7\u00e3o da aplica\u00e7\u00e3o autenticador.
otp-reset-description=Qual a configura\u00e7\u00e3o de dois fatores a remover?
password-display-name=Palavra-passe
password-help-text=Fa\u00e7a o login insirindo a sua palavra-passe.
auth-username-form-display-name=Nome de utilizador
auth-username-form-help-text=Fa\u00e7a o login insirindo o seu nome de utilizador.
auth-username-password-form-display-name=Nome de utilizador e palavra-passe
auth-username-password-form-help-text=Fa\u00e7a o login insirindo o seu nome de utilizador e palavra-passe.
auth-recovery-authn-code-form-display-name=C\u00f3digo de Autentica\u00e7\u00e3o de Recupera\u00e7\u00e3o
auth-recovery-authn-code-form-help-text=Insira um c\u00f3digo de autentica\u00e7\u00e3o de recupera\u00e7\u00e3o de uma lista gerada anteriormente.
auth-recovery-code-info-message=Insira o c\u00f3digo de recupera\u00e7\u00e3o especificado.
auth-recovery-code-prompt=C\u00f3digo de recupera\u00e7\u00e3o \#{0}
auth-recovery-code-header=Fa\u00e7a login com um c\u00f3digo de autentica\u00e7\u00e3o de recupera\u00e7\u00e3o
recovery-codes-error-invalid=C\u00f3digo de autentica\u00e7\u00e3o de recupera\u00e7\u00e3o inv\u00e1lido
recovery-code-config-header=C\u00f3digos de Autentica\u00e7\u00e3o de Recupera\u00e7\u00e3o
recovery-code-config-warning-title=Esses c\u00f3digos de recupera\u00e7\u00e3o n\u00e3o aparecer\u00e3o novamente ap\u00f3s sair desta p\u00e1gina
recovery-code-config-warning-message=Certifique-se de imprimir, descarregar ou copi\u00e1-los para um gestor de senhas e guard\u00e1-los. Cancelar esta configura\u00e7\u00e3o remover\u00e1 esses c\u00f3digos de recupera\u00e7\u00e3o da sua conta.
recovery-codes-print=Imprimir
recovery-codes-download=Descarregar
recovery-codes-copy=Copiar
recovery-codes-copied=Copiado
recovery-codes-confirmation-message=Guardei esses c\u00f3digos em algum lugar seguro
recovery-codes-action-complete=Configura\u00e7\u00e3o completa
recovery-codes-action-cancel=Cancelar configura\u00e7\u00e3o
recovery-codes-download-file-header=Guarde esses c\u00f3digos de recupera\u00e7\u00e3o em algum lugar seguro.
recovery-codes-download-file-description=Os c\u00f3digos de recupera\u00e7\u00e3o s\u00e3o c\u00f3digos de uso \u00fanico que permitem que fa\u00e7a login na sua conta se n\u00e3o tiver acesso ao seu autenticador.
recovery-codes-download-file-date=Esses c\u00f3digos foram gerados em
recovery-codes-label-default=c\u00f3digos de recupera\u00e7\u00e3o
webauthn-display-name=Chave de Seguran\u00e7a
webauthn-help-text=Use a sua chave de seguran\u00e7a para fazer login.
webauthn-passwordless-display-name=Chave de Seguran\u00e7a
webauthn-passwordless-help-text=Use a sua chave de seguran\u00e7a para fazer login sem palavra-passe.
webauthn-login-title=Login com Chave de Seguran\u00e7a
webauthn-registration-title=Registar Chave de Seguran\u00e7a
webauthn-available-authenticators=Autenticadores dispon\u00edveis
webauthn-unsupported-browser-text=WebAuthn n\u00e3o \u00e9 suportado pelo seu navegador. Tente outro navegador ou entre em contacto com um administrador.
webauthn-doAuthenticate=Entrar com chave de seguran\u00e7a
webauthn-createdAt-label=Criado
webauthn-error-title=Erro de Chave de Seguran\u00e7a
webauthn-error-registration=Falha ao registar a sua Chave de Seguran\u00e7a.
webauthn-error-api-get=Falha ao autenticar usando a Chave de Seguran\u00e7a.
webauthn-error-different-user=O primeiro utilizador autenticado n\u00e3o corresponde \u00e0quele autenticado pela Chave de Seguran\u00e7a.
webauthn-error-auth-verification=O resultado da autentica\u00e7\u00e3o da Chave de Seguran\u00e7a \u00e9 inv\u00e1lido.<br /> {0}
webauthn-error-register-verification=O resultado do registo da Chave de Seguran\u00e7a \u00e9 inv\u00e1lido.<br /> {0}
webauthn-error-user-not-found=Utilizador desconhecido autenticado pela Chave de Seguran\u00e7a.
identity-provider-redirector=Conecte-se com outro Provedor de Identidade
identity-provider-login-label=Ou entre com
idp-email-verification-display-name=Verifica\u00e7\u00e3o de E-mail
idp-email-verification-help-text=Vincule a sua conta validando o seu e-mail.
idp-username-password-form-display-name=Utilizador e palavra-passe
idp-username-password-form-help-text=Vincule a sua conta fazendo login.
finalDeletionConfirmation=Se apagar a sua conta, ela n\u00e3o poder\u00e1 ser recuperada. Para manter a sua conta, clique em Cancelar.
irreversibleAction=Esta a\u00e7\u00e3o \u00e9 irrevers\u00edvel
deleteAccountConfirm=Confirma\u00e7\u00e3o para apagar conta
deletingImplies=Apagar a sua conta implica\:
errasingData=Remover todos os seus dados
loggingOutImmediately=Sair da aplica\u00e7\u00e3o imediatamente
accountUnusable=Qualquer uso subsequente da aplica\u00e7\u00e3o n\u00e3o ser\u00e1 poss\u00edvel com esta conta
userDeletedSuccessfully=Utilizador apagado com sucesso
access-denied=Acesso negado
access-denied-when-idp-auth=Acesso negado ao autenticar com {0}
frontchannel-logout.title=Saindo
frontchannel-logout.message=Est\u00e1 a sair das seguintes aplica\u00e7\u00f5es
logoutConfirmTitle=Saindo
logoutConfirmHeader=Deseja mesmo sair?
doLogout=Sair
readOnlyUsernameMessage=N\u00e3o pode atualizar o seu nome de utilizador, porque \u00e9 apenas de leitura.
error-invalid-multivalued-size=O atributo {0} tem que conter no m\u00ednimo {1} e no m\u00e1ximo {2} valores.
shouldBeEqual={0} deve ser igual a {1}
shouldBeDifferent={0} deve ser diferente de {1}
shouldMatchPattern=O padr\u00e3o deve corresponder\: `/{0}/`
mustBeAnInteger=Deve ser um n\u00famero inteiro
notAValidOption=N\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida
selectAnOption=Selecione uma op\u00e7\u00e3o
remove=Remover
addValue=Adicionar valor
languages=Idiomas

View File

@ -0,0 +1,218 @@
doLogIn=\u0412\u0445\u043e\u0434
doRegister=\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f
doRegisterSecurityKey=\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f
doCancel=\u041e\u0442\u043c\u0435\u043d\u0430
doSubmit=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c
doYes=\u0414\u0430
doNo=\u041d\u0435\u0442
doContinue=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c
doAccept=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c
doDecline=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
doForgotPassword=\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?
doClickHere=\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0441\u044e\u0434\u0430
doImpersonate=\u0418\u043c\u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f
kerberosNotConfigured=Kerberos \u043d\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d
kerberosNotConfiguredTitle=Kerberos \u043d\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d
bypassKerberosDetail=\u041b\u0438\u0431\u043e \u0432\u044b \u043d\u0435 \u0432\u043e\u0448\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kerberos, \u043b\u0438\u0431\u043e \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Kerberos. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 ''\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c'' \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432
kerberosNotSetUp=Kerberos \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d. \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0439\u0442\u0438.
registerWithTitle=\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 {0}
registerWithTitleHtml={0}
loginTitle=\u0412\u0445\u043e\u0434 {0}
loginTitleHtml={0}
impersonateTitle={0} \u0418\u043c\u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
impersonateTitleHtml=<strong>{0}</strong> \u0418\u043c\u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
realmChoice=Realm
unknownUser=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c
loginTotpTitle=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430
loginProfileTitle=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438
loginTimeout=\u0412\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u043e \u0431\u0435\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0441 \u043d\u0430\u0447\u0430\u043b\u0430.
oauthGrantTitle=\u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f
oauthGrantTitleHtml={0}
errorTitle=\u041c\u044b \u0441\u043e\u0436\u0430\u043b\u0435\u0435\u043c...
errorTitleHtml=\u041c\u044b <strong>\u0441\u043e\u0436\u0430\u043b\u0435\u0435\u043c</strong> ...
emailVerifyTitle=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 E-mail
emailForgotTitle=\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?
updatePasswordTitle=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f
codeSuccessTitle=\u0423\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u043a\u043e\u0434
codeErrorTitle=\u041e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434\: {0}
pageNotFound=\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430
termsTitle=\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f
termsTitleHtml=\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f
termsText=
recaptchaFailed=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f Recaptcha
recaptchaNotConfigured=Recaptcha \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430
consentDenied=\u0412 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e.
saml.post-form.title=\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438
saml.post-form.message=\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435.
noAccount=\u041d\u043e\u0432\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c?
username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
usernameOrEmail=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 E-mail
firstName=\u0418\u043c\u044f
givenName=\u0412\u044b\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f
fullName=\u041f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f
lastName=\u0424\u0430\u043c\u0438\u043b\u0438\u044f
familyName=\u0424\u0430\u043c\u0438\u043b\u0438\u044f
email=E-mail
password=\u041f\u0430\u0440\u043e\u043b\u044c
passwordConfirm=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f
passwordNew=\u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c
passwordNewConfirm=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f
rememberMe=\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043c\u0435\u043d\u044f
authenticatorCode=\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434
address=\u0410\u0434\u0440\u0435\u0441
street=\u0423\u043b\u0438\u0446\u0430
locality=\u0413\u043e\u0440\u043e\u0434
region=\u0420\u0435\u0433\u0438\u043e\u043d
postal_code=\u041f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441
country=\u0421\u0442\u0440\u0430\u043d\u0430
emailVerified=E-mail \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d
gssDelegationCredential=\u0414\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 GSS
logoutOtherSessions=\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445
loginAccountTitle=\u0412\u0445\u043e\u0434 \u0432 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c
loginTotpStep1=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u0430\u0448 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\:
loginTotpStep2=\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 QR-\u043a\u043e\u0434\:
loginTotpStep3=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434, \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.
loginTotpManualStep2=\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447\:
loginTotpManualStep3=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\:
loginTotpStep3DeviceName=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0438\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0432\u0430\u0448\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.
loginTotpUnableToScan=\u041d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435?
loginTotpScanBarcode=\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c QR-\u043a\u043e\u0434?
loginOtpOneTime=\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434
loginTotpDeviceName=\u0418\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430
loginTotpType=\u0422\u0438\u043f
loginTotpAlgorithm=\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c
loginTotpDigits=\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u0444\u0440
loginTotpInterval=\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b
loginTotpCounter=\u0421\u0447\u0435\u0442\u0447\u0438\u043a
oauthGrantRequest=\u0412\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u0438\u043c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c?
inResource=\u0432
emailVerifyInstruction1=\u0412\u0430\u043c \u0431\u044b\u043b\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 E-mail.
emailVerifyInstruction2=\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u043a\u043e\u0434\u043e\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f?
emailVerifyInstruction3=\u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0430.
emailLinkIdpTitle=\u0421\u0432\u044f\u0437\u0430\u0442\u044c {0}
emailLinkIdp1=\u0412\u0430\u043c \u0431\u044b\u043b\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e {0} \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 {1} \u0441 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e {2}.
emailLinkIdp2=\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448 E-mail?
emailLinkIdp3=\u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0430.
backToLogin=&laquo; \u041d\u0430\u0437\u0430\u0434 \u043a\u043e \u0432\u0445\u043e\u0434\u0443
emailInstruction=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0412\u0430\u0448\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 E-mail \u0438 \u043c\u044b \u0432\u044b\u0448\u043b\u0435\u043c \u0412\u0430\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f.
copyCodeInstruction=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\:
personalInfo=\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\:
role_admin=\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440
role_realm-admin=\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 realm
role_create-realm=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 realm
role_create-client=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430
role_view-realm=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 realm
role_view-users=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
role_view-applications=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439
role_view-clients=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432
role_view-events=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043e\u0431\u044b\u0442\u0438\u0439
role_view-identity-providers=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439
role_manage-realm=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 realm
role_manage-users=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438
role_manage-applications=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438
role_manage-identity-providers=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439
role_manage-clients=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438
role_manage-events=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438
role_view-profile=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u044f
role_manage-account=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e
role_read-token=\u0427\u0442\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430
role_offline-access=\u041e\u0444\u0444\u043b\u0430\u0439\u043d \u0434\u043e\u0441\u0442\u0443\u043f
client_account=\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c
client_security-admin-console=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438
client_admin-cli=\u041a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
client_realm-management=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 realm
client_broker=\u0411\u0440\u043e\u043a\u0435\u0440
invalidUserMessage=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c.
invalidEmailMessage=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 E-mail.
accountDisabledMessage=\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c.
accountTemporarilyDisabledMessage=\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0437\u0436\u0435.
expiredCodeMessage=\u0412\u0445\u043e\u0434 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d \u043f\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0441\u043d\u043e\u0432\u0430.
missingFirstNameMessage=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f.
missingLastNameMessage=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0444\u0430\u043c\u0438\u043b\u0438\u044e.
missingEmailMessage=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 E-mail.
missingUsernameMessage=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.
missingPasswordMessage=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c.
missingTotpMessage=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430.
notMatchPasswordMessage=\u041f\u0430\u0440\u043e\u043b\u0438 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442.
invalidPasswordExistingMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c.
invalidPasswordConfirmMessage=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442.
invalidTotpMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430.
usernameExistsMessage=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442\u043e.
emailExistsMessage=E-mail \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.
federatedIdentityExistsMessage=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 {0} {1} \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u044d\u0442\u0443 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.
confirmLinkIdpTitle=\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
federatedIdentityConfirmLinkMessage=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 {0} {1} \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0443\u0435\u0442. \u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?
federatedIdentityConfirmReauthenticateMessage=\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0412\u0430\u0448\u0443 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 {0}
confirmLinkIdpReviewProfile=\u041e\u0431\u0437\u043e\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u044f
confirmLinkIdpContinue=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c
configureTotpMessage=\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.
updateProfileMessage=\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0412\u0430\u0448\u0443 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.
updatePasswordMessage=\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0412\u0430\u0448\u0443 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.
verifyEmailMessage=\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0412\u0430\u0448 E-mail, \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0412\u0430\u0448\u0443 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.
linkIdpMessage=\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0412\u0430\u0448 E-mail, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0412\u0430\u0448\u0443 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 {0}.
emailSentMessage=\u0412 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438.
emailSendErrorMessage=\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0438\u0441\u044c\u043c\u043e. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u0437\u0436\u0435.
accountUpdatedMessage=\u0412\u0430\u0448\u0430 \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430.
accountPasswordUpdatedMessage=\u0412\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d.
noAccessMessage=\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430
invalidPasswordMinLengthMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u0434\u043b\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432(\u0430).
invalidPasswordMinDigitsMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 {0} \u0446\u0438\u0444\u0440(\u044b).
invalidPasswordMinLowerCaseCharsMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432(\u0430) \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.
invalidPasswordMinUpperCaseCharsMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432(\u0430) \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.
invalidPasswordMinSpecialCharsMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 {0} \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432(\u0430).
invalidPasswordNotUsernameMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.
invalidPasswordRegexPatternMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u0440\u043e\u0448\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e.
invalidPasswordHistoryMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c(\u0438) {0} \u043f\u0430\u0440\u043e\u043b\u0435\u043c(\u044f\u043c\u0438).
invalidPasswordGenericMessage=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u043f\u0430\u0440\u043e\u043b\u044f.
failedToProcessResponseMessage=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442
httpsRequiredMessage=\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f HTTPS
realmNotEnabledMessage=Realm \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d
invalidRequestMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441
failedLogout=\u0412\u044b\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c
unknownLoginRequesterMessage=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442
loginRequesterNotEnabledMessage=\u041a\u043b\u0438\u0435\u043d\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d
bearerOnlyMessage=Bearer-only \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440
standardFlowDisabledMessage=\u041a\u043b\u0438\u0435\u043d\u0442\u0443 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c response_type. Standard flow \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430.
implicitFlowDisabledMessage=\u041a\u043b\u0438\u0435\u043d\u0442\u0443 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c response_type. Implicit flow \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430.
invalidRedirectUriMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 uri \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438
unsupportedNameIdFormatMessage=\u041d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 NameIDFormat
invalidRequesterMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0449\u0438\u0439
registrationNotAllowedMessage=\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430
resetCredentialNotAllowedMessage=\u0421\u0431\u0440\u043e\u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d
permissionNotApprovedMessage=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e.
noRelayStateInResponseMessage=\u041d\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
insufficientPermissionMessage=\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0439 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432.
couldNotProceedWithAuthenticationRequestMessage=\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
couldNotObtainTokenMessage=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
unexpectedErrorRetrievingTokenMessage=\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0442\u043e\u043a\u0435\u043d\u0430 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
unexpectedErrorHandlingResponseMessage=\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
identityProviderAuthenticationFailedMessage=\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u0435\u043d\u0430. \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u043c \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
couldNotSendAuthenticationRequestMessage=\u041d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0443 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
unexpectedErrorHandlingRequestMessage=\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
invalidAccessCodeMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.
sessionNotActiveMessage=\u0421\u0435\u0441\u0441\u0438\u044f \u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u0430.
invalidCodeMessage=\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u043d\u043e\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.
identityProviderUnexpectedErrorMessage=\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.
identityProviderNotFoundMessage=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c.
identityProviderLinkSuccess=\u0412\u0430\u0448\u0430 \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0430 \u0441 {0} \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e {1} .
staleCodeMessage=\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.
realmSupportsNoCredentialsMessage=Realm \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.
identityProviderNotUniqueMessage=Realm \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.
emailVerifiedMessage=\u0412\u0430\u0448 E-mail \u0431\u044b\u043b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d.
staleEmailVerificationLink=\u0421\u0441\u044b\u043b\u043a\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0412\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438, \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0430 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432\u044b \u0443\u0436\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0438 \u0441\u0432\u043e\u0439 E-mail?
backToApplication=&laquo; \u041d\u0430\u0437\u0430\u0434 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435
missingParameterMessage=\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\: {0}
clientNotFoundMessage=\u041a\u043b\u0438\u0435\u043d\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.
clientDisabledMessage=\u041a\u043b\u0438\u0435\u043d\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d.
invalidParameterMessage=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\: {0}
alreadyLoggedIn=\u0412\u044b \u0443\u0436\u0435 \u0432\u043e\u0448\u043b\u0438.
shouldBeEqual={0} \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e {1}
shouldBeDifferent={0} \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 {1}
shouldMatchPattern=\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\: `/{0}/`
mustBeAnInteger=\u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c
notAValidOption=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442
selectAnOption=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442
remove=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
addValue=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435
languages=\u042f\u0437\u044b\u043a\u0438

View File

@ -0,0 +1,446 @@
doLogIn=Prihl\u00e1senie
doRegister=Registr\u00e1cia
doRegisterSecurityKey=Registr\u00e1cia
doCancel=Zru\u0161i\u0165
doSubmit=Odosla\u0165
doBack=Sp\u00e4\u0165
doYes=\u00c1no
doNo=Nie
doContinue=Pokra\u010dova\u0165
doIgnore=Ignorova\u0165
doAccept=Potvrdi\u0165
doDecline=Odmietnu\u0165
doForgotPassword=Zabudli ste heslo?
doClickHere=Kliknite tu
doImpersonate=Prevteli\u0165
doTryAgain=Sk\u00faste to znova
doTryAnotherWay=Sk\u00faste in\u00fd sp\u00f4sob
doConfirmDelete=Potvrdi\u0165 vymazanie
errorDeletingAccount=Pri odstra\u0148ovan\u00ed \u00fa\u010dtu do\u0161lo k chybe
deletingAccountForbidden=Nem\u00e1te dostato\u010dn\u00e9 opr\u00e1vnenie na vymazanie vlastn\u00e9ho \u00fa\u010dtu, kontaktujte administr\u00e1tora.
kerberosNotConfigured=Kerberos nie je nakonfigurovan\u00fd
kerberosNotConfiguredTitle=Kerberos nie je nakonfigurovan\u00fd
bypassKerberosDetail=Bu\u010f nie ste prihl\u00e1sen\u00fd cez Kerberos, alebo v\u00e1\u0161 prehliada\u010d nie je nastaven\u00fd na prihl\u00e1senie do Kerberos. Kliknut\u00edm na tla\u010didlo Pokra\u010dova\u0165 sa prihl\u00e1ste in\u00fdm sp\u00f4sobom
kerberosNotSetUp=Kerberos nie je nastaven\u00fd. Nem\u00f4\u017eete sa prihl\u00e1si\u0165.
registerTitle=Registr\u00e1cia
loginAccountTitle=Prihl\u00e1ste sa do svojho \u00fa\u010dtu
loginTitle=Prihl\u00e1senie do {0}
loginTitleHtml={0}
impersonateTitle={0} prevteli\u0165 sa
impersonateTitleHtml=<strong>{0}</strong> Prevteli\u0165 sa</strong>
realmChoice=Realm
unknownUser=Nezn\u00e1my pou\u017e\u00edvate\u013e
loginTotpTitle=Nastavenie mobiln\u00e9ho autentifik\u00e1tora
loginProfileTitle=Aktualiz\u00e1cia inform\u00e1ci\u00ed o \u00fa\u010dte
loginIdpReviewProfileTitle=Aktualiz\u00e1cia inform\u00e1ci\u00ed o \u00fa\u010dte
loginTimeout=Prihlasovanie trvalo pr\u00edli\u0161 dlho. Prihlasovac\u00ed proces za\u010d\u00edna od za\u010diatku.
reauthenticate=Pre pokra\u010dovanie sa pros\u00edm prihl\u00e1ste znova
oauthGrantTitle=Poskytn\u00fa\u0165 pr\u00edstup {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=Uistite sa, \u017ee d\u00f4verujete {0}. Zistite, ako bude {0} nar\u00e1ba\u0165 s va\u0161imi \u00fadajmi.
oauthGrantReview=M\u00f4\u017eete si prezrie\u0165
oauthGrantTos=podmienky slu\u017eby.
oauthGrantPolicy=z\u00e1sady ochrany osobn\u00fdch \u00fadajov.
errorTitle=Je n\u00e1m \u013e\u00fato ...
errorTitleHtml=<strong>Ospravedl\u0148ujeme</strong> sa ...
emailVerifyTitle=Overenie e-mailom
emailForgotTitle=Zabudli ste heslo?
updateEmailTitle=Aktualizova\u0165 e-mail
emailUpdateConfirmationSentTitle=Odoslan\u00fd potvrdzuj\u00faci e-mail
emailUpdateConfirmationSent=Na adresu {0} bol odoslan\u00fd potvrdzuj\u00faci e-mail. Na dokon\u010denie aktualiz\u00e1cie e-mailu postupujte pod\u013ea pokynov.
emailUpdatedTitle=Email aktualizovan\u00fd
emailUpdated=Email \u00fa\u010dtu bol \u00faspe\u0161ne aktualizovan\u00fd na {0}.
updatePasswordTitle=Aktualiz\u00e1cia hesla
codeSuccessTitle=K\u00f3d \u00faspechu
codeErrorTitle=K\u00f3d chyby\: {0}
displayUnsupported=Nepodporovan\u00fd typ displeja
browserRequired=Pre prihl\u00e1senie je potrebn\u00fd prehliada\u010d
browserContinue=Pre dokon\u010denie prihl\u00e1senia je potrebn\u00fd prehliada\u010d
browserContinuePrompt=Otvori\u0165 prehliada\u010d a pokra\u010dova\u0165 v prihlasovan\u00ed? [a/n]\:
browserContinueAnswer=a
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=Intern\u00fd
unknown=Nezn\u00e1my
termsTitle=Zmluvn\u00e9 podmienky
termsText=
termsPlainText=Podmienky, ktor\u00e9 sa maj\u00fa definova\u0165.
termsAcceptanceRequired=Mus\u00edte s\u00fahlasi\u0165 s na\u0161imi podmienkami.
acceptTerms=S\u00fahlas\u00edm s podmienkami
recaptchaFailed=Neplatn\u00e9 Recaptcha
recaptchaNotConfigured=Recaptcha sa vy\u017eaduje, ale nie je nakonfigurovan\u00e1
consentDenied=S\u00fahlas bol zamietnut\u00fd.
noAccount=Nov\u00fd pou\u017e\u00edvate\u013e?
username=Prihlasovacie meno
usernameOrEmail=Prihlasovacie meno alebo e-mail
firstName=Meno
givenName=Meno pri naroden\u00ed
fullName=Cel\u00e9 meno
lastName=Priezvisko
familyName=Rodn\u00e9 meno
email=E-mail
password=Heslo
passwordConfirm=Potvrdenie hesla
passwordNew=Nov\u00e9 heslo
passwordNewConfirm=Potvrdenie nov\u00e9ho hesla
hidePassword=Skry\u0165 heslo
showPassword=Zobrazi\u0165 heslo
rememberMe=Zapam\u00e4ta\u0165 si ma
authenticatorCode=Jednorazov\u00fd k\u00f3d
address=Adresa
street=Ulica
locality=Mesto alebo lokalita
region=Kraj
postal_code=PS\u010c
country=\u0160t\u00e1t
emailVerified=E-mail overen\u00fd
website=Webov\u00e1 str\u00e1nka
phoneNumber=Telef\u00f3nne \u010d\u00edslo
phoneNumberVerified=Overen\u00e9 telef\u00f3nne \u010d\u00edslo
gender=Pohlavie
birthday=D\u00e1tum narodenia
zoneinfo=\u010casov\u00e9 p\u00e1smo
gssDelegationCredential=GSS delegovan\u00e9 opr\u00e1vnenie
logoutOtherSessions=Odhl\u00e1senie z in\u00fdch zariaden\u00ed
profileScopeConsentText=Profil pou\u017e\u00edvate\u013ea
emailScopeConsentText=Emailov\u00e1 adresa
addressScopeConsentText=Adresa
phoneScopeConsentText=Telef\u00f3nne \u010d\u00edslo
offlineAccessScopeConsentText=Offline pr\u00edstup
samlRoleListScopeConsentText=Moje role
rolesScopeConsentText=U\u017e\u00edvate\u013esk\u00e9 roly
restartLoginTooltip=Znovu spusti\u0165 prihl\u00e1senie
loginTotpIntro=Pre pr\u00edstup k tomuto \u00fa\u010dtu je potrebn\u00e9 nastavi\u0165 gener\u00e1tor jednorazov\u00fdch k\u00f3dov
loginTotpStep1=Nain\u0161talujte <a href\="https\://freeotp.github.io/" target\="_blank">FreeOTP</a> alebo Google Authenticator na mobil. Obidve aplik\u00e1cie s\u00fa k dispoz\u00edcii v <a href\="https\://play.google.com">Google Play</a> a Apple App Store.
loginTotpStep2=Otvorte aplik\u00e1ciu a skenujte \u010diarov\u00fd k\u00f3d alebo zadajte k\u013e\u00fa\u010d
loginTotpStep3=Zadajte jednorazov\u00fd k\u00f3d poskytnut\u00fd aplik\u00e1ciou a kliknut\u00edm na tla\u010didlo Odosla\u0165 dokon\u010dite nastavenie
loginTotpStep3DeviceName=Uve\u010fte n\u00e1zov zariadenia, ktor\u00fd v\u00e1m pom\u00f4\u017ee spravova\u0165 zariadenia OTP.
loginTotpManualStep2=Otvorte aplik\u00e1ciu a zadajte k\u013e\u00fa\u010d
loginTotpManualStep3=Pou\u017e\u00edvajte nasleduj\u00face hodnoty konfigur\u00e1cie, ak aplik\u00e1cia umo\u017e\u0148uje ich nastavenie
loginTotpUnableToScan=Nemo\u017eno skenova\u0165?
loginTotpScanBarcode=Skenova\u0165 \u010diarov\u00fd k\u00f3d?
loginCredential=Prihlasovacie \u00fadaje
loginOtpOneTime=Jednorazov\u00fd k\u00f3d
loginTotpType=Typ
loginTotpAlgorithm=Algoritmus
loginTotpDigits=\u010c\u00edslica
loginTotpInterval=Interval
loginTotpCounter=Po\u010d\u00edtadlo
loginTotpDeviceName=N\u00e1zov zariadenia
loginTotp.totp=Zalo\u017een\u00e9 na \u010dase
loginTotp.hotp=Zalo\u017een\u00e9 na po\u010d\u00edtadle
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=Vyberte sp\u00f4sob prihl\u00e1senia
oauthGrantRequest=Ude\u013eujete tieto pr\u00edstupov\u00e9 opr\u00e1vnenia?
inResource=v
oauth2DeviceVerificationTitle=Prihl\u00e1senie zariadenia
verifyOAuth2DeviceUserCode=Zadajte k\u00f3d poskytnut\u00fd va\u0161\u00edm zariaden\u00edm a kliknite na tla\u010didlo Odosla\u0165
oauth2DeviceInvalidUserCodeMessage=Neplatn\u00fd k\u00f3d, sk\u00faste to pros\u00edm znova.
oauth2DeviceExpiredUserCodeMessage=K\u00f3d stratil platnos\u0165. Vr\u00e1\u0165te sa pros\u00edm k svojmu zariadeniu a sk\u00faste sa pripoji\u0165 znova.
oauth2DeviceVerificationCompleteHeader=\u00daspe\u0161n\u00e9 prihl\u00e1senie zariadenia
oauth2DeviceVerificationCompleteMessage=M\u00f4\u017eete zavrie\u0165 toto okno prehliada\u010da a vr\u00e1ti\u0165 sa k svojmu zariadeniu.
oauth2DeviceVerificationFailedHeader=Prihl\u00e1senie zariadenia zlyhalo
oauth2DeviceVerificationFailedMessage=M\u00f4\u017eete zavrie\u0165 toto okno prehliada\u010da, vr\u00e1ti\u0165 sa k svojmu zariadeniu a sk\u00fasi\u0165 sa pripoji\u0165 znova.
oauth2DeviceConsentDeniedMessage=S\u00fahlas s pripojen\u00edm zariadenia zamietnut\u00fd.
oauth2DeviceAuthorizationGrantDisabledMessage=Klientovi nie je povolen\u00e9 iniciova\u0165 OAuth 2.0 Device Authorization Grant. Tento flow je pre klienta zak\u00e1zan\u00fd.
emailVerifyInstruction1=Bol V\u00e1m odoslan\u00fd e-mail s pokynmi na overenie va\u0161ej e-mailovej adresy.
emailVerifyInstruction2=Nez\u00edskali ste v e-maile overovac\u00ed k\u00f3d?
emailVerifyInstruction3=op\u00e4tovne odosla\u0165 e-mail.
emailLinkIdpTitle=Odkaz {0}
emailLinkIdp1=Bol v\u00e1m odoslan\u00fd e-mail s pokynmi na prepojenie \u00fa\u010dtu {0} {1} s va\u0161\u00edm \u00fa\u010dtom {2}.
emailLinkIdp2=Nez\u00edskali ste v e-maile overovac\u00ed k\u00f3d?
emailLinkIdp3=op\u00e4tovne posla\u0165 e-mail.
emailLinkIdp4=Ak ste u\u017e overili e-mail v inom prehliada\u010di
emailLinkIdp5=pokra\u010dova\u0165.
backToLogin=&laquo; Sp\u00e4\u0165 na prihl\u00e1senie
emailInstruction=Zadajte svoje pou\u017e\u00edvate\u013esk\u00e9 meno alebo e-mailov\u00fa adresu a my v\u00e1m za\u0161leme pokyny na vytvorenie nov\u00e9ho hesla.
emailInstructionUsername=Zadajte svoje pou\u017e\u00edvate\u013esk\u00e9 meno a my v\u00e1m za\u0161leme pokyny na vytvorenie nov\u00e9ho hesla.
copyCodeInstruction=Pros\u00edm skop\u00edrujte tento k\u00f3d a vlo\u017ete ho do va\u0161ej aplik\u00e1cie\:
pageExpiredTitle=Platnos\u0165 str\u00e1nky vypr\u0161ala
pageExpiredMsg1=Pre re\u0161tartovanie prihlasovacieho procesu
pageExpiredMsg2=Pokra\u010dovanie prihlasovacieho procesu
personalInfo=Osobn\u00e9 inform\u00e1cie\:
role_admin=Administr\u00e1tor
role_realm-admin=Realm administr\u00e1tor
role_create-realm=Vytvori\u0165 realm
role_create-client=Vytvori\u0165 klienta
role_view-realm=Zobrazi\u0165 realm
role_view-users=Zobrazi\u0165 pou\u017e\u00edvate\u013eov
role_view-applications=Zobrazi\u0165 aplik\u00e1cie
role_view-clients=Zobrazenie klientov
role_view-events=Zobrazi\u0165 udalosti
role_view-identity-providers=Zobrazenie poskytovate\u013eov identity
role_manage-realm=Spravova\u0165 realm
role_manage-users=Spravova\u0165 pou\u017e\u00edvate\u013eov
role_manage-applications=Spravova\u0165 aplik\u00e1cie
role_manage-identity-providers=Spravova\u0165 poskytovate\u013eov identity
role_manage-clients=Spravova\u0165 klientov
role_manage-events=Spravova\u0165 udalosti
role_view-profile=Zobrazi\u0165 profil
role_manage-account=Spravova\u0165 \u00fa\u010dty
role_manage-account-links=Spravova\u0165 odkazy na \u00fa\u010dty
role_read-token=\u010c\u00edta\u0165 token
role_offline-access=Offline pr\u00edstup
client_account=\u00da\u010det klienta
client_account-console=U\u017e\u00edvate\u013esk\u00e1 konzola
client_security-admin-console=Administr\u00e1torsk\u00e1 bezpe\u010dnostn\u00e1 konzola klienta
client_admin-cli=Spr\u00e1vca CLI
client_realm-management=Spr\u00e1va realmov klienta
client_broker=Broker
requiredFields=Povinn\u00e9 polia
invalidUserMessage=Neplatn\u00e9 pou\u017e\u00edvate\u013esk\u00e9 meno alebo heslo.
invalidUsernameMessage=Neplatn\u00e9 pou\u017e\u00edvate\u013esk\u00e9 meno.
invalidUsernameOrEmailMessage=Neplatn\u00e9 pou\u017e\u00edvate\u013esk\u00e9 meno alebo e-mail.
invalidPasswordMessage=Neplatn\u00e9 heslo.
invalidEmailMessage=Neplatn\u00e1 e-mailov\u00e1 adresa.
accountDisabledMessage=\u00da\u010det je zak\u00e1zan\u00fd, kontaktujte administr\u00e1tora.
accountTemporarilyDisabledMessage=\u00da\u010det je do\u010dasne zak\u00e1zan\u00fd, kontaktujte administr\u00e1tora alebo sk\u00faste nesk\u00f4r.
expiredCodeMessage=Platnos\u0165 prihl\u00e1senia vypr\u0161ala. Prihl\u00e1ste sa znova.
expiredActionMessage=Akcia vypr\u0161ala. Pokra\u010dujte prihl\u00e1sen\u00edm.
expiredActionTokenNoSessionMessage=Akcia vypr\u0161ala.
expiredActionTokenSessionExistsMessage=Platnos\u0165 vypr\u0161ala. Za\u010dnite znova.
sessionLimitExceeded=Prekro\u010den\u00fd limit rel\u00e1ci\u00ed
missingFirstNameMessage=Zadajte krstn\u00e9 meno.
missingLastNameMessage=Zadajte priezvisko.
missingEmailMessage=Zadajte e-mail.
missingUsernameMessage=Zadajte pou\u017e\u00edvate\u013esk\u00e9 meno.
missingPasswordMessage=Zadajte pros\u00edm heslo.
missingTotpMessage=Pros\u00edm, zadajte k\u00f3d autentifik\u00e1tora.
missingTotpDeviceNameMessage=Pros\u00edm, zadajte n\u00e1zov zariadenia.
notMatchPasswordMessage=Hesl\u00e1 sa nezhoduj\u00fa.
error-invalid-value=Neplatn\u00e1 hodnota.
error-invalid-blank=Pros\u00edm uve\u010fte hodnotu.
error-empty=Pros\u00edm uve\u010fte hodnotu.
error-invalid-length=D\u013a\u017eka mus\u00ed by\u0165 medzi {1} a {2}.
error-invalid-length-too-short=Minim\u00e1lna d\u013a\u017eka je {1}.
error-invalid-length-too-long=Maxim\u00e1lna d\u013a\u017eka je {2}.
error-invalid-email=Neplatn\u00e1 e-mailov\u00e1 adresa.
error-invalid-number=Neplatn\u00e9 \u010d\u00edslo.
error-number-out-of-range=\u010c\u00edslo mus\u00ed by\u0165 medzi {1} a {2}.
error-number-out-of-range-too-small=\u010c\u00edslo mus\u00ed ma\u0165 minim\u00e1lnu hodnotu {1}.
error-number-out-of-range-too-big=\u010c\u00edslo mus\u00ed ma\u0165 maxim\u00e1lnu hodnotu {2}.
error-pattern-no-match=Neplatn\u00e1 hodnota.
error-invalid-uri=Neplatn\u00e1 adresa URL.
error-invalid-uri-scheme=Neplatn\u00e1 sch\u00e9ma URL.
error-invalid-uri-fragment=Neplatn\u00fd fragment URL.
error-user-attribute-required=Pros\u00edm, uve\u010fte toto pole.
error-invalid-date=Neplatn\u00fd d\u00e1tum.
error-user-attribute-read-only=Toto pole je ur\u010den\u00e9 len na \u010d\u00edtanie.
error-username-invalid-character=Hodnota obsahuje neplatn\u00fd znak.
error-person-name-invalid-character=Hodnota obsahuje neplatn\u00fd znak.
error-reset-otp-missing-id=Pros\u00edm, vyberte konfigur\u00e1ciu OTP.
invalidPasswordExistingMessage=Neplatn\u00e9 existuj\u00face heslo.
invalidPasswordBlacklistedMessage=Neplatn\u00e9 heslo\: heslo je na \u010diernej listine.
invalidPasswordConfirmMessage=Potvrdenie hesla sa nezhoduje.
invalidTotpMessage=Neplatn\u00fd k\u00f3d autentifik\u00e1tora.
usernameExistsMessage=U\u017e\u00edvate\u013esk\u00e9 meno u\u017e existuje.
emailExistsMessage=E-mail u\u017e existuje.
federatedIdentityExistsMessage=Pou\u017e\u00edvate\u013e s {0} {1} u\u017e existuje. Ak chcete prepoji\u0165 \u00fa\u010det, prihl\u00e1ste sa na spr\u00e1vu \u00fa\u010dtov.
federatedIdentityUnavailableMessage=Pou\u017e\u00edvate\u013e {0} autentifikovan\u00fd poskytovate\u013eom identity {1} neexistuje. Kontaktujte svojho administr\u00e1tora.
federatedIdentityUnmatchedEssentialClaimMessage=Identifika\u010dn\u00fd token vydan\u00fd poskytovate\u013eom identity sa nezhoduje s nakonfigurovan\u00fdm essential claim. Obr\u00e1\u0165te sa na svojho spr\u00e1vcu.
confirmLinkIdpTitle=\u00da\u010det u\u017e existuje
federatedIdentityConfirmLinkMessage=Pou\u017e\u00edvate\u013e s {0} {1} u\u017e existuje. Ako chcete pokra\u010dova\u0165?
federatedIdentityConfirmReauthenticateMessage=Overi\u0165 prepoji\u0165 v\u00e1\u0161 \u00fa\u010det s {0}
nestedFirstBrokerFlowMessage=U\u017e\u00edvate\u013e {0} {1} nie je prepojen\u00fd so \u017eiadnym zn\u00e1mym pou\u017e\u00edvate\u013eom.
confirmLinkIdpReviewProfile=Skontrolujte profil
confirmLinkIdpContinue=Prida\u0165 do existuj\u00faceho \u00fa\u010dtu
configureTotpMessage=Na aktiv\u00e1ciu v\u00e1\u0161ho \u00fa\u010dtu mus\u00edte nastavi\u0165 aplik\u00e1ciu Mobile Authenticator.
configureBackupCodesMessage=Pre aktiv\u00e1ciu v\u00e1\u0161ho \u00fa\u010dtu mus\u00edte nastavi\u0165 z\u00e1lo\u017en\u00e9 k\u00f3dy.
updateProfileMessage=Ak chcete aktivova\u0165 svoj \u00fa\u010det, mus\u00edte aktualizova\u0165 svoj u\u017e\u00edvate\u013esk\u00fd profil.
updatePasswordMessage=Ak chcete aktivova\u0165 svoj \u00fa\u010det, mus\u00edte zmeni\u0165 heslo.
updateEmailMessage=Pre aktiv\u00e1ciu \u00fa\u010dtu mus\u00edte aktualizova\u0165 svoju e-mailov\u00fa adresu.
resetPasswordMessage=Potrebujete zmeni\u0165 svoje heslo.
verifyEmailMessage=Ak chcete aktivova\u0165 svoj \u00fa\u010det, mus\u00edte overi\u0165 svoju e-mailov\u00fa adresu.
linkIdpMessage=Potrebujete si overi\u0165 svoju e-mailov\u00fa adresu a prepoji\u0165 svoj \u00fa\u010det s {0}.
emailSentMessage=Zakr\u00e1tko by ste mali dosta\u0165 e-mail s \u010fal\u0161\u00edmi pokynmi.
emailSendErrorMessage=Nepodarilo sa odosla\u0165 e-mail, sk\u00faste to znova nesk\u00f4r.
accountUpdatedMessage=V\u00e1\u0161 \u00fa\u010det bol aktualizovan\u00fd.
accountPasswordUpdatedMessage=Va\u0161e heslo bolo aktualizovan\u00e9.
delegationCompleteHeader=\u00daspe\u0161n\u00e9 prihl\u00e1senie
delegationCompleteMessage=M\u00f4\u017eete zavrie\u0165 toto okno prehliada\u010da a vr\u00e1ti\u0165 sa do konzolovej aplik\u00e1cie.
delegationFailedHeader=Prihl\u00e1senie zlyhalo
delegationFailedMessage=M\u00f4\u017eete zavrie\u0165 toto okno prehliada\u010da, vr\u00e1ti\u0165 sa do konzolovej aplik\u00e1cie a sk\u00fasi\u0165 sa prihl\u00e1si\u0165 znova.
noAccessMessage=\u017diadny pr\u00edstup
invalidPasswordMinLengthMessage=Neplatn\u00e9 heslo\: minim\u00e1lna d\u013a\u017eka {0}.
invalidPasswordMaxLengthMessage=Neplatn\u00e9 heslo\: maxim\u00e1lna d\u013a\u017eka {0}.
invalidPasswordMinDigitsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahova\u0165 aspo\u0148 {0} \u010d\u00edslic.
invalidPasswordMinLowerCaseCharsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahova\u0165 minim\u00e1lne {0} mal\u00e9 p\u00edsmen\u00e1.
invalidPasswordMinUpperCaseCharsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahova\u0165 aspo\u0148 {0} ve\u013ek\u00e9 p\u00edsmen\u00e1.
invalidPasswordMinSpecialCharsMessage=Neplatn\u00e9 heslo\: mus\u00ed obsahova\u0165 aspo\u0148 {0} \u0161peci\u00e1lne znaky.
invalidPasswordNotUsernameMessage=Neplatn\u00e9 heslo\: nesmie by\u0165 rovnak\u00e9 ako pou\u017e\u00edvate\u013esk\u00e9 meno.
invalidPasswordNotEmailMessage=Neplatn\u00e9 heslo\: nesmie sa rovna\u0165 e-mailu.
invalidPasswordRegexPatternMessage=Neplatn\u00e9 heslo\: nezhoduje sa vzormi regul\u00e1rneho v\u00fdrazu.
invalidPasswordHistoryMessage=Neplatn\u00e9 heslo\: nesmie sa rovna\u0165 \u017eiadnemu z posledn\u00fdch {0} hesiel.
invalidPasswordGenericMessage=Neplatn\u00e9 heslo\: nov\u00e9 heslo nezodpoved\u00e1 pravidl\u00e1m hesiel.
failedToProcessResponseMessage=Nepodarilo sa spracova\u0165 odpove\u010f
httpsRequiredMessage=Vy\u017eaduje sa HTTPS
realmNotEnabledMessage=Realm nie je povolen\u00fd
invalidRequestMessage=Neplatn\u00e1 po\u017eiadavka
successLogout=Odhl\u00e1sili ste sa
failedLogout=Odhl\u00e1senie zlyhalo
unknownLoginRequesterMessage=Nezn\u00e1my \u017eiadate\u013e o prihl\u00e1senie
loginRequesterNotEnabledMessage=\u017diadate\u013e o prihl\u00e1senie nie je povolen\u00fd
bearerOnlyMessage=Aplik\u00e1cie bearer-only nesm\u00fa inicializova\u0165 prihl\u00e1senie pomocou prehliada\u010da
standardFlowDisabledMessage=Klient nesmie iniciova\u0165 prihl\u00e1senie do prehliada\u010da s dan\u00fdm typom odpovede. \u0160tandardn\u00fd tok je pre klienta zak\u00e1zan\u00fd.
implicitFlowDisabledMessage=Klient nem\u00f4\u017ee iniciova\u0165 prihl\u00e1senie do prehliada\u010da s dan\u00fdm typom odpovede. Implicitn\u00fd tok je pre klienta zak\u00e1zan\u00fd.
invalidRedirectUriMessage=Neplatn\u00e9 redirect uri
unsupportedNameIdFormatMessage=Nepodporovan\u00fd NameIDFormat
invalidRequesterMessage=Neplatn\u00fd \u017eiadate\u013e
registrationNotAllowedMessage=Registr\u00e1cia nie je povolen\u00e1
resetCredentialNotAllowedMessage=Obnovenie poverenia nie je povolen\u00e9
permissionNotApprovedMessage=Povolenie nie je schv\u00e1len\u00e9.
noRelayStateInResponseMessage=Neexistuje relay state v odpovedi od poskytovate\u013ea identity.
insufficientPermissionMessage=Nedostato\u010dn\u00e9 povolenia na prepojenie ident\u00edt.
couldNotProceedWithAuthenticationRequestMessage=Nemo\u017eno pokra\u010dova\u0165 s po\u017eiadavkou na autentifik\u00e1ciu poskytovate\u013ea identity.
couldNotObtainTokenMessage=Nemo\u017eno z\u00edska\u0165 token od poskytovate\u013ea identity.
unexpectedErrorRetrievingTokenMessage=Neo\u010dak\u00e1van\u00e1 chyba pri z\u00edskavan\u00ed tokenu od poskytovate\u013ea identity.
unexpectedErrorHandlingResponseMessage=Neo\u010dak\u00e1van\u00e1 chyba pri spracovan\u00ed odpovede od poskytovate\u013ea identity.
identityProviderAuthenticationFailedMessage=Overenie zlyhalo. Nepodarilo sa autentizova\u0165 s poskytovate\u013eom identity.
couldNotSendAuthenticationRequestMessage=Nemo\u017eno odosla\u0165 \u017eiados\u0165 o autentifik\u00e1ciu poskytovate\u013eovi identity.
unexpectedErrorHandlingRequestMessage=Neo\u010dak\u00e1van\u00e1 chyba pri spracovan\u00ed \u017eiadosti o autentifik\u00e1ciu poskytovate\u013eovi identity.
invalidAccessCodeMessage=Neplatn\u00fd pr\u00edstupov\u00fd k\u00f3d.
sessionNotActiveMessage=Session nie je akt\u00edvna.
invalidCodeMessage=Vyskytla sa chyba, prihl\u00e1ste sa znova prostredn\u00edctvom svojej aplik\u00e1cie.
cookieNotFoundMessage=S\u00fabor cookie nebol n\u00e1jden\u00fd. Uistite sa, \u017ee s\u00fa vo va\u0161om prehliada\u010di povolen\u00e9 s\u00fabory cookie.
insufficientLevelOfAuthentication=Po\u017eadovan\u00e1 \u00farove\u0148 overenia nebola splnen\u00e1.
identityProviderUnexpectedErrorMessage=Neo\u010dak\u00e1van\u00e1 chyba pri autentifik\u00e1cii s poskytovate\u013eom identity
identityProviderMissingStateMessage=V odpovedi poskytovate\u013ea identity ch\u00fdba parameter state.
identityProviderMissingCodeOrErrorMessage=V odpovedi poskytovate\u013ea identity ch\u00fdba parameter code alebo error.
identityProviderInvalidResponseMessage=Neplatn\u00e1 odpove\u010f od poskytovate\u013ea identity.
identityProviderInvalidSignatureMessage=Neplatn\u00fd podpis v odpovedi od poskytovate\u013ea identity.
identityProviderNotFoundMessage=Nepodarilo sa n\u00e1js\u0165 poskytovate\u013ea identity s identifik\u00e1torom.
identityProviderLinkSuccess=Svoj e-mail ste \u00faspe\u0161ne overili. Vr\u00e1\u0165te sa sp\u00e4\u0165 do p\u00f4vodn\u00e9ho prehliada\u010da a pokra\u010dujte tam s prihlasovac\u00edmi \u00fadajmi.
staleCodeMessage=T\u00e1to str\u00e1nka u\u017e nie je platn\u00e1, vr\u00e1\u0165te sa sp\u00e4\u0165 do aplik\u00e1cie a znova sa prihl\u00e1ste
realmSupportsNoCredentialsMessage=Realm nepodporuje \u017eiadny typ poverenia.
credentialSetupRequired=Nie je m\u00f4\u017en\u00e9 sa prihl\u00e1si\u0165, vy\u017eaduje sa nastavenie prihlasovac\u00edch \u00fadajov.
identityProviderNotUniqueMessage=Realm podporuje viacer\u00fdch poskytovate\u013eov identity. Nepodarilo sa ur\u010di\u0165, ktor\u00fd poskytovate\u013e toto\u017enosti sa m\u00e1 pou\u017e\u00edva\u0165 na autentifik\u00e1ciu.
emailVerifiedMessage=Va\u0161a e-mailov\u00e1 adresa bola overen\u00e1.
emailVerifiedAlreadyMessage=Va\u0161a e-mailov\u00e1 adresa u\u017e bola overen\u00e1.
staleEmailVerificationLink=Odkaz, na ktor\u00fd ste klikli, je star\u00fd odkaz a u\u017e nie je platn\u00fd. Mo\u017eno ste u\u017e overili svoj e-mail?
identityProviderAlreadyLinkedMessage=Federat\u00edvna identita vr\u00e1ten\u00e1 {0} je u\u017e prepojen\u00e1 s in\u00fdm pou\u017e\u00edvate\u013eom.
confirmAccountLinking=Potvr\u010fte prepojenie \u00fa\u010dtu {0} poskytovate\u013ea toto\u017enosti {1} s va\u0161\u00edm \u00fa\u010dtom.
confirmEmailAddressVerification=Potvr\u010fte platnos\u0165 e-mailovej adresy {0}.
confirmExecutionOfActions=Vykonajte nasleduj\u00face akcie
backToApplication=&laquo; Sp\u00e4\u0165 na aplik\u00e1ciu
missingParameterMessage=Ch\u00fdbaj\u00face parametre \: {0}
clientNotFoundMessage=Klient sa nena\u0161iel.
clientDisabledMessage=Klient bol zneplatnen\u00fd.
invalidParameterMessage=Neplatn\u00fd parameter \: {0}
alreadyLoggedIn=U\u017e ste prihl\u00e1sen\u00fd.
differentUserAuthenticated=V tejto rel\u00e1cii ste u\u017e boli overen\u00ed ako in\u00fd pou\u017e\u00edvate\u013e '' {0} ''. Najsk\u00f4r sa odhl\u00e1ste.
brokerLinkingSessionExpired=Po\u017eadovan\u00e9 prepojenie s \u00fa\u010dtom brokera, ale aktu\u00e1lna rel\u00e1cia u\u017e nie je platn\u00e1.
proceedWithAction=&raquo; Ak chcete pokra\u010dova\u0165, kliknite sem
acrNotFulfilled=Nesplnen\u00e9 po\u017eiadavky na overenie
requiredAction.CONFIGURE_TOTP=Konfigur\u00e1cia OTP
requiredAction.TERMS_AND_CONDITIONS=Zmluvn\u00e9 podmienky
requiredAction.UPDATE_PASSWORD=Aktualizova\u0165 heslo
requiredAction.UPDATE_PROFILE=Aktualizova\u0165 profil
requiredAction.VERIFY_EMAIL=Overi\u0165 e-mail
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generova\u0165 k\u00f3dy obnovy
requiredAction.webauthn-register-passwordless=Webauthn Passwordless Registr\u00e1cia
invalidTokenRequiredActions=Po\u017eadovan\u00e9 akcie zahrnut\u00e9 v odkaze nie s\u00fa platn\u00e9
doX509Login=Budete prihl\u00e1sen\u00ed ako\:
clientCertificate=certifik\u00e1t klienta X509\:
noCertificate=[Bez certifik\u00e1tu]
pageNotFound=Str\u00e1nka nebola n\u00e1jden\u00e1
internalServerError=Vyskytla sa intern\u00e1 chyba servera
console-username=Pou\u017e\u00edvate\u013esk\u00e9 meno\:
console-password=Heslo\:
console-otp=Jednorazov\u00e9 heslo\:
console-new-password=Nov\u00e9 heslo\:
console-confirm-password=Potvrdi\u0165 heslo\:
console-update-password=Vy\u017eaduje sa aktualiz\u00e1cia hesla.
console-verify-email=Potrebujete overi\u0165 svoju e-mailov\u00fa adresu. Odoslali sme e-mail na adresu {0}, ktor\u00fd obsahuje overovac\u00ed k\u00f3d. Zadajte tento k\u00f3d do po\u013ea ni\u017e\u0161ie.
console-email-code=Emailov\u00fd k\u00f3d\:
console-accept-terms=Prij\u00edmate podmienky? [a/n]\:
console-accept=a
openshift.scope.user_info=Inform\u00e1cie o pou\u017e\u00edvate\u013eovi
openshift.scope.user_check-access=Inform\u00e1cie o pr\u00edstupe pou\u017e\u00edvate\u013ea
openshift.scope.user_full=Pln\u00fd pr\u00edstup
openshift.scope.list-projects=Zoznam projektov
saml.post-form.title=Presmerovanie overenia
saml.post-form.message=Presmerovanie, po\u010dkajte pros\u00edm.
saml.post-form.js-disabled=JavaScript je vypnut\u00fd. D\u00f4razne odpor\u00fa\u010dame ho zapn\u00fa\u0165. Ak chcete pokra\u010dova\u0165, kliknite na tla\u010didlo ni\u017e\u0161ie.
saml.artifactResolutionServiceInvalidResponse=Rozpoznanie SAML Artefaktu zlyhalo.
otp-display-name=Authenticator Application
otp-help-text=Zadajte overovac\u00ed k\u00f3d z aplik\u00e1cie autentifik\u00e1tora.
otp-reset-description=Ktor\u00fa konfigur\u00e1ciu OTP treba odstr\u00e1ni\u0165?
password-display-name=Heslo
password-help-text=Prihl\u00e1senie zadan\u00edm hesla.
auth-username-form-display-name=Pou\u017e\u00edvate\u013esk\u00e9 meno
auth-username-form-help-text=Za\u010dnite prihlasovanie zadan\u00edm svojho pou\u017e\u00edvate\u013esk\u00e9ho mena
auth-username-password-form-display-name=Pou\u017e\u00edvate\u013esk\u00e9 meno a heslo
auth-username-password-form-help-text=Prihl\u00e1ste sa zadan\u00edm svojho pou\u017e\u00edvate\u013esk\u00e9ho mena a hesla.
auth-recovery-authn-code-form-display-name=Overovac\u00ed k\u00f3d pre obnovenie
auth-recovery-authn-code-form-help-text=Zadajte overovac\u00ed k\u00f3d obnovy z vopred vygenerovan\u00e9ho zoznamu.
auth-recovery-code-info-message=Zadajte zadan\u00fd k\u00f3d obnovy.
auth-recovery-code-prompt=K\u00f3d obnovy \#{0}
auth-recovery-code-header=Prihl\u00e1senie pomocou overovacieho k\u00f3du obnovy
recovery-codes-error-invalid=Neplatn\u00fd overovac\u00ed k\u00f3d obnovy
recovery-code-config-header=Overovacie k\u00f3dy obnovy
recovery-code-config-warning-title=Tieto k\u00f3dy obnovenia sa po opusten\u00ed tejto str\u00e1nky u\u017e nezobrazia
recovery-code-config-warning-message=Uistite sa, \u017ee ste si ich vytla\u010dili, stiahli alebo skop\u00edrovali do spr\u00e1vcu hesiel a ulo\u017eili. Zru\u0161enie tohto nastavenia odstr\u00e1ni tieto k\u00f3dy na obnovenie z v\u00e1\u0161ho \u00fa\u010dtu.
recovery-codes-print=Tla\u010di\u0165
recovery-codes-download=Stiahnu\u0165
recovery-codes-copy=Kop\u00edrova\u0165
recovery-codes-copied=Kop\u00edrova\u0165
recovery-codes-confirmation-message=Ulo\u017eil som tieto k\u00f3dy na bezpe\u010dn\u00e9 miesto
recovery-codes-action-complete=Ukon\u010di\u0165 nastavenie
recovery-codes-action-cancel=Zru\u0161i\u0165 nastavenie
recovery-codes-download-file-header=Uchovajte tieto k\u00f3dy na obnovu na bezpe\u010dnom mieste.
recovery-codes-download-file-description=K\u00f3dy na obnovenie s\u00fa jednor\u00e1zov\u00e9 pr\u00edstupov\u00e9 k\u00f3dy, ktor\u00e9 v\u00e1m umo\u017enia prihl\u00e1si\u0165 sa do v\u00e1\u0161ho \u00fa\u010dtu, ak nem\u00e1te pr\u00edstup k autentifik\u00e1toru.
recovery-codes-download-file-date=Tieto k\u00f3dy boli vygenerovan\u00e9 d\u0148a
recovery-codes-label-default=K\u00f3dy na obnovenie
webauthn-display-name=Prihlasovac\u00ed k\u013e\u00fa\u010d
webauthn-help-text=Pou\u017eite svoj prihlasovac\u00ed k\u013e\u00fa\u010d na prihl\u00e1senie.
webauthn-passwordless-display-name=Prihlasovac\u00ed k\u013e\u00fa\u010d
webauthn-passwordless-help-text=Pou\u017eite svoj prihlasovac\u00ed k\u013e\u00fa\u010d na prihl\u00e1senie bez hesla.
webauthn-login-title=Prihl\u00e1senie prihlasovac\u00edm k\u013e\u00fa\u010dom
webauthn-registration-title=Registr\u00e1cia prihlasovac\u00edm k\u013e\u00fa\u010dom
webauthn-available-authenticators=Dostupn\u00e9 prihlasovacie k\u013e\u00fa\u010de
webauthn-unsupported-browser-text=WebAuthn nie je podporovan\u00fd t\u00fdmto prehliada\u010dom. Sk\u00faste in\u00fd alebo kontaktujte svojho administr\u00e1tora.
webauthn-doAuthenticate=Prihl\u00e1senie pomocou prihlasovacieho k\u013e\u00fa\u010da
webauthn-createdAt-label=Vytvoren\u00e9
webauthn-error-title=Chybn\u00fd prihlasovac\u00ed k\u013e\u00fa\u010d
webauthn-error-registration=Nepodarilo sa zaregistrova\u0165 prihlasovac\u00ed k\u013e\u00fa\u010d.<br/> {0}
webauthn-error-api-get=Nepodarilo sa overi\u0165 pomocou prihlasovacieho k\u013e\u00fa\u010da.<br/> {0}
webauthn-error-different-user=Prv\u00fd overen\u00fd pou\u017e\u00edvate\u013e nie je ten, ktor\u00fd bol overen\u00fd prihlasovac\u00edm k\u013e\u00fa\u010dom.
webauthn-error-auth-verification=V\u00fdsledok overenia prihlasovacieho k\u013e\u00fa\u010da je neplatn\u00fd.<br/> {0}
webauthn-error-register-verification=V\u00fdsledok registr\u00e1cie prihlasovacieho k\u013e\u00fa\u010da je neplatn\u00fd.<br/> {0}
webauthn-error-user-not-found=Nezn\u00e1my pou\u017e\u00edvate\u013e overen\u00fd prihlasovac\u00edm k\u013e\u00fa\u010dom.
identity-provider-redirector=Pripojenie k in\u00e9mu poskytovate\u013eovi ident\u00edt
identity-provider-login-label=Prihl\u00e1ste sa pomocou
idp-email-verification-display-name=Overenie e-mailu
idp-email-verification-help-text=Pripojte svoj \u00fa\u010det overen\u00edm e-mailu.
idp-username-password-form-display-name=Prihlasovacie meno a heslo
idp-username-password-form-help-text=Pripojte svoj \u00fa\u010det prihl\u00e1sen\u00edm.
finalDeletionConfirmation=Ak vyma\u017eete svoj \u00fa\u010det, nebude mo\u017en\u00e9 ho obnovi\u0165. Ak si chcete \u00fa\u010det ponecha\u0165, kliknite na tla\u010didlo Zru\u0161i\u0165.
irreversibleAction=T\u00e1to akcia je nezvratn\u00e1
deleteAccountConfirm=Potvrdenie odstr\u00e1nenia \u00fa\u010dtu
deletingImplies=Odstr\u00e1nenie v\u00e1\u0161ho \u00fa\u010dtu znamen\u00e1\:
errasingData=Vymazanie v\u0161etk\u00fdch va\u0161ich \u00fadajov
loggingOutImmediately=Okam\u017eit\u00e9 odhl\u00e1senie
accountUnusable=\u017diadne \u010fal\u0161ie pou\u017eitie aplik\u00e1cie nebude s t\u00fdmto \u00fa\u010dtom mo\u017en\u00e9
userDeletedSuccessfully=U\u017e\u00edvate\u013e bol \u00faspe\u0161ne odstr\u00e1nen\u00fd
access-denied=Pr\u00edstup zamietnut\u00fd
access-denied-when-idp-auth=Pr\u00edstup zamietnut\u00fd pri overovan\u00ed pomocou {0}
frontchannel-logout.title=Odhl\u00e1senie
frontchannel-logout.message=Odhlasujete sa z nasleduj\u00facich aplik\u00e1ci\u00ed
logoutConfirmTitle=Odhl\u00e1senie
logoutConfirmHeader=Chcete sa odhl\u00e1si\u0165?
doLogout=Odhl\u00e1si\u0165
readOnlyUsernameMessage=Nem\u00f4\u017eete aktualizova\u0165 svoje pou\u017e\u00edvate\u013esk\u00e9 meno, preto\u017ee je iba na \u010d\u00edtanie.
error-invalid-multivalued-size=Atrib\u00fat {0} mus\u00ed ma\u0165 najmenej {1} {1,choice,0\#hodn\u00f4t|1\#hodnotu|1<hodnoty|4<hodn\u00f4t} a najviac {2} {1,choice,0\#hodn\u00f4t|1\#hodnotu|1<hodnoty|4<hodn\u00f4t}.
shouldBeEqual={0} by mal by\u0165 rovnak\u00fd ako {1}
shouldBeDifferent={0} by mal by\u0165 odli\u0161n\u00fd od {1}
shouldMatchPattern=Vzor by mal zodpoveda\u0165\: `/{0}/`
mustBeAnInteger=Mus\u00ed by\u0165 cel\u00e9 \u010d\u00edslo
notAValidOption=Nie je platn\u00e1 mo\u017enos\u0165
selectAnOption=Vyberte mo\u017enos\u0165
remove=Odstr\u00e1ni\u0165
addValue=Prida\u0165 hodnotu
languages=Jazyky

View File

@ -0,0 +1,199 @@
doLogIn=Logga in
doRegister=Registrera
doRegisterSecurityKey=Registrera
doCancel=Avbryt
doSubmit=Skicka
doYes=Ja
doNo=Nej
doContinue=Forts\u00e4tt
doAccept=Acceptera
doDecline=Avb\u00f6j
doForgotPassword=Gl\u00f6mt l\u00f6senord?
doClickHere=Klicka h\u00e4r
doImpersonate=Imitera
kerberosNotConfigured=Kerberos \u00e4r inte konfigurerat
kerberosNotConfiguredTitle=Kerberos \u00e4r inte konfigurerat
bypassKerberosDetail=Antingen s\u00e5 \u00e4r du inte inloggad via Kerberos eller s\u00e5 \u00e4r inte din webbl\u00e4sare inst\u00e4lld f\u00f6r Kerberosinloggning. V\u00e4nligen klicka p\u00e5 forts\u00e4tt f\u00f6r att logga in p\u00e5 annat s\u00e4tt.
kerberosNotSetUp=Kerberos \u00e4r inte inst\u00e4llt. Du kan inte logga in.
registerWithTitle=Registrera med {0}
registerWithTitleHtml={0}
loginTitle=Logga in till {0}
loginTitleHtml={0}
impersonateTitle={0} Imitera anv\u00e4ndare
impersonateTitleHtml=<strong>{0}</strong> Imitera anv\u00e4ndare
realmChoice=Realm
unknownUser=Ok\u00e4nd anv\u00e4ndare
loginTotpTitle=Inst\u00e4llning av mobilautentiserare
loginProfileTitle=Uppdatera kontoinformation
loginTimeout=Det tog f\u00f6r l\u00e5ng tid att logga in. Inloggningsprocessen b\u00f6rjar om.
oauthGrantTitle=Bevilja \u00e5tkomst
oauthGrantTitleHtml={0}
errorTitle=Vi ber om urs\u00e4kt...
errorTitleHtml=Vi ber om <strong>urs\u00e4kt</strong> ...
emailVerifyTitle=E-postverifiering
emailForgotTitle=Gl\u00f6mt ditt l\u00f6senord?
updatePasswordTitle=Uppdatera l\u00f6senord
codeSuccessTitle=R\u00e4tt kod
codeErrorTitle=Felkod\: {0}
termsTitle=Anv\u00e4ndarvillkor
termsTitleHtml=Anv\u00e4ndarvillkor
termsText=
recaptchaFailed=Ogiltig Recaptcha
recaptchaNotConfigured=Recaptcha kr\u00e4vs, men \u00e4r inte inst\u00e4lld
consentDenied=Samtycke f\u00f6rnekat.
noAccount=Ny anv\u00e4ndare?
username=Anv\u00e4ndarnamn
usernameOrEmail=Anv\u00e4ndarnamn eller e-post
firstName=F\u00f6rnamn
lastName=Efternamn
email=E-post
password=L\u00f6senord
passwordConfirm=Bekr\u00e4fta l\u00f6senord
passwordNew=Nytt l\u00f6senord
passwordNewConfirm=Bekr\u00e4ftelse av nytt l\u00f6senord
rememberMe=Kom ih\u00e5g mig
authenticatorCode=Eng\u00e5ngskod
address=Adress
street=Gata
locality=Postort
region=Stat, Provins eller Region
postal_code=Postnummer
country=Land
emailVerified=E-post verifierad
gssDelegationCredential=GSS Delegation Credential
loginTotpStep1=Installera <a href\="https\://freeotp.github.io/" target\="_blank">FreeOTP</a> eller Google Authenticator p\u00e5 din mobil. B\u00e5da applikationerna finns tillg\u00e4ngliga hos <a href\="https\://play.google.com">Google Play</a> och Apple App Store.
loginTotpStep2=\u00d6ppna applikationen och skanna streckkoden eller skriv i nyckeln
loginTotpStep3=Fyll i eng\u00e5ngskoden som tillhandah\u00e5lls av applikationen och klicka p\u00e5 Spara f\u00f6r att avsluta inst\u00e4llningarna
loginOtpOneTime=Eng\u00e5ngskod
oauthGrantRequest=Godk\u00e4nner du tillg\u00e5ng till de h\u00e4r r\u00e4ttigheterna?
inResource=i
emailVerifyInstruction1=Ett e-postmeddelande med instruktioner om hur du verifierar din e-postadress har skickats till dig.
emailVerifyInstruction2=Har du inte f\u00e5tt en verifikationskod i din e-post?
emailVerifyInstruction3=f\u00f6r att skicka e-postmeddelandet igen.
emailLinkIdpTitle=L\u00e4nkning {0}
emailLinkIdp1=Ett e-postmeddelande med instruktioner om hur du l\u00e4nkar {0} kontot {1} med ditt {2} konto har skickats till dig.
emailLinkIdp2=Har du inte f\u00e5tt en verifikationskod i din e-post?
emailLinkIdp3=f\u00f6r att skicka e-postmeddelandet igen.
backToLogin=&laquo; Tillbaka till inloggningen
emailInstruction=Fyll i ditt anv\u00e4ndarnamn eller din e-postadress, s\u00e5 kommer vi att skicka instruktioner f\u00f6r hur du skapar ett nytt l\u00f6senord.
copyCodeInstruction=V\u00e4nligen kopiera den h\u00e4r koden och klistra in den i din applikation\:
personalInfo=Personlig information\:
role_admin=Administrat\u00f6r
role_realm-admin=Realm-administrat\u00f6r
role_create-realm=Skapa realm
role_create-client=Skapa klient
role_view-realm=Visa realm
role_view-users=Visa anv\u00e4ndare
role_view-applications=Visa applikationer
role_view-clients=Visa klienter
role_view-events=Visa event
role_view-identity-providers=Visa identitetsleverant\u00f6rer
role_manage-realm=Hantera realm
role_manage-users=Hantera anv\u00e4ndare
role_manage-applications=Hantera applikationer
role_manage-identity-providers=Hantera identitetsleverant\u00f6rer
role_manage-clients=Hantera klienter
role_manage-events=Hantera event
role_view-profile=Visa profil
role_manage-account=Hantera konto
role_read-token=L\u00e4s element
role_offline-access=\u00c5tkomst offline
client_account=Konto
client_security-admin-console=S\u00e4kerhetsadministrat\u00f6rskonsol
client_admin-cli=Administrat\u00f6rs-CLI
client_realm-management=Realmhantering
invalidUserMessage=Ogiltigt anv\u00e4ndarnamn eller l\u00f6senord.
invalidEmailMessage=Ogiltig e-postadress.
accountDisabledMessage=Kontot \u00e4r inaktiverat, kontakta administrat\u00f6r.
accountTemporarilyDisabledMessage=Kontot \u00e4r tillf\u00e4lligt inaktiverat, kontakta administrat\u00f6r eller f\u00f6rs\u00f6k igen senare.
expiredCodeMessage=Inloggningen n\u00e5dde en maxtidsgr\u00e4ns. V\u00e4nligen f\u00f6rs\u00f6k igen.
missingFirstNameMessage=V\u00e4nligen ange f\u00f6rnamn.
missingLastNameMessage=V\u00e4nligen ange efternamn.
missingEmailMessage=V\u00e4nligen ange e-post.
missingUsernameMessage=V\u00e4nligen ange anv\u00e4ndarnamn.
missingPasswordMessage=V\u00e4nligen ange l\u00f6senord.
missingTotpMessage=V\u00e4nligen ange autentiseringskod.
notMatchPasswordMessage=L\u00f6senorden matchar inte.
invalidPasswordExistingMessage=Det nuvarande l\u00f6senordet \u00e4r ogiltigt.
invalidPasswordConfirmMessage=L\u00f6senordsbekr\u00e4ftelsen matchar inte.
invalidTotpMessage=Autentiseringskoden \u00e4r ogiltig.
usernameExistsMessage=Anv\u00e4ndarnamnet finns redan.
emailExistsMessage=E-postadressen finns redan.
federatedIdentityExistsMessage=Anv\u00e4ndare med {0} {1} finns redan. V\u00e4nligen logga in till kontohanteringen f\u00f6r att l\u00e4nka kontot.
confirmLinkIdpTitle=Kontot finns redan
federatedIdentityConfirmLinkMessage=Anv\u00e4ndare med {0} {1} finns redan, Hur vill du forts\u00e4tta?
federatedIdentityConfirmReauthenticateMessage=Autentisera f\u00f6r att l\u00e4nka ditt konto med {0}
confirmLinkIdpReviewProfile=Granska profil
confirmLinkIdpContinue=L\u00e4gg till i existerande konto
configureTotpMessage=Du beh\u00f6ver konfigurera mobilautentiseraren f\u00f6r att aktivera ditt konto.
updateProfileMessage=Du beh\u00f6ver uppdatera din anv\u00e4ndarprofil f\u00f6r att aktivera ditt konto.
updatePasswordMessage=Du beh\u00f6ver byta ditt l\u00f6senord f\u00f6r att aktivera ditt konto.
verifyEmailMessage=Du beh\u00f6ver verifiera din e-postadress f\u00f6r att aktivera ditt konto.
linkIdpMessage=Du beh\u00f6ver verifiera din e-postadress f\u00f6r att l\u00e4nka ditt konto med {0}.
emailSentMessage=Du b\u00f6r inom kort motta ett e-postmeddelande med ytterligare instruktioner.
emailSendErrorMessage=E-postmeddelandet kunde inte skickas, f\u00f6rs\u00f6k igen senare.
accountUpdatedMessage=Ditt konto har uppdaterats.
accountPasswordUpdatedMessage=Ditt l\u00f6senord har uppdaterats.
noAccessMessage=Ingen \u00e5tkomst
invalidPasswordMinLengthMessage=Ogiltigt l\u00f6senord. Minsta l\u00e4ngd \u00e4r {0}.
invalidPasswordMinDigitsMessage=Ogiltigt l\u00f6senord\: m\u00e5ste inneh\u00e5lla minst {0} siffror.
invalidPasswordMinLowerCaseCharsMessage=Ogiltigt l\u00f6senord\: m\u00e5ste inneh\u00e5lla minst {0} sm\u00e5 bokst\u00e4ver.
invalidPasswordMinUpperCaseCharsMessage=Ogiltigt l\u00f6senord\: m\u00e5ste inneh\u00e5lla minst {0} stora bokst\u00e4ver.
invalidPasswordMinSpecialCharsMessage=Ogiltigt l\u00f6senord\: m\u00e5ste inneh\u00e5lla minst {0} specialtecken.
invalidPasswordNotUsernameMessage=Ogiltigt l\u00f6senord\: F\u00e5r inte vara samma som anv\u00e4ndarnamnet.
invalidPasswordRegexPatternMessage=Ogiltigt l\u00f6senord\: matchar inte regex m\u00f6nstret(en).
invalidPasswordHistoryMessage=Ogiltigt l\u00f6senord\: F\u00e5r inte vara samma som de senaste {0} l\u00f6senorden.
invalidPasswordGenericMessage=Ogiltigt l\u00f6senord\: Det nya l\u00f6senordet st\u00e4mmer inte med l\u00f6senordspolicyn.
failedToProcessResponseMessage=Misslyckades med att behandla svaret
httpsRequiredMessage=HTTPS kr\u00e4vs
realmNotEnabledMessage=Realm \u00e4r inte aktiverad
invalidRequestMessage=Ogiltig f\u00f6rfr\u00e5gan
failedLogout=Utloggning misslyckades
unknownLoginRequesterMessage=Ok\u00e4nd inloggningsf\u00f6rfr\u00e5gan
loginRequesterNotEnabledMessage=Inloggningsf\u00f6rfr\u00e5garen \u00e4r inte aktiverad
bearerOnlyMessage=Bearer-only-applikationer till\u00e5ts inte att initiera inloggning genom webbl\u00e4sare
standardFlowDisabledMessage=Klienten till\u00e5ts inte att initiera inloggning genom webbl\u00e4sare med det givna response_type. Standardfl\u00f6det \u00e4r inaktiverat f\u00f6r klienten.
implicitFlowDisabledMessage=Klienten till\u00e5ts inte att initiera inloggning genom webbl\u00e4sare med det givna response_type. Villkorsl\u00f6st fl\u00f6de \u00e4r inaktiverat f\u00f6r klienten.
invalidRedirectUriMessage=Ogiltig omdirigeringsadress
unsupportedNameIdFormatMessage=NameIDFormat st\u00f6ds ej
invalidRequesterMessage=Ogiltig f\u00f6rfr\u00e5gare
registrationNotAllowedMessage=Registrering till\u00e5ts ej
resetCredentialNotAllowedMessage=\u00c5terst\u00e4llning av uppgifter till\u00e5ts ej
permissionNotApprovedMessage=R\u00e4ttigheten ej godk\u00e4nd.
noRelayStateInResponseMessage=Inget vidarebefordrat tillst\u00e5nd i svaret fr\u00e5n identitetsleverant\u00f6r.
insufficientPermissionMessage=Otillr\u00e4ckliga tillst\u00e5nd f\u00f6r att l\u00e4nka identiteter.
couldNotProceedWithAuthenticationRequestMessage=Kunde inte forts\u00e4tta med autentiseringsf\u00f6rfr\u00e5gan till identitetsleverant\u00f6r.
couldNotObtainTokenMessage=Kunde inte motta element fr\u00e5n identitetsleverant\u00f6r.
unexpectedErrorRetrievingTokenMessage=Ov\u00e4ntat fel n\u00e4r element h\u00e4mtas fr\u00e5n identitetsleverant\u00f6r.
unexpectedErrorHandlingResponseMessage=Ov\u00e4ntat fel under hantering av svar fr\u00e5n fr\u00e5n identitetsleverant\u00f6r.
identityProviderAuthenticationFailedMessage=Autentiseringen misslyckades. Kunde inte autentisera med identitetsleverant\u00f6r.
couldNotSendAuthenticationRequestMessage=Kunde inte skicka autentiseringsf\u00f6rfr\u00e5gan till identitetsleverant\u00f6r.
unexpectedErrorHandlingRequestMessage=Ov\u00e4ntat fel under hantering av autentiseringsf\u00f6rfr\u00e5gan till identitetsleverant\u00f6r.
invalidAccessCodeMessage=Ogiltig tilltr\u00e4deskod.
sessionNotActiveMessage=Sessionen ej aktiv.
invalidCodeMessage=Ett fel uppstod, v\u00e4nligen logga in igen genom din applikation.
identityProviderUnexpectedErrorMessage=Ov\u00e4ntat fel under autentiseringen med identitetsleverant\u00f6r
identityProviderNotFoundMessage=Kunde inte hitta en identitetsleverant\u00f6r med identifikatorn.
identityProviderLinkSuccess=Ditt konto lyckades med att l\u00e4nka {0} med kontot {1}.
staleCodeMessage=Den h\u00e4r sidan \u00e4r inte l\u00e4ngre giltig, v\u00e4nligen g\u00e5 tillbaka till din applikation och logga in igen
realmSupportsNoCredentialsMessage=Realmen st\u00f6djer inga inloggningstyper.
identityProviderNotUniqueMessage=Realmen st\u00f6djer flera identitetsleverant\u00f6r. Kunde inte avg\u00f6ra vilken identitetsleverant\u00f6r som skall anv\u00e4ndas f\u00f6r autentisering.
emailVerifiedMessage=Din e-postadress har blivit verifierad.
staleEmailVerificationLink=L\u00e4nken du klickade p\u00e5 \u00e4r en gammal, inaktuell l\u00e4nk som inte l\u00e4ngre \u00e4r giltig. Kanske har du redan verifierat din e-post?
backToApplication=&laquo; Tillbaka till applikationen
missingParameterMessage=Parametrar som saknas\: {0}
clientNotFoundMessage=Klienten hittades ej.
clientDisabledMessage=Klienten \u00e4r inaktiverad.
invalidParameterMessage=Ogiltig parameter\: {0}
alreadyLoggedIn=Du \u00e4r redan inloggad.
loginAccountTitle=Logga in till ditt konto
shouldBeEqual={0} b\u00f6r vara lika med {1}
shouldBeDifferent={0} b\u00f6r vara annorlunda \u00e4n {1}
shouldMatchPattern=M\u00f6nstret b\u00f6r matcha\: `/{0}/`
mustBeAnInteger=M\u00e5ste vara ett heltal
notAValidOption=Inte ett giltigt alternativ
selectAnOption=V\u00e4lj ett alternativ
remove=Ta bort
addValue=L\u00e4gg till v\u00e4rde
languages=Spr\u00e5k

View File

@ -0,0 +1,441 @@
doLogIn=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a
doRegister=\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19
doRegisterSecurityKey=\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19
doCancel=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01
doSubmit=\u0e2a\u0e48\u0e07
doBack=\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a
doYes=\u0e43\u0e0a\u0e48
doNo=\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48
doContinue=\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d
doIgnore=\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e43\u0e08
doAccept=\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a
doDecline=\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18
doForgotPassword=\u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19?
doClickHere=\u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48
doImpersonate=\u0e2a\u0e27\u0e21\u0e1a\u0e17\u0e1a\u0e32\u0e17
doTryAgain=\u0e25\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
doTryAnotherWay=\u0e25\u0e2d\u0e07\u0e27\u0e34\u0e18\u0e35\u0e2d\u0e37\u0e48\u0e19
doConfirmDelete=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e25\u0e1a
errorDeletingAccount=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e13\u0e30\u0e25\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35
deletingAccountForbidden=\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d\u0e43\u0e19\u0e01\u0e32\u0e23\u0e25\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e2d\u0e07 \u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a
kerberosNotConfigured=Kerberos \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32
kerberosNotConfiguredTitle=Kerberos \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32
bypassKerberosDetail=\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e14\u0e49\u0e27\u0e22 Kerberos \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e14\u0e49\u0e27\u0e22 Kerberos \u0e01\u0e23\u0e38\u0e13\u0e32\u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48 "\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d" \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e14\u0e22\u0e27\u0e34\u0e18\u0e35\u0e2d\u0e37\u0e48\u0e19
kerberosNotSetUp=Kerberos \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 \u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49
registerTitle=\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19
loginAccountTitle=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
loginTitle=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e1b\u0e22\u0e31\u0e07 {0}
loginTitleHtml={0}
impersonateTitle={0} \u0e2a\u0e27\u0e21\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
impersonateTitleHtml=<strong>{0}</strong> \u0e2a\u0e27\u0e21\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
realmChoice=Realm
unknownUser=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01
loginTotpTitle=\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 Mobile Authenticator
loginProfileTitle=\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
loginIdpReviewProfileTitle=\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
loginTimeout=\u0e01\u0e32\u0e23\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 \u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48
reauthenticate=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d
oauthGrantTitle=\u0e43\u0e2b\u0e49\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e44\u0e27\u0e49\u0e27\u0e32\u0e07\u0e43\u0e08 {0} \u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e17\u0e33\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e27\u0e48\u0e32 {0} \u0e08\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23
oauthGrantReview=\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e1a\u0e17\u0e27\u0e19
oauthGrantTos=\u0e02\u0e49\u0e2d\u0e15\u0e01\u0e25\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
oauthGrantPolicy=\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e04\u0e38\u0e49\u0e21\u0e04\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25
errorTitle=\u0e40\u0e23\u0e32\u0e02\u0e2d\u0e42\u0e17\u0e29...
errorTitleHtml=\u0e40\u0e23\u0e32<strong>\u0e02\u0e2d\u0e42\u0e17\u0e29</strong> ...
emailVerifyTitle=\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25
emailForgotTitle=\u0e25\u0e37\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13?
updateEmailTitle=\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25
emailUpdateConfirmationSentTitle=\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27
emailUpdateConfirmationSent=\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07 {0} \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25
emailUpdatedTitle=\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e16\u0e39\u0e01\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e41\u0e25\u0e49\u0e27
emailUpdated=\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e16\u0e39\u0e01\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e40\u0e1b\u0e47\u0e19 {0} \u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27
updatePasswordTitle=\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
codeSuccessTitle=\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08
codeErrorTitle=\u0e23\u0e2b\u0e31\u0e2a\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\: {0}
displayUnsupported=\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d
browserRequired=\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a
browserContinue=\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e48\u0e2d
browserContinuePrompt=\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e41\u0e25\u0e30\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e48\u0e2d? [y/n]\:
browserContinueAnswer=y
usb=USB
nfc=NFC
bluetooth=Bluetooth
internal=\u0e20\u0e32\u0e22\u0e43\u0e19
unknown=\u0e44\u0e21\u0e48\u0e17\u0e23\u0e32\u0e1a
termsTitle=\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e41\u0e25\u0e30\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02
termsText=
termsPlainText=\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e41\u0e25\u0e30\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e17\u0e35\u0e48\u0e08\u0e30\u0e01\u0e33\u0e2b\u0e19\u0e14
termsAcceptanceRequired=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e41\u0e25\u0e30\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32
acceptTerms=\u0e09\u0e31\u0e19\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e41\u0e25\u0e30\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02
recaptchaFailed=Recaptcha \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
recaptchaNotConfigured=\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49 Recaptcha \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32
consentDenied=\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18
noAccount=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48?
username=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
usernameOrEmail=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25
firstName=\u0e0a\u0e37\u0e48\u0e2d
givenName=\u0e0a\u0e37\u0e48\u0e2d
fullName=\u0e0a\u0e37\u0e48\u0e2d-\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25
lastName=\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25
familyName=\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25
email=\u0e2d\u0e35\u0e40\u0e21\u0e25
password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
passwordConfirm=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
passwordNew=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48
passwordNewConfirm=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48
rememberMe=\u0e08\u0e14\u0e08\u0e33\u0e09\u0e31\u0e19\u0e44\u0e27\u0e49
authenticatorCode=\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27
address=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48
street=\u0e16\u0e19\u0e19
locality=\u0e2d\u0e33\u0e40\u0e20\u0e2d/\u0e40\u0e02\u0e15
region=\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e31\u0e14
postal_code=\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e1b\u0e23\u0e29\u0e13\u0e35\u0e22\u0e4c
country=\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28
emailVerified=\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27
website=\u0e40\u0e27\u0e47\u0e1a\u0e44\u0e0b\u0e15\u0e4c
phoneNumber=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c
phoneNumberVerified=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e17\u0e35\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27
gender=\u0e40\u0e1e\u0e28
birthday=\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14
zoneinfo=\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32
gssDelegationCredential=GSS Delegation Credential
logoutOtherSessions=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e32\u0e01\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e2d\u0e37\u0e48\u0e19
profileScopeConsentText=\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
emailScopeConsentText=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25
addressScopeConsentText=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48
phoneScopeConsentText=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c
offlineAccessScopeConsentText=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c
samlRoleListScopeConsentText=\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e02\u0e2d\u0e07\u0e09\u0e31\u0e19
rolesScopeConsentText=\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
restartLoginTooltip=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48
loginTotpIntro=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e1a\u0e1a\u0e43\u0e0a\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e19\u0e35\u0e49
loginTotpStep1=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e43\u0e14\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e32\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49\u0e25\u0e07\u0e43\u0e19\u0e42\u0e17\u0e23\u0e28\u0e31\u0e1e\u0e17\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\:
loginTotpStep2=\u0e40\u0e1b\u0e34\u0e14\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e41\u0e25\u0e30\u0e2a\u0e41\u0e01\u0e19\u0e1a\u0e32\u0e23\u0e4c\u0e42\u0e04\u0e49\u0e14\:
loginTotpStep3=\u0e43\u0e2a\u0e48\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e35\u0e48\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e41\u0e25\u0e30\u0e04\u0e25\u0e34\u0e01 "\u0e2a\u0e48\u0e07" \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32
loginTotpStep3DeviceName=\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e0a\u0e48\u0e27\u0e22\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c OTP \u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
loginTotpManualStep2=\u0e40\u0e1b\u0e34\u0e14\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e41\u0e25\u0e30\u0e43\u0e2a\u0e48\u0e04\u0e35\u0e22\u0e4c\:
loginTotpManualStep3=\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49\u0e2b\u0e32\u0e01\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e30\u0e1a\u0e38\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e44\u0e14\u0e49\:
loginTotpUnableToScan=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e41\u0e01\u0e19\u0e44\u0e14\u0e49?
loginTotpScanBarcode=\u0e2a\u0e41\u0e01\u0e19\u0e1a\u0e32\u0e23\u0e4c\u0e42\u0e04\u0e49\u0e14?
loginCredential=Credential \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e15\u0e31\u0e27
loginOtpOneTime=\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27
loginTotpType=\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17
loginTotpAlgorithm=\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e27\u0e34\u0e18\u0e35
loginTotpDigits=\u0e2b\u0e25\u0e31\u0e01
loginTotpInterval=\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32
loginTotpCounter=Counter
loginTotpDeviceName=\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c
loginTotp.totp=Time-based
loginTotp.hotp=Counter-based
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a
oauthGrantRequest=\u0e04\u0e38\u0e13\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?
inResource=\u0e43\u0e19
oauth2DeviceVerificationTitle=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c
verifyOAuth2DeviceUserCode=\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e30\u0e04\u0e25\u0e34\u0e01 "\u0e2a\u0e48\u0e07"
oauth2DeviceInvalidUserCodeMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e42\u0e1b\u0e23\u0e14\u0e25\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
oauth2DeviceExpiredUserCodeMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e41\u0e25\u0e49\u0e27 \u0e42\u0e1b\u0e23\u0e14\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e30\u0e25\u0e2d\u0e07\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
oauth2DeviceVerificationCompleteHeader=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08
oauth2DeviceVerificationCompleteMessage=\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e41\u0e25\u0e30\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
oauth2DeviceVerificationFailedHeader=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27
oauth2DeviceVerificationFailedMessage=\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e41\u0e25\u0e30\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e30\u0e25\u0e2d\u0e07\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
oauth2DeviceConsentDeniedMessage=\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e43\u0e2b\u0e49\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18
oauth2DeviceAuthorizationGrantDisabledMessage=\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e34\u0e19\u0e22\u0e2d\u0e21\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21 OAuth 2.0 Device Authorization Grant \u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e19\u0e35\u0e49\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
emailVerifyInstruction1=\u0e44\u0e14\u0e49\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 {0}
emailVerifyInstruction2=\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13?
emailVerifyInstruction3=\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
emailLinkIdpTitle=\u0e25\u0e34\u0e07\u0e01\u0e4c {0}
emailLinkIdp1=\u0e44\u0e14\u0e49\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35 {0} {1} \u0e01\u0e31\u0e1a {2} \u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
emailLinkIdp2=\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13?
emailLinkIdp3=\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
emailLinkIdp4=\u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e43\u0e19\u0e1a\u0e23\u0e32\u0e27\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e2d\u0e37\u0e48\u0e19\u0e41\u0e25\u0e49\u0e27
emailLinkIdp5=\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d
backToLogin=&laquo; \u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a
emailInstruction=\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e40\u0e23\u0e32\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13
emailInstructionUsername=\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e40\u0e23\u0e32\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13
copyCodeInstruction=\u0e42\u0e1b\u0e23\u0e14\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e25\u0e30\u0e27\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e19\u0e35\u0e49\u0e43\u0e19\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\:
pageExpiredTitle=\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e41\u0e25\u0e49\u0e27
pageExpiredMsg1=\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
pageExpiredMsg2=\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e48\u0e2d
personalInfo=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\:
role_admin=\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a
role_realm-admin=\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a realm
role_create-realm=\u0e2a\u0e23\u0e49\u0e32\u0e07 realm
role_create-client=\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
role_view-realm=\u0e14\u0e39 realm
role_view-users=\u0e14\u0e39\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
role_view-applications=\u0e14\u0e39\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19
role_view-clients=\u0e14\u0e39\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
role_view-events=\u0e14\u0e39\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c
role_view-identity-providers=\u0e14\u0e39\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
role_manage-realm=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 realm
role_manage-users=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
role_manage-applications=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19
role_manage-identity-providers=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
role_manage-clients=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
role_manage-events=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c
role_view-profile=\u0e14\u0e39\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c
role_manage-account=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e0d\u0e0a\u0e35
role_manage-account-links=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35
role_read-token=\u0e2d\u0e48\u0e32\u0e19\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19
role_offline-access=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c
client_account=\u0e1a\u0e31\u0e0d\u0e0a\u0e35
client_account-console=\u0e04\u0e2d\u0e19\u0e42\u0e0b\u0e25\u0e1a\u0e31\u0e0d\u0e0a\u0e35
client_security-admin-console=\u0e04\u0e2d\u0e19\u0e42\u0e0b\u0e25\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
client_admin-cli=CLI \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a
client_realm-management=\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 realm
client_broker=\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19
requiredFields=\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e38
invalidUserMessage=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
invalidUsernameMessage=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
invalidUsernameOrEmailMessage=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
invalidPasswordMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
invalidEmailMessage=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
accountDisabledMessage=\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
accountTemporarilyDisabledMessage=\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27 \u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19\u0e20\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e07
expiredCodeMessage=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
expiredActionMessage=\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e17\u0e33\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49
expiredActionTokenNoSessionMessage=\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e17\u0e33\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32
expiredActionTokenSessionExistsMessage=\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e17\u0e33\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48
sessionLimitExceeded=\u0e21\u0e35\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e21\u0e32\u0e01\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b
missingFirstNameMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d
missingLastNameMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e19\u0e32\u0e21\u0e2a\u0e01\u0e38\u0e25
missingEmailMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e2d\u0e35\u0e40\u0e21\u0e25
missingUsernameMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
missingPasswordMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
missingTotpMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e02\u0e2d\u0e07 authenticator
missingTotpDeviceNameMessage=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c
notMatchPasswordMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19
error-invalid-value=\u0e04\u0e48\u0e32\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-invalid-blank=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e04\u0e48\u0e32
error-empty=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e04\u0e48\u0e32
error-invalid-length=\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 {1} \u0e41\u0e25\u0e30 {2} \u0e2d\u0e31\u0e01\u0e29\u0e23
error-invalid-length-too-short=\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\u0e04\u0e37\u0e2d {1} \u0e2d\u0e31\u0e01\u0e29\u0e23
error-invalid-length-too-long=\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e04\u0e37\u0e2d {2} \u0e2d\u0e31\u0e01\u0e29\u0e23
error-invalid-email=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-invalid-number=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-number-out-of-range=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 {1} \u0e41\u0e25\u0e30 {2}
error-number-out-of-range-too-small=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e04\u0e48\u0e32\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33 {1}
error-number-out-of-range-too-big=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e04\u0e48\u0e32\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 {2}
error-pattern-no-match=\u0e04\u0e48\u0e32\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-invalid-uri=URL \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-invalid-uri-scheme=scheme URL \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-invalid-uri-fragment=fragment URL \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-user-attribute-required=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e19\u0e35\u0e49
error-invalid-date=\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-user-attribute-read-only=\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27
error-username-invalid-character=\u0e04\u0e48\u0e32\u0e21\u0e35\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-person-name-invalid-character=\u0e04\u0e48\u0e32\u0e21\u0e35\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
error-reset-otp-missing-id=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 OTP
invalidPasswordExistingMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e14\u0e34\u0e21\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
invalidPasswordBlacklistedMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e14\u0e33
invalidPasswordConfirmMessage=\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19
invalidTotpMessage=\u0e23\u0e2b\u0e31\u0e2a Authenticator \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
usernameExistsMessage=\u0e21\u0e35\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27
emailExistsMessage=\u0e21\u0e35\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27
federatedIdentityExistsMessage=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35 {0} {1} \u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35
federatedIdentityUnavailableMessage=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 {0} \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19 {1} \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
federatedIdentityUnmatchedEssentialClaimMessage=\u0e44\u0e2d\u0e14\u0e35\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e2d\u0e01\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e49\u0e32\u0e07\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
confirmLinkIdpTitle=\u0e21\u0e35\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27
federatedIdentityConfirmLinkMessage=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35 {0} {1} \u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23\u0e15\u0e48\u0e2d?
federatedIdentityConfirmReauthenticateMessage=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e15\u0e31\u0e27\u0e15\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e01\u0e31\u0e1a {0}
nestedFirstBrokerFlowMessage=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 {0} {1} \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01
confirmLinkIdpReviewProfile=\u0e23\u0e35\u0e27\u0e34\u0e27\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c
confirmLinkIdpContinue=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48
configureTotpMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 Mobile Authenticator \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
configureBackupCodesMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
updateProfileMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
updatePasswordMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
updateEmailMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
resetPasswordMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
verifyEmailMessage=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
linkIdpMessage=\u0e04\u0e38\u0e13\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e01\u0e31\u0e1a {0}
emailSentMessage=\u0e04\u0e38\u0e13\u0e08\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e43\u0e19\u0e44\u0e21\u0e48\u0e0a\u0e49\u0e32\u0e19\u0e35\u0e49\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21
emailSendErrorMessage=\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 \u0e42\u0e1b\u0e23\u0e14\u0e25\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e43\u0e19\u0e20\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e07
accountUpdatedMessage=\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e41\u0e25\u0e49\u0e27
accountPasswordUpdatedMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e41\u0e25\u0e49\u0e27
delegationCompleteHeader=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08
delegationCompleteMessage=\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e41\u0e25\u0e30\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e04\u0e2d\u0e19\u0e42\u0e0b\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13.
delegationFailedHeader=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27
delegationFailedMessage=\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e41\u0e25\u0e30\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e04\u0e2d\u0e19\u0e42\u0e0b\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e30\u0e25\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07.
noAccessMessage=\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07
invalidPasswordMinLengthMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33 {0} \u0e2d\u0e31\u0e01\u0e29\u0e23
invalidPasswordMaxLengthMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 {0} \u0e2d\u0e31\u0e01\u0e29\u0e23
invalidPasswordMinDigitsMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 {0} \u0e2b\u0e25\u0e31\u0e01
invalidPasswordMinLowerCaseCharsMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e40\u0e25\u0e47\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 {0} \u0e2d\u0e31\u0e01\u0e29\u0e23
invalidPasswordMinUpperCaseCharsMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 {0} \u0e2d\u0e31\u0e01\u0e29\u0e23
invalidPasswordMinSpecialCharsMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22 {0} \u0e2d\u0e31\u0e01\u0e29\u0e23
invalidPasswordNotUsernameMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
invalidPasswordNotEmailMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e2d\u0e35\u0e40\u0e21\u0e25
invalidPasswordRegexPatternMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a regex
invalidPasswordHistoryMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e1a {0} \u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14
invalidPasswordGenericMessage=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: \u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
failedToProcessResponseMessage=\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27
httpsRequiredMessage=\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49 HTTPS
realmNotEnabledMessage=\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49 realm
invalidRequestMessage=\u0e04\u0e33\u0e02\u0e2d\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
successLogout=\u0e04\u0e38\u0e13\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e49\u0e27
failedLogout=\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27
unknownLoginRequesterMessage=\u0e1c\u0e39\u0e49\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01
loginRequesterNotEnabledMessage=\u0e1c\u0e39\u0e49\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
bearerOnlyMessage=\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 Bearer-only \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c
standardFlowDisabledMessage=\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e14\u0e49\u0e27\u0e22 response_type \u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38 Standard flow \u0e16\u0e39\u0e01\u0e23\u0e30\u0e07\u0e31\u0e1a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
implicitFlowDisabledMessage=\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e14\u0e49\u0e27\u0e22 response_type \u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38 Implicit flow \u0e16\u0e39\u0e01\u0e23\u0e30\u0e07\u0e31\u0e1a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
invalidRedirectUriMessage=Uri redirect \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
unsupportedNameIdFormatMessage=\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a NameIDFormat \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a
invalidRequesterMessage=\u0e1c\u0e39\u0e49\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
registrationNotAllowedMessage=\u0e44\u0e21\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19
resetCredentialNotAllowedMessage=\u0e44\u0e21\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15 Credential
permissionNotApprovedMessage=\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c
noRelayStateInResponseMessage=\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e16\u0e32\u0e19\u0e30 relay \u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
insufficientPermissionMessage=\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e44\u0e21\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e15\u0e31\u0e27\u0e15\u0e19
couldNotProceedWithAuthenticationRequestMessage=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
couldNotObtainTokenMessage=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e31\u0e1a\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
unexpectedErrorRetrievingTokenMessage=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14\u0e02\u0e13\u0e30\u0e23\u0e31\u0e1a\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
unexpectedErrorHandlingResponseMessage=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14\u0e02\u0e13\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
identityProviderAuthenticationFailedMessage=\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
couldNotSendAuthenticationRequestMessage=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
unexpectedErrorHandlingRequestMessage=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14\u0e02\u0e13\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e04\u0e33\u0e02\u0e2d\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
invalidAccessCodeMessage=Access code \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
sessionNotActiveMessage=\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19
invalidCodeMessage=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
cookieNotFoundMessage=\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e04\u0e38\u0e01\u0e01\u0e35\u0e49 \u0e42\u0e1b\u0e23\u0e14\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e43\u0e2b\u0e49\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e04\u0e38\u0e01\u0e01\u0e35\u0e49\u0e43\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e41\u0e25\u0e49\u0e27
insufficientLevelOfAuthentication=\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e21\u0e35\u0e44\u0e21\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d
identityProviderUnexpectedErrorMessage=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14\u0e02\u0e13\u0e30\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
identityProviderMissingStateMessage=\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c state \u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19
identityProviderInvalidResponseMessage=\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
identityProviderInvalidSignatureMessage=\u0e25\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
identityProviderNotFoundMessage=\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e19\u0e35\u0e49
identityProviderLinkSuccess=\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e40\u0e14\u0e34\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e30\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e19\u0e31\u0e48\u0e19
staleCodeMessage=\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e35\u0e01\u0e15\u0e48\u0e2d\u0e44\u0e1b \u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e30\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07
realmSupportsNoCredentialsMessage=realm \u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 credential \u0e43\u0e14 \u0e46
credentialSetupRequired=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e15\u0e31\u0e27
identityProviderNotUniqueMessage=realm \u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e41\u0e2b\u0e25\u0e48\u0e07 \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e14\u0e49\u0e27\u0e48\u0e32\u0e04\u0e27\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e43\u0e14
emailVerifiedMessage=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e49\u0e27
staleEmailVerificationLink=\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e04\u0e25\u0e34\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e01\u0e48\u0e32\u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e1a\u0e32\u0e07\u0e17\u0e35\u0e04\u0e38\u0e13\u0e2d\u0e32\u0e08\u0e08\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e41\u0e25\u0e49\u0e27
identityProviderAlreadyLinkedMessage=Federated identity \u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\u0e21\u0e32\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 {0} \u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e41\u0e25\u0e49\u0e27
confirmAccountLinking=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35 {0} \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19 {1} \u0e01\u0e31\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
confirmEmailAddressVerification=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25 {0}
confirmExecutionOfActions=\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49
backToApplication=&laquo; \u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19
missingParameterMessage=\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\: {0}
clientNotFoundMessage=\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c
clientDisabledMessage=\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
invalidParameterMessage=\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\: {0}
alreadyLoggedIn=\u0e04\u0e38\u0e13\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e49\u0e27
differentUserAuthenticated=\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2d\u0e37\u0e48\u0e19 ''{0}'' \u0e43\u0e19\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e19\u0e35\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e48\u0e2d\u0e19
brokerLinkingSessionExpired=\u0e44\u0e14\u0e49\u0e02\u0e2d\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e42\u0e1a\u0e23\u0e01\u0e40\u0e01\u0e2d\u0e23\u0e4c \u0e41\u0e15\u0e48\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27
proceedWithAction=&raquo; \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23
acrNotFulfilled=\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07
requiredAction.CONFIGURE_TOTP=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 OTP
requiredAction.terms_and_conditions=\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e41\u0e25\u0e30\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02
requiredAction.UPDATE_PASSWORD=\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
requiredAction.UPDATE_PROFILE=\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c
requiredAction.VERIFY_EMAIL=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19
requiredAction.webauthn-register-passwordless=Webauthn Register Passwordless
invalidTokenRequiredActions=\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e17\u0e33\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
doX509Login=\u0e04\u0e38\u0e13\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e19\u0e10\u0e32\u0e19\u0e30\:
clientCertificate=\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c X509\:
noCertificate=[\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07]
pageNotFound=\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2b\u0e19\u0e49\u0e32
internalServerError=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c
console-username=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\:
console-password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\:
console-otp=\u0e23\u0e2b\u0e31\u0e2a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\:
console-new-password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\:
console-confirm-password=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\:
console-update-password=\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
console-verify-email=\u0e04\u0e38\u0e13\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e44\u0e1b\u0e17\u0e35\u0e48 {0} \u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e25\u0e07\u0e43\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07
console-email-code=\u0e23\u0e2b\u0e31\u0e2a\u0e2d\u0e35\u0e40\u0e21\u0e25\:
console-accept-terms=\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14? [y/n]\:
console-accept=y
openshift.scope.user_info=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
openshift.scope.user_check-access=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
openshift.scope.user_full=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a
openshift.scope.list-projects=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e04
saml.post-form.title=\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07
saml.post-form.message=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 \u0e42\u0e1b\u0e23\u0e14\u0e23\u0e2d
saml.post-form.js-disabled=JavaScript \u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e40\u0e23\u0e32\u0e02\u0e2d\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e1b\u0e38\u0e48\u0e21\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d
saml.artifactResolutionServiceInvalidResponse=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 resolve artifact \u0e44\u0e14\u0e49
otp-display-name=\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19 Authenticator
otp-help-text=\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e08\u0e32\u0e01\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19 Authenticator
otp-reset-description=\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 OTP \u0e43\u0e14\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e16\u0e39\u0e01\u0e25\u0e1a?
password-display-name=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
password-help-text=\u0e25\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
auth-username-form-display-name=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
auth-username-form-help-text=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e25\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19
auth-username-password-form-display-name=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
auth-username-password-form-help-text=\u0e25\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e43\u0e0a\u0e49\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
auth-recovery-authn-code-form-display-name=\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19
auth-recovery-authn-code-form-help-text=\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e08\u0e32\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32
auth-recovery-code-info-message=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38
auth-recovery-code-prompt=\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19 \#{0}
auth-recovery-code-header=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19
recovery-codes-error-invalid=\u0e23\u0e2b\u0e31\u0e2a\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
recovery-code-config-header=\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19
recovery-code-config-warning-title=\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e44\u0e21\u0e48\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e2d\u0e35\u0e01\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27
recovery-code-config-warning-message=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e43\u0e2b\u0e49\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e1e\u0e34\u0e21\u0e1e\u0e4c \u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a \u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 \u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 \u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e16\u0e39\u0e01\u0e25\u0e1a\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
recovery-codes-print=\u0e1e\u0e34\u0e21\u0e1e\u0e4c
recovery-codes-download=\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14
recovery-codes-copy=\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01
recovery-codes-copied=\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27
recovery-codes-confirmation-message=\u0e09\u0e31\u0e19\u0e44\u0e14\u0e49\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e44\u0e27\u0e49\u0e43\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e41\u0e25\u0e49\u0e27
recovery-codes-action-complete=\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c
recovery-codes-action-cancel=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32
recovery-codes-download-file-header=\u0e40\u0e01\u0e47\u0e1a\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e44\u0e27\u0e49\u0e43\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
recovery-codes-download-file-description=\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e04\u0e37\u0e2d\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e35\u0e48\u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49\u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 authenticator \u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
recovery-codes-download-file-date=\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d
recovery-codes-label-default=\u0e23\u0e2b\u0e31\u0e2a\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19
webauthn-display-name=\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-help-text=\u0e43\u0e0a\u0e49\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a
webauthn-passwordless-display-name=\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-passwordless-help-text=\u0e43\u0e0a\u0e49\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
webauthn-login-title=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-registration-title=\u0e01\u0e32\u0e23\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-available-authenticators=\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48
webauthn-unsupported-browser-text=\u0e40\u0e27\u0e47\u0e1a\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19 WebAuthn \u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e2d\u0e37\u0e48\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
webauthn-doAuthenticate=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-createdAt-label=\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27
webauthn-error-title=\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-error-registration=\u0e01\u0e32\u0e23\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<br/> {0}
webauthn-error-api-get=\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<br/> {0}
webauthn-error-different-user=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e23\u0e32\u0e22\u0e41\u0e23\u0e01\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e23\u0e32\u0e22\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e08\u0e32\u0e01\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
webauthn-error-auth-verification=\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07<br/> {0}
webauthn-error-register-verification=\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07<br/> {0}
webauthn-error-user-not-found=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e08\u0e32\u0e01\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22
identity-provider-redirector=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e15\u0e19\u0e2d\u0e37\u0e48\u0e19
identity-provider-login-label=\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49
idp-email-verification-display-name=\u0e01\u0e32\u0e23\u0e17\u0e27\u0e19\u0e2a\u0e2d\u0e1a\u0e2d\u0e35\u0e40\u0e21\u0e25
idp-email-verification-help-text=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e17\u0e27\u0e19\u0e2a\u0e2d\u0e1a\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
idp-username-password-form-display-name=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19
idp-username-password-form-help-text=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e42\u0e14\u0e22\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a
finalDeletionConfirmation=\u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e25\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e08\u0e30\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e44\u0e14\u0e49 \u0e2b\u0e32\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e43\u0e2b\u0e49\u0e04\u0e25\u0e34\u0e01\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01
irreversibleAction=\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e17\u0e33\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e14\u0e49
deleteAccountConfirm=\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e01\u0e32\u0e23\u0e25\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35
deletingImplies=\u0e01\u0e32\u0e23\u0e25\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07\:
errasingData=\u0e01\u0e32\u0e23\u0e25\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13
loggingOutImmediately=\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e19\u0e17\u0e31\u0e19\u0e17\u0e35
accountUnusable=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49
userDeletedSuccessfully=\u0e25\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27
access-denied=\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07
access-denied-when-idp-auth=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e15\u0e31\u0e27\u0e08\u0e23\u0e34\u0e07\u0e14\u0e49\u0e27\u0e22 {0}
frontchannel-logout.title=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a
frontchannel-logout.message=\u0e04\u0e38\u0e13\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e32\u0e01\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49
logoutConfirmTitle=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a
logoutConfirmHeader=\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?
doLogout=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a
readOnlyUsernameMessage=\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27
shouldBeEqual={0} \u0e04\u0e27\u0e23\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e1a {1}
shouldBeDifferent={0} \u0e04\u0e27\u0e23\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01 {1}
shouldMatchPattern=\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e04\u0e27\u0e23\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\: `/{0}/`
mustBeAnInteger=\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21
notAValidOption=\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07
selectAnOption=\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01
remove=\u0e25\u0e1a
addValue=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32
languages=\u0e20\u0e32\u0e29\u0e32

View File

@ -0,0 +1,268 @@
doLogIn=Oturum a\u00e7
doRegister=Kay\u0131t ol
doRegisterSecurityKey=Kay\u0131t ol
doCancel=\u0130ptal et
doSubmit=G\u00f6nder
doYes=Evet
doNo=Hay\u0131r
doContinue=Devam et
doIgnore=Yoksay
doAccept=Kabul Et
doDecline=Reddet
doForgotPassword=Parolan\u0131z\u0131 m\u0131 unuttunuz?
doClickHere=Buraya T\u0131klay\u0131n
doImpersonate=Ki\u015fiselle\u015ftir
kerberosNotConfigured=Kerberos Tan\u0131mlanmam\u0131\u015f
kerberosNotConfiguredTitle=Kerberos Tan\u0131mlanmam\u0131\u015f
bypassKerberosDetail=Ya Kerberos ile giri\u015f yapmad\u0131n\u0131z veya taray\u0131c\u0131n\u0131z Kerberos giri\u015f i\u00e7in ayarlanmam\u0131\u015f. Di\u011fer yollarla giri\u015f yapmak i\u00e7in l\u00fctfen devam''a t\u0131klay\u0131n
kerberosNotSetUp=Kerberos kurulmad\u0131. Giri\u015f yapamazs\u0131n.
registerTitle=Kay\u0131t ol
loginTitle={0} adresinde oturum a\u00e7\u0131n
loginTitleHtml={0}
impersonateTitle={0} Kullan\u0131c\u0131 kimli\u011fine b\u00fcr\u00fcn
impersonateTitleHtml=<strong>{0}</strong> Kullan\u0131c\u0131 kimli\u011fine b\u00fcr\u00fcn
realmChoice=Realm
unknownUser=Bilinmeyen kullan\u0131c\u0131
loginTotpTitle=Mobil Kimlik Do\u011frulama Kurulumu
loginProfileTitle=Hesap bilgilerini G\u00fcncelle
loginTimeout=Giri\u015f yapmak \u00e7ok uzun s\u00fcrd\u00fc. Giri\u015f s\u00fcreci ba\u015ftan ba\u015flayacak.
oauthGrantTitle={0} adresine Eri\u015fim Ver
oauthGrantTitleHtml={0}
errorTitle=\u00dczg\u00fcn\u00fcz...
errorTitleHtml=<strong>\u00dczg\u00fcn\u00fcz ...</strong>
emailVerifyTitle=Eposta Do\u011frulama
emailForgotTitle=Parolan\u0131z\u0131 m\u0131 unuttunuz?
updatePasswordTitle=\u015eifre g\u00fcncelle
codeSuccessTitle=Ba\u015far\u0131l\u0131 i\u015flem kodu
codeErrorTitle=Hatal\u0131 i\u015flem kodu\: {0}
displayUnsupported=\u0130stenen g\u00f6sterim t\u00fcr\u00fc desteklenmiyor
browserRequired=Giri\u015f i\u00e7in tary\u0131c\u0131 gerekli
browserContinue=Giri\u015fe devam etmek i\u00e7in taray\u0131c\u0131 gerekli
browserContinuePrompt=Taray\u0131c\u0131 a\u00e7 ve giri\u015fe devam et? [e/h]\:
browserContinueAnswer=h
termsTitle=\u015eartlar ve ko\u015fullar
termsText=
termsPlainText=Tan\u0131mlanacak \u015fartlar ve ko\u015fullar.
recaptchaFailed=Ge\u00e7ersiz Recaptcha
recaptchaNotConfigured=Recaptcha gerekli, ancak yap\u0131land\u0131r\u0131lmam\u0131\u015f
consentDenied=Onay reddedildi.
noAccount=Yeni kullan\u0131c\u0131?
username=Kullan\u0131c\u0131 Ad\u0131
usernameOrEmail=Kullan\u0131c\u0131 ad\u0131 veya E-mail
firstName=Ad
givenName=Ad
fullName=Ad Soyad
lastName=Soyad
familyName=Soyad
email=E-Mail
password=\u015eifre
passwordConfirm=\u015eifre Do\u011frulama
passwordNew=Yeni \u015eifre
passwordNewConfirm=eni \u015eifre Do\u011frulama
rememberMe=Beni Hat\u0131rla
authenticatorCode=Kimlik Do\u011frulama Kodu
address=Adres
street=Cadde
locality=Semt
region=B\u00f6lge
postal_code=Posta Kodu
country=\u00dclke
emailVerified=E-Mail Do\u011fruland\u0131
gssDelegationCredential=GSS Yetki Bilgisi
profileScopeConsentText=Kullan\u0131c\u0131 profili
emailScopeConsentText=E-Mai Adresi
addressScopeConsentText=Adres
phoneScopeConsentText=Telefon Numaras\u0131
offlineAccessScopeConsentText=\u00c7evrimd\u0131\u015f\u0131 Eri\u015fim
samlRoleListScopeConsentText=Rollerim
rolesScopeConsentText=Kullan\u0131c\u0131 rolleri
loginTotpIntro=Bu hesaba eri\u015fmek i\u00e7in bir Tek Kullan\u0131ml\u0131k \u015eifre olu\u015fturmal\u0131s\u0131n\u0131z.
loginTotpStep1=Cep telefonunuzda a\u015fa\u011f\u0131daki uygulamalardan birini y\u00fckleyin
loginTotpStep2=Uygulamay\u0131 a\u00e7\u0131n ve barkodu taray\u0131n
loginTotpStep3=Uygulama taraf\u0131ndan sa\u011flanan tek seferlik kodu girin ve kurulumu tamamlamak i\u00e7in G\u00f6nder''i t\u0131klay\u0131n.
loginTotpManualStep2=Uygulamay\u0131 a\u00e7\u0131n ve anahtar\u0131 girin
loginTotpManualStep3=Uygulama bunlar\u0131 ayarlamaya izin veriyorsa a\u015fa\u011f\u0131daki yap\u0131land\u0131rma de\u011ferlerini kullan\u0131n.
loginTotpUnableToScan=Taranam\u0131yor?
loginTotpScanBarcode=Barkod tara?
loginOtpOneTime=Tek seferlik kod
loginTotpType=Tip
loginTotpAlgorithm=Algoritma
loginTotpDigits=Basamak
loginTotpInterval=Aral\u0131k
loginTotpCounter=Saya\u00e7
loginTotp.totp=Zaman Tabanl\u0131
loginTotp.hotp=Saya\u00e7 Tabanl\u0131
oauthGrantRequest=Bu eri\u015fim ayr\u0131cal\u0131klar\u0131 veriyor musunuz?
inResource=i\u00e7inde
emailVerifyInstruction1=E-posta adresinizi do\u011frulamak i\u00e7in talimatlar\u0131 i\u00e7eren bir e-posta size g\u00f6nderildi.
emailVerifyInstruction2=E-postan\u0131zda do\u011frulama kodu almad\u0131n\u0131z m\u0131?
emailVerifyInstruction3=e-postay\u0131 yeniden g\u00f6ndermek i\u00e7in.
emailLinkIdpTitle=Ba\u011flant\u0131 {0}
emailLinkIdp1={1} hesab\u0131n\u0131 {2} hesab\u0131n\u0131za ba\u011flayan talimatlar\u0131 i\u00e7eren bir e-posta size g\u00f6nderildi.
emailLinkIdp2=E-postan\u0131zda do\u011frulama kodu almad\u0131n\u0131z m\u0131?
emailLinkIdp3=e-postay\u0131 yeniden g\u00f6ndermek i\u00e7in.
emailLinkIdp4=E-postay\u0131 farkl\u0131 taray\u0131c\u0131da zaten do\u011frulad\u0131ysan\u0131z
emailLinkIdp5=devam etmek.
backToLogin=&laquo; Giri\u015f''e geri d\u00f6n
emailInstruction=Kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 veya e-posta adresinizi girin ve yeni bir \u015fifre olu\u015fturmaya ili\u015fkin talimatlar\u0131 size g\u00f6nderece\u011fiz.
copyCodeInstruction=L\u00fctfen bu kodu kopyalay\u0131n ve uygulaman\u0131za yap\u0131\u015ft\u0131r\u0131n\:
pageExpiredTitle=Sayfan\u0131n S\u00fcresi Doldu
pageExpiredMsg1=Giri\u015f i\u015flemini yeniden ba\u015flatmak i\u00e7in
pageExpiredMsg2=Giri\u015f i\u015flemine devam etmek i\u00e7in
personalInfo=Ki\u015fisel bilgi\:
role_admin=Admin
role_realm-admin=Realm Admin
role_create-realm=Realm Olu\u015ftur
role_create-client=Create client
role_view-realm=Realm g\u00f6r\u00fcnt\u00fcle
role_view-users=Kullan\u0131c\u0131 g\u00f6r\u00fcnt\u00fcle
role_view-applications=Uygulamar\u0131 g\u00f6r
role_view-clients=Clients g\u00f6r\u00fcnt\u00fcle
role_view-events=Events g\u00f6r\u00fcnt\u00fcle
role_view-identity-providers=Kimlik sa\u011flay\u0131c\u0131lar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcle
role_manage-realm=Realm Y\u00f6net
role_manage-users=Kullan\u0131c\u0131lar\u0131 Y\u00f6net
role_manage-applications=Uygulamalar\u0131 Y\u00f6net
role_manage-identity-providers=Kimlik Sa\u011flay\u0131c\u0131lar\u0131n\u0131 Y\u00f6net
role_manage-clients=Clients Y\u00f6net
role_manage-events=Events Y\u00f6net
role_view-profile=Profil g\u00f6r\u00fcnt\u00fcle
role_manage-account=Hesap Y\u00f6net
role_manage-account-links=Hesap ba\u011flant\u0131lar\u0131n\u0131 y\u00f6net
role_read-token=Token oku
role_offline-access=\u00c7evrimd\u0131\u015f\u0131 eri\u015fim
client_account=Hesap
client_security-admin-console=G\u00fcvenlik Y\u00f6netici Konsolu
client_admin-cli=Admin CLI
client_realm-management=Realm Y\u00f6net
client_broker=Broker
invalidUserMessage=Ge\u00e7ersiz kullan\u0131c\u0131 ad\u0131 veya \u015fifre.
invalidEmailMessage=Ge\u00e7ersiz e-posta adresi.
accountDisabledMessage=Hesap devre d\u0131\u015f\u0131, y\u00f6netici ile ileti\u015fime ge\u00e7in.
accountTemporarilyDisabledMessage=Hesab\u0131n\u0131z ge\u00e7ici olarak kilitlendi, l\u00fctfen y\u00f6neticiyle ileti\u015fime ge\u00e7in veya daha sonra tekrar deneyin.
expiredCodeMessage=Oturum zaman a\u015f\u0131m\u0131na u\u011frad\u0131. L\u00fctfen tekrar giri\u015f yap\u0131n.
expiredActionMessage=Eylem s\u00fcresi doldu. L\u00fctfen \u015fimdi giri\u015f yapmaya devam edin.
expiredActionTokenNoSessionMessage=Eylemin s\u00fcresi doldu.
expiredActionTokenSessionExistsMessage=Eylem s\u00fcresi doldu. L\u00fctfen tekrar ba\u015flay\u0131n.
missingFirstNameMessage=L\u00fctfen ilk ad\u0131 belirtin.
missingLastNameMessage=L\u00fctfen soyad\u0131 belirtin.
missingEmailMessage=L\u00fctfen email belirtin.
missingUsernameMessage=L\u00fctfen kullan\u0131c\u0131 ad\u0131n\u0131 belirtin.
missingPasswordMessage=L\u00fctfen \u015fifre belirtin.
missingTotpMessage=L\u00fctfen kimlik do\u011frulama kodunu belirtin.
notMatchPasswordMessage=\u015eifreler e\u015fle\u015fmiyor.
invalidPasswordExistingMessage=Mevcut \u015fifre ge\u00e7ersiz.
invalidPasswordBlacklistedMessage=Ge\u00e7ersiz \u015fifre\: \u015fifre kara listeye al\u0131nd\u0131.
invalidPasswordConfirmMessage=\u015eifre onay\u0131 e\u015fle\u015fmiyor.
invalidTotpMessage=Ge\u00e7ersiz kimlik do\u011frulama kodu.
usernameExistsMessage=Kullan\u0131c\u0131 ad\u0131 zaten var.
emailExistsMessage=Bu e-posta zaten var.
federatedIdentityExistsMessage={0} {1} kullan\u0131c\u0131 zaten var. Hesab\u0131 ba\u011flamak i\u00e7in l\u00fctfen hesap y\u00f6netimine giri\u015f yap\u0131n.
confirmLinkIdpTitle=Bu Hesap Zaten Mevcut
federatedIdentityConfirmLinkMessage={0} {1} kullan\u0131c\u0131 zaten var. Nas\u0131l devam etmek istersin?
confirmLinkIdpReviewProfile=Profili g\u00f6zden ge\u00e7ir
confirmLinkIdpContinue=Mevcut hesaba ekle
configureTotpMessage=Hesab\u0131n\u0131z\u0131 etkinle\u015ftirmek i\u00e7in Mobil Kimlik Do\u011frulama''y\u0131 ayarlaman\u0131z gerekiyor.
updateProfileMessage=Hesab\u0131n\u0131z\u0131 etkinle\u015ftirmek i\u00e7in kullan\u0131c\u0131 profilinizi g\u00fcncellemeniz gerekiyor.
updatePasswordMessage=Hesab\u0131n\u0131z\u0131 etkinle\u015ftirmek i\u00e7in \u015fifrenizi de\u011fi\u015ftirmeniz gerekiyor.
resetPasswordMessage=\u015eifreni de\u011fi\u015ftirmelisin.
verifyEmailMessage=Hesab\u0131n\u0131z\u0131 etkinle\u015ftirmek i\u00e7in e-posta adresinizi do\u011frulaman\u0131z gerekiyor.
linkIdpMessage=Hesab\u0131n\u0131z\u0131 {0} ile ba\u011flamak i\u00e7in e-posta adresinizi do\u011frulaman\u0131z gerekiyor.
emailSentMessage=Daha fazla talimatla k\u0131sa s\u00fcrede bir e-posta almal\u0131s\u0131n\u0131z.
emailSendErrorMessage=E-posta g\u00f6nderilemedi, l\u00fctfen daha sonra tekrar deneyin.
accountUpdatedMessage=Hesab\u0131n g\u00fcncellendi.
accountPasswordUpdatedMessage=\u015eifreniz g\u00fcncellenmi\u015ftir.
delegationCompleteHeader=Giri\u015f ba\u015far\u0131l\u0131
delegationCompleteMessage=Bu taray\u0131c\u0131 penceresini kapatabilir ve konsol uygulaman\u0131za geri d\u00f6nebilirsiniz.
delegationFailedHeader=Giri\u015f ba\u015far\u0131s\u0131z
delegationFailedMessage=Bu taray\u0131c\u0131 penceresini kapatabilir ve konsol uygulaman\u0131za geri d\u00f6n\u00fcp tekrar giri\u015f yapmay\u0131 deneyebilirsiniz..
noAccessMessage=Eri\u015fim yok
invalidPasswordMinLengthMessage=Ge\u00e7ersiz \u015eifre\: En az {0} karakter uzunlu\u011funda olmal\u0131.
invalidPasswordMinDigitsMessage=Ge\u00e7ersiz \u015eifre\: En az {0} say\u0131(lar) i\u00e7ermelidir.
invalidPasswordMinLowerCaseCharsMessage=Ge\u00e7ersiz \u015eifre \: En az {0} k\u00fc\u00e7\u00fck harf i\u00e7ermelidir.
invalidPasswordMinUpperCaseCharsMessage=Ge\u00e7ersiz \u015eifre\: En az {0} b\u00fcy\u00fck harf i\u00e7ermelidir.
invalidPasswordMinSpecialCharsMessage=Ge\u00e7ersiz \u015eifre\: En az {0} \u00f6zel karakter i\u00e7ermelidir.
invalidPasswordNotUsernameMessage=Ge\u00e7ersiz \u015eifre\: Kullan\u0131c\u0131 ad\u0131yla ayn\u0131 olamaz.
invalidPasswordRegexPatternMessage=Ge\u00e7ersiz \u015eifre\: Regex Patternine uygun de\u011fil.
invalidPasswordHistoryMessage=Ge\u00e7ersiz \u015eifre\: Son {0} \u015fifreden biri olamaz.
invalidPasswordGenericMessage=Ge\u00e7ersiz \u015eifre\: yeni \u015fifre \u015fifre politikalar\u0131yla e\u015fle\u015fmiyor.
failedToProcessResponseMessage=Yan\u0131t i\u015flenemedi
httpsRequiredMessage=HTTPS zorunlu
realmNotEnabledMessage=Realm aktif de\u011fil
invalidRequestMessage=Ge\u00e7ersiz \u0130stek
failedLogout=\u00c7\u0131k\u0131\u015f ba\u015far\u0131s\u0131z
unknownLoginRequesterMessage=Bilinmeyen giri\u015f iste\u011fi
loginRequesterNotEnabledMessage=Giri\u015f istemi etkin de\u011fil
bearerOnlyMessage=Yaln\u0131zca ta\u015f\u0131y\u0131c\u0131 uygulamalar\u0131 taray\u0131c\u0131 giri\u015fini ba\u015flatmaya izinli de\u011fil
standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
invalidRedirectUriMessage=Ge\u00e7ersiz y\u00f6nlendirme url''i
unsupportedNameIdFormatMessage=Desteklenmeyen NameIDFormat
invalidRequesterMessage=Ge\u00e7ersiz istek
registrationNotAllowedMessage=Kay\u0131t yap\u0131lamaz
resetCredentialNotAllowedMessage=S\u0131f\u0131rlamas\u0131na izin verilmiyor
permissionNotApprovedMessage=\u0130zin onaylanmad\u0131.
noRelayStateInResponseMessage=Kimlik sa\u011flay\u0131c\u0131dan yan\u0131t olarak ge\u00e7i\u015f durumu yok.
insufficientPermissionMessage=Kimliklerin ba\u011flanmas\u0131 i\u00e7in yetersiz izinler.
couldNotProceedWithAuthenticationRequestMessage=Kimlik sa\u011flay\u0131c\u0131ya kimlik do\u011frulama iste\u011fi ile devam edilemedi.
couldNotObtainTokenMessage=Kimlik sa\u011flay\u0131c\u0131dan token al\u0131namad\u0131.
unexpectedErrorRetrievingTokenMessage=Kimlik sa\u011flay\u0131c\u0131dan token al\u0131rken beklenmeyen bir hata olu\u015ftu.
unexpectedErrorHandlingResponseMessage=Kimlik sa\u011flay\u0131c\u0131dan yan\u0131t al\u0131n\u0131rken beklenmeyen bir hata olu\u015ftu.
identityProviderAuthenticationFailedMessage=Kimlik do\u011frulama ba\u015far\u0131s\u0131z oldu. Kimlik sa\u011flay\u0131c\u0131yla kimlik do\u011frulamas\u0131 yap\u0131lamad\u0131.
couldNotSendAuthenticationRequestMessage=Kimlik sa\u011flay\u0131c\u0131ya kimlik do\u011frulama iste\u011fi g\u00f6nderilemedi.
unexpectedErrorHandlingRequestMessage=Kimlik sa\u011flay\u0131c\u0131ya kimlik do\u011frulama iste\u011fi i\u015flenirken beklenmeyen bir hata olu\u015ftu.
invalidAccessCodeMessage=Ge\u00e7ersiz giri\u015f kodu.
sessionNotActiveMessage=Oturum etkin de\u011fil.
invalidCodeMessage=Bir hata olu\u015ftu, l\u00fctfen ba\u015fvurunuz arac\u0131l\u0131\u011f\u0131yla tekrar giri\u015f yap\u0131n.
identityProviderUnexpectedErrorMessage=Kimlik sa\u011flay\u0131c\u0131yla kimlik do\u011frulamas\u0131 yap\u0131l\u0131rken beklenmeyen bir hata olu\u015ftu
identityProviderNotFoundMessage=Tan\u0131mlay\u0131c\u0131 ile kimlik sa\u011flay\u0131c\u0131 bulunamad\u0131.
identityProviderLinkSuccess=E-postan\u0131z\u0131 ba\u015far\u0131yla do\u011frulad\u0131n\u0131z. L\u00fctfen orijinal taray\u0131c\u0131n\u0131za geri d\u00f6n\u00fcn ve giri\u015f yap\u0131n.
staleCodeMessage=Bu sayfa art\u0131k ge\u00e7erli de\u011fil, l\u00fctfen uygulaman\u0131za geri d\u00f6n\u00fcn ve tekrar giri\u015f yap\u0131n
realmSupportsNoCredentialsMessage=Realm herhangi bir kimlik bilgisi t\u00fcr\u00fcn\u00fc desteklemiyor.
identityProviderNotUniqueMessage=Realm \u00e7oklu kimlik sa\u011flay\u0131c\u0131lar\u0131n\u0131 destekler. Kimlik do\u011frulamak i\u00e7in hangi kimlik sa\u011flay\u0131c\u0131s\u0131n\u0131n kullan\u0131lmas\u0131 gerekti\u011fini belirleyemedi.
emailVerifiedMessage=E-posta adresiniz do\u011fruland\u0131.
staleEmailVerificationLink=T\u0131klad\u0131\u011f\u0131n\u0131z ba\u011flant\u0131 eski bir ba\u011flant\u0131d\u0131r ve art\u0131k ge\u00e7erli de\u011fil. Belki de e-postan\u0131z\u0131 zaten do\u011frulad\u0131n\u0131z.
identityProviderAlreadyLinkedMessage={0} taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen birle\u015fik kimlik, ba\u015fka bir kullan\u0131c\u0131yla zaten ba\u011flant\u0131l\u0131.
confirmAccountLinking={1} kimlik sa\u011flay\u0131c\u0131s\u0131n\u0131n hesab\u0131n\u0131 {0} hesab\u0131n\u0131zla ili\u015fkilendirmeyi onaylay\u0131n.
confirmEmailAddressVerification={0} e-posta adresinin ge\u00e7erlili\u011fini onaylay\u0131n.
confirmExecutionOfActions=A\u015fa\u011f\u0131daki eylemleri ger\u00e7ekle\u015ftirin
backToApplication=&laquo; Uygulamaya D\u00f6n
missingParameterMessage=Eksik parametreler\: {0}
clientNotFoundMessage=\u0130stemci Bulunamad\u0131.
clientDisabledMessage=\u0130stemci engelli.
invalidParameterMessage=Ge\u00e7ersiz Paremetreler\: {0}
alreadyLoggedIn=Zaten giri\u015f yapt\u0131n\u0131z.
differentUserAuthenticated=Bu oturumda zaten farkl\u0131 kullan\u0131c\u0131 '' {0} '' olarak do\u011frulanm\u0131\u015fs\u0131n\u0131z. L\u00fctfen \u00f6nce \u00e7\u0131k\u0131\u015f yap\u0131n\u0131z.
brokerLinkingSessionExpired=\u0130stenen broker hesab\u0131 ba\u011flan\u0131yor, ancak mevcut oturum art\u0131k ge\u00e7erli de\u011fil.
proceedWithAction=\u00bb Devam etmek i\u00e7in buraya t\u0131klay\u0131n
requiredAction.CONFIGURE_TOTP=OTP Ayarla
requiredAction.TERMS_AND_CONDITIONS=\u015eartlar ve Ko\u015fullar
requiredAction.UPDATE_PASSWORD=\u015eifre g\u00fcncelle
requiredAction.UPDATE_PROFILE=Profili G\u00fcncelle
requiredAction.VERIFY_EMAIL=E-mail''i do\u011frula
doX509Login=Olarak giri\u015f yapacaks\u0131n\u0131z\:
clientCertificate=X509 istemci sertifikas\u0131\:
noCertificate=[Sertifika Yok]
pageNotFound=Sayfa Bulunamad\u0131
internalServerError=Bir i\u00e7 sunucu hatas\u0131 olu\u015ftu
console-username=Kullan\u0131c\u0131 ad\u0131\:
console-password=Parola\:
console-otp=Tek seferlik \u015fifre\:
console-new-password=Yeni \u015fifre\:
console-confirm-password=\u015eifreyi Onayla\:
console-update-password=\u015eifrenizin g\u00fcncellenmesi gerekiyor.
console-verify-email=E-posta adresinizi do\u011frulaman\u0131z gerekiyor. Bir do\u011frulama kodu i\u00e7eren {0} adresine bir e-posta g\u00f6nderildi. L\u00fctfen bu kodu a\u015fa\u011f\u0131daki girdiye giriniz.
console-email-code=E-posta Kodu\:
console-accept-terms=\u015eartlar\u0131 kabul et? [e/h]\:
console-accept=e
readOnlyUsernameMessage=Yazma korumal\u0131 oldu\u011fundan kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 de\u011fi\u015ftiremezsiniz.
shouldBeEqual={0} {1} e\u015fit olmal\u0131d\u0131r
shouldBeDifferent={0} {1} farkl\u0131 olmal\u0131d\u0131r
shouldMatchPattern=Desen e\u015fle\u015fmelidir\: `/{0}/`
mustBeAnInteger=Tam say\u0131 olmal\u0131d\u0131r
notAValidOption=Ge\u00e7erli bir se\u00e7enek de\u011fil
selectAnOption=Bir se\u00e7enek se\u00e7in
remove=Kald\u0131r
addValue=De\u011fer ekle
languages=Diller

View File

@ -0,0 +1,440 @@
doLogIn=\u0423\u0432\u0456\u0439\u0442\u0438
doRegister=\u0417\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438\u0441\u044f
doRegisterSecurityKey=\u0417\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438\u0441\u044f
doCancel=\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438
doSubmit=\u041d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438
doBack=\u041d\u0430\u0437\u0430\u0434
doYes=\u0422\u0430\u043a
doNo=\u041d\u0456
doContinue=\u041f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438
doIgnore=\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438
doAccept=\u041f\u0440\u0438\u0439\u043d\u044f\u0442\u0438
doDecline=\u0412\u0456\u0434\u0445\u0438\u043b\u0438\u0442\u0438
doForgotPassword=\u0417\u0430\u0431\u0443\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?
doClickHere=\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0442\u0443\u0442
doImpersonate=\u0406\u043c\u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438\u0441\u044f
doTryAgain=\u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u043d\u043e\u0432\u0443
doTryAnotherWay=\u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0456\u043d\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u0456\u0431
doConfirmDelete=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f
errorDeletingAccount=\u041f\u0456\u0434 \u0447\u0430\u0441 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443 \u0441\u0442\u0430\u043b\u0430\u0441\u044f \u043f\u043e\u043c\u0438\u043b\u043a\u0430
deletingAccountForbidden=\u0423 \u0432\u0430\u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043d\u044c\u043e \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f \u0432\u043b\u0430\u0441\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443, \u0437\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
kerberosNotConfigured=Kerberos \u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u043e
kerberosNotConfiguredTitle=Kerberos \u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u043e
bypassKerberosDetail=\u0410\u0431\u043e \u0432\u0438 \u043d\u0435 \u0432\u0432\u0456\u0439\u0448\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 Kerberos, \u0430\u0431\u043e \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 Kerberos. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u00ab\u041f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438\u00bb, \u0449\u043e\u0431 \u0443\u0432\u0456\u0439\u0442\u0438 \u0456\u043d\u0448\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c
kerberosNotSetUp=Kerberos \u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u043e. \u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0456\u0439\u0442\u0438.
registerTitle=\u0417\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438\u0441\u044f
loginAccountTitle=\u0423\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0443 \u0441\u0432\u0456\u0439 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441
loginTitle=\u0423\u0432\u0456\u0439\u0442\u0438 \u0432 {0}
loginTitleHtml={0}
impersonateTitle={0} \u0412\u0438\u0434\u0430\u0432\u0430\u0442\u0438 \u0441\u0435\u0431\u0435 \u0437\u0430 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
impersonateTitleHtml=<strong>{0}</strong> \u0412\u0438\u0434\u0430\u0432\u0430\u0442\u0438 \u0441\u0435\u0431\u0435 \u0437\u0430 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
realmChoice=Realm
unknownUser=\u041d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447
loginTotpTitle=\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043c\u043e\u0431\u0456\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440\u0430
loginProfileTitle=\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443
loginIdpReviewProfileTitle=\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443
loginTimeout=\u0427\u0430\u0441 \u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0430\u0448\u043e\u0457 \u0441\u043f\u0440\u043e\u0431\u0438 \u0432\u0445\u043e\u0434\u0443 \u043c\u0438\u043d\u0443\u0432. \u0412\u0445\u0456\u0434 \u043f\u043e\u0447\u043d\u0435\u0442\u044c\u0441\u044f \u0437 \u043f\u043e\u0447\u0430\u0442\u043a\u0443.
reauthenticate=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u0440\u043e\u0439\u0434\u0456\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u044e, \u0449\u043e\u0431 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438
oauthGrantTitle=\u041d\u0430\u0434\u0430\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u041f\u0435\u0440\u0435\u043a\u043e\u043d\u0430\u0439\u0442\u0435\u0441\u044f, \u0449\u043e \u0412\u0438 \u0434\u043e\u0432\u0456\u0440\u044f\u0454\u0442\u0435 {0}, \u0434\u0456\u0437\u043d\u0430\u0432\u0448\u0438\u0441\u044c, \u044f\u043a {0} \u043e\u0431\u0440\u043e\u0431\u043b\u044f\u0442\u0438\u043c\u0435 \u0412\u0430\u0448\u0456 \u0434\u0430\u043d\u0456.
oauthGrantReview=\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438
oauthGrantTos=\u0443\u043c\u043e\u0432\u0438 \u043e\u0431\u0441\u043b\u0443\u0433\u043e\u0432\u0443\u0432\u0430\u043d\u043d\u044f.
oauthGrantPolicy=\u043f\u043e\u043b\u0456\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0456\u0434\u0435\u043d\u0446\u0456\u0439\u043d\u043e\u0441\u0442\u0456.
errorTitle=\u041d\u0430\u043c \u0448\u043a\u043e\u0434\u0430...
errorTitleHtml=<strong>\u0412\u0438\u0431\u0430\u0447\u0442\u0435</strong> ...
emailVerifyTitle=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438
emailForgotTitle=\u0417\u0430\u0431\u0443\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?
updateEmailTitle=\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438
emailUpdateConfirmationSentTitle=\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442 \u0456\u0437 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f\u043c \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u043d\u043e
emailUpdateConfirmationSent=\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442 \u0456\u0437 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f\u043c \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u043d\u043e \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0443 {0}. \u0421\u043b\u0456\u0434\u0443\u0439\u0442\u0435 \u0432\u043a\u0430\u0437\u0456\u0432\u043a\u0430\u043c, \u0449\u043e\u0431 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0434\u0440\u0435\u0441\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438.
emailUpdatedTitle=\u0410\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0430
emailUpdated=\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443 \u0431\u0443\u043b\u0430 \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043d\u0430 {0}.
updatePasswordTitle=\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c
codeSuccessTitle=\u041a\u043e\u0434 \u0443\u0441\u043f\u0456\u0445\u0443
codeErrorTitle=\u041a\u043e\u0434 \u043f\u043e\u043c\u0438\u043b\u043a\u0438\: {0}
displayUnsupported=\u0417\u0430\u043f\u0438\u0442\u0443\u0432\u0430\u043d\u0438\u0439 \u0442\u0438\u043f \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454\u0442\u044c\u0441\u044f
browserRequired=\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0442\u0440\u0456\u0431\u0435\u043d \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0443
browserContinue=\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0442\u0440\u0456\u0431\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044f \u0432\u0445\u043e\u0434\u0443
browserContinuePrompt=\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0456 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u0432\u0445\u0456\u0434? [y/n]\:
browserContinueAnswer=y
termsTitle=\u0423\u043c\u043e\u0432\u0438
termsText=
termsPlainText=\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044f \u0442\u0430 \u0443\u043c\u043e\u0432\u0438, \u044f\u043a\u0456 \u0431\u0443\u0434\u0443\u0442\u044c \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0456.
termsAcceptanceRequired=\u0412\u0438 \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u043f\u043e\u0433\u043e\u0434\u0438\u0442\u0438\u0441\u044f \u0437 \u0443\u043c\u043e\u0432\u0430\u043c\u0438.
acceptTerms=\u042f \u043f\u043e\u0433\u043e\u0434\u0436\u0443\u044e\u0441\u044c \u0437 \u0443\u043c\u043e\u0432\u0430\u043c\u0438
recaptchaFailed=\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0438\u0439 Recaptcha
recaptchaNotConfigured=Recaptcha \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0430, \u0430\u043b\u0435 \u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u043e\u0432\u0430\u043d\u0430
consentDenied=\u0417\u0433\u043e\u0434\u0430 \u0432\u0456\u0434\u0445\u0438\u043b\u0435\u043d\u0430.
noAccount=\u041d\u043e\u0432\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447?
username=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
usernameOrEmail=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u043f\u043e\u0448\u0442\u0430
firstName=\u0406\u043c''\u044f
givenName=\u0406\u043c''\u044f
fullName=\u041f\u043e\u0432\u043d\u0435 \u0456\u043c''\u044f
lastName=\u041f\u0440\u0456\u0437\u0432\u0438\u0449\u0435
familyName=\u041f\u0440\u0456\u0437\u0432\u0438\u0449\u0435
email=\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430 \u043f\u043e\u0448\u0442\u0430
password=\u041f\u0430\u0440\u043e\u043b\u044c
passwordConfirm=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c
passwordNew=\u041d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c
passwordNewConfirm=\u041d\u043e\u0432\u0435 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u043f\u0430\u0440\u043e\u043b\u044f
hidePassword=\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c
showPassword=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c
rememberMe=\u0417\u0430\u043f\u0430\u043c''\u044f\u0442\u0430\u0442\u0438 \u043c\u0435\u043d\u0435
authenticatorCode=\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0438\u0439 \u043a\u043e\u0434
address=\u0410\u0434\u0440\u0435\u0441\u0430
street=\u0412\u0443\u043b\u0438\u0446\u044f
locality=\u041c\u0456\u0441\u0442\u043e
region=\u041e\u0431\u043b\u0430\u0441\u0442\u044c
postal_code=\u041f\u043e\u0448\u0442\u043e\u0432\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441
country=\u041a\u0440\u0430\u0457\u043d\u0430
emailVerified=\u0410\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u0430
website=\u0412\u0435\u0431-\u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0430
phoneNumber=\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443
phoneNumberVerified=\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0435\u043d\u043e
gender=\u0421\u0442\u0430\u0442\u044c
birthday=\u0414\u0430\u0442\u0430 \u043d\u0430\u0440\u043e\u0434\u0436\u0435\u043d\u043d\u044f
zoneinfo=\u0427\u0430\u0441\u043e\u0432\u0438\u0439 \u043f\u043e\u044f\u0441
gssDelegationCredential=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0456 \u0434\u0430\u043d\u0456 \u0434\u0435\u043b\u0435\u0433\u0443\u0432\u0430\u043d\u043d\u044f GSS
logoutOtherSessions=\u0412\u0438\u0439\u0442\u0438 \u0437 \u0456\u043d\u0448\u0438\u0445 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u0457\u0432
profileScopeConsentText=\u041f\u0440\u043e\u0444\u0456\u043b\u044c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
emailScopeConsentText=\u0410\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438
addressScopeConsentText=\u0410\u0434\u0440\u0435\u0441\u0430
phoneScopeConsentText=\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443
offlineAccessScopeConsentText=\u0414\u043e\u0441\u0442\u0443\u043f \u043e\u0444\u043b\u0430\u0439\u043d
samlRoleListScopeConsentText=\u041c\u043e\u0457 \u0440\u043e\u043b\u0456
rolesScopeConsentText=\u0420\u043e\u043b\u0456 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
restartLoginTooltip=\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0432\u0445\u0456\u0434
loginTotpIntro=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0438\u0445 \u043f\u0430\u0440\u043e\u043b\u0456\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0434\u043e \u0446\u044c\u043e\u0433\u043e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443
loginTotpStep1=\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c \u043d\u0430 \u0441\u0432\u0456\u0439 \u043c\u043e\u0431\u0456\u043b\u044c\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043e\u0434\u0438\u043d \u0456\u0437 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0445 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0456\u0432\:
loginTotpStep2=\u0412\u0456\u0434\u043a\u0440\u0438\u0439\u0442\u0435 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043e\u043a \u0442\u0430 \u0432\u0456\u0434\u0441\u043a\u0430\u043d\u0443\u0439\u0442\u0435 \u0448\u0442\u0440\u0438\u0445-\u043a\u043e\u0434\:
loginTotpStep3=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0438\u0439 \u043a\u043e\u0434, \u043d\u0430\u0434\u0430\u043d\u0438\u0439 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u043e\u043c, \u0456 \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c "\u041d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438", \u0449\u043e\u0431 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f.
loginTotpStep3DeviceName=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043d\u0430\u0437\u0432\u0443 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e, \u0449\u043e\u0431 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0442\u0438 \u0432\u0430\u043c \u043a\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044f\u043c\u0438 OTP.
loginTotpManualStep2=\u0412\u0456\u0434\u043a\u0440\u0438\u0439\u0442\u0435 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043e\u043a \u0442\u0430 \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043b\u044e\u0447\:
loginTotpManualStep3=\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0442\u0430\u043a\u0456 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457, \u044f\u043a\u0449\u043e \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043e\u043a \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0454 \u0457\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\:
loginTotpUnableToScan=\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0441\u043a\u0430\u043d\u0443\u0432\u0430\u0442\u0438?
loginTotpScanBarcode=\u0421\u043a\u0430\u043d\u0443\u0432\u0430\u0442\u0438 \u0448\u0442\u0440\u0438\u0445-\u043a\u043e\u0434?
loginCredential=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0456 \u0434\u0430\u043d\u0456
loginOtpOneTime=\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0438\u0439 \u043a\u043e\u0434
loginTotpType=\u0422\u0438\u043f
loginTotpAlgorithm=\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c
loginTotpDigits=\u0426\u0438\u0444\u0440\u0438
loginTotpInterval=\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b
loginTotpCounter=\u041b\u0456\u0447\u0438\u043b\u044c\u043d\u0438\u043a
loginTotpDeviceName=\u041d\u0430\u0437\u0432\u0430 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e
loginTotp.totp=\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 \u0447\u0430\u0441\u0443
loginTotp.hotp=\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0456 \u043b\u0456\u0447\u0438\u043b\u044c\u043d\u0438\u043a\u0430
totpAppFreeOTPName=\u0411\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u0438\u0439 OTP
totpAppGoogleName=\u0410\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440 Google
totpAppMicrosoftAuthenticatorName=\u0410\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440 Microsoft
loginChooseAuthenticator=\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0432\u0445\u043e\u0434\u0443
oauthGrantRequest=\u0412\u0438 \u0437\u0433\u043e\u0434\u043d\u0456 \u043d\u0430\u0434\u0430\u0442\u0438 \u0446\u0456 \u043f\u0440\u0438\u0432\u0456\u043b\u0435\u0457 \u0434\u043e\u0441\u0442\u0443\u043f\u0443?
inResource=\u0443
oauth2DeviceVerificationTitle=\u0412\u0445\u0456\u0434 \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439
verifyOAuth2DeviceUserCode=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043e\u0434, \u043d\u0430\u0434\u0430\u043d\u0438\u0439 \u0412\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u0454\u043c, \u0456 \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c "\u041d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438"
oauth2DeviceInvalidUserCodeMessage=\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0438\u0439 \u043a\u043e\u0434, \u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0449\u0435 \u0440\u0430\u0437.
oauth2DeviceExpiredUserCodeMessage=\u0422\u0435\u0440\u043c\u0456\u043d \u0434\u0456\u0457 \u043a\u043e\u0434\u0443 \u043c\u0438\u043d\u0443\u0432. \u041f\u043e\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e \u0442\u0430 \u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438\u0441\u044f \u0437\u043d\u043e\u0432\u0443.
oauth2DeviceVerificationCompleteHeader=\u0423\u0441\u043f\u0456\u0448\u043d\u0438\u0439 \u0432\u0445\u0456\u0434 \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439
oauth2DeviceVerificationCompleteMessage=\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u0440\u0438\u0442\u0438 \u0446\u0435 \u0432\u0456\u043a\u043d\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0442\u0430 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e.
oauth2DeviceVerificationFailedHeader=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0432\u0445\u043e\u0434\u0443 \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439
oauth2DeviceVerificationFailedMessage=\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u0440\u0438\u0442\u0438 \u0446\u0435 \u0432\u0456\u043a\u043d\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e \u0442\u0430 \u0441\u043f\u0440\u043e\u0431\u0443\u0432\u0430\u0442\u0438 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438\u0441\u044f \u0437\u043d\u043e\u0432\u0443.
oauth2DeviceConsentDeniedMessage=\u0417\u0433\u043e\u0434\u0430 \u043d\u0430 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e \u0432\u0456\u0434\u043c\u043e\u0432\u043b\u0435\u043d\u0430.
oauth2DeviceAuthorizationGrantDisabledMessage=\u041a\u043b\u0456\u0454\u043d\u0442\u0443 \u043d\u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0456\u043d\u0456\u0446\u0456\u044e\u0432\u0430\u0442\u0438 \u0434\u043e\u0437\u0432\u0456\u043b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u0457 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e OAuth 2.0. \u0426\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e \u0434\u043b\u044f \u043a\u043b\u0456\u0454\u043d\u0442\u0430.
emailVerifyInstruction1=\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442 \u0437 \u0456\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f\u043c\u0438 \u0449\u043e\u0434\u043e \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u0412\u0430\u0448\u043e\u0457 \u0430\u0434\u0440\u0435\u0441\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 \u0431\u0443\u043b\u043e \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u043d\u043e \u043d\u0430 \u0412\u0430\u0448\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 {0}.
emailVerifyInstruction2=\u041d\u0435 \u043e\u0442\u0440\u0438\u043c\u0430\u043b\u0438 \u043a\u043e\u0434 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u043d\u0430 \u0432\u0430\u0448\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u043f\u043e\u0448\u0442\u0443?
emailVerifyInstruction3=\u0449\u043e\u0431 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442.
emailLinkIdpTitle=\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f {0}
emailLinkIdp1=\u0412\u0430\u043c \u0431\u0443\u0432 \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u043d\u0438\u0439 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442 \u0437 \u0456\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f\u043c\u0438 \u0449\u043e\u0434\u043e \u0437\u0432''\u044f\u0437\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443 {0} {1} \u0437 \u0432\u0430\u0448\u0438\u043c \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u043e\u043c {2}.
emailLinkIdp2=\u041d\u0435 \u043e\u0442\u0440\u0438\u043c\u0430\u043b\u0438 \u043a\u043e\u0434 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u043d\u0430 \u0432\u0430\u0448\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u043f\u043e\u0448\u0442\u0443?
emailLinkIdp3=\u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044f \u043b\u0438\u0441\u0442\u0430.
emailLinkIdp4=\u042f\u043a\u0449\u043e \u0432\u0438 \u0432\u0436\u0435 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u0456\u043d\u0448\u043e\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456
emailLinkIdp5=\u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0435\u043d\u043d\u044f.
backToLogin=&laquo; \u041d\u0430\u0437\u0430\u0434 \u0434\u043e \u0432\u0445\u043e\u0434\u0443
emailInstruction=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0441\u0432\u043e\u0454 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0456 \u043c\u0438 \u043d\u0430\u0434\u0456\u0448\u043b\u0435\u043c\u043e \u0412\u0430\u043c \u0456\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u0457 \u0449\u043e\u0434\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f.
emailInstructionUsername=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0441\u0432\u043e\u0454 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430, \u0456 \u043c\u0438 \u043d\u0430\u0434\u0456\u0448\u043b\u0435\u043c\u043e \u0412\u0430\u043c \u0456\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u0457 \u0449\u043e\u0434\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f.
copyCodeInstruction=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0441\u043a\u043e\u043f\u0456\u044e\u0439\u0442\u0435 \u0446\u0435\u0439 \u043a\u043e\u0434 \u0456 \u0432\u0441\u0442\u0430\u0432\u0442\u0435 \u0439\u043e\u0433\u043e \u0443 \u0441\u0432\u0456\u0439 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043e\u043a\:
pageExpiredTitle=\u0422\u0435\u0440\u043c\u0456\u043d \u0434\u0456\u0457 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0441\u044f
pageExpiredMsg1=\u0429\u043e\u0431 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0445\u043e\u0434\u0443
pageExpiredMsg2=\u0429\u043e\u0431 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441 \u0432\u0445\u043e\u0434\u0443
personalInfo=\u041e\u0441\u043e\u0431\u0438\u0441\u0442\u0430 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f\:
role_admin=\u0410\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440
role_realm-admin=\u0410\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440 realm
role_create-realm=\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f realm
role_create-client=\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u043a\u043b\u0456\u0454\u043d\u0442\u0430
role_view-realm=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 realm
role_view-users=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0456\u0432
role_view-applications=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0456\u0432
role_view-clients=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u043a\u043b\u0456\u0454\u043d\u0442\u0456\u0432
role_view-events=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u043f\u043e\u0434\u0456\u0439
role_view-identity-providers=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0456\u0432 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432
role_manage-realm=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f realm
role_manage-users=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430\u043c\u0438
role_manage-applications=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0430\u043c\u0438
role_manage-identity-providers=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432
role_manage-clients=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u043b\u0456\u0454\u043d\u0442\u0430\u043c\u0438
role_manage-events=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u043e\u0434\u0456\u044f\u043c\u0438
role_view-profile=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u043f\u0440\u043e\u0444\u0456\u043b\u044e
role_manage-account=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u043e\u043c
role_manage-account-links=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u0432''\u044f\u0437\u0430\u043d\u0438\u043c\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043c\u0438
role_read-token=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u0442\u043e\u043a\u0435\u043d\u0443
role_offline-access=\u041e\u0444\u043b\u0430\u0439\u043d-\u0434\u043e\u0441\u0442\u0443\u043f
client_account=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441
client_account-console=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443
client_security-admin-console=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
client_admin-cli=Admin CLI
client_realm-management=\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f realm
client_broker=\u0411\u0440\u043e\u043a\u0435\u0440
requiredFields=\u041e\u0431\u043e\u0432''\u044f\u0437\u043a\u043e\u0432\u0456 \u043f\u043e\u043b\u044f
invalidUserMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e \u043f\u0430\u0440\u043e\u043b\u044c.
invalidUsernameMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430.
invalidUsernameOrEmailMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438.
invalidPasswordMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c.
invalidEmailMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438.
accountDisabledMessage=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u0437\u0430\u0431\u043b\u043e\u043a\u043e\u0432\u0430\u043d\u043e, \u0437\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
accountTemporarilyDisabledMessage=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u0442\u0438\u043c\u0447\u0430\u0441\u043e\u0432\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u043e\u0432\u0430\u043d\u043e; \u0437\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0430\u0431\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0456\u0442\u044c \u0441\u043f\u0440\u043e\u0431\u0443 \u043f\u0456\u0437\u043d\u0456\u0448\u0435.
expiredCodeMessage=\u0427\u0430\u0441 \u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u043d\u044f \u0432\u0445\u043e\u0434\u0443 \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0441\u044f. \u0423\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443.
expiredActionMessage=\u0422\u0435\u0440\u043c\u0456\u043d \u0434\u0456\u0457 \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0441\u044f. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443.
expiredActionTokenNoSessionMessage=\u0422\u0435\u0440\u043c\u0456\u043d \u0434\u0456\u0457 \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0441\u044f.
expiredActionTokenSessionExistsMessage=\u0422\u0435\u0440\u043c\u0456\u043d \u0434\u0456\u0457 \u043c\u0438\u043d\u0443\u0432. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u043e\u0447\u043d\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443.
sessionLimitExceeded=\u041f\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043d\u043e \u043b\u0456\u043c\u0456\u0442 \u043f\u043e \u043a\u0456\u043b\u044c\u043a\u043e\u0441\u0442\u0456 \u0441\u0435\u0441\u0456\u0439
missingFirstNameMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u0456\u043c''\u044f.
missingLastNameMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u043f\u0440\u0456\u0437\u0432\u0438\u0449\u0435.
missingEmailMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438.
missingUsernameMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430.
missingPasswordMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c.
missingTotpMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u043a\u043e\u0434 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440\u0430.
missingTotpDeviceNameMessage=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u043d\u0430\u0437\u0432\u0443 \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e.
notMatchPasswordMessage=\u041f\u0430\u0440\u043e\u043b\u0456 \u043d\u0435 \u0437\u0431\u0456\u0433\u0430\u044e\u0442\u044c\u0441\u044f.
error-invalid-value=\u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f.
error-invalid-blank=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f.
error-empty=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f.
error-invalid-length=\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u0448\u0435 {1} \u0456 \u043d\u0435 \u0431\u0456\u043b\u044c\u0448\u0435 {2}.
error-invalid-length-too-short=\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u0448\u0435 {1}.
error-invalid-length-too-long=\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u043d\u0435 \u0431\u0456\u043b\u044c\u0448\u0435 {2}.
error-invalid-email=\u041d\u0435\u0432\u0456\u0440\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438.
error-invalid-number=\u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0447\u0438\u0441\u043b\u043e.
error-number-out-of-range=\u0427\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0438\u043d\u043d\u043e \u0431\u0443\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u0448\u0435 {1} \u0456 \u043d\u0435 \u0431\u0456\u043b\u044c\u0448\u0435 {2}.
error-number-out-of-range-too-small=\u0427\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0438\u043d\u043d\u043e \u0431\u0443\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u0448\u0435 {1}.
error-number-out-of-range-too-big=\u0427\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0438\u043d\u043d\u043e \u0431\u0443\u0442\u0438 \u043d\u0435 \u0431\u0456\u043b\u044c\u0448\u0435 {2}.
error-pattern-no-match=\u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f.
error-invalid-uri=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 URL.
error-invalid-uri-scheme=\u041d\u0435\u0432\u0456\u0440\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 URL.
error-invalid-uri-fragment=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 URL.
error-user-attribute-required=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u043a\u0430\u0436\u0456\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442.
error-invalid-date=\u041d\u0435\u0432\u0456\u0440\u043d\u0430 \u0434\u0430\u0442\u0430.
error-user-attribute-read-only=\u0426\u0435 \u043f\u043e\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0435 \u043b\u0438\u0448\u0435 \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u043d\u043d\u044f.
error-username-invalid-character=\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b.
error-person-name-invalid-character=\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b.
error-reset-otp-missing-id=\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e OTP.
invalidPasswordExistingMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u0456\u0441\u043d\u0443\u044e\u0447\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c.
invalidPasswordBlacklistedMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u0443 \u0447\u043e\u0440\u043d\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443.
invalidPasswordConfirmMessage=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u043f\u0430\u0440\u043e\u043b\u044e \u043d\u0435 \u0437\u0431\u0456\u0433\u0430\u0454\u0442\u044c\u0441\u044f.
invalidTotpMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043a\u043e\u0434 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440\u0430.
usernameExistsMessage=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0432\u0436\u0435 \u0456\u0441\u043d\u0443\u0454.
emailExistsMessage=\u0410\u0434\u0440\u0435\u0441\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 \u0432\u0436\u0435 \u0456\u0441\u043d\u0443\u0454.
federatedIdentityExistsMessage=\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u0437 {0} {1} \u0432\u0436\u0435 \u0456\u0441\u043d\u0443\u0454. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0434\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0438 \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u043e\u043c, \u0449\u043e\u0431 \u0437\u0432''\u044f\u0437\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
federatedIdentityUnavailableMessage=\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 {0}, \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432 {1}, \u043d\u0435 \u0456\u0441\u043d\u0443\u0454. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0437\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
federatedIdentityUnmatchedEssentialClaimMessage=ID-\u0442\u043e\u043a\u0435\u043d, \u0432\u0438\u0434\u0430\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432, \u043d\u0435 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f\u043c. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0437\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
confirmLinkIdpTitle=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u0443\u0436\u0435 \u0456\u0441\u043d\u0443\u0454
federatedIdentityConfirmLinkMessage=\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u0456\u0437 {0} {1} \u0432\u0436\u0435 \u0456\u0441\u043d\u0443\u0454. \u0411\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438?
federatedIdentityConfirmReauthenticateMessage=\u041f\u0440\u043e\u0439\u0434\u0456\u0442\u044c \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u044e, \u0449\u043e\u0431 \u0437\u0432''\u044f\u0437\u0430\u0442\u0438 \u0441\u0432\u0456\u0439 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u0456\u0437 {0}
nestedFirstBrokerFlowMessage=\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 {0} {1} \u043d\u0435 \u0437\u0432''\u044f\u0437\u0430\u043d\u0438\u0439 \u0437 \u0436\u043e\u0434\u043d\u0438\u043c \u0432\u0456\u0434\u043e\u043c\u0438\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0435\u043c.
confirmLinkIdpReviewProfile=\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438 \u043f\u0440\u043e\u0444\u0456\u043b\u044c
confirmLinkIdpContinue=\u0414\u043e\u0434\u0430\u0442\u0438 \u0434\u043e \u0456\u0441\u043d\u0443\u044e\u0447\u043e\u0433\u043e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443
configureTotpMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 Mobile Authenticator, \u0449\u043e\u0431 \u0430\u043a\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
configureBackupCodesMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0456 \u043a\u043e\u0434\u0438, \u0449\u043e\u0431 \u0430\u043a\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
updateProfileMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0441\u0432\u0456\u0439 \u043f\u0440\u043e\u0444\u0456\u043b\u044c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430, \u0449\u043e\u0431 \u0430\u043a\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
updatePasswordMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u0449\u043e\u0431 \u0430\u043a\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
updateEmailMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0449\u043e\u0431 \u0430\u043a\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
resetPasswordMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c.
verifyEmailMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0449\u043e\u0431 \u0430\u043a\u0442\u0438\u0432\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441.
linkIdpMessage=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0441\u0432\u043e\u044e \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0449\u043e\u0431 \u0437\u0432''\u044f\u0437\u0430\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u0456\u0437 {0}.
emailSentMessage=\u041d\u0435\u0432\u0434\u043e\u0432\u0437\u0456 \u0412\u0438 \u043c\u0430\u0454\u0442\u0435 \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442 \u0456\u0437 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0438\u043c\u0438 \u0456\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f\u043c\u0438.
emailSendErrorMessage=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u043b\u0438\u0441\u0442\u0430 \u043d\u0430 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u043f\u043e\u0448\u0442\u0443, \u043f\u043e\u0432\u0442\u043e\u0440\u0456\u0442\u044c \u0441\u043f\u0440\u043e\u0431\u0443 \u043f\u0456\u0437\u043d\u0456\u0448\u0435.
accountUpdatedMessage=\u0412\u0430\u0448 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043e.
accountPasswordUpdatedMessage=\u0412\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043e.
delegationCompleteHeader=\u0412\u0445\u0456\u0434 \u0443\u0441\u043f\u0456\u0448\u043d\u0438\u0439
delegationCompleteMessage=\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u0440\u0438\u0442\u0438 \u0446\u0435 \u0432\u0456\u043a\u043d\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0442\u0430 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f \u0434\u043e \u0432\u0430\u0448\u043e\u0457 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0457 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438.
delegationFailedHeader=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0432\u0445\u043e\u0434\u0443
delegationFailedMessage=\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u0440\u0438\u0442\u0438 \u0446\u0435 \u0432\u0456\u043a\u043d\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f \u0434\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0457 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438 \u0442\u0430 \u0441\u043f\u0440\u043e\u0431\u0443\u0432\u0430\u0442\u0438 \u0443\u0432\u0456\u0439\u0442\u0438 \u0437\u043d\u043e\u0432\u0443.
noAccessMessage=\u041d\u0435\u043c\u0430\u0454 \u0434\u043e\u0441\u0442\u0443\u043f\u0443
invalidPasswordMinLengthMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u0434\u043e\u0432\u0436\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u0448\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432(\u0430).
invalidPasswordMaxLengthMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u0434\u043e\u0432\u0436\u0438\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u043d\u0435 \u0431\u0456\u043b\u044c\u0448\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432(\u0430).
invalidPasswordMinDigitsMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043c\u0430\u0454 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043f\u0440\u0438\u043d\u0430\u0439\u043c\u043d\u0456 {0} \u0446\u0438\u0444\u0440.
invalidPasswordMinLowerCaseCharsMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043c\u0430\u0454 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0449\u043e\u043d\u0430\u0439\u043c\u0435\u043d\u0448\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432(\u0430) \u0443 \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443.
invalidPasswordMinUpperCaseCharsMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043c\u0430\u0454 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0449\u043e\u043d\u0430\u0439\u043c\u0435\u043d\u0448\u0435 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432(\u0430) \u0443 \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456.
invalidPasswordMinSpecialCharsMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043c\u0430\u0454 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0449\u043e\u043d\u0430\u0439\u043c\u0435\u043d\u0448\u0435 {0} \u0441\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432(\u0430).
invalidPasswordNotUsernameMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u043e\u0432\u0438\u043d\u0435\u043d \u0437\u0431\u0456\u0433\u0430\u0442\u0438\u0441\u044f \u0437 \u0456\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430.
invalidPasswordNotEmailMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u043e\u0432\u0438\u043d\u0435\u043d \u0437\u0431\u0456\u0433\u0430\u0442\u0438\u0441\u044f \u0437 \u0430\u0434\u0440\u0435\u0441\u043e\u044e \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438.
invalidPasswordRegexPatternMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454 \u0448\u0430\u0431\u043b\u043e\u043d\u0443(\u0430\u043c) \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u0438\u0440\u0430\u0437\u0443.
invalidPasswordHistoryMessage=\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u043e\u0432\u0438\u043d\u0435\u043d \u0437\u0431\u0456\u0433\u0430\u0442\u0438\u0441\u044f \u0437 \u0436\u043e\u0434\u043d\u0438\u043c \u0437 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0445 {0} \u043f\u0430\u0440\u043e\u043b\u0456\u0432.
invalidPasswordGenericMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\: \u043d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454 \u043f\u043e\u043b\u0456\u0442\u0438\u0446\u0456 \u043f\u0430\u0440\u043e\u043b\u0456\u0432.
failedToProcessResponseMessage=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043e\u0431\u0440\u043e\u0431\u0438\u0442\u0438 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c
httpsRequiredMessage=\u041f\u043e\u0442\u0440\u0456\u0431\u0435\u043d HTTPS
realmNotEnabledMessage=Realm \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439
invalidRequestMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u0437\u0430\u043f\u0438\u0442
successLogout=\u0412\u0438 \u0432\u0438\u0439\u0448\u043b\u0438 \u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0438
failedLogout=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0432\u0438\u0445\u043e\u0434\u0443
unknownLoginRequesterMessage=\u041d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0439 \u043a\u043b\u0456\u0454\u043d\u0442
loginRequesterNotEnabledMessage=\u041a\u043b\u0456\u0454\u043d\u0442 \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439
bearerOnlyMessage=\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0430\u043c, \u044f\u043a\u0456 \u043f\u0440\u0430\u0446\u044e\u044e\u0442\u044c \u043b\u0438\u0448\u0435 \u0437 \u043d\u043e\u0441\u0456\u0454\u043c, \u0437\u0430\u0431\u043e\u0440\u043e\u043d\u0435\u043d\u043e \u0456\u043d\u0456\u0446\u0456\u044e\u0432\u0430\u0442\u0438 \u0432\u0445\u0456\u0434 \u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440
standardFlowDisabledMessage=\u041a\u043b\u0456\u0454\u043d\u0442\u0443 \u043d\u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0456\u043d\u0456\u0446\u0456\u044e\u0432\u0430\u0442\u0438 \u0432\u0445\u0456\u0434 \u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0456\u0437 \u0432\u043a\u0430\u0437\u0430\u043d\u0438\u043c response_type. Standard flow \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e \u0434\u043b\u044f \u043a\u043b\u0456\u0454\u043d\u0442\u0430.
implicitFlowDisabledMessage=\u041a\u043b\u0456\u0454\u043d\u0442\u0443 \u043d\u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0456\u043d\u0456\u0446\u0456\u044e\u0432\u0430\u0442\u0438 \u0432\u0445\u0456\u0434 \u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0456\u0437 \u0432\u043a\u0430\u0437\u0430\u043d\u0438\u043c response_type. Implicit flow \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e \u0434\u043b\u044f \u043a\u043b\u0456\u0454\u043d\u0442\u0430.
invalidRedirectUriMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 uri \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044f
unsupportedNameIdFormatMessage=NameIDFormat \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454\u0442\u044c\u0441\u044f
invalidRequesterMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043a\u043b\u0456\u0454\u043d\u0442
registrationNotAllowedMessage=\u0420\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u044f \u043d\u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u0430
resetCredentialNotAllowedMessage=\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0456 \u0434\u0430\u043d\u0456 \u0437\u0430\u0431\u043e\u0440\u043e\u043d\u0435\u043d\u043e
permissionNotApprovedMessage=\u0414\u043e\u0437\u0432\u0456\u043b \u043d\u0435 \u0441\u0445\u0432\u0430\u043b\u0435\u043d\u043e.
noRelayStateInResponseMessage=\u041d\u0435\u043c\u0430\u0454 \u0441\u0442\u0430\u043d\u0443 \u0440\u0435\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0456\u0457 \u0443 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0456 \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
insufficientPermissionMessage=\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043d\u044c\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u0456\u0432 \u0434\u043b\u044f \u0437\u0432''\u044f\u0437\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
couldNotProceedWithAuthenticationRequestMessage=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u0437\u0430\u043f\u0438\u0442 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0434\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
couldNotObtainTokenMessage=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0442\u043e\u043a\u0435\u043d \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
unexpectedErrorRetrievingTokenMessage=\u041d\u0435\u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0456\u0434 \u0447\u0430\u0441 \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0442\u043e\u043a\u0435\u043d\u0443 \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
unexpectedErrorHandlingResponseMessage=\u041d\u0435\u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0456\u0434 \u0447\u0430\u0441 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0456 \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432
identityProviderAuthenticationFailedMessage=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457. \u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0443\u0432\u0430\u0442\u0438\u0441\u044f \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
couldNotSendAuthenticationRequestMessage=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u0437\u0430\u043f\u0438\u0442 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0434\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
unexpectedErrorHandlingRequestMessage=\u041d\u0435\u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0456\u0434 \u0447\u0430\u0441 \u043e\u0431\u0440\u043e\u0431\u043a\u0438 \u0437\u0430\u043f\u0438\u0442\u0443 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0434\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
invalidAccessCodeMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0443.
sessionNotActiveMessage=\u0421\u0435\u0441\u0456\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u0430.
invalidCodeMessage=\u0421\u0442\u0430\u043b\u0430\u0441\u044f \u043f\u043e\u043c\u0438\u043b\u043a\u0430, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443 \u0447\u0435\u0440\u0435\u0437 \u0432\u0430\u0448 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043e\u043a.
cookieNotFoundMessage=\u0424\u0430\u0439\u043b cookie \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u041f\u0435\u0440\u0435\u043a\u043e\u043d\u0430\u0439\u0442\u0435\u0441\u044f, \u0449\u043e \u0444\u0430\u0439\u043b\u0438 cookie \u0443\u0432\u0456\u043c\u043a\u043d\u0435\u043d\u043e \u0443 \u0432\u0430\u0448\u043e\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456.
insufficientLevelOfAuthentication=\u0417\u0430\u043f\u0438\u0442\u0430\u043d\u0438\u0439 \u0440\u0456\u0432\u0435\u043d\u044c \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u043d\u0435 \u0431\u0443\u0432 \u0437\u0430\u0434\u043e\u0432\u043e\u043b\u0435\u043d\u0438\u0439.
identityProviderUnexpectedErrorMessage=\u041d\u0435\u043e\u0447\u0456\u043a\u0443\u0432\u0430\u043d\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0456\u0434 \u0447\u0430\u0441 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
identityProviderMissingStateMessage=\u0412\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u0442\u0430\u043d\u0443 \u0443 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0456 \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
identityProviderMissingCodeOrErrorMessage=\u0412\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0439 \u043a\u043e\u0434 \u0430\u0431\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e\u043c\u0438\u043b\u043a\u0438 \u0443 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0456 \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
identityProviderInvalidResponseMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0430 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
identityProviderInvalidSignatureMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0456\u0434\u043f\u0438\u0441 \u0443 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0456 \u0432\u0456\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
identityProviderNotFoundMessage=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432.
identityProviderLinkSuccess=\u0412\u0438 \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0438 \u0441\u0432\u043e\u044e \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u043e\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0442\u0430 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0442\u0435 \u0432\u0445\u0456\u0434.
staleCodeMessage=\u0426\u044f \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0430 \u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u0456\u0439\u0441\u043d\u0430, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u043e\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0443 \u0442\u0430 \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443
realmSupportsNoCredentialsMessage=Realm \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u0436\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0443 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0434\u0430\u043d\u0438\u0445.
credentialSetupRequired=\u041d\u0435 \u0432\u0434\u0430\u0454\u0442\u044c\u0441\u044f \u0443\u0432\u0456\u0439\u0442\u0438, \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0434\u0430\u043d\u0438\u0445.
identityProviderNotUniqueMessage=Realm \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043a\u0456\u043b\u044c\u043a\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432. \u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0432\u0438\u0437\u043d\u0430\u0447\u0438\u0442\u0438, \u044f\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432 \u0441\u043b\u0456\u0434 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457.
emailVerifiedMessage=\u0412\u0430\u0448\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 \u0431\u0443\u043b\u043e \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0435\u043d\u043e.
emailVerifiedAlreadyMessage=\u0412\u0430\u0448\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 \u0432\u0436\u0435 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0435\u043d\u043e.
staleEmailVerificationLink=\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f, \u043d\u0430 \u044f\u043a\u0435 \u0412\u0438 \u043d\u0430\u0442\u0438\u0441\u043d\u0443\u043b\u0438, \u0454 \u0437\u0430\u0441\u0442\u0430\u0440\u0456\u043b\u0438\u043c \u0456 \u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0430\u0446\u044e\u0454. \u041c\u043e\u0436\u043b\u0438\u0432\u043e, \u0412\u0438 \u0432\u0436\u0435 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0438 \u0441\u0432\u043e\u044e \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.
identityProviderAlreadyLinkedMessage=\u041e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441, \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0439 {0}, \u0432\u0436\u0435 \u0437\u0432''\u044f\u0437\u0430\u043d\u0438\u0439 \u0437 \u0456\u043d\u0448\u0438\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0435\u043c.
confirmAccountLinking=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0437\u0432''\u044f\u0437\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443 {0} \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432 {1} \u0437 \u0432\u0430\u0448\u0438\u043c \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u043e\u043c.
confirmEmailAddressVerification=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438 {0}.
confirmExecutionOfActions=\u0412\u0438\u043a\u043e\u043d\u0430\u0439\u0442\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0456 \u0434\u0456\u0457
backToApplication=&laquo; \u041d\u0430\u0437\u0430\u0434 \u0434\u043e \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0443
missingParameterMessage=\u0412\u0456\u0434\u0441\u0443\u0442\u043d\u0456 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\: {0}
clientNotFoundMessage=\u041a\u043b\u0456\u0454\u043d\u0442\u0430 \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e.
clientDisabledMessage=\u041a\u043b\u0456\u0454\u043d\u0442\u0430 \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e.
invalidParameterMessage=\u041d\u0435\u0432\u0456\u0440\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\: {0}
alreadyLoggedIn=\u0412\u0438 \u0432\u0436\u0435 \u0432\u0432\u0456\u0439\u0448\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.
differentUserAuthenticated=\u0412\u0438 \u0432\u0436\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u043e\u0432\u0430\u043d\u0456 \u044f\u043a \u0456\u043d\u0448\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 ''{0}'' \u0443 \u0446\u0456\u0439 \u0441\u0435\u0441\u0456\u0457. \u0421\u043f\u043e\u0447\u0430\u0442\u043a\u0443 \u0432\u0438\u0439\u0434\u0456\u0442\u044c.
brokerLinkingSessionExpired=\u0417\u0430\u043f\u0438\u0442\u0430\u043d\u043e \u0437\u0432''\u044f\u0437\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u0430\u043b\u0435 \u043f\u043e\u0442\u043e\u0447\u043d\u0430 \u0441\u0435\u0441\u0456\u044f \u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0435\u0434\u0456\u0439\u0441\u043d\u0430.
proceedWithAction=&raquo; \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0442\u0443\u0442, \u0449\u043e\u0431 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438
acrNotFulfilled=\u0412\u0438\u043c\u043e\u0433\u0438 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u043d\u0435 \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043e
requiredAction.CONFIGURE_TOTP=\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 OTP
requiredAction.TERMS_AND_CONDITIONS=\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044f \u0442\u0430 \u0443\u043c\u043e\u0432\u0438
requiredAction.UPDATE_PASSWORD=\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c
requiredAction.UPDATE_PROFILE=\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u0440\u043e\u0444\u0456\u043b\u044c
requiredAction.VERIFY_EMAIL=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u0413\u0435\u043d\u0435\u0440\u0443\u0432\u0430\u0442\u0438 \u043a\u043e\u0434\u0438 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f
requiredAction.webauthn-register-passwordless=\u0420\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u044f Webauthn \u0431\u0435\u0437 \u043f\u0430\u0440\u043e\u043b\u044f
invalidTokenRequiredActions=\u041d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u0456 \u0434\u0456\u0457, \u044f\u043a\u0456 \u043c\u0456\u0441\u0442\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u0456, \u043d\u0435\u0434\u0456\u0439\u0441\u043d\u0456
doX509Login=\u0412\u0438 \u0443\u0432\u0456\u0439\u0434\u0435\u0442\u0435 \u044f\u043a\:
clientCertificate=\u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442 \u043a\u043b\u0456\u0454\u043d\u0442\u0430 X509\:
noCertificate=[\u041d\u0435\u043c\u0430\u0454 \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u0430]
pageNotFound=\u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0430 \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u0430
internalServerError=\u0421\u0442\u0430\u043b\u0430\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0456\u0448\u043d\u044f \u043f\u043e\u043c\u0438\u043b\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430
console-username=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430\:
console-password=\u041f\u0430\u0440\u043e\u043b\u044c\:
console-otp=\u041e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\:
console-new-password=\u041d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c\:
console-confirm-password=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c\:
console-update-password=\u041f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c.
console-verify-email=\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0441\u0432\u043e\u044e \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u041c\u0438 \u043d\u0430\u0434\u0456\u0441\u043b\u0430\u043b\u0438 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u043b\u0438\u0441\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0443 {0}, \u044f\u043a\u0438\u0439 \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u0434 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f. \u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0446\u0435\u0439 \u043a\u043e\u0434 \u0443 \u043f\u043e\u043b\u0435 \u043d\u0438\u0436\u0447\u0435.
console-email-code=\u041a\u043e\u0434 \u0437 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438\:
console-accept-terms=\u041f\u0440\u0438\u0439\u043d\u044f\u0442\u0438 \u0443\u043c\u043e\u0432\u0438? [y/n]\:
console-accept=y
openshift.scope.user_info=\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
openshift.scope.user_check-access=\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
openshift.scope.user_full=\u041f\u043e\u0432\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f
openshift.scope.list-projects=\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0456\u0432
saml.post-form.title=\u041f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0456\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457
saml.post-form.message=\u041f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0456\u044f, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0437\u0430\u0447\u0435\u043a\u0430\u0439\u0442\u0435.
saml.post-form.js-disabled=JavaScript \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e. \u041c\u0438 \u043d\u0430\u043f\u043e\u043b\u0435\u0433\u043b\u0438\u0432\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u043c\u043e \u0432\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u0439\u043e\u0433\u043e. \u0429\u043e\u0431 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438, \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0438\u0436\u0447\u0435.
saml.artifactResolutionServiceInvalidResponse=\u041d\u0435 \u0432\u0434\u0430\u0454\u0442\u044c\u0441\u044f \u0432\u0438\u0440\u0456\u0448\u0438\u0442\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442.
otp-display-name=\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043e\u043a \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457
otp-help-text=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043e\u0434 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u0437 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0443 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457.
otp-reset-description=\u042f\u043a\u0443 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e OTP \u0441\u043b\u0456\u0434 \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438?
password-display-name=\u041f\u0430\u0440\u043e\u043b\u044c
password-help-text=\u0423\u0432\u0456\u0439\u0434\u0456\u0442\u044c, \u0432\u0432\u0456\u0432\u0448\u0438 \u0441\u0432\u0456\u0439 \u043f\u0430\u0440\u043e\u043b\u044c.
auth-username-form-display-name=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
auth-username-form-help-text=\u041f\u043e\u0447\u043d\u0456\u0442\u044c \u0432\u0445\u0456\u0434, \u0432\u0432\u0456\u0432\u0448\u0438 \u0441\u0432\u043e\u0454 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
auth-username-password-form-display-name=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044c
auth-username-password-form-help-text=\u0423\u0432\u0456\u0439\u0434\u0456\u0442\u044c, \u0432\u0432\u0456\u0432\u0448\u0438 \u0441\u0432\u043e\u0454 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044c.
auth-recovery-authn-code-form-display-name=\u041a\u043e\u0434 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457
auth-recovery-authn-code-form-help-text=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043e\u0434 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0437 \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0443.
auth-recovery-code-info-message=\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043a\u043e\u0434 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f.
auth-recovery-code-prompt=\u041a\u043e\u0434 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \#{0}
auth-recovery-code-header=\u0423\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043a\u043e\u0434\u0443 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457
recovery-codes-error-invalid=\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0438\u0439 \u043a\u043e\u0434 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457
recovery-code-config-header=\u041a\u043e\u0434\u0438 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457
recovery-code-config-warning-title=\u041a\u043e\u0434\u0438 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0431\u0443\u0434\u0435 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438 \u043f\u0456\u0441\u043b\u044f \u0432\u0438\u0445\u043e\u0434\u0443 \u0437 \u0446\u0456\u0454\u0457 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438
recovery-code-config-warning-message=\u041e\u0431\u043e\u0432''\u044f\u0437\u043a\u043e\u0432\u043e \u0440\u043e\u0437\u0434\u0440\u0443\u043a\u0443\u0439\u0442\u0435, \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0442\u0435 \u0430\u0431\u043e \u0441\u043a\u043e\u043f\u0456\u044e\u0439\u0442\u0435 \u0457\u0445 \u0434\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u0440\u043e\u043b\u0456\u0432 \u0456 \u0437\u0431\u0435\u0440\u0435\u0436\u0456\u0442\u044c. \u0421\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f \u0446\u044c\u043e\u0433\u043e \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0440\u0438\u0437\u0432\u0435\u0434\u0435 \u0434\u043e \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f \u0446\u0438\u0445 \u043a\u043e\u0434\u0456\u0432 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0437 \u0432\u0430\u0448\u043e\u0433\u043e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443.
recovery-codes-print=\u0414\u0440\u0443\u043a
recovery-codes-download=\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438
recovery-codes-copy=\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438
recovery-codes-copied=\u0421\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e
recovery-codes-confirmation-message=\u042f \u0437\u0431\u0435\u0440\u0456\u0433 \u0446\u0456 \u043a\u043e\u0434\u0438 \u0432 \u0431\u0435\u0437\u043f\u0435\u0447\u043d\u043e\u043c\u0443 \u043c\u0456\u0441\u0446\u0456
recovery-codes-action-complete=\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f
recovery-codes-action-cancel=\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f
recovery-codes-download-file-header=\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0439\u0442\u0435 \u0446\u0456 \u043a\u043e\u0434\u0438 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0432 \u0431\u0435\u0437\u043f\u0435\u0447\u043d\u043e\u043c\u0443 \u043c\u0456\u0441\u0446\u0456.
recovery-codes-download-file-description=\u041a\u043e\u0434\u0438 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u2014 \u0446\u0435 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u0456 \u043f\u0430\u0440\u043e\u043b\u0456, \u044f\u043a\u0456 \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442\u044c \u0412\u0430\u043c \u0443\u0432\u0456\u0439\u0442\u0438 \u0434\u043e \u0441\u0432\u043e\u0433\u043e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443, \u044f\u043a\u0449\u043e \u0443 \u0412\u0430\u0441 \u043d\u0435\u043c\u0430\u0454 \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0434\u043e \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440\u0430.
recovery-codes-download-file-date=\u0426\u0456 \u043a\u043e\u0434\u0438 \u0431\u0443\u043b\u0438 \u0437\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0456
recovery-codes-label-default=\u041a\u043e\u0434\u0438 \u0432\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f
webauthn-display-name=\u041a\u043b\u044e\u0447 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
webauthn-help-text=\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0441\u0432\u0456\u0439 \u043a\u043b\u044e\u0447 \u0431\u0435\u0437\u043f\u0435\u043a\u0438 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0443.
webauthn-passwordless-display-name=\u041a\u043b\u044e\u0447 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
webauthn-passwordless-help-text=\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0441\u0432\u0456\u0439 \u043a\u043b\u044e\u0447 \u0431\u0435\u0437\u043f\u0435\u043a\u0438 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0443 \u0431\u0435\u0437 \u043f\u0430\u0440\u043e\u043b\u044f.
webauthn-login-title=\u041a\u043b\u044e\u0447 \u0431\u0435\u0437\u043f\u0435\u043a\u0438 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0443
webauthn-registration-title=\u0420\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u044f \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
webauthn-available-authenticators=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0456 \u043a\u043b\u044e\u0447\u0456 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
webauthn-unsupported-browser-text=WebAuthn \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454\u0442\u044c\u0441\u044f \u0446\u0438\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0456\u043d\u0448\u0438\u0439 \u0430\u0431\u043e \u0437\u0432\u0435\u0440\u043d\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
webauthn-doAuthenticate=\u0423\u0432\u0456\u0439\u0442\u0438 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
webauthn-createdAt-label=\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e
webauthn-error-title=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438
webauthn-error-registration=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u0440\u0435\u0454\u0441\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0430\u0448 \u043a\u043b\u044e\u0447 \u0431\u0435\u0437\u043f\u0435\u043a\u0438.<br/> {0}
webauthn-error-api-get=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438.<br/> {0}
webauthn-error-different-user=\u041f\u0435\u0440\u0448\u0438\u0439 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u043e\u0432\u0430\u043d\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u043d\u0435 \u0454 \u0442\u0438\u043c, \u0445\u0442\u043e \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u043e\u0432\u0430\u043d\u0438\u0439 \u043a\u043b\u044e\u0447\u0435\u043c \u0431\u0435\u0437\u043f\u0435\u043a\u0438.
webauthn-error-auth-verification=\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438 \u043d\u0435\u0432\u0456\u0440\u043d\u0438\u0439.<br/> {0}
webauthn-error-register-verification=\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u0457 \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438 \u043d\u0435\u0432\u0456\u0440\u043d\u0438\u0439.<br/> {0}
webauthn-error-user-not-found=\u041d\u0435\u0432\u0456\u0434\u043e\u043c\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u043e\u0432\u0430\u043d\u0438\u0439 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043a\u043b\u044e\u0447\u0430 \u0431\u0435\u0437\u043f\u0435\u043a\u0438.
identity-provider-redirector=\u041f\u0456\u0434\u043a\u043b\u044e\u0447\u0456\u0442\u044c\u0441\u044f \u0434\u043e \u0456\u043d\u0448\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0456\u0432
identity-provider-login-label=\u0410\u0431\u043e \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e
idp-email-verification-display-name=\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438
idp-email-verification-help-text=\u041f\u0456\u0434\u0432''\u044f\u0436\u0456\u0442\u044c \u0441\u0432\u0456\u0439 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441, \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0432\u0448\u0438 \u0441\u0432\u043e\u044e \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443 \u0430\u0434\u0440\u0435\u0441\u0443.
idp-username-password-form-display-name=\u0406\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044c
idp-username-password-form-help-text=\u041f\u0456\u0434\u0432''\u044f\u0436\u0456\u0442\u044c \u0441\u0432\u0456\u0439 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441, \u0443\u0432\u0456\u0439\u0448\u043e\u0432\u0448\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.
finalDeletionConfirmation=\u042f\u043a\u0449\u043e \u0432\u0438 \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0432\u0456\u0439 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441, \u0439\u043e\u0433\u043e \u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0431\u0443\u0434\u0435 \u0432\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438. \u0429\u043e\u0431 \u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u0439 \u0437\u0430\u043f\u0438\u0441, \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u00ab\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438\u00bb.
irreversibleAction=\u0426\u044f \u0434\u0456\u044f \u043d\u0435\u0437\u0432\u043e\u0440\u043e\u0442\u043d\u0430
deleteAccountConfirm=\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443
deletingImplies=\u0412\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f \u0412\u0430\u0448\u043e\u0433\u043e \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443 \u043f\u0435\u0440\u0435\u0434\u0431\u0430\u0447\u0430\u0454\:
errasingData=\u0412\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f \u0443\u0441\u0456\u0445 \u0412\u0430\u0448\u0438\u0445 \u0434\u0430\u043d\u0438\u0445
loggingOutImmediately=\u041d\u0435\u0433\u0430\u0439\u043d\u0438\u0439 \u0432\u0438\u0445\u0456\u0434 \u0456\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0438
accountUnusable=\u0411\u0443\u0434\u044c-\u044f\u043a\u0435 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0443 \u0431\u0443\u0434\u0435 \u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u0438\u043c \u0437 \u0446\u0438\u043c \u043e\u0431\u043b\u0456\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u043e\u043c
userDeletedSuccessfully=\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043e
access-denied=\u0423 \u0434\u043e\u0441\u0442\u0443\u043f\u0456 \u0432\u0456\u0434\u043c\u043e\u0432\u043b\u0435\u043d\u043e
access-denied-when-idp-auth=\u0423 \u0434\u043e\u0441\u0442\u0443\u043f\u0456 \u0432\u0456\u0434\u043c\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u0456\u0434 \u0447\u0430\u0441 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u0457 \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e {0}
frontchannel-logout.title=\u0412\u0438\u0445\u0456\u0434
frontchannel-logout.message=\u0412\u0438 \u0432\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u0437 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0445 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u043d\u043a\u0456\u0432
logoutConfirmTitle=\u0412\u0438\u0445\u0456\u0434
logoutConfirmHeader=\u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u0439\u0442\u0438?
doLogout=\u0412\u0438\u0439\u0442\u0438
readOnlyUsernameMessage=\u0412\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0441\u0432\u043e\u0454 \u0456\u043c''\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430, \u043e\u0441\u043a\u0456\u043b\u044c\u043a\u0438 \u0432\u043e\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0435 \u043b\u0438\u0448\u0435 \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u043d\u043d\u044f.
shouldBeEqual={0} \u043f\u043e\u0432\u0438\u043d\u043d\u043e \u0431\u0443\u0442\u0438 \u0440\u0456\u0432\u043d\u0438\u043c {1}
shouldBeDifferent={0} \u043f\u043e\u0432\u0438\u043d\u043d\u043e \u0432\u0456\u0434\u0440\u0456\u0437\u043d\u044f\u0442\u0438\u0441\u044f \u0432\u0456\u0434 {1}
shouldMatchPattern=\u0428\u0430\u0431\u043b\u043e\u043d \u043f\u043e\u0432\u0438\u043d\u0435\u043d \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0442\u0438\: `/{0}/`
mustBeAnInteger=\u041f\u043e\u0432\u0438\u043d\u043d\u043e \u0431\u0443\u0442\u0438 \u0446\u0456\u043b\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c
notAValidOption=\u041d\u0435 \u0454 \u0434\u0456\u0439\u0441\u043d\u043e\u044e \u043e\u043f\u0446\u0456\u0454\u044e
selectAnOption=\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u043e\u043f\u0446\u0456\u044e
remove=\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438
addValue=\u0414\u043e\u0434\u0430\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f
languages=\u041c\u043e\u0432\u0438

View File

@ -0,0 +1,445 @@
doLogIn=\u767b\u5f55
doRegister=\u6ce8\u518c
doRegisterSecurityKey=\u6ce8\u518c
doCancel=\u53d6\u6d88
doSubmit=\u63d0\u4ea4
doBack=\u8fd4\u56de
doYes=\u662f
doNo=\u5426
doContinue=\u7ee7\u7eed
doIgnore=\u5ffd\u7565
doAccept=\u63a5\u53d7
doDecline=\u62d2\u7edd
doForgotPassword=\u5fd8\u8bb0\u5bc6\u7801?
doClickHere=\u70b9\u51fb\u8fd9\u91cc
doImpersonate=\u6a21\u62df
doTryAgain=\u91cd\u8bd5
doTryAnotherWay=\u5c1d\u8bd5\u5176\u4ed6\u65b9\u6cd5
doConfirmDelete=\u786e\u8ba4\u5220\u9664
errorDeletingAccount=\u5220\u9664\u8d26\u6237\u65f6\u9047\u5230\u9519\u8bef
deletingAccountForbidden=\u60a8\u6ca1\u6709\u6743\u9650\u5220\u9664\u60a8\u7684\u8d26\u6237\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
kerberosNotConfigured=Kerberos \u6ca1\u6709\u914d\u7f6e
kerberosNotConfiguredTitle=Kerberos \u6ca1\u6709\u914d\u7f6e
bypassKerberosDetail=\u60a8\u6ca1\u6709\u901a\u8fc7 Kerberos \u767b\u5f55 \u6216\u8005\u60a8\u7684\u6d4f\u89c8\u5668\u6ca1\u6709\u8bbe\u7f6e Kerberos \u767b\u5f55. \u8bf7\u70b9\u51fb\u7ee7\u7eed\u901a\u8fc7\u5176\u4ed6\u9014\u5f84\u767b\u5f55\u3002
kerberosNotSetUp=Kerberos \u6ca1\u6709\u914d\u7f6e\uff0c\u60a8\u65e0\u6cd5\u767b\u5f55\u3002
registerTitle=\u6ce8\u518c
loginAccountTitle=\u767b\u5f55\u5230\u60a8\u7684\u8d26\u6237
loginTitle=\u767b\u5f55\u5230 {0}
loginTitleHtml={0}
impersonateTitle={0} \u6a21\u62df\u7528\u6237
impersonateTitleHtml=<strong>{0}</strong>\u6a21\u62df\u7528\u6237
realmChoice=\u57df
unknownUser=\u672a\u77e5\u7528\u6237
loginTotpTitle=\u914d\u7f6e\u9a8c\u8bc1\u5668
loginProfileTitle=\u66f4\u65b0\u8d26\u6237\u4fe1\u606f
loginIdpReviewProfileTitle=\u66f4\u65b0\u8d26\u6237\u4fe1\u606f
loginTimeout=\u60a8\u7684\u767b\u5f55\u5df2\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u5f00\u59cb\u767b\u5f55\u3002
reauthenticate=\u8bf7\u91cd\u65b0\u6388\u6743\u4ee5\u7ee7\u7eed
oauthGrantTitle=\u6388\u6743\u7ed9 {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u901a\u8fc7\u4e86\u89e3 {0} \u5c06\u5982\u4f55\u5904\u7406\u60a8\u7684\u6570\u636e\uff0c\u786e\u4fdd\u60a8\u4fe1\u4efb {0} \u3002
oauthGrantReview=\u60a8\u53ef\u4ee5\u5ba1\u9605
oauthGrantTos=\u670d\u52a1\u6761\u6b3e\u3002
oauthGrantPolicy=\u9690\u79c1\u653f\u7b56\u3002
errorTitle=\u5f88\u62b1\u6b49...
errorTitleHtml=\u6211\u4eec<strong>\u5f88\u62b1\u6b49</strong> ...
emailVerifyTitle=\u9a8c\u8bc1\u7535\u5b50\u90ae\u7bb1\u5730\u5740
emailForgotTitle=\u5fd8\u8bb0\u5bc6\u7801\u4e86\u5417?
updateEmailTitle=\u66f4\u65b0\u70b9\u5728\u90ae\u7bb1
emailUpdateConfirmationSentTitle=\u5df2\u53d1\u9001\u786e\u8ba4\u90ae\u4ef6\u3002
emailUpdateConfirmationSent=\u5df2\u5411 {0} \u53d1\u9001\u4e86\u4e00\u5c01\u786e\u8ba4\u90ae\u4ef6. \u8bf7\u6309\u7167\u524d\u9762\u7684\u6307\u793a\u6765\u66f4\u65b0\u7535\u5b50\u90ae\u7bb1\u3002
emailUpdatedTitle=\u7535\u5b50\u90ae\u7bb1\u5df2\u66f4\u65b0\u3002
emailUpdated=\u60a8\u7684\u8d26\u6237\u7684\u7535\u5b50\u90ae\u7bb1\u5df2\u7ecf\u6210\u529f\u66f4\u65b0\u4e3a {0}.
updatePasswordTitle=\u66f4\u65b0\u5bc6\u7801
codeSuccessTitle=\u6210\u529f\u4ee3\u7801
codeErrorTitle=\u9519\u8bef\u4ee3\u7801\: {0}
displayUnsupported=\u4e0d\u652f\u6301\u8bf7\u6c42\u7684\u663e\u793a\u7c7b\u578b
browserRequired=\u9700\u8981\u6d4f\u89c8\u5668\u6765\u767b\u5f55
browserContinue=\u9700\u8981\u6d4f\u89c8\u5668\u6765\u5b8c\u6210\u767b\u5f55
browserContinuePrompt=\u6253\u5f00\u6d4f\u89c8\u5668\u4ee5\u7ee7\u7eed\uff1f [y/n]\:
browserContinueAnswer=y
usb=USB
nfc=NFC
bluetooth=\u84dd\u7259
internal=\u5185\u90e8
unknown=\u672a\u77e5
termsTitle=\u6761\u6b3e
termsText=
termsPlainText=\u9700\u8981\u786e\u5b9a\u7684\u6761\u6b3e\u3002
termsAcceptanceRequired=\u60a8\u5fc5\u987b\u540c\u610f\u6211\u4eec\u7684\u7684\u670d\u52a1\u6761\u6b3e\u3002
acceptTerms=\u6211\u540c\u610f\u670d\u52a1\u6761\u6b3e
recaptchaFailed=\u65e0\u6548\u7684\u9a8c\u8bc1\u7801
recaptchaNotConfigured=\u9700\u8981\u9a8c\u8bc1\u7801\uff0c\u4f46\u662f\u6ca1\u6709\u914d\u7f6e
consentDenied=\u8bb8\u53ef\u88ab\u62d2\u7edd\u3002
noAccount=\u65b0\u7528\u6237?
username=\u7528\u6237\u540d
usernameOrEmail=\u7528\u6237\u540d \u6216 \u7535\u5b50\u90ae\u7bb1\u5730\u5740
firstName=\u540d
givenName=\u59d3
fullName=\u5168\u540d
lastName=\u59d3
familyName=\u59d3
email=Email
password=\u5bc6\u7801
passwordConfirm=\u786e\u8ba4\u5bc6\u7801
passwordNew=\u65b0\u5bc6\u7801
passwordNewConfirm=\u786e\u8ba4\u65b0\u5bc6\u7801
hidePassword=\u9690\u85cf\u5bc6\u7801
showPassword=\u663e\u793a\u5bc6\u7801
rememberMe=\u8bb0\u4f4f\u6211
authenticatorCode=\u4e00\u6b21\u6027\u9a8c\u8bc1\u7801
address=\u5730\u5740
street=\u8857\u9053
locality=\u5e02
region=\u7701\uff0c\u81ea\u6cbb\u533a\uff0c\u76f4\u8f96\u5e02
postal_code=\u90ae\u653f\u7f16\u7801
country=\u56fd\u5bb6
emailVerified=\u5df2\u9a8c\u8bc1\u7535\u5b50\u90ae\u4ef6
website=\u7f51\u5740
phoneNumber=\u7535\u8bdd\u53f7\u7801
phoneNumberVerified=\u5df2\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801
gender=\u6027\u522b
birthday=\u751f\u65e5
zoneinfo=\u65f6\u533a
gssDelegationCredential=GSS Delegation Credential
logoutOtherSessions=\u4ece\u5176\u4ed6\u8bbe\u5907\u4e2d\u767b\u51fa
profileScopeConsentText=\u7528\u6237\u8d44\u6599
emailScopeConsentText=\u7535\u5b50\u90ae\u7bb1\u5730\u5740
addressScopeConsentText=\u5730\u5740
phoneScopeConsentText=\u7535\u8bdd\u53f7\u7801
offlineAccessScopeConsentText=\u79bb\u7ebf\u8bbf\u95ee
samlRoleListScopeConsentText=\u6211\u7684\u89d2\u8272
rolesScopeConsentText=\u7528\u6237\u89d2\u8272
restartLoginTooltip=\u91cd\u65b0\u5f00\u59cb\u767b\u5f55
loginTotpIntro=\u60a8\u9700\u8981\u8bbe\u7f6e\u4e00\u4e2a\u4e00\u6b21\u6027\u5bc6\u7801\u751f\u6210\u5668\u6765\u8bbf\u95ee\u60a8\u7684\u8d26\u6237
loginTotpStep1=\u5728\u60a8\u7684\u79fb\u52a8\u8bbe\u5907\u4e2d\u5b89\u88c5\u4ee5\u4e0b\u4efb\u610f\u4e00\u4e2a\u5e94\u7528\uff1a
loginTotpStep2=\u6253\u5f00\u8be5\u5e94\u7528\u6765\u626b\u63cf\u6761\u7801
loginTotpStep3=\u8f93\u5165\u8be5\u5e94\u7528\u63d0\u4f9b\u7684\u4e00\u6b21\u6027\u4ee3\u7801\u5e76\u70b9\u51fb\u63d0\u4ea4\u6765\u5b8c\u6210\u914d\u7f6e\u3002
loginTotpStep3DeviceName=\u8bf7\u63d0\u4f9b\u4e00\u4e2a\u8bbe\u5907\u540d\u79f0\u4ee5\u65b9\u4fbf\u7ba1\u7406\u60a8\u7684OTP\u8bbe\u5907
loginTotpManualStep2=\u6253\u5f00\u5e94\u7528\u5e76\u8f93\u5165\u5bc6\u94a5\uff1a
loginTotpManualStep3=\u5982\u679c\u5e94\u7528\u7a0b\u5e8f\u5141\u8bb8\u8bbe\u7f6e\uff0c\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u914d\u7f6e\u503c\uff1a
loginTotpUnableToScan=\u65e0\u6cd5\u626b\u63cf\uff1f
loginTotpScanBarcode=\u626b\u63cf\u6761\u7801\uff1f
loginCredential=\u51ed\u8bc1
loginOtpOneTime=\u4e00\u6b21\u6027\u4ee3\u7801
loginTotpType=\u7c7b\u578b
loginTotpAlgorithm=\u7b97\u6cd5
loginTotpDigits=\u4f4d\u6570
loginTotpInterval=\u95f4\u9694
loginTotpCounter=\u8ba1\u6570
loginTotpDeviceName=\u8bbe\u5907\u540d\u79f0
loginTotp.totp=\u57fa\u4e8e\u65f6\u95f4
loginTotp.hotp=\u7ed9\u4e88\u8ba1\u6570\u5668
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u9009\u62e9\u767b\u5f55\u65b9\u5f0f
oauthGrantRequest=\u60a8\u662f\u5426\u6388\u4e88\u8fd9\u4e9b\u8bbf\u95ee\u6743\u9650?
inResource=in
oauth2DeviceVerificationTitle=\u8bbe\u5907\u767b\u5f55
verifyOAuth2DeviceUserCode=\u8f93\u5165\u8bbe\u5907\u63d0\u4f9b\u7684\u4ee3\u7801\uff0c\u7136\u540e\u5355\u51fb\u63d0\u4ea4
oauth2DeviceInvalidUserCodeMessage=\u9519\u8bef\u4ee3\u7801\uff0c\u8bf7\u91cd\u8bd5\u3002
oauth2DeviceExpiredUserCodeMessage=\u4ee3\u7801\u5df2\u8fc7\u671f\u3002\u8bf7\u8fd4\u56de\u60a8\u7684\u8bbe\u5907\u5e76\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u3002
oauth2DeviceVerificationCompleteHeader=\u8bbe\u5907\u767b\u5f55\u6210\u529f
oauth2DeviceVerificationCompleteMessage=\u60a8\u53ef\u4ee5\u5173\u95ed\u6b64\u6d4f\u89c8\u5668\u7a97\u53e3\u5e76\u8fd4\u56de\u60a8\u7684\u8bbe\u5907\u3002
oauth2DeviceVerificationFailedHeader=\u8bbe\u5907\u767b\u5f55\u5931\u8d25\u3002
oauth2DeviceVerificationFailedMessage=\u60a8\u53ef\u4ee5\u5173\u95ed\u6b64\u6d4f\u89c8\u5668\u7a97\u53e3\uff0c\u7136\u540e\u8fd4\u56de\u5230\u60a8\u7684\u8bbe\u5907\u5e76\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u3002
oauth2DeviceConsentDeniedMessage=\u8fde\u63a5\u8bbe\u5907\u7684\u540c\u610f\u88ab\u62d2\u7edd\u3002
oauth2DeviceAuthorizationGrantDisabledMessage=\u4e0d\u5141\u8bb8\u6b64\u5ba2\u6237\u7aef\u542f\u52a8 OAuth 2.0 \u8bbe\u5907\u6388\u6743\u6388\u4e88\u3002\u8be5\u6d41\u7a0b\u5df2\u5bf9\u6b64\u5ba2\u6237\u7aef\u7981\u7528\u3002
emailVerifyInstruction1=\u4e00\u5c01\u5305\u542b\u9a8c\u8bc1\u90ae\u7bb1\u5177\u4f53\u6b65\u9aa4\u7684\u90ae\u4ef6\u5df2\u7ecf\u53d1\u9001\u5230\u60a8\u7684\u90ae\u7bb1\u3002
emailVerifyInstruction2=\u90ae\u7bb1\u6ca1\u6709\u6536\u5230\u9a8c\u8bc1\u7801?
emailVerifyInstruction3=\u91cd\u65b0\u53d1\u9001\u7535\u5b50\u90ae\u4ef6
emailLinkIdpTitle=\u94fe\u63a5 {0}
emailLinkIdp1=\u4e00\u5c01\u5305\u542b\u94fe\u63a5\u8d26\u6237 {0} \u548c\u8d26\u6237 {1} \u5230\u8d26\u6237 {2} \u7684\u90ae\u4ef6\u5df2\u7ecf\u53d1\u9001\u5230\u60a8\u7684\u90ae\u7bb1\u3002
emailLinkIdp2=\u90ae\u7bb1\u6ca1\u6709\u6536\u5230\u9a8c\u8bc1\u7801\u90ae\u4ef6?
emailLinkIdp3=\u91cd\u65b0\u53d1\u9001\u7535\u5b50\u90ae\u4ef6
emailLinkIdp4=\u5982\u679c\u60a8\u5df2\u7ecf\u5728\u4e0d\u540c\u7684\u6d4f\u89c8\u5668\u4e2d\u9a8c\u8bc1\u4e86\u7535\u5b50\u90ae\u4ef6
emailLinkIdp5=\u6765\u7ee7\u7eed.
backToLogin=&laquo; \u56de\u5230\u767b\u5f55
emailInstruction=\u8f93\u5165\u60a8\u7684\u7528\u6237\u540d\u6216\u90ae\u7bb1\uff0c\u6211\u4eec\u4f1a\u53d1\u9001\u4e00\u5c01\u5e26\u6709\u8bbe\u7f6e\u65b0\u5bc6\u7801\u6b65\u9aa4\u7684\u90ae\u4ef6\u5230\u60a8\u7684\u90ae\u7bb1\u3002
emailInstructionUsername=\u8f93\u5165\u60a8\u7684\u7528\u6237\u540d\uff0c\u6211\u4eec\u5c06\u5411\u60a8\u53d1\u9001\u5982\u4f55\u521b\u5efa\u65b0\u5bc6\u7801\u7684\u8bf4\u660e\u3002
copyCodeInstruction=\u8bf7\u590d\u5236\u8fd9\u6bb5\u9a8c\u8bc1\u7801\u5e76\u7c98\u8d34\u5230\u60a8\u7684\u5e94\u7528\uff1a
pageExpiredTitle=\u9875\u9762\u5df2\u8fc7\u671f
pageExpiredMsg1=\u91cd\u542f\u767b\u5f55\u6d41\u7a0b
pageExpiredMsg2=\u7ee7\u7eed\u767b\u5f55\u6d41\u7a0b
personalInfo=\u4e2a\u4eba\u4fe1\u606f\:
role_admin=\u7ba1\u7406\u5458
role_realm-admin=\u57df\u7ba1\u7406\u5458
role_create-realm=\u521b\u5efa\u57df
role_create-client=\u521b\u5efa\u5ba2\u6237\u7aef
role_view-realm=\u67e5\u770b\u57df
role_view-users=\u67e5\u770b\u7528\u6237
role_view-applications=\u67e5\u770b\u5e94\u7528
role_view-clients=\u67e5\u770b\u5ba2\u6237\u7aef
role_view-events=\u67e5\u770b\u65f6\u95f4
role_view-identity-providers=\u67e5\u770b\u8eab\u4efd\u63d0\u4f9b\u8005
role_manage-realm=\u7ba1\u7406\u57df
role_manage-users=\u7ba1\u7406\u7528\u6237
role_manage-applications=\u7ba1\u7406\u5e94\u7528
role_manage-identity-providers=\u7ba1\u7406\u8eab\u4efd\u63d0\u4f9b\u8005
role_manage-clients=\u7ba1\u7406\u5ba2\u6237
role_manage-events=\u7ba1\u7406\u4e8b\u4ef6
role_view-profile=\u67e5\u770b\u7528\u6237\u4fe1\u606f
role_manage-account=\u7ba1\u7406\u8d26\u6237
role_manage-account-links=\u7ba1\u7406\u8d26\u6237\u94fe\u63a5
role_read-token=\u8bfb\u53d6\u4ee4\u724c
role_offline-access=\u79bb\u7ebf\u8bbf\u95ee
client_account=\u8d26\u6237
client_account-console=\u8d26\u6237\u63a7\u5236\u53f0
client_security-admin-console=\u5b89\u5168\u7ba1\u7406\u63a7\u5236\u53f0
client_admin-cli=\u7ba1\u7406\u547d\u4ee4\u884c\u5de5\u5177
client_realm-management=\u57df\u7ba1\u7406
client_broker=\u7ecf\u7eaa\u4eba
requiredFields=\u5fc5\u586b\u5b57\u6bb5
invalidUserMessage=\u65e0\u6548\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\u3002
invalidUsernameMessage=\u65e0\u6548\u7684\u7528\u6237\u540d\u3002
invalidUsernameOrEmailMessage=\u65e0\u6548\u7684\u7528\u6237\u540d\u6216\u7535\u5b50\u90ae\u7bb1\u3002
invalidPasswordMessage=\u65e0\u6548\u7684\u5bc6\u7801.
invalidEmailMessage=\u65e0\u6548\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740
accountDisabledMessage=\u8d26\u6237\u5df2\u88ab\u7981\u7528\uff0c\u8bf7\u8054\u7cfb\u60a8\u7684\u7ba1\u7406\u5458\u3002
accountTemporarilyDisabledMessage=\u8d26\u6237\u88ab\u4e34\u65f6\u7981\u7528\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6216\u7a0d\u540e\u518d\u8bd5\u3002
expiredCodeMessage=\u767b\u5f55\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002
expiredActionMessage=\u64cd\u4f5c\u5df2\u8fc7\u671f\u3002\u8bf7\u767b\u5f55\u540e\u7ee7\u7eed\u3002
expiredActionTokenNoSessionMessage=\u64cd\u4f5c\u5df2\u8fc7\u671f\u3002
expiredActionTokenSessionExistsMessage=\u64cd\u4f5c\u5df2\u8fc7\u671f\u3002\u8bf7\u91cd\u65b0\u5f00\u59cb\u3002
sessionLimitExceeded=\u5df2\u6709\u8fc7\u591a\u4f1a\u8bdd\u3002
missingFirstNameMessage=\u8bf7\u8f93\u5165\u540d\u3002
missingLastNameMessage=\u8bf7\u8f93\u5165\u59d3\u3002
missingEmailMessage=\u8bf7\u8f93\u5165\u7535\u5b50\u90ae\u7bb1.
missingUsernameMessage=\u8bf7\u8f93\u5165\u7528\u6237\u540d\u3002
missingPasswordMessage=\u8bf7\u8f93\u5165\u5bc6\u7801\u3002
missingTotpMessage=\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801
missingTotpDeviceNameMessage=\u8bf7\u6307\u5b9a\u8bbe\u5907\u540d\u79f0\u3002
notMatchPasswordMessage=\u5bc6\u7801\u4e0d\u5339\u914d\u3002
error-invalid-value=\u65e0\u6548\u503c\u3002
error-invalid-blank=\u8bf7\u8f93\u5165\u503c\u3002
error-empty=\u8bf7\u8f93\u5165\u503c\u3002
error-invalid-length=\u957f\u5ea6\u5fc5\u987b\u5728 {1} \u548c {2} \u4e4b\u95f4\u3002
error-invalid-length-too-short=\u6700\u5c0f\u957f\u5ea6\u4e3a {1}\u3002
error-invalid-length-too-long=\u6700\u5927\u957f\u5ea6\u4e3a {2}\u3002
error-invalid-email=\u65e0\u6548\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002
error-invalid-number=\u65e0\u6548\u53f7\u7801\u3002
error-number-out-of-range=\u53f7\u7801\u5fc5\u987b\u4ecb\u4e8e {1} \u548c {2} \u4e4b\u95f4\u3002
error-number-out-of-range-too-small=\u6570\u5b57\u7684\u6700\u5c0f\u503c\u5fc5\u987b\u662f {1}\u3002
error-number-out-of-range-too-big=\u6570\u503c\u7684\u6700\u5927\u503c\u5fc5\u987b\u4e3a {2}\u3002
error-pattern-no-match=\u65e0\u6548\u503c\u3002
error-invalid-uri=\u65e0\u6548 URL\u3002
error-invalid-uri-scheme=\u65e0\u6548 URL \u65b9\u6848\u3002
error-invalid-uri-fragment=\u65e0\u6548 URL \u7247\u6bb5\u3002
error-user-attribute-required=\u8bf7\u6307\u5b9a\u6b64\u5b57\u6bb5\u3002
error-invalid-date=\u65e0\u6548\u65e5\u671f\u3002
error-user-attribute-read-only=\u6b64\u5b57\u6bb5\u53ea\u8bfb\u3002
error-username-invalid-character=\u503c\u5305\u542b\u65e0\u6548\u5b57\u7b26\u3002
error-person-name-invalid-character=\u503c\u5305\u542b\u65e0\u6548\u5b57\u7b26\u3002
error-reset-otp-missing-id=\u8bf7\u9009\u62e9 OTP \u914d\u7f6e\u3002
invalidPasswordExistingMessage=\u65e0\u6548\u7684\u65e7\u5bc6\u7801
invalidPasswordBlacklistedMessage=\u65e0\u6548\u5bc6\u7801\uff1a\u8be5\u5bc6\u7801\u5df2\u7ecf\u88ab\u62c9\u9ed1\u3002
invalidPasswordConfirmMessage=\u786e\u8ba4\u5bc6\u7801\u4e0d\u76f8\u540c
invalidTotpMessage=\u65e0\u6548\u7684\u9a8c\u8bc1\u7801
usernameExistsMessage=\u7528\u6237\u540d\u5df2\u88ab\u5360\u7528
emailExistsMessage=\u7535\u5b50\u90ae\u4ef6\u5df2\u5b58\u5728\u3002
federatedIdentityExistsMessage=\u7528\u6237 {0} {1} \u5df2\u5b58\u5728. \u8bf7\u767b\u5f55\u8d26\u6237\u7ba1\u7406\u754c\u9762\u94fe\u63a5\u8d26\u6237.
federatedIdentityUnavailableMessage=\u4f7f\u7528\u8eab\u4efd\u63d0\u4f9b\u8005 {1} \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u7528\u6237 {0} \u4e0d\u5b58\u5728\u3002\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
federatedIdentityUnmatchedEssentialClaimMessage=\u8eab\u4efd\u63d0\u4f9b\u8005\u7b7e\u53d1\u7684 ID \u4ee4\u724c\u4e0e\u914d\u7f6e\u7684\u57fa\u672c\u8981\u6c42\u4e0d\u5339\u914d\u3002\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
confirmLinkIdpTitle=\u8d26\u6237\u5df2\u5b58\u5728
federatedIdentityConfirmLinkMessage=\u7528\u6237{0} {1} \u5df2\u5b58\u5728. \u600e\u4e48\u7ee7\u7eed?
federatedIdentityConfirmReauthenticateMessage=\u4ee5 {0} \u767b\u5f55\u6765\u5c06 {1} \u8fde\u63a5\u5230\u60a8\u7684\u8d26\u6237
nestedFirstBrokerFlowMessage={0} \u7528\u6237 {1} \u4e0e\u4efb\u4f55\u5df2\u77e5\u7528\u6237\u90fd\u6ca1\u6709\u5173\u8054\u3002
confirmLinkIdpReviewProfile=\u5ba1\u67e5\u60a8\u7684\u4fe1\u606f
confirmLinkIdpContinue=\u6dfb\u52a0\u5230\u5df2\u77e5\u8d26\u6237
configureTotpMessage=\u60a8\u9700\u8981\u8bbe\u7f6e\u79fb\u52a8\u9a8c\u8bc1\u7801\u6765\u6fc0\u6d3b\u60a8\u7684\u8d26\u6237\u3002
configureBackupCodesMessage=\u60a8\u9700\u8981\u8bbe\u7f6e\u5907\u4efd\u4ee3\u7801\u6765\u6fc0\u6d3b\u60a8\u7684\u8d26\u6237\u3002
updateProfileMessage=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u7528\u6237\u8d44\u6599\u6765\u6fc0\u6d3b\u60a8\u7684\u8d26\u6237\u3002
updatePasswordMessage=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u5bc6\u7801\u6765\u6fc0\u6d3b\u60a8\u7684\u8d26\u6237\u3002
updateEmailMessage=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u7535\u5b50\u90ae\u7bb1\u5730\u5740\u6765\u6fc0\u6d3b\u60a8\u7684\u8d26\u6237\u3002
resetPasswordMessage=\u60a8\u9700\u8981\u4fee\u6539\u60a8\u7684\u5bc6\u7801\u3002
verifyEmailMessage=\u60a8\u9700\u8981\u9a8c\u8bc1\u60a8\u7684\u7535\u5b50\u90ae\u7bb1\u6765\u6fc0\u6d3b\u60a8\u7684\u8d26\u6237
linkIdpMessage=\u60a8\u9700\u8981\u9a8c\u8bc1\u60a8\u7684\u7535\u5b50\u90ae\u7bb1\u6765\u8fde\u63a5\u5230\u8d26\u6237{0}.
emailSentMessage=\u60a8\u5f88\u5feb\u4f1a\u6536\u5230\u4e00\u5c01\u5173\u4e8e\u63a5\u4e0b\u6765\u64cd\u4f5c\u7684\u90ae\u4ef6\u3002
emailSendErrorMessage=\u65e0\u6cd5\u53d1\u9001\u90ae\u4ef6\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5
accountUpdatedMessage=\u60a8\u7684\u8d26\u6237\u5df2\u7ecf\u66f4\u65b0\u3002
accountPasswordUpdatedMessage=\u60a8\u7684\u5bc6\u7801\u5df2\u7ecf\u88ab\u66f4\u65b0\u3002
delegationCompleteHeader=\u767b\u5f55\u6210\u529f
delegationCompleteMessage=\u60a8\u53ef\u4ee5\u5173\u95ed\u6d4f\u89c8\u5668\u7a97\u53e3\uff0c\u8fd4\u56de\u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u3002
delegationFailedHeader=\u767b\u5f55\u5931\u8d25
delegationFailedMessage=\u60a8\u53ef\u4ee5\u5173\u95ed\u6b64\u6d4f\u89c8\u5668\u7a97\u53e3\uff0c\u8fd4\u56de\u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u5e76\u5c1d\u8bd5\u91cd\u65b0\u767b\u5f55\u3002
noAccessMessage=\u65e0\u6743\u9650
invalidPasswordMinLengthMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u6700\u77ed\u957f\u5ea6 {0}.
invalidPasswordMaxLengthMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u6700\u5927\u957f\u5ea6 {0}.
invalidPasswordMinDigitsMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a \u81f3\u5c11\u5305\u542b{0} \u4e2a\u6570\u5b57
invalidPasswordMinLowerCaseCharsMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u81f3\u5c11\u5305\u542b {0} \u5c0f\u5199\u5b57\u6bcd.
invalidPasswordMinUpperCaseCharsMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u81f3\u5c11\u5305\u542b {0} \u5927\u5199\u5b57\u6bcd.
invalidPasswordMinSpecialCharsMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u81f3\u5c11\u5305\u542b {0} \u7279\u6b8a\u5b57\u7b26.
invalidPasswordNotUsernameMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a \u4e0d\u80fd\u4e0e\u7528\u6237\u540d\u76f8\u540c.
invalidPasswordNotEmailMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u4e0d\u80fd\u4e0e\u7535\u5b50\u90ae\u7bb1\u5730\u5740\u76f8\u540c\u3002
invalidPasswordRegexPatternMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a \u65e0\u6cd5\u4e0e\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d.
invalidPasswordHistoryMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a \u4e0d\u80fd\u4e0e\u524d {0} \u4e2a\u65e7\u5bc6\u7801\u76f8\u540c.
invalidPasswordGenericMessage=\u65e0\u6548\u7684\u5bc6\u7801\uff1a\u65b0\u5bc6\u7801\u4e0d\u7b26\u5408\u5bc6\u7801\u89c4\u5219\u3002
failedToProcessResponseMessage=\u65e0\u6cd5\u5904\u7406\u56de\u590d
httpsRequiredMessage=\u9700\u8981HTTPS
realmNotEnabledMessage=\u57df\u672a\u542f\u7528
invalidRequestMessage=\u975e\u6cd5\u7684\u8bf7\u6c42
successLogout=\u60a8\u5df2\u88ab\u767b\u51fa
failedLogout=\u65e0\u6cd5\u767b\u51fa
unknownLoginRequesterMessage=\u672a\u77e5\u7684\u767b\u5f55\u8bf7\u6c42\u53d1\u8d77\u65b9
loginRequesterNotEnabledMessage=\u767b\u5f55\u8bf7\u6c42\u53d1\u8d77\u65b9\u672a\u542f\u7528
bearerOnlyMessage=Bearer-only \u7684\u5e94\u7528\u4e0d\u5141\u8bb8\u901a\u8fc7\u6d4f\u89c8\u5668\u767b\u5f55
standardFlowDisabledMessage=\u5ba2\u6237\u7aef\u4e0d\u5141\u8bb8\u53d1\u8d77\u6307\u5b9a\u8fd4\u56de\u7c7b\u578b\u7684\u6d4f\u89c8\u5668\u767b\u5f55. \u6b64\u5ba2\u6237\u7aef\u5df2\u7981\u7528\u6807\u51c6\u6d41\u7a0b\u3002
implicitFlowDisabledMessage=\u5ba2\u6237\u7aef\u4e0d\u5141\u8bb8\u53d1\u8d77\u6307\u5b9a\u8fd4\u56de\u7c7b\u578b\u7684\u6d4f\u89c8\u5668\u767b\u5f55. \u6b64\u5ba2\u6237\u7aef\u5df2\u7981\u7528\u9690\u5f0f\u6d41\u7a0b\u3002
invalidRedirectUriMessage=\u65e0\u6548\u7684\u8df3\u8f6c\u94fe\u63a5
unsupportedNameIdFormatMessage=\u4e0d\u652f\u6301\u7684 NameIDFormat
invalidRequesterMessage=\u65e0\u6548\u7684\u53d1\u8d77\u8005
registrationNotAllowedMessage=\u4e0d\u5141\u8bb8\u6ce8\u518c
resetCredentialNotAllowedMessage=\u4e0d\u5141\u8bb8\u91cd\u7f6e\u51ed\u8bc1
permissionNotApprovedMessage=\u8bb8\u53ef\u6ca1\u6709\u6279\u51c6
noRelayStateInResponseMessage=\u8eab\u4efd\u63d0\u4f9b\u8005\u6ca1\u6709\u8fd4\u56de\u4e2d\u7ee7\u72b6\u6001\u4fe1\u606f
insufficientPermissionMessage=\u6743\u9650\u4e0d\u8db3\u4ee5\u94fe\u63a5\u65b0\u7684\u8eab\u4efd
couldNotProceedWithAuthenticationRequestMessage=\u65e0\u6cd5\u4e0e\u8eab\u4efd\u63d0\u4f9b\u8005\u5904\u7406\u8ba4\u8bc1\u8bf7\u6c42
couldNotObtainTokenMessage=\u672a\u4ece\u8eab\u4efd\u63d0\u4f9b\u8005\u83b7\u5f97\u4ee4\u724c
unexpectedErrorRetrievingTokenMessage=\u4ece\u8eab\u4efd\u63d0\u4f9b\u8005\u83b7\u5f97\u4ee4\u724c\u65f6\u9047\u5230\u672a\u77e5\u9519\u8bef
unexpectedErrorHandlingResponseMessage=\u4ece\u8eab\u4efd\u63d0\u4f9b\u8005\u83b7\u5f97\u56de\u590d\u65f6\u9047\u5230\u672a\u77e5\u9519\u8bef
identityProviderAuthenticationFailedMessage=\u8ba4\u8bc1\u5931\u8d25\uff0c\u65e0\u6cd5\u901a\u8fc7\u8eab\u4efd\u63d0\u4f9b\u8005\u8ba4\u8bc1
couldNotSendAuthenticationRequestMessage=\u65e0\u6cd5\u5411\u8eab\u4efd\u63d0\u4f9b\u65b9\u53d1\u9001\u8ba4\u8bc1\u8bf7\u6c42
unexpectedErrorHandlingRequestMessage=\u5728\u5904\u7406\u53d1\u5411\u8ba4\u8bc1\u63d0\u4f9b\u65b9\u7684\u8bf7\u6c42\u65f6\uff0c\u51fa\u73b0\u672a\u77e5\u9519\u8bef\u3002
invalidAccessCodeMessage=\u65e0\u6548\u7684\u8bbf\u95ee\u4ee3\u7801
sessionNotActiveMessage=\u4f1a\u8bdd\u4e0d\u5728\u6d3b\u52a8\u72b6\u6001
invalidCodeMessage=\u53d1\u751f\u9519\u8bef\uff0c\u8bf7\u901a\u8fc7\u5e94\u7528\u7a0b\u5e8f\u91cd\u65b0\u767b\u5f55\u3002
cookieNotFoundMessage=\u672a\u627e\u5230 cookie\u3002\u8bf7\u786e\u4fdd\u6d4f\u89c8\u5668\u5df2\u542f\u7528 cookie\u3002
insufficientLevelOfAuthentication=\u672a\u6ee1\u8db3\u6240\u8bf7\u6c42\u7684\u8eab\u4efd\u9a8c\u8bc1\u7ea7\u522b\u3002
identityProviderUnexpectedErrorMessage=\u4e0e\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u51fa\u73b0\u610f\u5916\u9519\u8bef
identityProviderMissingStateMessage=\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u7684\u54cd\u5e94\u4e2d\u7f3a\u5c11\u72b6\u6001\u53c2\u6570\u3002
identityProviderMissingCodeOrErrorMessage=\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u7684\u54cd\u5e94\u4e2d\u7f3a\u5c11\u4ee3\u7801\u6216\u9519\u8bef\u53c2\u6570\u3002
identityProviderInvalidResponseMessage=\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u7684\u65e0\u6548\u54cd\u5e94\u3002
identityProviderInvalidSignatureMessage=\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u54cd\u5e94\u4e2d\u7684\u65e0\u6548\u7b7e\u540d\u3002
identityProviderNotFoundMessage=\u627e\u4e0d\u5230\u5177\u6709\u6807\u8bc6\u7b26\u7684\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u3002
identityProviderLinkSuccess=\u60a8\u5df2\u6210\u529f\u9a8c\u8bc1\u7535\u5b50\u90ae\u4ef6\u3002\u8bf7\u56de\u5230\u539f\u6765\u7684\u6d4f\u89c8\u5668\u7ee7\u7eed\u767b\u5f55\u3002
staleCodeMessage=\u6b64\u9875\u9762\u5df2\u5931\u6548\uff0c\u8bf7\u8fd4\u56de\u5e94\u7528\u7a0b\u5e8f\u5e76\u91cd\u65b0\u767b\u5f55
realmSupportsNoCredentialsMessage=\u57df\u4e0d\u652f\u6301\u4efb\u4f55\u51ed\u8bc1\u7c7b\u578b\u3002
credentialSetupRequired=\u65e0\u6cd5\u767b\u5f55\uff0c\u9700\u8981\u8bbe\u7f6e\u51ed\u8bc1\u3002
identityProviderNotUniqueMessage=\u8be5\u57df\u652f\u6301\u591a\u4e2a\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u3002\u65e0\u6cd5\u786e\u5b9a\u5e94\u4f7f\u7528\u54ea\u4e2a\u8eab\u4efd\u63d0\u4f9b\u7a0b\u5e8f\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u3002
emailVerifiedMessage=\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u5df2\u901a\u8fc7\u9a8c\u8bc1\u3002
emailVerifiedAlreadyMessage=\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u5df2\u88ab\u9a8c\u8bc1\u901a\u8fc7\u3002
staleEmailVerificationLink=\u60a8\u70b9\u51fb\u7684\u94fe\u63a5\u662f\u65e7\u7684\u8fc7\u671f\u94fe\u63a5\uff0c\u5df2\u7ecf\u4e0d\u518d\u6709\u6548\u3002 \u4e5f\u8bb8\u60a8\u5df2\u7ecf\u9a8c\u8bc1\u4e86\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u3002
identityProviderAlreadyLinkedMessage={0} \u8fd4\u56de\u7684\u8054\u5408\u8eab\u4efd\u5df2\u94fe\u63a5\u5230\u53e6\u4e00\u4e2a\u7528\u6237\u3002
confirmAccountLinking=\u786e\u8ba4\u5c06\u8eab\u4efd\u63d0\u4f9b\u8005 {1} \u7684\u8d26\u6237 {0} \u4e0e\u60a8\u7684\u8d26\u6237\u94fe\u63a5\u3002
confirmEmailAddressVerification=\u786e\u8ba4\u7535\u5b50\u90ae\u4ef6\u5730\u5740 {0} \u7684\u6709\u6548\u6027\u3002
confirmExecutionOfActions=\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c
backToApplication=&laquo; \u56de\u5230\u5e94\u7528
missingParameterMessage=\u7f3a\u5c11\u53c2\u6570 \: {0}
clientNotFoundMessage=\u5ba2\u6237\u7aef\u672a\u627e\u5230
clientDisabledMessage=\u5ba2\u6237\u7aef\u5df2\u7981\u7528
invalidParameterMessage=\u65e0\u6548\u7684\u53c2\u6570 \: {0}
alreadyLoggedIn=\u60a8\u5df2\u7ecf\u767b\u5f55\u3002
differentUserAuthenticated=\u60a8\u5df2\u7ecf\u4ee5\u4e0d\u540c\u7528\u6237 ''{0}'' \u7684\u8eab\u4efd\u5728\u6b64\u4f1a\u8bdd\u4e2d\u8fdb\u884c\u4e86\u8eab\u4efd\u9a8c\u8bc1\u3002\u8bf7\u5148\u6ce8\u9500\u3002
brokerLinkingSessionExpired=\u5df2\u8bf7\u6c42\u4e0e\u7ecf\u7eaa\u4eba\u5e10\u6237\u94fe\u63a5\uff0c\u4f46\u5f53\u524d\u4f1a\u8bdd\u4e0d\u518d\u6709\u6548\u3002
proceedWithAction=&raquo; \u70b9\u51fb\u6b64\u5904\u7ee7\u7eed
acrNotFulfilled=\u672a\u6ee1\u8db3\u8eab\u4efd\u9a8c\u8bc1\u8981\u6c42
requiredAction.CONFIGURE_TOTP=\u914d\u7f6eOTP
requiredAction.TERMS_AND_CONDITIONS=\u6761\u6b3e\u548c\u6761\u4ef6
requiredAction.UPDATE_PASSWORD=\u66f4\u65b0\u5bc6\u7801
requiredAction.UPDATE_PROFILE=\u66f4\u65b0\u4e2a\u4eba\u8d44\u6599
requiredAction.VERIFY_EMAIL=\u9a8c\u8bc1\u7535\u5b50\u90ae\u7bb1
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u751f\u6210\u6062\u590d\u4ee3\u7801
requiredAction.webauthn-register-passwordless=Webauthn\u6ce8\u518c\u514d\u5bc6\u7801
invalidTokenRequiredActions=\u94fe\u63a5\u4e2d\u5305\u542b\u7684\u5fc5\u9700\u64cd\u4f5c\u65e0\u6548
doX509Login=\u60a8\u5c06\u88ab\u767b\u5f55\u4e3a\uff1a
clientCertificate=X509\u5ba2\u6237\u7aef\u8bc1\u4e66\uff1a
noCertificate=[No Certificate]
pageNotFound=\u9875\u9762\u672a\u627e\u5230
internalServerError=\u53d1\u751f\u5185\u90e8\u670d\u52a1\u5668\u9519\u8bef
console-username=\u7528\u6237\u540d\uff1a
console-password=\u5bc6\u7801\uff1a
console-otp=\u4e00\u6b21\u6027\u5bc6\u7801\uff1a
console-new-password=\u65b0\u5bc6\u7801\uff1a
console-confirm-password=\u786e\u8ba4\u5bc6\u7801\uff1a
console-update-password=\u9700\u8981\u66f4\u65b0\u60a8\u7684\u5bc6\u7801\u3002
console-verify-email=\u60a8\u9700\u8981\u9a8c\u8bc1\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002\u6211\u4eec\u5df2\u5411 {0} \u53d1\u9001\u4e86\u4e00\u5c01\u5305\u542b\u9a8c\u8bc1\u7801\u7684\u7535\u5b50\u90ae\u4ef6\u3002\u8bf7\u5c06\u6b64\u4ee3\u7801\u8f93\u5165\u4e0b\u9762\u7684\u8f93\u5165\u6846\u4e2d\u3002
console-email-code=\u7535\u5b50\u90ae\u4ef6\u9a8c\u8bc1\u7801\uff1a
console-accept-terms=\u63a5\u53d7\u6761\u6b3e\uff1f[y/n]\uff1a
console-accept=y
openshift.scope.user_info=\u7528\u6237\u4fe1\u606f
openshift.scope.user_check-access=\u7528\u6237\u8bbf\u95ee\u4fe1\u606f
openshift.scope.user_full=\u5b8c\u5168\u8bbf\u95ee
openshift.scope.list-projects=\u5217\u51fa\u9879\u76ee
saml.post-form.title=\u8eab\u4efd\u9a8c\u8bc1\u91cd\u5b9a\u5411
saml.post-form.message=\u91cd\u5b9a\u5411\u4e2d\uff0c\u8bf7\u7a0d\u5019\u3002
saml.post-form.js-disabled=JavaScript\u5df2\u88ab\u7981\u7528\u3002\u6211\u4eec\u5f3a\u70c8\u5efa\u8bae\u542f\u7528\u5b83\u3002\u70b9\u51fb\u4e0b\u9762\u7684\u6309\u94ae\u7ee7\u7eed\u3002
saml.artifactResolutionServiceInvalidResponse=\u65e0\u6cd5\u89e3\u6790\u6784\u9020\u3002
otp-display-name=\u9a8c\u8bc1\u5668\u5e94\u7528\u7a0b\u5e8f
otp-help-text=\u4ece\u9a8c\u8bc1\u5668\u5e94\u7528\u8f93\u5165\u9a8c\u8bc1\u7801\u3002
otp-reset-description=\u5e94\u5220\u9664\u54ea\u4e2aOTP\u914d\u7f6e\uff1f
password-display-name=\u5bc6\u7801
password-help-text=\u901a\u8fc7\u8f93\u5165\u5bc6\u7801\u767b\u5f55\u3002
auth-username-form-display-name=\u7528\u6237\u540d
auth-username-form-help-text=\u8f93\u5165\u7528\u6237\u540d\u4ee5\u5f00\u59cb\u767b\u5f55
auth-username-password-form-display-name=\u7528\u6237\u540d\u548c\u5bc6\u7801
auth-username-password-form-help-text=\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\u4ee5\u767b\u5f55\u3002
auth-recovery-authn-code-form-display-name=\u6062\u590d\u4ee3\u7801
auth-recovery-authn-code-form-help-text=\u8f93\u5165\u5148\u524d\u751f\u6210\u7684\u6062\u590d\u4ee3\u7801\u3002
auth-recovery-code-info-message=\u8f93\u5165\u6307\u5b9a\u7684\u6062\u590d\u4ee3\u7801\u3002
auth-recovery-code-prompt=\u6062\u590d\u4ee3\u7801 \#{0}
auth-recovery-code-header=\u4f7f\u7528\u6062\u590d\u4ee3\u7801\u767b\u5f55
recovery-codes-error-invalid=\u65e0\u6548\u7684\u4ee3\u7801
recovery-code-config-header=\u6062\u590d\u4ee3\u7801
recovery-code-config-warning-title=\u79bb\u5f00\u6b64\u9875\u9762\u540e\uff0c\u8fd9\u4e9b\u6062\u590d\u4ee3\u7801\u5c06\u4e0d\u518d\u663e\u793a
recovery-code-config-warning-message=\u786e\u4fdd\u6253\u5370\u3001\u4e0b\u8f7d\u6216\u5c06\u5b83\u4eec\u590d\u5236\u5230\u5bc6\u7801\u7ba1\u7406\u5668\uff0c\u5e76\u5c06\u5176\u4fdd\u5b58\u5728\u5b89\u5168\u7684\u5730\u65b9\u3002\u53d6\u6d88\u6b64\u8bbe\u7f6e\u5c06\u4ece\u60a8\u7684\u5e10\u6237\u4e2d\u5220\u9664\u8fd9\u4e9b\u6062\u590d\u4ee3\u7801\u3002
recovery-codes-print=\u6253\u5370
recovery-codes-download=\u4e0b\u8f7d
recovery-codes-copy=\u590d\u5236
recovery-codes-copied=\u5df2\u590d\u5236
recovery-codes-confirmation-message=\u6211\u5df2\u5c06\u8fd9\u4e9b\u4ee3\u7801\u4fdd\u5b58\u5728\u5b89\u5168\u7684\u5730\u65b9
recovery-codes-action-complete=\u5b8c\u6210\u8bbe\u7f6e
recovery-codes-action-cancel=\u53d6\u6d88\u8bbe\u7f6e
recovery-codes-download-file-header=\u5c06\u8fd9\u4e9b\u6062\u590d\u4ee3\u7801\u4fdd\u5b58\u5728\u5b89\u5168\u7684\u5730\u65b9\u3002
recovery-codes-download-file-description=\u6062\u590d\u4ee3\u7801\u662f\u4e00\u6b21\u6027\u9a8c\u8bc1\u7801\uff0c\u5982\u679c\u60a8\u65e0\u6cd5\u8bbf\u95ee\u60a8\u7684\u9a8c\u8bc1\u5668\uff0c\u53ef\u4ee5\u4f7f\u7528\u5b83\u4eec\u767b\u5f55\u5230\u60a8\u7684\u5e10\u6237\u3002
recovery-codes-download-file-date=\u8fd9\u4e9b\u4ee3\u7801\u751f\u6210\u4e8e
recovery-codes-label-default=\u6062\u590d\u4ee3\u7801
webauthn-display-name=\u5b89\u5168\u5bc6\u94a5
webauthn-help-text=\u4f7f\u7528\u60a8\u7684\u5b89\u5168\u5bc6\u94a5\u767b\u5f55\u3002
webauthn-passwordless-display-name=\u5b89\u5168\u5bc6\u94a5
webauthn-passwordless-help-text=\u4f7f\u7528\u60a8\u7684\u5b89\u5168\u5bc6\u94a5\u8fdb\u884c\u65e0\u5bc6\u7801\u767b\u5f55\u3002
webauthn-login-title=\u5b89\u5168\u5bc6\u94a5\u767b\u5f55
webauthn-registration-title=\u5b89\u5168\u5bc6\u94a5\u6ce8\u518c
webauthn-available-authenticators=\u53ef\u7528\u7684\u5b89\u5168\u5bc6\u94a5
webauthn-unsupported-browser-text=\u6b64\u6d4f\u89c8\u5668\u4e0d\u652f\u6301 WebAuthn\u3002\u8bf7\u5c1d\u8bd5\u5176\u4ed6\u6d4f\u89c8\u5668\u6216\u8054\u7cfb\u7ba1\u7406\u5458\u3002
webauthn-doAuthenticate=\u4f7f\u7528\u5b89\u5168\u5bc6\u94a5\u767b\u5f55
webauthn-createdAt-label=\u521b\u5efa\u4e8e
webauthn-error-title=\u5b89\u5168\u5bc6\u94a5\u9519\u8bef
webauthn-error-registration=\u6ce8\u518c\u60a8\u7684\u5b89\u5168\u5bc6\u94a5\u5931\u8d25\u3002<br/> {0}
webauthn-error-api-get=\u901a\u8fc7\u5b89\u5168\u5bc6\u94a5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u5931\u8d25\u3002<br/> {0}
webauthn-error-different-user=\u9996\u6b21\u7ecf\u8fc7\u8eab\u4efd\u9a8c\u8bc1\u7684\u7528\u6237\u4e0d\u662f\u901a\u8fc7\u5b89\u5168\u5bc6\u94a5\u7ecf\u8fc7\u8eab\u4efd\u9a8c\u8bc1\u7684\u7528\u6237\u3002
webauthn-error-auth-verification=\u5b89\u5168\u5bc6\u94a5\u8eab\u4efd\u9a8c\u8bc1\u7ed3\u679c\u65e0\u6548\u3002<br/> {0}
webauthn-error-register-verification=\u5b89\u5168\u5bc6\u94a5\u6ce8\u518c\u7ed3\u679c\u65e0\u6548\u3002<br/> {0}
webauthn-error-user-not-found=\u901a\u8fc7\u5b89\u5168\u5bc6\u94a5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u7528\u6237\u672a\u77e5\u3002
identity-provider-redirector=\u8fde\u63a5\u5230\u53e6\u4e00\u4e2a\u8eab\u4efd\u63d0\u4f9b\u8005
identity-provider-login-label=\u6216\u4f7f\u7528\u4ee5\u4e0b\u65b9\u5f0f\u767b\u5f55
idp-email-verification-display-name=\u7535\u5b50\u90ae\u4ef6\u9a8c\u8bc1
idp-email-verification-help-text=\u901a\u8fc7\u9a8c\u8bc1\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u6765\u94fe\u63a5\u60a8\u7684\u5e10\u6237\u3002
idp-username-password-form-display-name=\u7528\u6237\u540d\u548c\u5bc6\u7801
idp-username-password-form-help-text=\u901a\u8fc7\u767b\u5f55\u6765\u94fe\u63a5\u60a8\u7684\u5e10\u6237\u3002
finalDeletionConfirmation=\u5982\u679c\u5c06\u60a8\u7684\u5e10\u6237\u5220\u9664\uff0c\u5c06\u65e0\u6cd5\u6062\u590d\u3002\u5982\u679c\u8981\u4fdd\u7559\u60a8\u7684\u5e10\u6237\uff0c\u8bf7\u70b9\u51fb\u53d6\u6d88\u3002
irreversibleAction=\u6b64\u64cd\u4f5c\u4e0d\u53ef\u9006\u8f6c
deleteAccountConfirm=\u5220\u9664\u5e10\u6237\u786e\u8ba4
deletingImplies=\u5220\u9664\u60a8\u7684\u5e10\u6237\u610f\u5473\u7740\uff1a
errasingData=\u5220\u9664\u60a8\u7684\u6240\u6709\u6570\u636e
loggingOutImmediately=\u7acb\u5373\u5c06\u60a8\u6ce8\u9500
accountUnusable=\u6b64\u5e10\u6237\u5c06\u65e0\u6cd5\u518d\u6b21\u4f7f\u7528\u5e94\u7528\u7a0b\u5e8f
userDeletedSuccessfully=\u7528\u6237\u5220\u9664\u6210\u529f
access-denied=\u8bbf\u95ee\u88ab\u62d2\u7edd
access-denied-when-idp-auth=\u4f7f\u7528 {0} \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\u88ab\u62d2\u7edd\u8bbf\u95ee
frontchannel-logout.title=\u6b63\u5728\u6ce8\u9500
frontchannel-logout.message=\u60a8\u6b63\u5728\u4ece\u4ee5\u4e0b\u5e94\u7528\u7a0b\u5e8f\u6ce8\u9500
logoutConfirmTitle=\u6ce8\u9500
logoutConfirmHeader=\u60a8\u786e\u5b9a\u8981\u6ce8\u9500\u5417\uff1f
doLogout=\u6ce8\u9500
readOnlyUsernameMessage=\u7531\u4e8e\u7528\u6237\u540d\u662f\u53ea\u8bfb\u7684\uff0c\u60a8\u65e0\u6cd5\u66f4\u65b0\u7528\u6237\u540d\u3002
shouldBeEqual={0} \u5e94\u8be5\u7b49\u4e8e {1}
shouldBeDifferent={0} \u5e94\u8be5\u4e0d\u540c\u4e8e {1}
shouldMatchPattern=\u6a21\u5f0f\u5e94\u5339\u914d\: `/{0}/`
mustBeAnInteger=\u5fc5\u987b\u662f\u6574\u6570
notAValidOption=\u4e0d\u662f\u6709\u6548\u9009\u9879
selectAnOption=\u9009\u62e9\u4e00\u4e2a\u9009\u9879
remove=\u79fb\u9664
addValue=\u6dfb\u52a0\u503c
languages=\u8bed\u8a00

View File

@ -0,0 +1,451 @@
doLogIn=\u767b\u5165
doRegister=\u8a3b\u518a
doRegisterSecurityKey=\u8a3b\u518a\u5b89\u5168\u6027\u91d1\u9470
doCancel=\u53d6\u6d88
doSubmit=\u9001\u51fa
doBack=\u8fd4\u56de
doYes=\u662f
doNo=\u5426
doContinue=\u7e7c\u7e8c
doIgnore=\u5ffd\u7565
doAccept=\u540c\u610f
doDecline=\u62d2\u7d55
doForgotPassword=\u5fd8\u8a18\u5bc6\u78bc\uff1f
doClickHere=\u9ede\u64ca\u9019\u88e1
doImpersonate=\u6a21\u64ec
doTryAgain=\u8acb\u91cd\u8a66
doTryAnotherWay=\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f
doConfirmDelete=\u78ba\u8a8d\u522a\u9664
errorDeletingAccount=\u522a\u9664\u5e33\u865f\u7684\u904e\u7a0b\u4e2d\u51fa\u932f\u4e86
deletingAccountForbidden=\u60a8\u6c92\u6709\u88ab\u5141\u8a31\u80fd\u522a\u9664\u81ea\u5df1\u7684\u5e33\u865f\uff0c\u8acb\u806f\u7d61\u7cfb\u7d71\u7ba1\u7406\u54e1\u3002
kerberosNotConfigured=\u5c1a\u672a\u8a2d\u5b9a Kerberos
kerberosNotConfiguredTitle=\u5c1a\u672a\u8a2d\u5b9a Kerberos
bypassKerberosDetail=\u60a8\u6c92\u6709\u901a\u904e Kerberos \u767b\u5165 \u6216\u8005\u60a8\u7684\u700f\u89bd\u5668\u6c92\u6709\u8a2d\u5b9a Kerberos \u767b\u5165\u3002\u8acb\u9ede\u64ca\u7e7c\u7e8c\u4f7f\u7528\u5176\u4ed6\u65b9\u5f0f\u767b\u5165\u3002
kerberosNotSetUp=\u5c1a\u672a\u8a2d\u5b9a Kerberos\uff0c\u60a8\u7121\u6cd5\u767b\u5165
registerTitle=\u8a3b\u518a
loginAccountTitle=\u767b\u5165\u60a8\u7684\u5e33\u865f
loginTitle=\u767b\u5165\u5230 {0}
loginTitleHtml={0}
impersonateTitle=\u6a21\u64ec\u4f7f\u7528\u8005 {0}
impersonateTitleHtml=\u6a21\u64ec\u4f7f\u7528\u8005 <strong>{0}</strong>
realmChoice=Realm
unknownUser=\u672a\u77e5\u4f7f\u7528\u8005
loginTotpTitle=\u8a2d\u5b9a OTP \u9a57\u8b49\u5668
loginProfileTitle=\u66f4\u65b0\u5e33\u865f\u8cc7\u8a0a
loginIdpReviewProfileTitle=\u66f4\u65b0\u5e33\u865f\u8cc7\u8a0a
loginTimeout=\u767b\u5165\u903e\u6642\uff0c\u8acb\u91cd\u65b0\u767b\u5165\u3002
reauthenticate=\u91cd\u65b0\u767b\u5165\u4ee5\u7e7c\u7e8c
oauthGrantTitle=\u6388\u4e88\u6b0a\u9650\u7d66 {0}
oauthGrantTitleHtml={0}
oauthGrantInformation=\u8acb\u78ba\u8a8d\u60a8\u4fe1\u4efb {0}\uff0c\u4e26\u4e14\u4e86\u89e3 {0} \u5982\u4f55\u8655\u7406\u60a8\u7684\u8cc7\u6599\u3002
oauthGrantReview=\u60a8\u53ef\u4ee5\u6aa2\u8996
oauthGrantTos=\u670d\u52d9\u689d\u6b3e
oauthGrantPolicy=\u96b1\u79c1\u6b0a\u653f\u7b56
errorTitle=\u51fa\u932f\u5566\uff01
errorTitleHtml=\u6211\u5011<strong>\u5f88\u62b1\u6b49</strong> ...
emailVerifyTitle=\u9a57\u8b49\u96fb\u5b50\u4fe1\u7bb1
emailForgotTitle=\u5fd8\u8a18\u5bc6\u78bc\uff1f
updateEmailTitle=\u66f4\u65b0\u96fb\u5b50\u4fe1\u7bb1
emailUpdateConfirmationSentTitle=\u78ba\u8a8d\u4fe1\u5df2\u5bc4\u51fa
emailUpdateConfirmationSent=\u78ba\u8a8d\u4fe1\u5df2\u5bc4\u9001\u5230 {0}\u3002\u60a8\u5fc5\u9808\u4f9d\u7167\u4fe1\u4e2d\u7684\u6307\u793a\u5b8c\u6210\u96fb\u5b50\u4fe1\u7bb1\u7684\u66f4\u65b0\u3002
emailUpdatedTitle=\u96fb\u5b50\u4fe1\u7bb1\u5df2\u66f4\u65b0
emailUpdated=\u5e33\u865f\u7684\u96fb\u5b50\u4fe1\u7bb1\u5df2\u6210\u529f\u66f4\u65b0\u70ba {0}\u3002
updatePasswordTitle=\u66f4\u65b0\u5bc6\u78bc
codeSuccessTitle=\u6210\u529f\u4ee3\u78bc
codeErrorTitle=\u932f\u8aa4\u78bc\uff1a{0}
displayUnsupported=\u672a\u652f\u63f4\u7684\u8acb\u6c42\u72c0\u614b
browserRequired=\u9700\u8981\u900f\u904e\u700f\u89bd\u5668\u9032\u884c\u767b\u5165
browserContinue=\u9700\u8981\u900f\u904e\u700f\u89bd\u5668\u5b8c\u6210\u767b\u5165
browserContinuePrompt=\u900f\u904e\u700f\u89bd\u5668\u7e7c\u7e8c\u767b\u5165\u6d41\u7a0b\uff1f [\u662f/\u5426]\:
browserContinueAnswer=\u662f
usb=USB
nfc=NFC
bluetooth=\u85cd\u82bd
internal=\u5167\u90e8
unknown=\u672a\u77e5
termsTitle=\u670d\u52d9\u689d\u6b3e
termsText=
termsPlainText=\u5c1a\u672a\u88ab\u5b9a\u7fa9\u7684\u670d\u52d9\u689d\u6b3e\u3002
termsAcceptanceRequired=\u60a8\u5fc5\u7e8c\u540c\u610f\u6211\u5011\u7684\u670d\u52d9\u689d\u6b3e\u3002
acceptTerms=\u6211\u540c\u610f\u670d\u52d9\u689d\u6b3e
recaptchaFailed=\u7121\u6548\u7684 Recaptcha \u9a57\u8b49\u78bc
recaptchaNotConfigured=Recaptcha \u5c1a\u672a\u8a2d\u5b9a
consentDenied=\u8a31\u53ef\u88ab\u62d2\u3002
noAccount=\u65b0\u7684\u4f7f\u7528\u8005\uff1f
username=\u4f7f\u7528\u8005\u540d\u7a31
usernameOrEmail=\u4f7f\u7528\u8005\u540d\u7a31 \u6216 \u96fb\u5b50\u4fe1\u7bb1
firstName=\u540d\u5b57
givenName=\u59d3\u6c0f
fullName=\u5168\u540d
lastName=\u59d3\u6c0f
familyName=\u59d3\u6c0f
email=\u96fb\u5b50\u4fe1\u7bb1
password=\u5bc6\u78bc
passwordConfirm=\u78ba\u8a8d\u5bc6\u78bc
passwordNew=\u65b0\u5bc6\u78bc
passwordNewConfirm=\u78ba\u8a8d\u65b0\u5bc6\u78bc
hidePassword=\u96b1\u85cf\u5bc6\u78bc
showPassword=\u986f\u793a\u5bc6\u78bc
rememberMe=\u8a18\u4f4f\u6211
authenticatorCode=\u4e00\u6b21\u6027\u9a57\u8b49\u78bc
address=\u5730\u5740
street=\u8857\u9053
locality=\u5e02
region=\u7701\u3001\u81ea\u6cbb\u5340\u3001\u76f4\u8f44\u5e02
postal_code=\u90f5\u905e\u5340\u865f
country=\u570b\u5bb6
emailVerified=\u5df2\u9a57\u8b49\u96fb\u5b50\u4fe1\u7bb1
website=\u7db2\u9801
phoneNumber=\u96fb\u8a71\u865f\u78bc
phoneNumberVerified=\u5df2\u9a57\u8b49\u96fb\u8a71\u865f\u78bc
gender=\u6027\u5225
birthday=\u51fa\u751f\u65e5\u671f
zoneinfo=\u6642\u5340
gssDelegationCredential=GSS Delegation Credential
logoutOtherSessions=\u5f9e\u5176\u4ed6\u88dd\u7f6e\u767b\u51fa
profileScopeConsentText=\u4f7f\u7528\u8005\u8cc7\u8a0a
emailScopeConsentText=\u96fb\u5b50\u4fe1\u7bb1
addressScopeConsentText=\u5730\u5740
phoneScopeConsentText=\u96fb\u8a71\u865f\u78bc
offlineAccessScopeConsentText=\u96e2\u7dda\u5b58\u53d6
samlRoleListScopeConsentText=\u6211\u7684\u89d2\u8272\u6e05\u55ae
rolesScopeConsentText=\u4f7f\u7528\u8005\u89d2\u8272\u6e05\u55ae
organizationScopeConsentText=\u7d44\u7e54
restartLoginTooltip=\u91cd\u65b0\u767b\u5165
loginTotpIntro=\u60a8\u9700\u8981\u8a2d\u5b9a OTP \u9a57\u8b49\u5668\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f
loginTotpStep1=\u4f7f\u7528\u60a8\u7684\u624b\u6a5f\u5b89\u88dd\u4ee5\u4e0b\u7a0b\u5f0f (\u64c7\u4e00\u5373\u53ef)\uff1a
loginTotpStep2=\u958b\u555f\u61c9\u7528\u7a0b\u5f0f\u4e26\u6383\u63cf QR code\uff1a
loginTotpStep3=\u8f38\u5165\u61c9\u7528\u7a0b\u5f0f\u63d0\u4f9b\u7684\u4e00\u6b21\u6027\u5bc6\u78bc\u4e26\u9ede\u64ca\u9001\u51fa\u4f86\u5b8c\u6210\u8a2d\u5b9a\u3002
loginTotpStep3DeviceName=\u8f38\u5165\u88dd\u7f6e\u540d\u7a31\uff0c\u4ee5\u4fbf\u7ba1\u7406\u60a8\u7684 OTP \u9a57\u8b49\u5668\u3002
loginTotpManualStep2=\u958b\u555f\u61c9\u7528\u7a0b\u5f0f\u4e26\u8f38\u5165\u91d1\u9470\uff1a
loginTotpManualStep3=\u5982\u679c\u61c9\u7528\u7a0b\u5f0f\u80fd\u505a\u8a2d\u5b9a\u7684\u8a71\uff0c\u8acb\u4f7f\u7528\u4ee5\u4e0b\u9019\u4e9b\u8a2d\u5b9a\uff1a
loginTotpUnableToScan=\u7121\u6cd5\u6383\u63cf\uff1f
loginTotpScanBarcode=\u6383\u63cf QR code\uff1f
loginCredential=\u6191\u8b49
loginOtpOneTime=\u4e00\u6b21\u6027\u5bc6\u78bc
loginTotpType=\u7a2e\u985e
loginTotpAlgorithm=\u7b97\u6cd5
loginTotpDigits=\u4f4d\u6578
loginTotpInterval=\u9593\u9694
loginTotpCounter=\u6b21\u6578
loginTotpDeviceName=\u88dd\u7f6e\u540d\u7a31
loginTotp.totp=\u57fa\u65bc\u6642\u9593 (Time-based)
loginTotp.hotp=\u57fa\u65bc\u6b21\u6578 (Counter-based)
totpAppFreeOTPName=FreeOTP
totpAppGoogleName=Google Authenticator
totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
loginChooseAuthenticator=\u9078\u64c7\u767b\u5165\u65b9\u5f0f
oauthGrantRequest=\u60a8\u662f\u5426\u60f3\u8981\u6388\u4e88\u4ee5\u4e0b\u6b0a\u9650\uff1f
inResource=\u5728
oauth2DeviceVerificationTitle=\u767b\u5165\u88dd\u7f6e
verifyOAuth2DeviceUserCode=\u8f38\u5165\u88dd\u7f6e\u63d0\u4f9b\u7684\u9a57\u8b49\u78bc\u4e26\u9ede\u64ca\u9001\u51fa
oauth2DeviceInvalidUserCodeMessage=\u932f\u8aa4\u7684\u9a57\u8b49\u78bc\uff0c\u8acb\u91cd\u65b0\u5617\u8a66
oauth2DeviceExpiredUserCodeMessage=\u9a57\u8b49\u78bc\u5df2\u904e\u671f\uff0c\u8acb\u56de\u5230\u60a8\u7684\u88dd\u7f6e\u4e26\u91cd\u65b0\u5617\u8a66\u9023\u7dda\u3002
oauth2DeviceVerificationCompleteHeader=\u88dd\u7f6e\u767b\u5165\u6210\u529f
oauth2DeviceVerificationCompleteMessage=\u60a8\u73fe\u5728\u53ef\u4ee5\u653e\u5fc3\u7684\u95dc\u9589\u5206\u9801\u4e26\u56de\u5230\u60a8\u7684\u88dd\u7f6e\u3002
oauth2DeviceVerificationFailedHeader=\u88dd\u7f6e\u767b\u5165\u5931\u6557
oauth2DeviceVerificationFailedMessage=\u60a8\u73fe\u5728\u53ef\u4ee5\u653e\u5fc3\u7684\u95dc\u9589\u5206\u9801\u4e26\u91cd\u65b0\u5617\u8a66\u9023\u7dda\u3002
oauth2DeviceConsentDeniedMessage=\u88dd\u7f6e\u6388\u6b0a\u5931\u6557\u3002
oauth2DeviceAuthorizationGrantDisabledMessage=\u5ba2\u6236\u7aef\u4e0d\u5141\u8a31\u767c\u8d77\u6388\u6b0a OAuth 2.0 \u88dd\u7f6e\u3002\u9019\u500b\u6d41\u7a0b\u5df2\u88ab\u5ba2\u6236\u7aef\u7981\u7528\u3002
emailVerifyInstruction1=\u4e00\u5c01\u542b\u6709\u9a57\u8b49\u65b9\u5f0f\u7684\u4fe1\u5df2\u7d93\u5bc4\u9001\u5230\u60a8\u7684\u4fe1\u7bb1 {0}
emailVerifyInstruction2=\u9084\u6c92\u6536\u5230\u9a57\u8b49\u78bc\uff1f
emailVerifyInstruction3=\u91cd\u65b0\u5bc4\u9001\u9a57\u8b49\u78bc\u3002
emailLinkIdpTitle=\u9023\u7d50\u5230 {0}
emailLinkIdp1=\u4e00\u5c01\u542b\u6709\u5982\u4f55\u9023\u7d50 {0} \u5230 {2} \u7684\u4fe1\u4ef6\u5df2\u5bc4\u9001\u7d66\u60a8\u7684 {1} \u5e33\u865f\u3002
emailLinkIdp2=\u9084\u6c92\u6536\u5230\u9a57\u8b49\u78bc\uff1f
emailLinkIdp3=\u91cd\u65b0\u5bc4\u9001\u9a57\u8b49\u78bc\u3002
emailLinkIdp4=\u5982\u679c\u60a8\u5df2\u7d93\u900f\u904e\u5176\u4ed6\u700f\u89bd\u5668\u9a57\u8b49
emailLinkIdp5=\u7e7c\u7e8c\u3002
backToLogin=&laquo; \u56de\u5230\u767b\u5165\u756b\u9762
emailInstruction=\u8f38\u5165\u60a8\u7684 \u4f7f\u7528\u8005\u540d\u7a31 \u6216 \u96fb\u5b50\u4fe1\u7bb1 \u6211\u5011\u6703\u5bc4\u9001\u96fb\u5b50\u90f5\u4ef6\u4e26\u544a\u77e5\u60a8\u5982\u4f55\u7522\u751f\u65b0\u5bc6\u78bc\u3002
emailInstructionUsername=\u8f38\u5165\u60a8\u7684\u4f7f\u7528\u8005\u540d\u7a31\uff0c\u6211\u5011\u6703\u5bc4\u9001\u96fb\u5b50\u90f5\u4ef6\u4e26\u544a\u77e5\u60a8\u5982\u4f55\u7522\u751f\u65b0\u5bc6\u78bc\u3002
copyCodeInstruction=\u8acb\u8907\u88fd\u4ee5\u4e0b\u5bc6\u78bc\uff0c\u4e26\u8cbc\u5165\u60a8\u7684\u61c9\u7528\u7a0b\u5f0f\uff1a
pageExpiredTitle=\u7db2\u9801\u5df2\u903e\u671f
pageExpiredMsg1=\u91cd\u65b0\u767b\u5165
pageExpiredMsg2=\u7e7c\u7e8c\u767b\u5165
personalInfo=\u500b\u4eba\u8cc7\u6599\uff1a
role_admin=\u7ba1\u7406\u54e1
role_realm-admin=\u9818\u57df\u7ba1\u7406\u54e1
role_create-realm=\u5275\u7acb\u9818\u57df
role_create-client=\u5275\u7acb\u5ba2\u6236\u7aef
role_view-realm=\u700f\u89bd\u9818\u57df
role_view-users=\u700f\u89bd\u4f7f\u7528\u8005\u6e05\u55ae
role_view-applications=\u6aa2\u8996\u61c9\u7528\u6e05\u55ae
role_view-clients=\u6aa2\u8996\u5ba2\u6236\u7aef\u6e05\u55ae
role_view-events=\u6aa2\u8996\u4e8b\u4ef6\u6e05\u55ae
role_view-identity-providers=\u6aa2\u8996\u8eab\u5206\u63d0\u4f9b\u8005\u6e05\u55ae
role_manage-realm=\u7ba1\u7406\u9818\u57df
role_manage-users=\u7ba1\u7406\u4f7f\u7528\u8005\u6e05\u55ae
role_manage-applications=\u7ba1\u7406\u61c9\u7528\u7a0b\u5f0f\u6e05\u55ae
role_manage-identity-providers=\u7ba1\u7406\u8eab\u5206\u63d0\u4f9b\u8005\u6e05\u55ae
role_manage-clients=\u7ba1\u7406\u5ba2\u6236\u7aef\u6e05\u55ae
role_manage-events=\u7ba1\u7406\u4e8b\u4ef6\u6e05\u55ae
role_view-profile=\u6aa2\u8996\u500b\u4eba\u8cc7\u6599
role_manage-account=\u7ba1\u7406\u5e33\u865f
role_manage-account-links=\u7ba1\u7406\u5e33\u865f\u9023\u7d50
role_read-token=\u8b80\u53d6 token
role_offline-access=\u96e2\u7dda\u5b58\u53d6
client_account=\u5e33\u865f
client_account-console=\u5e33\u865f\u7d42\u7aef
client_security-admin-console=\u7ba1\u7406\u54e1\u7d42\u7aef
client_admin-cli=Admin CLI
client_realm-management=\u9818\u57df\u7ba1\u7406
client_broker=Broker
requiredFields=\u5fc5\u586b\u7684\u6b04\u4f4d
invalidUserMessage=\u7121\u6548\u7684\u4f7f\u7528\u8005\u540d\u7a31\u6216\u5bc6\u78bc\u3002
invalidUsernameMessage=\u7121\u6548\u7684\u4f7f\u7528\u8005\u540d\u7a31\u3002
invalidUsernameOrEmailMessage=\u7121\u6548\u7684\u4f7f\u7528\u8005\u540d\u7a31\u6216\u96fb\u5b50\u4fe1\u7bb1\u3002
invalidPasswordMessage=\u7121\u6548\u7684\u5bc6\u78bc\u3002
invalidEmailMessage=\u7121\u6548\u7684\u96fb\u5b50\u4fe1\u7bb1\u3002
accountDisabledMessage=\u5e33\u865f\u5df2\u505c\u7528\uff0c\u8acb\u806f\u7e6b\u7cfb\u7d71\u7ba1\u7406\u54e1\u3002
accountTemporarilyDisabledMessage=\u5e33\u865f\u88ab\u66ab\u6642\u505c\u7528\uff0c\u8acb\u806f\u7e6b\u7cfb\u7d71\u7ba1\u7406\u54e1\u6216\u7a0d\u5f8c\u91cd\u8a66\u3002
expiredCodeMessage=\u767b\u5165\u903e\u6642\uff0c\u8acb\u91cd\u65b0\u767b\u5165\u3002
expiredActionMessage=\u52d5\u4f5c\u903e\u6642\uff0c\u8acb\u7e7c\u7e8c\u767b\u5165\u3002
expiredActionTokenNoSessionMessage=\u52d5\u4f5c\u903e\u6642\u3002
expiredActionTokenSessionExistsMessage=\u52d5\u4f5c\u903e\u6642\uff0c\u8acb\u91cd\u65b0\u958b\u59cb\u3002
sessionLimitExceeded=\u60a8\u5df2\u958b\u555f\u904e\u591a\u767b\u5165\u72c0\u614b
identityProviderLogoutFailure=SAML IdP \u767b\u51fa\u5931\u6557
missingFirstNameMessage=\u8acb\u63d0\u4f9b\u540d\u5b57\u3002
missingLastNameMessage=\u8acb\u63d0\u4f9b\u59d3\u6c0f\u3002
missingEmailMessage=\u8acb\u63d0\u4f9b\u96fb\u5b50\u4fe1\u7bb1\u3002
missingUsernameMessage=\u8acb\u63d0\u4f9b\u4f7f\u7528\u8005\u540d\u7a31\u3002
missingPasswordMessage=\u8acb\u63d0\u4f9b\u5bc6\u78bc\u3002
missingTotpMessage=\u8acb\u8f38\u5165\u9a57\u8b49\u78bc\u3002
missingTotpDeviceNameMessage=\u8acb\u63d0\u4f9b\u88dd\u7f6e\u540d\u7a31\u3002
notMatchPasswordMessage=\u5bc6\u78bc\u4e0d\u76f8\u7b26\u3002
error-invalid-value=\u7121\u6548\u7684\u6578\u503c\u3002
error-invalid-blank=\u6578\u503c\u4e0d\u53ef\u70ba\u7a7a\u3002
error-empty=\u6578\u503c\u4e0d\u53ef\u70ba\u7a7a\u3002
error-invalid-length=\u9577\u5ea6\u5fc5\u9808\u5728 {1} \u548c {2} \u4e4b\u9593\u3002
error-invalid-length-too-short=\u9577\u5ea6\u6700\u77ed\u70ba {1}\u3002
error-invalid-length-too-long=\u9577\u5ea6\u6700\u9577\u70ba {2}\u3002
error-invalid-email=\u7121\u6548\u7684\u96fb\u5b50\u4fe1\u7bb1\u3002
error-invalid-number=\u7121\u6548\u7684\u865f\u78bc\u3002
error-number-out-of-range=\u6578\u5b57\u5fc5\u9808\u5728 {1} \u548c {2} \u4e4b\u9593\u3002
error-number-out-of-range-too-small=\u6578\u5b57\u6700\u5c0f\u70ba {1}\u3002
error-number-out-of-range-too-big=\u6578\u5b57\u6700\u5927\u70ba {2}\u3002
error-pattern-no-match=\u7121\u6548\u7684\u6578\u503c\u3002
error-invalid-uri=\u7121\u6548\u7684 URL\u3002
error-invalid-uri-scheme=\u7121\u6548\u7684 URL \u5354\u5b9a\u3002
error-invalid-uri-fragment=\u7121\u6548\u7684 URL \u7247\u6bb5\u3002
error-user-attribute-required=\u8acb\u63d0\u4f9b\u6b64\u6b04\u4f4d\u3002
error-invalid-date=\u7121\u6548\u7684\u65e5\u671f\u3002
error-user-attribute-read-only=\u6b64\u6b04\u4f4d\u70ba\u552f\u8b80\u3002
error-username-invalid-character=\u542b\u6709\u7121\u6548\u5b57\u5143\u3002
error-person-name-invalid-character=\u542b\u6709\u7121\u6548\u5b57\u5143\u3002
error-reset-otp-missing-id=\u8acb\u9078\u64c7 OTP \u9a57\u8b49\u5668\u3002
invalidPasswordExistingMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u66fe\u4f7f\u7528\u904e\u7684\u5bc6\u78bc\u3002
invalidPasswordBlacklistedMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u8a72\u5bc6\u78bc\u5df2\u5728\u9ed1\u540d\u55ae\u4e2d\u3002
invalidPasswordConfirmMessage=\u5bc6\u78bc\u4e0d\u4e00\u81f4\u3002
invalidTotpMessage=\u7121\u6548\u7684\u9a57\u8b49\u78bc\u3002
usernameExistsMessage=\u76f8\u540c\u7684\u4f7f\u7528\u8005\u540d\u7a31\u5df2\u5b58\u5728\u3002
emailExistsMessage=\u76f8\u540c\u7684\u96fb\u5b50\u4fe1\u7bb1\u5df2\u5b58\u5728\u3002
federatedIdentityExistsMessage=\u4f7f\u7528\u8005 {0} \u5df2\u5b58\u5728\u3002\u8acb\u767b\u5165\u5e33\u865f\u7ba1\u7406\u4f86\u9023\u7d50\u5e33\u865f\u3002
federatedIdentityUnavailableMessage=\u5728 {1} \u8eab\u5206\u63d0\u4f9b\u8005\u4e0a\u9a57\u8b49\u7684\u4f7f\u7528\u8005 {0} \u4e0d\u5b58\u5728\u3002\u8acb\u806f\u7e6b\u60a8\u7684\u7ba1\u7406\u54e1\u3002
federatedIdentityUnmatchedEssentialClaimMessage=\u8eab\u5206\u63d0\u4f9b\u8005\u6240\u767c\u51fa\u7684 ID \u4ee4\u724c\u8207\u8a2d\u5b9a\u7684\u8072\u660e\u4e0d\u7b26\u3002\u8acb\u806f\u7d61\u60a8\u7684\u7ba1\u7406\u54e1\u3002
confirmLinkIdpTitle=\u5e33\u865f\u5df2\u5b58\u5728
federatedIdentityConfirmLinkMessage=\u4f7f\u7528\u8005 {0} {1} \u5df2\u5b58\u5728\u3002\u60a8\u8981\u5982\u4f55\u7e7c\u7e8c\uff1f
federatedIdentityConfirmReauthenticateMessage=\u8acb\u91cd\u65b0\u9a57\u8b49\u60a8\u7684\u5e33\u865f\u4ee5\u9023\u7d50 {0}\u3002
nestedFirstBrokerFlowMessage=\u4f7f\u7528\u8005 {1} \u672a\u9023\u7d50\u81f3 {0} \u4e2d\u7684\u4efb\u4f55\u5df2\u77e5\u4f7f\u7528\u8005\u3002
confirmLinkIdpReviewProfile=\u6aa2\u8996\u500b\u4eba\u8cc7\u6599
confirmLinkIdpContinue=\u65b0\u589e\u81f3\u73fe\u6709\u5e33\u865f
configureTotpMessage=\u60a8\u9700\u8981\u8a2d\u5b9a OTP \u9a57\u8b49\u5668\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f\u3002
configureBackupCodesMessage=\u60a8\u9700\u8981\u8a2d\u5b9a\u5099\u4efd\u4ee3\u78bc\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f\u3002
updateProfileMessage=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u4f7f\u7528\u8005\u8cc7\u6599\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f\u3002
updatePasswordMessage=\u60a8\u9700\u8981\u66f4\u6539\u60a8\u7684\u5bc6\u78bc\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f\u3002
updateEmailMessage=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f\u3002
resetPasswordMessage=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u5bc6\u78bc\u3002
verifyEmailMessage=\u60a8\u9700\u8981\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u4f86\u555f\u7528\u60a8\u7684\u5e33\u865f\u3002
linkIdpMessage=\u60a8\u9700\u8981\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u4f86\u5c07\u60a8\u7684\u5e33\u865f\u8207 {0} \u9023\u7d50\u3002
emailSentMessage=\u60a8\u5c07\u6703\u6536\u5230\u4e00\u5c01\u96fb\u5b50\u90f5\u4ef6\uff0c\u5305\u542b\u9032\u4e00\u6b65\u7684\u6307\u793a\u3002
emailSendErrorMessage=\u7121\u6cd5\u767c\u9001\u96fb\u5b50\u90f5\u4ef6\uff0c\u8acb\u7a0d\u5f8c\u518d\u8a66\u3002
accountUpdatedMessage=\u60a8\u7684\u5e33\u865f\u8cc7\u8a0a\u5df2\u66f4\u65b0\u3002
accountPasswordUpdatedMessage=\u60a8\u7684\u5bc6\u78bc\u5df2\u66f4\u65b0\u3002
delegationCompleteHeader=\u767b\u5165\u6210\u529f
delegationCompleteMessage=\u60a8\u53ef\u4ee5\u653e\u5fc3\u5730\u95dc\u9589\u6b64\u8996\u7a97\uff0c\u4e26\u56de\u5230\u60a8\u7684\u61c9\u7528\u7a0b\u5f0f\u3002
delegationFailedHeader=\u767b\u5165\u5931\u6557
delegationFailedMessage=\u60a8\u53ef\u4ee5\u653e\u5fc3\u5730\u95dc\u9589\u6b64\u8996\u7a97\uff0c\u4e26\u56de\u5230\u60a8\u7684\u61c9\u7528\u7a0b\u5f0f\u4e26\u518d\u6b21\u5617\u8a66\u767b\u5165\u3002
noAccessMessage=\u6c92\u6709\u5b58\u53d6\u6b0a
invalidPasswordMinLengthMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u6700\u77ed\u9577\u5ea6\u70ba {0}\u3002
invalidPasswordMaxLengthMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u6700\u9577\u9577\u5ea6\u70ba {0}\u3002
invalidPasswordMinDigitsMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u81f3\u5c11\u9700\u8981 {0} \u500b\u6578\u5b57\u3002
invalidPasswordMinLowerCaseCharsMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u81f3\u5c11\u9700\u8981 {0} \u500b\u5c0f\u5beb\u5b57\u6bcd\u3002
invalidPasswordMinUpperCaseCharsMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u81f3\u5c11\u9700\u8981 {0} \u500b\u5927\u5beb\u5b57\u6bcd\u3002
invalidPasswordMinSpecialCharsMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u81f3\u5c11\u9700\u8981 {0} \u500b\u7279\u6b8a\u5b57\u5143\u3002
invalidPasswordNotUsernameMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u4e0d\u53ef\u8207\u4f7f\u7528\u8005\u540d\u7a31\u76f8\u540c\u3002
invalidPasswordNotContainsUsernameMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u4e0d\u53ef\u5305\u542b\u4f7f\u7528\u8005\u540d\u7a31\u3002
invalidPasswordNotEmailMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u4e0d\u53ef\u8207\u96fb\u5b50\u4fe1\u7bb1\u76f8\u540c\u3002
invalidPasswordRegexPatternMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u4e0d\u7b26\u5408 regex \u898f\u5247\u3002
invalidPasswordHistoryMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u4e0d\u53ef\u8207\u524d {0} \u500b\u5bc6\u78bc\u76f8\u540c\u3002
invalidPasswordGenericMessage=\u7121\u6548\u7684\u5bc6\u78bc\uff1a\u65b0\u5bc6\u78bc\u4e0d\u7b26\u5408\u653f\u7b56\u3002
failedToProcessResponseMessage=\u7121\u6cd5\u8655\u7406\u56de\u61c9
httpsRequiredMessage=\u9700\u8981\u4f7f\u7528 HTTPS
realmNotEnabledMessage=\u8a72\u9818\u57df\u5c1a\u672a\u555f\u7528
invalidRequestMessage=\u7121\u6548\u7684\u8acb\u6c42
successLogout=\u60a8\u5df2\u7d93\u6210\u529f\u767b\u51fa
failedLogout=\u767b\u51fa\u5931\u6557
unknownLoginRequesterMessage=\u672a\u77e5\u7684\u767b\u5165\u8acb\u6c42
loginRequesterNotEnabledMessage=\u8a72\u767b\u5165\u8acb\u6c42\u5c1a\u672a\u555f\u7528
bearerOnlyMessage=Bearer-only \u7684\u61c9\u7528\u7a0b\u5f0f\u4e0d\u5141\u8a31\u555f\u7528\u700f\u89bd\u5668\u767b\u5165
standardFlowDisabledMessage=\u5ba2\u6236\u7aef\u4e0d\u5141\u8a31\u4f7f\u7528\u7d66\u5b9a\u7684 response_type \u555f\u52d5\u700f\u89bd\u5668\u767b\u5165\u3002\u6a19\u6e96\u6d41\u7a0b\u5df2\u88ab\u8a72\u5ba2\u6236\u7aef\u7981\u7528\u3002
implicitFlowDisabledMessage=\u5ba2\u6236\u7aef\u4e0d\u5141\u8a31\u4f7f\u7528\u7d66\u5b9a\u7684 response_type \u555f\u52d5\u700f\u89bd\u5668\u767b\u5165\u3002\u96b1\u542b\u6d41\u7a0b\u5df2\u88ab\u8a72\u5ba2\u6236\u7aef\u7981\u7528\u3002
invalidRedirectUriMessage=\u7121\u6548\u7684 uri \u91cd\u5c0e\u5411
unsupportedNameIdFormatMessage=\u5c1a\u672a\u652f\u63f4 NameIDFormat
invalidRequesterMessage=\u7121\u6548\u7684\u8acb\u6c42
registrationNotAllowedMessage=\u5df2\u7981\u7528\u8a3b\u518a
resetCredentialNotAllowedMessage=\u5df2\u7981\u7528\u91cd\u8a2d\u5bc6\u78bc
permissionNotApprovedMessage=\u6b0a\u9650\u672a\u6838\u51c6\u3002
noRelayStateInResponseMessage=\u8eab\u4efd\u63d0\u4f9b\u8005\u7684\u56de\u61c9\u4e2d\u6c92\u6709\u4e2d\u7e7c\u72c0\u614b\u3002
insufficientPermissionMessage=\u7f3a\u5c11\u6b0a\u9650\u4ee5\u9023\u7d50\u8eab\u4efd\u3002
couldNotProceedWithAuthenticationRequestMessage=\u7121\u6cd5\u7e7c\u7e8c\u8eab\u4efd\u63d0\u4f9b\u8005\u7684\u8eab\u4efd\u9a57\u8b49\u8acb\u6c42\u3002
couldNotObtainTokenMessage=\u7121\u6cd5\u5f9e\u8eab\u4efd\u63d0\u4f9b\u8005\u53d6\u5f97 token\u3002
unexpectedErrorRetrievingTokenMessage=\u5f9e\u8eab\u4efd\u63d0\u4f9b\u8005\u53d6\u5f97 token \u6642\u767c\u751f\u975e\u9810\u671f\u932f\u8aa4\u3002
unexpectedErrorHandlingResponseMessage=\u8655\u7406\u8eab\u4efd\u63d0\u4f9b\u8005\u7684\u56de\u61c9\u6642\u767c\u751f\u975e\u9810\u671f\u932f\u8aa4\u3002
identityProviderAuthenticationFailedMessage=\u8eab\u4efd\u63d0\u4f9b\u8005\u7684\u8eab\u4efd\u9a57\u8b49\u5931\u6557\u3002\u7121\u6cd5\u8207\u8eab\u4efd\u63d0\u4f9b\u8005\u9032\u884c\u8eab\u4efd\u9a57\u8b49\u3002
couldNotSendAuthenticationRequestMessage=\u7121\u6cd5\u5c07\u8eab\u4efd\u9a57\u8b49\u8acb\u6c42\u50b3\u9001\u81f3\u8eab\u4efd\u63d0\u4f9b\u8005\u3002
unexpectedErrorHandlingRequestMessage=\u8655\u7406\u8eab\u4efd\u63d0\u4f9b\u8005\u7684\u8eab\u4efd\u9a57\u8b49\u8acb\u6c42\u6642\u767c\u751f\u975e\u9810\u671f\u932f\u8aa4\u3002
invalidAccessCodeMessage=\u7121\u6548\u7684\u5b58\u53d6\u4ee3\u78bc\u3002
sessionNotActiveMessage=\u767b\u5165\u5df2\u904e\u671f\u3002
invalidCodeMessage=\u51fa\u932f\u5566\uff0c\u8acb\u900f\u904e\u60a8\u7684\u61c9\u7528\u7a0b\u5f0f\u91cd\u65b0\u767b\u5165\u3002
cookieNotFoundMessage=\u627e\u4e0d\u5230 Cookie\u3002\u8acb\u78ba\u8a8d\u60a8\u7684\u700f\u89bd\u5668\u5df2\u555f\u7528 Cookie\u3002
insufficientLevelOfAuthentication=\u672a\u6eff\u8db3\u6240\u8981\u6c42\u7684\u8eab\u4efd\u9a57\u8b49\u5c64\u7d1a\u3002
identityProviderUnexpectedErrorMessage=\u900f\u904e\u8eab\u4efd\u63d0\u4f9b\u8005\u9032\u884c\u8eab\u4efd\u9a57\u8b49\u6642\u767c\u751f\u975e\u9810\u671f\u932f\u8aa4
identityProviderMissingStateMessage=\u7f3a\u5c11\u8eab\u4efd\u63d0\u4f9b\u8005\u56de\u61c9\u4e2d\u7684\u72c0\u614b\u53c3\u6578\u3002
identityProviderMissingCodeOrErrorMessage=\u8eab\u5206\u63d0\u4f9b\u8005\u7684\u56de\u61c9\u4e2d\u7f3a\u5c11\u932f\u8aa4\u4ee3\u78bc\u6216\u53c3\u6578\u3002
identityProviderInvalidResponseMessage=\u8eab\u4efd\u63d0\u4f9b\u8005\u7684\u56de\u61c9\u7121\u6548\u3002
identityProviderInvalidSignatureMessage=\u8eab\u4efd\u63d0\u4f9b\u8005\u56de\u61c9\u4e2d\u7684\u7c3d\u7ae0\u7121\u6548\u3002
identityProviderNotFoundMessage=\u627e\u4e0d\u5230\u8eab\u5206\u63d0\u4f9b\u8005\u3002
identityProviderLinkSuccess=\u60a8\u5df2\u6210\u529f\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u3002\u8acb\u56de\u5230\u700f\u89bd\u5668\u5206\u9801\u4e26\u7e7c\u7e8c\u767b\u5165\u3002
staleCodeMessage=\u6b64\u9801\u9762\u5df2\u904e\u671f\uff0c\u8acb\u56de\u5230\u60a8\u7684\u61c9\u7528\u7a0b\u5f0f\u4e26\u91cd\u65b0\u767b\u5165\u3002
realmSupportsNoCredentialsMessage=\u9818\u57df\u4e0d\u652f\u63f4\u4efb\u4f55\u6191\u8b49\u985e\u578b\u3002
credentialSetupRequired=\u7121\u6cd5\u767b\u5165\uff0c\u9700\u8981\u8a2d\u5b9a\u6191\u8b49\u3002
identityProviderNotUniqueMessage=\u9818\u57df\u652f\u63f4\u591a\u500b\u8eab\u4efd\u63d0\u4f9b\u8005\u3002\u7121\u6cd5\u6c7a\u5b9a\u61c9\u8a72\u4f7f\u7528\u54ea\u500b\u8eab\u4efd\u63d0\u4f9b\u8005\u9032\u884c\u8eab\u4efd\u9a57\u8b49\u3002
emailVerifiedMessage=\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u5df2\u901a\u904e\u9a57\u8b49\u3002
emailVerifiedAlreadyMessage=\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u5df2\u7d93\u5b8c\u6210\u9a57\u8b49\u3002
staleEmailVerificationLink=\u60a8\u9ede\u9078\u7684\u9023\u7d50\u5df2\u904e\u671f\uff0c\u4e26\u4e14\u4e0d\u518d\u6709\u6548\u3002\u4e5f\u8a31\u60a8\u5df2\u9a57\u8b49\u904e\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u3002
identityProviderAlreadyLinkedMessage=\u8eab\u4efd\u63d0\u4f9b\u8005 {0} \u50b3\u56de\u7684\u806f\u76df\u8eab\u4efd\u5df2\u9023\u7d50\u81f3\u53e6\u4e00\u500b\u4f7f\u7528\u8005\u3002
confirmAccountLinking=\u78ba\u8a8d\u9023\u7d50\u8eab\u4efd\u63d0\u4f9b\u8005 {1} \u7684\u5e33\u6236 {0} \u81f3\u60a8\u7684\u5e33\u6236\u3002
confirmEmailAddressVerification=\u78ba\u8a8d\u96fb\u5b50\u4fe1\u7bb1 {0} \u7684\u6709\u6548\u6027\u3002
confirmExecutionOfActions=\u57f7\u884c\u4e0b\u5217\u52d5\u4f5c
backToApplication=&laquo; \u8fd4\u56de\u61c9\u7528\u7a0b\u5f0f
missingParameterMessage=\u907a\u5931\u53c3\u6578\: {0}
clientNotFoundMessage=\u627e\u4e0d\u5230\u5ba2\u6236\u7aef\u3002
clientDisabledMessage=\u5ba2\u6236\u7aef\u5df2\u7981\u7528\u3002
invalidParameterMessage=\u7121\u6548\u53c3\u6578\: {0}
alreadyLoggedIn=\u60a8\u5df2\u7d93\u767b\u5165\u3002
differentUserAuthenticated=\u60a8\u5df2\u7d93\u4ee5\u4e0d\u540c\u7684\u4f7f\u7528\u8005 ''{0}'' \u767b\u5165\u3002\u8acb\u5148\u767b\u51fa\u5f8c\u518d\u7e7c\u7e8c\u3002
brokerLinkingSessionExpired=\u8acb\u6c42\u4ee3\u7406\u4eba\u5e33\u6236\u9023\u7d50\uff0c\u4f46\u76ee\u524d\u7684\u5de5\u4f5c\u968e\u6bb5\u5df2\u4e0d\u518d\u6709\u6548\u3002
proceedWithAction=&raquo; \u9ede\u64ca\u9019\u88e1\u7e7c\u7e8c
acrNotFulfilled=\u672a\u6eff\u8db3\u6388\u6b0a\u9700\u6c42
requiredAction.CONFIGURE_TOTP=\u8a2d\u5b9a OTP
requiredAction.TERMS_AND_CONDITIONS=\u670d\u52d9\u689d\u6b3e
requiredAction.UPDATE_PASSWORD=\u66f4\u65b0\u5bc6\u78bc
requiredAction.UPDATE_PROFILE=\u66f4\u65b0\u500b\u4eba\u8cc7\u8a0a
requiredAction.VERIFY_EMAIL=\u9a57\u8b49\u96fb\u5b50\u4fe1\u7bb1
requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=\u7522\u751f\u5fa9\u539f\u4ee3\u78bc
requiredAction.webauthn-register-passwordless=Webauthn \u7121\u5bc6\u78bc\u8a3b\u518a
invalidTokenRequiredActions=\u9023\u7d50\u4e2d\u5305\u542b\u7121\u6548\u884c\u70ba
doX509Login=\u60a8\u5c07\u4ee5\u4e0b\u5217\u8eab\u5206\u767b\u5165\:
clientCertificate=X509 \u5ba2\u6236\u7aef\u6191\u8b49\:
noCertificate=[\u6c92\u6709\u6191\u8b49]
pageNotFound=\u7121\u6cd5\u627e\u5230\u7db2\u9801
internalServerError=\u5167\u90e8\u4f3a\u670d\u5668\u932f\u8aa4
console-username=\u4f7f\u7528\u8005\u540d\u7a31\uff1a
console-password=\u5bc6\u78bc\uff1a
console-otp=\u4e00\u6b21\u6027\u5bc6\u78bc\uff1a
console-new-password=\u65b0\u5bc6\u78bc\uff1a
console-confirm-password=\u78ba\u8a8d\u5bc6\u78bc\uff1a
console-update-password=\u60a8\u9700\u8981\u66f4\u65b0\u60a8\u7684\u5bc6\u78bc\u3002
console-verify-email=\u60a8\u9700\u8981\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u90f5\u4ef6\u3002\u6211\u5011\u5df2\u7d93\u767c\u9001\u4e86\u4e00\u5c01\u5305\u542b\u9a57\u8b49\u78bc\u7684\u96fb\u5b50\u90f5\u4ef6\u7d66 {0}\u3002\u8acb\u5c07\u6b64\u78bc\u8f38\u5165\u5230\u4e0b\u9762\u7684\u8f38\u5165\u6846\u4e2d\u3002
console-email-code=\u96fb\u5b50\u90f5\u4ef6\u9a57\u8b49\u78bc\uff1a
console-accept-terms=\u63a5\u53d7\u670d\u52d9\u689d\u6b3e\uff1f [\u662f/\u5426]\:
console-accept=\u662f
openshift.scope.user_info=\u4f7f\u7528\u8005\u8cc7\u8a0a
openshift.scope.user_check-access=\u4f7f\u7528\u8005\u5b58\u53d6\u8cc7\u8a0a
openshift.scope.user_full=\u5b8c\u6574\u5b58\u53d6\u6b0a
openshift.scope.list-projects=\u5217\u51fa\u5c08\u6848
saml.post-form.title=\u8df3\u8f49\u8eab\u4efd\u9a57\u8b49
saml.post-form.message=\u8df3\u8f49\u4e2d\uff0c\u8acb\u7a0d\u5019\u3002
saml.post-form.js-disabled=JavaScript \u5df2\u505c\u7528\u3002\u6211\u5011\u5f37\u70c8\u5efa\u8b70\u60a8\u555f\u7528\u5b83\u3002\u9ede\u64ca\u4e0b\u9762\u7684\u6309\u9215\u7e7c\u7e8c\u3002
saml.artifactResolutionServiceInvalidResponse=\u7121\u6cd5\u89e3\u6790\u5de5\u4ef6\u3002
otp-display-name=\u9a57\u8b49\u5668\u61c9\u7528\u7a0b\u5f0f
otp-help-text=\u8f38\u5165\u9a57\u8b49\u5668\u61c9\u7528\u7a0b\u5f0f\u4e2d\u7684\u9a57\u8b49\u78bc\u3002
otp-reset-description=\u8981\u79fb\u9664\u54ea\u4e00\u500b OTP \u8a2d\u5b9a\uff1f
password-display-name=\u5bc6\u78bc
password-help-text=\u8f38\u5165\u60a8\u7684\u5bc6\u78bc\u4ee5\u767b\u5165\u3002
auth-username-form-display-name=\u4f7f\u7528\u8005\u540d\u7a31
auth-username-form-help-text=\u8f38\u5165\u60a8\u7684\u4f7f\u7528\u8005\u540d\u7a31\u4ee5\u767b\u5165\u3002
auth-username-password-form-display-name=\u4f7f\u7528\u8005\u540d\u7a31\u548c\u5bc6\u78bc
auth-username-password-form-help-text=\u8f38\u5165\u60a8\u7684\u4f7f\u7528\u8005\u540d\u7a31\u548c\u5bc6\u78bc\u4ee5\u767b\u5165\u3002
auth-recovery-authn-code-form-display-name=\u6062\u5fa9\u9a57\u8b49\u78bc
auth-recovery-authn-code-form-help-text=\u8f38\u5165\u5148\u524d\u7522\u751f\u7684\u6e05\u55ae\u4e2d\u7684\u6062\u5fa9\u9a57\u8b49\u78bc\u3002
auth-recovery-code-info-message=\u8f38\u5165\u6307\u5b9a\u7684\u6062\u5fa9\u9a57\u8b49\u78bc\u3002
auth-recovery-code-prompt=\u6062\u5fa9\u4ee3\u78bc \#{0}
auth-recovery-code-header=\u4f7f\u7528\u6062\u5fa9\u9a57\u8b49\u78bc\u767b\u5165
recovery-codes-error-invalid=\u7121\u6548\u7684\u6062\u5fa9\u9a57\u8b49\u78bc
recovery-code-config-header=\u6062\u5fa9\u9a57\u8b49\u78bc
recovery-code-config-warning-title=\u9019\u4e9b\u6062\u5fa9\u9a57\u8b49\u78bc\u5728\u96e2\u958b\u6b64\u9801\u9762\u5f8c\u5c07\u4e0d\u6703\u518d\u51fa\u73fe
recovery-code-config-warning-message=\u8acb\u78ba\u4fdd\u5217\u5370\u3001\u4e0b\u8f09\u6216\u8907\u88fd\u5230\u5bc6\u78bc\u7ba1\u7406\u5668\u4e2d\uff0c\u4e26\u5c07\u5176\u4fdd\u5b58\u3002\u53d6\u6d88\u6b64\u8a2d\u5b9a\u5c07\u5f9e\u60a8\u7684\u5e33\u6236\u4e2d\u522a\u9664\u9019\u4e9b\u6062\u5fa9\u9a57\u8b49\u78bc\u3002
recovery-codes-print=\u5217\u5370
recovery-codes-download=\u4e0b\u8f09
recovery-codes-copy=\u8907\u88fd
recovery-codes-copied=\u5df2\u8907\u88fd
recovery-codes-confirmation-message=\u6211\u5df2\u7d93\u5c07\u9019\u4e9b\u4ee3\u78bc\u4fdd\u5b58\u5728\u5b89\u5168\u7684\u5730\u65b9
recovery-codes-action-complete=\u5b8c\u6210\u8a2d\u5b9a
recovery-codes-action-cancel=\u53d6\u6d88\u8a2d\u5b9a
recovery-codes-download-file-header=\u8acb\u5c07\u9019\u4e9b\u6062\u5fa9\u9a57\u8b49\u78bc\u4fdd\u5b58\u5728\u5b89\u5168\u7684\u5730\u65b9\u3002
recovery-codes-download-file-description=\u6062\u5fa9\u9a57\u8b49\u78bc\u662f\u4e00\u6b21\u6027\u5bc6\u78bc\uff0c\u5982\u679c\u60a8\u7121\u6cd5\u5b58\u53d6\u60a8\u7684\u9a57\u8b49\u5668\uff0c\u5c07\u5141\u8a31\u60a8\u900f\u904e\u6062\u5fa9\u9a57\u8b49\u78bc\u767b\u5165\u60a8\u7684\u5e33\u6236\u3002
recovery-codes-download-file-date=\u7522\u751f\u4e86\u9019\u4e9b\u4ee3\u78bc
recovery-codes-label-default=\u6062\u5fa9\u9a57\u8b49\u78bc
webauthn-display-name=\u5b89\u5168\u91d1\u9470
webauthn-help-text=\u4f7f\u7528\u4f60\u7684\u5b89\u5168\u91d1\u9470\u767b\u5165\u3002
webauthn-passwordless-display-name=\u514d\u5bc6\u78bc\u767b\u5165\u7528\u7684\u5b89\u5168\u91d1\u9470
webauthn-passwordless-help-text=\u4f7f\u7528\u4f60\u7684\u5b89\u5168\u91d1\u9470\u9032\u884c\u514d\u5bc6\u78bc\u767b\u5165\u3002
webauthn-login-title=\u5b89\u5168\u91d1\u9470\u767b\u5165
webauthn-registration-title=\u8a3b\u518a\u5b89\u5168\u91d1\u9470
webauthn-available-authenticators=\u53ef\u7528\u7684\u5b89\u5168\u91d1\u9470
webauthn-unsupported-browser-text=\u6b64\u700f\u89bd\u5668\u4e0d\u652f\u63f4 WebAuthn\u3002\u8acb\u5617\u8a66\u5176\u4ed6\u700f\u89bd\u5668\u6216\u806f\u7d61\u60a8\u7684\u7cfb\u7d71\u7ba1\u7406\u54e1\u3002
webauthn-doAuthenticate=\u900f\u904e\u5b89\u5168\u91d1\u9470\u9032\u884c\u767b\u5165
webauthn-createdAt-label=\u5df2\u5efa\u7acb
webauthn-registration-init-label=\u5b89\u5168\u91d1\u9470 (\u9810\u8a2d\u6a19\u7c64)
webauthn-registration-init-label-prompt=\u8acb\u70ba\u8a3b\u518a\u7684\u5b89\u5168\u91d1\u9470\u8f38\u5165\u6a19\u7c64
webauthn-error-title=\u5b89\u5168\u91d1\u9470\u932f\u8aa4
webauthn-error-registration=\u7121\u6cd5\u8a3b\u518a\u60a8\u7684\u5b89\u5168\u91d1\u9470\u3002<br/> {0}
webauthn-error-api-get=\u7121\u6cd5\u900f\u904e\u5b89\u5168\u91d1\u9470\u9032\u884c\u9a57\u8b49\u3002<br/> {0}
webauthn-error-different-user=\u7b2c\u4e00\u500b\u9a57\u8b49\u7684\u4f7f\u7528\u8005\u4e0d\u662f\u9019\u500b\u5b89\u5168\u91d1\u9470\u9a57\u8b49\u7684\u4f7f\u7528\u8005\u3002
webauthn-error-auth-verification=\u5b89\u5168\u91d1\u9470\u9a57\u8b49\u7d50\u679c\u7121\u6548\u3002<br/> {0}
webauthn-error-register-verification=\u5b89\u5168\u91d1\u9470\u8a3b\u518a\u7d50\u679c\u7121\u6548\u3002<br/> {0}
webauthn-error-user-not-found=\u672a\u77e5\u7684\u4f7f\u7528\u8005\u900f\u904e\u5b89\u5168\u91d1\u9470\u9032\u884c\u9a57\u8b49\u3002
identity-provider-redirector=\u9023\u7d50\u5230\u5176\u4ed6\u8eab\u4efd\u63d0\u4f9b\u8005
identity-provider-login-label=\u6216\u900f\u904e\u5176\u4ed6\u8eab\u4efd\u63d0\u4f9b\u8005\u767b\u5165
idp-email-verification-display-name=\u96fb\u5b50\u4fe1\u7bb1\u9a57\u8b49
idp-email-verification-help-text=\u900f\u904e\u9a57\u8b49\u60a8\u7684\u96fb\u5b50\u4fe1\u7bb1\u4f86\u9023\u7d50\u60a8\u7684\u5e33\u6236\u3002
idp-username-password-form-display-name=\u4f7f\u7528\u8005\u540d\u7a31\u548c\u5bc6\u78bc
idp-username-password-form-help-text=\u900f\u904e\u767b\u5165\u4f86\u9023\u7d50\u60a8\u7684\u5e33\u6236\u3002
finalDeletionConfirmation=\u5047\u5982\u60a8\u522a\u9664\u60a8\u7684\u5e33\u6236\uff0c\u5b83\u5c07\u7121\u6cd5\u5fa9\u539f\u3002\u82e5\u8981\u4fdd\u7559\u60a8\u7684\u5e33\u6236\uff0c\u8acb\u6309\u53d6\u6d88\u3002
irreversibleAction=\u9019\u500b\u52d5\u4f5c\u662f\u4e0d\u53ef\u9006\u7684
deleteAccountConfirm=\u78ba\u8a8d\u522a\u9664\u5e33\u6236
deletingImplies=\u522a\u9664\u60a8\u7684\u5e33\u6236\u610f\u5473\u8457\uff1a
errasingData=\u6e05\u9664\u60a8\u7684\u6240\u6709\u8cc7\u6599
loggingOutImmediately=\u7acb\u5373\u767b\u51fa\u60a8\u7684\u5e33\u6236
accountUnusable=\u4efb\u4f55\u5f8c\u7e8c\u4f7f\u7528\u6b64\u5e33\u6236\u7684\u61c9\u7528\u7a0b\u5f0f\u90fd\u5c07\u7121\u6cd5\u4f7f\u7528
userDeletedSuccessfully=\u5e33\u6236\u5df2\u6210\u529f\u522a\u9664
access-denied=\u5b58\u53d6\u906d\u62d2
access-denied-when-idp-auth=\u4f7f\u7528 {0} \u9032\u884c\u8eab\u5206\u9a57\u8b49\u6642\u5b58\u53d6\u906d\u62d2
frontchannel-logout.title=\u5373\u5c07\u767b\u51fa
frontchannel-logout.message=\u60a8\u6b63\u5728\u767b\u51fa\u4ee5\u4e0b\u61c9\u7528\u7a0b\u5f0f
logoutConfirmTitle=\u5373\u5c07\u767b\u51fa
logoutConfirmHeader=\u60a8\u78ba\u5b9a\u8981\u767b\u51fa\u55ce\uff1f
doLogout=\u767b\u51fa
readOnlyUsernameMessage=\u60a8\u7121\u6cd5\u66f4\u65b0\u60a8\u7684\u4f7f\u7528\u8005\u540d\u7a31\uff0c\u56e0\u70ba\u5b83\u662f\u552f\u8b80\u7684\u3002
error-invalid-multivalued-size=\u5c6c\u6027 {0} \u5fc5\u9808\u5305\u542b\u81f3\u5c11 {1} \uff0c\u6700\u591a {2} \u500b\u503c\u3002
shouldBeEqual={0} \u61c9\u8a72\u7b49\u65bc {1}
shouldBeDifferent={0} \u61c9\u8a72\u4e0d\u540c\u65bc {1}
shouldMatchPattern=\u6a21\u5f0f\u61c9\u5339\u914d\: `/{0}/`
mustBeAnInteger=\u5fc5\u9808\u662f\u6574\u6578
notAValidOption=\u4e0d\u662f\u6709\u6548\u9078\u9805
selectAnOption=\u9078\u64c7\u4e00\u500b\u9078\u9805
remove=\u79fb\u9664
addValue=\u6dfb\u52a0\u503c
languages=\u8a9e\u8a00

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "register.ftl",
"ftlTemplateFileName": "register-user-profile.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,739 @@
<!DOCTYPE html><html><head><script>
<#assign xKeycloakify={
"messages": {},
"pageId": "register.ftl",
"ftlTemplateFileName": "register.ftl",
"themeType": "login",
"themeName": "keycloakify-starter",
"keycloakifyVersion": "11.4.4",
"themeVersion": "0.0.0",
"resourcesPath": ""
}>
<#if url?? && url?is_hash && url.resourcesPath?? && url.resourcesPath?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": url.resourcesPath }>
</#if>
<#if resourceUrl?? && resourceUrl?is_string>
<#assign xKeycloakify = xKeycloakify + { "resourcesPath": resourceUrl }>
</#if>
const kcContext = ${toJsDeclarationString(.data_model, [])?no_esc};
kcContext.keycloakifyVersion = "${xKeycloakify.keycloakifyVersion}";
kcContext.themeVersion = "${xKeycloakify.themeVersion}";
kcContext.themeType = "${xKeycloakify.themeType}";
kcContext.themeName = "${xKeycloakify.themeName}";
kcContext.pageId = "${xKeycloakify.pageId}";
kcContext.ftlTemplateFileName = "${xKeycloakify.ftlTemplateFileName}";
<@addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages />
kcContext["x-keycloakify"] = {};
kcContext["x-keycloakify"].resourcesPath = "${xKeycloakify.resourcesPath}";
{
var messages = {};
<#list xKeycloakify.messages as key, resolvedMsg>
messages["${key}"] = decodeHtmlEntities("${resolvedMsg?js_string}");
</#list>
kcContext["x-keycloakify"].messages = messages;
}
if(
kcContext.url instanceof Object &&
typeof kcContext.url.resourcesPath === "string"
){
kcContext.url.resourcesCommonPath = kcContext.url.resourcesPath + "/resources-common";
}
if( kcContext.messagesPerField ){
var existsError_singleFieldName = kcContext.messagesPerField.existsError;
kcContext.messagesPerField.existsError = function (){
for( let i = 0; i < arguments.length; i++ ){
if( existsError_singleFieldName(arguments[i]) ){
return true;
}
}
return false;
};
kcContext.messagesPerField.exists = function (fieldName) {
return kcContext.messagesPerField.get(fieldName) !== "";
};
kcContext.messagesPerField.printIfExists = function (fieldName, text) {
return kcContext.messagesPerField.exists(fieldName) ? text : undefined;
};
kcContext.messagesPerField.getFirstError = function () {
for( let i = 0; i < arguments.length; i++ ){
const fieldName = arguments[i];
if( kcContext.messagesPerField.existsError(fieldName) ){
return kcContext.messagesPerField.get(fieldName);
}
}
};
}
attributes_to_attributesByName: {
if( !kcContext.profile ){
break attributes_to_attributesByName;
}
if( !kcContext.profile.attributes ){
break attributes_to_attributesByName;
}
var attributes = kcContext.profile.attributes;
delete kcContext.profile.attributes;
kcContext.profile.attributesByName = {};
attributes.forEach(function(attribute){
kcContext.profile.attributesByName[attribute.name] = attribute;
});
}
redirect_to_dev_server: {
switch(kcContext.themeType){
case "login":
break redirect_to_dev_server;
case "account":
if( kcContext.pageId !== "index.ftl" ){
break redirect_to_dev_server;
}
break;
case "admin":
break;
default:
break redirect_to_dev_server;
}
const devSeverPort = kcContext.properties.KEYCLOAKIFY_SPA_DEV_SERVER_PORT;
if( !devSeverPort ){
break redirect_to_dev_server;
}
const redirectUrl = new URL(window.location.href);
redirectUrl.port = devSeverPort;
delete kcContext.msgJSON;
console.log(kcContext);
redirectUrl.searchParams.set("kcContext", encodeURIComponent(JSON.stringify(kcContext)));
window.location.href = redirectUrl.toString();
}
window.kcContext = kcContext;
<#if xKeycloakify.themeType == "login" >
{
const script = document.createElement("script");
script.type = "importmap";
script.textContent = JSON.stringify({
imports: {
"rfc4648": kcContext.url.resourcesCommonPath + "/node_modules/rfc4648/lib/rfc4648.js"
}
}, null, 2);
document.head.appendChild(script);
}
</#if>
function decodeHtmlEntities(htmlStr){
var element = decodeHtmlEntities.element;
if (!element) {
element = document.createElement("textarea");
decodeHtmlEntities.element = element;
}
element.innerHTML = htmlStr;
return element.value;
}
<#function toJsDeclarationString object path>
<#local isHash = -1>
<#attempt>
<#local isHash = object?is_hash || object?is_hash_ex>
<#recover>
<#return "ABORT: Can't evaluate if " + path?join(".") + " is a hash">
</#attempt>
<#if isHash>
<#if path?size gt 10>
<#return "ABORT: Too many recursive calls, path: " + path?join(".")>
</#if>
<#local keys = -1>
<#attempt>
<#local keys = object?keys>
<#recover>
<#return "ABORT: We can't list keys on object">
</#attempt>
<#local outSeq = []>
<#list keys as key>
<#if ["class","declaredConstructors","superclass","declaringClass" ]?seq_contains(key) >
<#continue>
</#if>
<#if (
areSamePath(path, ["url"]) &&
["loginUpdatePasswordUrl", "loginUpdateProfileUrl", "loginUsernameReminderUrl", "loginUpdateTotpUrl"]?seq_contains(key)
) || (
key == "updateProfileCtx" &&
areSamePath(path, [])
) || (
<#-- https://github.com/keycloakify/keycloakify/pull/65#issuecomment-991896344 (reports with saml-post-form.ftl) -->
<#-- https://github.com/keycloakify/keycloakify/issues/91#issue-1212319466 (reports with error.ftl and Kc18) -->
<#-- https://github.com/keycloakify/keycloakify/issues/109#issuecomment-1134610163 -->
<#-- https://github.com/keycloakify/keycloakify/issues/357 -->
<#-- https://github.com/keycloakify/keycloakify/discussions/406#discussioncomment-7514787 -->
key == "loginAction" &&
areSamePath(path, ["url"]) &&
["saml-post-form.ftl", "error.ftl", "info.ftl", "login-oauth-grant.ftl", "logout-confirm.ftl", "login-oauth2-device-verify-user-code.ftl"]?seq_contains(xKeycloakify.pageId) &&
!(auth?has_content && auth.showTryAnotherWayLink())
) || (
<#-- https://github.com/keycloakify/keycloakify/issues/362 -->
["secretData", "value"]?seq_contains(key) &&
areSamePath(path, [ "totp", "otpCredentials", "*" ])
) || (
["contextData", "idpConfig", "idp", "authenticationSession"]?seq_contains(key) &&
areSamePath(path, ["brokerContext"]) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
key == "identityProviderBrokerCtx" &&
areSamePath(path, []) &&
["login-idp-link-confirm.ftl", "login-idp-link-email.ftl" ]?seq_contains(xKeycloakify.pageId)
) || (
["masterAdminClient", "delegateForUpdate", "defaultRole", "smtpConfig"]?seq_contains(key) &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "error.ftl" &&
areSamePath(path, ["realm"]) &&
!["name", "displayName", "displayNameHtml", "internationalizationEnabled", "registrationEmailAsUsername" ]?seq_contains(key)
) || (
xKeycloakify.pageId == "applications.ftl" &&
(
key == "realm" ||
key == "container"
) &&
isSubpath(path, ["applications", "applications"])
) || (
key == "delegateForUpdate" &&
areSamePath(path, ["user"])
) || (
<#-- Security audit forwarded by Garth (Gmail) -->
key == "saml.signing.private.key" &&
areSamePath(path, ["client", "attributes"])
) || (
<#-- See: https://github.com/keycloakify/keycloakify/issues/534 -->
key == "password" &&
areSamePath(path, ["login"])
) || (
<#-- Remove realmAttributes added by https://github.com/jcputney/keycloak-theme-additional-info-extension for peace of mind. -->
key == "realmAttributes" &&
areSamePath(path, [])
) || (
<#-- attributesByName adds a lot of noise to the output and is not needed, we already have profile.attributes -->
key == "attributesByName" &&
areSamePath(path, ["profile"])
) || (
<#-- We already have the attributes in profile speedup the rendering by filtering it out from the register object -->
(key == "attributes" || key == "attributesByName") &&
areSamePath(path, ["register"])
) || (
areSamePath(path, ["properties"]) &&
(
key?starts_with("kc") ||
key == "locales" ||
key == "import" ||
key == "parent" ||
key == "meta" ||
key == "stylesCommon" ||
key == "styles" ||
key == "accountResourceProvider"
)
) || (
key == "execution" &&
areSamePath(path, [])
) || (
key == "entity" &&
areSamePath(path, ["user"])
) || (
key == "attributes" &&
areSamePath(path, ["realm"])
) || (
xKeycloakify.pageId == "index.ftl" &&
xKeycloakify.themeType == "account" &&
areSamePath(path, ["realm"]) &&
![
"name",
"registrationEmailAsUsername",
"editUsernameAllowed",
"isInternationalizationEnabled",
"identityFederationEnabled",
"userManagedAccessAllowed"
]?seq_contains(key)
) || (
["flowContext", "session", "realm"]?seq_contains(key) &&
areSamePath(path, ["social"])
)
>
<#-- <#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]> -->
<#continue>
</#if>
<#-- https://github.com/keycloakify/keycloakify/discussions/406 -->
<#if (
key == "attemptedUsername" &&
areSamePath(path, ["auth"]) &&
[
"register.ftl", "terms.ftl", "info.ftl", "login.ftl",
"login-update-password.ftl", "login-oauth2-device-verify-user-code.ftl"
]?seq_contains(xKeycloakify.pageId)
)>
<#attempt>
<#-- https://github.com/keycloak/keycloak/blob/3a2bf0c04bcde185e497aaa32d0bb7ab7520cf4a/themes/src/main/resources/theme/base/login/template.ftl#L63 -->
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#local outSeq += ["/*" + path?join(".") + "." + key + " excluded*/"]>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Accessing attemptedUsername throwed an exception */"]>
</#attempt>
</#if>
<#attempt>
<#if !object[key]??>
<#continue>
</#if>
<#recover>
<#local outSeq += ["/*Couldn't test if '" + key + "' is available on this object*/"]>
<#continue>
</#attempt>
<#local propertyValue = -1>
<#attempt>
<#local propertyValue = object[key]>
<#recover>
<#local outSeq += ["/*Couldn't dereference '" + key + "' on this object*/"]>
<#continue>
</#attempt>
<#local recOut = toJsDeclarationString(propertyValue, path + [ key ])>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + key + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += ['"' + key + '": ' + recOut + ","]>
</#list>
<#return (["{"] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "}"])?join("\n")>
</#if>
<#local isMethod = -1>
<#attempt>
<#local isMethod = object?is_method>
<#recover>
<#return "ABORT: Can't test if it'sa method.">
</#attempt>
<#if isMethod>
<#if areSamePath(path, ["auth", "showUsername"])>
<#attempt>
<#return auth.showUsername()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showUsername()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showResetCredentials"])>
<#attempt>
<#return auth.showResetCredentials()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showResetCredentials()">
</#attempt>
</#if>
<#if areSamePath(path, ["auth", "showTryAnotherWayLink"])>
<#attempt>
<#return auth.showTryAnotherWayLink()?c>
<#recover>
<#return "ABORT: Couldn't evaluate auth.showTryAnotherWayLink()">
</#attempt>
</#if>
<#if areSamePath(path, ["url", "getLogoutUrl"])>
<#local returnValue = -1>
<#attempt>
<#local returnValue = url.getLogoutUrl()>
<#recover>
<#return "ABORT: Couldn't evaluate url.getLogoutUrl()">
</#attempt>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#if areSamePath(path, ["totp", "policy", "getAlgorithmKey"])>
<#local returnValue = "error">
<#if mode?? && mode = "manual">
<#attempt>
<#local returnValue = totp.policy.getAlgorithmKey()>
<#recover>
<#return "ABORT: Couldn't evaluate totp.policy.getAlgorithmKey()">
</#attempt>
</#if>
<#return 'function(){ return "' + returnValue + '"; }'>
</#if>
<#assign fieldNames = ["firstName", "lastName", "email", "username", "password", "password-confirm", "global", "totp", "userLabel", "recoveryCodeInput", "termsAccepted"]>
<#if profile?? && profile.attributes??>
<#list profile.attributes as attribute>
<#if fieldNames?seq_contains(attribute.name)>
<#continue>
</#if>
<#assign fieldNames += [attribute.name]>
</#list>
</#if>
<#if areSamePath(path, ["messagesPerField", "get"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.exists('username') || messagesPerField.exists('password')>
<#local jsFunctionCode += "return kcContext.message && kcContext.message.summary ? kcContext.message.summary : 'error'; ">
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "'){ ">
<#if messagesPerField.exists('${fieldName}')>
<#local jsFunctionCode += 'return decodeHtmlEntities("' + messagesPerField.get('${fieldName}')?js_string + '"); '>
<#else>
<#local jsFunctionCode += "return ''; ">
</#if>
<#local jsFunctionCode += "} ">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if areSamePath(path, ["messagesPerField", "existsError"])>
<#local jsFunctionCode = "function (fieldName) { ">
<#list fieldNames as fieldName>
<#-- See: https://github.com/keycloakify/keycloakify/issues/217 -->
<#if xKeycloakify.pageId == "login.ftl" >
<#if fieldName == "username">
<#local jsFunctionCode += "if(fieldName === 'username' || fieldName === 'password' ){ ">
<#if messagesPerField.existsError('username') || messagesPerField.existsError('password')>
<#local jsFunctionCode += "return true; ">
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "} ">
<#continue>
</#if>
<#if fieldName == "password">
<#continue>
</#if>
</#if>
<#local jsFunctionCode += "if(fieldName === '" + fieldName + "' ){ ">
<#if messagesPerField.existsError('${fieldName}')>
<#local jsFunctionCode += 'return true; '>
<#else>
<#local jsFunctionCode += "return false; ">
</#if>
<#local jsFunctionCode += "}">
</#list>
<#local jsFunctionCode += "}">
<#return jsFunctionCode>
</#if>
<#if xKeycloakify.themeType == "account" && areSamePath(path, ["realm", "isInternationalizationEnabled"])>
<#attempt>
<#return realm.isInternationalizationEnabled()?c>
<#recover>
<#return "ABORT: Couldn't evaluate realm.isInternationalizationEnabled()">
</#attempt>
</#if>
<#return "ABORT: It's a method">
</#if>
<#local isBoolean = -1>
<#attempt>
<#local isBoolean = object?is_boolean>
<#recover>
<#return "ABORT: Can't test if it's a boolean">
</#attempt>
<#if isBoolean>
<#return object?c>
</#if>
<#local isEnumerable = -1>
<#attempt>
<#local isEnumerable = object?is_enumerable>
<#recover>
<#return "ABORT: Can't test if it's an enumerable">
</#attempt>
<#if isEnumerable>
<#local outSeq = []>
<#local i = 0>
<#list object as array_item>
<#if !array_item??>
<#local outSeq += ["null,"]>
<#continue>
</#if>
<#local recOut = toJsDeclarationString(array_item, path + [ i ])>
<#local i = i + 1>
<#if recOut?starts_with("ABORT:")>
<#local errorMessage = recOut?remove_beginning("ABORT:")>
<#if errorMessage != " It's a method" >
<#local outSeq += ["/*" + i?string + ": " + errorMessage + "*/"]>
</#if>
<#continue>
</#if>
<#local outSeq += [recOut + ","]>
</#list>
<#return (["["] + outSeq?map(str -> ""?right_pad(4 * (path?size + 1)) + str) + [ ""?right_pad(4 * path?size) + "]"])?join("\n")>
</#if>
<#local isDate = -1>
<#attempt>
<#local isDate = object?is_date_like>
<#recover>
<#return "ABORT: Can't test if it's a date">
</#attempt>
<#if isDate>
<#return '"' + object?datetime?iso_utc + '"'>
</#if>
<#local isNumber = -1>
<#attempt>
<#local isNumber = object?is_number>
<#recover>
<#return "ABORT: Can't test if it's a number">
</#attempt>
<#if isNumber>
<#return object?c>
</#if>
<#local isString = -1>
<#attempt>
<#local isString = object?is_string>
<#recover>
<#return "ABORT: Can't test if it's a string">
</#attempt>
<#if isString>
<@addToXKeycloakifyMessagesIfMessageKey str=object />
</#if>
<#attempt>
<#return '"' + object?js_string + '"'>;
<#recover>
</#attempt>
<#return "ABORT: Couldn't convert into string non hash, non method, non boolean, non number, non enumerable object">
</#function>
<#function isSubpath path searchedPath>
<#if path?size < searchedPath?size>
<#return false>
</#if>
<#local i=0>
<#list path as property>
<#if i == searchedPath?size >
<#continue>
</#if>
<#local searchedProperty=searchedPath[i]>
<#local i+= 1>
<#if searchedProperty?is_string && searchedProperty == "*">
<#continue>
</#if>
<#if searchedProperty?is_string && !property?is_string>
<#return false>
</#if>
<#if searchedProperty?is_number && !property?is_number>
<#return false>
</#if>
<#if searchedProperty?string != property?string>
<#return false>
</#if>
</#list>
<#return true>
</#function>
<#function areSamePath path searchedPath>
<#return path?size == searchedPath?size && isSubpath(path, searchedPath)>
</#function>
<#macro addToXKeycloakifyMessagesIfMessageKey str>
<#if !msg?? || !msg?is_method>
<#return>
</#if>
<#if (str?length > 200)>
<#return>
</#if>
<#local key=removeBrackets(str)>
<#if key?length==0>
<#return>
</#if>
<#if !(key?matches(r"^[a-zA-Z0-9-_.]*$"))>
<#return>
</#if>
<#local resolvedMsg=msg(key)>
<#if resolvedMsg==key>
<#return>
</#if>
<#local messages=xKeycloakify.messages>
<#local messages = messages + { key: resolvedMsg }>
<#assign xKeycloakify = xKeycloakify + { "messages": messages }>
</#macro>
<#function removeBrackets str>
<#if str?starts_with("${") && str?ends_with("}")>
<#return str[2..(str?length-2)]>
<#else>
<#return str>
</#if>
</#function>
<#macro addNonAutomaticallyGatherableMessagesToXKeycloakifyMessages>
<#if profile?? && profile?is_hash && profile.attributes?? && profile.attributes?is_enumerable>
<#list profile.attributes as attribute>
<#if !(
attribute.annotations?? && attribute.annotations?is_hash &&
attribute.annotations.inputOptionLabelsI18nPrefix?? && attribute.annotations.inputOptionLabelsI18nPrefix?is_string
)>
<#continue>
</#if>
<#local prefix=attribute.annotations.inputOptionLabelsI18nPrefix>
<#if !(
attribute.validators?? && attribute.validators?is_hash &&
attribute.validators.options?? && attribute.validators.options?is_hash &&
attribute.validators.options.options?? && attribute.validators.options.options?is_enumerable
)>
<#continue>
</#if>
<#list attribute.validators.options.options as option>
<#if !option?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="${prefix}.${option}" />
</#list>
</#list>
</#if>
<#if xKeycloakify.pageId == "terms.ftl" || termsAcceptanceRequired?? && termsAcceptanceRequired>
<@addToXKeycloakifyMessagesIfMessageKey str="termsText" />
</#if>
<#if requiredActions?? && requiredActions?is_enumerable>
<#list requiredActions as requiredAction>
<#if !requiredAction?is_string>
<#continue>
</#if>
<@addToXKeycloakifyMessagesIfMessageKey str="requiredAction.${requiredAction}" />
</#list>
</#if>
</#macro>
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="32x32" href="${xKeycloakify.resourcesPath}/dist/favicon-32x32.png">
<script type="module" crossorigin="" src="${xKeycloakify.resourcesPath}/dist/assets/index-6-NnS-wp.js"></script>
</head>
<body>
<div id="root"></div>
</body></html>

View File

@ -0,0 +1,629 @@
/* Patternfly CSS places a "bg-login.jpg" as the background on this ".login-pf" class.
This clashes with the "keycloak-bg.png' background defined on the body below.
Therefore the Patternfly background must be set to none. */
.login-pf {
background: none;
}
.login-pf body {
background: url("../img/keycloak-bg.png") no-repeat center center fixed;
background-size: cover;
height: 100%;
}
textarea.pf-c-form-control {
height: auto;
}
.pf-c-alert__title {
font-size: var(--pf-global--FontSize--xs);
}
p.instruction {
margin: 5px 0;
}
.pf-c-button.pf-m-control {
border-color: rgba(230, 230, 230, 0.5);
}
h1#kc-page-title {
margin-top: 10px;
}
#kc-locale ul {
background-color: var(--pf-global--BackgroundColor--100);
display: none;
top: 20px;
min-width: 100px;
padding: 0;
}
#kc-locale-dropdown{
display: inline-block;
}
#kc-locale-dropdown:hover ul {
display:block;
}
#kc-locale-dropdown a {
color: var(--pf-global--Color--200);
text-align: right;
font-size: var(--pf-global--FontSize--sm);
}
#kc-locale-dropdown button {
background: none;
border: none;
padding: 0;
cursor: pointer;
color: var(--pf-global--Color--200);
text-align: right;
font-size: var(--pf-global--FontSize--sm);
}
button#kc-current-locale-link::after {
content: "\2c5";
margin-left: var(--pf-global--spacer--xs)
}
.login-pf .container {
padding-top: 40px;
}
.login-pf a:hover {
color: #0099d3;
}
#kc-logo {
width: 100%;
}
div.kc-logo-text {
background-image: url(../img/keycloak-logo-text.png);
background-repeat: no-repeat;
height: 63px;
width: 300px;
margin: 0 auto;
}
div.kc-logo-text span {
display: none;
}
#kc-header {
color: #ededed;
overflow: visible;
white-space: nowrap;
}
#kc-header-wrapper {
font-size: 29px;
text-transform: uppercase;
letter-spacing: 3px;
line-height: 1.2em;
padding: 62px 10px 20px;
white-space: normal;
}
#kc-content {
width: 100%;
}
#kc-attempted-username {
font-size: 20px;
font-family: inherit;
font-weight: normal;
padding-right: 10px;
}
#kc-username {
text-align: center;
margin-bottom:-10px;
}
#kc-webauthn-settings-form {
padding-top: 8px;
}
#kc-form-webauthn .select-auth-box-parent {
pointer-events: none;
}
#kc-form-webauthn .select-auth-box-desc {
color: var(--pf-global--palette--black-600);
}
#kc-form-webauthn .select-auth-box-headline {
color: var(--pf-global--Color--300);
}
#kc-form-webauthn .select-auth-box-icon {
flex: 0 0 3em;
}
#kc-form-webauthn .select-auth-box-icon-properties {
margin-top: 10px;
font-size: 1.8em;
}
#kc-form-webauthn .select-auth-box-icon-properties.unknown-transport-class {
margin-top: 3px;
}
#kc-form-webauthn .pf-l-stack__item {
margin: -1px 0;
}
#kc-content-wrapper {
margin-top: 20px;
}
#kc-form-wrapper {
margin-top: 10px;
}
#kc-info {
margin: 20px -40px -30px;
}
#kc-info-wrapper {
font-size: 13px;
padding: 15px 35px;
background-color: #F0F0F0;
}
#kc-form-options span {
display: block;
}
#kc-form-options .checkbox {
margin-top: 0;
color: #72767b;
}
#kc-terms-text {
margin-bottom: 20px;
}
#kc-registration-terms-text {
max-height: 100px;
overflow-y: auto;
overflow-x: hidden;
margin: 5px;
}
#kc-registration {
margin-bottom: 0;
}
/* TOTP */
.subtitle {
text-align: right;
margin-top: 30px;
color: #909090;
}
.required {
color: var(--pf-global--danger-color--200);
}
ol#kc-totp-settings {
margin: 0;
padding-left: 20px;
}
ul#kc-totp-supported-apps {
margin-bottom: 10px;
}
#kc-totp-secret-qr-code {
max-width:150px;
max-height:150px;
}
#kc-totp-secret-key {
background-color: #fff;
color: #333333;
font-size: 16px;
padding: 10px 0;
}
/* OAuth */
#kc-oauth h3 {
margin-top: 0;
}
#kc-oauth ul {
list-style: none;
padding: 0;
margin: 0;
}
#kc-oauth ul li {
border-top: 1px solid rgba(255, 255, 255, 0.1);
font-size: 12px;
padding: 10px 0;
}
#kc-oauth ul li:first-of-type {
border-top: 0;
}
#kc-oauth .kc-role {
display: inline-block;
width: 50%;
}
/* Code */
#kc-code textarea {
width: 100%;
height: 8em;
}
/* Social */
.kc-social-links {
margin-top: 20px;
}
.kc-social-links li {
width: 100%;
}
.kc-social-provider-logo {
font-size: 23px;
width: 30px;
height: 25px;
float: left;
}
.kc-social-gray {
color: var(--pf-global--Color--200);
}
.kc-social-gray h2 {
font-size: 1em;
}
.kc-social-item {
margin-bottom: var(--pf-global--spacer--sm);
font-size: 15px;
text-align: center;
}
.kc-social-provider-name {
position: relative;
}
.kc-social-icon-text {
left: -15px;
}
.kc-social-grid {
display:grid;
grid-column-gap: 10px;
grid-row-gap: 5px;
grid-column-end: span 6;
--pf-l-grid__item--GridColumnEnd: span 6;
}
.kc-social-grid .kc-social-icon-text {
left: -10px;
}
.kc-login-tooltip {
position: relative;
display: inline-block;
}
.kc-social-section {
text-align: center;
}
.kc-social-section hr{
margin-bottom: 10px
}
.kc-login-tooltip .kc-tooltip-text{
top:-3px;
left:160%;
background-color: black;
visibility: hidden;
color: #fff;
min-width:130px;
text-align: center;
border-radius: 2px;
box-shadow:0 1px 8px rgba(0,0,0,0.6);
padding: 5px;
position: absolute;
opacity:0;
transition:opacity 0.5s;
}
/* Show tooltip */
.kc-login-tooltip:hover .kc-tooltip-text {
visibility: visible;
opacity:0.7;
}
/* Arrow for tooltip */
.kc-login-tooltip .kc-tooltip-text::after {
content: " ";
position: absolute;
top: 15px;
right: 100%;
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent black transparent transparent;
}
@media (min-width: 768px) {
#kc-container-wrapper {
position: absolute;
width: 100%;
}
.login-pf .container {
padding-right: 80px;
}
#kc-locale {
position: relative;
text-align: right;
z-index: 9999;
}
}
@media (max-width: 767px) {
.login-pf body {
background: white;
}
#kc-header {
padding-left: 15px;
padding-right: 15px;
float: none;
text-align: left;
}
#kc-header-wrapper {
font-size: 16px;
font-weight: bold;
padding: 20px 60px 0 0;
color: #72767b;
letter-spacing: 0;
}
div.kc-logo-text {
margin: 0;
width: 150px;
height: 32px;
background-size: 100%;
}
#kc-form {
float: none;
}
#kc-info-wrapper {
border-top: 1px solid rgba(255, 255, 255, 0.1);
background-color: transparent;
}
.login-pf .container {
padding-top: 15px;
padding-bottom: 15px;
}
#kc-locale {
position: absolute;
width: 200px;
top: 20px;
right: 20px;
text-align: right;
z-index: 9999;
}
}
@media (min-height: 646px) {
#kc-container-wrapper {
bottom: 12%;
}
}
@media (max-height: 645px) {
#kc-container-wrapper {
padding-top: 50px;
top: 20%;
}
}
.card-pf form.form-actions .btn {
float: right;
margin-left: 10px;
}
#kc-form-buttons {
margin-top: 20px;
}
.login-pf-page .login-pf-brand {
margin-top: 20px;
max-width: 360px;
width: 40%;
}
.select-auth-box-arrow{
display: flex;
align-items: center;
margin-right: 2rem;
}
.select-auth-box-icon{
display: flex;
flex: 0 0 2em;
justify-content: center;
margin-right: 1rem;
margin-left: 3rem;
}
.select-auth-box-parent{
border-top: 1px solid var(--pf-global--palette--black-200);
padding-top: 1rem;
padding-bottom: 1rem;
cursor: pointer;
text-align: left;
align-items: unset;
background-color: unset;
border-right: unset;
border-bottom: unset;
border-left: unset;
}
.select-auth-box-parent:hover{
background-color: #f7f8f8;
}
.select-auth-container {
padding-bottom: 0px !important;
}
.select-auth-box-headline {
font-size: var(--pf-global--FontSize--md);
color: var(--pf-global--primary-color--100);
font-weight: bold;
}
.select-auth-box-desc {
font-size: var(--pf-global--FontSize--sm);
}
.select-auth-box-paragraph {
text-align: center;
font-size: var(--pf-global--FontSize--md);
margin-bottom: 5px;
}
.card-pf {
margin: 0 auto;
box-shadow: var(--pf-global--BoxShadow--lg);
padding: 0 20px;
max-width: 500px;
border-top: 4px solid;
border-color: var(--pf-global--primary-color--100);
}
/*phone*/
@media (max-width: 767px) {
.login-pf-page .card-pf {
max-width: none;
margin-left: 0;
margin-right: 0;
padding-top: 0;
border-top: 0;
box-shadow: 0 0;
}
.kc-social-grid {
grid-column-end: 12;
--pf-l-grid__item--GridColumnEnd: span 12;
}
.kc-social-grid .kc-social-icon-text {
left: -15px;
}
}
.login-pf-page .login-pf-signup {
font-size: 15px;
color: #72767b;
}
#kc-content-wrapper .row {
margin-left: 0;
margin-right: 0;
}
.login-pf-page.login-pf-page-accounts {
margin-left: auto;
margin-right: auto;
}
.login-pf-page .btn-primary {
margin-top: 0;
}
.login-pf-page .list-view-pf .list-group-item {
border-bottom: 1px solid #ededed;
}
.login-pf-page .list-view-pf-description {
width: 100%;
}
#kc-form-login div.form-group:last-of-type,
#kc-register-form div.form-group:last-of-type,
#kc-update-profile-form div.form-group:last-of-type,
#kc-update-email-form div.form-group:last-of-type{
margin-bottom: 0px;
}
.no-bottom-margin {
margin-bottom: 0;
}
#kc-back {
margin-top: 5px;
}
/* Recovery codes */
.kc-recovery-codes-warning {
margin-bottom: 32px;
}
.kc-recovery-codes-warning .pf-c-alert__description p {
font-size: 0.875rem;
}
.kc-recovery-codes-list {
list-style: none;
columns: 2;
margin: 16px 0;
padding: 16px 16px 8px 16px;
border: 1px solid #D2D2D2;
}
.kc-recovery-codes-list li {
margin-bottom: 8px;
font-size: 11px;
}
.kc-recovery-codes-list li span {
color: #6A6E73;
width: 16px;
text-align: right;
display: inline-block;
margin-right: 1px;
}
.kc-recovery-codes-actions {
margin-bottom: 24px;
}
.kc-recovery-codes-actions button {
padding-left: 0;
}
.kc-recovery-codes-actions button i {
margin-right: 8px;
}
.kc-recovery-codes-confirmation {
align-items: baseline;
margin-bottom: 16px;
}
#certificate_subjectDN {
overflow-wrap: break-word
}
/* End Recovery codes */

View File

@ -0,0 +1 @@
import{j as e}from"./index-6-NnS-wp.js";import{g as l,k as u}from"./KcPage-BgEBzPJc.js";function m(a){const{kcContext:r,i18n:t,doUseDefaultCss:o,Template:d,classes:n}=a,{kcClsx:i}=l({doUseDefaultCss:o,classes:n}),{code:s}=r,{msg:c}=t;return e.jsx(d,Object.assign({kcContext:r,i18n:t,doUseDefaultCss:o,classes:n,headerNode:s.success?c("codeSuccessTitle"):c("codeErrorTitle",s.error)},{children:e.jsx("div",Object.assign({id:"kc-code"},{children:s.success?e.jsxs(e.Fragment,{children:[e.jsx("p",{children:c("copyCodeInstruction")}),e.jsx("input",{id:"code",className:i("kcTextareaClass"),defaultValue:s.code})]}):s.error&&e.jsx("p",{id:"error",dangerouslySetInnerHTML:{__html:u(s.error)}})}))}))}export{m as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g}from"./KcPage-BgEBzPJc.js";function j(o){const{kcContext:t,i18n:n,doUseDefaultCss:i,Template:r,classes:a}=o,{kcClsx:l}=g({doUseDefaultCss:i,classes:a}),{url:m,triggered_from_aia:d}=t,{msg:e,msgStr:c}=n;return s.jsx(r,Object.assign({kcContext:t,i18n:n,doUseDefaultCss:i,classes:a,headerNode:e("deleteAccountConfirm")},{children:s.jsxs("form",Object.assign({action:m.loginAction,className:"form-vertical",method:"post"},{children:[s.jsxs("div",Object.assign({className:"alert alert-warning",style:{marginTop:"0",marginBottom:"30px"}},{children:[s.jsx("span",{className:"pficon pficon-warning-triangle-o"}),e("irreversibleAction")]})),s.jsx("p",{children:e("deletingImplies")}),s.jsxs("ul",Object.assign({style:{color:"#72767b",listStyle:"disc",listStylePosition:"inside"}},{children:[s.jsx("li",{children:e("loggingOutImmediately")}),s.jsx("li",{children:e("errasingData")})]})),s.jsx("p",Object.assign({className:"delete-account-text"},{children:e("finalDeletionConfirmation")})),s.jsxs("div",Object.assign({id:"kc-form-buttons"},{children:[s.jsx("input",{className:l("kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),type:"submit",value:c("doConfirmDelete")}),d&&s.jsx("button",Object.assign({className:l("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),style:{marginLeft:"calc(100% - 220px)"},type:"submit",name:"cancel-aia",value:"true"},{children:c("doCancel")}))]}))]}))}))}export{j as default};

View File

@ -0,0 +1 @@
import{j as e}from"./index-6-NnS-wp.js";import{g as u}from"./KcPage-BgEBzPJc.js";function f(r){const{kcContext:s,i18n:t,doUseDefaultCss:a,Template:d,classes:c}=r,{msgStr:l,msg:n}=t,{kcClsx:i}=u({doUseDefaultCss:a,classes:c}),{url:m,credentialLabel:o}=s;return e.jsxs(d,Object.assign({kcContext:s,i18n:t,doUseDefaultCss:a,classes:c,displayMessage:!1,headerNode:n("deleteCredentialTitle",o)},{children:[e.jsx("div",Object.assign({id:"kc-delete-text"},{children:n("deleteCredentialMessage",o)})),e.jsxs("form",Object.assign({className:"form-actions",action:m.loginAction,method:"POST"},{children:[e.jsx("input",{className:i("kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),name:"accept",id:"kc-accept",type:"submit",value:l("doConfirmDelete")}),e.jsx("input",{className:i("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),name:"cancel-aia",value:l("doCancel"),id:"kc-decline",type:"submit"})]})),e.jsx("div",{className:"clearfix"})]}))}export{f as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{k as m}from"./KcPage-BgEBzPJc.js";function f(t){const{kcContext:n,i18n:i,doUseDefaultCss:r,Template:c,classes:o}=t,{message:l,client:e,skipLink:d}=n,{msg:a}=i;return s.jsx(c,Object.assign({kcContext:n,i18n:i,doUseDefaultCss:r,classes:o,displayMessage:!1,headerNode:a("errorTitle")},{children:s.jsxs("div",Object.assign({id:"kc-error-message"},{children:[s.jsx("p",{className:"instruction",dangerouslySetInnerHTML:{__html:m(l.summary)}}),!d&&e!==void 0&&e.baseUrl!==void 0&&s.jsx("p",{children:s.jsx("a",Object.assign({id:"backToApplication",href:e.baseUrl},{children:a("backToApplication")}))})]}))}))}export{f as default};

View File

@ -0,0 +1 @@
import{r as d,j as e}from"./index-6-NnS-wp.js";function f(l){const{kcContext:s,i18n:r,doUseDefaultCss:i,Template:a,classes:c}=l,{logout:t}=s,{msg:o,msgStr:u}=r;return d.useEffect(()=>{t.logoutRedirectUri&&window.location.replace(t.logoutRedirectUri)},[]),e.jsxs(a,Object.assign({kcContext:s,i18n:r,doUseDefaultCss:i,classes:c,documentTitle:u("frontchannel-logout.title"),headerNode:o("frontchannel-logout.title")},{children:[e.jsx("p",{children:o("frontchannel-logout.message")}),e.jsx("ul",{children:t.clients.map(n=>e.jsxs("li",{children:[n.name,e.jsx("iframe",{src:n.frontChannelLogoutUrl,style:{display:"none"}})]},n.name))}),t.logoutRedirectUri&&e.jsx("a",Object.assign({id:"continue",className:"btn btn-primary",href:t.logoutRedirectUri},{children:o("doContinue")}))]}))}export{f as default};

View File

@ -0,0 +1 @@
import{r as x,j as s}from"./index-6-NnS-wp.js";import{g as f}from"./KcPage-BgEBzPJc.js";function j(l){const{kcContext:t,i18n:o,doUseDefaultCss:a,Template:r,classes:i,UserProfileFormFields:c,doMakeUserConfirmPassword:n}=l,{kcClsx:e}=f({doUseDefaultCss:a,classes:i}),{msg:m,msgStr:d}=o,{url:u,messagesPerField:p}=t,[k,C]=x.useState(!1);return s.jsx(r,Object.assign({kcContext:t,i18n:o,doUseDefaultCss:a,classes:i,displayMessage:p.exists("global"),displayRequiredFields:!0,headerNode:m("loginIdpReviewProfileTitle")},{children:s.jsxs("form",Object.assign({id:"kc-idp-review-profile-form",className:e("kcFormClass"),action:u.loginAction,method:"post"},{children:[s.jsx(c,{kcContext:t,i18n:o,onIsFormSubmittableValueChange:C,kcClsx:e,doMakeUserConfirmPassword:n}),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",{className:e("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:s.jsx("input",{className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:d("doSubmit"),disabled:!k})}))]}))]}))}))}export{j as default};

View File

@ -0,0 +1 @@
import{j as e}from"./index-6-NnS-wp.js";import{k as u}from"./KcPage-BgEBzPJc.js";function U(m){const{kcContext:r,i18n:t,doUseDefaultCss:p,Template:j,classes:f}=m,{advancedMsgStr:h,msg:n}=t,{messageHeader:i,message:a,requiredActions:c,skipLink:x,pageRedirectUri:l,actionUri:o,client:d}=r;return e.jsx(j,Object.assign({kcContext:r,i18n:t,doUseDefaultCss:p,classes:f,displayMessage:!1,headerNode:e.jsx("span",{dangerouslySetInnerHTML:{__html:u(i??a.summary)}})},{children:e.jsxs("div",Object.assign({id:"kc-info-message"},{children:[e.jsx("p",{className:"instruction",dangerouslySetInnerHTML:{__html:u((()=>{let s=a.summary;return c&&(s+="<b>",s+=c.map(g=>h(`requiredAction.${g}`)).join(", "),s+="</b>"),s})())}}),(()=>{if(x)return null;if(l)return e.jsx("p",{children:e.jsx("a",Object.assign({href:l},{children:n("backToApplication")}))});if(o)return e.jsx("p",{children:e.jsx("a",Object.assign({href:o},{children:n("proceedWithAction")}))});if(d.baseUrl)return e.jsx("p",{children:e.jsx("a",Object.assign({href:d.baseUrl},{children:n("backToApplication")}))})})()]}))}))}export{U as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as m}from"./KcPage-BgEBzPJc.js";function f(a){const{kcContext:e,i18n:o,doUseDefaultCss:i,Template:l,classes:c}=a,{kcClsx:t}=m({doUseDefaultCss:i,classes:c}),{url:u,idpAlias:r}=e,{msg:n}=o;return s.jsx(l,Object.assign({kcContext:e,i18n:o,doUseDefaultCss:i,classes:c,headerNode:n("confirmLinkIdpTitle")},{children:s.jsx("form",Object.assign({id:"kc-register-form",action:u.loginAction,method:"post"},{children:s.jsxs("div",Object.assign({className:t("kcFormGroupClass")},{children:[s.jsx("button",Object.assign({type:"submit",className:t("kcButtonClass","kcButtonDefaultClass","kcButtonBlockClass","kcButtonLargeClass"),name:"submitAction",id:"updateProfile",value:"updateProfile"},{children:n("confirmLinkIdpReviewProfile")})),s.jsx("button",Object.assign({type:"submit",className:t("kcButtonClass","kcButtonDefaultClass","kcButtonBlockClass","kcButtonLargeClass"),name:"submitAction",id:"linkAccount",value:"linkAccount"},{children:n("confirmLinkIdpContinue",r)}))]}))}))}))}export{f as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as m}from"./KcPage-BgEBzPJc.js";function g(c){const{kcContext:t,i18n:i,doUseDefaultCss:n,Template:a,classes:r}=c,{kcClsx:l}=m({doUseDefaultCss:n,classes:r}),{url:o,idpDisplayName:d}=t,{msg:e}=i;return s.jsx(a,Object.assign({kcContext:t,i18n:i,doUseDefaultCss:n,classes:r,headerNode:e("confirmOverrideIdpTitle")},{children:s.jsxs("form",Object.assign({id:"kc-register-form",action:o.loginAction,method:"post"},{children:[e("pageExpiredMsg1")," ",s.jsx("a",Object.assign({id:"loginRestartLink",href:o.loginRestartFlowUrl},{children:e("doClickHere")})),s.jsx("br",{}),s.jsx("br",{}),s.jsx("button",Object.assign({type:"submit",className:l("kcButtonClass","kcButtonDefaultClass","kcButtonBlockClass","kcButtonLargeClass"),name:"submitAction",id:"confirmOverride",value:"confirmOverride"},{children:e("confirmOverrideIdpContinue",d)}))]}))}))}export{g as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";function j(c){const{kcContext:e,i18n:n,doUseDefaultCss:l,Template:o,classes:r}=c,{url:t,realm:d,brokerContext:m,idpAlias:a}=e,{msg:i}=n;return s.jsxs(o,Object.assign({kcContext:e,i18n:n,doUseDefaultCss:l,classes:r,headerNode:i("emailLinkIdpTitle",a)},{children:[s.jsx("p",Object.assign({id:"instruction1",className:"instruction"},{children:i("emailLinkIdp1",a,m.username,d.displayName)})),s.jsxs("p",Object.assign({id:"instruction2",className:"instruction"},{children:[i("emailLinkIdp2")," ",s.jsx("a",Object.assign({href:t.loginAction},{children:i("doClickHere")}))," ",i("emailLinkIdp3")]})),s.jsxs("p",Object.assign({id:"instruction3",className:"instruction"},{children:[i("emailLinkIdp4")," ",s.jsx("a",Object.assign({href:t.loginAction},{children:i("doClickHere")}))," ",i("emailLinkIdp5")]}))]}))}export{j as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as m}from"./KcPage-BgEBzPJc.js";function j(r){const{kcContext:a,i18n:c,doUseDefaultCss:t,classes:i,Template:l}=r,{url:n}=a,{msg:o,msgStr:d}=c,{kcClsx:e}=m({doUseDefaultCss:t,classes:i});return s.jsx(l,Object.assign({kcContext:a,i18n:c,doUseDefaultCss:t,classes:i,headerNode:o("oauth2DeviceVerificationTitle")},{children:s.jsxs("form",Object.assign({id:"kc-user-verify-device-user-code-form",className:e("kcFormClass"),action:n.oauth2DeviceVerificationAction,method:"post"},{children:[s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:e("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"device-user-code",className:e("kcLabelClass")},{children:o("verifyOAuth2DeviceUserCode")}))})),s.jsx("div",Object.assign({className:e("kcInputWrapperClass")},{children:s.jsx("input",{id:"device-user-code",name:"device_user_code",autoComplete:"off",type:"text",className:e("kcInputClass"),autoFocus:!0})}))]})),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",{className:e("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:s.jsx("div",Object.assign({className:e("kcFormButtonsWrapperClass")},{children:s.jsx("input",{className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),type:"submit",value:d("doSubmit")})}))}))]}))]}))}))}export{j as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g}from"./KcPage-BgEBzPJc.js";function k(m){const{kcContext:i,i18n:r,doUseDefaultCss:c,classes:o,Template:h}=m,{url:j,oauth:l,client:t}=i,{msg:e,msgStr:d,advancedMsg:x,advancedMsgStr:u}=r,{kcClsx:a}=g({doUseDefaultCss:c,classes:o});return s.jsx(h,Object.assign({kcContext:i,i18n:r,doUseDefaultCss:c,classes:o,bodyClassName:"oauth",headerNode:s.jsxs(s.Fragment,{children:[t.attributes.logoUri&&s.jsx("img",{src:t.attributes.logoUri}),s.jsx("p",{children:t.name?e("oauthGrantTitle",u(t.name)):e("oauthGrantTitle",t.clientId)})]})},{children:s.jsxs("div",Object.assign({id:"kc-oauth",className:"content-area"},{children:[s.jsx("h3",{children:e("oauthGrantRequest")}),s.jsx("ul",{children:l.clientScopesRequested.map(n=>s.jsx("li",{children:s.jsxs("span",{children:[x(n.consentScreenText),n.dynamicScopeParameter&&s.jsxs(s.Fragment,{children:[": ",s.jsx("b",{children:n.dynamicScopeParameter})]})]})},n.consentScreenText))}),t.attributes.policyUri||t.attributes.tosUri&&s.jsxs("h3",{children:[t.name?e("oauthGrantInformation",u(t.name)):e("oauthGrantInformation",t.clientId),t.attributes.tosUri&&s.jsxs(s.Fragment,{children:[e("oauthGrantReview"),s.jsx("a",Object.assign({href:t.attributes.tosUri,target:"_blank"},{children:e("oauthGrantTos")}))]}),t.attributes.policyUri&&s.jsxs(s.Fragment,{children:[e("oauthGrantReview"),s.jsx("a",Object.assign({href:t.attributes.policyUri,target:"_blank"},{children:e("oauthGrantPolicy")}))]})]}),s.jsxs("form",Object.assign({className:"form-actions",action:j.oauthAction,method:"POST"},{children:[s.jsx("input",{type:"hidden",name:"code",value:l.code}),s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options"},{children:s.jsx("div",{className:a("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons"},{children:s.jsxs("div",Object.assign({className:a("kcFormButtonsWrapperClass")},{children:[s.jsx("input",{className:a("kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),name:"accept",id:"kc-login",type:"submit",value:d("doYes")}),s.jsx("input",{className:a("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),name:"cancel",id:"kc-cancel",type:"submit",value:d("doNo")})]}))}))]}))]})),s.jsx("div",{className:"clearfix"})]}))}))}export{k as default};

View File

@ -0,0 +1 @@
import{j as s,r as u}from"./index-6-NnS-wp.js";import{g as k,k as C}from"./KcPage-BgEBzPJc.js";function h(m){const{kcContext:l,i18n:n,doUseDefaultCss:o,Template:p,classes:r}=m,{kcClsx:e}=k({doUseDefaultCss:o,classes:r}),{otpLogin:c,url:g,messagesPerField:a}=l,{msg:d,msgStr:j}=n;return s.jsx(p,Object.assign({kcContext:l,i18n:n,doUseDefaultCss:o,classes:r,displayMessage:!a.existsError("totp"),headerNode:d("doLogIn")},{children:s.jsxs("form",Object.assign({id:"kc-otp-login-form",className:e("kcFormClass"),action:g.loginAction,method:"post"},{children:[c.userOtpCredentials.length>1&&s.jsx("div",Object.assign({className:e("kcFormGroupClass")},{children:s.jsx("div",Object.assign({className:e("kcInputWrapperClass")},{children:c.userOtpCredentials.map((i,t)=>s.jsxs(u.Fragment,{children:[s.jsx("input",{id:`kc-otp-credential-${t}`,className:e("kcLoginOTPListInputClass"),type:"radio",name:"selectedCredentialId",value:i.id,defaultChecked:i.id===c.selectedCredentialId}),s.jsx("label",Object.assign({htmlFor:`kc-otp-credential-${t}`,className:e("kcLoginOTPListClass"),tabIndex:t},{children:s.jsxs("span",Object.assign({className:e("kcLoginOTPListItemHeaderClass")},{children:[s.jsx("span",Object.assign({className:e("kcLoginOTPListItemIconBodyClass")},{children:s.jsx("i",{className:e("kcLoginOTPListItemIconClass"),"aria-hidden":"true"})})),s.jsx("span",Object.assign({className:e("kcLoginOTPListItemTitleClass")},{children:i.userLabel}))]}))}))]},t))}))})),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:e("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"otp",className:e("kcLabelClass")},{children:d("loginOtpOneTime")}))})),s.jsxs("div",Object.assign({className:e("kcInputWrapperClass")},{children:[s.jsx("input",{id:"otp",name:"otp",autoComplete:"off",type:"text",className:e("kcInputClass"),autoFocus:!0,"aria-invalid":a.existsError("totp")}),a.existsError("totp")&&s.jsx("span",{id:"input-error-otp-code",className:e("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:C(a.get("totp"))}})]}))]})),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",{className:e("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:s.jsx("input",{className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),name:"login",id:"kc-login",type:"submit",value:j("doLogIn")})}))]}))]}))}))}export{h as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";function d(r){const{kcContext:i,i18n:n,doUseDefaultCss:o,Template:a,classes:c}=r,{url:t}=i,{msg:e}=n;return s.jsx(a,Object.assign({kcContext:i,i18n:n,doUseDefaultCss:o,classes:c,headerNode:e("pageExpiredTitle")},{children:s.jsxs("p",Object.assign({id:"instruction1",className:"instruction"},{children:[e("pageExpiredMsg1"),s.jsx("a",Object.assign({id:"loginRestartLink",href:t.loginRestartFlowUrl},{children:e("doClickHere")}))," ",".",s.jsx("br",{}),e("pageExpiredMsg2")," ",s.jsx("a",Object.assign({id:"loginContinueLink",href:t.loginAction},{children:e("doClickHere")}))," ","."]}))}))}export{d as default};

View File

@ -0,0 +1,24 @@
import{r as O,j as e}from"./index-6-NnS-wp.js";import{a as N,u as S,g as w,c as B}from"./KcPage-BgEBzPJc.js";import{w as $}from"./waitForElementMountedOnDom-qpCjLZnq.js";N();N();function F(j){const{authButtonId:i,kcContext:c,i18n:l}=j,{url:o,isUserIdentified:x,challenge:m,userVerification:d,rpId:b,createTimeout:u}=c,{msgStr:h,isFetchingTranslations:p}=l,{insertScriptTags:n}=S({componentOrHookName:"LoginRecoveryAuthnCodeConfig",scriptTags:[{type:"module",textContent:()=>`
import { authenticateByWebAuthn } from "${o.resourcesPath}/js/webauthnAuthenticate.js";
import { initAuthenticate } from "${o.resourcesPath}/js/passkeysConditionalAuth.js";
const authButton = document.getElementById("${i}");
const input = {
isUserIdentified : ${x},
challenge : ${JSON.stringify(m)},
userVerification : ${JSON.stringify(d)},
rpId : ${JSON.stringify(b)},
createTimeout : ${u}
};
authButton.addEventListener("click", () => {
authenticateByWebAuthn({
...input,
errmsg : ${JSON.stringify(h("webauthn-unsupported-browser-text"))}
});
});
initAuthenticate({
...input,
errmsg : ${JSON.stringify(h("passkey-unsupported-browser-text"))}
});
`}]});O.useEffect(()=>{p||(async()=>(await $({elementId:i}),n()))()},[p])}function P(j){var i;const{kcContext:c,i18n:l,doUseDefaultCss:o,Template:x,classes:m}=j,{messagesPerField:d,login:b,url:u,usernameHidden:h,shouldDisplayAuthenticators:p,authenticators:n,registrationDisabled:A,realm:y}=c,{msg:r,msgStr:I,advancedMsg:f}=l,{kcClsx:s}=w({doUseDefaultCss:o,classes:m}),C="authenticateWebAuthnButton";return F({authButtonId:C,kcContext:c,i18n:l}),e.jsxs(x,Object.assign({kcContext:c,i18n:l,doUseDefaultCss:o,classes:m,headerNode:r("passkey-login-title"),infoNode:y.registrationAllowed&&!A&&e.jsx("div",Object.assign({id:"kc-registration"},{children:e.jsxs("span",{children:["$",r("noAccount")," ",e.jsx("a",Object.assign({tabIndex:6,href:u.registrationUrl},{children:r("doRegister")}))]})}))},{children:[e.jsxs("form",Object.assign({id:"webauth",action:u.loginAction,method:"post"},{children:[e.jsx("input",{type:"hidden",id:"clientDataJSON",name:"clientDataJSON"}),e.jsx("input",{type:"hidden",id:"authenticatorData",name:"authenticatorData"}),e.jsx("input",{type:"hidden",id:"signature",name:"signature"}),e.jsx("input",{type:"hidden",id:"credentialId",name:"credentialId"}),e.jsx("input",{type:"hidden",id:"userHandle",name:"userHandle"}),e.jsx("input",{type:"hidden",id:"error",name:"error"})]})),e.jsxs("div",Object.assign({className:s("kcFormGroupClass"),"no-bottom-margin":"true",style:{marginBottom:0}},{children:[n!==void 0&&Object.keys(n).length!==0&&e.jsxs(e.Fragment,{children:[e.jsx("form",Object.assign({id:"authn_select",className:s("kcFormClass")},{children:n.authenticators.map((t,a)=>e.jsx("input",{type:"hidden",name:"authn_use_chk",readOnly:!0,value:t.credentialId},a))})),p&&e.jsxs(e.Fragment,{children:[n.authenticators.length>1&&e.jsx("p",Object.assign({className:s("kcSelectAuthListItemTitle")},{children:r("passkey-available-authenticators")})),e.jsx("div",Object.assign({className:s("kcFormClass")},{children:n.authenticators.map((t,a)=>e.jsxs("div",Object.assign({id:`kc-webauthn-authenticator-item-${a}`,className:s("kcSelectAuthListItemClass")},{children:[e.jsx("i",{className:B((()=>{const g=s(t.transports.iconClass);return g===t.transports.iconClass?s("kcWebAuthnDefaultIcon"):g})(),s("kcSelectAuthListItemIconPropertyClass"))}),e.jsxs("div",Object.assign({className:s("kcSelectAuthListItemBodyClass")},{children:[e.jsx("div",Object.assign({id:`kc-webauthn-authenticator-label-${a}`,className:s("kcSelectAuthListItemHeadingClass")},{children:f(t.label)})),t.transports!==void 0&&t.transports.displayNameProperties!==void 0&&t.transports.displayNameProperties.length!==0&&e.jsx("div",Object.assign({id:`kc-webauthn-authenticator-transport-${a}`,className:s("kcSelectAuthListItemDescriptionClass")},{children:t.transports.displayNameProperties.map((g,k,v)=>e.jsxs(O.Fragment,{children:[e.jsxs("span",{children:[" ",f(g)," "]},k),k!==v.length-1&&e.jsx("span",{children:", "})]},k))})),e.jsxs("div",Object.assign({className:s("kcSelectAuthListItemDescriptionClass")},{children:[e.jsx("span",Object.assign({id:`kc-webauthn-authenticator-createdlabel-${a}`},{children:r("passkey-createdAt-label")})),e.jsx("span",Object.assign({id:`kc-webauthn-authenticator-created-${a}`},{children:t.createdAt}))]}))]})),e.jsx("div",{className:s("kcSelectAuthListItemFillClass")})]}),a))}))]})]}),e.jsx("div",Object.assign({id:"kc-form"},{children:e.jsxs("div",Object.assign({id:"kc-form-wrapper"},{children:[y.password&&e.jsx("form",Object.assign({id:"kc-form-login",action:u.loginAction,method:"post",style:{display:"none"},onSubmit:t=>{try{t.target.login.disabled=!0}catch{}return!0}},{children:!h&&e.jsxs("div",Object.assign({className:s("kcFormGroupClass")},{children:[e.jsx("label",Object.assign({htmlFor:"username",className:s("kcLabelClass")},{children:r("passkey-autofill-select")})),e.jsx("input",{tabIndex:1,id:"username","aria-invalid":d.existsError("username"),className:s("kcInputClass"),name:"username",defaultValue:(i=b.username)!==null&&i!==void 0?i:"",autoComplete:"username webauthn",type:"text",autoFocus:!0}),d.existsError("username")&&e.jsx("span",Object.assign({id:"input-error-username",className:s("kcInputErrorMessageClass"),"aria-live":"polite"},{children:d.get("username")}))]}))})),e.jsx("div",Object.assign({id:"kc-form-passkey-button",className:s("kcFormButtonsClass"),style:{display:"none"}},{children:e.jsx("input",{id:C,type:"button",autoFocus:!0,value:I("passkey-doAuthenticate"),className:s("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass")})}))]}))}))]}))]}))}export{P as default};

View File

@ -0,0 +1 @@
import{r as m,j as s}from"./index-6-NnS-wp.js";import{g as j,c as b,k,a as w}from"./KcPage-BgEBzPJc.js";function f(c){const{kcContext:t,i18n:o,doUseDefaultCss:r,Template:l,classes:n}=c,{kcClsx:e}=j({doUseDefaultCss:r,classes:n}),{realm:d,url:a,messagesPerField:i}=t,{msg:p,msgStr:u}=o,[g,x]=m.useState(!1);return s.jsx(l,Object.assign({kcContext:t,i18n:o,doUseDefaultCss:r,classes:n,headerNode:p("doLogIn"),displayMessage:!i.existsError("password")},{children:s.jsx("div",Object.assign({id:"kc-form"},{children:s.jsx("div",Object.assign({id:"kc-form-wrapper"},{children:s.jsxs("form",Object.assign({id:"kc-form-login",onSubmit:()=>(x(!0),!0),action:a.loginAction,method:"post"},{children:[s.jsxs("div",Object.assign({className:b(e("kcFormGroupClass"),"no-bottom-margin")},{children:[s.jsx("hr",{}),s.jsx("label",Object.assign({htmlFor:"password",className:e("kcLabelClass")},{children:p("password")})),s.jsx(h,Object.assign({kcClsx:e,i18n:o,passwordInputId:"password"},{children:s.jsx("input",{tabIndex:2,id:"password",className:e("kcInputClass"),name:"password",type:"password",autoFocus:!0,autoComplete:"on","aria-invalid":i.existsError("username","password")})})),i.existsError("password")&&s.jsx("span",{id:"input-error-password",className:e("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:k(i.get("password"))}})]})),s.jsxs("div",Object.assign({className:e("kcFormGroupClass","kcFormSettingClass")},{children:[s.jsx("div",{id:"kc-form-options"}),s.jsx("div",Object.assign({className:e("kcFormOptionsWrapperClass")},{children:d.resetPasswordAllowed&&s.jsx("span",{children:s.jsx("a",Object.assign({tabIndex:5,href:a.loginResetCredentialsUrl},{children:p("doForgotPassword")}))})}))]})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormGroupClass")},{children:s.jsx("input",{tabIndex:4,className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),name:"login",id:"kc-login",type:"submit",value:u("doLogIn"),disabled:g})}))]}))}))}))}))}function h(c){const{kcClsx:t,i18n:o,passwordInputId:r,children:l}=c,{msgStr:n}=o,[e,d]=m.useReducer(a=>!a,!1);return m.useEffect(()=>{const a=document.getElementById(r);w(a instanceof HTMLInputElement),a.type=e?"text":"password"},[e]),s.jsxs("div",Object.assign({className:t("kcInputGroup")},{children:[l,s.jsx("button",Object.assign({type:"button",className:t("kcFormPasswordVisibilityButtonClass"),"aria-label":n(e?"hidePassword":"showPassword"),"aria-controls":r,onClick:d},{children:s.jsx("i",{className:t(e?"kcFormPasswordVisibilityIconHide":"kcFormPasswordVisibilityIconShow"),"aria-hidden":!0})}))]}))}export{f as default};

View File

@ -0,0 +1,112 @@
import{r as C,j as e}from"./index-6-NnS-wp.js";import{u as g,g as f,c as l}from"./KcPage-BgEBzPJc.js";import{w as h}from"./waitForElementMountedOnDom-qpCjLZnq.js";function x(c){const{olRecoveryCodesListId:t,i18n:s}=c,{msgStr:o,isFetchingTranslations:a}=s,{insertScriptTags:d}=g({componentOrHookName:"LoginRecoveryAuthnCodeConfig",scriptTags:[{type:"text/javascript",textContent:()=>`
/* copy recovery codes */
function copyRecoveryCodes() {
var tmpTextarea = document.createElement("textarea");
var codes = document.querySelectorAll("#${t} li");
for (i = 0; i < codes.length; i++) {
tmpTextarea.value = tmpTextarea.value + codes[i].innerText + "\\n";
}
document.body.appendChild(tmpTextarea);
tmpTextarea.select();
document.execCommand("copy");
document.body.removeChild(tmpTextarea);
}
var copyButton = document.getElementById("copyRecoveryCodes");
copyButton && copyButton.addEventListener("click", function () {
copyRecoveryCodes();
});
/* download recovery codes */
function formatCurrentDateTime() {
var dt = new Date();
var options = {
month: 'long',
day: 'numeric',
year: 'numeric',
hour: 'numeric',
minute: 'numeric',
timeZoneName: 'short'
};
return dt.toLocaleString('en-US', options);
}
function parseRecoveryCodeList() {
var recoveryCodes = document.querySelectorAll("#${t} li");
var recoveryCodeList = "";
for (var i = 0; i < recoveryCodes.length; i++) {
var recoveryCodeLiElement = recoveryCodes[i].innerText;
recoveryCodeList += recoveryCodeLiElement + "\\r\\n";
}
return recoveryCodeList;
}
function buildDownloadContent() {
var recoveryCodeList = parseRecoveryCodeList();
var dt = new Date();
var options = {
month: 'long',
day: 'numeric',
year: 'numeric',
hour: 'numeric',
minute: 'numeric',
timeZoneName: 'short'
};
return fileBodyContent =
${JSON.stringify(o("recovery-codes-download-file-header"))} + "\\n\\n" +
recoveryCodeList + "\\n" +
${JSON.stringify(o("recovery-codes-download-file-description"))} + "\\n\\n" +
${JSON.stringify(o("recovery-codes-download-file-date"))} + " " + formatCurrentDateTime();
}
function setUpDownloadLinkAndDownload(filename, text) {
var el = document.createElement('a');
el.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
el.setAttribute('download', filename);
el.style.display = 'none';
document.body.appendChild(el);
el.click();
document.body.removeChild(el);
}
function downloadRecoveryCodes() {
setUpDownloadLinkAndDownload('kc-download-recovery-codes.txt', buildDownloadContent());
}
var downloadButton = document.getElementById("downloadRecoveryCodes");
downloadButton && downloadButton.addEventListener("click", downloadRecoveryCodes);
/* print recovery codes */
function buildPrintContent() {
var recoveryCodeListHTML = document.getElementById('${t}').innerHTML;
var styles =
\`@page { size: auto; margin-top: 0; }
body { width: 480px; }
div { list-style-type: none; font-family: monospace }
p:first-of-type { margin-top: 48px }\`;
return printFileContent =
"<html><style>" + styles + "</style><body>" +
"<title>kc-download-recovery-codes</title>" +
"<p>" + ${JSON.stringify(o("recovery-codes-download-file-header"))} + "</p>" +
"<div>" + recoveryCodeListHTML + "</div>" +
"<p>" + ${JSON.stringify(o("recovery-codes-download-file-description"))} + "</p>" +
"<p>" + ${JSON.stringify(o("recovery-codes-download-file-date"))} + " " + formatCurrentDateTime() + "</p>" +
"</body></html>";
}
function printRecoveryCodes() {
var w = window.open();
w.document.write(buildPrintContent());
w.print();
w.close();
}
var printButton = document.getElementById("printRecoveryCodes");
printButton && printButton.addEventListener("click", printRecoveryCodes);
`}]});C.useEffect(()=>{a||(async()=>(await h({elementId:t}),d()))()},[a])}function N(c){const{kcContext:t,i18n:s,doUseDefaultCss:o,Template:a,classes:d}=c,{kcClsx:n}=f({doUseDefaultCss:o,classes:d}),{recoveryAuthnCodesConfigBean:u,isAppInitiatedAction:v}=t,{msg:r,msgStr:m}=s,p="kc-recovery-codes-list";return x({olRecoveryCodesListId:p,i18n:s}),e.jsxs(a,Object.assign({kcContext:t,i18n:s,doUseDefaultCss:o,classes:d,headerNode:r("recovery-code-config-header")},{children:[e.jsxs("div",Object.assign({className:l("pf-c-alert","pf-m-warning","pf-m-inline",n("kcRecoveryCodesWarning")),"aria-label":"Warning alert"},{children:[e.jsx("div",Object.assign({className:"pf-c-alert__icon"},{children:e.jsx("i",{className:"pficon-warning-triangle-o","aria-hidden":"true"})})),e.jsxs("h4",Object.assign({className:"pf-c-alert__title"},{children:[e.jsx("span",Object.assign({className:"pf-screen-reader"},{children:"Warning alert:"})),r("recovery-code-config-warning-title")]})),e.jsx("div",Object.assign({className:"pf-c-alert__description"},{children:e.jsx("p",{children:r("recovery-code-config-warning-message")})}))]})),e.jsx("ol",Object.assign({id:p,className:n("kcRecoveryCodesList")},{children:u.generatedRecoveryAuthnCodesList.map((i,y)=>e.jsxs("li",{children:[e.jsxs("span",{children:[y+1,":"]})," ",i.slice(0,4),"-",i.slice(4,8),"-",i.slice(8)]},y))})),e.jsxs("div",Object.assign({className:n("kcRecoveryCodesActions")},{children:[e.jsxs("button",Object.assign({id:"printRecoveryCodes",className:l("pf-c-button","pf-m-link"),type:"button"},{children:[e.jsx("i",{className:"pficon-print","aria-hidden":"true"})," ",r("recovery-codes-print")]})),e.jsxs("button",Object.assign({id:"downloadRecoveryCodes",className:l("pf-c-button","pf-m-link"),type:"button"},{children:[e.jsx("i",{className:"pficon-save","aria-hidden":"true"})," ",r("recovery-codes-download")]})),e.jsxs("button",Object.assign({id:"copyRecoveryCodes",className:l("pf-c-button","pf-m-link"),type:"button"},{children:[e.jsx("i",{className:"pficon-blueprint","aria-hidden":"true"})," ",r("recovery-codes-copy")]}))]})),e.jsxs("div",Object.assign({className:n("kcFormOptionsClass")},{children:[e.jsx("input",{className:n("kcCheckInputClass"),type:"checkbox",id:"kcRecoveryCodesConfirmationCheck",name:"kcRecoveryCodesConfirmationCheck",onChange:i=>{document.getElementById("saveRecoveryAuthnCodesBtn").disabled=!i.target.checked}}),e.jsx("label",Object.assign({htmlFor:"kcRecoveryCodesConfirmationCheck"},{children:r("recovery-codes-confirmation-message")}))]})),e.jsxs("form",Object.assign({action:t.url.loginAction,className:n("kcFormGroupClass"),id:"kc-recovery-codes-settings-form",method:"post"},{children:[e.jsx("input",{type:"hidden",name:"generatedRecoveryAuthnCodes",value:u.generatedRecoveryAuthnCodesAsString}),e.jsx("input",{type:"hidden",name:"generatedAt",value:u.generatedAt}),e.jsx("input",{type:"hidden",id:"userLabel",name:"userLabel",value:m("recovery-codes-label-default")}),e.jsx(b,{kcClsx:n,i18n:s}),v?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"submit",className:n("kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),id:"saveRecoveryAuthnCodesBtn",value:m("recovery-codes-action-complete"),disabled:!0}),e.jsx("button",Object.assign({type:"submit",className:n("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),id:"cancelRecoveryAuthnCodesBtn",name:"cancel-aia",value:"true"},{children:r("recovery-codes-action-cancel")}))]}):e.jsx("input",{type:"submit",className:n("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),id:"saveRecoveryAuthnCodesBtn",value:m("recovery-codes-action-complete"),disabled:!0})]}))]}))}function b(c){const{kcClsx:t,i18n:s}=c,{msg:o}=s;return e.jsx("div",Object.assign({id:"kc-form-options",className:t("kcFormOptionsClass")},{children:e.jsx("div",Object.assign({className:t("kcFormOptionsWrapperClass")},{children:e.jsx("div",Object.assign({className:"checkbox"},{children:e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",id:"logout-sessions",name:"logout-sessions",value:"on",defaultChecked:!0}),o("logoutOtherSessions")]})}))}))}))}export{N as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as m,k as C}from"./KcPage-BgEBzPJc.js";function x(i){const{kcContext:r,i18n:o,doUseDefaultCss:t,Template:l,classes:c}=i,{kcClsx:e}=m({doUseDefaultCss:t,classes:c}),{url:d,messagesPerField:a,recoveryAuthnCodesInputBean:p}=r,{msg:n,msgStr:u}=o;return s.jsx(l,Object.assign({kcContext:r,i18n:o,doUseDefaultCss:t,classes:c,headerNode:n("auth-recovery-code-header"),displayMessage:!a.existsError("recoveryCodeInput")},{children:s.jsxs("form",Object.assign({id:"kc-recovery-code-login-form",className:e("kcFormClass"),action:d.loginAction,method:"post"},{children:[s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:e("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"recoveryCodeInput",className:e("kcLabelClass")},{children:n("auth-recovery-code-prompt",`${p.codeNumber}`)}))})),s.jsxs("div",Object.assign({className:e("kcInputWrapperClass")},{children:[s.jsx("input",{tabIndex:1,id:"recoveryCodeInput",name:"recoveryCodeInput","aria-invalid":a.existsError("recoveryCodeInput"),autoComplete:"off",type:"text",className:e("kcInputClass"),autoFocus:!0}),a.existsError("recoveryCodeInput")&&s.jsx("span",{id:"input-error",className:e("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:C(a.get("recoveryCodeInput"))}})]}))]})),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsWrapperClass")},{children:s.jsx("div",{className:e("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:s.jsx("input",{className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),name:"login",id:"kc-login",type:"submit",value:u("doLogIn")})}))]}))]}))}))}export{x as default};

View File

@ -0,0 +1 @@
import{j as s,r as u}from"./index-6-NnS-wp.js";import{g as k}from"./KcPage-BgEBzPJc.js";function O(d){const{kcContext:c,i18n:i,doUseDefaultCss:n,Template:m,classes:l}=d,{kcClsx:e}=k({doUseDefaultCss:n,classes:l}),{url:p,messagesPerField:g,configuredOtpCredentials:r}=c,{msg:o,msgStr:j}=i;return s.jsx(m,Object.assign({kcContext:c,i18n:i,doUseDefaultCss:n,classes:l,displayMessage:!g.existsError("totp"),headerNode:o("doLogIn")},{children:s.jsx("form",Object.assign({id:"kc-otp-reset-form",className:e("kcFormClass"),action:p.loginAction,method:"post"},{children:s.jsx("div",Object.assign({className:e("kcInputWrapperClass")},{children:s.jsxs("div",Object.assign({className:e("kcInfoAreaWrapperClass")},{children:[s.jsx("p",Object.assign({id:"kc-otp-reset-form-description"},{children:o("otp-reset-description")})),r.userOtpCredentials.map((t,a)=>s.jsxs(u.Fragment,{children:[s.jsx("input",{id:`kc-otp-credential-${a}`,className:e("kcLoginOTPListInputClass"),type:"radio",name:"selectedCredentialId",value:t.id,defaultChecked:t.id===r.selectedCredentialId}),s.jsx("label",Object.assign({htmlFor:`kc-otp-credential-${a}`,className:e("kcLoginOTPListClass"),tabIndex:a},{children:s.jsxs("span",Object.assign({className:e("kcLoginOTPListItemHeaderClass")},{children:[s.jsx("span",Object.assign({className:e("kcLoginOTPListItemIconBodyClass")},{children:s.jsx("i",{className:e("kcLoginOTPListItemIconClass"),"aria-hidden":"true"})})),s.jsx("span",Object.assign({className:e("kcLoginOTPListItemTitleClass")},{children:t.userLabel}))]}))}))]},t.id)),s.jsx("div",Object.assign({className:e("kcFormGroupClass")},{children:s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:s.jsx("input",{id:"kc-otp-reset-form-submit",className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:j("doSubmit")})}))}))]}))}))}))}))}export{O as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as j,k}from"./KcPage-BgEBzPJc.js";function h(u){var t;const{kcContext:l,i18n:n,doUseDefaultCss:c,Template:d,classes:o}=u,{kcClsx:e}=j({doUseDefaultCss:c,classes:o}),{url:m,realm:i,auth:p,messagesPerField:r}=l,{msg:a,msgStr:g}=n;return s.jsx(d,Object.assign({kcContext:l,i18n:n,doUseDefaultCss:c,classes:o,displayInfo:!0,displayMessage:!r.existsError("username"),infoNode:i.duplicateEmailsAllowed?a("emailInstructionUsername"):a("emailInstruction"),headerNode:a("emailForgotTitle")},{children:s.jsxs("form",Object.assign({id:"kc-reset-password-form",className:e("kcFormClass"),action:m.loginAction,method:"post"},{children:[s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:e("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"username",className:e("kcLabelClass")},{children:i.loginWithEmailAllowed?i.registrationEmailAsUsername?a("email"):a("usernameOrEmail"):a("username")}))})),s.jsxs("div",Object.assign({className:e("kcInputWrapperClass")},{children:[s.jsx("input",{type:"text",id:"username",name:"username",className:e("kcInputClass"),autoFocus:!0,defaultValue:(t=p.attemptedUsername)!==null&&t!==void 0?t:"","aria-invalid":r.existsError("username")}),r.existsError("username")&&s.jsx("span",{id:"input-error-username",className:e("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:k(r.get("username"))}})]}))]})),s.jsxs("div",Object.assign({className:e("kcFormGroupClass","kcFormSettingClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",Object.assign({className:e("kcFormOptionsWrapperClass")},{children:s.jsx("span",{children:s.jsx("a",Object.assign({href:m.loginUrl},{children:a("backToLogin")}))})}))})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:s.jsx("input",{className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:g("doSubmit")})}))]}))]}))}))}export{h as default};

View File

@ -0,0 +1 @@
import{j as s,r as m}from"./index-6-NnS-wp.js";import{g as x,k as u,a as k}from"./KcPage-BgEBzPJc.js";function h(c){const{kcContext:e,i18n:r,doUseDefaultCss:t,Template:d,classes:l}=c,{kcClsx:a}=x({doUseDefaultCss:t,classes:l}),{msg:n,msgStr:i}=r,{url:w,messagesPerField:o,isAppInitiatedAction:p}=e;return s.jsx(d,Object.assign({kcContext:e,i18n:r,doUseDefaultCss:t,classes:l,displayMessage:!o.existsError("password","password-confirm"),headerNode:n("updatePasswordTitle")},{children:s.jsxs("form",Object.assign({id:"kc-passwd-update-form",className:a("kcFormClass"),action:w.loginAction,method:"post"},{children:[s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"password-new",className:a("kcLabelClass")},{children:n("passwordNew")}))})),s.jsxs("div",Object.assign({className:a("kcInputWrapperClass")},{children:[s.jsx(j,Object.assign({kcClsx:a,i18n:r,passwordInputId:"password-new"},{children:s.jsx("input",{type:"password",id:"password-new",name:"password-new",className:a("kcInputClass"),autoFocus:!0,autoComplete:"new-password","aria-invalid":o.existsError("password","password-confirm")})})),o.existsError("password")&&s.jsx("span",{id:"input-error-password",className:a("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:u(o.get("password"))}})]}))]})),s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"password-confirm",className:a("kcLabelClass")},{children:n("passwordConfirm")}))})),s.jsxs("div",Object.assign({className:a("kcInputWrapperClass")},{children:[s.jsx(j,Object.assign({kcClsx:a,i18n:r,passwordInputId:"password-confirm"},{children:s.jsx("input",{type:"password",id:"password-confirm",name:"password-confirm",className:a("kcInputClass"),autoFocus:!0,autoComplete:"new-password","aria-invalid":o.existsError("password","password-confirm")})})),o.existsError("password-confirm")&&s.jsx("span",{id:"input-error-password-confirm",className:a("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:u(o.get("password-confirm"))}})]}))]})),s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx(g,{kcClsx:a,i18n:r}),s.jsxs("div",Object.assign({id:"kc-form-buttons",className:a("kcFormButtonsClass")},{children:[s.jsx("input",{className:a("kcButtonClass","kcButtonPrimaryClass",!p&&"kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:i("doSubmit")}),p&&s.jsx("button",Object.assign({className:a("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),type:"submit",name:"cancel-aia",value:"true"},{children:n("doCancel")}))]}))]}))]}))}))}function g(c){const{kcClsx:e,i18n:r}=c,{msg:t}=r;return s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",Object.assign({className:e("kcFormOptionsWrapperClass")},{children:s.jsx("div",Object.assign({className:"checkbox"},{children:s.jsxs("label",{children:[s.jsx("input",{type:"checkbox",id:"logout-sessions",name:"logout-sessions",value:"on",defaultChecked:!0}),t("logoutOtherSessions")]})}))}))}))}function j(c){const{kcClsx:e,i18n:r,passwordInputId:t,children:d}=c,{msgStr:l}=r,[a,n]=m.useReducer(i=>!i,!1);return m.useEffect(()=>{const i=document.getElementById(t);k(i instanceof HTMLInputElement),i.type=a?"text":"password"},[a]),s.jsxs("div",Object.assign({className:e("kcInputGroup")},{children:[d,s.jsx("button",Object.assign({type:"button",className:e("kcFormPasswordVisibilityButtonClass"),"aria-label":l(a?"hidePassword":"showPassword"),"aria-controls":t,onClick:n},{children:s.jsx("i",{className:e(a?"kcFormPasswordVisibilityIconHide":"kcFormPasswordVisibilityIconShow"),"aria-hidden":!0})}))]}))}export{h as default};

View File

@ -0,0 +1 @@
import{r as b,j as s}from"./index-6-NnS-wp.js";import{g as f}from"./KcPage-BgEBzPJc.js";function F(c){const{kcContext:t,i18n:a,doUseDefaultCss:o,Template:n,classes:i,UserProfileFormFields:m,doMakeUserConfirmPassword:d}=c,{kcClsx:e}=f({doUseDefaultCss:o,classes:i}),{messagesPerField:u,url:C,isAppInitiatedAction:l}=t,{msg:r,msgStr:k}=a,[p,x]=b.useState(!1);return s.jsx(n,Object.assign({kcContext:t,i18n:a,doUseDefaultCss:o,classes:i,displayRequiredFields:!0,headerNode:r("loginProfileTitle"),displayMessage:u.exists("global")},{children:s.jsxs("form",Object.assign({id:"kc-update-profile-form",className:e("kcFormClass"),action:C.loginAction,method:"post"},{children:[s.jsx(m,{kcContext:t,i18n:a,kcClsx:e,onIsFormSubmittableValueChange:x,doMakeUserConfirmPassword:d}),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",{className:e("kcFormOptionsWrapperClass")})})),s.jsxs("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:[s.jsx("input",{disabled:!p,className:e("kcButtonClass","kcButtonPrimaryClass",!l&&"kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:k("doSubmit")}),l&&s.jsx("button",Object.assign({className:e("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),type:"submit",name:"cancel-aia",value:"true",formNoValidate:!0},{children:r("doCancel")}))]}))]}))]}))}))}export{F as default};

View File

@ -0,0 +1 @@
import{r as N,j as s}from"./index-6-NnS-wp.js";import{g as O,c as j}from"./KcPage-BgEBzPJc.js";function A(b){var t;const{kcContext:c,i18n:l,doUseDefaultCss:d,Template:h,classes:m}=b,{kcClsx:e}=O({doUseDefaultCss:d,classes:m}),{social:n,realm:i,url:u,usernameHidden:g,login:x,registrationDisabled:p,messagesPerField:o}=c,{msg:a,msgStr:k}=l,[C,v]=N.useState(!1);return s.jsx(h,Object.assign({kcContext:c,i18n:l,doUseDefaultCss:d,classes:m,displayMessage:!o.existsError("username"),displayInfo:i.password&&i.registrationAllowed&&!p,infoNode:s.jsx("div",Object.assign({id:"kc-registration"},{children:s.jsxs("span",{children:[a("noAccount"),s.jsx("a",Object.assign({tabIndex:6,href:u.registrationUrl},{children:a("doRegister")}))]})})),headerNode:a("doLogIn"),socialProvidersNode:s.jsx(s.Fragment,{children:i.password&&(n==null?void 0:n.providers)!==void 0&&n.providers.length!==0&&s.jsxs("div",Object.assign({id:"kc-social-providers",className:e("kcFormSocialAccountSectionClass")},{children:[s.jsx("hr",{}),s.jsx("h2",{children:a("identity-provider-login-label")}),s.jsx("ul",Object.assign({className:e("kcFormSocialAccountListClass",n.providers.length>3&&"kcFormSocialAccountListGridClass")},{children:n.providers.map((...[r,,f])=>s.jsx("li",{children:s.jsxs("a",Object.assign({id:`social-${r.alias}`,className:e("kcFormSocialAccountListButtonClass",f.length>3&&"kcFormSocialAccountGridItem"),type:"button",href:r.loginUrl},{children:[r.iconClasses&&s.jsx("i",{className:j(e("kcCommonLogoIdP"),r.iconClasses),"aria-hidden":"true"}),s.jsx("span",Object.assign({className:j(e("kcFormSocialAccountNameClass"),r.iconClasses&&"kc-social-icon-text")},{children:r.displayName}))]}))},r.alias))}))]}))})},{children:s.jsx("div",Object.assign({id:"kc-form"},{children:s.jsx("div",Object.assign({id:"kc-form-wrapper"},{children:i.password&&s.jsxs("form",Object.assign({id:"kc-form-login",onSubmit:()=>(v(!0),!0),action:u.loginAction,method:"post"},{children:[!g&&s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("label",Object.assign({htmlFor:"username",className:e("kcLabelClass")},{children:i.loginWithEmailAllowed?i.registrationEmailAsUsername?a("email"):a("usernameOrEmail"):a("username")})),s.jsx("input",{tabIndex:2,id:"username",className:e("kcInputClass"),name:"username",defaultValue:(t=x.username)!==null&&t!==void 0?t:"",type:"text",autoFocus:!0,autoComplete:"off","aria-invalid":o.existsError("username")}),o.existsError("username")&&s.jsx("span",Object.assign({id:"input-error",className:e("kcInputErrorMessageClass"),"aria-live":"polite"},{children:o.getFirstError("username")}))]})),s.jsx("div",Object.assign({className:e("kcFormGroupClass","kcFormSettingClass")},{children:s.jsx("div",Object.assign({id:"kc-form-options"},{children:i.rememberMe&&!g&&s.jsx("div",Object.assign({className:"checkbox"},{children:s.jsxs("label",{children:[s.jsx("input",{tabIndex:3,id:"rememberMe",name:"rememberMe",type:"checkbox",defaultChecked:!!x.rememberMe})," ",a("rememberMe")]})}))}))})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:e("kcFormGroupClass")},{children:s.jsx("input",{tabIndex:4,disabled:C,className:e("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),name:"login",id:"kc-login",type:"submit",value:k("doLogIn")})}))]}))}))}))}))}export{A as default};

View File

@ -0,0 +1 @@
import{j as e}from"./index-6-NnS-wp.js";function f(r){var i;const{kcContext:t,i18n:o,doUseDefaultCss:a,Template:l,classes:c}=r,{msg:s}=o,{url:u,user:n}=t;return e.jsx(l,Object.assign({kcContext:t,i18n:o,doUseDefaultCss:a,classes:c,displayInfo:!0,headerNode:s("emailVerifyTitle"),infoNode:e.jsxs("p",Object.assign({className:"instruction"},{children:[s("emailVerifyInstruction2"),e.jsx("br",{}),e.jsx("a",Object.assign({href:u.loginAction},{children:s("doClickHere")}))," ",s("emailVerifyInstruction3")]}))},{children:e.jsx("p",Object.assign({className:"instruction"},{children:s("emailVerifyInstruction1",(i=n==null?void 0:n.email)!==null&&i!==void 0?i:"")}))}))}export{f as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as j}from"./KcPage-BgEBzPJc.js";function g(o){const{kcContext:l,i18n:t,doUseDefaultCss:i,Template:m,classes:n}=o,{kcClsx:a}=j({doUseDefaultCss:i,classes:n}),{url:d,x509:e}=l,{msg:c,msgStr:r}=t;return s.jsx(m,Object.assign({kcContext:l,i18n:t,doUseDefaultCss:i,classes:n,headerNode:c("doLogIn")},{children:s.jsxs("form",Object.assign({id:"kc-x509-login-info",className:a("kcFormClass"),action:d.loginAction,method:"post"},{children:[s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"certificate_subjectDN",className:a("kcLabelClass")},{children:c("clientCertificate")}))})),e.formData.subjectDN?s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({id:"certificate_subjectDN",className:a("kcLabelClass")},{children:e.formData.subjectDN}))})):s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({id:"certificate_subjectDN",className:a("kcLabelClass")},{children:c("noCertificate")}))}))]})),s.jsx("div",Object.assign({className:a("kcFormGroupClass")},{children:e.formData.isUserEnabled&&s.jsxs(s.Fragment,{children:[s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({htmlFor:"username",className:a("kcLabelClass")},{children:c("doX509Login")}))})),s.jsx("div",Object.assign({className:a("kcLabelWrapperClass")},{children:s.jsx("label",Object.assign({id:"username",className:a("kcLabelClass")},{children:e.formData.username}))}))]})})),s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:a("kcFormOptionsClass")},{children:s.jsx("div",{className:a("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:a("kcFormButtonsClass")},{children:s.jsxs("div",Object.assign({className:a("kcFormButtonsWrapperClass")},{children:[s.jsx("input",{className:a("kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),name:"login",id:"kc-login",type:"submit",value:r("doContinue")}),e.formData.isUserEnabled&&s.jsx("input",{className:a("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),name:"cancel",id:"kc-cancel",type:"submit",value:r("doIgnore")})]}))}))]}))]}))}))}export{g as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g}from"./KcPage-BgEBzPJc.js";function p(l){const{kcContext:t,i18n:i,doUseDefaultCss:n,Template:m,classes:c}=l,{kcClsx:o}=g({doUseDefaultCss:n,classes:c}),{url:d,client:a,logoutConfirm:r}=t,{msg:e,msgStr:u}=i;return s.jsx(m,Object.assign({kcContext:t,i18n:i,doUseDefaultCss:n,classes:c,headerNode:e("logoutConfirmTitle")},{children:s.jsxs("div",Object.assign({id:"kc-logout-confirm",className:"content-area"},{children:[s.jsx("p",Object.assign({className:"instruction"},{children:e("logoutConfirmHeader")})),s.jsxs("form",Object.assign({className:"form-actions",action:d.logoutConfirmAction,method:"POST"},{children:[s.jsx("input",{type:"hidden",name:"session_code",value:r.code}),s.jsxs("div",Object.assign({className:o("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options"},{children:s.jsx("div",{className:o("kcFormOptionsWrapperClass")})})),s.jsx("div",Object.assign({id:"kc-form-buttons",className:o("kcFormGroupClass")},{children:s.jsx("input",{tabIndex:4,className:o("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),name:"confirmLogout",id:"kc-logout",type:"submit",value:u("doLogout")})}))]}))]})),s.jsx("div",Object.assign({id:"kc-info-message"},{children:!r.skipLink&&a.baseUrl&&s.jsx("p",{children:s.jsx("a",Object.assign({href:a.baseUrl},{children:e("backToApplication")}))})}))]}))}))}export{p as default};

View File

@ -0,0 +1 @@
import{r as C,j as s}from"./index-6-NnS-wp.js";import{g as F,c as T,k as B}from"./KcPage-BgEBzPJc.js";function P(l){const{kcContext:c,i18n:e,doUseDefaultCss:t,Template:o,classes:i,UserProfileFormFields:r,doMakeUserConfirmPassword:d}=l,{kcClsx:a}=F({doUseDefaultCss:t,classes:i}),{messageHeader:p,url:g,messagesPerField:u,recaptchaRequired:k,recaptchaVisible:j,recaptchaSiteKey:x,recaptchaAction:n,termsAcceptanceRequired:b}=c,{msg:m,msgStr:f,advancedMsg:N}=e,[O,A]=C.useState(!1),[h,v]=C.useState(!1);return s.jsx(o,Object.assign({kcContext:c,i18n:e,doUseDefaultCss:t,classes:i,headerNode:p!==void 0?N(p):m("registerTitle"),displayMessage:u.exists("global"),displayRequiredFields:!0},{children:s.jsxs("form",Object.assign({id:"kc-register-form",className:a("kcFormClass"),action:g.registrationAction,method:"post"},{children:[s.jsx(r,{kcContext:c,i18n:e,kcClsx:a,onIsFormSubmittableValueChange:A,doMakeUserConfirmPassword:d}),b&&s.jsx(y,{i18n:e,kcClsx:a,messagesPerField:u,areTermsAccepted:h,onAreTermsAcceptedValueChange:v}),k&&(j||n===void 0)&&s.jsx("div",Object.assign({className:"form-group"},{children:s.jsx("div",Object.assign({className:a("kcInputWrapperClass")},{children:s.jsx("div",{className:"g-recaptcha","data-size":"compact","data-sitekey":x,"data-action":n})}))})),s.jsxs("div",Object.assign({className:a("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:a("kcFormOptionsClass")},{children:s.jsx("div",Object.assign({className:a("kcFormOptionsWrapperClass")},{children:s.jsx("span",{children:s.jsx("a",Object.assign({href:g.loginUrl},{children:m("backToLogin")}))})}))})),k&&!j&&n!==void 0?s.jsx("div",Object.assign({id:"kc-form-buttons",className:a("kcFormButtonsClass")},{children:s.jsx("button",Object.assign({className:T(a("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),"g-recaptcha"),"data-sitekey":x,"data-callback":()=>{document.getElementById("kc-register-form").submit()},"data-action":n,type:"submit"},{children:m("doRegister")}))})):s.jsx("div",Object.assign({id:"kc-form-buttons",className:a("kcFormButtonsClass")},{children:s.jsx("input",{disabled:!O||b&&!h,className:a("kcButtonClass","kcButtonPrimaryClass","kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:f("doRegister")})}))]}))]}))}))}function y(l){const{i18n:c,kcClsx:e,messagesPerField:t,areTermsAccepted:o,onAreTermsAcceptedValueChange:i}=l,{msg:r}=c;return s.jsxs(s.Fragment,{children:[s.jsx("div",Object.assign({className:"form-group"},{children:s.jsxs("div",Object.assign({className:e("kcInputWrapperClass")},{children:[r("termsTitle"),s.jsx("div",Object.assign({id:"kc-registration-terms-text"},{children:r("termsText")}))]}))})),s.jsxs("div",Object.assign({className:"form-group"},{children:[s.jsxs("div",Object.assign({className:e("kcLabelWrapperClass")},{children:[s.jsx("input",{type:"checkbox",id:"termsAccepted",name:"termsAccepted",className:e("kcCheckboxInputClass"),checked:o,onChange:d=>i(d.target.checked),"aria-invalid":t.existsError("termsAccepted")}),s.jsx("label",Object.assign({htmlFor:"termsAccepted",className:e("kcLabelClass")},{children:r("acceptTerms")}))]})),t.existsError("termsAccepted")&&s.jsx("div",Object.assign({className:e("kcLabelWrapperClass")},{children:s.jsx("span",{id:"input-error-terms-accepted",className:e("kcInputErrorMessageClass"),"aria-live":"polite",dangerouslySetInnerHTML:{__html:B(t.get("termsAccepted"))}})}))]}))]})}export{P as default};

View File

@ -0,0 +1 @@
import{r as o,j as e}from"./index-6-NnS-wp.js";function x(r){const{kcContext:a,i18n:l,doUseDefaultCss:i,Template:m,classes:u}=r,{msgStr:d,msg:t}=l,{samlPost:s}=a,[n,p]=o.useState(null);return o.useEffect(()=>{if(n!==null){if(s.url==="#"){alert("In a real Keycloak the user would be redirected immediately");return}n.submit()}},[n]),e.jsxs(m,Object.assign({kcContext:a,i18n:l,doUseDefaultCss:i,classes:u,headerNode:t("saml.post-form.title")},{children:[e.jsx("p",{children:t("saml.post-form.message")}),e.jsxs("form",Object.assign({name:"saml-post-binding",method:"post",action:s.url,ref:p},{children:[s.SAMLRequest&&e.jsx("input",{type:"hidden",name:"SAMLRequest",value:s.SAMLRequest}),s.SAMLResponse&&e.jsx("input",{type:"hidden",name:"SAMLResponse",value:s.SAMLResponse}),s.relayState&&e.jsx("input",{type:"hidden",name:"RelayState",value:s.relayState}),e.jsxs("noscript",{children:[e.jsx("p",{children:t("saml.post-form.js-disabled")}),e.jsx("input",{type:"submit",value:d("doContinue")})]})]}))]}))}export{x as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as j}from"./KcPage-BgEBzPJc.js";function g(o){const{kcContext:c,i18n:a,doUseDefaultCss:l,Template:m,classes:i}=o,{url:r,auth:d}=c,{kcClsx:e}=j({doUseDefaultCss:l,classes:i}),{msg:h,advancedMsg:n}=a;return s.jsx(m,Object.assign({kcContext:c,i18n:a,doUseDefaultCss:l,classes:i,displayInfo:!1,headerNode:h("loginChooseAuthenticator")},{children:s.jsx("form",Object.assign({id:"kc-select-credential-form",className:e("kcFormClass"),action:r.loginAction,method:"post"},{children:s.jsx("div",Object.assign({className:e("kcSelectAuthListClass")},{children:d.authenticationSelections.map((t,u)=>s.jsxs("button",Object.assign({className:e("kcSelectAuthListItemClass"),type:"submit",name:"authenticationExecution",value:t.authExecId},{children:[s.jsx("div",Object.assign({className:e("kcSelectAuthListItemIconClass")},{children:s.jsx("i",{className:e("kcSelectAuthListItemIconPropertyClass",t.iconCssClass)})})),s.jsxs("div",Object.assign({className:e("kcSelectAuthListItemBodyClass")},{children:[s.jsx("div",Object.assign({className:e("kcSelectAuthListItemHeadingClass")},{children:n(t.displayName)})),s.jsx("div",Object.assign({className:e("kcSelectAuthListItemDescriptionClass")},{children:n(t.helpText)}))]})),s.jsx("div",{className:e("kcSelectAuthListItemFillClass")}),s.jsx("div",Object.assign({className:e("kcSelectAuthListItemArrowClass")},{children:s.jsx("i",{className:e("kcSelectAuthListItemArrowIconClass")})}))]}),u))}))}))}))}export{g as default};

View File

@ -0,0 +1 @@
import{j as s}from"./index-6-NnS-wp.js";import{g as u}from"./KcPage-BgEBzPJc.js";function k(i){const{kcContext:t,i18n:e,doUseDefaultCss:a,Template:r,classes:c}=i,{kcClsx:n}=u({doUseDefaultCss:a,classes:c}),{msg:l,msgStr:o}=e,{url:m}=t;return s.jsxs(r,Object.assign({kcContext:t,i18n:e,doUseDefaultCss:a,classes:c,displayMessage:!1,headerNode:l("termsTitle")},{children:[s.jsx("div",Object.assign({id:"kc-terms-text"},{children:l("termsText")})),s.jsxs("form",Object.assign({className:"form-actions",action:m.loginAction,method:"POST"},{children:[s.jsx("input",{className:n("kcButtonClass","kcButtonClass","kcButtonClass","kcButtonPrimaryClass","kcButtonLargeClass"),name:"accept",id:"kc-accept",type:"submit",value:o("doAccept")}),s.jsx("input",{className:n("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),name:"cancel",id:"kc-decline",type:"submit",value:o("doDecline")})]})),s.jsx("div",{className:"clearfix"})]}))}export{k as default};

View File

@ -0,0 +1 @@
import{r as j,j as s}from"./index-6-NnS-wp.js";import{g as b}from"./KcPage-BgEBzPJc.js";function O(i){const{kcContext:t,i18n:a,doUseDefaultCss:o,Template:r,classes:c,UserProfileFormFields:m,doMakeUserConfirmPassword:d}=i,{kcClsx:e}=b({doUseDefaultCss:o,classes:c}),{msg:l,msgStr:u}=a,[k,p]=j.useState(!1),{url:x,messagesPerField:C,isAppInitiatedAction:n}=t;return s.jsx(r,Object.assign({kcContext:t,i18n:a,doUseDefaultCss:o,classes:c,displayMessage:C.exists("global"),displayRequiredFields:!0,headerNode:l("updateEmailTitle")},{children:s.jsxs("form",Object.assign({id:"kc-update-email-form",className:e("kcFormClass"),action:x.loginAction,method:"post"},{children:[s.jsx(m,{kcContext:t,i18n:a,kcClsx:e,onIsFormSubmittableValueChange:p,doMakeUserConfirmPassword:d}),s.jsxs("div",Object.assign({className:e("kcFormGroupClass")},{children:[s.jsx("div",Object.assign({id:"kc-form-options",className:e("kcFormOptionsClass")},{children:s.jsx("div",{className:e("kcFormOptionsWrapperClass")})})),s.jsx(g,{kcClsx:e,i18n:a}),s.jsxs("div",Object.assign({id:"kc-form-buttons",className:e("kcFormButtonsClass")},{children:[s.jsx("input",{disabled:!k,className:e("kcButtonClass","kcButtonPrimaryClass",n&&"kcButtonBlockClass","kcButtonLargeClass"),type:"submit",value:u("doSubmit")}),n&&s.jsx("button",Object.assign({className:e("kcButtonClass","kcButtonDefaultClass","kcButtonLargeClass"),type:"submit",name:"cancel-aia",value:"true"},{children:l("doCancel")}))]}))]}))]}))}))}function g(i){const{kcClsx:t,i18n:a}=i,{msg:o}=a;return s.jsx("div",Object.assign({id:"kc-form-options",className:t("kcFormOptionsClass")},{children:s.jsx("div",Object.assign({className:t("kcFormOptionsWrapperClass")},{children:s.jsx("div",Object.assign({className:"checkbox"},{children:s.jsxs("label",{children:[s.jsx("input",{type:"checkbox",id:"logout-sessions",name:"logout-sessions",value:"on",defaultChecked:!0}),o("logoutOtherSessions")]})}))}))}))}export{O as default};

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More