valtech-components 2.0.988 → 2.0.989
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/button/button.component.mjs +6 -3
- package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.component.mjs +229 -0
- package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.i18n.mjs +38 -0
- package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +519 -0
- package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.i18n.mjs +54 -0
- package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +406 -0
- package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.i18n.mjs +72 -0
- package/esm2022/lib/components/organisms/member-detail-modal/types.mjs +2 -0
- package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.mjs +231 -0
- package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.i18n.mjs +27 -0
- package/esm2022/lib/components/organisms/transfer-ownership-modal/types.mjs +2 -0
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +7 -1
- package/fesm2022/valtech-components.mjs +1543 -30
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/article/article.component.d.ts +1 -0
- package/lib/components/organisms/edit-org-modal/edit-org-modal.component.d.ts +49 -0
- package/lib/components/organisms/edit-org-modal/edit-org-modal.i18n.d.ts +7 -0
- package/lib/components/organisms/invite-member-modal/invite-member-modal.component.d.ts +74 -0
- package/lib/components/organisms/invite-member-modal/invite-member-modal.i18n.d.ts +7 -0
- package/lib/components/organisms/member-detail-modal/member-detail-modal.component.d.ts +67 -0
- package/lib/components/organisms/member-detail-modal/member-detail-modal.i18n.d.ts +7 -0
- package/lib/components/organisms/member-detail-modal/types.d.ts +17 -0
- package/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.d.ts +44 -0
- package/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.i18n.d.ts +8 -0
- package/lib/components/organisms/transfer-ownership-modal/types.d.ts +11 -0
- package/lib/components/types.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +6 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults i18n (es/en) embebidos en `val-invite-member-modal`. Auto-registrados
|
|
3
|
+
* en el constructor del componente si el consumer no proveyó el namespace
|
|
4
|
+
* (`InviteModal` por default). SOLO incluye las keys que el modal usa.
|
|
5
|
+
*/
|
|
6
|
+
export const INVITE_MEMBER_MODAL_I18N = {
|
|
7
|
+
es: {
|
|
8
|
+
title: 'Invitar miembro',
|
|
9
|
+
subtitle: 'Busca por handle o escribe un correo para invitar.',
|
|
10
|
+
searchPlaceholder: 'Handle (@usuario) o correo...',
|
|
11
|
+
searchingLabel: 'Buscando...',
|
|
12
|
+
noResults: 'No se encontraron usuarios.',
|
|
13
|
+
inviteByEmail: 'Invitar por correo a:',
|
|
14
|
+
sendInvite: 'Enviar invitación',
|
|
15
|
+
sending: 'Enviando...',
|
|
16
|
+
success: 'Invitación enviada.',
|
|
17
|
+
successPlural: 'Invitaciones enviadas.',
|
|
18
|
+
close: 'Cerrar',
|
|
19
|
+
errorInvalid: 'Ingresa un handle o correo válido.',
|
|
20
|
+
sendSelected: 'Invitar seleccionados',
|
|
21
|
+
selectedLabel: 'Seleccionados',
|
|
22
|
+
roleLabel: 'Rol',
|
|
23
|
+
roleViewer: 'Visor',
|
|
24
|
+
roleViewerDesc: 'Solo lectura',
|
|
25
|
+
roleEditor: 'Editor',
|
|
26
|
+
roleEditorDesc: 'Puede editar contenido',
|
|
27
|
+
roleAdmin: 'Administrador',
|
|
28
|
+
roleAdminDesc: 'Gestión completa',
|
|
29
|
+
},
|
|
30
|
+
en: {
|
|
31
|
+
title: 'Invite member',
|
|
32
|
+
subtitle: 'Search by handle or enter an email to invite.',
|
|
33
|
+
searchPlaceholder: 'Handle (@user) or email...',
|
|
34
|
+
searchingLabel: 'Searching...',
|
|
35
|
+
noResults: 'No users found.',
|
|
36
|
+
inviteByEmail: 'Invite by email:',
|
|
37
|
+
sendInvite: 'Send invitation',
|
|
38
|
+
sending: 'Sending...',
|
|
39
|
+
success: 'Invitation sent.',
|
|
40
|
+
successPlural: 'Invitations sent.',
|
|
41
|
+
close: 'Close',
|
|
42
|
+
errorInvalid: 'Enter a valid handle or email.',
|
|
43
|
+
sendSelected: 'Invite selected',
|
|
44
|
+
selectedLabel: 'Selected',
|
|
45
|
+
roleLabel: 'Role',
|
|
46
|
+
roleViewer: 'Viewer',
|
|
47
|
+
roleViewerDesc: 'Read only',
|
|
48
|
+
roleEditor: 'Editor',
|
|
49
|
+
roleEditorDesc: 'Can edit content',
|
|
50
|
+
roleAdmin: 'Admin',
|
|
51
|
+
roleAdminDesc: 'Full management',
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLW1lbWJlci1tb2RhbC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9pbnZpdGUtbWVtYmVyLW1vZGFsL2ludml0ZS1tZW1iZXItbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFCO0lBQ3hELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsUUFBUSxFQUFFLG9EQUFvRDtRQUM5RCxpQkFBaUIsRUFBRSwrQkFBK0I7UUFDbEQsY0FBYyxFQUFFLGFBQWE7UUFDN0IsU0FBUyxFQUFFLDZCQUE2QjtRQUN4QyxhQUFhLEVBQUUsdUJBQXVCO1FBQ3RDLFVBQVUsRUFBRSxtQkFBbUI7UUFDL0IsT0FBTyxFQUFFLGFBQWE7UUFDdEIsT0FBTyxFQUFFLHFCQUFxQjtRQUM5QixhQUFhLEVBQUUsd0JBQXdCO1FBQ3ZDLEtBQUssRUFBRSxRQUFRO1FBQ2YsWUFBWSxFQUFFLG9DQUFvQztRQUNsRCxZQUFZLEVBQUUsdUJBQXVCO1FBQ3JDLGFBQWEsRUFBRSxlQUFlO1FBQzlCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFVBQVUsRUFBRSxPQUFPO1FBQ25CLGNBQWMsRUFBRSxjQUFjO1FBQzlCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGNBQWMsRUFBRSx3QkFBd0I7UUFDeEMsU0FBUyxFQUFFLGVBQWU7UUFDMUIsYUFBYSxFQUFFLGtCQUFrQjtLQUNsQztJQUNELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxlQUFlO1FBQ3RCLFFBQVEsRUFBRSwrQ0FBK0M7UUFDekQsaUJBQWlCLEVBQUUsNEJBQTRCO1FBQy9DLGNBQWMsRUFBRSxjQUFjO1FBQzlCLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsYUFBYSxFQUFFLGtCQUFrQjtRQUNqQyxVQUFVLEVBQUUsaUJBQWlCO1FBQzdCLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsYUFBYSxFQUFFLG1CQUFtQjtRQUNsQyxLQUFLLEVBQUUsT0FBTztRQUNkLFlBQVksRUFBRSxnQ0FBZ0M7UUFDOUMsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixhQUFhLEVBQUUsVUFBVTtRQUN6QixTQUFTLEVBQUUsTUFBTTtRQUNqQixVQUFVLEVBQUUsUUFBUTtRQUNwQixjQUFjLEVBQUUsV0FBVztRQUMzQixVQUFVLEVBQUUsUUFBUTtRQUNwQixjQUFjLEVBQUUsa0JBQWtCO1FBQ2xDLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRSxpQkFBaUI7S0FDakM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1pbnZpdGUtbWVtYmVyLW1vZGFsYC4gQXV0by1yZWdpc3RyYWRvc1xuICogZW4gZWwgY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYEludml0ZU1vZGFsYCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgZWwgbW9kYWwgdXNhLlxuICovXG5leHBvcnQgY29uc3QgSU5WSVRFX01FTUJFUl9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnSW52aXRhciBtaWVtYnJvJyxcbiAgICBzdWJ0aXRsZTogJ0J1c2NhIHBvciBoYW5kbGUgbyBlc2NyaWJlIHVuIGNvcnJlbyBwYXJhIGludml0YXIuJyxcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ0hhbmRsZSAoQHVzdWFyaW8pIG8gY29ycmVvLi4uJyxcbiAgICBzZWFyY2hpbmdMYWJlbDogJ0J1c2NhbmRvLi4uJyxcbiAgICBub1Jlc3VsdHM6ICdObyBzZSBlbmNvbnRyYXJvbiB1c3Vhcmlvcy4nLFxuICAgIGludml0ZUJ5RW1haWw6ICdJbnZpdGFyIHBvciBjb3JyZW8gYTonLFxuICAgIHNlbmRJbnZpdGU6ICdFbnZpYXIgaW52aXRhY2nDs24nLFxuICAgIHNlbmRpbmc6ICdFbnZpYW5kby4uLicsXG4gICAgc3VjY2VzczogJ0ludml0YWNpw7NuIGVudmlhZGEuJyxcbiAgICBzdWNjZXNzUGx1cmFsOiAnSW52aXRhY2lvbmVzIGVudmlhZGFzLicsXG4gICAgY2xvc2U6ICdDZXJyYXInLFxuICAgIGVycm9ySW52YWxpZDogJ0luZ3Jlc2EgdW4gaGFuZGxlIG8gY29ycmVvIHbDoWxpZG8uJyxcbiAgICBzZW5kU2VsZWN0ZWQ6ICdJbnZpdGFyIHNlbGVjY2lvbmFkb3MnLFxuICAgIHNlbGVjdGVkTGFiZWw6ICdTZWxlY2Npb25hZG9zJyxcbiAgICByb2xlTGFiZWw6ICdSb2wnLFxuICAgIHJvbGVWaWV3ZXI6ICdWaXNvcicsXG4gICAgcm9sZVZpZXdlckRlc2M6ICdTb2xvIGxlY3R1cmEnLFxuICAgIHJvbGVFZGl0b3I6ICdFZGl0b3InLFxuICAgIHJvbGVFZGl0b3JEZXNjOiAnUHVlZGUgZWRpdGFyIGNvbnRlbmlkbycsXG4gICAgcm9sZUFkbWluOiAnQWRtaW5pc3RyYWRvcicsXG4gICAgcm9sZUFkbWluRGVzYzogJ0dlc3Rpw7NuIGNvbXBsZXRhJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0aXRsZTogJ0ludml0ZSBtZW1iZXInLFxuICAgIHN1YnRpdGxlOiAnU2VhcmNoIGJ5IGhhbmRsZSBvciBlbnRlciBhbiBlbWFpbCB0byBpbnZpdGUuJyxcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ0hhbmRsZSAoQHVzZXIpIG9yIGVtYWlsLi4uJyxcbiAgICBzZWFyY2hpbmdMYWJlbDogJ1NlYXJjaGluZy4uLicsXG4gICAgbm9SZXN1bHRzOiAnTm8gdXNlcnMgZm91bmQuJyxcbiAgICBpbnZpdGVCeUVtYWlsOiAnSW52aXRlIGJ5IGVtYWlsOicsXG4gICAgc2VuZEludml0ZTogJ1NlbmQgaW52aXRhdGlvbicsXG4gICAgc2VuZGluZzogJ1NlbmRpbmcuLi4nLFxuICAgIHN1Y2Nlc3M6ICdJbnZpdGF0aW9uIHNlbnQuJyxcbiAgICBzdWNjZXNzUGx1cmFsOiAnSW52aXRhdGlvbnMgc2VudC4nLFxuICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgIGVycm9ySW52YWxpZDogJ0VudGVyIGEgdmFsaWQgaGFuZGxlIG9yIGVtYWlsLicsXG4gICAgc2VuZFNlbGVjdGVkOiAnSW52aXRlIHNlbGVjdGVkJyxcbiAgICBzZWxlY3RlZExhYmVsOiAnU2VsZWN0ZWQnLFxuICAgIHJvbGVMYWJlbDogJ1JvbGUnLFxuICAgIHJvbGVWaWV3ZXI6ICdWaWV3ZXInLFxuICAgIHJvbGVWaWV3ZXJEZXNjOiAnUmVhZCBvbmx5JyxcbiAgICByb2xlRWRpdG9yOiAnRWRpdG9yJyxcbiAgICByb2xlRWRpdG9yRGVzYzogJ0NhbiBlZGl0IGNvbnRlbnQnLFxuICAgIHJvbGVBZG1pbjogJ0FkbWluJyxcbiAgICByb2xlQWRtaW5EZXNjOiAnRnVsbCBtYW5hZ2VtZW50JyxcbiAgfSxcbn07XG4iXX0=
|
package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
2
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
4
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonToolbar } from '@ionic/angular/standalone';
|
|
5
|
+
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
6
|
+
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
7
|
+
import { TextComponent } from '../../atoms/text/text.component';
|
|
8
|
+
import { TitleComponent } from '../../atoms/title/title.component';
|
|
9
|
+
import { UserAvatarComponent } from '../../atoms/user-avatar/user-avatar.component';
|
|
10
|
+
import { SearchSelectorComponent } from '../../molecules/select-input/select-input.component';
|
|
11
|
+
import { ComponentStates, InputType } from '../../types';
|
|
12
|
+
import { I18nService } from '../../../services/i18n';
|
|
13
|
+
import { OrgService } from '../../../services/org/org.service';
|
|
14
|
+
import { ToastService } from '../../../services/toast.service';
|
|
15
|
+
import { ValtechErrorService } from '../../../services/errors/valtech-error.service';
|
|
16
|
+
import { ConfirmationDialogService } from '../../../services/confirmation-dialog/confirmation-dialog.service';
|
|
17
|
+
import { MEMBER_DETAIL_MODAL_I18N } from './member-detail-modal.i18n';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
const DEFAULT_NAMESPACE = 'Settings.MemberDetail';
|
|
20
|
+
/**
|
|
21
|
+
* `val-member-detail-modal` — detalle de miembro de organización: perfil, rol y
|
|
22
|
+
* permisos. Promovido desde `showcase` bajo el proceso de ADR-021.
|
|
23
|
+
*
|
|
24
|
+
* Si `canManage` es true, permite cambiar el rol (vía `OrgService.changeMemberRole`)
|
|
25
|
+
* y quitar al miembro (vía `OrgService.removeMember`, con confirmación destructiva).
|
|
26
|
+
* Los permisos del rol actual se muestran cuando el consumer los provee en
|
|
27
|
+
* `availableRoles`.
|
|
28
|
+
*
|
|
29
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback
|
|
30
|
+
* `onChanged`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en
|
|
31
|
+
* `slot=end`, identidad en el body con `val-user-avatar`/`val-display`/`val-title`.
|
|
32
|
+
*
|
|
33
|
+
* Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace
|
|
34
|
+
* `Settings.MemberDetail`.
|
|
35
|
+
*/
|
|
36
|
+
export class MemberDetailModalComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.orgService = inject(OrgService);
|
|
39
|
+
this.toast = inject(ToastService);
|
|
40
|
+
this.errors = inject(ValtechErrorService);
|
|
41
|
+
this.i18n = inject(I18nService);
|
|
42
|
+
this.confirmDialog = inject(ConfirmationDialogService);
|
|
43
|
+
/** Organización a la que pertenece el miembro. */
|
|
44
|
+
this.orgId = '';
|
|
45
|
+
/** Si true, habilita cambio de rol y eliminación. */
|
|
46
|
+
this.canManage = false;
|
|
47
|
+
/** Si true, el miembro mostrado es el propio usuario. */
|
|
48
|
+
this.isSelf = false;
|
|
49
|
+
/** Roles disponibles (con permisos opcionales) para el selector de rol. */
|
|
50
|
+
this.availableRoles = [
|
|
51
|
+
{ id: 'viewer', name: 'viewer' },
|
|
52
|
+
{ id: 'editor', name: 'editor' },
|
|
53
|
+
{ id: 'admin', name: 'admin' },
|
|
54
|
+
];
|
|
55
|
+
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
56
|
+
this.i18nNamespace = DEFAULT_NAMESPACE;
|
|
57
|
+
this.working = signal(false);
|
|
58
|
+
this.currentRole = signal('');
|
|
59
|
+
this.roleControl = new FormControl('');
|
|
60
|
+
this.displayName = computed(() => this.member?.name || this.member?.handle || this.member?.email || '—');
|
|
61
|
+
this.subtitle = computed(() => {
|
|
62
|
+
if (this.isSelf)
|
|
63
|
+
return this.t('subtitleSelf');
|
|
64
|
+
if (this.member?.handle)
|
|
65
|
+
return '@' + this.member.handle;
|
|
66
|
+
return this.member?.email ?? '';
|
|
67
|
+
});
|
|
68
|
+
this.currentRoleLabel = computed(() => this.roleLabel(this.currentRole()));
|
|
69
|
+
this.permissionsForCurrentRole = computed(() => {
|
|
70
|
+
const roleId = this.currentRole();
|
|
71
|
+
const role = this.availableRoles.find(r => r.id === roleId || r.name === roleId);
|
|
72
|
+
return role?.permissions ?? [];
|
|
73
|
+
});
|
|
74
|
+
this.roleSelectProps = computed(() => ({
|
|
75
|
+
control: this.roleControl,
|
|
76
|
+
label: '',
|
|
77
|
+
placeholder: this.t('roleLabel'),
|
|
78
|
+
type: InputType.SELECT,
|
|
79
|
+
state: this.working() ? ComponentStates.DISABLED : ComponentStates.ENABLED,
|
|
80
|
+
options: this.availableRoles.map(r => ({
|
|
81
|
+
id: r.id,
|
|
82
|
+
name: this.roleLabel(r.name),
|
|
83
|
+
order: 0,
|
|
84
|
+
})),
|
|
85
|
+
}));
|
|
86
|
+
this.removeButtonProps = computed(() => ({
|
|
87
|
+
text: this.t('removeCta'),
|
|
88
|
+
token: 'member-remove',
|
|
89
|
+
color: 'danger',
|
|
90
|
+
fill: 'outline',
|
|
91
|
+
expand: 'block',
|
|
92
|
+
size: 'default',
|
|
93
|
+
type: 'button',
|
|
94
|
+
state: this.working() ? ComponentStates.WORKING : ComponentStates.ENABLED,
|
|
95
|
+
}));
|
|
96
|
+
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
|
|
97
|
+
this.i18n.registerContent(DEFAULT_NAMESPACE, MEMBER_DETAIL_MODAL_I18N);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
ngOnInit() {
|
|
101
|
+
if (!this.i18n.hasNamespace(this.i18nNamespace)) {
|
|
102
|
+
this.i18n.registerContent(this.i18nNamespace, MEMBER_DETAIL_MODAL_I18N);
|
|
103
|
+
}
|
|
104
|
+
const roleName = this.member?.roles?.[0] ?? '';
|
|
105
|
+
// Resolve the role name to its UUID -- the select uses r.id (UUID) as value
|
|
106
|
+
const matched = this.availableRoles.find(r => r.name === roleName);
|
|
107
|
+
const roleId = matched?.id ?? roleName;
|
|
108
|
+
this.currentRole.set(roleId);
|
|
109
|
+
this.roleControl.setValue(roleId, { emitEvent: false });
|
|
110
|
+
this.roleSub = this.roleControl.valueChanges.subscribe(v => {
|
|
111
|
+
if (v && v !== this.currentRole())
|
|
112
|
+
void this.onChangeRole(v);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
permissionLabel(perm) {
|
|
116
|
+
if (perm === '*:*')
|
|
117
|
+
return this.t('permAll');
|
|
118
|
+
const [resource, action] = perm.split(':');
|
|
119
|
+
const resKey = {
|
|
120
|
+
users: 'permUsers',
|
|
121
|
+
documents: 'permDocuments',
|
|
122
|
+
roles: 'permRoles',
|
|
123
|
+
media: 'permMedia',
|
|
124
|
+
templates: 'permTemplates',
|
|
125
|
+
'*': 'permAll',
|
|
126
|
+
};
|
|
127
|
+
const actKey = {
|
|
128
|
+
read: 'permRead',
|
|
129
|
+
write: 'permWrite',
|
|
130
|
+
create: 'permCreate',
|
|
131
|
+
delete: 'permDelete',
|
|
132
|
+
manage: 'permManage',
|
|
133
|
+
'*': 'permAll',
|
|
134
|
+
};
|
|
135
|
+
const res = this.t(resKey[resource] ?? resource);
|
|
136
|
+
const act = this.t(actKey[action] ?? action);
|
|
137
|
+
return `${res}: ${act}`;
|
|
138
|
+
}
|
|
139
|
+
async onChangeRole(newRoleId) {
|
|
140
|
+
if (this.working())
|
|
141
|
+
return;
|
|
142
|
+
this.working.set(true);
|
|
143
|
+
try {
|
|
144
|
+
await firstValueFrom(this.orgService.changeMemberRole(this.orgId, this.member.userId, newRoleId));
|
|
145
|
+
this.currentRole.set(newRoleId);
|
|
146
|
+
this.member = { ...this.member, roles: [newRoleId] };
|
|
147
|
+
this.toast.show({
|
|
148
|
+
message: this.t('changeRoleSuccess'),
|
|
149
|
+
color: 'dark',
|
|
150
|
+
duration: 3000,
|
|
151
|
+
});
|
|
152
|
+
this.onChanged?.();
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
this.roleControl.setValue(this.currentRole(), { emitEvent: false });
|
|
156
|
+
this.errors.handle(err, {
|
|
157
|
+
context: 'memberDetail.changeRole',
|
|
158
|
+
fallbackKey: 'changeRoleError',
|
|
159
|
+
i18nNamespace: this.i18nNamespace,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
this.working.set(false);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
async onRemove() {
|
|
167
|
+
if (this.working())
|
|
168
|
+
return;
|
|
169
|
+
const result = await this.confirmDialog.confirmDestructive({
|
|
170
|
+
title: this.t('removeConfirmTitle'),
|
|
171
|
+
message: this.t('removeConfirmMessage'),
|
|
172
|
+
confirmButton: { text: this.t('removeConfirmOk') },
|
|
173
|
+
cancelButton: { text: this.t('cancelCta') },
|
|
174
|
+
});
|
|
175
|
+
if (!result.confirmed)
|
|
176
|
+
return;
|
|
177
|
+
this.working.set(true);
|
|
178
|
+
try {
|
|
179
|
+
await firstValueFrom(this.orgService.removeMember(this.orgId, this.member.userId));
|
|
180
|
+
this.toast.show({
|
|
181
|
+
message: this.t('removeSuccess'),
|
|
182
|
+
color: 'dark',
|
|
183
|
+
duration: 3000,
|
|
184
|
+
});
|
|
185
|
+
this.onChanged?.();
|
|
186
|
+
this.dismiss();
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
this.errors.handle(err, {
|
|
190
|
+
context: 'memberDetail.remove',
|
|
191
|
+
fallbackKey: 'removeError',
|
|
192
|
+
i18nNamespace: this.i18nNamespace,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
finally {
|
|
196
|
+
this.working.set(false);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
roleLabel(roleIdOrName) {
|
|
200
|
+
// Try to find by id first (post-change, UUID stored), then by name (initial load)
|
|
201
|
+
const found = this.availableRoles.find(r => r.id === roleIdOrName || r.name === roleIdOrName);
|
|
202
|
+
const name = found?.name ?? roleIdOrName;
|
|
203
|
+
const keyMap = {
|
|
204
|
+
viewer: 'roleViewer',
|
|
205
|
+
editor: 'roleEditor',
|
|
206
|
+
admin: 'roleAdmin',
|
|
207
|
+
super_admin: 'roleSuperAdmin',
|
|
208
|
+
};
|
|
209
|
+
const key = keyMap[name] ?? name;
|
|
210
|
+
const label = this.t(key);
|
|
211
|
+
return label && !label.startsWith('[') ? label : name;
|
|
212
|
+
}
|
|
213
|
+
ngOnDestroy() {
|
|
214
|
+
this.roleSub?.unsubscribe();
|
|
215
|
+
}
|
|
216
|
+
dismiss() {
|
|
217
|
+
this._modalRef?.dismiss(null, 'cancel');
|
|
218
|
+
}
|
|
219
|
+
t(key) {
|
|
220
|
+
return this.i18n.t(key, this.i18nNamespace);
|
|
221
|
+
}
|
|
222
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemberDetailModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
223
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MemberDetailModalComponent, isStandalone: true, selector: "val-member-detail-modal", inputs: { _modalRef: "_modalRef", member: "member", orgId: "orgId", canManage: "canManage", isSelf: "isSelf", availableRoles: "availableRoles", onChanged: "onChanged", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
|
|
224
|
+
<ion-header>
|
|
225
|
+
<ion-toolbar>
|
|
226
|
+
<ion-buttons slot="end">
|
|
227
|
+
<ion-button fill="clear" color="dark" (click)="dismiss()">
|
|
228
|
+
<strong>{{ t('close') }}</strong>
|
|
229
|
+
</ion-button>
|
|
230
|
+
</ion-buttons>
|
|
231
|
+
</ion-toolbar>
|
|
232
|
+
</ion-header>
|
|
233
|
+
|
|
234
|
+
<ion-content class="ion-padding">
|
|
235
|
+
<div class="member-head">
|
|
236
|
+
<val-user-avatar
|
|
237
|
+
[props]="{
|
|
238
|
+
name: member.name,
|
|
239
|
+
avatarUrl: member.avatar,
|
|
240
|
+
email: member.email,
|
|
241
|
+
size: 'large',
|
|
242
|
+
}"
|
|
243
|
+
/>
|
|
244
|
+
<val-display [props]="{ content: displayName(), size: 'small', color: 'dark' }" />
|
|
245
|
+
<val-title
|
|
246
|
+
[props]="{
|
|
247
|
+
content: subtitle(),
|
|
248
|
+
size: 'large',
|
|
249
|
+
color: '',
|
|
250
|
+
bold: false,
|
|
251
|
+
}"
|
|
252
|
+
/>
|
|
253
|
+
</div>
|
|
254
|
+
|
|
255
|
+
<div class="role-section">
|
|
256
|
+
@if (canManage) {
|
|
257
|
+
<val-title
|
|
258
|
+
[props]="{
|
|
259
|
+
content: t('roleLabel'),
|
|
260
|
+
size: 'small',
|
|
261
|
+
color: 'dark',
|
|
262
|
+
bold: false,
|
|
263
|
+
}"
|
|
264
|
+
/>
|
|
265
|
+
<val-select-input data-testid="member-role-select" [props]="roleSelectProps()" />
|
|
266
|
+
<val-text
|
|
267
|
+
[props]="{
|
|
268
|
+
content: t('roleHint'),
|
|
269
|
+
size: 'small',
|
|
270
|
+
color: 'medium',
|
|
271
|
+
bold: false,
|
|
272
|
+
}"
|
|
273
|
+
/>
|
|
274
|
+
} @else {
|
|
275
|
+
<span class="role-readonly-label">{{ t('roleReadonly') }}</span>
|
|
276
|
+
<span class="member-role-badge">{{ currentRoleLabel() }}</span>
|
|
277
|
+
}
|
|
278
|
+
</div>
|
|
279
|
+
|
|
280
|
+
@if (permissionsForCurrentRole().length > 0) {
|
|
281
|
+
<div class="perms-section">
|
|
282
|
+
<span class="perms-label">{{ t('permissionsTitle') }}</span>
|
|
283
|
+
<div class="perms-list">
|
|
284
|
+
@for (perm of permissionsForCurrentRole(); track perm) {
|
|
285
|
+
<span class="perm-chip">{{ permissionLabel(perm) }}</span>
|
|
286
|
+
}
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
@if (canManage) {
|
|
292
|
+
<div class="remove-section">
|
|
293
|
+
<val-button [props]="removeButtonProps()" (click)="onRemove()" />
|
|
294
|
+
</div>
|
|
295
|
+
}
|
|
296
|
+
</ion-content>
|
|
297
|
+
`, isInline: true, styles: ["ion-content{--padding-bottom: 24px}.member-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:20px}val-display{display:block}val-title{display:block}.role-section{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.role-readonly-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.member-role-badge{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 12px;border-radius:20px;width:fit-content;background:color-mix(in srgb,var(--ion-color-primary) 12%,transparent);color:var(--ion-color-primary)}.perms-section{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.perms-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.perms-list{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{font-size:.75rem;font-weight:500;padding:3px 10px;border-radius:20px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .12));color:var(--ion-color-dark);background:transparent}.remove-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08));padding-top:20px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
298
|
+
}
|
|
299
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemberDetailModalComponent, decorators: [{
|
|
300
|
+
type: Component,
|
|
301
|
+
args: [{ selector: 'val-member-detail-modal', standalone: true, imports: [
|
|
302
|
+
IonHeader,
|
|
303
|
+
IonToolbar,
|
|
304
|
+
IonButtons,
|
|
305
|
+
IonButton,
|
|
306
|
+
IonContent,
|
|
307
|
+
ReactiveFormsModule,
|
|
308
|
+
ButtonComponent,
|
|
309
|
+
DisplayComponent,
|
|
310
|
+
SearchSelectorComponent,
|
|
311
|
+
TextComponent,
|
|
312
|
+
TitleComponent,
|
|
313
|
+
UserAvatarComponent,
|
|
314
|
+
], template: `
|
|
315
|
+
<ion-header>
|
|
316
|
+
<ion-toolbar>
|
|
317
|
+
<ion-buttons slot="end">
|
|
318
|
+
<ion-button fill="clear" color="dark" (click)="dismiss()">
|
|
319
|
+
<strong>{{ t('close') }}</strong>
|
|
320
|
+
</ion-button>
|
|
321
|
+
</ion-buttons>
|
|
322
|
+
</ion-toolbar>
|
|
323
|
+
</ion-header>
|
|
324
|
+
|
|
325
|
+
<ion-content class="ion-padding">
|
|
326
|
+
<div class="member-head">
|
|
327
|
+
<val-user-avatar
|
|
328
|
+
[props]="{
|
|
329
|
+
name: member.name,
|
|
330
|
+
avatarUrl: member.avatar,
|
|
331
|
+
email: member.email,
|
|
332
|
+
size: 'large',
|
|
333
|
+
}"
|
|
334
|
+
/>
|
|
335
|
+
<val-display [props]="{ content: displayName(), size: 'small', color: 'dark' }" />
|
|
336
|
+
<val-title
|
|
337
|
+
[props]="{
|
|
338
|
+
content: subtitle(),
|
|
339
|
+
size: 'large',
|
|
340
|
+
color: '',
|
|
341
|
+
bold: false,
|
|
342
|
+
}"
|
|
343
|
+
/>
|
|
344
|
+
</div>
|
|
345
|
+
|
|
346
|
+
<div class="role-section">
|
|
347
|
+
@if (canManage) {
|
|
348
|
+
<val-title
|
|
349
|
+
[props]="{
|
|
350
|
+
content: t('roleLabel'),
|
|
351
|
+
size: 'small',
|
|
352
|
+
color: 'dark',
|
|
353
|
+
bold: false,
|
|
354
|
+
}"
|
|
355
|
+
/>
|
|
356
|
+
<val-select-input data-testid="member-role-select" [props]="roleSelectProps()" />
|
|
357
|
+
<val-text
|
|
358
|
+
[props]="{
|
|
359
|
+
content: t('roleHint'),
|
|
360
|
+
size: 'small',
|
|
361
|
+
color: 'medium',
|
|
362
|
+
bold: false,
|
|
363
|
+
}"
|
|
364
|
+
/>
|
|
365
|
+
} @else {
|
|
366
|
+
<span class="role-readonly-label">{{ t('roleReadonly') }}</span>
|
|
367
|
+
<span class="member-role-badge">{{ currentRoleLabel() }}</span>
|
|
368
|
+
}
|
|
369
|
+
</div>
|
|
370
|
+
|
|
371
|
+
@if (permissionsForCurrentRole().length > 0) {
|
|
372
|
+
<div class="perms-section">
|
|
373
|
+
<span class="perms-label">{{ t('permissionsTitle') }}</span>
|
|
374
|
+
<div class="perms-list">
|
|
375
|
+
@for (perm of permissionsForCurrentRole(); track perm) {
|
|
376
|
+
<span class="perm-chip">{{ permissionLabel(perm) }}</span>
|
|
377
|
+
}
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
@if (canManage) {
|
|
383
|
+
<div class="remove-section">
|
|
384
|
+
<val-button [props]="removeButtonProps()" (click)="onRemove()" />
|
|
385
|
+
</div>
|
|
386
|
+
}
|
|
387
|
+
</ion-content>
|
|
388
|
+
`, styles: ["ion-content{--padding-bottom: 24px}.member-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:20px}val-display{display:block}val-title{display:block}.role-section{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.role-readonly-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.member-role-badge{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 12px;border-radius:20px;width:fit-content;background:color-mix(in srgb,var(--ion-color-primary) 12%,transparent);color:var(--ion-color-primary)}.perms-section{display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.perms-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.perms-list{display:flex;flex-wrap:wrap;gap:6px}.perm-chip{font-size:.75rem;font-weight:500;padding:3px 10px;border-radius:20px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .12));color:var(--ion-color-dark);background:transparent}.remove-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08));padding-top:20px}\n"] }]
|
|
389
|
+
}], ctorParameters: () => [], propDecorators: { _modalRef: [{
|
|
390
|
+
type: Input
|
|
391
|
+
}], member: [{
|
|
392
|
+
type: Input
|
|
393
|
+
}], orgId: [{
|
|
394
|
+
type: Input
|
|
395
|
+
}], canManage: [{
|
|
396
|
+
type: Input
|
|
397
|
+
}], isSelf: [{
|
|
398
|
+
type: Input
|
|
399
|
+
}], availableRoles: [{
|
|
400
|
+
type: Input
|
|
401
|
+
}], onChanged: [{
|
|
402
|
+
type: Input
|
|
403
|
+
}], i18nNamespace: [{
|
|
404
|
+
type: Input
|
|
405
|
+
}] } });
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1kZXRhaWwtbW9kYWwvbWVtYmVyLWRldGFpbC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBa0IsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFHOUcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRXRFLE1BQU0saUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFFbEQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBMEtILE1BQU0sT0FBTywwQkFBMEI7SUFtRnJDO1FBbEZRLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBUTFELGtEQUFrRDtRQUN6QyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRXBCLHFEQUFxRDtRQUM1QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCLHlEQUF5RDtRQUNoRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXhCLDJFQUEyRTtRQUNsRSxtQkFBYyxHQUE2QjtZQUNsRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUMvQixDQUFDO1FBS0YsMkRBQTJEO1FBQ2xELGtCQUFhLEdBQUcsaUJBQWlCLENBQUM7UUFFbEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixnQkFBVyxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUVqQyxnQkFBVyxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRzFDLGdCQUFXLEdBQUcsUUFBUSxDQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxHQUFHLENBQzVFLENBQUM7UUFFTyxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTTtnQkFBRSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVNLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEUsOEJBQXlCLEdBQUcsUUFBUSxDQUFXLEdBQUcsRUFBRTtZQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFTSxvQkFBZSxHQUFHLFFBQVEsQ0FBeUIsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNqRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQTBCO1lBQ3hDLEtBQUssRUFBRSxFQUFFO1lBQ1QsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ2hDLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztZQUMxRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDNUIsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQztRQUVLLHNCQUFpQixHQUFHLFFBQVEsQ0FBMEIsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNwRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDekIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxPQUFPO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPO1NBQzFFLENBQUMsQ0FBQyxDQUFDO1FBR0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLDRFQUE0RTtRQUM1RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxLQUFLLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUEyQjtZQUNyQyxLQUFLLEVBQUUsV0FBVztZQUNsQixTQUFTLEVBQUUsZUFBZTtZQUMxQixLQUFLLEVBQUUsV0FBVztZQUNsQixLQUFLLEVBQUUsV0FBVztZQUNsQixTQUFTLEVBQUUsZUFBZTtZQUMxQixHQUFHLEVBQUUsU0FBUztTQUNmLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBMkI7WUFDckMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsR0FBRyxFQUFFLFNBQVM7U0FDZixDQUFDO1FBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUM7UUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUM7UUFDN0MsT0FBTyxHQUFHLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQjtRQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDcEMsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsV0FBVyxFQUFFLGlCQUFpQjtnQkFDOUIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQ2xDLENBQUMsQ0FBQztRQUNMLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztZQUN6RCxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztZQUN2QyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2xELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1NBQzVDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztZQUFFLE9BQU87UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO2dCQUNoQyxLQUFLLEVBQUUsTUFBTTtnQkFDYixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsV0FBVyxFQUFFLGFBQWE7Z0JBQzFCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxZQUFvQjtRQUM1QixrRkFBa0Y7UUFDbEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQzlGLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksWUFBWSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUEyQjtZQUNyQyxNQUFNLEVBQUUsWUFBWTtZQUNwQixNQUFNLEVBQUUsWUFBWTtZQUNwQixLQUFLLEVBQUUsV0FBVztZQUNsQixXQUFXLEVBQUUsZ0JBQWdCO1NBQzlCLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELENBQUMsQ0FBQyxHQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBaE5VLDBCQUEwQjttR0FBMUIsMEJBQTBCLDZSQXhKM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEVULHV2Q0F2RkMsU0FBUyxvR0FDVCxVQUFVLG1GQUNWLFVBQVUsOEVBQ1YsU0FBUyxvUEFDVCxVQUFVLHVLQUNWLG1CQUFtQiwrQkFDbkIsZUFBZSwwR0FDZixnQkFBZ0IsMkVBQ2hCLHVCQUF1QiwwRkFDdkIsYUFBYSx3RUFDYixjQUFjLHlFQUNkLG1CQUFtQjs7NEZBMEpWLDBCQUEwQjtrQkF6S3RDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUNwQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBFVDt3REFzRlEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdXNlci1hdmF0YXIvdXNlci1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBNZW1iZXJEZXRhaWwsIE9yZ1JvbGVXaXRoUGVybWlzc2lvbnMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1FTUJFUl9ERVRBSUxfTU9EQUxfSTE4TiB9IGZyb20gJy4vbWVtYmVyLWRldGFpbC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuTWVtYmVyRGV0YWlsJztcblxuLyoqXG4gKiBgdmFsLW1lbWJlci1kZXRhaWwtbW9kYWxgIOKAlCBkZXRhbGxlIGRlIG1pZW1icm8gZGUgb3JnYW5pemFjacOzbjogcGVyZmlsLCByb2wgeVxuICogcGVybWlzb3MuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIFNpIGBjYW5NYW5hZ2VgIGVzIHRydWUsIHBlcm1pdGUgY2FtYmlhciBlbCByb2wgKHbDrWEgYE9yZ1NlcnZpY2UuY2hhbmdlTWVtYmVyUm9sZWApXG4gKiB5IHF1aXRhciBhbCBtaWVtYnJvICh2w61hIGBPcmdTZXJ2aWNlLnJlbW92ZU1lbWJlcmAsIGNvbiBjb25maXJtYWNpw7NuIGRlc3RydWN0aXZhKS5cbiAqIExvcyBwZXJtaXNvcyBkZWwgcm9sIGFjdHVhbCBzZSBtdWVzdHJhbiBjdWFuZG8gZWwgY29uc3VtZXIgbG9zIHByb3ZlZSBlblxuICogYGF2YWlsYWJsZVJvbGVzYC5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYCArIGNhbGxiYWNrXG4gKiBgb25DaGFuZ2VkYC4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXIgdGV4dG8gZW5cbiAqIGBzbG90PWVuZGAsIGlkZW50aWRhZCBlbiBlbCBib2R5IGNvbiBgdmFsLXVzZXItYXZhdGFyYC9gdmFsLWRpc3BsYXlgL2B2YWwtdGl0bGVgLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIGBTZXR0aW5ncy5NZW1iZXJEZXRhaWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVtYmVyLWRldGFpbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgU2VhcmNoU2VsZWN0b3JDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBVc2VyQXZhdGFyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZW1iZXItaGVhZFwiPlxuICAgICAgICA8dmFsLXVzZXItYXZhdGFyXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIG5hbWU6IG1lbWJlci5uYW1lLFxuICAgICAgICAgICAgYXZhdGFyVXJsOiBtZW1iZXIuYXZhdGFyLFxuICAgICAgICAgICAgZW1haWw6IG1lbWJlci5lbWFpbCxcbiAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiBkaXNwbGF5TmFtZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN1YnRpdGxlKCksXG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICcnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvbGUtc2VjdGlvblwiPlxuICAgICAgICBAaWYgKGNhbk1hbmFnZSkge1xuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHQoJ3JvbGVMYWJlbCcpLFxuICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHZhbC1zZWxlY3QtaW5wdXQgZGF0YS10ZXN0aWQ9XCJtZW1iZXItcm9sZS1zZWxlY3RcIiBbcHJvcHNdPVwicm9sZVNlbGVjdFByb3BzKClcIiAvPlxuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogdCgncm9sZUhpbnQnKSxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm9sZS1yZWFkb25seS1sYWJlbFwiPnt7IHQoJ3JvbGVSZWFkb25seScpIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVtYmVyLXJvbGUtYmFkZ2VcIj57eyBjdXJyZW50Um9sZUxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHBlcm1pc3Npb25zRm9yQ3VycmVudFJvbGUoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJtcy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtcy1sYWJlbFwiPnt7IHQoJ3Blcm1pc3Npb25zVGl0bGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVybXMtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAocGVybSBvZiBwZXJtaXNzaW9uc0ZvckN1cnJlbnRSb2xlKCk7IHRyYWNrIHBlcm0pIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJtLWNoaXBcIj57eyBwZXJtaXNzaW9uTGFiZWwocGVybSkgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGNhbk1hbmFnZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlLXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmVtb3ZlQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvblJlbW92ZSgpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgaW9uLWNvbnRlbnQge1xuICAgICAgICAtLXBhZGRpbmctYm90dG9tOiAyNHB4O1xuICAgICAgfVxuICAgICAgLm1lbWJlci1oZWFkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICB2YWwtdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb2xlLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5yb2xlLXJlYWRvbmx5LWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAubWVtYmVyLXJvbGUtYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgMTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAucGVybXMtc2VjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5wZXJtcy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLnBlcm1zLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLnBlcm0tY2hpcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xMikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICAgIC5yZW1vdmUtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVyRGV0YWlsTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgb3JnU2VydmljZSA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maXJtRGlhbG9nID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBNaWVtYnJvIGEgbW9zdHJhciAocGFzYWRvIHBvciBgY29tcG9uZW50UHJvcHNgKS4gKi9cbiAgQElucHV0KCkgbWVtYmVyITogTWVtYmVyRGV0YWlsO1xuXG4gIC8qKiBPcmdhbml6YWNpw7NuIGEgbGEgcXVlIHBlcnRlbmVjZSBlbCBtaWVtYnJvLiAqL1xuICBASW5wdXQoKSBvcmdJZCA9ICcnO1xuXG4gIC8qKiBTaSB0cnVlLCBoYWJpbGl0YSBjYW1iaW8gZGUgcm9sIHkgZWxpbWluYWNpw7NuLiAqL1xuICBASW5wdXQoKSBjYW5NYW5hZ2UgPSBmYWxzZTtcblxuICAvKiogU2kgdHJ1ZSwgZWwgbWllbWJybyBtb3N0cmFkbyBlcyBlbCBwcm9waW8gdXN1YXJpby4gKi9cbiAgQElucHV0KCkgaXNTZWxmID0gZmFsc2U7XG5cbiAgLyoqIFJvbGVzIGRpc3BvbmlibGVzIChjb24gcGVybWlzb3Mgb3BjaW9uYWxlcykgcGFyYSBlbCBzZWxlY3RvciBkZSByb2wuICovXG4gIEBJbnB1dCgpIGF2YWlsYWJsZVJvbGVzOiBPcmdSb2xlV2l0aFBlcm1pc3Npb25zW10gPSBbXG4gICAgeyBpZDogJ3ZpZXdlcicsIG5hbWU6ICd2aWV3ZXInIH0sXG4gICAgeyBpZDogJ2VkaXRvcicsIG5hbWU6ICdlZGl0b3InIH0sXG4gICAgeyBpZDogJ2FkbWluJywgbmFtZTogJ2FkbWluJyB9LFxuICBdO1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIGNhbWJpYXIgcm9sIG8gcXVpdGFyIGFsIG1pZW1icm8gKHBhc2FkbyBwb3IgYGNvbXBvbmVudFByb3BzYCkuICovXG4gIEBJbnB1dCgpIG9uQ2hhbmdlZD86ICgpID0+IHZvaWQ7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIGNvbiBxdWUgbGEgdmlzdGEgcmVzdWVsdmUgc3VzIHRleHRvcy4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIHJlYWRvbmx5IHdvcmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjdXJyZW50Um9sZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICByZWFkb25seSByb2xlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSByb2xlU3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5tZW1iZXI/Lm5hbWUgfHwgdGhpcy5tZW1iZXI/LmhhbmRsZSB8fCB0aGlzLm1lbWJlcj8uZW1haWwgfHwgJ+KAlCdcbiAgKTtcblxuICByZWFkb25seSBzdWJ0aXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc1NlbGYpIHJldHVybiB0aGlzLnQoJ3N1YnRpdGxlU2VsZicpO1xuICAgIGlmICh0aGlzLm1lbWJlcj8uaGFuZGxlKSByZXR1cm4gJ0AnICsgdGhpcy5tZW1iZXIuaGFuZGxlO1xuICAgIHJldHVybiB0aGlzLm1lbWJlcj8uZW1haWwgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRSb2xlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJvbGVMYWJlbCh0aGlzLmN1cnJlbnRSb2xlKCkpKTtcblxuICByZWFkb25seSBwZXJtaXNzaW9uc0ZvckN1cnJlbnRSb2xlID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgICBjb25zdCByb2xlSWQgPSB0aGlzLmN1cnJlbnRSb2xlKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuYXZhaWxhYmxlUm9sZXMuZmluZChyID0+IHIuaWQgPT09IHJvbGVJZCB8fCByLm5hbWUgPT09IHJvbGVJZCk7XG4gICAgcmV0dXJuIHJvbGU/LnBlcm1pc3Npb25zID8/IFtdO1xuICB9KTtcblxuICByZWFkb25seSByb2xlU2VsZWN0UHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPElucHV0TWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMucm9sZUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wsXG4gICAgbGFiZWw6ICcnLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ3JvbGVMYWJlbCcpLFxuICAgIHR5cGU6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgc3RhdGU6IHRoaXMud29ya2luZygpID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgb3B0aW9uczogdGhpcy5hdmFpbGFibGVSb2xlcy5tYXAociA9PiAoe1xuICAgICAgaWQ6IHIuaWQsXG4gICAgICBuYW1lOiB0aGlzLnJvbGVMYWJlbChyLm5hbWUpLFxuICAgICAgb3JkZXI6IDAsXG4gICAgfSkpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcmVtb3ZlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnQoJ3JlbW92ZUN0YScpLFxuICAgIHRva2VuOiAnbWVtYmVyLXJlbW92ZScsXG4gICAgY29sb3I6ICdkYW5nZXInLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiB0aGlzLndvcmtpbmcoKSA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoREVGQVVMVF9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KERFRkFVTFRfTkFNRVNQQUNFLCBNRU1CRVJfREVUQUlMX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSh0aGlzLmkxOG5OYW1lc3BhY2UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KHRoaXMuaTE4bk5hbWVzcGFjZSwgTUVNQkVSX0RFVEFJTF9NT0RBTF9JMThOKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZU5hbWUgPSB0aGlzLm1lbWJlcj8ucm9sZXM/LlswXSA/PyAnJztcbiAgICAvLyBSZXNvbHZlIHRoZSByb2xlIG5hbWUgdG8gaXRzIFVVSUQgLS0gdGhlIHNlbGVjdCB1c2VzIHIuaWQgKFVVSUQpIGFzIHZhbHVlXG4gICAgY29uc3QgbWF0Y2hlZCA9IHRoaXMuYXZhaWxhYmxlUm9sZXMuZmluZChyID0+IHIubmFtZSA9PT0gcm9sZU5hbWUpO1xuICAgIGNvbnN0IHJvbGVJZCA9IG1hdGNoZWQ/LmlkID8/IHJvbGVOYW1lO1xuICAgIHRoaXMuY3VycmVudFJvbGUuc2V0KHJvbGVJZCk7XG4gICAgdGhpcy5yb2xlQ29udHJvbC5zZXRWYWx1ZShyb2xlSWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLnJvbGVTdWIgPSB0aGlzLnJvbGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICBpZiAodiAmJiB2ICE9PSB0aGlzLmN1cnJlbnRSb2xlKCkpIHZvaWQgdGhpcy5vbkNoYW5nZVJvbGUodik7XG4gICAgfSk7XG4gIH1cblxuICBwZXJtaXNzaW9uTGFiZWwocGVybTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocGVybSA9PT0gJyo6KicpIHJldHVybiB0aGlzLnQoJ3Blcm1BbGwnKTtcbiAgICBjb25zdCBbcmVzb3VyY2UsIGFjdGlvbl0gPSBwZXJtLnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgcmVzS2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdXNlcnM6ICdwZXJtVXNlcnMnLFxuICAgICAgZG9jdW1lbnRzOiAncGVybURvY3VtZW50cycsXG4gICAgICByb2xlczogJ3Blcm1Sb2xlcycsXG4gICAgICBtZWRpYTogJ3Blcm1NZWRpYScsXG4gICAgICB0ZW1wbGF0ZXM6ICdwZXJtVGVtcGxhdGVzJyxcbiAgICAgICcqJzogJ3Blcm1BbGwnLFxuICAgIH07XG4gICAgY29uc3QgYWN0S2V5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgcmVhZDogJ3Blcm1SZWFkJyxcbiAgICAgIHdyaXRlOiAncGVybVdyaXRlJyxcbiAgICAgIGNyZWF0ZTogJ3Blcm1DcmVhdGUnLFxuICAgICAgZGVsZXRlOiAncGVybURlbGV0ZScsXG4gICAgICBtYW5hZ2U6ICdwZXJtTWFuYWdlJyxcbiAgICAgICcqJzogJ3Blcm1BbGwnLFxuICAgIH07XG4gICAgY29uc3QgcmVzID0gdGhpcy50KHJlc0tleVtyZXNvdXJjZV0gPz8gcmVzb3VyY2UpO1xuICAgIGNvbnN0IGFjdCA9IHRoaXMudChhY3RLZXlbYWN0aW9uXSA/PyBhY3Rpb24pO1xuICAgIHJldHVybiBgJHtyZXN9OiAke2FjdH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkNoYW5nZVJvbGUobmV3Um9sZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nKCkpIHJldHVybjtcbiAgICB0aGlzLndvcmtpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ1NlcnZpY2UuY2hhbmdlTWVtYmVyUm9sZSh0aGlzLm9yZ0lkLCB0aGlzLm1lbWJlci51c2VySWQsIG5ld1JvbGVJZCkpO1xuICAgICAgdGhpcy5jdXJyZW50Um9sZS5zZXQobmV3Um9sZUlkKTtcbiAgICAgIHRoaXMubWVtYmVyID0geyAuLi50aGlzLm1lbWJlciwgcm9sZXM6IFtuZXdSb2xlSWRdIH07XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoYW5nZVJvbGVTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlZD8uKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnJvbGVDb250cm9sLnNldFZhbHVlKHRoaXMuY3VycmVudFJvbGUoKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbWVtYmVyRGV0YWlsLmNoYW5nZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2NoYW5nZVJvbGVFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLndvcmtpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblJlbW92ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy53b3JraW5nKCkpIHJldHVybjtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ3JlbW92ZUNvbmZpcm1UaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50KCdyZW1vdmVDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnQoJ3JlbW92ZUNvbmZpcm1PaycpIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50KCdjYW5jZWxDdGEnKSB9LFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0LmNvbmZpcm1lZCkgcmV0dXJuO1xuICAgIHRoaXMud29ya2luZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS5yZW1vdmVNZW1iZXIodGhpcy5vcmdJZCwgdGhpcy5tZW1iZXIudXNlcklkKSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3JlbW92ZVN1Y2Nlc3MnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25DaGFuZ2VkPy4oKTtcbiAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbWVtYmVyRGV0YWlsLnJlbW92ZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAncmVtb3ZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy53b3JraW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcm9sZUxhYmVsKHJvbGVJZE9yTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUcnkgdG8gZmluZCBieSBpZCBmaXJzdCAocG9zdC1jaGFuZ2UsIFVVSUQgc3RvcmVkKSwgdGhlbiBieSBuYW1lIChpbml0aWFsIGxvYWQpXG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmF2YWlsYWJsZVJvbGVzLmZpbmQociA9PiByLmlkID09PSByb2xlSWRPck5hbWUgfHwgci5uYW1lID09PSByb2xlSWRPck5hbWUpO1xuICAgIGNvbnN0IG5hbWUgPSBmb3VuZD8ubmFtZSA/PyByb2xlSWRPck5hbWU7XG4gICAgY29uc3Qga2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdmlld2VyOiAncm9sZVZpZXdlcicsXG4gICAgICBlZGl0b3I6ICdyb2xlRWRpdG9yJyxcbiAgICAgIGFkbWluOiAncm9sZUFkbWluJyxcbiAgICAgIHN1cGVyX2FkbWluOiAncm9sZVN1cGVyQWRtaW4nLFxuICAgIH07XG4gICAgY29uc3Qga2V5ID0ga2V5TWFwW25hbWVdID8/IG5hbWU7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnQoa2V5KTtcbiAgICByZXR1cm4gbGFiZWwgJiYgIWxhYmVsLnN0YXJ0c1dpdGgoJ1snKSA/IGxhYmVsIDogbmFtZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucm9sZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults i18n (es/en) embebidos en `val-member-detail-modal`. Auto-registrados
|
|
3
|
+
* en el constructor del componente si el consumer no proveyó el namespace
|
|
4
|
+
* (`Settings.MemberDetail` por default). SOLO incluye las keys que el modal usa.
|
|
5
|
+
*/
|
|
6
|
+
export const MEMBER_DETAIL_MODAL_I18N = {
|
|
7
|
+
es: {
|
|
8
|
+
close: 'Cerrar',
|
|
9
|
+
subtitleSelf: 'Tú',
|
|
10
|
+
roleLabel: 'Rol',
|
|
11
|
+
roleHint: 'Cambia el rol de este miembro en la organización.',
|
|
12
|
+
roleReadonly: 'Rol en la organización',
|
|
13
|
+
roleViewer: 'Visor',
|
|
14
|
+
roleEditor: 'Editor',
|
|
15
|
+
roleAdmin: 'Admin',
|
|
16
|
+
roleSuperAdmin: 'Super Admin',
|
|
17
|
+
removeCta: 'Quitar de la organización',
|
|
18
|
+
removeConfirmTitle: 'Quitar miembro',
|
|
19
|
+
removeConfirmMessage: '¿Quitar a este miembro de la organización?',
|
|
20
|
+
removeConfirmOk: 'Quitar',
|
|
21
|
+
cancelCta: 'Cancelar',
|
|
22
|
+
changeRoleSuccess: 'Rol actualizado.',
|
|
23
|
+
changeRoleError: 'No se pudo cambiar el rol.',
|
|
24
|
+
removeSuccess: 'Miembro eliminado.',
|
|
25
|
+
removeError: 'No se pudo eliminar al miembro.',
|
|
26
|
+
permissionsTitle: 'Permisos del rol',
|
|
27
|
+
permAll: 'Todo',
|
|
28
|
+
permUsers: 'Usuarios',
|
|
29
|
+
permDocuments: 'Documentos',
|
|
30
|
+
permRoles: 'Roles',
|
|
31
|
+
permMedia: 'Media',
|
|
32
|
+
permTemplates: 'Plantillas',
|
|
33
|
+
permRead: 'Leer',
|
|
34
|
+
permWrite: 'Escribir',
|
|
35
|
+
permCreate: 'Crear',
|
|
36
|
+
permDelete: 'Eliminar',
|
|
37
|
+
permManage: 'Gestionar',
|
|
38
|
+
},
|
|
39
|
+
en: {
|
|
40
|
+
close: 'Close',
|
|
41
|
+
subtitleSelf: 'You',
|
|
42
|
+
roleLabel: 'Role',
|
|
43
|
+
roleHint: "Change this member's role in the organization.",
|
|
44
|
+
roleReadonly: 'Role in the organization',
|
|
45
|
+
roleViewer: 'Viewer',
|
|
46
|
+
roleEditor: 'Editor',
|
|
47
|
+
roleAdmin: 'Admin',
|
|
48
|
+
roleSuperAdmin: 'Super Admin',
|
|
49
|
+
removeCta: 'Remove from organization',
|
|
50
|
+
removeConfirmTitle: 'Remove member',
|
|
51
|
+
removeConfirmMessage: 'Remove this member from the organization?',
|
|
52
|
+
removeConfirmOk: 'Remove',
|
|
53
|
+
cancelCta: 'Cancel',
|
|
54
|
+
changeRoleSuccess: 'Role updated.',
|
|
55
|
+
changeRoleError: 'Could not change role.',
|
|
56
|
+
removeSuccess: 'Member removed.',
|
|
57
|
+
removeError: 'Could not remove member.',
|
|
58
|
+
permissionsTitle: 'Role permissions',
|
|
59
|
+
permAll: 'All',
|
|
60
|
+
permUsers: 'Users',
|
|
61
|
+
permDocuments: 'Documents',
|
|
62
|
+
permRoles: 'Roles',
|
|
63
|
+
permMedia: 'Media',
|
|
64
|
+
permTemplates: 'Templates',
|
|
65
|
+
permRead: 'Read',
|
|
66
|
+
permWrite: 'Write',
|
|
67
|
+
permCreate: 'Create',
|
|
68
|
+
permDelete: 'Delete',
|
|
69
|
+
permManage: 'Manage',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWRldGFpbC1tb2RhbC5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9tZW1iZXItZGV0YWlsLW1vZGFsL21lbWJlci1kZXRhaWwtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXFCO0lBQ3hELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxRQUFRO1FBQ2YsWUFBWSxFQUFFLElBQUk7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsUUFBUSxFQUFFLG1EQUFtRDtRQUM3RCxZQUFZLEVBQUUsd0JBQXdCO1FBQ3RDLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGNBQWMsRUFBRSxhQUFhO1FBQzdCLFNBQVMsRUFBRSwyQkFBMkI7UUFDdEMsa0JBQWtCLEVBQUUsZ0JBQWdCO1FBQ3BDLG9CQUFvQixFQUFFLDRDQUE0QztRQUNsRSxlQUFlLEVBQUUsUUFBUTtRQUN6QixTQUFTLEVBQUUsVUFBVTtRQUNyQixpQkFBaUIsRUFBRSxrQkFBa0I7UUFDckMsZUFBZSxFQUFFLDRCQUE0QjtRQUM3QyxhQUFhLEVBQUUsb0JBQW9CO1FBQ25DLFdBQVcsRUFBRSxpQ0FBaUM7UUFDOUMsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLE9BQU8sRUFBRSxNQUFNO1FBQ2YsU0FBUyxFQUFFLFVBQVU7UUFDckIsYUFBYSxFQUFFLFlBQVk7UUFDM0IsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsYUFBYSxFQUFFLFlBQVk7UUFDM0IsUUFBUSxFQUFFLE1BQU07UUFDaEIsU0FBUyxFQUFFLFVBQVU7UUFDckIsVUFBVSxFQUFFLE9BQU87UUFDbkIsVUFBVSxFQUFFLFVBQVU7UUFDdEIsVUFBVSxFQUFFLFdBQVc7S0FDeEI7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsT0FBTztRQUNkLFlBQVksRUFBRSxLQUFLO1FBQ25CLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFFBQVEsRUFBRSxnREFBZ0Q7UUFDMUQsWUFBWSxFQUFFLDBCQUEwQjtRQUN4QyxVQUFVLEVBQUUsUUFBUTtRQUNwQixVQUFVLEVBQUUsUUFBUTtRQUNwQixTQUFTLEVBQUUsT0FBTztRQUNsQixjQUFjLEVBQUUsYUFBYTtRQUM3QixTQUFTLEVBQUUsMEJBQTBCO1FBQ3JDLGtCQUFrQixFQUFFLGVBQWU7UUFDbkMsb0JBQW9CLEVBQUUsMkNBQTJDO1FBQ2pFLGVBQWUsRUFBRSxRQUFRO1FBQ3pCLFNBQVMsRUFBRSxRQUFRO1FBQ25CLGlCQUFpQixFQUFFLGVBQWU7UUFDbEMsZUFBZSxFQUFFLHdCQUF3QjtRQUN6QyxhQUFhLEVBQUUsaUJBQWlCO1FBQ2hDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLE9BQU8sRUFBRSxLQUFLO1FBQ2QsU0FBUyxFQUFFLE9BQU87UUFDbEIsYUFBYSxFQUFFLFdBQVc7UUFDMUIsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsYUFBYSxFQUFFLFdBQVc7UUFDMUIsUUFBUSxFQUFFLE1BQU07UUFDaEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsVUFBVSxFQUFFLFFBQVE7S0FDckI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1tZW1iZXItZGV0YWlsLW1vZGFsYC4gQXV0by1yZWdpc3RyYWRvc1xuICogZW4gZWwgY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLk1lbWJlckRldGFpbGAgcG9yIGRlZmF1bHQpLiBTT0xPIGluY2x1eWUgbGFzIGtleXMgcXVlIGVsIG1vZGFsIHVzYS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FTUJFUl9ERVRBSUxfTU9EQUxfSTE4TjogTGFuZ3VhZ2VzQ29udGVudCA9IHtcbiAgZXM6IHtcbiAgICBjbG9zZTogJ0NlcnJhcicsXG4gICAgc3VidGl0bGVTZWxmOiAnVMO6JyxcbiAgICByb2xlTGFiZWw6ICdSb2wnLFxuICAgIHJvbGVIaW50OiAnQ2FtYmlhIGVsIHJvbCBkZSBlc3RlIG1pZW1icm8gZW4gbGEgb3JnYW5pemFjacOzbi4nLFxuICAgIHJvbGVSZWFkb25seTogJ1JvbCBlbiBsYSBvcmdhbml6YWNpw7NuJyxcbiAgICByb2xlVmlld2VyOiAnVmlzb3InLFxuICAgIHJvbGVFZGl0b3I6ICdFZGl0b3InLFxuICAgIHJvbGVBZG1pbjogJ0FkbWluJyxcbiAgICByb2xlU3VwZXJBZG1pbjogJ1N1cGVyIEFkbWluJyxcbiAgICByZW1vdmVDdGE6ICdRdWl0YXIgZGUgbGEgb3JnYW5pemFjacOzbicsXG4gICAgcmVtb3ZlQ29uZmlybVRpdGxlOiAnUXVpdGFyIG1pZW1icm8nLFxuICAgIHJlbW92ZUNvbmZpcm1NZXNzYWdlOiAnwr9RdWl0YXIgYSBlc3RlIG1pZW1icm8gZGUgbGEgb3JnYW5pemFjacOzbj8nLFxuICAgIHJlbW92ZUNvbmZpcm1PazogJ1F1aXRhcicsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsYXInLFxuICAgIGNoYW5nZVJvbGVTdWNjZXNzOiAnUm9sIGFjdHVhbGl6YWRvLicsXG4gICAgY2hhbmdlUm9sZUVycm9yOiAnTm8gc2UgcHVkbyBjYW1iaWFyIGVsIHJvbC4nLFxuICAgIHJlbW92ZVN1Y2Nlc3M6ICdNaWVtYnJvIGVsaW1pbmFkby4nLFxuICAgIHJlbW92ZUVycm9yOiAnTm8gc2UgcHVkbyBlbGltaW5hciBhbCBtaWVtYnJvLicsXG4gICAgcGVybWlzc2lvbnNUaXRsZTogJ1Blcm1pc29zIGRlbCByb2wnLFxuICAgIHBlcm1BbGw6ICdUb2RvJyxcbiAgICBwZXJtVXNlcnM6ICdVc3VhcmlvcycsXG4gICAgcGVybURvY3VtZW50czogJ0RvY3VtZW50b3MnLFxuICAgIHBlcm1Sb2xlczogJ1JvbGVzJyxcbiAgICBwZXJtTWVkaWE6ICdNZWRpYScsXG4gICAgcGVybVRlbXBsYXRlczogJ1BsYW50aWxsYXMnLFxuICAgIHBlcm1SZWFkOiAnTGVlcicsXG4gICAgcGVybVdyaXRlOiAnRXNjcmliaXInLFxuICAgIHBlcm1DcmVhdGU6ICdDcmVhcicsXG4gICAgcGVybURlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICBwZXJtTWFuYWdlOiAnR2VzdGlvbmFyJyxcbiAgfSxcbiAgZW46IHtcbiAgICBjbG9zZTogJ0Nsb3NlJyxcbiAgICBzdWJ0aXRsZVNlbGY6ICdZb3UnLFxuICAgIHJvbGVMYWJlbDogJ1JvbGUnLFxuICAgIHJvbGVIaW50OiBcIkNoYW5nZSB0aGlzIG1lbWJlcidzIHJvbGUgaW4gdGhlIG9yZ2FuaXphdGlvbi5cIixcbiAgICByb2xlUmVhZG9ubHk6ICdSb2xlIGluIHRoZSBvcmdhbml6YXRpb24nLFxuICAgIHJvbGVWaWV3ZXI6ICdWaWV3ZXInLFxuICAgIHJvbGVFZGl0b3I6ICdFZGl0b3InLFxuICAgIHJvbGVBZG1pbjogJ0FkbWluJyxcbiAgICByb2xlU3VwZXJBZG1pbjogJ1N1cGVyIEFkbWluJyxcbiAgICByZW1vdmVDdGE6ICdSZW1vdmUgZnJvbSBvcmdhbml6YXRpb24nLFxuICAgIHJlbW92ZUNvbmZpcm1UaXRsZTogJ1JlbW92ZSBtZW1iZXInLFxuICAgIHJlbW92ZUNvbmZpcm1NZXNzYWdlOiAnUmVtb3ZlIHRoaXMgbWVtYmVyIGZyb20gdGhlIG9yZ2FuaXphdGlvbj8nLFxuICAgIHJlbW92ZUNvbmZpcm1PazogJ1JlbW92ZScsXG4gICAgY2FuY2VsQ3RhOiAnQ2FuY2VsJyxcbiAgICBjaGFuZ2VSb2xlU3VjY2VzczogJ1JvbGUgdXBkYXRlZC4nLFxuICAgIGNoYW5nZVJvbGVFcnJvcjogJ0NvdWxkIG5vdCBjaGFuZ2Ugcm9sZS4nLFxuICAgIHJlbW92ZVN1Y2Nlc3M6ICdNZW1iZXIgcmVtb3ZlZC4nLFxuICAgIHJlbW92ZUVycm9yOiAnQ291bGQgbm90IHJlbW92ZSBtZW1iZXIuJyxcbiAgICBwZXJtaXNzaW9uc1RpdGxlOiAnUm9sZSBwZXJtaXNzaW9ucycsXG4gICAgcGVybUFsbDogJ0FsbCcsXG4gICAgcGVybVVzZXJzOiAnVXNlcnMnLFxuICAgIHBlcm1Eb2N1bWVudHM6ICdEb2N1bWVudHMnLFxuICAgIHBlcm1Sb2xlczogJ1JvbGVzJyxcbiAgICBwZXJtTWVkaWE6ICdNZWRpYScsXG4gICAgcGVybVRlbXBsYXRlczogJ1RlbXBsYXRlcycsXG4gICAgcGVybVJlYWQ6ICdSZWFkJyxcbiAgICBwZXJtV3JpdGU6ICdXcml0ZScsXG4gICAgcGVybUNyZWF0ZTogJ0NyZWF0ZScsXG4gICAgcGVybURlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcGVybU1hbmFnZTogJ01hbmFnZScsXG4gIH0sXG59O1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1kZXRhaWwtbW9kYWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ01lbWJlciwgT3JnUm9sZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5cbi8qKlxuICogTWllbWJybyBkZSBvcmdhbml6YWNpw7NuIGVucmlxdWVjaWRvIGNvbiBkYXRvcyBkZSBwZXJmaWwgcMO6YmxpY29cbiAqIChgaGFuZGxlYC9gYXZhdGFyYCksIGNvbnN1bWlkbyBwb3IgYHZhbC1tZW1iZXItZGV0YWlsLW1vZGFsYC4gUHJvbW92aWRvIGRlc2RlXG4gKiBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbWJlckRldGFpbCBleHRlbmRzIE9yZ01lbWJlciB7XG4gIGhhbmRsZT86IHN0cmluZztcbiAgYXZhdGFyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJvbCBkZSBvcmdhbml6YWNpw7NuIGNvbiBwZXJtaXNvcyBvcGNpb25hbGVzLiBFbCBtb2RhbCBtdWVzdHJhIGxvcyBwZXJtaXNvcyBkZWxcbiAqIHJvbCBhY3R1YWwgY3VhbmRvIGVsIGNvbnN1bWVyIGxvcyBwcm92ZWUgZW4gYGF2YWlsYWJsZVJvbGVzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmdSb2xlV2l0aFBlcm1pc3Npb25zIGV4dGVuZHMgT3JnUm9sZSB7XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG4iXX0=
|