ngx-sp-auth 1.0.5 → 2.1.6
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/README.md +207 -24
- package/fesm2022/ngx-sp-auth.mjs +381 -409
- package/fesm2022/ngx-sp-auth.mjs.map +1 -1
- package/lib/auth.module.d.ts +8 -15
- package/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.d.ts +1 -1
- package/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.d.ts +1 -1
- package/lib/components/menu-lateral/menu/menu-lateral.component.d.ts +13 -13
- package/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.d.ts +1 -1
- package/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.d.ts +1 -1
- package/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.d.ts +1 -1
- package/lib/components/nova-senha/nova-senhacomponent.d.ts +1 -1
- package/package.json +2 -4
- package/esm2022/lib/auth.module.mjs +0 -87
- package/esm2022/lib/auth.service.mjs +0 -306
- package/esm2022/lib/components/login/login.component.mjs +0 -323
- package/esm2022/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.mjs +0 -67
- package/esm2022/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.mjs +0 -32
- package/esm2022/lib/components/menu-lateral/menu/list-estab.service.mjs +0 -55
- package/esm2022/lib/components/menu-lateral/menu/menu-lateral.component.mjs +0 -233
- package/esm2022/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.mjs +0 -200
- package/esm2022/lib/components/menu-lateral/menu-services.service.mjs +0 -151
- package/esm2022/lib/components/menu-lateral/model/iestabelecimento.model.mjs +0 -2
- package/esm2022/lib/components/menu-lateral/model/imenu-item-structure.model.mjs +0 -2
- package/esm2022/lib/components/menu-lateral/model/imenu.model.mjs +0 -12
- package/esm2022/lib/components/menu-lateral/model/infrausuarioimg.mjs +0 -12
- package/esm2022/lib/components/menu-lateral/model/isubmenu-item-structure.model.mjs +0 -2
- package/esm2022/lib/components/menu-lateral/model/ret-estabelecimento-session.mjs +0 -10
- package/esm2022/lib/components/menu-lateral/model/ret-infrausuarioemail.mjs +0 -8
- package/esm2022/lib/components/menu-lateral/model/ret-infrausuarioimg.mjs +0 -11
- package/esm2022/lib/components/menu-lateral/model/usuario-img.mjs +0 -8
- package/esm2022/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.mjs +0 -54
- package/esm2022/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.mjs +0 -14
- package/esm2022/lib/components/nova-senha/nova-senhacomponent.mjs +0 -191
- package/esm2022/lib/custom/custom-login.service.mjs +0 -52
- package/esm2022/lib/custom/custom-menu.service.mjs +0 -88
- package/esm2022/lib/custom/custom-storage.service.mjs +0 -70
- package/esm2022/lib/custom/menu-config.service.mjs +0 -70
- package/esm2022/lib/custom/models/icustom-login-service.mjs +0 -2
- package/esm2022/lib/custom/models/icustom-menu-service.mjs +0 -2
- package/esm2022/lib/custom/models/icustom-storage-service.mjs +0 -2
- package/esm2022/lib/custom/models/imenu-config.mjs +0 -2
- package/esm2022/lib/environments/environments.service.mjs +0 -21
- package/esm2022/lib/environments/models/ienvironments.mjs +0 -2
- package/esm2022/lib/guards/auth-guard.mjs +0 -34
- package/esm2022/lib/guards/external-login-guard.mjs +0 -88
- package/esm2022/lib/guards/login-guard.mjs +0 -35
- package/esm2022/lib/interceptors/auth-aplic.interceptor.mjs +0 -41
- package/esm2022/lib/interceptors/auth-infra.interceptor.mjs +0 -30
- package/esm2022/lib/models/code-2fa.mjs +0 -2
- package/esm2022/lib/models/custom-propriedades-login.mjs +0 -3
- package/esm2022/lib/models/forgotten-password-form.mjs +0 -2
- package/esm2022/lib/models/login-form.mjs +0 -2
- package/esm2022/lib/models/login.mjs +0 -2
- package/esm2022/lib/models/nova-senha-form.mjs +0 -2
- package/esm2022/lib/models/password-recup.mjs +0 -2
- package/esm2022/lib/models/payload.mjs +0 -2
- package/esm2022/lib/models/ret-login.mjs +0 -21
- package/esm2022/lib/models/ret-token.mjs +0 -8
- package/esm2022/lib/models/token.mjs +0 -2
- package/esm2022/lib/server/ret-server-config.mjs +0 -9
- package/esm2022/lib/server/server.service.mjs +0 -38
- package/esm2022/lib/storage/auth-storage.service.mjs +0 -365
- package/esm2022/ngx-sp-auth.mjs +0 -5
- package/esm2022/public-api.mjs +0 -39
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { FormGroup, Validators } from '@angular/forms';
|
|
3
|
-
import { map, Subscription, take, timer } from 'rxjs';
|
|
4
|
-
import { FormUtils } from 'ngx-sp-infra';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "ngx-bootstrap/modal";
|
|
7
|
-
import * as i2 from "ngx-sp-infra";
|
|
8
|
-
import * as i3 from "@angular/forms";
|
|
9
|
-
import * as i4 from "../../auth.service";
|
|
10
|
-
import * as i5 from "../../server/server.service";
|
|
11
|
-
import * as i6 from "../../environments/environments.service";
|
|
12
|
-
import * as i7 from "../../storage/auth-storage.service";
|
|
13
|
-
import * as i8 from "../../custom/custom-login.service";
|
|
14
|
-
import * as i9 from "@angular/platform-browser";
|
|
15
|
-
import * as i10 from "@angular/router";
|
|
16
|
-
import * as i11 from "ngx-toastr";
|
|
17
|
-
import * as i12 from "@angular/common";
|
|
18
|
-
export class LoginComponent {
|
|
19
|
-
constructor(_bsModalService, _messageService, _formBuilder, _authService, _serverService, _environmentService, _authStorageService, _customLoginService, _title, _router, _toastrService) {
|
|
20
|
-
this._bsModalService = _bsModalService;
|
|
21
|
-
this._messageService = _messageService;
|
|
22
|
-
this._formBuilder = _formBuilder;
|
|
23
|
-
this._authService = _authService;
|
|
24
|
-
this._serverService = _serverService;
|
|
25
|
-
this._environmentService = _environmentService;
|
|
26
|
-
this._authStorageService = _authStorageService;
|
|
27
|
-
this._customLoginService = _customLoginService;
|
|
28
|
-
this._title = _title;
|
|
29
|
-
this._router = _router;
|
|
30
|
-
this._toastrService = _toastrService;
|
|
31
|
-
// #region ==========> PROPERTIES <==========
|
|
32
|
-
// #region PRIVATE
|
|
33
|
-
this.idFgtPsw = 1;
|
|
34
|
-
// Variáveis específicas para funcionalidades padrões dos formulários
|
|
35
|
-
this.currentTime = new Date();
|
|
36
|
-
this.year = this.currentTime.getFullYear();
|
|
37
|
-
this.isLoading = false;
|
|
38
|
-
this.isLoadingSendAuthentication2Fa = false;
|
|
39
|
-
this.showParmsAuthentication2Fa = false;
|
|
40
|
-
this.isLoadingGetNewCode = false;
|
|
41
|
-
//propriedades que vão receber os valores do customLoginService ####VERIFICAR DEPOIS####
|
|
42
|
-
// @Input() customPropriedadesLogin?: CustomPropriedadesLogin;
|
|
43
|
-
// #endregion PUBLIC
|
|
44
|
-
// #region Timer
|
|
45
|
-
this._subscription = new Subscription();
|
|
46
|
-
this.timerDuration = 90;
|
|
47
|
-
this.secondsLeft = this.timerDuration;
|
|
48
|
-
this.countdown$ = timer(0, 1000).pipe(take(this.timerDuration + 1), map(secondsElapsed => this.timerDuration - secondsElapsed));
|
|
49
|
-
// #endregion Timer
|
|
50
|
-
// #region ==========> FORM BUILDER <==========
|
|
51
|
-
this.form = new FormGroup({});
|
|
52
|
-
this.formFgtPsw = new FormGroup({});
|
|
53
|
-
this.formAuthentication2Fa = new FormGroup({});
|
|
54
|
-
}
|
|
55
|
-
;
|
|
56
|
-
;
|
|
57
|
-
// Propriedade necessário para que a classe static FormUtils possa ser utilizada no Html
|
|
58
|
-
get FormUtils() {
|
|
59
|
-
return FormUtils;
|
|
60
|
-
}
|
|
61
|
-
// #region FORM DATA
|
|
62
|
-
// Variáveis específicas para funcionalidades padrões dos formulários (Login)
|
|
63
|
-
get dominio() {
|
|
64
|
-
return this.form.get('dominio')?.value;
|
|
65
|
-
}
|
|
66
|
-
get usuario() {
|
|
67
|
-
return this.form.get('usuario')?.value;
|
|
68
|
-
}
|
|
69
|
-
get senha() {
|
|
70
|
-
return this.form.get('senha')?.value;
|
|
71
|
-
}
|
|
72
|
-
// Variáveis específicas para funcionalidades padrões dos formulários (RequestRecoverPassword)
|
|
73
|
-
get dominioFgtPsw() {
|
|
74
|
-
return this.formFgtPsw.get('dominioFgtPsw')?.value;
|
|
75
|
-
}
|
|
76
|
-
get usuarioFgtPsw() {
|
|
77
|
-
return this.formFgtPsw.get('usuarioFgtPsw')?.value;
|
|
78
|
-
}
|
|
79
|
-
// Variáveis específicas para funcionalidades padrões dos formulários (Autenticação 2 Fatores)
|
|
80
|
-
get code() {
|
|
81
|
-
return this.formAuthentication2Fa.get('code')?.value;
|
|
82
|
-
}
|
|
83
|
-
// #endregion FORM DATA
|
|
84
|
-
// #endregion ==========> PROPERTIES <==========
|
|
85
|
-
ngOnInit() {
|
|
86
|
-
this._title.setTitle(this._customLoginService.loginPageTitle);
|
|
87
|
-
if (this._customLoginService.loginTitle != "") {
|
|
88
|
-
document.getElementById("title").innerHTML = this._customLoginService.loginTitle;
|
|
89
|
-
}
|
|
90
|
-
if (this._customLoginService.loginSubtitle != "") {
|
|
91
|
-
document.getElementById("subtitle").innerHTML = this._customLoginService.loginSubtitle;
|
|
92
|
-
}
|
|
93
|
-
this.createForm();
|
|
94
|
-
}
|
|
95
|
-
// #region FORM VALIDATORS
|
|
96
|
-
// Método para configuração dos campos de edição do formulário (Login)
|
|
97
|
-
createForm() {
|
|
98
|
-
// Dados originais de Login
|
|
99
|
-
if (this._environmentService.production) {
|
|
100
|
-
this.form = this._formBuilder.group({
|
|
101
|
-
dominio: ['', [Validators.required, Validators.maxLength(50)]],
|
|
102
|
-
usuario: ['', [Validators.required, Validators.maxLength(100)]],
|
|
103
|
-
senha: ['', [Validators.required, Validators.maxLength(100)]]
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
this.form = this._formBuilder.group({
|
|
108
|
-
dominio: [this._customLoginService.loginDesenvDomain, [Validators.required, Validators.maxLength(50)]],
|
|
109
|
-
usuario: [this._customLoginService.loginDesenvUser, [Validators.required, Validators.maxLength(100)]],
|
|
110
|
-
senha: [this._customLoginService.loginDesenvPassword, [Validators.required, Validators.maxLength(100)]]
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Método para configuração dos campos de edição do formulário (RequestRecoverPassword)
|
|
115
|
-
createFormForgottenPassword() {
|
|
116
|
-
this.formFgtPsw = this._formBuilder.group({
|
|
117
|
-
dominioFgtPsw: ['', [Validators.required, Validators.maxLength(50)]],
|
|
118
|
-
usuarioFgtPsw: ['', [Validators.required, Validators.maxLength(100)]],
|
|
119
|
-
});
|
|
120
|
-
this.formFgtPsw.get('recoverCdominioFgtPswodeRecPsw')?.setValue('');
|
|
121
|
-
this.formFgtPsw.get('usuarioFgtPsw')?.setValue('');
|
|
122
|
-
}
|
|
123
|
-
// Método para configuração dos campos de edição do formulário (Autenticação 2 Fatores)
|
|
124
|
-
createFormAuthentication2Fa() {
|
|
125
|
-
this.formAuthentication2Fa = this._formBuilder.group({
|
|
126
|
-
code: ['', [Validators.required, Validators.maxLength(6)]],
|
|
127
|
-
});
|
|
128
|
-
this.form.get('code')?.setValue('');
|
|
129
|
-
}
|
|
130
|
-
// #endregion FORM VALIDATORS
|
|
131
|
-
// #endregion ==========> FORM BUILDER <==========
|
|
132
|
-
// #region ==========> SERVICE METHODS <==========
|
|
133
|
-
// #region GET
|
|
134
|
-
// Obtém a Url do Config Erp
|
|
135
|
-
geturlErpConfig() {
|
|
136
|
-
// verificar depois
|
|
137
|
-
return `${this._environmentService.hostName}/SisproErpCloud/ConfigErp`;
|
|
138
|
-
}
|
|
139
|
-
/*
|
|
140
|
-
* Obtém os parâmetros de configuração do servidor para Autenticação Básica de segurança
|
|
141
|
-
*/
|
|
142
|
-
getServer() {
|
|
143
|
-
if (this.form.valid) {
|
|
144
|
-
this.isLoading = true;
|
|
145
|
-
this._serverService.getServer().subscribe({
|
|
146
|
-
next: response => {
|
|
147
|
-
this.logOn();
|
|
148
|
-
},
|
|
149
|
-
error: (error) => {
|
|
150
|
-
this.isLoading = false;
|
|
151
|
-
//this._projectUtilservice.showHttpError(error);
|
|
152
|
-
this._messageService.showAlertDanger(error);
|
|
153
|
-
//pode ser substituido por console.error
|
|
154
|
-
throw new Error(error);
|
|
155
|
-
},
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
FormUtils.validateFields(this.form);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// #endregion GET
|
|
163
|
-
// #region POST
|
|
164
|
-
// Executa o Login
|
|
165
|
-
logOn() {
|
|
166
|
-
this._authService.login(this.form.value).subscribe({
|
|
167
|
-
next: (response) => {
|
|
168
|
-
this.isLoading = false;
|
|
169
|
-
if (response.FeedbackMessage != "") {
|
|
170
|
-
this._toastrService.warning(response.FeedbackMessage, '', {
|
|
171
|
-
timeOut: 3000,
|
|
172
|
-
extendedTimeOut: 2000
|
|
173
|
-
});
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
//Incialização de Senha
|
|
177
|
-
if (response.InitializePassword) {
|
|
178
|
-
let param = btoa(`true$${this.dominio}$${this.usuario}$${response.statusSenha}`);
|
|
179
|
-
this._router.navigate([`auth/login/novaSenha/${param}`]);
|
|
180
|
-
this._toastrService.success("Verifique no seu e-mail o código de validação.");
|
|
181
|
-
}
|
|
182
|
-
if (response.InfraInAuthTypeId == 1 && response.InfraIn2FaTypeId != null && response.InfraIn2FaTypeId == 1 && response.Is2FaEnabled) {
|
|
183
|
-
this.createFormAuthentication2Fa();
|
|
184
|
-
this._subscription = this.countdown$.subscribe(secondsLeft => {
|
|
185
|
-
this.secondsLeft = secondsLeft;
|
|
186
|
-
});
|
|
187
|
-
this.showParmsAuthentication2Fa = true;
|
|
188
|
-
this._toastrService.success("Verifique no seu e-mail o código de validação.");
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
error: (error) => {
|
|
192
|
-
this.isLoading = false;
|
|
193
|
-
//this._projectUtilservice.showHttpError(error);
|
|
194
|
-
this._messageService.showAlertDanger(error);
|
|
195
|
-
throw new Error(error);
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
// Envia requisição para esquecer senha
|
|
200
|
-
sendForgottenPassword() {
|
|
201
|
-
if (this.formFgtPsw.valid) {
|
|
202
|
-
this._serverService.getServer().subscribe({
|
|
203
|
-
next: response => {
|
|
204
|
-
this.forgottenPassword();
|
|
205
|
-
},
|
|
206
|
-
error: (error) => {
|
|
207
|
-
//this._projectUtilservice.showHttpError(error);
|
|
208
|
-
this._messageService.showAlertDanger(error);
|
|
209
|
-
throw new Error(error);
|
|
210
|
-
},
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
FormUtils.validateFields(this.formFgtPsw);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// Requisição para esquecer senha
|
|
218
|
-
forgottenPassword() {
|
|
219
|
-
this._authService.forgottenPassword(this.formFgtPsw.value).subscribe({
|
|
220
|
-
next: (response) => {
|
|
221
|
-
this.closeForgottenPasswordModal();
|
|
222
|
-
let param = btoa(`false$${this.dominioFgtPsw}$${this.usuarioFgtPsw}$${3}`);
|
|
223
|
-
this._router.navigate([`auth/login/novaSenha/${param}`]);
|
|
224
|
-
this._toastrService.success("Verifique no seu e-mail o código de validação.");
|
|
225
|
-
},
|
|
226
|
-
error: (error) => {
|
|
227
|
-
//this._projectUtilservice.showHttpError(error);
|
|
228
|
-
this._messageService.showAlertDanger(error);
|
|
229
|
-
throw new Error(error);
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
// Envia requisição para validar código 2 fatores
|
|
234
|
-
sendCode() {
|
|
235
|
-
if (this.formAuthentication2Fa.valid) {
|
|
236
|
-
this.isLoadingSendAuthentication2Fa = true;
|
|
237
|
-
this.validateCode();
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
FormUtils.validateFields(this.formAuthentication2Fa);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
// Validação do código 2 fatores
|
|
244
|
-
validateCode() {
|
|
245
|
-
this._authService.validateAuthentication2Fa(this.code).subscribe({
|
|
246
|
-
next: (response) => {
|
|
247
|
-
this._subscription.unsubscribe();
|
|
248
|
-
this.isLoadingSendAuthentication2Fa = false;
|
|
249
|
-
},
|
|
250
|
-
error: (error) => {
|
|
251
|
-
this.isLoadingSendAuthentication2Fa = false;
|
|
252
|
-
//this._projectUtilservice.showHttpError(error);
|
|
253
|
-
this._messageService.showAlertDanger(error);
|
|
254
|
-
throw new Error(error);
|
|
255
|
-
},
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
// Envia requisição para validar código 2 fatores
|
|
259
|
-
getNewCode() {
|
|
260
|
-
this.isLoadingGetNewCode = true;
|
|
261
|
-
this._serverService.getServer().subscribe({
|
|
262
|
-
next: response => {
|
|
263
|
-
this._subscription = this.countdown$.subscribe(secondsLeft => {
|
|
264
|
-
this.secondsLeft = secondsLeft;
|
|
265
|
-
});
|
|
266
|
-
this.GetNewCode2Fa();
|
|
267
|
-
},
|
|
268
|
-
error: (error) => {
|
|
269
|
-
//this._projectUtilservice.showHttpError(error);
|
|
270
|
-
this._messageService.showAlertDanger(error);
|
|
271
|
-
throw new Error(error);
|
|
272
|
-
},
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
// Validação do código 2 fatores
|
|
276
|
-
GetNewCode2Fa() {
|
|
277
|
-
this._authService.GetNewCode2Fa().subscribe({
|
|
278
|
-
next: (response) => {
|
|
279
|
-
this.isLoadingGetNewCode = false;
|
|
280
|
-
this._toastrService.success("Enviamos um novo código para o endereço de e-mail vinculado ao seu usuário. Verifique o lixo eletrônico (SPAM) da sua caixa de entrada, caso não tenha encontrado nossa mensagem.");
|
|
281
|
-
},
|
|
282
|
-
error: (error) => {
|
|
283
|
-
this.isLoadingGetNewCode = false;
|
|
284
|
-
//this._projectUtilservice.showHttpError(error);
|
|
285
|
-
this._messageService.showAlertDanger(error);
|
|
286
|
-
throw new Error(error);
|
|
287
|
-
},
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
// #endregion POST
|
|
291
|
-
// #region UTILIDADES
|
|
292
|
-
// Retorno para a tela de login
|
|
293
|
-
voltar() {
|
|
294
|
-
this._subscription.unsubscribe();
|
|
295
|
-
this.showParmsAuthentication2Fa = false;
|
|
296
|
-
this._authStorageService.logout();
|
|
297
|
-
this._router.navigate(["/auth/login"]);
|
|
298
|
-
}
|
|
299
|
-
// #endregion UTILIDADES
|
|
300
|
-
// #endregion ==========> SERVICE METHODS <==========
|
|
301
|
-
// #region ==========> MODALS <==========
|
|
302
|
-
// Executa esquecer senha
|
|
303
|
-
openForgottenPasswordModal(template) {
|
|
304
|
-
this.createFormForgottenPassword();
|
|
305
|
-
this.modalRef = this._bsModalService.show(template, {
|
|
306
|
-
class: 'modal-dialog-centered',
|
|
307
|
-
ignoreBackdropClick: false,
|
|
308
|
-
keyboard: false,
|
|
309
|
-
id: this.idFgtPsw
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
// Encerra esquecer senha
|
|
313
|
-
closeForgottenPasswordModal() {
|
|
314
|
-
this._bsModalService.hide(this.idFgtPsw);
|
|
315
|
-
}
|
|
316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoginComponent, deps: [{ token: i1.BsModalService }, { token: i2.MessageService }, { token: i3.FormBuilder }, { token: i4.AuthService }, { token: i5.ServerService }, { token: i6.EnvironmentService }, { token: i7.AuthStorageService }, { token: i8.LibCustomLoginService }, { token: i9.Title }, { token: i10.Router }, { token: i11.ToastrService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
317
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoginComponent, selector: "lib-login", ngImport: i0, template: "<div class=\"container-fluid\">\r\n\t<div class=\"row\">\r\n\t\t<!-- Conte\u00FAdo da DIV do background -->\r\n\t\t<div class=\"col-md-7\">\r\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\r\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\r\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\r\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- Conte\u00FAdo da DIV de Login -->\r\n\t\t<div class=\"col-md-5\">\r\n\r\n\t\t\t<div class=\"div-size\">\r\n\t\t\t\t<div class=\"logotipo\">\r\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<form *ngIf=\"!showParmsAuthentication2Fa; else Authentication2Fa\" [formGroup]=\"form\" class=\"form-position\">\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"basic-addon1\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/cloud.svg\" alt=\"cloud icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"dominio\" id=\"dominio\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Dom\u00EDnio\" aria-label=\"Dom\u00EDnio\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('dominio'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('dominio')\" label=\"Dom\u00EDnio\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/at-sign.svg\" alt=\"at-sign icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"usuario\" id=\"usuario\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Usu\u00E1rio\" aria-label=\"Usu\u00E1rio\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('usuario'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('usuario')\" label=\"Usu\u00E1rio\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\" style=\"margin-bottom: 8px;\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px;\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"password\" class=\"form-control\" formControlName=\"senha\" id=\"senha\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Senha\" aria-label=\"senha\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('senha'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('senha')\" label=\"Senha\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"remember-password\">\r\n\t\t\t\t\t<!-- Lembrar Senha\r\n\t\t\t\t\t\t<input id=\"checkboxLembrarSenha\" type=\"checkbox\" />\r\n\t\t\t\t\t\t<label for=\"checkboxLembrarSenha\"> Lembrar minha senha </label>\r\n \t\t\t\t\t-->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<button [disabled]=\"isLoading\" (click)=\"getServer()\" type=\"submit\"\r\n\t\t\t\t\t\tclass=\"btn btn-primary btn-acessar btn-lg\">\r\n\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoading\"></app-loading-button>\r\n\t\t\t\t\t\t<span> Acessar </span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button type=\"button\" (click)=\"openForgottenPasswordModal(forgottenPasswordModal)\" class=\"forgotten-password\">\r\n\t\t\t\t\t\t<span> Esqueceu sua senha? </span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</form>\r\n\r\n\t\t\t\t<ng-template #Authentication2Fa>\r\n\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\r\n\t\t\t\t\t\t<div class=\"input-group input-group-lg form-item mb-3\">\r\n\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px;\">\r\n\t\t\t\t\t\t\t\t<img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" />\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\"\r\n\t\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"C\u00F3digo de 2 fatores\" aria-label=\"C\u00F3digo de 2 fatores\"\r\n\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\r\n\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" label=\"C\u00F3digo de 2 fatores\"></app-field-error-message>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row mb-3\">\r\n\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-acessar glb-btn-outline-dark-disabled col me-1\">\r\n\t\t\t\t\t\t\t\tVoltar\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-acessar btn-primary col ms-1\">\r\n\t\t\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoadingSendAuthentication2Fa\"></app-loading-button>\r\n\t\t\t\t\t\t\t\tAcessar\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t<button *ngIf=\"secondsLeft == 0; else newCode\" \r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoading\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-acessar btn-outline-primary col\">\r\n\t\t\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoading\"></app-loading-button>\r\n\t\t\t\t\t\t\t\tEnviar novo c\u00F3digo\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<ng-template #newCode>\r\n\t\t\t\t\t\t\t\t<p class=\"text-center\">{{ secondsLeft}} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo c\u00F3digo</p>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</form>\t\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"footer-position\">\r\n\t\t\t\t\t<footer>\r\n\t\t\t\t\t\t<span class=\"footer\"> \r\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"sispro text-primary\"> Pol\u00EDtica de Privacidade </a>\r\n\t\t\t\t\t\t\t<p class=\"separator\"> | </p>\r\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"sispro text-primary\"> Pol\u00EDtica de Cookies </a>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"footer\"> Desenvolvido por \r\n\t\t\t\t\t\t\t<a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"sispro text-primary\"> SISPRO </a>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"footer\"> Servi\u00E7os e Tecnologia da Informa\u00E7\u00E3o LTDA \u00A9 {{ year }} Todos os direitos reservados </span>\r\n\t\t\t\t\t\t\t<div class=\"icons\">\r\n\t\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t\t\t\t<a [href]=\"geturlErpConfig()\" style=\"text-decoration: none; font-size: 12px;\">\r\n\t\t\t\t\t\t\t\t\tConfigurar ERP\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</footer>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<!-- Template do modal de senha esquecida -->\r\n<ng-template #forgottenPasswordModal>\r\n\t<form [formGroup]=\"formFgtPsw\">\r\n\t\t<div class=\"modal-content\" style=\"box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.5);\">\r\n\t\t\t<div class=\"modal-header p-3\">\r\n\t\t\t\t<h4 class=\"modal-title\"> Recupera\u00E7\u00E3o de senha </h4>\r\n\t\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n\t\t\t\t\t(click)=\"closeForgottenPasswordModal()\">\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"modal-body\">\r\n\t\t\t\t<label for=\"inputDominioFgtPsw\" class=\"input-label\"> Dom\u00EDnio <span class=\"text-danger\">*</span></label>\r\n\t\t\t\t<input type=\"text\" id=\"inputDominioFgtPsw\" formControlName=\"dominioFgtPsw\"\r\n\t\t\t\t\tclass=\"form-control input-text\" aria-label=\"Sizing example input\" aria-label=\"Dom\u00EDnio\"\r\n\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\r\n\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" label=\"Dom\u00EDnio\"></app-field-error-message>\t\t\t\t\r\n\r\n\t\t\t\t<label for=\"inputUsuarioFgtPsw\" class=\"input-label\"> Usu\u00E1rio <span class=\"text-danger\">*</span></label>\r\n\t\t\t\t<input type=\"text\" id=\"inputUsuarioFgtPsw\" formControlName=\"usuarioFgtPsw\"\r\n\t\t\t\t\tclass=\"form-control input-text\" aria-label=\"Sizing example input\" aria-label=\"Usu\u00E1rio\"\r\n\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\r\n\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" label=\"Usu\u00E1rio\"></app-field-error-message>\t\t\t\t\r\n\t\t\r\n\t\t\t</div>\r\n\t\t\t<div class=\"modal-footer\">\r\n\t\t\t\t<button type=\"button\" class=\"btn glb-btn-dark-disabled modal-button\" (click)=\"closeForgottenPasswordModal()\">\r\n\t\t\t\t\t<span> Cancelar </span>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-primary modal-button\" (click)=\"sendForgottenPassword();\">\r\n\t\t\t\t\t<span> Continuar </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</form>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";*{padding:0;margin:0;font-family:Open Sans,sans-serif}.background{display:grid;height:100vh;align-content:center;background-size:cover;color:#f5f5f5;align-items:center;justify-content:center}.div-size{display:flex;flex-direction:column;justify-content:space-around;width:100%;height:100vh;align-items:center;background-color:#f5f5f5;box-shadow:0 0 15px #333}.title{font-size:3.5vw;text-transform:uppercase;font-weight:700}.subtitle{font-size:21px}.logotipo{display:flex;justify-content:center;margin-top:10%}.form-position{display:flex;flex-direction:column;align-content:center;width:378px}.form-item{margin-bottom:16px}.input-group-text{padding:10px 11px;border-radius:4px 0 0 4px}.remember-password{display:flex;align-items:center;margin-bottom:8px;justify-content:center}.remember-password label{margin-left:8px}.forgotten-password{background-color:#f5f5f5;border:none;text-decoration:underline;font-size:14px;box-shadow:none;margin-top:8px;cursor:pointer}.forgotten-password:focus{outline-style:none}.input-label{font-size:16px;padding:10px 0 8px 16px}.input-label:first-child{font-size:16px;padding-top:16px}.input-text{width:343px;height:38px;margin:0 0 10px 16px;padding:0 8px}.input-text:last-child{font-size:16px;margin-bottom:24px}.form-control{max-width:341px}.footer{display:flex;justify-content:center}.footer-position{font-size:14px;display:flex;justify-content:center;align-items:flex-end}.icons{display:flex;justify-content:center;align-items:center;margin-top:16px}.icons a{padding:4px}.icon-item{margin-left:24px;color:#007bff}.sispro{color:#2847a0;margin-left:5px;text-transform:uppercase;text-decoration:none;font-weight:700}.modal-footer{padding:0}.modal:before{content:\"\";display:inline-block;height:100%;vertical-align:middle}.modal-style{display:flex;align-items:center;justify-content:center}.modal-style h4{font-size:20px;font-weight:700;padding:10px}.modal-button{margin:16px 0;padding:7px 12px}.modal-button:last-child{margin-right:16px;margin-left:8px}.modal-close{display:flex;align-content:center;margin-right:10px;padding:6px}.col-md-7,.col-md-5{padding:0}.btn-acessar{height:48px;outline-style:none}.texto-apresentacao{align-items:start}.separator{margin-left:5px}\n"], dependencies: [{ kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.FieldErrorMessageComponent, selector: "app-field-error-message, lib-error-message", inputs: ["customMessage", "control", "label"] }, { kind: "component", type: i2.LoadingButtonComponent, selector: "app-loading-button, lib-loading-button", inputs: ["isLoading"] }, { kind: "component", type: i2.LibIconsComponent, selector: "lib-icon", inputs: ["iconName", "iconColor", "iconSize", "iconFill"] }], preserveWhitespaces: true }); }
|
|
318
|
-
}
|
|
319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoginComponent, decorators: [{
|
|
320
|
-
type: Component,
|
|
321
|
-
args: [{ selector: 'lib-login', standalone: false, preserveWhitespaces: true, template: "<div class=\"container-fluid\">\r\n\t<div class=\"row\">\r\n\t\t<!-- Conte\u00FAdo da DIV do background -->\r\n\t\t<div class=\"col-md-7\">\r\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\r\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\r\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\r\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- Conte\u00FAdo da DIV de Login -->\r\n\t\t<div class=\"col-md-5\">\r\n\r\n\t\t\t<div class=\"div-size\">\r\n\t\t\t\t<div class=\"logotipo\">\r\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<form *ngIf=\"!showParmsAuthentication2Fa; else Authentication2Fa\" [formGroup]=\"form\" class=\"form-position\">\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"basic-addon1\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/cloud.svg\" alt=\"cloud icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"dominio\" id=\"dominio\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Dom\u00EDnio\" aria-label=\"Dom\u00EDnio\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('dominio'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('dominio')\" label=\"Dom\u00EDnio\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/at-sign.svg\" alt=\"at-sign icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"usuario\" id=\"usuario\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Usu\u00E1rio\" aria-label=\"Usu\u00E1rio\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('usuario'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('usuario')\" label=\"Usu\u00E1rio\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group input-group-lg form-item\" style=\"margin-bottom: 8px;\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px;\">\r\n\t\t\t\t\t\t\t<img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" />\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<input type=\"password\" class=\"form-control\" formControlName=\"senha\" id=\"senha\"\r\n\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"Senha\" aria-label=\"senha\"\r\n\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('senha'))\">\r\n\t\t\t\t\t\t<app-field-error-message [control]=\"form.get('senha')\" label=\"Senha\"></app-field-error-message>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"remember-password\">\r\n\t\t\t\t\t<!-- Lembrar Senha\r\n\t\t\t\t\t\t<input id=\"checkboxLembrarSenha\" type=\"checkbox\" />\r\n\t\t\t\t\t\t<label for=\"checkboxLembrarSenha\"> Lembrar minha senha </label>\r\n \t\t\t\t\t-->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<button [disabled]=\"isLoading\" (click)=\"getServer()\" type=\"submit\"\r\n\t\t\t\t\t\tclass=\"btn btn-primary btn-acessar btn-lg\">\r\n\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoading\"></app-loading-button>\r\n\t\t\t\t\t\t<span> Acessar </span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button type=\"button\" (click)=\"openForgottenPasswordModal(forgottenPasswordModal)\" class=\"forgotten-password\">\r\n\t\t\t\t\t\t<span> Esqueceu sua senha? </span>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</form>\r\n\r\n\t\t\t\t<ng-template #Authentication2Fa>\r\n\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\r\n\t\t\t\t\t\t<div class=\"input-group input-group-lg form-item mb-3\">\r\n\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t\tstyle=\"padding: 10px; border-radius: 4px 0px 0px 4px;\">\r\n\t\t\t\t\t\t\t\t<img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" />\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\"\r\n\t\t\t\t\t\t\t\taria-label=\"Sizing example input\" placeholder=\"C\u00F3digo de 2 fatores\" aria-label=\"C\u00F3digo de 2 fatores\"\r\n\t\t\t\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\r\n\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" label=\"C\u00F3digo de 2 fatores\"></app-field-error-message>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row mb-3\">\r\n\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-acessar glb-btn-outline-dark-disabled col me-1\">\r\n\t\t\t\t\t\t\t\tVoltar\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-acessar btn-primary col ms-1\">\r\n\t\t\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoadingSendAuthentication2Fa\"></app-loading-button>\r\n\t\t\t\t\t\t\t\tAcessar\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t<button *ngIf=\"secondsLeft == 0; else newCode\" \r\n\t\t\t\t\t\t\t\t[disabled]=\"isLoading\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-acessar btn-outline-primary col\">\r\n\t\t\t\t\t\t\t\t<app-loading-button [isLoading]=\"isLoading\"></app-loading-button>\r\n\t\t\t\t\t\t\t\tEnviar novo c\u00F3digo\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<ng-template #newCode>\r\n\t\t\t\t\t\t\t\t<p class=\"text-center\">{{ secondsLeft}} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo c\u00F3digo</p>\r\n\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</form>\t\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"footer-position\">\r\n\t\t\t\t\t<footer>\r\n\t\t\t\t\t\t<span class=\"footer\"> \r\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"sispro text-primary\"> Pol\u00EDtica de Privacidade </a>\r\n\t\t\t\t\t\t\t<p class=\"separator\"> | </p>\r\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"sispro text-primary\"> Pol\u00EDtica de Cookies </a>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"footer\"> Desenvolvido por \r\n\t\t\t\t\t\t\t<a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"sispro text-primary\"> SISPRO </a>\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t<span class=\"footer\"> Servi\u00E7os e Tecnologia da Informa\u00E7\u00E3o LTDA \u00A9 {{ year }} Todos os direitos reservados </span>\r\n\t\t\t\t\t\t\t<div class=\"icons\">\r\n\t\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\">\r\n\t\t\t\t\t\t\t\t\t<lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t\t\t\t<a [href]=\"geturlErpConfig()\" style=\"text-decoration: none; font-size: 12px;\">\r\n\t\t\t\t\t\t\t\t\tConfigurar ERP\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</footer>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<!-- Template do modal de senha esquecida -->\r\n<ng-template #forgottenPasswordModal>\r\n\t<form [formGroup]=\"formFgtPsw\">\r\n\t\t<div class=\"modal-content\" style=\"box-shadow: 2px 2px 5px 0px rgba(0,0,0,0.5);\">\r\n\t\t\t<div class=\"modal-header p-3\">\r\n\t\t\t\t<h4 class=\"modal-title\"> Recupera\u00E7\u00E3o de senha </h4>\r\n\t\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n\t\t\t\t\t(click)=\"closeForgottenPasswordModal()\">\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"modal-body\">\r\n\t\t\t\t<label for=\"inputDominioFgtPsw\" class=\"input-label\"> Dom\u00EDnio <span class=\"text-danger\">*</span></label>\r\n\t\t\t\t<input type=\"text\" id=\"inputDominioFgtPsw\" formControlName=\"dominioFgtPsw\"\r\n\t\t\t\t\tclass=\"form-control input-text\" aria-label=\"Sizing example input\" aria-label=\"Dom\u00EDnio\"\r\n\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\r\n\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" label=\"Dom\u00EDnio\"></app-field-error-message>\t\t\t\t\r\n\r\n\t\t\t\t<label for=\"inputUsuarioFgtPsw\" class=\"input-label\"> Usu\u00E1rio <span class=\"text-danger\">*</span></label>\r\n\t\t\t\t<input type=\"text\" id=\"inputUsuarioFgtPsw\" formControlName=\"usuarioFgtPsw\"\r\n\t\t\t\t\tclass=\"form-control input-text\" aria-label=\"Sizing example input\" aria-label=\"Usu\u00E1rio\"\r\n\t\t\t\t\taria-describedby=\"inputGroup-sizing-lg\"\r\n\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\r\n\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" label=\"Usu\u00E1rio\"></app-field-error-message>\t\t\t\t\r\n\t\t\r\n\t\t\t</div>\r\n\t\t\t<div class=\"modal-footer\">\r\n\t\t\t\t<button type=\"button\" class=\"btn glb-btn-dark-disabled modal-button\" (click)=\"closeForgottenPasswordModal()\">\r\n\t\t\t\t\t<span> Cancelar </span>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-primary modal-button\" (click)=\"sendForgottenPassword();\">\r\n\t\t\t\t\t<span> Continuar </span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</form>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";*{padding:0;margin:0;font-family:Open Sans,sans-serif}.background{display:grid;height:100vh;align-content:center;background-size:cover;color:#f5f5f5;align-items:center;justify-content:center}.div-size{display:flex;flex-direction:column;justify-content:space-around;width:100%;height:100vh;align-items:center;background-color:#f5f5f5;box-shadow:0 0 15px #333}.title{font-size:3.5vw;text-transform:uppercase;font-weight:700}.subtitle{font-size:21px}.logotipo{display:flex;justify-content:center;margin-top:10%}.form-position{display:flex;flex-direction:column;align-content:center;width:378px}.form-item{margin-bottom:16px}.input-group-text{padding:10px 11px;border-radius:4px 0 0 4px}.remember-password{display:flex;align-items:center;margin-bottom:8px;justify-content:center}.remember-password label{margin-left:8px}.forgotten-password{background-color:#f5f5f5;border:none;text-decoration:underline;font-size:14px;box-shadow:none;margin-top:8px;cursor:pointer}.forgotten-password:focus{outline-style:none}.input-label{font-size:16px;padding:10px 0 8px 16px}.input-label:first-child{font-size:16px;padding-top:16px}.input-text{width:343px;height:38px;margin:0 0 10px 16px;padding:0 8px}.input-text:last-child{font-size:16px;margin-bottom:24px}.form-control{max-width:341px}.footer{display:flex;justify-content:center}.footer-position{font-size:14px;display:flex;justify-content:center;align-items:flex-end}.icons{display:flex;justify-content:center;align-items:center;margin-top:16px}.icons a{padding:4px}.icon-item{margin-left:24px;color:#007bff}.sispro{color:#2847a0;margin-left:5px;text-transform:uppercase;text-decoration:none;font-weight:700}.modal-footer{padding:0}.modal:before{content:\"\";display:inline-block;height:100%;vertical-align:middle}.modal-style{display:flex;align-items:center;justify-content:center}.modal-style h4{font-size:20px;font-weight:700;padding:10px}.modal-button{margin:16px 0;padding:7px 12px}.modal-button:last-child{margin-right:16px;margin-left:8px}.modal-close{display:flex;align-content:center;margin-right:10px;padding:6px}.col-md-7,.col-md-5{padding:0}.btn-acessar{height:48px;outline-style:none}.texto-apresentacao{align-items:start}.separator{margin-left:5px}\n"] }]
|
|
322
|
-
}], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.MessageService }, { type: i3.FormBuilder }, { type: i4.AuthService }, { type: i5.ServerService }, { type: i6.EnvironmentService }, { type: i7.AuthStorageService }, { type: i8.LibCustomLoginService }, { type: i9.Title }, { type: i10.Router }, { type: i11.ToastrService }] });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWF1dGgvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1hdXRoL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBY3pELE1BQU0sT0FBTyxjQUFjO0lBRTFCLFlBQ1MsZUFBK0IsRUFDL0IsZUFBK0IsRUFDL0IsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsY0FBNkIsRUFDN0IsbUJBQXVDLEVBQ3ZDLG1CQUF1QyxFQUN4QyxtQkFBMEMsRUFDekMsTUFBYSxFQUNiLE9BQWUsRUFDZixjQUE2QjtRQVY3QixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQ3pDLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFHdEMsNkNBQTZDO1FBRTdDLGtCQUFrQjtRQUVWLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFRN0Isc0VBQXNFO1FBQy9ELGdCQUFXLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixTQUFJLEdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU5QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG1DQUE4QixHQUFZLEtBQUssQ0FBQztRQUNoRCwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFDbkMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRTVDLHdGQUF3RjtRQUV4Riw4REFBOEQ7UUFFOUQsb0JBQW9CO1FBRXBCLGdCQUFnQjtRQUVSLGtCQUFhLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDNUIsZ0JBQVcsR0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRXhDLGVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBRTVCLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsY0FBYyxDQUFDLENBQzFELENBQUM7UUFFRixtQkFBbUI7UUFFbkIsK0NBQStDO1FBQ3hDLFNBQUksR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxlQUFVLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsMEJBQXFCLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUE5Q3hELENBQUM7SUE2QzRDLENBQUM7SUFDVSxDQUFDO0lBRTdELHlGQUF5RjtJQUN6RixJQUFXLFNBQVM7UUFDbkIsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUVELG9CQUFvQjtJQUVwQiw4RUFBOEU7SUFDOUUsSUFBVyxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsSUFBVyxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQUVELCtGQUErRjtJQUMvRixJQUFXLElBQUk7UUFDZCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RELENBQUM7SUFFRCx1QkFBdUI7SUFFdkIsZ0RBQWdEO0lBRWhELFFBQVE7UUFFUCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFOUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQy9DLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7UUFDbkYsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsRCxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDO1FBQ3pGLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELDBCQUEwQjtJQUUxQix1RUFBdUU7SUFDL0QsVUFBVTtRQUVqQiw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDbkMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlELE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM3RCxDQUFDLENBQUM7UUFDSixDQUFDO2FBQ0ksQ0FBQztZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JHLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3ZHLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDRixDQUFDO0lBRUQsd0ZBQXdGO0lBQ2hGLDJCQUEyQjtRQUVsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3pDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsd0ZBQXdGO0lBQ2hGLDJCQUEyQjtRQUVsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDcEQsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDMUQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCw2QkFBNkI7SUFFN0Isa0RBQWtEO0lBRWxELGtEQUFrRDtJQUVsRCxjQUFjO0lBRWQsNEJBQTRCO0lBQ3JCLGVBQWU7UUFDckIsb0JBQW9CO1FBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSwyQkFBMkIsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7O01BRUU7SUFDSyxTQUFTO1FBRWYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBRXRCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUN6QyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFFdkIsZ0RBQWdEO29CQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFNUMsd0NBQXdDO29CQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUN2QixDQUFDO2FBQ0QsQ0FBQyxDQUFBO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDUCxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0YsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixlQUFlO0lBRWYsbUJBQW1CO0lBQ1osS0FBSztRQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFFdkIsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUNuRCxFQUFFLEVBQ0Y7d0JBQ0MsT0FBTyxFQUFFLElBQUk7d0JBQ2IsZUFBZSxFQUFFLElBQUk7cUJBQ3JCLENBQ0QsQ0FBQztvQkFFRixPQUFPO2dCQUNSLENBQUM7Z0JBRUQsdUJBQXVCO2dCQUN2QixJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUNqQyxJQUFJLEtBQUssR0FBVyxJQUFJLENBQUMsUUFBUyxJQUFJLENBQUMsT0FBUSxJQUFLLElBQUksQ0FBQyxPQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBRTdGLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsd0JBQXdCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFFekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZ0RBQWdELENBQUMsQ0FBQztnQkFDL0UsQ0FBQztnQkFFRCxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDckksSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7b0JBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO29CQUNoQyxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO29CQUV2QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO2dCQUMvRSxDQUFDO1lBRUYsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFFdkIsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QixDQUFDO1NBQ0QsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUVELHVDQUF1QztJQUNoQyxxQkFBcUI7UUFFM0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUN6QyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNoQixnREFBZ0Q7b0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUN2QixDQUFDO2FBQ0QsQ0FBQyxDQUFBO1FBRUgsQ0FBQzthQUFNLENBQUM7WUFDUCxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBRUYsQ0FBQztJQUVELGlDQUFpQztJQUMxQixpQkFBaUI7UUFFdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7Z0JBRW5DLElBQUksS0FBSyxHQUFXLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUVuRixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdCQUF3QixLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXpELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNoQixnREFBZ0Q7Z0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3ZCLENBQUM7U0FDRCxDQUFDLENBQUM7SUFFSixDQUFDO0lBRUQsaURBQWlEO0lBQzFDLFFBQVE7UUFFZCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO1lBRTNDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNQLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUVGLENBQUM7SUFFRCxnQ0FBZ0M7SUFDekIsWUFBWTtRQUVsQixJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEUsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBRWpDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUM7WUFDN0MsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsOEJBQThCLEdBQUcsS0FBSyxDQUFDO2dCQUU1QyxnREFBZ0Q7Z0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3ZCLENBQUM7U0FDRCxDQUFDLENBQUM7SUFFSixDQUFDO0lBRUQsaURBQWlEO0lBQzFDLFVBQVU7UUFDaEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUVoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNoQixnREFBZ0Q7Z0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3ZCLENBQUM7U0FDRCxDQUFDLENBQUM7SUFFSixDQUFDO0lBRUQsZ0NBQWdDO0lBQ3pCLGFBQWE7UUFFbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7Z0JBRWpDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLG1MQUFtTCxDQUFDLENBQUM7WUFDbE4sQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUVqQyxnREFBZ0Q7Z0JBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLENBQUM7U0FDRCxDQUFDLENBQUM7SUFFSixDQUFDO0lBRUQsa0JBQWtCO0lBRWxCLHFCQUFxQjtJQUVyQiwrQkFBK0I7SUFDeEIsTUFBTTtRQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztRQUV4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCx3QkFBd0I7SUFFeEIscURBQXFEO0lBRXJELHlDQUF5QztJQUV6Qyx5QkFBeUI7SUFDbEIsMEJBQTBCLENBQUMsUUFBMEI7UUFDM0QsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFFbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkQsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixtQkFBbUIsRUFBRSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ2pCLENBQUMsQ0FBQztJQUVKLENBQUM7SUFFRCx5QkFBeUI7SUFDbEIsMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQXZaVyxjQUFjO21HQUFkLGNBQWMsaURDdEIzQixvbVZBZ0xBOzs0RkQxSmEsY0FBYztrQkFQMUIsU0FBUzsrQkFDQyxXQUFXLGNBR1QsS0FBSyx1QkFDSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJzTW9kYWxSZWYsIEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgbWFwLCBTdWJzY3JpcHRpb24sIHRha2UsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBGb3JtVXRpbHMsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LXNwLWluZnJhJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWJDdXN0b21Mb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20vY3VzdG9tLWxvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmVyL3NlcnZlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmFnZS9hdXRoLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1sb2dpbicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuc2NzcyddLFxyXG5cdHN0YW5kYWxvbmU6IGZhbHNlLFxyXG5cdHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBfYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG5cdFx0cHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfc2VydmVyU2VydmljZTogU2VydmVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX2Vudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfYXV0aFN0b3JhZ2VTZXJ2aWNlOiBBdXRoU3RvcmFnZVNlcnZpY2UsXHJcblx0XHRwdWJsaWMgX2N1c3RvbUxvZ2luU2VydmljZTogTGliQ3VzdG9tTG9naW5TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdGl0bGU6IFRpdGxlLFxyXG5cdFx0cHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIF90b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlXHJcblx0KSB7IH1cclxuXHJcblx0Ly8gI3JlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG5cdC8vICNyZWdpb24gUFJJVkFURVxyXG5cclxuXHRwcml2YXRlIGlkRmd0UHN3OiBudW1iZXIgPSAxO1xyXG5cclxuXHQvLyAjZW5kcmVnaW9uIFBSSVZBVEVcclxuXHJcblx0Ly8gI3JlZ2lvbiBQVUJMSUNcclxuXHJcblx0cHVibGljIG1vZGFsUmVmPzogQnNNb2RhbFJlZjtcclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3NcclxuXHRwdWJsaWMgY3VycmVudFRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdHB1YmxpYyB5ZWFyOiBudW1iZXIgPSB0aGlzLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCk7XHJcblxyXG5cdHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgaXNMb2FkaW5nU2VuZEF1dGhlbnRpY2F0aW9uMkZhOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIHNob3dQYXJtc0F1dGhlbnRpY2F0aW9uMkZhID0gZmFsc2U7XHJcblx0cHVibGljIGlzTG9hZGluZ0dldE5ld0NvZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Ly9wcm9wcmllZGFkZXMgcXVlIHbDo28gcmVjZWJlciBvcyB2YWxvcmVzIGRvIGN1c3RvbUxvZ2luU2VydmljZSAjIyMjVkVSSUZJQ0FSIERFUE9JUyMjIyNcclxuXHJcblx0Ly8gQElucHV0KCkgY3VzdG9tUHJvcHJpZWRhZGVzTG9naW4/OiBDdXN0b21Qcm9wcmllZGFkZXNMb2dpbjtcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBQVUJMSUNcclxuXHJcblx0Ly8gI3JlZ2lvbiBUaW1lclxyXG5cclxuXHRwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHRwcml2YXRlIHRpbWVyRHVyYXRpb246IG51bWJlciA9IDkwO1xyXG5cdHB1YmxpYyBzZWNvbmRzTGVmdDogbnVtYmVyID0gdGhpcy50aW1lckR1cmF0aW9uO1xyXG5cclxuXHRwcml2YXRlIGNvdW50ZG93biQgPSB0aW1lcigwLCAxMDAwKS5waXBlKFxyXG5cdFx0dGFrZSh0aGlzLnRpbWVyRHVyYXRpb24gKyAxKSxcclxuXHJcblx0XHRtYXAoc2Vjb25kc0VsYXBzZWQgPT4gdGhpcy50aW1lckR1cmF0aW9uIC0gc2Vjb25kc0VsYXBzZWQpXHJcblx0KTtcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBUaW1lclxyXG5cclxuXHQvLyAjcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxyXG5cdHB1YmxpYyBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHRwdWJsaWMgZm9ybUZndFBzdzogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7O1xyXG5cdHB1YmxpYyBmb3JtQXV0aGVudGljYXRpb24yRmE6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pOztcclxuXHJcblx0Ly8gIFByb3ByaWVkYWRlIG5lY2Vzc8OhcmlvIHBhcmEgcXVlIGEgY2xhc3NlIHN0YXRpYyBGb3JtVXRpbHMgcG9zc2Egc2VyIHV0aWxpemFkYSBubyBIdG1sXHJcblx0cHVibGljIGdldCBGb3JtVXRpbHMoKTogdHlwZW9mIEZvcm1VdGlscyB7XHJcblx0XHRyZXR1cm4gRm9ybVV0aWxzO1xyXG5cdH1cclxuXHJcblx0Ly8gI3JlZ2lvbiBGT1JNIERBVEFcclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3MgKExvZ2luKVxyXG5cdHB1YmxpYyBnZXQgZG9taW5pbygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2RvbWluaW8nKT8udmFsdWU7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0IHVzdWFyaW8oKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLmZvcm0uZ2V0KCd1c3VhcmlvJyk/LnZhbHVlO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldCBzZW5oYSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NlbmhhJyk/LnZhbHVlO1xyXG5cdH1cclxuXHJcblx0Ly8gIFZhcmnDoXZlaXMgZXNwZWPDrWZpY2FzIHBhcmEgZnVuY2lvbmFsaWRhZGVzIHBhZHLDtWVzIGRvcyBmb3JtdWzDoXJpb3MgKFJlcXVlc3RSZWNvdmVyUGFzc3dvcmQpXHJcblx0cHVibGljIGdldCBkb21pbmlvRmd0UHN3KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb3JtRmd0UHN3LmdldCgnZG9taW5pb0ZndFBzdycpPy52YWx1ZTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXQgdXN1YXJpb0ZndFBzdygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKT8udmFsdWU7XHJcblx0fVxyXG5cclxuXHQvLyAgVmFyacOhdmVpcyBlc3BlY8OtZmljYXMgcGFyYSBmdW5jaW9uYWxpZGFkZXMgcGFkcsO1ZXMgZG9zIGZvcm11bMOhcmlvcyAoQXV0ZW50aWNhw6fDo28gMiBGYXRvcmVzKVxyXG5cdHB1YmxpYyBnZXQgY29kZSgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMuZm9ybUF1dGhlbnRpY2F0aW9uMkZhLmdldCgnY29kZScpPy52YWx1ZTtcclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gRk9STSBEQVRBXHJcblxyXG5cdC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl90aXRsZS5zZXRUaXRsZSh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5QYWdlVGl0bGUpO1xyXG5cclxuXHRcdGlmICh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5UaXRsZSAhPSBcIlwiKSB7XHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikhLmlubmVySFRNTCA9IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpblRpdGxlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5TdWJ0aXRsZSAhPSBcIlwiKSB7XHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3VidGl0bGVcIikhLmlubmVySFRNTCA9IHRoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpblN1YnRpdGxlO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5jcmVhdGVGb3JtKCk7XHJcblx0fVxyXG5cclxuXHQvLyAjcmVnaW9uIEZPUk0gVkFMSURBVE9SU1xyXG5cclxuXHQvLyAgTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvcyBjYW1wb3MgZGUgZWRpw6fDo28gZG8gZm9ybXVsw6FyaW8gKExvZ2luKVxyXG5cdHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcclxuXHJcblx0XHQvLyAgRGFkb3Mgb3JpZ2luYWlzIGRlIExvZ2luXHJcblx0XHRpZiAodGhpcy5fZW52aXJvbm1lbnRTZXJ2aWNlLnByb2R1Y3Rpb24pIHtcclxuXHRcdFx0dGhpcy5mb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG5cdFx0XHRcdGRvbWluaW86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG5cdFx0XHRcdHVzdWFyaW86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXSxcclxuXHRcdFx0XHRzZW5oYTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMuZm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdFx0XHRkb21pbmlvOiBbdGhpcy5fY3VzdG9tTG9naW5TZXJ2aWNlLmxvZ2luRGVzZW52RG9tYWluLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXHJcblx0XHRcdFx0dXN1YXJpbzogW3RoaXMuX2N1c3RvbUxvZ2luU2VydmljZS5sb2dpbkRlc2VudlVzZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXV0sXHJcblx0XHRcdFx0c2VuaGE6IFt0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5EZXNlbnZQYXNzd29yZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldXVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vICBNw6l0b2RvIHBhcmEgY29uZmlndXJhw6fDo28gZG9zIGNhbXBvcyBkZSBlZGnDp8OjbyBkbyBmb3JtdWzDoXJpbyAoUmVxdWVzdFJlY292ZXJQYXNzd29yZClcclxuXHRwcml2YXRlIGNyZWF0ZUZvcm1Gb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm1GZ3RQc3cgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XHJcblx0XHRcdGRvbWluaW9GZ3RQc3c6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG5cdFx0XHR1c3VhcmlvRmd0UHN3OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApXV0sXHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmZvcm1GZ3RQc3cuZ2V0KCdyZWNvdmVyQ2RvbWluaW9GZ3RQc3dvZGVSZWNQc3cnKT8uc2V0VmFsdWUoJycpO1xyXG5cdFx0dGhpcy5mb3JtRmd0UHN3LmdldCgndXN1YXJpb0ZndFBzdycpPy5zZXRWYWx1ZSgnJyk7XHJcblx0fVxyXG5cclxuXHQvLyAgTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRvcyBjYW1wb3MgZGUgZWRpw6fDo28gZG8gZm9ybXVsw6FyaW8gKEF1dGVudGljYcOnw6NvIDIgRmF0b3JlcylcclxuXHRwcml2YXRlIGNyZWF0ZUZvcm1BdXRoZW50aWNhdGlvbjJGYSgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm1BdXRoZW50aWNhdGlvbjJGYSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdFx0Y29kZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildXSxcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZm9ybS5nZXQoJ2NvZGUnKT8uc2V0VmFsdWUoJycpO1xyXG5cdH1cclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiBGT1JNIFZBTElEQVRPUlNcclxuXHJcblx0Ly8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBGT1JNIEJVSUxERVIgPD09PT09PT09PT1cclxuXHJcblx0Ly8gI3JlZ2lvbiA9PT09PT09PT09PiBTRVJWSUNFIE1FVEhPRFMgPD09PT09PT09PT1cclxuXHJcblx0Ly8gI3JlZ2lvbiBHRVRcclxuXHJcblx0Ly8gT2J0w6ltIGEgVXJsIGRvIENvbmZpZyBFcnBcclxuXHRwdWJsaWMgZ2V0dXJsRXJwQ29uZmlnKCk6IHN0cmluZyB7XHJcblx0XHQvLyB2ZXJpZmljYXIgZGVwb2lzIFxyXG5cdFx0cmV0dXJuIGAke3RoaXMuX2Vudmlyb25tZW50U2VydmljZS5ob3N0TmFtZX0vU2lzcHJvRXJwQ2xvdWQvQ29uZmlnRXJwYDtcclxuXHR9XHJcblxyXG5cdC8qXHJcblx0KiBPYnTDqW0gb3MgcGFyw6JtZXRyb3MgZGUgY29uZmlndXJhw6fDo28gZG8gc2Vydmlkb3IgcGFyYSBBdXRlbnRpY2HDp8OjbyBCw6FzaWNhIGRlIHNlZ3VyYW7Dp2FcclxuXHQqL1xyXG5cdHB1YmxpYyBnZXRTZXJ2ZXIoKTogdm9pZCB7XHJcblxyXG5cdFx0aWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG5cdFx0XHR0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG5cdFx0XHR0aGlzLl9zZXJ2ZXJTZXJ2aWNlLmdldFNlcnZlcigpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogcmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dPbigpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblxyXG5cdFx0XHRcdFx0Ly9wb2RlIHNlciBzdWJzdGl0dWlkbyBwb3IgY29uc29sZS5lcnJvclxyXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0pXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gR0VUXHJcblxyXG5cdC8vICNyZWdpb24gUE9TVFxyXG5cclxuXHQvLyAgRXhlY3V0YSBvIExvZ2luXHJcblx0cHVibGljIGxvZ09uKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fYXV0aFNlcnZpY2UubG9naW4odGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHRpZiAocmVzcG9uc2UuRmVlZGJhY2tNZXNzYWdlICE9IFwiXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uud2FybmluZyhyZXNwb25zZS5GZWVkYmFja01lc3NhZ2UsXHJcblx0XHRcdFx0XHRcdCcnLFxyXG5cdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0dGltZU91dDogMzAwMCxcclxuXHRcdFx0XHRcdFx0XHRleHRlbmRlZFRpbWVPdXQ6IDIwMDBcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvL0luY2lhbGl6YcOnw6NvIGRlIFNlbmhhXHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLkluaXRpYWxpemVQYXNzd29yZCkge1xyXG5cdFx0XHRcdFx0bGV0IHBhcmFtOiBzdHJpbmcgPSBidG9hKGB0cnVlJCR7IHRoaXMuZG9taW5pbyB9JCR7IHRoaXMudXN1YXJpbyB9JCR7cmVzcG9uc2Uuc3RhdHVzU2VuaGF9YCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlKFtgYXV0aC9sb2dpbi9ub3ZhU2VuaGEvJHtwYXJhbX1gXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RyU2VydmljZS5zdWNjZXNzKFwiVmVyaWZpcXVlIG5vIHNldSBlLW1haWwgbyBjw7NkaWdvIGRlIHZhbGlkYcOnw6NvLlwiKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmIChyZXNwb25zZS5JbmZyYUluQXV0aFR5cGVJZCA9PSAxICYmIHJlc3BvbnNlLkluZnJhSW4yRmFUeXBlSWQgIT0gbnVsbCAmJiByZXNwb25zZS5JbmZyYUluMkZhVHlwZUlkID09IDEgJiYgcmVzcG9uc2UuSXMyRmFFbmFibGVkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZUZvcm1BdXRoZW50aWNhdGlvbjJGYSgpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuY291bnRkb3duJC5zdWJzY3JpYmUoc2Vjb25kc0xlZnQgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNlY29uZHNMZWZ0ID0gc2Vjb25kc0xlZnQ7XHJcblx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLnNob3dQYXJtc0F1dGhlbnRpY2F0aW9uMkZhID0gdHJ1ZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoXCJWZXJpZmlxdWUgbm8gc2V1IGUtbWFpbCBvIGPDs2RpZ28gZGUgdmFsaWRhw6fDo28uXCIpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHR0aGlzLl9tZXNzYWdlU2VydmljZS5zaG93QWxlcnREYW5nZXIoZXJyb3IpO1xyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihlcnJvcilcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vIEVudmlhIHJlcXVpc2nDp8OjbyBwYXJhIGVzcXVlY2VyIHNlbmhhXHJcblx0cHVibGljIHNlbmRGb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHRpZiAodGhpcy5mb3JtRmd0UHN3LnZhbGlkKSB7XHJcblx0XHRcdHRoaXMuX3NlcnZlclNlcnZpY2UuZ2V0U2VydmVyKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiByZXNwb25zZSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmZvcmdvdHRlblBhc3N3b3JkKCk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHQvL3RoaXMuX3Byb2plY3RVdGlsc2VydmljZS5zaG93SHR0cEVycm9yKGVycm9yKTtcclxuXHRcdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSlcclxuXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRGb3JtVXRpbHMudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtRmd0UHN3KTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQvLyBSZXF1aXNpw6fDo28gcGFyYSBlc3F1ZWNlciBzZW5oYVxyXG5cdHB1YmxpYyBmb3Jnb3R0ZW5QYXNzd29yZCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl9hdXRoU2VydmljZS5mb3Jnb3R0ZW5QYXNzd29yZCh0aGlzLmZvcm1GZ3RQc3cudmFsdWUpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY2xvc2VGb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKCk7XHJcblxyXG5cdFx0XHRcdGxldCBwYXJhbTogc3RyaW5nID0gYnRvYShgZmFsc2UkJHt0aGlzLmRvbWluaW9GZ3RQc3d9JCR7dGhpcy51c3VhcmlvRmd0UHN3fSQkezN9YCk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbYGF1dGgvbG9naW4vbm92YVNlbmhhLyR7cGFyYW19YF0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoXCJWZXJpZmlxdWUgbm8gc2V1IGUtbWFpbCBvIGPDs2RpZ28gZGUgdmFsaWRhw6fDo28uXCIpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0Ly90aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcblx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0fVxyXG5cclxuXHQvLyBFbnZpYSByZXF1aXNpw6fDo28gcGFyYSB2YWxpZGFyIGPDs2RpZ28gMiBmYXRvcmVzXHJcblx0cHVibGljIHNlbmRDb2RlKCk6IHZvaWQge1xyXG5cclxuXHRcdGlmICh0aGlzLmZvcm1BdXRoZW50aWNhdGlvbjJGYS52YWxpZCkge1xyXG5cdFx0XHR0aGlzLmlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYSA9IHRydWU7XHJcblxyXG5cdFx0XHR0aGlzLnZhbGlkYXRlQ29kZSgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Rm9ybVV0aWxzLnZhbGlkYXRlRmllbGRzKHRoaXMuZm9ybUF1dGhlbnRpY2F0aW9uMkZhKTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQvLyBWYWxpZGHDp8OjbyBkbyBjw7NkaWdvIDIgZmF0b3Jlc1xyXG5cdHB1YmxpYyB2YWxpZGF0ZUNvZGUoKTogdm9pZCB7XHJcblxyXG5cdFx0dGhpcy5fYXV0aFNlcnZpY2UudmFsaWRhdGVBdXRoZW50aWNhdGlvbjJGYSh0aGlzLmNvZGUpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cclxuXHRcdFx0XHR0aGlzLmlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYSA9IGZhbHNlO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmdTZW5kQXV0aGVudGljYXRpb24yRmEgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0Ly90aGlzLl9wcm9qZWN0VXRpbHNlcnZpY2Uuc2hvd0h0dHBFcnJvcihlcnJvcik7XHJcblx0XHRcdFx0dGhpcy5fbWVzc2FnZVNlcnZpY2Uuc2hvd0FsZXJ0RGFuZ2VyKGVycm9yKTtcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IpXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHJcblx0fVxyXG5cclxuXHQvLyBFbnZpYSByZXF1aXNpw6fDo28gcGFyYSB2YWxpZGFyIGPDs2RpZ28gMiBmYXRvcmVzXHJcblx0cHVibGljIGdldE5ld0NvZGUoKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzTG9hZGluZ0dldE5ld0NvZGUgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuX3NlcnZlclNlcnZpY2UuZ2V0U2VydmVyKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogcmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuY291bnRkb3duJC5zdWJzY3JpYmUoc2Vjb25kc0xlZnQgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWNvbmRzTGVmdCA9IHNlY29uZHNMZWZ0O1xyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLkdldE5ld0NvZGUyRmEoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdC8vdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKVxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblxyXG5cdH1cclxuXHJcblx0Ly8gVmFsaWRhw6fDo28gZG8gY8OzZGlnbyAyIGZhdG9yZXNcclxuXHRwdWJsaWMgR2V0TmV3Q29kZTJGYSgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLl9hdXRoU2VydmljZS5HZXROZXdDb2RlMkZhKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmdHZXROZXdDb2RlID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcyhcIkVudmlhbW9zIHVtIG5vdm8gY8OzZGlnbyBwYXJhIG8gZW5kZXJlw6dvIGRlIGUtbWFpbCB2aW5jdWxhZG8gYW8gc2V1IHVzdcOhcmlvLiBWZXJpZmlxdWUgbyBsaXhvIGVsZXRyw7RuaWNvIChTUEFNKSBkYSBzdWEgY2FpeGEgZGUgZW50cmFkYSwgY2FzbyBuw6NvIHRlbmhhIGVuY29udHJhZG8gbm9zc2EgbWVuc2FnZW0uXCIpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmdHZXROZXdDb2RlID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdC8vdGhpcy5fcHJvamVjdFV0aWxzZXJ2aWNlLnNob3dIdHRwRXJyb3IoZXJyb3IpO1xyXG5cdFx0XHRcdHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnNob3dBbGVydERhbmdlcihlcnJvcik7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gUE9TVFxyXG5cclxuXHQvLyAjcmVnaW9uIFVUSUxJREFERVNcclxuXHJcblx0Ly8gUmV0b3JubyBwYXJhIGEgdGVsYSBkZSBsb2dpblxyXG5cdHB1YmxpYyB2b2x0YXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdHRoaXMuc2hvd1Bhcm1zQXV0aGVudGljYXRpb24yRmEgPSBmYWxzZTtcclxuXHJcblx0XHR0aGlzLl9hdXRoU3RvcmFnZVNlcnZpY2UubG9nb3V0KCk7XHJcblxyXG5cdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlKFtcIi9hdXRoL2xvZ2luXCJdKTtcclxuXHR9XHJcblxyXG5cdC8vICNlbmRyZWdpb24gVVRJTElEQURFU1xyXG5cclxuXHQvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFNFUlZJQ0UgTUVUSE9EUyA8PT09PT09PT09PVxyXG5cclxuXHQvLyAjcmVnaW9uID09PT09PT09PT0+IE1PREFMUyA8PT09PT09PT09PVxyXG5cclxuXHQvLyBFeGVjdXRhIGVzcXVlY2VyIHNlbmhhXHJcblx0cHVibGljIG9wZW5Gb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLmNyZWF0ZUZvcm1Gb3Jnb3R0ZW5QYXNzd29yZCgpO1xyXG5cclxuXHRcdHRoaXMubW9kYWxSZWYgPSB0aGlzLl9ic01vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7XHJcblx0XHRcdGNsYXNzOiAnbW9kYWwtZGlhbG9nLWNlbnRlcmVkJyxcclxuXHRcdFx0aWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UsXHJcblx0XHRcdGtleWJvYXJkOiBmYWxzZSxcclxuXHRcdFx0aWQ6IHRoaXMuaWRGZ3RQc3dcclxuXHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdC8vIEVuY2VycmEgZXNxdWVjZXIgc2VuaGFcclxuXHRwdWJsaWMgY2xvc2VGb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fYnNNb2RhbFNlcnZpY2UuaGlkZSh0aGlzLmlkRmd0UHN3KTtcclxuXHR9XHJcblx0Ly8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBNT0RBTFMgPD09PT09PT09PT1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcblx0PGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cdFx0PCEtLSBDb250ZcO6ZG8gZGEgRElWIGRvIGJhY2tncm91bmQgLS0+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJhY2tncm91bmRcIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTAsIDQ0LCA4MSwgMC45KSwgcmdiYSgxMCwgNDQsIDgxLCAwLjkpKSwgdXJsKHt7X2N1c3RvbUxvZ2luU2VydmljZS5sb2dpbkJhY2tncm91bmR9fSlcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1wb3NpdGlvbiB0ZXh0by1hcHJlc2VudGFjYW8gcHMtNVwiPlxyXG5cdFx0XHRcdFx0PGgxIGNsYXNzPVwidGl0bGVcIiBpZD1cInRpdGxlXCI+PC9oMT5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwic3VidGl0bGVcIiBpZD1cInN1YnRpdGxlXCI+PC9wPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PCEtLSBDb250ZcO6ZG8gZGEgRElWIGRlIExvZ2luIC0tPlxyXG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcblxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZGl2LXNpemVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibG9nb3RpcG9cIj5cclxuXHRcdFx0XHRcdDxpbWcgc3R5bGU9XCJoZWlnaHQ6IDk1cHg7XCIgc3JjPVwie3sgdGhpcy5fY3VzdG9tTG9naW5TZXJ2aWNlLmxvZ2luTG9nb3RpcG8gfX1cIiBhbHQ9XCJ7eyB0aGlzLl9jdXN0b21Mb2dpblNlcnZpY2UubG9naW5BbHRMb2dvdGlwbyB9fVwiIC8+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGZvcm0gICpuZ0lmPVwiIXNob3dQYXJtc0F1dGhlbnRpY2F0aW9uMkZhOyBlbHNlIEF1dGhlbnRpY2F0aW9uMkZhXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJmb3JtLXBvc2l0aW9uXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtbGcgZm9ybS1pdGVtXCI+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiIGlkPVwiYmFzaWMtYWRkb24xXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cInBhZGRpbmc6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDRweCAwcHggMHB4IDRweFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2Nsb3VkLnN2Z1wiIGFsdD1cImNsb3VkIGljb25cIiAvPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZG9taW5pb1wiIGlkPVwiZG9taW5pb1wiXHJcblx0XHRcdFx0XHRcdFx0YXJpYS1sYWJlbD1cIlNpemluZyBleGFtcGxlIGlucHV0XCIgcGxhY2Vob2xkZXI9XCJEb23DrW5pb1wiIGFyaWEtbGFiZWw9XCJEb23DrW5pb1wiXHJcblx0XHRcdFx0XHRcdFx0YXJpYS1kZXNjcmliZWRieT1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuaXMtaW52YWxpZF09XCJGb3JtVXRpbHMuaXNJbnZhbGlkRmllbGQoZm9ybS5nZXQoJ2RvbWluaW8nKSlcIj5cclxuXHRcdFx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm0uZ2V0KCdkb21pbmlvJylcIiBsYWJlbD1cIkRvbcOtbmlvXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWxnIGZvcm0taXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cInBhZGRpbmc6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDRweCAwcHggMHB4IDRweFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2F0LXNpZ24uc3ZnXCIgYWx0PVwiYXQtc2lnbiBpY29uXCIgLz5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInVzdWFyaW9cIiBpZD1cInVzdWFyaW9cIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIHBsYWNlaG9sZGVyPVwiVXN1w6FyaW9cIiBhcmlhLWxhYmVsPVwiVXN1w6FyaW9cIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm0uZ2V0KCd1c3VhcmlvJykpXCI+XHJcblx0XHRcdFx0XHRcdDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtLmdldCgndXN1YXJpbycpXCIgbGFiZWw9XCJVc3XDoXJpb1wiPjwvYXBwLWZpZWxkLWVycm9yLW1lc3NhZ2U+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1sZyBmb3JtLWl0ZW1cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDhweDtcIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgaWQ9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBib3JkZXItcmFkaXVzOiA0cHggMHB4IDBweCA0cHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCJhc3NldHMvaWNvbnMvbG9jay5zdmdcIiBhbHQ9XCJsb2NrLWljb25cIiAvPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInNlbmhhXCIgaWQ9XCJzZW5oYVwiXHJcblx0XHRcdFx0XHRcdFx0YXJpYS1sYWJlbD1cIlNpemluZyBleGFtcGxlIGlucHV0XCIgcGxhY2Vob2xkZXI9XCJTZW5oYVwiIGFyaWEtbGFiZWw9XCJzZW5oYVwiXHJcblx0XHRcdFx0XHRcdFx0YXJpYS1kZXNjcmliZWRieT1cImlucHV0R3JvdXAtc2l6aW5nLWxnXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuaXMtaW52YWxpZF09XCJGb3JtVXRpbHMuaXNJbnZhbGlkRmllbGQoZm9ybS5nZXQoJ3NlbmhhJykpXCI+XHJcblx0XHRcdFx0XHRcdDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtLmdldCgnc2VuaGEnKVwiIGxhYmVsPVwiU2VuaGFcIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicmVtZW1iZXItcGFzc3dvcmRcIj5cclxuXHRcdFx0XHRcdDwhLS0gTGVtYnJhciBTZW5oYVxyXG5cdFx0XHRcdFx0XHQ8aW5wdXQgaWQ9XCJjaGVja2JveExlbWJyYXJTZW5oYVwiIHR5cGU9XCJjaGVja2JveFwiIC8+XHJcblx0XHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJjaGVja2JveExlbWJyYXJTZW5oYVwiPiBMZW1icmFyIG1pbmhhIHNlbmhhIDwvbGFiZWw+XHJcbiBcdFx0XHRcdFx0LS0+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxidXR0b24gW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiIChjbGljayk9XCJnZXRTZXJ2ZXIoKVwiIHR5cGU9XCJzdWJtaXRcIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tYWNlc3NhciBidG4tbGdcIj5cclxuXHRcdFx0XHRcdFx0PGFwcC1sb2FkaW5nLWJ1dHRvbiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvYXBwLWxvYWRpbmctYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8c3Bhbj4gQWNlc3NhciA8L3NwYW4+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuRm9yZ290dGVuUGFzc3dvcmRNb2RhbChmb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKVwiIGNsYXNzPVwiZm9yZ290dGVuLXBhc3N3b3JkXCI+XHJcblx0XHRcdFx0XHRcdDxzcGFuPiBFc3F1ZWNldSBzdWEgc2VuaGE/IDwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvZm9ybT5cclxuXHJcblx0XHRcdFx0PG5nLXRlbXBsYXRlICNBdXRoZW50aWNhdGlvbjJGYT5cclxuXHRcdFx0XHRcdDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUF1dGhlbnRpY2F0aW9uMkZhXCIgY2xhc3M9XCJmb3JtLXBvc2l0aW9uXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1sZyBmb3JtLWl0ZW0gbWItM1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiIGlkPVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBib3JkZXItcmFkaXVzOiA0cHggMHB4IDBweCA0cHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9sb2NrLnN2Z1wiIGFsdD1cImxvY2staWNvblwiIC8+XHJcblx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiY29kZVwiIGlkPVwiY29kZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRhcmlhLWxhYmVsPVwiU2l6aW5nIGV4YW1wbGUgaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkPDs2RpZ28gZGUgMiBmYXRvcmVzXCIgYXJpYS1sYWJlbD1cIkPDs2RpZ28gZGUgMiBmYXRvcmVzXCJcclxuXHRcdFx0XHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRbY2xhc3MuaXMtaW52YWxpZF09XCJGb3JtVXRpbHMuaXNJbnZhbGlkRmllbGQoZm9ybUF1dGhlbnRpY2F0aW9uMkZhLmdldCgnY29kZScpKVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxhcHAtZmllbGQtZXJyb3ItbWVzc2FnZSBbY29udHJvbF09XCJmb3JtQXV0aGVudGljYXRpb24yRmEuZ2V0KCdjb2RlJylcIiBsYWJlbD1cIkPDs2RpZ28gZGUgMiBmYXRvcmVzXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cgbWItM1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxidXR0b24gKGNsaWNrKT1cInZvbHRhcigpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1hY2Vzc2FyIGdsYi1idG4tb3V0bGluZS1kYXJrLWRpc2FibGVkIGNvbCBtZS0xXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRWb2x0YXJcclxuXHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdTZW5kQXV0aGVudGljYXRpb24yRmFcIiAoY2xpY2spPVwic2VuZENvZGUoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tYWNlc3NhciBidG4tcHJpbWFyeSBjb2wgbXMtMVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGFwcC1sb2FkaW5nLWJ1dHRvbiBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1NlbmRBdXRoZW50aWNhdGlvbjJGYVwiPjwvYXBwLWxvYWRpbmctYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0QWNlc3NhclxyXG5cdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxidXR0b24gKm5nSWY9XCJzZWNvbmRzTGVmdCA9PSAwOyBlbHNlIG5ld0NvZGVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIiAoY2xpY2spPVwiZ2V0TmV3Q29kZSgpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1hY2Vzc2FyIGJ0bi1vdXRsaW5lLXByaW1hcnkgY29sXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YXBwLWxvYWRpbmctYnV0dG9uIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9hcHAtbG9hZGluZy1idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRFbnZpYXIgbm92byBjw7NkaWdvXHJcblx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICNuZXdDb2RlPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7IHNlY29uZHNMZWZ0fX0ge3sgc2Vjb25kc0xlZnQgPT0gMSA/ICdzZWd1bmRvJyA6ICdzZWd1bmRvcycgfX0gcGFyYSBvYnRlciBub3ZvIGPDs2RpZ288L3A+XHJcblx0XHRcdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Zvcm0+XHRcclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJmb290ZXItcG9zaXRpb25cIj5cclxuXHRcdFx0XHRcdDxmb290ZXI+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9vdGVyXCI+IFxyXG5cdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL2Rwby5wcml2YWN5dG9vbHMuY29tLmJyL3BvbGljeS12aWV3L0ptR2VObEpkdy8xL3BvbGklQ0MlODF0aWNhLWRlLXByaXZhY2lkYWRlL3B0X0JSP3M9MTY4NTczMTUxMDA2NlwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic2lzcHJvIHRleHQtcHJpbWFyeVwiPiBQb2zDrXRpY2EgZGUgUHJpdmFjaWRhZGUgPC9hPlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwic2VwYXJhdG9yXCI+IHwgPC9wPlxyXG5cdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL2Rwby5wcml2YWN5dG9vbHMuY29tLmJyL3BvbGljeS12aWV3L1JvcmszNU5OMi8yL3BvbGklQ0MlODF0aWNhLWRlLWNvb2tpZXMvcHRfQlI/cz0xNjg1NzMxNTUxOTc2XCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzaXNwcm8gdGV4dC1wcmltYXJ5XCI+IFBvbMOtdGljYSBkZSBDb29raWVzIDwvYT5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvb3RlclwiPiBEZXNlbnZvbHZpZG8gcG9yIFxyXG5cdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL3d3dy5zaXNwcm8uY29tLmJyL1wiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic2lzcHJvIHRleHQtcHJpbWFyeVwiPiBTSVNQUk8gPC9hPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9vdGVyXCI+IFNlcnZpw6dvcyBlIFRlY25vbG9naWEgZGEgSW5mb3JtYcOnw6NvIExUREEgwqkge3sgeWVhciB9fSBUb2RvcyBvcyBkaXJlaXRvcyByZXNlcnZhZG9zIDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL3B0LWJyLmZhY2Vib29rLmNvbS9TaXNwcm9FUlAvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItaWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGljb25OYW1lPVwiZmFjZWJvb2tcIiBpY29uU2l6ZT1cIm1lZGl1bS1zbWFsbFwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIGhyZWY9XCJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2FjY291bnRzL2xvZ2luLz9uZXh0PS9zaXNwcm9fc29mdHdhcmUvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsaWItaWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGljb25OYW1lPVwiaW5zdGFncmFtXCIgaWNvblNpemU9XCJtZWRpdW0tc21hbGxcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YSBocmVmPVwiaHR0cHM6Ly9ici5saW5rZWRpbi5jb20vY29tcGFueS9zaXNwcm9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGxpYi1pY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgaWNvbk5hbWU9XCJsaW5rZWRpblwiIGljb25TaXplPVwibWVkaXVtLXNtYWxsXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxhIFtocmVmXT1cImdldHVybEVycENvbmZpZygpXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtc2l6ZTogMTJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0Q29uZmlndXJhciBFUlBcclxuXHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZm9vdGVyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gVGVtcGxhdGUgZG8gbW9kYWwgZGUgc2VuaGEgZXNxdWVjaWRhIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZvcmdvdHRlblBhc3N3b3JkTW9kYWw+XHJcblx0PGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRmd0UHN3XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiIHN0eWxlPVwiYm94LXNoYWRvdzogMnB4IDJweCA1cHggMHB4IHJnYmEoMCwwLDAsMC41KTtcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwLTNcIj5cclxuXHRcdFx0XHQ8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPiBSZWN1cGVyYcOnw6NvIGRlIHNlbmhhIDwvaDQ+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiY2xvc2VGb3Jnb3R0ZW5QYXNzd29yZE1vZGFsKClcIj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcblx0XHRcdFx0PGxhYmVsIGZvcj1cImlucHV0RG9taW5pb0ZndFBzd1wiIGNsYXNzPVwiaW5wdXQtbGFiZWxcIj4gRG9tw61uaW8gPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+PC9sYWJlbD5cclxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImlucHV0RG9taW5pb0ZndFBzd1wiIGZvcm1Db250cm9sTmFtZT1cImRvbWluaW9GZ3RQc3dcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtdGV4dFwiIGFyaWEtbGFiZWw9XCJTaXppbmcgZXhhbXBsZSBpbnB1dFwiIGFyaWEtbGFiZWw9XCJEb23DrW5pb1wiXHJcblx0XHRcdFx0XHRhcmlhLWRlc2NyaWJlZGJ5PVwiaW5wdXRHcm91cC1zaXppbmctbGdcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLWludmFsaWRdPVwiRm9ybVV0aWxzLmlzSW52YWxpZEZpZWxkKGZvcm1GZ3RQc3cuZ2V0KCdkb21pbmlvRmd0UHN3JykpXCI+XHJcblx0XHRcdFx0PGFwcC1maWVsZC1lcnJvci1tZXNzYWdlIFtjb250cm9sXT1cImZvcm1GZ3RQc3cuZ2V0KCdkb21pbmlvRmd0UHN3JylcIiBsYWJlbD1cIkRvbcOtbmlvXCI+PC9hcHAtZmllbGQtZXJyb3ItbWVzc2FnZT5cdFx0XHRcdFxyXG5cclxuXHRcdFx0XHQ8bGFiZWwgZm9yPVwiaW5wdXRVc3VhcmlvRmd0UHN3XCIgY2xhc3M9XCJpbnB1dC1sYWJlbFwiPiBVc3XDoXJpbyA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiaW5wdXRVc3VhcmlvRmd0UHN3XCIgZm9ybUNvbnRyb2xOYW1lPVwidXN1YXJpb0ZndFBzd1wiXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbCBpbnB1dC10ZXh0XCIgYXJpYS1sYWJlbD1cIlNpemluZyBleGFtcGxlIGlucHV0XCIgYXJpYS1sYWJlbD1cIlVzdcOhcmlvXCJcclxuXHRcdFx0XHRcdGFyaWEtZGVzY3JpYmVkYnk9XCJpbnB1dEdyb3VwLXNpemluZy1sZ1wiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtaW52YWxpZF09XCJGb3JtVXRpbHMuaXNJbnZhbGlkRmllbGQoZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKSlcIj5cclxuXHRcdFx0XHQ8YXBwLWZpZWxkLWVycm9yLW1lc3NhZ2UgW2NvbnRyb2xdPVwiZm9ybUZndFBzdy5nZXQoJ3VzdWFyaW9GZ3RQc3cnKVwiIGxhYmVsPVwiVXN1w6FyaW9cIj48L2FwcC1maWVsZC1lcnJvci1tZXNzYWdlPlx0XHRcdFx0XHJcblx0XHRcclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBnbGItYnRuLWRhcmstZGlzYWJsZWQgbW9kYWwtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRm9yZ290dGVuUGFzc3dvcmRNb2RhbCgpXCI+XHJcblx0XHRcdFx0XHQ8c3Bhbj4gQ2FuY2VsYXIgPC9zcGFuPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1vZGFsLWJ1dHRvblwiIChjbGljayk9XCJzZW5kRm9yZ290dGVuUGFzc3dvcmQoKTtcIj5cclxuXHRcdFx0XHRcdDxzcGFuPiBDb250aW51YXIgPC9zcGFuPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
package/esm2022/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.mjs
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../../../custom/custom-menu.service";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "ngx-sp-infra";
|
|
7
|
-
import * as i4 from "../secondary-dropdown/secondary-dropdown.component";
|
|
8
|
-
//import { ProjectUtilservice } from 'src/app/project/utils/project-utils.service';
|
|
9
|
-
//import { environment } from '../../../../environments/environments';
|
|
10
|
-
export class PrimaryDropdownComponent {
|
|
11
|
-
constructor(_customMenuService) {
|
|
12
|
-
this._customMenuService = _customMenuService;
|
|
13
|
-
this.buttonWasClicked = new Observable;
|
|
14
|
-
this.primaryDropdown = [];
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.buttonWasClicked.subscribe(() => { this.selectDataState = true; });
|
|
18
|
-
// Resolver colisão de eventos
|
|
19
|
-
if (this._customMenuService.menuDynamic) {
|
|
20
|
-
if (!this._customMenuService.menuConfig) {
|
|
21
|
-
setTimeout(() => {
|
|
22
|
-
this.primaryDropdown = this._customMenuService.menuConfig.initializeMenuDropdown(this.primaryDropdown);
|
|
23
|
-
}, 2000);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
this.primaryDropdown = this._customMenuService.menuConfig.initializeMenuDropdown(this.primaryDropdown);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
this.primaryDropdown = this._customMenuService.menuConfig.initializeMenuDropdown(this.primaryDropdown);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
openDropdown(modulo, desiredDropdown) {
|
|
34
|
-
this.modulo = modulo;
|
|
35
|
-
if (desiredDropdown == null) {
|
|
36
|
-
this.selectDataState = true;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
this.selectDataState = false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
onClickedOutside(e, ref) {
|
|
43
|
-
if (this.selectDataState = false) {
|
|
44
|
-
this.selectDataState = true;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
backToPrimary(data) {
|
|
48
|
-
this.selectDataState = true;
|
|
49
|
-
}
|
|
50
|
-
redirectToPrePortal() {
|
|
51
|
-
const url = `https://siscandesv6.sispro.com.br/SisproErpCloud/PrePortal`;
|
|
52
|
-
window.open(url, '_blank');
|
|
53
|
-
}
|
|
54
|
-
redirectToModulo(modulo) {
|
|
55
|
-
const url = `https://siscandesv6.sispro.com.br/SisproErpCloud/${modulo}`;
|
|
56
|
-
window.open(url, '_blank');
|
|
57
|
-
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PrimaryDropdownComponent, deps: [{ token: i1.LibCustomMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PrimaryDropdownComponent, selector: "app-primary-dropdown", inputs: { buttonWasClicked: "buttonWasClicked" }, ngImport: i0, template: "<div class=\"p-2\">\r\n <div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"mb-2 w-100\">\r\n <li *ngFor=\"let modulo of primaryDropdown\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\r\n <a class=\"dropdown-item mb-2\">\r\n <img src=\"{{ modulo.icon }}\" alt=\"{{ modulo.label }}\">\r\n {{ modulo.label }}\r\n </a>\r\n </li>\r\n <hr class=\"dropdown-divider\">\r\n <li>\r\n <a class=\"dropdown-item link-portal mt-2\" (click)=\"redirectToPrePortal()\" target=\"_blank\">Portal Sispro</a>\r\n </li>\r\n </div>\r\n\r\n <ng-template #secondary_dropdown>\r\n <div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\r\n <app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\r\n </div>\r\n </ng-template>\r\n</div>", styles: ["*{padding:0;margin:0}li a{font-size:14px}li a img{margin-right:4px}li a:hover{font-weight:700;background-color:transparent}.dropdown-divider{height:0}.link-portal{color:#2847a0;text-decoration:underline;text-align:center;font-weight:700;font-size:14px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ClickOutsideDirective, selector: "[clickOutside], [libClickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i4.SecondaryDropdownComponent, selector: "app-secondary-dropdown", inputs: ["modulo"], outputs: ["backPrimaryDropdown"] }] }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PrimaryDropdownComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{ selector: 'app-primary-dropdown', template: "<div class=\"p-2\">\r\n <div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"mb-2 w-100\">\r\n <li *ngFor=\"let modulo of primaryDropdown\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\r\n <a class=\"dropdown-item mb-2\">\r\n <img src=\"{{ modulo.icon }}\" alt=\"{{ modulo.label }}\">\r\n {{ modulo.label }}\r\n </a>\r\n </li>\r\n <hr class=\"dropdown-divider\">\r\n <li>\r\n <a class=\"dropdown-item link-portal mt-2\" (click)=\"redirectToPrePortal()\" target=\"_blank\">Portal Sispro</a>\r\n </li>\r\n </div>\r\n\r\n <ng-template #secondary_dropdown>\r\n <div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\r\n <app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\r\n </div>\r\n </ng-template>\r\n</div>", styles: ["*{padding:0;margin:0}li a{font-size:14px}li a img{margin-right:4px}li a:hover{font-weight:700;background-color:transparent}.dropdown-divider{height:0}.link-portal{color:#2847a0;text-decoration:underline;text-align:center;font-weight:700;font-size:14px}\n"] }]
|
|
64
|
-
}], ctorParameters: () => [{ type: i1.LibCustomMenuService }], propDecorators: { buttonWasClicked: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1sYXRlcmFsL2Ryb3Bkb3duL3ByaW1hcnktZHJvcGRvd24vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2xDLG1GQUFtRjtBQUNuRixzRUFBc0U7QUFPdEUsTUFBTSxPQUFPLHdCQUF3QjtJQVUvQixZQUNjLGtCQUF3QztRQUF4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBTjdDLHFCQUFnQixHQUF3QixJQUFJLFVBQVUsQ0FBQztRQUV6RCxvQkFBZSxHQUFlLEVBQ3BDLENBQUE7SUFLRyxDQUFDO0lBRUwsUUFBUTtRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RSw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3RyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDZixDQUFDO2lCQUFNLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3RyxDQUFDO1FBRVAsQ0FBQzthQUFNLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdHLENBQUM7SUFFUCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQVcsRUFBRSxlQUFpQztRQUM1RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUM7SUFDUCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsQ0FBUSxFQUFFLEdBQW1CO1FBQy9DLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFhO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxtQkFBbUI7UUFDcEIsTUFBTSxHQUFHLEdBQVcsNERBQTRELENBQUM7UUFFakYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQWM7UUFDaEMsTUFBTSxHQUFHLEdBQVcsb0RBQW9ELE1BQU0sRUFBRSxDQUFDO1FBRWpGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBakVNLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhHQ1pyQywwaUNBbUJNOzs0RkRQTyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ00sc0JBQXNCO3lGQVN2QixnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IExpYkN1c3RvbU1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY3VzdG9tL2N1c3RvbS1tZW51LnNlcnZpY2UnO1xyXG4vL2ltcG9ydCB7IFByb2plY3RVdGlsc2VydmljZSB9IGZyb20gJ3NyYy9hcHAvcHJvamVjdC91dGlscy9wcm9qZWN0LXV0aWxzLnNlcnZpY2UnO1xyXG4vL2ltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgICAgc2VsZWN0b3I6ICdhcHAtcHJpbWFyeS1kcm9wZG93bicsXHJcbiAgICAgIHRlbXBsYXRlVXJsOiAnLi9wcmltYXJ5LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAgICAgc3R5bGVVcmxzOiBbJy4vcHJpbWFyeS1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpbWFyeURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICAgIHB1YmxpYyBzZWxlY3REYXRhU3RhdGUhOiBib29sZWFuO1xyXG4gICAgICBwdWJsaWMgbW9kdWxvOiBhbnk7XHJcblxyXG4gICAgICBASW5wdXQoKSBidXR0b25XYXNDbGlja2VkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gbmV3IE9ic2VydmFibGU7XHJcblxyXG4gICAgICBwdWJsaWMgcHJpbWFyeURyb3Bkb3duOiBBcnJheTxhbnk+ID0gW1xyXG4gICAgICBdXHJcblxyXG4gICAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAgICAgcHJpdmF0ZSBfY3VzdG9tTWVudVNlcnZpY2U6IExpYkN1c3RvbU1lbnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAvL3ByaXZhdGUgX3Byb2plY3RVdGlsc2VydmljZTogUHJvamVjdFV0aWxzZXJ2aWNlXHJcbiAgICAgICkgeyB9XHJcblxyXG4gICAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAgICAgdGhpcy5idXR0b25XYXNDbGlja2VkLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZSB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlc29sdmVyIGNvbGlzw6NvIGRlIGV2ZW50b3NcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVEeW5hbWljKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2N1c3RvbU1lbnVTZXJ2aWNlLm1lbnVDb25maWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeURyb3Bkb3duID0gdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5pbml0aWFsaXplTWVudURyb3Bkb3duKHRoaXMucHJpbWFyeURyb3Bkb3duKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeURyb3Bkb3duID0gdGhpcy5fY3VzdG9tTWVudVNlcnZpY2UubWVudUNvbmZpZy5pbml0aWFsaXplTWVudURyb3Bkb3duKHRoaXMucHJpbWFyeURyb3Bkb3duKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmltYXJ5RHJvcGRvd24gPSB0aGlzLl9jdXN0b21NZW51U2VydmljZS5tZW51Q29uZmlnLmluaXRpYWxpemVNZW51RHJvcGRvd24odGhpcy5wcmltYXJ5RHJvcGRvd24pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKG1vZHVsbzogYW55LCBkZXNpcmVkRHJvcGRvd246IFRlbXBsYXRlUmVmPGFueT4pIHtcclxuICAgICAgICAgICAgdGhpcy5tb2R1bG8gPSBtb2R1bG87XHJcblxyXG4gICAgICAgICAgICBpZiAoZGVzaXJlZERyb3Bkb3duID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGFTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB1YmxpYyBvbkNsaWNrZWRPdXRzaWRlKGU6IEV2ZW50LCByZWY6IEhUTUxEaXZFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdERhdGFTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwdWJsaWMgYmFja1RvUHJpbWFyeShkYXRhOiBib29sZWFuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YVN0YXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcHVibGljIHJlZGlyZWN0VG9QcmVQb3J0YWwoKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gYGh0dHBzOi8vc2lzY2FuZGVzdjYuc2lzcHJvLmNvbS5ici9TaXNwcm9FcnBDbG91ZC9QcmVQb3J0YWxgO1xyXG5cclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHB1YmxpYyByZWRpcmVjdFRvTW9kdWxvKG1vZHVsbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybDogc3RyaW5nID0gYGh0dHBzOi8vc2lzY2FuZGVzdjYuc2lzcHJvLmNvbS5ici9TaXNwcm9FcnBDbG91ZC8ke21vZHVsb31gO1xyXG5cclxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInAtMlwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdERhdGFTdGF0ZTsgZWxzZSBzZWNvbmRhcnlfZHJvcGRvd25cIiBjbGFzcz1cIm1iLTIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtb2R1bG8gb2YgcHJpbWFyeURyb3Bkb3duXCIgKGNsaWNrKT1cIihtb2R1bG8uc2Vjb25kYXJ5X2xldmVsICE9IG51bGwgPyBvcGVuRHJvcGRvd24obW9kdWxvLCBzZWNvbmRhcnlfZHJvcGRvd24pIDogcmVkaXJlY3RUb01vZHVsbyhtb2R1bG8uVVJMKSlcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7eyBtb2R1bG8uaWNvbiB9fVwiIGFsdD1cInt7IG1vZHVsby5sYWJlbCB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG1vZHVsby5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+XHJcbiAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBsaW5rLXBvcnRhbCBtdC0yXCIgKGNsaWNrKT1cInJlZGlyZWN0VG9QcmVQb3J0YWwoKVwiIHRhcmdldD1cIl9ibGFua1wiPlBvcnRhbCBTaXNwcm88L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3NlY29uZGFyeV9kcm9wZG93bj5cclxuICAgICAgICA8ZGl2ICNzZWNvbmRhcnlfcmVmIChjbGlja091dHNpZGUpPVwib25DbGlja2VkT3V0c2lkZSgkZXZlbnQsIHNlY29uZGFyeV9yZWYpXCI+XHJcbiAgICAgICAgICAgIDxhcHAtc2Vjb25kYXJ5LWRyb3Bkb3duIFttb2R1bG9dPVwidGhpcy5tb2R1bG9cIiAoYmFja1ByaW1hcnlEcm9wZG93bik9XCJiYWNrVG9QcmltYXJ5KCRldmVudClcIj48L2FwcC1zZWNvbmRhcnktZHJvcGRvd24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj4iXX0=
|