wm-menu 1.2.7 → 1.2.8

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://wm-menu/lib/wm-menu/model/wm-menu-cuenta.model.ts","ng://wm-menu/lib/wm-menu/services/wm-menu-servicio.service.ts","ng://wm-menu/lib/wm-menu/wm-menu.component.ts","ng://wm-menu/lib/wm-menu/services/wm-menu-alerta-panico.service.ts","ng://wm-menu/lib/wm-menu.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","MenuSecundario","this","hijos","WmMenuServicioService","http","iconRegistry","sanitizer","prototype","menuApiObtener","url","idUsuario","token","codLogicaParametro","headers","HttpHeaders","Authorization","myParams","HttpParams","append","toString","get","params","pipe","map","resp","catchError","error","throwError","mapearMenu","respApi","sort","a","b","Posicion","element","Icono","startsWith","iconSvg","addSvgIcon","bypassSecurityTrustResourceUrl","obtenerMenu","idMenuPadre","menu","IdMenuPadre","push","titulo","IdiomaRecurso","Url","icono","descripcion","Descripcion","IdMenu","menuIdiomasObtener","almacenamientoApiObtener","HttpClient","MatIconRegistry","DomSanitizer","Injectable","providedIn","WmMenuComponent","wmMenuServicioService","menuSecundarioSel","menuLateralAbierto","menuIdioma","ngOnInit","_this","cargarMenuCuenta","urlMenu","decodedToken","JwtHelperService","decodeToken","subscribe","menuPrincipal","urlIdiomas","urlBaseAlmacenamiento","utilizado","Utilizado","total","Total","porcentajeUtilizado","Math","round","clickMenuPrincipal","menuPrincipalSel","clickMenuSecundario","menuSecundario","urlCuentaSeguridad","CambiarContrasenna","activar2fa","Configurar2fa","urlguiasOnline","_a","guiasOnline","CerrarSesion","filter","hijo","Input","Component","selector","template","WmMenuAlertaPanicoService","alternateTitle","audio","isPlaying","IdsAlertasPanicoActivas","Set","soundTimeout","isRunning","iniciarProceso","intervalMs","callback","urlObtenerParametro","rutaAudio","forEach","evento","document","addEventListener","Valor","storedIds","localStorage","getItem","JSON","parse","ejecutarProceso_1","setTimeout","once","stopProcess","subscription","unsubscribe","ngOnDestroy","stopSound","stopFlashingTitle","playSound","Audio","loop","play","then","catch","console","log","pause","currentTime","clearTimeout","startFlashingTitle","toggle","originalTitle","title","intervalId","setInterval","clearInterval","revisarAlertasPendientes","urlObtenerAlertasPanico","alertasIds_1","alerta","IdAlertaPanico","id","includes","delete","newAlerts","has","add","size","clear","setItem","stringify","Array","from","WmMenuModule","NgModule","declarations","imports","BrowserModule","MatToolbarModule","MatSidenavModule","MatListModule","MatButtonModule","MatIconModule","MatMenuModule","MatRippleModule","HttpClientModule","JwtModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export class MenuSecundario {\r\n icono: string;\r\n titulo: string;\r\n hijos: MenuSecundarioHijo[] = [];\r\n}\r\n\r\nexport class MenuSecundarioHijo {\r\n icono: string;\r\n titulo: string;\r\n url: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { throwError, Observable } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { MenuPrincipal } from '../model/wm-menu-principal.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WmMenuServicioService {\r\n\r\n constructor(private http: HttpClient, private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) { }\r\n\r\n menuApiObtener(url:string, idUsuario: string, token:string, codLogicaParametro = \"\"): Observable<any> {\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n \r\n let myParams = new HttpParams();\r\n if (codLogicaParametro.length > 0) {\r\n myParams = myParams.append(\"codLogica\", codLogicaParametro);\r\n }\r\n myParams = myParams.append(\"ctrlActivo\", \"true\");\r\n myParams = myParams.append(\"conPadres\", \"true\");\r\n if (idUsuario != null)\r\n myParams = myParams.append(\"idUsuario\", idUsuario.toString());\r\n\r\n return this.http.get(url, { headers, params: myParams }).pipe(\r\n map(resp => {\r\n return resp;\r\n }),\r\n catchError(error => {\r\n return throwError(error.error);\r\n })\r\n );\r\n }\r\n\r\n mapearMenu(respApi: any): MenuPrincipal[] {\r\n respApi = respApi.sort((a, b) => a.Posicion > b.Posicion?\"1\":\"-1\");\r\n\r\n for (const key in respApi) {\r\n const element = respApi[key];\r\n if (element.Icono.startsWith(\"http\")) {\r\n var iconSvg = 'wm-icon-menu-' + key;\r\n this.iconRegistry.addSvgIcon(\r\n iconSvg,\r\n this.sanitizer.bypassSecurityTrustResourceUrl(element.Icono));\r\n respApi[key].Icono = iconSvg;\r\n }\r\n }\r\n\r\n return this.obtenerMenu(respApi);\r\n }\r\n\r\n\r\n private obtenerMenu(respApi: any, idMenuPadre?: Number): MenuPrincipal[] {\r\n var menu: MenuPrincipal[] = [];\r\n for (const key in respApi) {\r\n if (respApi[key].IdMenuPadre == idMenuPadre || (!idMenuPadre && respApi[key].IdMenuPadre == null)) {\r\n menu.push({\r\n titulo: respApi[key].IdiomaRecurso,\r\n url: respApi[key].Url,\r\n icono: respApi[key].Icono,\r\n descripcion: respApi[key].Descripcion,\r\n hijos: this.obtenerMenu(respApi, respApi[key].IdMenu)\r\n });\r\n }\r\n }\r\n return menu;\r\n }\r\n\r\n menuIdiomasObtener(url:string, idUsuario: string, token:string): Observable<any> {\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n\r\n return this.http.get(url).pipe(\r\n map(resp => {\r\n return resp;\r\n }),\r\n catchError(error => {\r\n return throwError(error.error);\r\n })\r\n );\r\n }\r\n \r\n almacenamientoApiObtener(url:string, idUsuario: string, token:string): Observable<any> {\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n \r\n let myParams = new HttpParams();\r\n\r\n if (idUsuario != null)\r\n myParams = myParams.append(\"idUsuario\", idUsuario.toString());\r\n \r\n return this.http.get(url, { headers, params: myParams }).pipe(\r\n map(resp => {\r\n return resp;\r\n }),\r\n catchError(error => {\r\n return throwError(error.error);\r\n })\r\n );\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport { MenuPrincipal } from './model/wm-menu-principal.model';\r\nimport { MenuSecundario } from './model/wm-menu-cuenta.model';\r\nimport { WmMenuServicioService } from './services/wm-menu-servicio.service';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\n\r\n@Component({\r\n selector: 'wm-menu',\r\n templateUrl: './wm-menu.component.html',\r\n styleUrls: ['./wm-menu.component.scss']\r\n})\r\nexport class WmMenuComponent implements OnInit {\r\n @Input() logo: string;\r\n @Input() colorFondo: string;\r\n @Input() colorTexto: string;\r\n @Input() menuPrincipal: MenuPrincipal[];\r\n @Input() menuSecundario: MenuSecundario[];\r\n\r\n @Input() urlMenu: string; \r\n @Input() token: string;\r\n @Input() urlCuentaSeguridad: string;\r\n @Input() activar2fa: string;\r\n @Input() urlguiasOnline: string;\r\n @Input() urlObtenerAlertasPanico: string;\r\n @Input() urlObtenerParametro: string;\r\n @Input() rutaAudio: string;\r\n\r\n @Input() nombreCliente: string;\r\n @Input() nombreUsuario: string;\r\n @Input() versionWeb: string;\r\n @Input() urlBaseAlmacenamiento: string;\r\n\r\n @Input() urlIdiomas: string;\r\n\r\n menuPrincipalSel: MenuPrincipal;\r\n menuSecundarioSel: MenuSecundario = new MenuSecundario();\r\n menuLateralAbierto: Boolean = false;\r\n porcentajeUtilizado : number;\r\n menuIdioma : any = [];\r\n\r\n constructor(private wmMenuServicioService: WmMenuServicioService) { }\r\n\r\n ngOnInit(): void {\r\n \r\n this.cargarMenuCuenta();\r\n\r\n if (this.urlMenu && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.wmMenuServicioService\r\n .menuApiObtener(this.urlMenu, decodedToken[\"id_usuario\"], this.token)\r\n .subscribe((resp) => {\r\n this.menuPrincipal = this.wmMenuServicioService.mapearMenu(resp);\r\n });\r\n }\r\n\r\n if (this.urlIdiomas && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.wmMenuServicioService\r\n .menuIdiomasObtener(this.urlIdiomas, decodedToken[\"id_usuario\"], this.token)\r\n .subscribe((resp) => {\r\n this.menuIdioma = resp;\r\n this.cargarMenuCuenta();\r\n });\r\n }\r\n\r\n if (this.urlBaseAlmacenamiento && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.wmMenuServicioService\r\n .almacenamientoApiObtener(this.urlBaseAlmacenamiento, decodedToken[\"id_usuario\"], this.token)\r\n .subscribe((resp) => {\r\n let utilizado = resp[0] && resp[0].Utilizado ? resp[0].Utilizado : 0;\r\n let total = resp[0] && resp[0].Total ? resp[0].Total : 0;\r\n this.porcentajeUtilizado = Math.round((utilizado / total) * 100);\r\n });\r\n }\r\n }\r\n\r\n clickMenuPrincipal(i: number) {\r\n if (this.menuPrincipal[i].hijos && this.menuPrincipal[i].hijos.length) {\r\n if (this.menuPrincipalSel == this.menuPrincipal[i]) {\r\n this.menuPrincipalSel = null;\r\n } else {\r\n this.menuPrincipalSel = this.menuPrincipal[i];\r\n }\r\n }\r\n }\r\n\r\n clickMenuSecundario(i: number) {\r\n this.menuSecundarioSel = this.menuSecundario[i];\r\n this.menuPrincipalSel = null;\r\n }\r\n\r\n cargarMenuCuenta(){\r\n if (this.urlCuentaSeguridad && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.menuSecundario = [{\r\n titulo: decodedToken[\"unique_name\"],\r\n icono: \"account_circle\",\r\n hijos: [\r\n { titulo: decodedToken[\"unique_name\"], url: \"\", icono: \"person\" },\r\n { titulo: this.menuIdioma && this.menuIdioma.CambiarContrasenna ? this.menuIdioma.CambiarContrasenna : \"Cambiar contraseña\", url: this.urlCuentaSeguridad + \"CambioContrasena\", icono: \"vpn_key\" },\r\n this.activar2fa == \"1\" ? { titulo: this.menuIdioma && this.menuIdioma.Configurar2fa ? this.menuIdioma.Configurar2fa : \"Configurar 2FA\", url: this.urlCuentaSeguridad + \"Habilitacion2FA\", icono: \"verified_user\" } : null,\r\n this.urlguiasOnline != null && this.urlguiasOnline !== \"\" && this.urlguiasOnline?.length != 0 ? { titulo: this.menuIdioma && this.menuIdioma.guiasOnline ? this.menuIdioma.guiasOnline : \"Guias Online\", url: this.urlguiasOnline, icono: \"menu_book\" } : null,\r\n { titulo: this.menuIdioma && this.menuIdioma.CerrarSesion ? this.menuIdioma.CerrarSesion : \"Cerrar sesión\", url: this.urlCuentaSeguridad + \"CerrarSesion\", icono: \"exit_to_app\" }].filter(hijo => hijo != null),\r\n }];\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { WmMenuServicioService } from './wm-menu-servicio.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WmMenuAlertaPanicoService {\r\n\r\n private intervalId: any;\r\n private alternateTitle = 'Alerta de Pánico Recibida';\r\n private originalTitle: string;\r\n private audio: HTMLAudioElement | null = null;\r\n private isPlaying = false; // Controla si el sonido ya está reproduciéndose\r\n public formulario: any;\r\n private IdsAlertasPanicoActivas: Set<number> = new Set(); // Almacena los IDs de las alertas ya manejadas\r\n private soundTimeout: any = null; // Controla el temporizador del sonido\r\n private rutaAudio: string;\r\n constructor(private wmMenuServicioService: WmMenuServicioService) { }\r\n\r\n private subscription: any;\r\n private isRunning: boolean = false;\r\n\r\n iniciarProceso(\r\n intervalMs: number,\r\n callback: () => void,\r\n urlObtenerParametro: string,\r\n token: string,\r\n rutaAudio: string\r\n ): void {\r\n this.rutaAudio = rutaAudio;\r\n \r\n const iniciarConInteraccion = () => {\r\n this.wmMenuServicioService\r\n .menuApiObtener(urlObtenerParametro, null, token, 'ReporteAlertasPanico')\r\n .subscribe((resp) => {\r\n // validar si el parametro ReporteAlertasPanico esta encendido\r\n if (resp && resp.length > 0 && resp[0].Valor == 1) {\r\n if (this.isRunning) {\r\n return;\r\n }\r\n // Inicializar la variable desde localStorage\r\n const storedIds = localStorage.getItem('ALERTAS_PANICO_ACTIVAS_WM');\r\n this.IdsAlertasPanicoActivas = storedIds ? new Set(JSON.parse(storedIds)) : new Set();\r\n \r\n const ejecutarProceso = () => {\r\n this.isRunning = true;\r\n callback();\r\n setTimeout(() => {\r\n this.isRunning = false;\r\n ejecutarProceso();\r\n }, intervalMs);\r\n };\r\n \r\n ejecutarProceso();\r\n }\r\n });\r\n };\r\n \r\n ['drag', 'click'].forEach(evento => {\r\n document.addEventListener(\r\n evento,\r\n () => {\r\n iniciarConInteraccion();\r\n },\r\n { once: true }\r\n );\r\n });\r\n\r\n }\r\n \r\n\r\n stopProcess(): void {\r\n this.isRunning = false;\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopSound();\r\n this.stopFlashingTitle();\r\n }\r\n\r\n playSound(): void {\r\n if (this.isPlaying) return; // Evita reproducir si ya está sonando\r\n\r\n this.isPlaying = true;\r\n if (!this.audio) {\r\n this.audio = new Audio(this.rutaAudio); // Ruta al archivo de sonido\r\n }\r\n\r\n this.audio.loop = true; // Reproducir en bucle\r\n this.audio.play()\r\n .then(() => {\r\n // Detener el sonido después de 10 segundos\r\n this.soundTimeout = setTimeout(() => {\r\n this.stopSound();\r\n }, 10000); // Detener después de 10 segundos\r\n })\r\n .catch(error => {\r\n console.log('Error al reproducir el sonido:', error);\r\n });\r\n }\r\n\r\n stopSound(): void {\r\n if (this.audio) {\r\n this.audio.pause();\r\n this.audio.currentTime = 0; // Reinicia el sonido\r\n }\r\n this.isPlaying = false; // Restablece la bandera\r\n if (this.soundTimeout) {\r\n clearTimeout(this.soundTimeout); // Asegura que el temporizador se borre\r\n this.soundTimeout = null;\r\n }\r\n }\r\n\r\n startFlashingTitle(): void {\r\n let toggle = false;\r\n \r\n // Almacenar el título original si aún no se ha guardado\r\n if (!this.originalTitle) {\r\n this.originalTitle = document.title;\r\n }\r\n \r\n if (!this.intervalId) {\r\n this.intervalId = setInterval(() => {\r\n // Alternar entre el título alternativo y el título original\r\n document.title = toggle ? this.alternateTitle : this.originalTitle;\r\n toggle = !toggle;\r\n }, 1000); // Cambia el título cada segundo\r\n }\r\n }\r\n\r\n stopFlashingTitle(): void {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n this.intervalId = null;\r\n document.title = this.originalTitle; // Restaura a vacío\r\n }\r\n }\r\n\r\n revisarAlertasPendientes(urlObtenerAlertasPanico: string, token: string): void {\r\n const helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(token);\r\n this.wmMenuServicioService\r\n .menuApiObtener(urlObtenerAlertasPanico, decodedToken['id_usuario'], token)\r\n .subscribe((resp) => {\r\n if (resp && resp.length > 0) {\r\n \r\n const alertasIds = resp.map(alerta => alerta.IdAlertaPanico);\r\n\r\n // Eliminar IDs que no están en la respuesta del servicio\r\n this.IdsAlertasPanicoActivas.forEach((id) => {\r\n if (!alertasIds.includes(id)) {\r\n this.IdsAlertasPanicoActivas.delete(id);\r\n }\r\n });\r\n\r\n // Filtrar alertas nuevas\r\n const newAlerts = resp.filter(alerta => !this.IdsAlertasPanicoActivas.has(alerta.IdAlertaPanico));\r\n\r\n // Agregar las nuevas alertas a la lista activa\r\n newAlerts.forEach(alerta => this.IdsAlertasPanicoActivas.add(alerta.IdAlertaPanico));\r\n if (this.IdsAlertasPanicoActivas.size > 0) {\r\n this.startFlashingTitle();\r\n }\r\n // Si hay nuevas alertas, dispara notificacion sonora\r\n if (newAlerts.length > 0) {\r\n this.playSound();\r\n }\r\n } else {\r\n // Si no hay alertas en la respuesta, limpiar la lista\r\n this.IdsAlertasPanicoActivas.clear();\r\n this.stopFlashingTitle();\r\n }\r\n // Actualizar localStorage con los IDs activos\r\n localStorage.setItem('ALERTAS_PANICO_ACTIVAS_WM', JSON.stringify(Array.from(this.IdsAlertasPanicoActivas)));\r\n });\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule} from '@angular/material/sidenav';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatRippleModule } from \"@angular/material/core\";\r\n\r\nimport { WmMenuComponent } from './wm-menu/wm-menu.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { JwtModule } from '@auth0/angular-jwt';\r\n\r\n\r\n@NgModule({\r\n declarations: [WmMenuComponent],\r\n imports: [\r\n BrowserModule,\r\n MatToolbarModule,\r\n MatSidenavModule,\r\n MatListModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n MatRippleModule,\r\n HttpClientModule,\r\n JwtModule\r\n ],\r\n exports: [WmMenuComponent]\r\n})\r\nexport class WmMenuModule { }\r\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://wm-menu/lib/wm-menu/model/wm-menu-cuenta.model.ts","ng://wm-menu/lib/wm-menu/services/wm-menu-servicio.service.ts","ng://wm-menu/lib/wm-menu/wm-menu.component.ts","ng://wm-menu/lib/wm-menu/services/wm-menu-alerta-panico.service.ts","ng://wm-menu/lib/wm-menu.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","MenuSecundario","this","hijos","WmMenuServicioService","http","iconRegistry","sanitizer","prototype","menuApiObtener","url","idUsuario","token","codLogicaParametro","headers","HttpHeaders","Authorization","myParams","HttpParams","append","toString","get","params","pipe","map","resp","catchError","error","throwError","mapearMenu","respApi","sort","a","b","Posicion","element","Icono","startsWith","iconSvg","addSvgIcon","bypassSecurityTrustResourceUrl","obtenerMenu","idMenuPadre","menu","IdMenuPadre","push","titulo","IdiomaRecurso","Url","icono","descripcion","Descripcion","IdMenu","menuIdiomasObtener","almacenamientoApiObtener","HttpClient","MatIconRegistry","DomSanitizer","Injectable","providedIn","WmMenuComponent","wmMenuServicioService","menuSecundarioSel","menuLateralAbierto","menuIdioma","ngOnInit","_this","cargarMenuCuenta","urlMenu","decodedToken","JwtHelperService","decodeToken","subscribe","menuPrincipal","urlIdiomas","urlBaseAlmacenamiento","utilizado","Utilizado","total","Total","porcentajeUtilizado","Math","round","clickMenuPrincipal","menuPrincipalSel","clickMenuSecundario","menuSecundario","urlCuentaSeguridad","CambiarContrasenna","activar2fa","Configurar2fa","urlguiasOnline","_a","guiasOnline","CerrarSesion","filter","hijo","Input","Component","selector","template","WmMenuAlertaPanicoService","alternateTitle","audio","isPlaying","IdsAlertasPanicoActivas","Set","soundTimeout","isRunning","console","log","iniciarProceso","intervalMs","callback","urlObtenerParametro","rutaAudio","forEach","evento","document","addEventListener","Valor","storedIds","localStorage","getItem","JSON","parse","ejecutarProceso_1","setTimeout","once","stopProcess","subscription","unsubscribe","ngOnDestroy","stopSound","stopFlashingTitle","playSound","Audio","loop","play","then","catch","pause","currentTime","clearTimeout","startFlashingTitle","toggle","originalTitle","title","intervalId","setInterval","clearInterval","revisarAlertasPendientes","urlObtenerAlertasPanico","alertasIds_1","alerta","IdAlertaPanico","id","includes","delete","newAlerts","has","add","size","clear","setItem","stringify","Array","from","WmMenuModule","NgModule","declarations","imports","BrowserModule","MatToolbarModule","MatSidenavModule","MatListModule","MatButtonModule","MatIconModule","MatMenuModule","MatRippleModule","HttpClientModule","JwtModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export class MenuSecundario {\r\n icono: string;\r\n titulo: string;\r\n hijos: MenuSecundarioHijo[] = [];\r\n}\r\n\r\nexport class MenuSecundarioHijo {\r\n icono: string;\r\n titulo: string;\r\n url: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { throwError, Observable } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { MenuPrincipal } from '../model/wm-menu-principal.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WmMenuServicioService {\r\n\r\n constructor(private http: HttpClient, private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) { }\r\n\r\n menuApiObtener(url:string, idUsuario: string, token:string, codLogicaParametro = \"\"): Observable<any> {\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n \r\n let myParams = new HttpParams();\r\n if (codLogicaParametro.length > 0) {\r\n myParams = myParams.append(\"codLogica\", codLogicaParametro);\r\n }\r\n myParams = myParams.append(\"ctrlActivo\", \"true\");\r\n myParams = myParams.append(\"conPadres\", \"true\");\r\n if (idUsuario != null)\r\n myParams = myParams.append(\"idUsuario\", idUsuario.toString());\r\n\r\n return this.http.get(url, { headers, params: myParams }).pipe(\r\n map(resp => {\r\n return resp;\r\n }),\r\n catchError(error => {\r\n return throwError(error.error);\r\n })\r\n );\r\n }\r\n\r\n mapearMenu(respApi: any): MenuPrincipal[] {\r\n respApi = respApi.sort((a, b) => a.Posicion > b.Posicion?\"1\":\"-1\");\r\n\r\n for (const key in respApi) {\r\n const element = respApi[key];\r\n if (element.Icono.startsWith(\"http\")) {\r\n var iconSvg = 'wm-icon-menu-' + key;\r\n this.iconRegistry.addSvgIcon(\r\n iconSvg,\r\n this.sanitizer.bypassSecurityTrustResourceUrl(element.Icono));\r\n respApi[key].Icono = iconSvg;\r\n }\r\n }\r\n\r\n return this.obtenerMenu(respApi);\r\n }\r\n\r\n\r\n private obtenerMenu(respApi: any, idMenuPadre?: Number): MenuPrincipal[] {\r\n var menu: MenuPrincipal[] = [];\r\n for (const key in respApi) {\r\n if (respApi[key].IdMenuPadre == idMenuPadre || (!idMenuPadre && respApi[key].IdMenuPadre == null)) {\r\n menu.push({\r\n titulo: respApi[key].IdiomaRecurso,\r\n url: respApi[key].Url,\r\n icono: respApi[key].Icono,\r\n descripcion: respApi[key].Descripcion,\r\n hijos: this.obtenerMenu(respApi, respApi[key].IdMenu)\r\n });\r\n }\r\n }\r\n return menu;\r\n }\r\n\r\n menuIdiomasObtener(url:string, idUsuario: string, token:string): Observable<any> {\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n\r\n return this.http.get(url).pipe(\r\n map(resp => {\r\n return resp;\r\n }),\r\n catchError(error => {\r\n return throwError(error.error);\r\n })\r\n );\r\n }\r\n \r\n almacenamientoApiObtener(url:string, idUsuario: string, token:string): Observable<any> {\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n \r\n let myParams = new HttpParams();\r\n\r\n if (idUsuario != null)\r\n myParams = myParams.append(\"idUsuario\", idUsuario.toString());\r\n \r\n return this.http.get(url, { headers, params: myParams }).pipe(\r\n map(resp => {\r\n return resp;\r\n }),\r\n catchError(error => {\r\n return throwError(error.error);\r\n })\r\n );\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport { MenuPrincipal } from './model/wm-menu-principal.model';\r\nimport { MenuSecundario } from './model/wm-menu-cuenta.model';\r\nimport { WmMenuServicioService } from './services/wm-menu-servicio.service';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\n\r\n@Component({\r\n selector: 'wm-menu',\r\n templateUrl: './wm-menu.component.html',\r\n styleUrls: ['./wm-menu.component.scss']\r\n})\r\nexport class WmMenuComponent implements OnInit {\r\n @Input() logo: string;\r\n @Input() colorFondo: string;\r\n @Input() colorTexto: string;\r\n @Input() menuPrincipal: MenuPrincipal[];\r\n @Input() menuSecundario: MenuSecundario[];\r\n\r\n @Input() urlMenu: string; \r\n @Input() token: string;\r\n @Input() urlCuentaSeguridad: string;\r\n @Input() activar2fa: string;\r\n @Input() urlguiasOnline: string;\r\n @Input() urlObtenerAlertasPanico: string;\r\n @Input() urlObtenerParametro: string;\r\n @Input() rutaAudio: string;\r\n\r\n @Input() nombreCliente: string;\r\n @Input() nombreUsuario: string;\r\n @Input() versionWeb: string;\r\n @Input() urlBaseAlmacenamiento: string;\r\n\r\n @Input() urlIdiomas: string;\r\n\r\n menuPrincipalSel: MenuPrincipal;\r\n menuSecundarioSel: MenuSecundario = new MenuSecundario();\r\n menuLateralAbierto: Boolean = false;\r\n porcentajeUtilizado : number;\r\n menuIdioma : any = [];\r\n\r\n constructor(private wmMenuServicioService: WmMenuServicioService) { }\r\n\r\n ngOnInit(): void {\r\n \r\n this.cargarMenuCuenta();\r\n\r\n if (this.urlMenu && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.wmMenuServicioService\r\n .menuApiObtener(this.urlMenu, decodedToken[\"id_usuario\"], this.token)\r\n .subscribe((resp) => {\r\n this.menuPrincipal = this.wmMenuServicioService.mapearMenu(resp);\r\n });\r\n }\r\n\r\n if (this.urlIdiomas && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.wmMenuServicioService\r\n .menuIdiomasObtener(this.urlIdiomas, decodedToken[\"id_usuario\"], this.token)\r\n .subscribe((resp) => {\r\n this.menuIdioma = resp;\r\n this.cargarMenuCuenta();\r\n });\r\n }\r\n\r\n if (this.urlBaseAlmacenamiento && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.wmMenuServicioService\r\n .almacenamientoApiObtener(this.urlBaseAlmacenamiento, decodedToken[\"id_usuario\"], this.token)\r\n .subscribe((resp) => {\r\n let utilizado = resp[0] && resp[0].Utilizado ? resp[0].Utilizado : 0;\r\n let total = resp[0] && resp[0].Total ? resp[0].Total : 0;\r\n this.porcentajeUtilizado = Math.round((utilizado / total) * 100);\r\n });\r\n }\r\n }\r\n\r\n clickMenuPrincipal(i: number) {\r\n if (this.menuPrincipal[i].hijos && this.menuPrincipal[i].hijos.length) {\r\n if (this.menuPrincipalSel == this.menuPrincipal[i]) {\r\n this.menuPrincipalSel = null;\r\n } else {\r\n this.menuPrincipalSel = this.menuPrincipal[i];\r\n }\r\n }\r\n }\r\n\r\n clickMenuSecundario(i: number) {\r\n this.menuSecundarioSel = this.menuSecundario[i];\r\n this.menuPrincipalSel = null;\r\n }\r\n\r\n cargarMenuCuenta(){\r\n if (this.urlCuentaSeguridad && this.token) {\r\n var helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(this.token);\r\n this.menuSecundario = [{\r\n titulo: decodedToken[\"unique_name\"],\r\n icono: \"account_circle\",\r\n hijos: [\r\n { titulo: decodedToken[\"unique_name\"], url: \"\", icono: \"person\" },\r\n { titulo: this.menuIdioma && this.menuIdioma.CambiarContrasenna ? this.menuIdioma.CambiarContrasenna : \"Cambiar contraseña\", url: this.urlCuentaSeguridad + \"CambioContrasena\", icono: \"vpn_key\" },\r\n this.activar2fa == \"1\" ? { titulo: this.menuIdioma && this.menuIdioma.Configurar2fa ? this.menuIdioma.Configurar2fa : \"Configurar 2FA\", url: this.urlCuentaSeguridad + \"Habilitacion2FA\", icono: \"verified_user\" } : null,\r\n this.urlguiasOnline != null && this.urlguiasOnline !== \"\" && this.urlguiasOnline?.length != 0 ? { titulo: this.menuIdioma && this.menuIdioma.guiasOnline ? this.menuIdioma.guiasOnline : \"Guias Online\", url: this.urlguiasOnline, icono: \"menu_book\" } : null,\r\n { titulo: this.menuIdioma && this.menuIdioma.CerrarSesion ? this.menuIdioma.CerrarSesion : \"Cerrar sesión\", url: this.urlCuentaSeguridad + \"CerrarSesion\", icono: \"exit_to_app\" }].filter(hijo => hijo != null),\r\n }];\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { WmMenuServicioService } from './wm-menu-servicio.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WmMenuAlertaPanicoService {\r\n\r\n private intervalId: any;\r\n private alternateTitle = 'Alerta de Pánico Recibida';\r\n private originalTitle: string;\r\n private audio: HTMLAudioElement | null = null;\r\n private isPlaying = false; // Controla si el sonido ya está reproduciéndose\r\n public formulario: any;\r\n private IdsAlertasPanicoActivas: Set<number> = new Set(); // Almacena los IDs de las alertas ya manejadas\r\n private soundTimeout: any = null; // Controla el temporizador del sonido\r\n private rutaAudio: string;\r\n constructor(private wmMenuServicioService: WmMenuServicioService) { \r\n console.log('WmMenuAlertaPanicoService inicializado.');\r\n }\r\n\r\n private subscription: any;\r\n private isRunning: boolean = false;\r\n\r\n iniciarProceso(\r\n intervalMs: number,\r\n callback: () => void,\r\n urlObtenerParametro: string,\r\n token: string,\r\n rutaAudio: string\r\n ): void {\r\n console.log('iniciarProceso llamado con parámetros:', { intervalMs, urlObtenerParametro, token, rutaAudio });\r\n this.rutaAudio = rutaAudio;\r\n\r\n const iniciarConInteraccion = () => {\r\n console.log('iniciarConInteraccion ejecutado.');\r\n this.wmMenuServicioService\r\n .menuApiObtener(urlObtenerParametro, null, token, 'ReporteAlertasPanico')\r\n .subscribe((resp) => {\r\n console.log('Respuesta obtenida de menuApiObtener:', resp);\r\n if (resp && resp.length > 0 && resp[0].Valor == 1) {\r\n if (this.isRunning) {\r\n console.log('Proceso ya está corriendo.');\r\n return;\r\n }\r\n\r\n const storedIds = localStorage.getItem('ALERTAS_PANICO_ACTIVAS_WM');\r\n this.IdsAlertasPanicoActivas = storedIds ? new Set(JSON.parse(storedIds)) : new Set();\r\n console.log('IdsAlertasPanicoActivas inicializado:', this.IdsAlertasPanicoActivas);\r\n\r\n const ejecutarProceso = () => {\r\n console.log('ejecutarProceso iniciado.');\r\n this.isRunning = true;\r\n callback();\r\n setTimeout(() => {\r\n this.isRunning = false;\r\n ejecutarProceso();\r\n }, intervalMs);\r\n };\r\n\r\n ejecutarProceso();\r\n }\r\n });\r\n };\r\n\r\n ['drag', 'click'].forEach(evento => {\r\n console.log(`Evento ${evento} registrado para iniciar proceso.`);\r\n document.addEventListener(\r\n evento,\r\n () => {\r\n iniciarConInteraccion();\r\n },\r\n { once: true }\r\n );\r\n });\r\n }\r\n\r\n stopProcess(): void {\r\n console.log('stopProcess ejecutado.');\r\n this.isRunning = false;\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log('ngOnDestroy ejecutado.');\r\n this.stopSound();\r\n this.stopFlashingTitle();\r\n }\r\n\r\n playSound(): void {\r\n console.log('playSound llamado.');\r\n if (this.isPlaying) return; // Evita reproducir si ya está sonando\r\n this.isPlaying = true;\r\n if (!this.audio) {\r\n this.audio = new Audio(this.rutaAudio); // Ruta al archivo de sonido\r\n }\r\n console.log(\"Audio cargado: \", this.audio)\r\n this.audio.loop = true; // Reproducir en bucle\r\n this.audio.play()\r\n .then(() => {\r\n console.log('Sonido reproduciéndose.');\r\n // Detener el sonido después de 10 segundos\r\n this.soundTimeout = setTimeout(() => {\r\n this.stopSound();\r\n }, 10000); // Detener después de 10 segundos\r\n })\r\n .catch(error => {\r\n console.error('Error al reproducir el sonido:', error);\r\n });\r\n }\r\n\r\n stopSound(): void {\r\n console.log('stopSound llamado.');\r\n if (this.audio) {\r\n this.audio.pause();\r\n this.audio.currentTime = 0; // Reinicia el sonido\r\n }\r\n this.isPlaying = false; // Restablece la bandera\r\n if (this.soundTimeout) {\r\n clearTimeout(this.soundTimeout); // Asegura que el temporizador se borre\r\n this.soundTimeout = null;\r\n }\r\n }\r\n\r\n startFlashingTitle(): void {\r\n console.log('startFlashingTitle llamado.');\r\n let toggle = false;\r\n\r\n // Almacenar el título original si aún no se ha guardado\r\n if (!this.originalTitle) {\r\n this.originalTitle = document.title;\r\n }\r\n\r\n if (!this.intervalId) {\r\n this.intervalId = setInterval(() => {\r\n // Alternar entre el título alternativo y el título original\r\n document.title = toggle ? this.alternateTitle : this.originalTitle;\r\n toggle = !toggle;\r\n }, 1000); // Cambia el título cada segundo\r\n }\r\n }\r\n\r\n stopFlashingTitle(): void {\r\n console.log('stopFlashingTitle llamado.');\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n this.intervalId = null;\r\n document.title = this.originalTitle; // Restaura a vacío\r\n }\r\n }\r\n\r\n revisarAlertasPendientes(urlObtenerAlertasPanico: string, token: string): void {\r\n console.log('revisarAlertasPendientes llamado con parámetros:', { urlObtenerAlertasPanico, token });\r\n const helper = new JwtHelperService();\r\n const decodedToken = helper.decodeToken(token);\r\n this.wmMenuServicioService\r\n .menuApiObtener(urlObtenerAlertasPanico, decodedToken['id_usuario'], token)\r\n .subscribe((resp) => {\r\n console.log('Respuesta obtenida de revisarAlertasPendientes:', resp);\r\n if (resp && resp.length > 0) {\r\n\r\n const alertasIds = resp.map(alerta => alerta.IdAlertaPanico);\r\n console.log('IDs de alertas obtenidas:', alertasIds);\r\n\r\n // Eliminar IDs que no están en la respuesta del servicio\r\n this.IdsAlertasPanicoActivas.forEach((id) => {\r\n if (!alertasIds.includes(id)) {\r\n this.IdsAlertasPanicoActivas.delete(id);\r\n }\r\n });\r\n\r\n // Filtrar alertas nuevas\r\n const newAlerts = resp.filter(alerta => !this.IdsAlertasPanicoActivas.has(alerta.IdAlertaPanico));\r\n\r\n // Agregar las nuevas alertas a la lista activa\r\n newAlerts.forEach(alerta => this.IdsAlertasPanicoActivas.add(alerta.IdAlertaPanico));\r\n if (this.IdsAlertasPanicoActivas.size > 0) {\r\n this.startFlashingTitle();\r\n }\r\n // Si hay nuevas alertas, dispara notificacion sonora\r\n if (newAlerts.length > 0) {\r\n this.playSound();\r\n }\r\n } else {\r\n // Si no hay alertas en la respuesta, limpiar la lista\r\n this.IdsAlertasPanicoActivas.clear();\r\n this.stopFlashingTitle();\r\n }\r\n // Actualizar localStorage con los IDs activos\r\n localStorage.setItem('ALERTAS_PANICO_ACTIVAS_WM', JSON.stringify(Array.from(this.IdsAlertasPanicoActivas)));\r\n });\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule} from '@angular/material/sidenav';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatRippleModule } from \"@angular/material/core\";\r\n\r\nimport { WmMenuComponent } from './wm-menu/wm-menu.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { JwtModule } from '@auth0/angular-jwt';\r\n\r\n\r\n@NgModule({\r\n declarations: [WmMenuComponent],\r\n imports: [\r\n BrowserModule,\r\n MatToolbarModule,\r\n MatSidenavModule,\r\n MatListModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n MatRippleModule,\r\n HttpClientModule,\r\n JwtModule\r\n ],\r\n exports: [WmMenuComponent]\r\n})\r\nexport class WmMenuModule { }\r\n"]}
@@ -13,22 +13,27 @@ let WmMenuAlertaPanicoService = class WmMenuAlertaPanicoService {
13
13
  this.IdsAlertasPanicoActivas = new Set(); // Almacena los IDs de las alertas ya manejadas
14
14
  this.soundTimeout = null; // Controla el temporizador del sonido
15
15
  this.isRunning = false;
16
+ console.log('WmMenuAlertaPanicoService inicializado.');
16
17
  }
17
18
  iniciarProceso(intervalMs, callback, urlObtenerParametro, token, rutaAudio) {
19
+ console.log('iniciarProceso llamado con parámetros:', { intervalMs, urlObtenerParametro, token, rutaAudio });
18
20
  this.rutaAudio = rutaAudio;
19
21
  const iniciarConInteraccion = () => {
22
+ console.log('iniciarConInteraccion ejecutado.');
20
23
  this.wmMenuServicioService
21
24
  .menuApiObtener(urlObtenerParametro, null, token, 'ReporteAlertasPanico')
22
25
  .subscribe((resp) => {
23
- // validar si el parametro ReporteAlertasPanico esta encendido
26
+ console.log('Respuesta obtenida de menuApiObtener:', resp);
24
27
  if (resp && resp.length > 0 && resp[0].Valor == 1) {
25
28
  if (this.isRunning) {
29
+ console.log('Proceso ya está corriendo.');
26
30
  return;
27
31
  }
28
- // Inicializar la variable desde localStorage
29
32
  const storedIds = localStorage.getItem('ALERTAS_PANICO_ACTIVAS_WM');
30
33
  this.IdsAlertasPanicoActivas = storedIds ? new Set(JSON.parse(storedIds)) : new Set();
34
+ console.log('IdsAlertasPanicoActivas inicializado:', this.IdsAlertasPanicoActivas);
31
35
  const ejecutarProceso = () => {
36
+ console.log('ejecutarProceso iniciado.');
32
37
  this.isRunning = true;
33
38
  callback();
34
39
  setTimeout(() => {
@@ -41,41 +46,48 @@ let WmMenuAlertaPanicoService = class WmMenuAlertaPanicoService {
41
46
  });
42
47
  };
43
48
  ['drag', 'click'].forEach(evento => {
49
+ console.log(`Evento ${evento} registrado para iniciar proceso.`);
44
50
  document.addEventListener(evento, () => {
45
51
  iniciarConInteraccion();
46
52
  }, { once: true });
47
53
  });
48
54
  }
49
55
  stopProcess() {
56
+ console.log('stopProcess ejecutado.');
50
57
  this.isRunning = false;
51
58
  if (this.subscription) {
52
59
  this.subscription.unsubscribe();
53
60
  }
54
61
  }
55
62
  ngOnDestroy() {
63
+ console.log('ngOnDestroy ejecutado.');
56
64
  this.stopSound();
57
65
  this.stopFlashingTitle();
58
66
  }
59
67
  playSound() {
68
+ console.log('playSound llamado.');
60
69
  if (this.isPlaying)
61
70
  return; // Evita reproducir si ya está sonando
62
71
  this.isPlaying = true;
63
72
  if (!this.audio) {
64
73
  this.audio = new Audio(this.rutaAudio); // Ruta al archivo de sonido
65
74
  }
75
+ console.log("Audio cargado: ", this.audio);
66
76
  this.audio.loop = true; // Reproducir en bucle
67
77
  this.audio.play()
68
78
  .then(() => {
79
+ console.log('Sonido reproduciéndose.');
69
80
  // Detener el sonido después de 10 segundos
70
81
  this.soundTimeout = setTimeout(() => {
71
82
  this.stopSound();
72
83
  }, 10000); // Detener después de 10 segundos
73
84
  })
74
85
  .catch(error => {
75
- console.log('Error al reproducir el sonido:', error);
86
+ console.error('Error al reproducir el sonido:', error);
76
87
  });
77
88
  }
78
89
  stopSound() {
90
+ console.log('stopSound llamado.');
79
91
  if (this.audio) {
80
92
  this.audio.pause();
81
93
  this.audio.currentTime = 0; // Reinicia el sonido
@@ -87,6 +99,7 @@ let WmMenuAlertaPanicoService = class WmMenuAlertaPanicoService {
87
99
  }
88
100
  }
89
101
  startFlashingTitle() {
102
+ console.log('startFlashingTitle llamado.');
90
103
  let toggle = false;
91
104
  // Almacenar el título original si aún no se ha guardado
92
105
  if (!this.originalTitle) {
@@ -101,6 +114,7 @@ let WmMenuAlertaPanicoService = class WmMenuAlertaPanicoService {
101
114
  }
102
115
  }
103
116
  stopFlashingTitle() {
117
+ console.log('stopFlashingTitle llamado.');
104
118
  if (this.intervalId) {
105
119
  clearInterval(this.intervalId);
106
120
  this.intervalId = null;
@@ -108,13 +122,16 @@ let WmMenuAlertaPanicoService = class WmMenuAlertaPanicoService {
108
122
  }
109
123
  }
110
124
  revisarAlertasPendientes(urlObtenerAlertasPanico, token) {
125
+ console.log('revisarAlertasPendientes llamado con parámetros:', { urlObtenerAlertasPanico, token });
111
126
  const helper = new JwtHelperService();
112
127
  const decodedToken = helper.decodeToken(token);
113
128
  this.wmMenuServicioService
114
129
  .menuApiObtener(urlObtenerAlertasPanico, decodedToken['id_usuario'], token)
115
130
  .subscribe((resp) => {
131
+ console.log('Respuesta obtenida de revisarAlertasPendientes:', resp);
116
132
  if (resp && resp.length > 0) {
117
133
  const alertasIds = resp.map(alerta => alerta.IdAlertaPanico);
134
+ console.log('IDs de alertas obtenidas:', alertasIds);
118
135
  // Eliminar IDs que no están en la respuesta del servicio
119
136
  this.IdsAlertasPanicoActivas.forEach((id) => {
120
137
  if (!alertasIds.includes(id)) {
@@ -153,4 +170,4 @@ WmMenuAlertaPanicoService = __decorate([
153
170
  })
154
171
  ], WmMenuAlertaPanicoService);
155
172
  export { WmMenuAlertaPanicoService };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUtuRSxJQUFhLHlCQUF5QixHQUF0QyxNQUFhLHlCQUF5QjtJQVdwQyxZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVJ4RCxtQkFBYyxHQUFHLDJCQUEyQixDQUFDO1FBRTdDLFVBQUssR0FBNEIsSUFBSSxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7UUFFbkUsNEJBQXVCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFDakcsaUJBQVksR0FBUSxJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7UUFLaEUsY0FBUyxHQUFZLEtBQUssQ0FBQztJQUhpQyxDQUFDO0lBS3JFLGNBQWMsQ0FDWixVQUFrQixFQUNsQixRQUFvQixFQUNwQixtQkFBMkIsRUFDM0IsS0FBYSxFQUNiLFNBQWlCO1FBRWpCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUI7aUJBQ3ZCLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUFDO2lCQUN4RSxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbEIsOERBQThEO2dCQUM5RCxJQUFJ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QUcsQ0FBQyxFQUFFO29CQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ2xCO2FBQ0Y7aUJBQU07Z0JBQ0wsc0RBQXNEO2dCQUN0RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1lBQ0QsOENBQThDO1lBQzlDLFlBQVksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FFRixDQUFBOztZQW5LNEMscUJBQXFCOzs7QUFYckQseUJBQXlCO0lBSHJDLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7R0FDVyx5QkFBeUIsQ0E4S3JDO1NBOUtZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XHJcbmltcG9ydCB7IFdtTWVudVNlcnZpY2lvU2VydmljZSB9IGZyb20gJy4vd20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdtTWVudUFsZXJ0YVBhbmljb1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGludGVydmFsSWQ6IGFueTtcclxuICBwcml2YXRlIGFsdGVybmF0ZVRpdGxlID0gJ0FsZXJ0YSBkZSBQw6FuaWNvIFJlY2liaWRhJztcclxuICBwcml2YXRlIG9yaWdpbmFsVGl0bGU6IHN0cmluZztcclxuICBwcml2YXRlIGF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpc1BsYXlpbmcgPSBmYWxzZTsgLy8gQ29udHJvbGEgc2kgZWwgc29uaWRvIHlhIGVzdMOhIHJlcHJvZHVjacOpbmRvc2VcclxuICBwdWJsaWMgZm9ybXVsYXJpbzogYW55O1xyXG4gIHByaXZhdGUgSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXM6IFNldDxudW1iZXI+ID0gbmV3IFNldCgpOyAvLyBBbG1hY2VuYSBsb3MgSURzIGRlIGxhcyBhbGVydGFzIHlhIG1hbmVqYWRhc1xyXG4gIHByaXZhdGUgc291bmRUaW1lb3V0OiBhbnkgPSBudWxsOyAvLyBDb250cm9sYSBlbCB0ZW1wb3JpemFkb3IgZGVsIHNvbmlkb1xyXG4gIHByaXZhdGUgcnV0YUF1ZGlvOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3bU1lbnVTZXJ2aWNpb1NlcnZpY2U6IFdtTWVudVNlcnZpY2lvU2VydmljZSkgeyB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBpc1J1bm5pbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaW5pY2lhclByb2Nlc28oXHJcbiAgICBpbnRlcnZhbE1zOiBudW1iZXIsXHJcbiAgICBjYWxsYmFjazogKCkgPT4gdm9pZCxcclxuICAgIHVybE9idGVuZXJQYXJhbWV0cm86IHN0cmluZyxcclxuICAgIHRva2VuOiBzdHJpbmcsXHJcbiAgICBydXRhQXVkaW86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5ydXRhQXVkaW8gPSBydXRhQXVkaW87XHJcbiAgXHJcbiAgICBjb25zdCBpbmljaWFyQ29uSW50ZXJhY2Npb24gPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgICAgLm1lbnVBcGlPYnRlbmVyKHVybE9idGVuZXJQYXJhbWV0cm8sIG51bGwsIHRva2VuLCAnUmVwb3J0ZUFsZXJ0YXNQYW5pY28nKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICAgIC8vIHZhbGlkYXIgc2kgZWwgcGFyYW1ldHJvIFJlcG9ydGVBbGVydGFzUGFuaWNvIGVzdGEgZW5jZW5kaWRvXHJcbiAgICAgICAgICBpZiAocmVzcCAmJiByZXNwLmxlbmd0aCA+IDAgJiYgcmVzcFswXS5WYWxvciA9PSAxKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUnVubmluZykge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBJbmljaWFsaXphciBsYSB2YXJpYWJsZSBkZXNkZSBsb2NhbFN0b3JhZ2VcclxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkSWRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0FMRVJUQVNfUEFOSUNPX0FDVElWQVNfV00nKTtcclxuICAgICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcyA9IHN0b3JlZElkcyA/IG5ldyBTZXQoSlNPTi5wYXJzZShzdG9yZWRJZHMpKSA6IG5ldyBTZXQoKTtcclxuICBcclxuICAgICAgICAgICAgY29uc3QgZWplY3V0YXJQcm9jZXNvID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNSdW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGVqZWN1dGFyUHJvY2VzbygpO1xyXG4gICAgICAgICAgICAgIH0sIGludGVydmFsTXMpO1xyXG4gICAgICAgICAgICB9O1xyXG4gIFxyXG4gICAgICAgICAgICBlamVjdXRhclByb2Nlc28oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgXHJcbiAgICBbJ2RyYWcnLCAnY2xpY2snXS5mb3JFYWNoKGV2ZW50byA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgZXZlbnRvLFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGluaWNpYXJDb25JbnRlcmFjY2lvbigpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgXHJcblxyXG4gIHN0b3BQcm9jZXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3BTb3VuZCgpO1xyXG4gICAgdGhpcy5zdG9wRmxhc2hpbmdUaXRsZSgpO1xyXG4gIH1cclxuXHJcbiAgcGxheVNvdW5kKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSByZXR1cm47IC8vIEV2aXRhIHJlcHJvZHVjaXIgc2kgeWEgZXN0w6Egc29uYW5kb1xyXG5cclxuICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcclxuICAgIGlmICghdGhpcy5hdWRpbykge1xyXG4gICAgICB0aGlzLmF1ZGlvID0gbmV3IEF1ZGlvKHRoaXMucnV0YUF1ZGlvKTsgLy8gUnV0YSBhbCBhcmNoaXZvIGRlIHNvbmlkb1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXVkaW8ubG9vcCA9IHRydWU7IC8vIFJlcHJvZHVjaXIgZW4gYnVjbGVcclxuICAgIHRoaXMuYXVkaW8ucGxheSgpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAvLyBEZXRlbmVyIGVsIHNvbmlkbyBkZXNwdcOpcyBkZSAxMCBzZWd1bmRvc1xyXG4gICAgICAgIHRoaXMuc291bmRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3BTb3VuZCgpO1xyXG4gICAgICAgIH0sIDEwMDAwKTsgLy8gRGV0ZW5lciBkZXNwdcOpcyBkZSAxMCBzZWd1bmRvc1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBhbCByZXByb2R1Y2lyIGVsIHNvbmlkbzonLCBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RvcFNvdW5kKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXVkaW8pIHtcclxuICAgICAgdGhpcy5hdWRpby5wYXVzZSgpO1xyXG4gICAgICB0aGlzLmF1ZGlvLmN1cnJlbnRUaW1lID0gMDsgLy8gUmVpbmljaWEgZWwgc29uaWRvXHJcbiAgICB9XHJcbiAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlOyAvLyBSZXN0YWJsZWNlIGxhIGJhbmRlcmFcclxuICAgIGlmICh0aGlzLnNvdW5kVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zb3VuZFRpbWVvdXQpOyAvLyBBc2VndXJhIHF1ZSBlbCB0ZW1wb3JpemFkb3Igc2UgYm9ycmVcclxuICAgICAgdGhpcy5zb3VuZFRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhcnRGbGFzaGluZ1RpdGxlKCk6IHZvaWQge1xyXG4gICAgbGV0IHRvZ2dsZSA9IGZhbHNlO1xyXG4gIFxyXG4gICAgLy8gQWxtYWNlbmFyIGVsIHTDrXR1bG8gb3JpZ2luYWwgc2kgYcO6biBubyBzZSBoYSBndWFyZGFkb1xyXG4gICAgaWYgKCF0aGlzLm9yaWdpbmFsVGl0bGUpIHtcclxuICAgICAgdGhpcy5vcmlnaW5hbFRpdGxlID0gZG9jdW1lbnQudGl0bGU7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxJZCkge1xyXG4gICAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgLy8gQWx0ZXJuYXIgZW50cmUgZWwgdMOtdHVsbyBhbHRlcm5hdGl2byB5IGVsIHTDrXR1bG8gb3JpZ2luYWxcclxuICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRvZ2dsZSA/IHRoaXMuYWx0ZXJuYXRlVGl0bGUgOiB0aGlzLm9yaWdpbmFsVGl0bGU7XHJcbiAgICAgICAgdG9nZ2xlID0gIXRvZ2dsZTtcclxuICAgICAgfSwgMTAwMCk7IC8vIENhbWJpYSBlbCB0w610dWxvIGNhZGEgc2VndW5kb1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEZsYXNoaW5nVGl0bGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aGlzLm9yaWdpbmFsVGl0bGU7IC8vIFJlc3RhdXJhIGEgdmFjw61vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZpc2FyQWxlcnRhc1BlbmRpZW50ZXModXJsT2J0ZW5lckFsZXJ0YXNQYW5pY286IHN0cmluZywgdG9rZW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGhlbHBlci5kZWNvZGVUb2tlbih0b2tlbik7XHJcbiAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAubWVudUFwaU9idGVuZXIodXJsT2J0ZW5lckFsZXJ0YXNQYW5pY28sIGRlY29kZWRUb2tlblsnaWRfdXN1YXJpbyddLCB0b2tlbilcclxuICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwICYmIHJlc3AubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBjb25zdCBhbGVydGFzSWRzID0gcmVzcC5tYXAoYWxlcnRhID0+IGFsZXJ0YS5JZEFsZXJ0YVBhbmljbyk7XHJcblxyXG4gICAgICAgICAgLy8gRWxpbWluYXIgSURzIHF1ZSBubyBlc3TDoW4gZW4gbGEgcmVzcHVlc3RhIGRlbCBzZXJ2aWNpb1xyXG4gICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5mb3JFYWNoKChpZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWFsZXJ0YXNJZHMuaW5jbHVkZXMoaWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5kZWxldGUoaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAvLyBGaWx0cmFyIGFsZXJ0YXMgbnVldmFzXHJcbiAgICAgICAgICBjb25zdCBuZXdBbGVydHMgPSByZXNwLmZpbHRlcihhbGVydGEgPT4gIXRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuaGFzKGFsZXJ0YS5JZEFsZXJ0YVBhbmljbykpO1xyXG5cclxuICAgICAgICAgIC8vIEFncmVnYXIgbGFzIG51ZXZhcyBhbGVydGFzIGEgbGEgbGlzdGEgYWN0aXZhXHJcbiAgICAgICAgICBuZXdBbGVydHMuZm9yRWFjaChhbGVydGEgPT4gdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5hZGQoYWxlcnRhLklkQWxlcnRhUGFuaWNvKSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5zaXplID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0Rmxhc2hpbmdUaXRsZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gU2kgaGF5IG51ZXZhcyBhbGVydGFzLCBkaXNwYXJhIG5vdGlmaWNhY2lvbiBzb25vcmFcclxuICAgICAgICAgIGlmIChuZXdBbGVydHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXlTb3VuZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWxlcnRhcyBlbiBsYSByZXNwdWVzdGEsIGxpbXBpYXIgbGEgbGlzdGFcclxuICAgICAgICAgIHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuY2xlYXIoKTtcclxuICAgICAgICAgIHRoaXMuc3RvcEZsYXNoaW5nVGl0bGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQWN0dWFsaXphciBsb2NhbFN0b3JhZ2UgY29uIGxvcyBJRHMgYWN0aXZvc1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdBTEVSVEFTX1BBTklDT19BQ1RJVkFTX1dNJywgSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzKSkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUtuRSxJQUFhLHlCQUF5QixHQUF0QyxNQUFhLHlCQUF5QjtJQVdwQyxZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVJ4RCxtQkFBYyxHQUFHLDJCQUEyQixDQUFDO1FBRTdDLFVBQUssR0FBNEIsSUFBSSxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7UUFFbkUsNEJBQXVCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFDakcsaUJBQVksR0FBUSxJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7UUFPaEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUpqQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUtELGNBQWMsQ0FDWixVQUFrQixFQUNsQixRQUFvQixFQUNwQixtQkFBMkIsRUFDM0IsS0FBYSxFQUNiLFNBQWlCO1FBRWpCLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEVBQUUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0csSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDakMsT0FB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RUFBRSxDQUFDO2lCQUMzQjtnQkFDRCxxREFBcUQ7Z0JBQ3JELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDbEI7YUFDRjtpQkFBTTtnQkFDTCxzREFBc0Q7Z0JBQ3RELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDMUI7WUFDRCw4Q0FBOEM7WUFDOUMsWUFBWSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlHLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUVGLENBQUE7O1lBbEw0QyxxQkFBcUI7OztBQVhyRCx5QkFBeUI7SUFIckMsVUFBVSxDQUFDO1FBQ1YsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQztHQUNXLHlCQUF5QixDQTZMckM7U0E3TFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgV21NZW51U2VydmljaW9TZXJ2aWNlIH0gZnJvbSAnLi93bS1tZW51LXNlcnZpY2lvLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV21NZW51QWxlcnRhUGFuaWNvU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgaW50ZXJ2YWxJZDogYW55O1xyXG4gIHByaXZhdGUgYWx0ZXJuYXRlVGl0bGUgPSAnQWxlcnRhIGRlIFDDoW5pY28gUmVjaWJpZGEnO1xyXG4gIHByaXZhdGUgb3JpZ2luYWxUaXRsZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgYXVkaW86IEhUTUxBdWRpb0VsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGlzUGxheWluZyA9IGZhbHNlOyAvLyBDb250cm9sYSBzaSBlbCBzb25pZG8geWEgZXN0w6EgcmVwcm9kdWNpw6luZG9zZVxyXG4gIHB1YmxpYyBmb3JtdWxhcmlvOiBhbnk7XHJcbiAgcHJpdmF0ZSBJZHNBbGVydGFzUGFuaWNvQWN0aXZhczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7IC8vIEFsbWFjZW5hIGxvcyBJRHMgZGUgbGFzIGFsZXJ0YXMgeWEgbWFuZWphZGFzXHJcbiAgcHJpdmF0ZSBzb3VuZFRpbWVvdXQ6IGFueSA9IG51bGw7IC8vIENvbnRyb2xhIGVsIHRlbXBvcml6YWRvciBkZWwgc29uaWRvXHJcbiAgcHJpdmF0ZSBydXRhQXVkaW86IHN0cmluZztcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdtTWVudVNlcnZpY2lvU2VydmljZTogV21NZW51U2VydmljaW9TZXJ2aWNlKSB7IFxyXG4gICAgY29uc29sZS5sb2coJ1dtTWVudUFsZXJ0YVBhbmljb1NlcnZpY2UgaW5pY2lhbGl6YWRvLicpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IGFueTtcclxuICBwcml2YXRlIGlzUnVubmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpbmljaWFyUHJvY2VzbyhcclxuICAgIGludGVydmFsTXM6IG51bWJlcixcclxuICAgIGNhbGxiYWNrOiAoKSA9PiB2b2lkLFxyXG4gICAgdXJsT2J0ZW5lclBhcmFtZXRybzogc3RyaW5nLFxyXG4gICAgdG9rZW46IHN0cmluZyxcclxuICAgIHJ1dGFBdWRpbzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnaW5pY2lhclByb2Nlc28gbGxhbWFkbyBjb24gcGFyw6FtZXRyb3M6JywgeyBpbnRlcnZhbE1zLCB1cmxPYnRlbmVyUGFyYW1ldHJvLCB0b2tlbiwgcnV0YUF1ZGlvIH0pO1xyXG4gICAgdGhpcy5ydXRhQXVkaW8gPSBydXRhQXVkaW87XHJcblxyXG4gICAgY29uc3QgaW5pY2lhckNvbkludGVyYWNjaW9uID0gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnaW5pY2lhckNvbkludGVyYWNjaW9uIGVqZWN1dGFkby4nKTtcclxuICAgICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgICAubWVudUFwaU9idGVuZXIodXJsT2J0ZW5lclBhcmFtZXRybywgbnVsbCwgdG9rZW4sICdSZXBvcnRlQWxlcnRhc1BhbmljbycpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1Jlc3B1ZXN0YSBvYnRlbmlkYSBkZSBtZW51QXBpT2J0ZW5lcjonLCByZXNwKTtcclxuICAgICAgICAgIGlmIChyZXNwICYmIHJlc3AubGVuZ3RoID4gMCAmJiByZXNwWzBdLlZhbG9yID09IDEpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1Byb2Nlc28geWEgZXN0w6EgY29ycmllbmRvLicpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkSWRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0FMRVJUQVNfUEFOSUNPX0FDVElWQVNfV00nKTtcclxuICAgICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcyA9IHN0b3JlZElkcyA/IG5ldyBTZXQoSlNPTi5wYXJzZShzdG9yZWRJZHMpKSA6IG5ldyBTZXQoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0lkc0FsZXJ0YXNQYW5pY29BY3RpdmFzIGluaWNpYWxpemFkbzonLCB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGVqZWN1dGFyUHJvY2VzbyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZWplY3V0YXJQcm9jZXNvIGluaWNpYWRvLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNSdW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGVqZWN1dGFyUHJvY2VzbygpO1xyXG4gICAgICAgICAgICAgIH0sIGludGVydmFsTXMpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgZWplY3V0YXJQcm9jZXNvKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIFsnZHJhZycsICdjbGljayddLmZvckVhY2goZXZlbnRvID0+IHtcclxuICAgICAgY29uc29sZS5sb2coYEV2ZW50byAke2V2ZW50b30gcmVnaXN0cmFkbyBwYXJhIGluaWNpYXIgcHJvY2Vzby5gKTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICBldmVudG8sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgaW5pY2lhckNvbkludGVyYWNjaW9uKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wUHJvY2VzcygpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdzdG9wUHJvY2VzcyBlamVjdXRhZG8uJyk7XHJcbiAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCduZ09uRGVzdHJveSBlamVjdXRhZG8uJyk7XHJcbiAgICB0aGlzLnN0b3BTb3VuZCgpO1xyXG4gICAgdGhpcy5zdG9wRmxhc2hpbmdUaXRsZSgpO1xyXG4gIH1cclxuXHJcbiAgcGxheVNvdW5kKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ3BsYXlTb3VuZCBsbGFtYWRvLicpO1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSByZXR1cm47IC8vIEV2aXRhIHJlcHJvZHVjaXIgc2kgeWEgZXN0w6Egc29uYW5kb1xyXG4gICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLmF1ZGlvKSB7XHJcbiAgICAgIHRoaXMuYXVkaW8gPSBuZXcgQXVkaW8odGhpcy5ydXRhQXVkaW8pOyAvLyBSdXRhIGFsIGFyY2hpdm8gZGUgc29uaWRvXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcIkF1ZGlvIGNhcmdhZG86IFwiLCB0aGlzLmF1ZGlvKVxyXG4gICAgdGhpcy5hdWRpby5sb29wID0gdHJ1ZTsgLy8gUmVwcm9kdWNpciBlbiBidWNsZVxyXG4gICAgdGhpcy5hdWRpby5wbGF5KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdTb25pZG8gcmVwcm9kdWNpw6luZG9zZS4nKTtcclxuICAgICAgICAvLyBEZXRlbmVyIGVsIHNvbmlkbyBkZXNwdcOpcyBkZSAxMCBzZWd1bmRvc1xyXG4gICAgICAgIHRoaXMuc291bmRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3BTb3VuZCgpO1xyXG4gICAgICAgIH0sIDEwMDAwKTsgLy8gRGV0ZW5lciBkZXNwdcOpcyBkZSAxMCBzZWd1bmRvc1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIHJlcHJvZHVjaXIgZWwgc29uaWRvOicsIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU291bmQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnc3RvcFNvdW5kIGxsYW1hZG8uJyk7XHJcbiAgICBpZiAodGhpcy5hdWRpbykge1xyXG4gICAgICB0aGlzLmF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgIHRoaXMuYXVkaW8uY3VycmVudFRpbWUgPSAwOyAvLyBSZWluaWNpYSBlbCBzb25pZG9cclxuICAgIH1cclxuICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7IC8vIFJlc3RhYmxlY2UgbGEgYmFuZGVyYVxyXG4gICAgaWYgKHRoaXMuc291bmRUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNvdW5kVGltZW91dCk7IC8vIEFzZWd1cmEgcXVlIGVsIHRlbXBvcml6YWRvciBzZSBib3JyZVxyXG4gICAgICB0aGlzLnNvdW5kVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydEZsYXNoaW5nVGl0bGUoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnc3RhcnRGbGFzaGluZ1RpdGxlIGxsYW1hZG8uJyk7XHJcbiAgICBsZXQgdG9nZ2xlID0gZmFsc2U7XHJcblxyXG4gICAgLy8gQWxtYWNlbmFyIGVsIHTDrXR1bG8gb3JpZ2luYWwgc2kgYcO6biBubyBzZSBoYSBndWFyZGFkb1xyXG4gICAgaWYgKCF0aGlzLm9yaWdpbmFsVGl0bGUpIHtcclxuICAgICAgdGhpcy5vcmlnaW5hbFRpdGxlID0gZG9jdW1lbnQudGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmludGVydmFsSWQpIHtcclxuICAgICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIC8vIEFsdGVybmFyIGVudHJlIGVsIHTDrXR1bG8gYWx0ZXJuYXRpdm8geSBlbCB0w610dWxvIG9yaWdpbmFsXHJcbiAgICAgICAgZG9jdW1lbnQudGl0bGUgPSB0b2dnbGUgPyB0aGlzLmFsdGVybmF0ZVRpdGxlIDogdGhpcy5vcmlnaW5hbFRpdGxlO1xyXG4gICAgICAgIHRvZ2dsZSA9ICF0b2dnbGU7XHJcbiAgICAgIH0sIDEwMDApOyAvLyBDYW1iaWEgZWwgdMOtdHVsbyBjYWRhIHNlZ3VuZG9cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BGbGFzaGluZ1RpdGxlKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ3N0b3BGbGFzaGluZ1RpdGxlIGxsYW1hZG8uJyk7XHJcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aGlzLm9yaWdpbmFsVGl0bGU7IC8vIFJlc3RhdXJhIGEgdmFjw61vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZpc2FyQWxlcnRhc1BlbmRpZW50ZXModXJsT2J0ZW5lckFsZXJ0YXNQYW5pY286IHN0cmluZywgdG9rZW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ3JldmlzYXJBbGVydGFzUGVuZGllbnRlcyBsbGFtYWRvIGNvbiBwYXLDoW1ldHJvczonLCB7IHVybE9idGVuZXJBbGVydGFzUGFuaWNvLCB0b2tlbiB9KTtcclxuICAgIGNvbnN0IGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odG9rZW4pO1xyXG4gICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgLm1lbnVBcGlPYnRlbmVyKHVybE9idGVuZXJBbGVydGFzUGFuaWNvLCBkZWNvZGVkVG9rZW5bJ2lkX3VzdWFyaW8nXSwgdG9rZW4pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVzcHVlc3RhIG9idGVuaWRhIGRlIHJldmlzYXJBbGVydGFzUGVuZGllbnRlczonLCByZXNwKTtcclxuICAgICAgICBpZiAocmVzcCAmJiByZXNwLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgICAgICBjb25zdCBhbGVydGFzSWRzID0gcmVzcC5tYXAoYWxlcnRhID0+IGFsZXJ0YS5JZEFsZXJ0YVBhbmljbyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnSURzIGRlIGFsZXJ0YXMgb2J0ZW5pZGFzOicsIGFsZXJ0YXNJZHMpO1xyXG5cclxuICAgICAgICAgIC8vIEVsaW1pbmFyIElEcyBxdWUgbm8gZXN0w6FuIGVuIGxhIHJlc3B1ZXN0YSBkZWwgc2VydmljaW9cclxuICAgICAgICAgIHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFhbGVydGFzSWRzLmluY2x1ZGVzKGlkKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuZGVsZXRlKGlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgLy8gRmlsdHJhciBhbGVydGFzIG51ZXZhc1xyXG4gICAgICAgICAgY29uc3QgbmV3QWxlcnRzID0gcmVzcC5maWx0ZXIoYWxlcnRhID0+ICF0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzLmhhcyhhbGVydGEuSWRBbGVydGFQYW5pY28pKTtcclxuXHJcbiAgICAgICAgICAvLyBBZ3JlZ2FyIGxhcyBudWV2YXMgYWxlcnRhcyBhIGxhIGxpc3RhIGFjdGl2YVxyXG4gICAgICAgICAgbmV3QWxlcnRzLmZvckVhY2goYWxlcnRhID0+IHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuYWRkKGFsZXJ0YS5JZEFsZXJ0YVBhbmljbykpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuc2l6ZSA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEZsYXNoaW5nVGl0bGUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIFNpIGhheSBudWV2YXMgYWxlcnRhcywgZGlzcGFyYSBub3RpZmljYWNpb24gc29ub3JhXHJcbiAgICAgICAgICBpZiAobmV3QWxlcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF5U291bmQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFsZXJ0YXMgZW4gbGEgcmVzcHVlc3RhLCBsaW1waWFyIGxhIGxpc3RhXHJcbiAgICAgICAgICB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzLmNsZWFyKCk7XHJcbiAgICAgICAgICB0aGlzLnN0b3BGbGFzaGluZ1RpdGxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEFjdHVhbGl6YXIgbG9jYWxTdG9yYWdlIGNvbiBsb3MgSURzIGFjdGl2b3NcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQUxFUlRBU19QQU5JQ09fQUNUSVZBU19XTScsIEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcykpKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -13,23 +13,28 @@ var WmMenuAlertaPanicoService = /** @class */ (function () {
13
13
  this.IdsAlertasPanicoActivas = new Set(); // Almacena los IDs de las alertas ya manejadas
14
14
  this.soundTimeout = null; // Controla el temporizador del sonido
15
15
  this.isRunning = false;
16
+ console.log('WmMenuAlertaPanicoService inicializado.');
16
17
  }
17
18
  WmMenuAlertaPanicoService.prototype.iniciarProceso = function (intervalMs, callback, urlObtenerParametro, token, rutaAudio) {
18
19
  var _this = this;
20
+ console.log('iniciarProceso llamado con parámetros:', { intervalMs: intervalMs, urlObtenerParametro: urlObtenerParametro, token: token, rutaAudio: rutaAudio });
19
21
  this.rutaAudio = rutaAudio;
20
22
  var iniciarConInteraccion = function () {
23
+ console.log('iniciarConInteraccion ejecutado.');
21
24
  _this.wmMenuServicioService
22
25
  .menuApiObtener(urlObtenerParametro, null, token, 'ReporteAlertasPanico')
23
26
  .subscribe(function (resp) {
24
- // validar si el parametro ReporteAlertasPanico esta encendido
27
+ console.log('Respuesta obtenida de menuApiObtener:', resp);
25
28
  if (resp && resp.length > 0 && resp[0].Valor == 1) {
26
29
  if (_this.isRunning) {
30
+ console.log('Proceso ya está corriendo.');
27
31
  return;
28
32
  }
29
- // Inicializar la variable desde localStorage
30
33
  var storedIds = localStorage.getItem('ALERTAS_PANICO_ACTIVAS_WM');
31
34
  _this.IdsAlertasPanicoActivas = storedIds ? new Set(JSON.parse(storedIds)) : new Set();
35
+ console.log('IdsAlertasPanicoActivas inicializado:', _this.IdsAlertasPanicoActivas);
32
36
  var ejecutarProceso_1 = function () {
37
+ console.log('ejecutarProceso iniciado.');
33
38
  _this.isRunning = true;
34
39
  callback();
35
40
  setTimeout(function () {
@@ -42,42 +47,49 @@ var WmMenuAlertaPanicoService = /** @class */ (function () {
42
47
  });
43
48
  };
44
49
  ['drag', 'click'].forEach(function (evento) {
50
+ console.log("Evento " + evento + " registrado para iniciar proceso.");
45
51
  document.addEventListener(evento, function () {
46
52
  iniciarConInteraccion();
47
53
  }, { once: true });
48
54
  });
49
55
  };
50
56
  WmMenuAlertaPanicoService.prototype.stopProcess = function () {
57
+ console.log('stopProcess ejecutado.');
51
58
  this.isRunning = false;
52
59
  if (this.subscription) {
53
60
  this.subscription.unsubscribe();
54
61
  }
55
62
  };
56
63
  WmMenuAlertaPanicoService.prototype.ngOnDestroy = function () {
64
+ console.log('ngOnDestroy ejecutado.');
57
65
  this.stopSound();
58
66
  this.stopFlashingTitle();
59
67
  };
60
68
  WmMenuAlertaPanicoService.prototype.playSound = function () {
61
69
  var _this = this;
70
+ console.log('playSound llamado.');
62
71
  if (this.isPlaying)
63
72
  return; // Evita reproducir si ya está sonando
64
73
  this.isPlaying = true;
65
74
  if (!this.audio) {
66
75
  this.audio = new Audio(this.rutaAudio); // Ruta al archivo de sonido
67
76
  }
77
+ console.log("Audio cargado: ", this.audio);
68
78
  this.audio.loop = true; // Reproducir en bucle
69
79
  this.audio.play()
70
80
  .then(function () {
81
+ console.log('Sonido reproduciéndose.');
71
82
  // Detener el sonido después de 10 segundos
72
83
  _this.soundTimeout = setTimeout(function () {
73
84
  _this.stopSound();
74
85
  }, 10000); // Detener después de 10 segundos
75
86
  })
76
87
  .catch(function (error) {
77
- console.log('Error al reproducir el sonido:', error);
88
+ console.error('Error al reproducir el sonido:', error);
78
89
  });
79
90
  };
80
91
  WmMenuAlertaPanicoService.prototype.stopSound = function () {
92
+ console.log('stopSound llamado.');
81
93
  if (this.audio) {
82
94
  this.audio.pause();
83
95
  this.audio.currentTime = 0; // Reinicia el sonido
@@ -90,6 +102,7 @@ var WmMenuAlertaPanicoService = /** @class */ (function () {
90
102
  };
91
103
  WmMenuAlertaPanicoService.prototype.startFlashingTitle = function () {
92
104
  var _this = this;
105
+ console.log('startFlashingTitle llamado.');
93
106
  var toggle = false;
94
107
  // Almacenar el título original si aún no se ha guardado
95
108
  if (!this.originalTitle) {
@@ -104,6 +117,7 @@ var WmMenuAlertaPanicoService = /** @class */ (function () {
104
117
  }
105
118
  };
106
119
  WmMenuAlertaPanicoService.prototype.stopFlashingTitle = function () {
120
+ console.log('stopFlashingTitle llamado.');
107
121
  if (this.intervalId) {
108
122
  clearInterval(this.intervalId);
109
123
  this.intervalId = null;
@@ -112,13 +126,16 @@ var WmMenuAlertaPanicoService = /** @class */ (function () {
112
126
  };
113
127
  WmMenuAlertaPanicoService.prototype.revisarAlertasPendientes = function (urlObtenerAlertasPanico, token) {
114
128
  var _this = this;
129
+ console.log('revisarAlertasPendientes llamado con parámetros:', { urlObtenerAlertasPanico: urlObtenerAlertasPanico, token: token });
115
130
  var helper = new JwtHelperService();
116
131
  var decodedToken = helper.decodeToken(token);
117
132
  this.wmMenuServicioService
118
133
  .menuApiObtener(urlObtenerAlertasPanico, decodedToken['id_usuario'], token)
119
134
  .subscribe(function (resp) {
135
+ console.log('Respuesta obtenida de revisarAlertasPendientes:', resp);
120
136
  if (resp && resp.length > 0) {
121
137
  var alertasIds_1 = resp.map(function (alerta) { return alerta.IdAlertaPanico; });
138
+ console.log('IDs de alertas obtenidas:', alertasIds_1);
122
139
  // Eliminar IDs que no están en la respuesta del servicio
123
140
  _this.IdsAlertasPanicoActivas.forEach(function (id) {
124
141
  if (!alertasIds_1.includes(id)) {
@@ -158,4 +175,4 @@ var WmMenuAlertaPanicoService = /** @class */ (function () {
158
175
  return WmMenuAlertaPanicoService;
159
176
  }());
160
177
  export { WmMenuAlertaPanicoService };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUtuRTtJQVdFLG1DQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVJ4RCxtQkFBYyxHQUFHLDJCQUEyQixDQUFDO1FBRTdDLFVBQUssR0FBNEIsSUFBSSxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7UUFFbkUsNEJBQXVCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFDakcsaUJBQVksR0FBUSxJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7UUFLaEUsY0FBUyxHQUFZLEtBQUssQ0FBQztJQUhpQyxDQUFDO0lBS3JFLGtEQUFjLEdBQWQsVUFDRSxVQUFrQixFQUNsQixRQUFvQixFQUNwQixtQkFBMkIsRUFDM0IsS0FBYSxFQUNiLFNBQWlCO1FBTG5CLGlCQThDQztRQXZDQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixJQUFNLHFCQUFxQixHQUFHO1lBQzVCLEtBQUksQ0FBQyxxQkFBcUI7aUJBQ3ZCLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUFDO2lCQUN4RSxTQUFTLENBQUMsVUFBQyxJQUFJO2dCQUNkLDhEQUE4RDtnQkFDOUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxD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QUMsRUFBRTtvQkFDeEIsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUNsQjthQUNGO2lCQUFNO2dCQUNMLHNEQUFzRDtnQkFDdEQsS0FBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQyxLQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUMxQjtZQUNELDhDQUE4QztZQUM5QyxZQUFZLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnQkFqSzBDLHFCQUFxQjs7O0lBWHJELHlCQUF5QjtRQUhyQyxVQUFVLENBQUM7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDO09BQ1cseUJBQXlCLENBOEtyQztvQ0FyTEQ7Q0FxTEMsQUE5S0QsSUE4S0M7U0E5S1kseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgV21NZW51U2VydmljaW9TZXJ2aWNlIH0gZnJvbSAnLi93bS1tZW51LXNlcnZpY2lvLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV21NZW51QWxlcnRhUGFuaWNvU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgaW50ZXJ2YWxJZDogYW55O1xyXG4gIHByaXZhdGUgYWx0ZXJuYXRlVGl0bGUgPSAnQWxlcnRhIGRlIFDDoW5pY28gUmVjaWJpZGEnO1xyXG4gIHByaXZhdGUgb3JpZ2luYWxUaXRsZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgYXVkaW86IEhUTUxBdWRpb0VsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGlzUGxheWluZyA9IGZhbHNlOyAvLyBDb250cm9sYSBzaSBlbCBzb25pZG8geWEgZXN0w6EgcmVwcm9kdWNpw6luZG9zZVxyXG4gIHB1YmxpYyBmb3JtdWxhcmlvOiBhbnk7XHJcbiAgcHJpdmF0ZSBJZHNBbGVydGFzUGFuaWNvQWN0aXZhczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7IC8vIEFsbWFjZW5hIGxvcyBJRHMgZGUgbGFzIGFsZXJ0YXMgeWEgbWFuZWphZGFzXHJcbiAgcHJpdmF0ZSBzb3VuZFRpbWVvdXQ6IGFueSA9IG51bGw7IC8vIENvbnRyb2xhIGVsIHRlbXBvcml6YWRvciBkZWwgc29uaWRvXHJcbiAgcHJpdmF0ZSBydXRhQXVkaW86IHN0cmluZztcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdtTWVudVNlcnZpY2lvU2VydmljZTogV21NZW51U2VydmljaW9TZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IGFueTtcclxuICBwcml2YXRlIGlzUnVubmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpbmljaWFyUHJvY2VzbyhcclxuICAgIGludGVydmFsTXM6IG51bWJlcixcclxuICAgIGNhbGxiYWNrOiAoKSA9PiB2b2lkLFxyXG4gICAgdXJsT2J0ZW5lclBhcmFtZXRybzogc3RyaW5nLFxyXG4gICAgdG9rZW46IHN0cmluZyxcclxuICAgIHJ1dGFBdWRpbzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLnJ1dGFBdWRpbyA9IHJ1dGFBdWRpbztcclxuICBcclxuICAgIGNvbnN0IGluaWNpYXJDb25JbnRlcmFjY2lvbiA9ICgpID0+IHtcclxuICAgICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgICAubWVudUFwaU9idGVuZXIodXJsT2J0ZW5lclBhcmFtZXRybywgbnVsbCwgdG9rZW4sICdSZXBvcnRlQWxlcnRhc1BhbmljbycpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgLy8gdmFsaWRhciBzaSBlbCBwYXJhbWV0cm8gUmVwb3J0ZUFsZXJ0YXNQYW5pY28gZXN0YSBlbmNlbmRpZG9cclxuICAgICAgICAgIGlmIChyZXNwICYmIHJlc3AubGVuZ3RoID4gMCAmJiByZXNwWzBdLlZhbG9yID09IDEpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEluaWNpYWxpemFyIGxhIHZhcmlhYmxlIGRlc2RlIGxvY2FsU3RvcmFnZVxyXG4gICAgICAgICAgICBjb25zdCBzdG9yZWRJZHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQUxFUlRBU19QQU5JQ09fQUNUSVZBU19XTScpO1xyXG4gICAgICAgICAgICB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzID0gc3RvcmVkSWRzID8gbmV3IFNldChKU09OLnBhcnNlKHN0b3JlZElkcykpIDogbmV3IFNldCgpO1xyXG4gIFxyXG4gICAgICAgICAgICBjb25zdCBlamVjdXRhclByb2Nlc28gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZWplY3V0YXJQcm9jZXNvKCk7XHJcbiAgICAgICAgICAgICAgfSwgaW50ZXJ2YWxNcyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgICAgIGVqZWN1dGFyUHJvY2VzbygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICBcclxuICAgIFsnZHJhZycsICdjbGljayddLmZvckVhY2goZXZlbnRvID0+IHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICBldmVudG8sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgaW5pY2lhckNvbkludGVyYWNjaW9uKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuICBcclxuXHJcbiAgc3RvcFByb2Nlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcFNvdW5kKCk7XHJcbiAgICB0aGlzLnN0b3BGbGFzaGluZ1RpdGxlKCk7XHJcbiAgfVxyXG5cclxuICBwbGF5U291bmQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1BsYXlpbmcpIHJldHVybjsgLy8gRXZpdGEgcmVwcm9kdWNpciBzaSB5YSBlc3TDoSBzb25hbmRvXHJcblxyXG4gICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLmF1ZGlvKSB7XHJcbiAgICAgIHRoaXMuYXVkaW8gPSBuZXcgQXVkaW8odGhpcy5ydXRhQXVkaW8pOyAvLyBSdXRhIGFsIGFyY2hpdm8gZGUgc29uaWRvXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdWRpby5sb29wID0gdHJ1ZTsgLy8gUmVwcm9kdWNpciBlbiBidWNsZVxyXG4gICAgdGhpcy5hdWRpby5wbGF5KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIC8vIERldGVuZXIgZWwgc29uaWRvIGRlc3B1w6lzIGRlIDEwIHNlZ3VuZG9zXHJcbiAgICAgICAgdGhpcy5zb3VuZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RvcFNvdW5kKCk7XHJcbiAgICAgICAgfSwgMTAwMDApOyAvLyBEZXRlbmVyIGRlc3B1w6lzIGRlIDEwIHNlZ3VuZG9zXHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIHJlcHJvZHVjaXIgZWwgc29uaWRvOicsIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wU291bmQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdWRpbykge1xyXG4gICAgICB0aGlzLmF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgIHRoaXMuYXVkaW8uY3VycmVudFRpbWUgPSAwOyAvLyBSZWluaWNpYSBlbCBzb25pZG9cclxuICAgIH1cclxuICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7IC8vIFJlc3RhYmxlY2UgbGEgYmFuZGVyYVxyXG4gICAgaWYgKHRoaXMuc291bmRUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNvdW5kVGltZW91dCk7IC8vIEFzZWd1cmEgcXVlIGVsIHRlbXBvcml6YWRvciBzZSBib3JyZVxyXG4gICAgICB0aGlzLnNvdW5kVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydEZsYXNoaW5nVGl0bGUoKTogdm9pZCB7XHJcbiAgICBsZXQgdG9nZ2xlID0gZmFsc2U7XHJcbiAgXHJcbiAgICAvLyBBbG1hY2VuYXIgZWwgdMOtdHVsbyBvcmlnaW5hbCBzaSBhw7puIG5vIHNlIGhhIGd1YXJkYWRvXHJcbiAgICBpZiAoIXRoaXMub3JpZ2luYWxUaXRsZSkge1xyXG4gICAgICB0aGlzLm9yaWdpbmFsVGl0bGUgPSBkb2N1bWVudC50aXRsZTtcclxuICAgIH1cclxuICBcclxuICAgIGlmICghdGhpcy5pbnRlcnZhbElkKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAvLyBBbHRlcm5hciBlbnRyZSBlbCB0w610dWxvIGFsdGVybmF0aXZvIHkgZWwgdMOtdHVsbyBvcmlnaW5hbFxyXG4gICAgICAgIGRvY3VtZW50LnRpdGxlID0gdG9nZ2xlID8gdGhpcy5hbHRlcm5hdGVUaXRsZSA6IHRoaXMub3JpZ2luYWxUaXRsZTtcclxuICAgICAgICB0b2dnbGUgPSAhdG9nZ2xlO1xyXG4gICAgICB9LCAxMDAwKTsgLy8gQ2FtYmlhIGVsIHTDrXR1bG8gY2FkYSBzZWd1bmRvXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wRmxhc2hpbmdUaXRsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xyXG4gICAgICB0aGlzLmludGVydmFsSWQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC50aXRsZSA9IHRoaXMub3JpZ2luYWxUaXRsZTsgLy8gUmVzdGF1cmEgYSB2YWPDrW9cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldmlzYXJBbGVydGFzUGVuZGllbnRlcyh1cmxPYnRlbmVyQWxlcnRhc1Bhbmljbzogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRva2VuKTtcclxuICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgIC5tZW51QXBpT2J0ZW5lcih1cmxPYnRlbmVyQWxlcnRhc1BhbmljbywgZGVjb2RlZFRva2VuWydpZF91c3VhcmlvJ10sIHRva2VuKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3AgJiYgcmVzcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGNvbnN0IGFsZXJ0YXNJZHMgPSByZXNwLm1hcChhbGVydGEgPT4gYWxlcnRhLklkQWxlcnRhUGFuaWNvKTtcclxuXHJcbiAgICAgICAgICAvLyBFbGltaW5hciBJRHMgcXVlIG5vIGVzdMOhbiBlbiBsYSByZXNwdWVzdGEgZGVsIHNlcnZpY2lvXHJcbiAgICAgICAgICB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghYWxlcnRhc0lkcy5pbmNsdWRlcyhpZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzLmRlbGV0ZShpZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIC8vIEZpbHRyYXIgYWxlcnRhcyBudWV2YXNcclxuICAgICAgICAgIGNvbnN0IG5ld0FsZXJ0cyA9IHJlc3AuZmlsdGVyKGFsZXJ0YSA9PiAhdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5oYXMoYWxlcnRhLklkQWxlcnRhUGFuaWNvKSk7XHJcblxyXG4gICAgICAgICAgLy8gQWdyZWdhciBsYXMgbnVldmFzIGFsZXJ0YXMgYSBsYSBsaXN0YSBhY3RpdmFcclxuICAgICAgICAgIG5ld0FsZXJ0cy5mb3JFYWNoKGFsZXJ0YSA9PiB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzLmFkZChhbGVydGEuSWRBbGVydGFQYW5pY28pKTtcclxuICAgICAgICAgIGlmICh0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzLnNpemUgPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRGbGFzaGluZ1RpdGxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBTaSBoYXkgbnVldmFzIGFsZXJ0YXMsIGRpc3BhcmEgbm90aWZpY2FjaW9uIHNvbm9yYVxyXG4gICAgICAgICAgaWYgKG5ld0FsZXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxheVNvdW5kKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNpIG5vIGhheSBhbGVydGFzIGVuIGxhIHJlc3B1ZXN0YSwgbGltcGlhciBsYSBsaXN0YVxyXG4gICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5jbGVhcigpO1xyXG4gICAgICAgICAgdGhpcy5zdG9wRmxhc2hpbmdUaXRsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBBY3R1YWxpemFyIGxvY2FsU3RvcmFnZSBjb24gbG9zIElEcyBhY3Rpdm9zXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0FMRVJUQVNfUEFOSUNPX0FDVElWQVNfV00nLCBKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMpKSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUtuRTtJQVdFLG1DQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVJ4RCxtQkFBYyxHQUFHLDJCQUEyQixDQUFDO1FBRTdDLFVBQUssR0FBNEIsSUFBSSxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBZ0Q7UUFFbkUsNEJBQXVCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFDakcsaUJBQVksR0FBUSxJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7UUFPaEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUpqQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUtELGtEQUFjLEdBQWQsVUFDRSxVQUFrQixFQUNsQixRQUFvQixFQUNwQixtQkFBMkIsRUFDM0IsS0FBYSxFQUNiLFNBQWlCO1FBTG5CLGlCQW1EQztRQTVDQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxFQUFFLEVBQUUsVUFBVSxZQUFBLEVBQUUsbUJBQW1CLHFCQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsU0FBUyxXQUFBLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLElBQU0scUJBQXFCLEdBQUc7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2hELEtBQUksQ0FBQyxxQkFBcUI7aUJBQ3ZCLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUFDO2lCQUN4RSxTQUFTLENBQUMsVUFBQyxJQUFJO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFO29CQUNqRCxJQUFJLEtBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQzt3QkFDMUMsT0FBTztxQkFDUjtvQkFFRCxJQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7b0JBQ3BFLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDdEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztvQkFFbkYsSUFBTSxpQkFBZSxHQUFHO3dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7d0JBQ3pDLEtBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3dCQUN0QixRQUFRLEVBQUUsQ0FBQzt3QkFDWCxVQUFVLENBQUM7NEJBQ1QsS0FBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7NEJBQ3ZCLGlCQUFlLEVBQUUsQ0FBQzt3QkFDcEIsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUNqQixDQUFDLENBQUM7b0JBRUYsaUJBQWUsRUFBRSxDQUFDO2lCQUNuQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBRUYsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsTUFBTTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVUsTUFBTSxzQ0FBbUMsQ0FBQyxDQUFDO1lBQ2pFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkIsTUFBTSxFQUNOO2dCQUNFLHFCQUFxQixFQUFFLENBQUM7WUFDMUIsQ0FBQyxFQUNELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUNmLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwrQ0FBVyxHQUFYO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELCtDQUFXLEdBQVg7UUFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCw2Q0FBUyxHQUFUO1FBQUEsaUJBb0JDO1FBbkJDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxDQUFDLHNDQUFzQztRQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCO1NBQ3JFO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsc0JBQXNCO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO2FBQ2QsSUFBSSxDQUFDO1lBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3ZDLDJDQUEyQztZQUMzQyxLQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztnQkFDN0IsS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztRQUM5QyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsVUFBQSxLQUFLO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw2Q0FBUyxHQUFUO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyx3QkFBd0I7UUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7WUFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsc0RBQWtCLEdBQWxCO1FBQUEsaUJBZ0JDO1FBZkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzNDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVuQix3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7Z0JBQzVCLDREQUE0RDtnQkFDNUQsUUFBUSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ25FLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUNuQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7U0FDM0M7SUFDSCxDQUFDO0lBRUQscURBQWlCLEdBQWpCO1FBQ0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLG1CQUFtQjtTQUN6RDtJQUNILENBQUM7SUFFRCw0REFBd0IsR0FBeEIsVUFBeUIsdUJBQStCLEVBQUUsS0FBYTtRQUF2RSxpQkF3Q0M7UUF2Q0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsRUFBRSxFQUFFLHVCQUF1Qix5QkFBQSxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDdEMsSUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMscUJBQXFCO2FBQ3ZCLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDO2FBQzFFLFNBQVMsQ0FBQyxVQUFDLElBQUk7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUUzQixJQUFNLFlBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLGNBQWMsRUFBckIsQ0FBcUIsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLFlBQVUsQ0FBQyxDQUFDO2dCQUVyRCx5REFBeUQ7Z0JBQ3pELEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsVUFBQyxFQUFFO29CQUN0QyxJQUFJLENBQUMsWUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDNUIsS0FBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDekM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgseUJBQXlCO2dCQUN6QixJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsQ0FBQyxLQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBeEQsQ0FBd0QsQ0FBQyxDQUFDO2dCQUVsRywrQ0FBK0M7Z0JBQy9DLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxLQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBdkQsQ0FBdUQsQ0FBQyxDQUFDO2dCQUNyRixJQUFJLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO29CQUN6QyxLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0QscURBQXFEO2dCQUNyRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN4QixLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ2xCO2FBQ0Y7aUJBQU07Z0JBQ0wsc0RBQXNEO2dCQUN0RCxLQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JDLEtBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1lBQ0QsOENBQThDO1lBQzlDLFlBQVksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dCQWhMMEMscUJBQXFCOzs7SUFYckQseUJBQXlCO1FBSHJDLFVBQVUsQ0FBQztZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUM7T0FDVyx5QkFBeUIsQ0E2THJDO29DQXBNRDtDQW9NQyxBQTdMRCxJQTZMQztTQTdMWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5pbXBvcnQgeyBXbU1lbnVTZXJ2aWNpb1NlcnZpY2UgfSBmcm9tICcuL3dtLW1lbnUtc2VydmljaW8uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbU1lbnVBbGVydGFQYW5pY29TZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBpbnRlcnZhbElkOiBhbnk7XHJcbiAgcHJpdmF0ZSBhbHRlcm5hdGVUaXRsZSA9ICdBbGVydGEgZGUgUMOhbmljbyBSZWNpYmlkYSc7XHJcbiAgcHJpdmF0ZSBvcmlnaW5hbFRpdGxlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBhdWRpbzogSFRNTEF1ZGlvRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNQbGF5aW5nID0gZmFsc2U7IC8vIENvbnRyb2xhIHNpIGVsIHNvbmlkbyB5YSBlc3TDoSByZXByb2R1Y2nDqW5kb3NlXHJcbiAgcHVibGljIGZvcm11bGFyaW86IGFueTtcclxuICBwcml2YXRlIElkc0FsZXJ0YXNQYW5pY29BY3RpdmFzOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTsgLy8gQWxtYWNlbmEgbG9zIElEcyBkZSBsYXMgYWxlcnRhcyB5YSBtYW5lamFkYXNcclxuICBwcml2YXRlIHNvdW5kVGltZW91dDogYW55ID0gbnVsbDsgLy8gQ29udHJvbGEgZWwgdGVtcG9yaXphZG9yIGRlbCBzb25pZG9cclxuICBwcml2YXRlIHJ1dGFBdWRpbzogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd21NZW51U2VydmljaW9TZXJ2aWNlOiBXbU1lbnVTZXJ2aWNpb1NlcnZpY2UpIHsgXHJcbiAgICBjb25zb2xlLmxvZygnV21NZW51QWxlcnRhUGFuaWNvU2VydmljZSBpbmljaWFsaXphZG8uJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogYW55O1xyXG4gIHByaXZhdGUgaXNSdW5uaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGluaWNpYXJQcm9jZXNvKFxyXG4gICAgaW50ZXJ2YWxNczogbnVtYmVyLFxyXG4gICAgY2FsbGJhY2s6ICgpID0+IHZvaWQsXHJcbiAgICB1cmxPYnRlbmVyUGFyYW1ldHJvOiBzdHJpbmcsXHJcbiAgICB0b2tlbjogc3RyaW5nLFxyXG4gICAgcnV0YUF1ZGlvOiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdpbmljaWFyUHJvY2VzbyBsbGFtYWRvIGNvbiBwYXLDoW1ldHJvczonLCB7IGludGVydmFsTXMsIHVybE9idGVuZXJQYXJhbWV0cm8sIHRva2VuLCBydXRhQXVkaW8gfSk7XHJcbiAgICB0aGlzLnJ1dGFBdWRpbyA9IHJ1dGFBdWRpbztcclxuXHJcbiAgICBjb25zdCBpbmljaWFyQ29uSW50ZXJhY2Npb24gPSAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdpbmljaWFyQ29uSW50ZXJhY2Npb24gZWplY3V0YWRvLicpO1xyXG4gICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgIC5tZW51QXBpT2J0ZW5lcih1cmxPYnRlbmVyUGFyYW1ldHJvLCBudWxsLCB0b2tlbiwgJ1JlcG9ydGVBbGVydGFzUGFuaWNvJylcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUmVzcHVlc3RhIG9idGVuaWRhIGRlIG1lbnVBcGlPYnRlbmVyOicsIHJlc3ApO1xyXG4gICAgICAgICAgaWYgKHJlc3AgJiYgcmVzcC5sZW5ndGggPiAwICYmIHJlc3BbMF0uVmFsb3IgPT0gMSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUHJvY2VzbyB5YSBlc3TDoSBjb3JyaWVuZG8uJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzdG9yZWRJZHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQUxFUlRBU19QQU5JQ09fQUNUSVZBU19XTScpO1xyXG4gICAgICAgICAgICB0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzID0gc3RvcmVkSWRzID8gbmV3IFNldChKU09OLnBhcnNlKHN0b3JlZElkcykpIDogbmV3IFNldCgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMgaW5pY2lhbGl6YWRvOicsIHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZWplY3V0YXJQcm9jZXNvID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlamVjdXRhclByb2Nlc28gaW5pY2lhZG8uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZWplY3V0YXJQcm9jZXNvKCk7XHJcbiAgICAgICAgICAgICAgfSwgaW50ZXJ2YWxNcyk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBlamVjdXRhclByb2Nlc28oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgWydkcmFnJywgJ2NsaWNrJ10uZm9yRWFjaChldmVudG8gPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhgRXZlbnRvICR7ZXZlbnRvfSByZWdpc3RyYWRvIHBhcmEgaW5pY2lhciBwcm9jZXNvLmApO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgIGV2ZW50byxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBpbmljaWFyQ29uSW50ZXJhY2Npb24oKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BQcm9jZXNzKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ3N0b3BQcm9jZXNzIGVqZWN1dGFkby4nKTtcclxuICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ25nT25EZXN0cm95IGVqZWN1dGFkby4nKTtcclxuICAgIHRoaXMuc3RvcFNvdW5kKCk7XHJcbiAgICB0aGlzLnN0b3BGbGFzaGluZ1RpdGxlKCk7XHJcbiAgfVxyXG5cclxuICBwbGF5U291bmQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygncGxheVNvdW5kIGxsYW1hZG8uJyk7XHJcbiAgICBpZiAodGhpcy5pc1BsYXlpbmcpIHJldHVybjsgLy8gRXZpdGEgcmVwcm9kdWNpciBzaSB5YSBlc3TDoSBzb25hbmRvXHJcbiAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMuYXVkaW8pIHtcclxuICAgICAgdGhpcy5hdWRpbyA9IG5ldyBBdWRpbyh0aGlzLnJ1dGFBdWRpbyk7IC8vIFJ1dGEgYWwgYXJjaGl2byBkZSBzb25pZG9cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwiQXVkaW8gY2FyZ2FkbzogXCIsIHRoaXMuYXVkaW8pXHJcbiAgICB0aGlzLmF1ZGlvLmxvb3AgPSB0cnVlOyAvLyBSZXByb2R1Y2lyIGVuIGJ1Y2xlXHJcbiAgICB0aGlzLmF1ZGlvLnBsYXkoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1NvbmlkbyByZXByb2R1Y2nDqW5kb3NlLicpO1xyXG4gICAgICAgIC8vIERldGVuZXIgZWwgc29uaWRvIGRlc3B1w6lzIGRlIDEwIHNlZ3VuZG9zXHJcbiAgICAgICAgdGhpcy5zb3VuZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3RvcFNvdW5kKCk7XHJcbiAgICAgICAgfSwgMTAwMDApOyAvLyBEZXRlbmVyIGRlc3B1w6lzIGRlIDEwIHNlZ3VuZG9zXHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgcmVwcm9kdWNpciBlbCBzb25pZG86JywgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BTb3VuZCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdzdG9wU291bmQgbGxhbWFkby4nKTtcclxuICAgIGlmICh0aGlzLmF1ZGlvKSB7XHJcbiAgICAgIHRoaXMuYXVkaW8ucGF1c2UoKTtcclxuICAgICAgdGhpcy5hdWRpby5jdXJyZW50VGltZSA9IDA7IC8vIFJlaW5pY2lhIGVsIHNvbmlkb1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTsgLy8gUmVzdGFibGVjZSBsYSBiYW5kZXJhXHJcbiAgICBpZiAodGhpcy5zb3VuZFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc291bmRUaW1lb3V0KTsgLy8gQXNlZ3VyYSBxdWUgZWwgdGVtcG9yaXphZG9yIHNlIGJvcnJlXHJcbiAgICAgIHRoaXMuc291bmRUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0Rmxhc2hpbmdUaXRsZSgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdzdGFydEZsYXNoaW5nVGl0bGUgbGxhbWFkby4nKTtcclxuICAgIGxldCB0b2dnbGUgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBBbG1hY2VuYXIgZWwgdMOtdHVsbyBvcmlnaW5hbCBzaSBhw7puIG5vIHNlIGhhIGd1YXJkYWRvXHJcbiAgICBpZiAoIXRoaXMub3JpZ2luYWxUaXRsZSkge1xyXG4gICAgICB0aGlzLm9yaWdpbmFsVGl0bGUgPSBkb2N1bWVudC50aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxJZCkge1xyXG4gICAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgLy8gQWx0ZXJuYXIgZW50cmUgZWwgdMOtdHVsbyBhbHRlcm5hdGl2byB5IGVsIHTDrXR1bG8gb3JpZ2luYWxcclxuICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRvZ2dsZSA/IHRoaXMuYWx0ZXJuYXRlVGl0bGUgOiB0aGlzLm9yaWdpbmFsVGl0bGU7XHJcbiAgICAgICAgdG9nZ2xlID0gIXRvZ2dsZTtcclxuICAgICAgfSwgMTAwMCk7IC8vIENhbWJpYSBlbCB0w610dWxvIGNhZGEgc2VndW5kb1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEZsYXNoaW5nVGl0bGUoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnc3RvcEZsYXNoaW5nVGl0bGUgbGxhbWFkby4nKTtcclxuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xyXG4gICAgICB0aGlzLmludGVydmFsSWQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC50aXRsZSA9IHRoaXMub3JpZ2luYWxUaXRsZTsgLy8gUmVzdGF1cmEgYSB2YWPDrW9cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldmlzYXJBbGVydGFzUGVuZGllbnRlcyh1cmxPYnRlbmVyQWxlcnRhc1Bhbmljbzogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygncmV2aXNhckFsZXJ0YXNQZW5kaWVudGVzIGxsYW1hZG8gY29uIHBhcsOhbWV0cm9zOicsIHsgdXJsT2J0ZW5lckFsZXJ0YXNQYW5pY28sIHRva2VuIH0pO1xyXG4gICAgY29uc3QgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGhlbHBlci5kZWNvZGVUb2tlbih0b2tlbik7XHJcbiAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAubWVudUFwaU9idGVuZXIodXJsT2J0ZW5lckFsZXJ0YXNQYW5pY28sIGRlY29kZWRUb2tlblsnaWRfdXN1YXJpbyddLCB0b2tlbilcclxuICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdSZXNwdWVzdGEgb2J0ZW5pZGEgZGUgcmV2aXNhckFsZXJ0YXNQZW5kaWVudGVzOicsIHJlc3ApO1xyXG4gICAgICAgIGlmIChyZXNwICYmIHJlc3AubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgIGNvbnN0IGFsZXJ0YXNJZHMgPSByZXNwLm1hcChhbGVydGEgPT4gYWxlcnRhLklkQWxlcnRhUGFuaWNvKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdJRHMgZGUgYWxlcnRhcyBvYnRlbmlkYXM6JywgYWxlcnRhc0lkcyk7XHJcblxyXG4gICAgICAgICAgLy8gRWxpbWluYXIgSURzIHF1ZSBubyBlc3TDoW4gZW4gbGEgcmVzcHVlc3RhIGRlbCBzZXJ2aWNpb1xyXG4gICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5mb3JFYWNoKChpZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWFsZXJ0YXNJZHMuaW5jbHVkZXMoaWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5kZWxldGUoaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAvLyBGaWx0cmFyIGFsZXJ0YXMgbnVldmFzXHJcbiAgICAgICAgICBjb25zdCBuZXdBbGVydHMgPSByZXNwLmZpbHRlcihhbGVydGEgPT4gIXRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuaGFzKGFsZXJ0YS5JZEFsZXJ0YVBhbmljbykpO1xyXG5cclxuICAgICAgICAgIC8vIEFncmVnYXIgbGFzIG51ZXZhcyBhbGVydGFzIGEgbGEgbGlzdGEgYWN0aXZhXHJcbiAgICAgICAgICBuZXdBbGVydHMuZm9yRWFjaChhbGVydGEgPT4gdGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5hZGQoYWxlcnRhLklkQWxlcnRhUGFuaWNvKSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5JZHNBbGVydGFzUGFuaWNvQWN0aXZhcy5zaXplID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0Rmxhc2hpbmdUaXRsZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gU2kgaGF5IG51ZXZhcyBhbGVydGFzLCBkaXNwYXJhIG5vdGlmaWNhY2lvbiBzb25vcmFcclxuICAgICAgICAgIGlmIChuZXdBbGVydHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXlTb3VuZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWxlcnRhcyBlbiBsYSByZXNwdWVzdGEsIGxpbXBpYXIgbGEgbGlzdGFcclxuICAgICAgICAgIHRoaXMuSWRzQWxlcnRhc1Bhbmljb0FjdGl2YXMuY2xlYXIoKTtcclxuICAgICAgICAgIHRoaXMuc3RvcEZsYXNoaW5nVGl0bGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQWN0dWFsaXphciBsb2NhbFN0b3JhZ2UgY29uIGxvcyBJRHMgYWN0aXZvc1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdBTEVSVEFTX1BBTklDT19BQ1RJVkFTX1dNJywgSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh0aGlzLklkc0FsZXJ0YXNQYW5pY29BY3RpdmFzKSkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==