Merge branch 'web/config-provider-2-tenant' into web/config-provider-2a-branded
* web/config-provider-2-tenant: web: prettier still having opinions. blueprints: improve file change handler (#7813) web/user: fix search not updating app (#7825) web: bump the storybook group in /web with 5 updates (#7819) core: compile backend translations (#7827) translate: Updates for file locale/en/LC_MESSAGES/django.po in de (#7812) core: bump github.com/go-openapi/strfmt from 0.21.8 to 0.21.9 (#7814) ci: bump actions/stale from 8 to 9 (#7815) web: bump the wdio group in /tests/wdio with 1 update (#7816) translate: Updates for file web/xliff/en.xlf in zh_CN (#7820) web: bump the sentry group in /web with 2 updates (#7817) web: bump vite-tsconfig-paths from 4.2.1 to 4.2.2 in /web (#7818) translate: Updates for file web/xliff/en.xlf in zh-Hans (#7821) translate: Updates for file locale/en/LC_MESSAGES/django.po in zh-Hans (#7822) translate: Updates for file locale/en/LC_MESSAGES/django.po in zh_CN (#7823) web: bump typescript from 5.3.2 to 5.3.3 in /web (#7806) website: bump typescript from 5.3.2 to 5.3.3 in /website (#7807) web: bump typescript from 5.3.2 to 5.3.3 in /tests/wdio (#7808) core: bump goauthentik.io/api/v3 from 3.2023104.1 to 3.2023104.2 (#7809) ci: bump actions/setup-go from 4 to 5
This commit is contained in:
3954
web/package-lock.json
generated
3954
web/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -45,8 +45,8 @@
|
||||
"@open-wc/lit-helpers": "^0.6.0",
|
||||
"@patternfly/elements": "^2.4.0",
|
||||
"@patternfly/patternfly": "^4.224.2",
|
||||
"@sentry/browser": "^7.85.0",
|
||||
"@sentry/tracing": "^7.85.0",
|
||||
"@sentry/browser": "^7.86.0",
|
||||
"@sentry/tracing": "^7.86.0",
|
||||
"@webcomponents/webcomponentsjs": "^2.8.0",
|
||||
"base64-js": "^1.5.1",
|
||||
"chart.js": "^4.4.1",
|
||||
@ -82,11 +82,13 @@
|
||||
"@rollup/plugin-replace": "^5.0.5",
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@rollup/plugin-typescript": "^11.1.5",
|
||||
"@storybook/addon-essentials": "^7.5.3",
|
||||
"@storybook/addon-links": "^7.5.3",
|
||||
"@storybook/blocks": "^7.1.1",
|
||||
"@storybook/web-components": "^7.5.3",
|
||||
"@storybook/web-components-vite": "^7.5.3",
|
||||
"@storybook/addon-essentials": "^7.6.4",
|
||||
"@storybook/addon-links": "^7.6.4",
|
||||
"@storybook/api": "^7.6.4",
|
||||
"@storybook/blocks": "^7.6.4",
|
||||
"@storybook/manager-api": "^7.6.4",
|
||||
"@storybook/web-components-vite": "^7.6.4",
|
||||
"@storybook/web-components": "^7.6.4",
|
||||
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
||||
"@types/chart.js": "^2.9.41",
|
||||
"@types/codemirror": "5.60.15",
|
||||
@ -113,13 +115,13 @@
|
||||
"rollup-plugin-copy": "^3.5.0",
|
||||
"rollup-plugin-cssimport": "^1.0.3",
|
||||
"rollup-plugin-postcss-lit": "^2.1.0",
|
||||
"storybook": "^7.5.3",
|
||||
"storybook": "^7.6.4",
|
||||
"storybook-addon-mock": "^4.3.0",
|
||||
"ts-lit-plugin": "^2.0.1",
|
||||
"tslib": "^2.6.2",
|
||||
"turnstile-types": "^1.1.3",
|
||||
"typescript": "^5.3.2",
|
||||
"vite-tsconfig-paths": "^4.2.1"
|
||||
"typescript": "^5.3.3",
|
||||
"vite-tsconfig-paths": "^4.2.2"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/darwin-arm64": "^0.19.8",
|
||||
|
||||
@ -92,7 +92,7 @@ export class ApplicationWizardApplicationDetails extends WithBrandConfig(BasePro
|
||||
.options=${searchModeOptions}
|
||||
.value=${provider?.searchMode}
|
||||
help=${msg(
|
||||
"Configure how the outpost queries the core authentik server's users."
|
||||
"Configure how the outpost queries the core authentik server's users.",
|
||||
)}
|
||||
>
|
||||
</ak-radio-input>
|
||||
@ -115,7 +115,7 @@ export class ApplicationWizardApplicationDetails extends WithBrandConfig(BasePro
|
||||
value="${first(provider?.baseDn, "DC=ldap,DC=goauthentik,DC=io")}"
|
||||
.errorMessages=${errors?.baseDn ?? []}
|
||||
help=${msg(
|
||||
"LDAP DN under which bind requests and search requests can be made."
|
||||
"LDAP DN under which bind requests and search requests can be made.",
|
||||
)}
|
||||
>
|
||||
</ak-text-input>
|
||||
|
||||
@ -59,7 +59,7 @@ export class ApplicationWizardAuthenticationByRadius extends WithBrandConfig(Bas
|
||||
.errorMessages=${errors?.sharedSecret ?? []}
|
||||
value=${first(
|
||||
provider?.sharedSecret,
|
||||
randomString(128, ascii_letters + digits)
|
||||
randomString(128, ascii_letters + digits),
|
||||
)}
|
||||
required
|
||||
></ak-text-input>
|
||||
|
||||
@ -96,7 +96,7 @@ export class LibraryApplication extends AKElement {
|
||||
this.application.metaPublisher !== "" ||
|
||||
this.application.metaDescription !== "";
|
||||
|
||||
const classes = { "pf-m-selectable pf-m-selected": this.selected };
|
||||
const classes = { "pf-m-selectable": this.selected, "pf-m-selected": this.selected };
|
||||
const styles = this.background ? { background: this.background } : {};
|
||||
|
||||
return html` <div
|
||||
|
||||
@ -38,7 +38,9 @@ export class LibraryPageApplicationList extends AKElement {
|
||||
];
|
||||
|
||||
@property({ attribute: false })
|
||||
apps: Application[] = [];
|
||||
set apps(value: Application[]) {
|
||||
this.fuse.setCollection(value);
|
||||
}
|
||||
|
||||
@property()
|
||||
query = getURLParam<string | undefined>("search", undefined);
|
||||
@ -63,7 +65,7 @@ export class LibraryPageApplicationList extends AKElement {
|
||||
shouldSort: true,
|
||||
ignoreFieldNorm: true,
|
||||
useExtendedSearch: true,
|
||||
threshold: 0.5,
|
||||
threshold: 0.3,
|
||||
});
|
||||
}
|
||||
|
||||
@ -77,7 +79,6 @@ export class LibraryPageApplicationList extends AKElement {
|
||||
|
||||
connectedCallback() {
|
||||
super.connectedCallback();
|
||||
this.fuse.setCollection(this.apps);
|
||||
if (!this.query) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0"?><xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<?xml version="1.0" ?><xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file target-language="zh-Hans" source-language="en" original="lit-localize-inputs" datatype="plaintext">
|
||||
<body>
|
||||
<trans-unit id="s4caed5b7a7e5d89b">
|
||||
@ -613,9 +613,9 @@
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="saa0e2675da69651b">
|
||||
<source>The URL "<x id="0" equiv-text="${this.url}"/>" was not found.</source>
|
||||
<target>未找到 URL "
|
||||
<x id="0" equiv-text="${this.url}"/>"。</target>
|
||||
<source>The URL "<x id="0" equiv-text="${this.url}"/>" was not found.</source>
|
||||
<target>未找到 URL "
|
||||
<x id="0" equiv-text="${this.url}"/>"。</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s58cd9c2fe836d9c6">
|
||||
@ -1057,8 +1057,8 @@
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="sa8384c9c26731f83">
|
||||
<source>To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have.</source>
|
||||
<target>要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。</target>
|
||||
<source>To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have.</source>
|
||||
<target>要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s55787f4dfcdce52b">
|
||||
@ -1799,8 +1799,8 @@
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="sa90b7809586c35ce">
|
||||
<source>Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test".</source>
|
||||
<target>输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。</target>
|
||||
<source>Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test".</source>
|
||||
<target>输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s0410779cb47de312">
|
||||
@ -2988,8 +2988,8 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s76768bebabb7d543">
|
||||
<source>Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...'</source>
|
||||
<target>包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...'</target>
|
||||
<source>Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...'</source>
|
||||
<target>包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...'</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s026555347e589f0e">
|
||||
@ -3781,8 +3781,8 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s7b1fba26d245cb1c">
|
||||
<source>When using an external logging solution for archiving, this can be set to "minutes=5".</source>
|
||||
<target>使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。</target>
|
||||
<source>When using an external logging solution for archiving, this can be set to "minutes=5".</source>
|
||||
<target>使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s44536d20bb5c8257">
|
||||
@ -3791,8 +3791,8 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s3bb51cabb02b997e">
|
||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
||||
<target>格式:"weeks=3;days=2;hours=3,seconds=2"。</target>
|
||||
<source>Format: "weeks=3;days=2;hours=3,seconds=2".</source>
|
||||
<target>格式:"weeks=3;days=2;hours=3,seconds=2"。</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s04bfd02201db5ab8">
|
||||
@ -3988,10 +3988,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="sa95a538bfbb86111">
|
||||
<source>Are you sure you want to update <x id="0" equiv-text="${this.objectLabel}"/> "<x id="1" equiv-text="${this.obj?.name}"/>"?</source>
|
||||
<source>Are you sure you want to update <x id="0" equiv-text="${this.objectLabel}"/> "<x id="1" equiv-text="${this.obj?.name}"/>"?</source>
|
||||
<target>您确定要更新
|
||||
<x id="0" equiv-text="${this.objectLabel}"/>"
|
||||
<x id="1" equiv-text="${this.obj?.name}"/>" 吗?</target>
|
||||
<x id="0" equiv-text="${this.objectLabel}"/>"
|
||||
<x id="1" equiv-text="${this.obj?.name}"/>" 吗?</target>
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="sc92d7cfb6ee1fec6">
|
||||
@ -5077,7 +5077,7 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="sdf1d8edef27236f0">
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<source>A "roaming" authenticator, like a YubiKey</source>
|
||||
<target>像 YubiKey 这样的“漫游”身份验证器</target>
|
||||
|
||||
</trans-unit>
|
||||
@ -5412,10 +5412,10 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s2d5f69929bb7221d">
|
||||
<source><x id="0" equiv-text="${prompt.name}"/> ("<x id="1" equiv-text="${prompt.fieldKey}"/>", of type <x id="2" equiv-text="${prompt.type}"/>)</source>
|
||||
<source><x id="0" equiv-text="${prompt.name}"/> ("<x id="1" equiv-text="${prompt.fieldKey}"/>", of type <x id="2" equiv-text="${prompt.type}"/>)</source>
|
||||
<target>
|
||||
<x id="0" equiv-text="${prompt.name}"/>("
|
||||
<x id="1" equiv-text="${prompt.fieldKey}"/>",类型为
|
||||
<x id="0" equiv-text="${prompt.name}"/>("
|
||||
<x id="1" equiv-text="${prompt.fieldKey}"/>",类型为
|
||||
<x id="2" equiv-text="${prompt.type}"/>)</target>
|
||||
|
||||
</trans-unit>
|
||||
@ -5464,7 +5464,7 @@ doesn't pass when either or both of the selected options are equal or above the
|
||||
|
||||
</trans-unit>
|
||||
<trans-unit id="s1608b2f94fa0dbd4">
|
||||
<source>If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here.</source>
|
||||
<source>If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here.</source>
|
||||
<target>如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。</target>
|
||||
|
||||
</trans-unit>
|
||||
@ -7970,7 +7970,7 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<target>成功创建用户并添加到组 <x id="0" equiv-text="${this.group.name}"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s824e0943a7104668">
|
||||
<source>This user will be added to the group "<x id="0" equiv-text="${this.targetGroup.name}"/>".</source>
|
||||
<source>This user will be added to the group "<x id="0" equiv-text="${this.targetGroup.name}"/>".</source>
|
||||
<target>此用户将会被添加到组 &quot;<x id="0" equiv-text="${this.targetGroup.name}"/>&quot;。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s62e7f6ed7d9cb3ca">
|
||||
@ -7983,52 +7983,68 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="scda8dc24b561e205">
|
||||
<source>There was an error in the application.</source>
|
||||
<target>应用程序中存在一个错误。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdaca9c2c0361ed3a">
|
||||
<source>Review the application.</source>
|
||||
<target>检查此应用程序。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb50000a8fada5672">
|
||||
<source>There was an error in the provider.</source>
|
||||
<target>提供程序中存在一个错误。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s21f95eaf151d4ce3">
|
||||
<source>Review the provider.</source>
|
||||
<target>检查此提供程序。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9fd39a5cb20b4e61">
|
||||
<source>There was an error</source>
|
||||
<target>存在一个错误</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7a6b3453209e1066">
|
||||
<source>There was an error creating the application, but no error message was sent. Please review the server logs.</source>
|
||||
<target>创建应用程序时存在一个错误,但未发送错误消息。请检查服务器日志。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1a711c19cda48375">
|
||||
<source>Configure LDAP Provider</source>
|
||||
<target>配置 LDAP 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9368e965b5c292ab">
|
||||
<source>Configure OAuth2/OpenId Provider</source>
|
||||
<target>配置 OAuth2/OpenID 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf5cbccdc6254c8dc">
|
||||
<source>Configure Proxy Provider</source>
|
||||
<target>配置代理提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf6d46bb442b77e91">
|
||||
<source>AdditionalScopes</source>
|
||||
<target>额外的作用域</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2c8c6f89089b31d4">
|
||||
<source>Configure Radius Provider</source>
|
||||
<target>配置 Radius 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfe906cde5dddc041">
|
||||
<source>Configure SAML Provider</source>
|
||||
<target>配置 SAML 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb3defbacd01ad972">
|
||||
<source>Property mappings used for user mapping.</source>
|
||||
<target>用于用户映射的属性映射。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7ccce0ec8d228db6">
|
||||
<source>Configure SCIM Provider</source>
|
||||
<target>配置 SCIM 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sd7728d2b6e1d25e9">
|
||||
<source>Property mappings used for group creation.</source>
|
||||
<target>用于创建组的属性映射。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7513372fe60f6387">
|
||||
<source>Event volume</source>
|
||||
<target>事件容量</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
</xliff>
|
||||
@ -7619,14 +7619,6 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<source>Your application has been saved</source>
|
||||
<target>您的应用程序已保存</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf60f1e5b76897c93">
|
||||
<source>In the Application:</source>
|
||||
<target>在应用程序中:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7ce65cf482b7bff0">
|
||||
<source>In the Provider:</source>
|
||||
<target>在提供程序中:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s67d858051b34c38b">
|
||||
<source>Method's display Name.</source>
|
||||
<target>方法的显示名称。</target>
|
||||
@ -7988,6 +7980,70 @@ Bindings to groups/users are checked against the user of the event.</source>
|
||||
<trans-unit id="s52bdc80690a9a8dc">
|
||||
<source>When enabled, the stage will always accept the given user identifier and continue.</source>
|
||||
<target>启用时,此阶段总是会接受指定的用户 ID 并继续。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="scda8dc24b561e205">
|
||||
<source>There was an error in the application.</source>
|
||||
<target>应用程序中存在一个错误。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sdaca9c2c0361ed3a">
|
||||
<source>Review the application.</source>
|
||||
<target>检查此应用程序。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb50000a8fada5672">
|
||||
<source>There was an error in the provider.</source>
|
||||
<target>提供程序中存在一个错误。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s21f95eaf151d4ce3">
|
||||
<source>Review the provider.</source>
|
||||
<target>检查此提供程序。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9fd39a5cb20b4e61">
|
||||
<source>There was an error</source>
|
||||
<target>存在一个错误</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7a6b3453209e1066">
|
||||
<source>There was an error creating the application, but no error message was sent. Please review the server logs.</source>
|
||||
<target>创建应用程序时存在一个错误,但未发送错误消息。请检查服务器日志。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s1a711c19cda48375">
|
||||
<source>Configure LDAP Provider</source>
|
||||
<target>配置 LDAP 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s9368e965b5c292ab">
|
||||
<source>Configure OAuth2/OpenId Provider</source>
|
||||
<target>配置 OAuth2/OpenID 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf5cbccdc6254c8dc">
|
||||
<source>Configure Proxy Provider</source>
|
||||
<target>配置代理提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sf6d46bb442b77e91">
|
||||
<source>AdditionalScopes</source>
|
||||
<target>额外的作用域</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s2c8c6f89089b31d4">
|
||||
<source>Configure Radius Provider</source>
|
||||
<target>配置 Radius 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sfe906cde5dddc041">
|
||||
<source>Configure SAML Provider</source>
|
||||
<target>配置 SAML 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sb3defbacd01ad972">
|
||||
<source>Property mappings used for user mapping.</source>
|
||||
<target>用于用户映射的属性映射。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7ccce0ec8d228db6">
|
||||
<source>Configure SCIM Provider</source>
|
||||
<target>配置 SCIM 提供程序</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="sd7728d2b6e1d25e9">
|
||||
<source>Property mappings used for group creation.</source>
|
||||
<target>用于创建组的属性映射。</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="s7513372fe60f6387">
|
||||
<source>Event volume</source>
|
||||
<target>事件容量</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
||||
Reference in New Issue
Block a user