ng-easycommerce 0.0.572 → 0.0.574

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.
@@ -265,6 +265,9 @@ var BancardCatastroEcComponent = /** @class */ (function (_super) {
265
265
  }, 1000);
266
266
  }
267
267
  };
268
+ BancardCatastroEcComponent.prototype.openModal = function () {
269
+ this.infoPreview = true;
270
+ };
268
271
  BancardCatastroEcComponent.prototype.closeModal = function () {
269
272
  };
270
273
  BancardCatastroEcComponent.ctorParameters = function () { return [
@@ -300,11 +303,11 @@ var BancardCatastroEcComponent = /** @class */ (function (_super) {
300
303
  BancardCatastroEcComponent = __decorate([
301
304
  Component({
302
305
  selector: 'app-bancard-catastro-ec',
303
- template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
306
+ template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId(); openModal()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
304
307
  styles: [".iframeStyle{min-height:520px!important;width:80%}.img-card{width:90px;height:90px}"]
305
308
  })
306
309
  ], BancardCatastroEcComponent);
307
310
  return BancardCatastroEcComponent;
308
311
  }(ComponentHelper));
309
312
  export { BancardCatastroEcComponent };
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L3dpZGdldHMtZWMvYmFuY2FyZC1jYXRhc3Ryby1lYy9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTzVEO0lBQWdELDhDQUFlO0lBNEIzRCxvQ0FDYyxNQUFpQixFQUNqQixVQUE2QixFQUNoQyxXQUF3QixFQUN4QixTQUF1QixFQUNwQixNQUFvQixFQUN0QixFQUFxQixFQUNyQixRQUFtQjtRQVAvQixZQVNJLGlCQUFPLFNBRVY7UUFWYSxZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNoQyxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3BCLFlBQU0sR0FBTixNQUFNLENBQWM7UUFDdEIsUUFBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsY0FB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Q0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxRSxJQUFJLGNBQWMsRUFBRTt3QkFDaEIsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUN6Qjt5QkFBTTt3QkFDSCxLQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNwRDtpQkFDSjtnQkFDRCxLQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLFVBQUcsS0FBSyxDQUFDLElBQUksMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FBQTtnQkFDakQsaUVBQWlFO2dCQUNqRSw0Q0FBNEM7WUFDaEQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBRVo7SUFDTCxDQUFDO0lBR0QsK0NBQVUsR0FBVjtJQUVBLENBQUM7O2dCQWxIcUIsU0FBUztnQkFDTCxpQkFBaUI7Z0JBQ25CLFdBQVc7Z0JBQ2IsWUFBWTtnQkFDWixZQUFZO2dCQUNsQixpQkFBaUI7Z0JBQ1gsU0FBUzs7SUFqQ3RCO1FBQVIsS0FBSyxFQUFFOzBFQUFvQjtJQUNuQjtRQUFSLEtBQUssRUFBRTs4REFBZTtJQUNkO1FBQVIsS0FBSyxFQUFFO29FQUFrQjtJQUNqQjtRQUFSLEtBQUssRUFBRTsrREFBUztJQUNSO1FBQVIsS0FBSyxFQUFFO2lFQUFrQjtJQUNoQjtRQUFULE1BQU0sRUFBRTs2REFBNEI7SUFDM0I7UUFBVCxNQUFNLEVBQUU7aUVBQXNDO0lBUnRDLDBCQUEwQjtRQUx0QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLGlwUkFBbUQ7O1NBRXRELENBQUM7T0FDVywwQkFBMEIsQ0FtUnRDO0lBQUQsaUNBQUM7Q0FBQSxBQW5SRCxDQUFnRCxlQUFlLEdBbVI5RDtTQW5SWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtYmFuY2FyZC1jYXRhc3Ryby1lYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbmNhcmRDYXRhc3Ryb0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZCA9IG51bGw7XHJcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xyXG4gICAgQElucHV0KCkgYWxsRGF0YTtcclxuICAgIEBJbnB1dCgpIHVzZXJfZGF0YSA9IG51bGw7XHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2FyZEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAgLy8gTnVldm8gZXZlbnRvIHBhcmEgbm90aWZpY2FyIGxhIHRhcmpldGEgYWdyZWdhZGFcclxuXHJcbiAgICBwdWJsaWMgbG9hZGluZzogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNoZWNraW5nUGF5bWVudDogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlZ2lzdGVyZWRfY2FyZHM6IGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgcHJvY2Vzc19pZDogc3RyaW5nO1xyXG4gICAgcHVibGljIHVybDogYW55O1xyXG4gICAgcHVibGljIGluZm9QcmV2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBjYXJkTmFtZXM6IHN0cmluZ1tdID0gWyd2aXNhJywgJ21hc3RlcmNhcmQnLCAnYmFuY2FyZCddO1xyXG4gICAgcHVibGljIGN1cnJlbnRDYXJkSUQ6IG51bWJlciA9IC0xO1xyXG4gICAgcHJpdmF0ZSBzZW5kVG9QYXk6IGFueSA9IHtcclxuICAgICAgICBhbGlhc190b2tlbjogJycsXHJcbiAgICAgICAgbnVtYmVyX29mX3BheW1lbnRzOiAwXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgdXNlckNhcmRzUmVjb3ZlcnlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby11c2VyLWNhcmRzLXJlY292ZXJ5JztcclxuICAgIHByaXZhdGUgbmV3VXNlckNhcmRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby1uZXctdXNlci1jYXJkJztcclxuICAgIHByaXZhdGUgdG9QYXlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby10b2tlbi1wYXltZW50JztcclxuICAgIHByaXZhdGUgZGVsZXRlQ2FyZEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLWRlbGV0ZS1jYXJkJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgY29uc3RzOiBDb25zdGFudHMsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIgXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gQcOxYWRlIHVuIGxpc3RlbmVyIHBhcmEgcmVjaWJpciBtZW5zYWplcyBkZXNkZSBlbCBpZnJhbWVcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIC8vIEVsaW1pbmEgZWwgbGlzdGVuZXIgY3VhbmRvIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1eWVcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIG9idGllbmUgbGFzIHRhcmpldGFzIGFsbWFjZW5hZGFzIHBhcmEgZWwgdXN1YXJpby5cclxuICAgICAqL1xyXG4gICAgbG9hZENhcmRzID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnVzZXJDYXJkc1JlY292ZXJ5QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSByZXMucmVnaXN0ZXJlZF9jYXJkcztcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWdpc3RlcmVkIGNhcmRzICcsIHRoaXMucmVnaXN0ZXJlZF9jYXJkcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHsgXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpOyBcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gb2J0ZW5nbyBlbCBwcm9jZXNzIElEXHJcbiAgICAgKi9cclxuICAgIGdldFByb2Nlc3NJZCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubmV3VXNlckNhcmRBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc19pZCA9IHJlcy5wcm9jZXNzX2lkO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhdGFzdHJvX2RhdGEnLCBKU09OLnN0cmluZ2lmeShyZXMpKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb1ByZXZpZXcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJRnJhbWVOZXdDYXJkKCk7XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0ZW5nbyBlbCBJRnJhbWUgZG9uZGUgc2UgbW9zdHJhcmEgZWwgZm9ybXVsYXJpbyBwYXJhIHJlZ2lzdHJhciB1bmEgbnVldmEgdGFyamV0YVxyXG4gICAgICovXHJcbiAgICBnZXRJRnJhbWVOZXdDYXJkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJ2Fzc2V0cy9iYW5jYXJkQ2F0YXN0cm8uaHRtbCcpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE1hbmVqYSBsb3MgbWVuc2FqZXMgcmVjaWJpZG9zIGRlc2RlIGVsIGlmcmFtZVxyXG4gICAgICovXHJcbiAgICBoYW5kbGVNZXNzYWdlKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgLy8gQWdyZWdhIHVuIHRpbWVvdXQgYW50ZXMgZGUgY2VycmFyIGVsIG1vZGFsXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhdGFzdHJvXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtb2RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcE1vZGFsID0gKHdpbmRvdyBhcyBhbnkpLmJvb3RzdHJhcC5Nb2RhbC5nZXRJbnN0YW5jZShtb2RhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvb3RzdHJhcE1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcE1vZGFsLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1vZGFsLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJlY2FyZ2EgbGFzIHRhcmpldGFzIHBhcmEgbW9zdHJhciBsYSBudWV2YSB0YXJqZXRhIGVuIGxhIHZpc3RhXHJcbiAgICAgICAgICAgICAgICAvLyBGb3J6YXIgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGVuIEFuZ3VsYXJcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhPy5zdGF0dXMgPT09IFwiZXJyb3JcIikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYXRhc3Ryb1wiKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwTW9kYWwgPSAod2luZG93IGFzIGFueSkuYm9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlKG1vZGFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vdHN0cmFwTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwTW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobW9kYWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdFUlJPUiEgJyArIGV2ZW50LmRhdGE/Lm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAvLyBSZWNhcmdhIGxhcyB0YXJqZXRhcyBwYXJhIG1vc3RyYXIgbGEgbnVldmEgdGFyamV0YSBlbiBsYSB2aXN0YVxyXG4gICAgICAgICAgICAgICAgLy8gRm9yemFyIGxhIGRldGVjY2nDs24gZGUgY2FtYmlvcyBlbiBBbmd1bGFyXHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBjbG9zZU1vZGFsKCl7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcGFyYSBzYWx0ZWFyIGVsIG1lbnNhamUgcHJldmlvLiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBza2lwSW5mb1ByZXZpZXcgPSAoKSA9PiB0aGlzLmluZm9QcmV2aWV3ID0gZmFsc2VcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBwYXJhIG9idGVuZXIgbGEgaW1hZ2VuIGRlIGxhIHRhcmpldGEgZGVzZGUgbG9zIGFzc2V0c1xyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHRhcmpldGFcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRDYXJkSW1nID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB1cmxJbWcgPSAnYXNzZXRzL2ltYWdlcy8nO1xyXG4gICAgICAgIHRoaXMuY2FyZE5hbWVzLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbSwgbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW0pLCB1cmxJbWcrZWxlbSsnLnBuZycgKVxyXG4gICAgICAgICAgICBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbSkgPyB1cmxJbWcgPSB1cmxJbWcgKyBlbGVtICsgJy5wbmcnIDogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh1cmxJbWcpXHJcbiAgICAgICAgcmV0dXJuIHVybEltZ1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIHBhcmEgZ3VhcmRhciBlbCBuw7ptZXJvIGRlIHBhZ29zXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKi9cclxuICAgIHNldE51bWJlck9mUGF5bWVudHMgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codmFsdWUpXHJcbiAgICAgICAgdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gcGFyc2VJbnQodmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGVsIElEIGRlIGxhIHRhcmpldGEgc2VsZWNjaW9uYWRhIHBhcmEgcGFnYXIuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgc2V0Q3VycmVudENhcmRJRCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FyZElEID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjaGVxdWVhIHNpIGVsIHZhbG9yIGRlbCBuw7ptZXJvIGRlIHBhZ29zIGVsIG1heW9yIGEgMFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhblBheSA9ICgpID0+IHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHBhcmEgcGFnYXIuIFxyXG4gICAgICogQHBhcmFtIGlkIGVsIElEIGRlIGxhIHRhcmpldGEuXHJcbiAgICAgKi9cclxuICAgIHRvUGF5ID0gKGlkOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdjdXJyZW50Jyx0aGlzLmN1cnJlbnRDYXJkSUQpXHJcbiAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5yZWdpc3RlcmVkX2NhcmRzLmZpbmQoY2FyZCA9PiBjYXJkLmNhcmRfaWQgPT0gaWQpXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVG9QYXkuYWxpYXNfdG9rZW4gPSBjYXJkLmFsaWFzX3Rva2VuXHJcbiAgICAgICAgICAgIGNhcmQuY2FyZF90eXBlICE9ICdjcmVkaXQnID8gdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gMSA6IG51bGxcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9QYXlBcGkoKSwgdGhpcy5zZW5kVG9QYXkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNraW5nUGF5bWVudCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgaGEgZWxlZ2lkbyBlbCBuw7ptZXJvIGRlIGN1b3RhcycpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBoYSBlbGVnaWRvIGVsIG7Dum1lcm8gZGUgY3VvdGFzJylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgZW5jb250cm8gbGEgdGFyamV0YScpXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIGxhIHRhcmpldGEnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBlbGltaW5hIHVuYSB0YXJqZXRhLlxyXG4gICAgICogQHBhcmFtIGlkIGlkIGRlIGxhIHRhcmpldGEgYSBlbGltaW5hci5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlQ2FyZCA9IChpZDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmluZChjYXJkID0+IGNhcmQuY2FyZF9pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5kZWxldGVDYXJkQXBpKCksIHsgYWxpYXNfdG9rZW46IGNhcmQuYWxpYXNfdG9rZW4gfSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGEgdGFyamV0YSBzZSBoYSBlbGltaW5hZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsaW1pbmEgbGEgdGFyamV0YSBkZSBgcmVnaXN0ZXJlZF9jYXJkc2AgeSBhY3R1YWxpemEgbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmlsdGVyKGMgPT4gYy5jYXJkX2lkICE9PSBpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2UgZWxpbWluw7MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdTZSBwcm9kdWpvIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIHRhcmpldGEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIGVsaW1pbmFyJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvY2VzYSBsYXMgcmVzcHVlc3RhIGRlIHVuIHBhZ28gXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3JlamVjdGVkJykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBQVURPIEVGRUNUVUFSIExBIENPTVBSQScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoJ3RydWUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcHJvY2VzYSBlbCBlcnJvciB0cmFzIHVuIGludGVudG8gZGUgcGFnb1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgcmVzcG9uc2UpXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSA1MDA6IHRoaXMudG9hc3RyLnNob3coJ1NlIHByb2R1am8gdW4gZXJyb3IgaW50ZXJuby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpOyBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L3dpZGdldHMtZWMvYmFuY2FyZC1jYXRhc3Ryby1lYy9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTzVEO0lBQWdELDhDQUFlO0lBNEIzRCxvQ0FDYyxNQUFpQixFQUNqQixVQUE2QixFQUNoQyxXQUF3QixFQUN4QixTQUF1QixFQUNwQixNQUFvQixFQUN0QixFQUFxQixFQUNyQixRQUFtQjtRQVAvQixZQVNJLGlCQUFPLFNBRVY7UUFWYSxZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNoQyxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3BCLFlBQU0sR0FBTixNQUFNLENBQWM7UUFDdEIsUUFBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsY0FB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bXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1iYW5jYXJkLWNhdGFzdHJvLWVjJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhbmNhcmQtY2F0YXN0cm8tZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFuY2FyZENhdGFzdHJvRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgcGF5bWVudFNlcnZpY2VJbnN0O1xyXG4gICAgQElucHV0KCkgbWV0aG9kID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHRvdGFsX2Ftb3VudCA9IDA7XHJcbiAgICBASW5wdXQoKSBhbGxEYXRhO1xyXG4gICAgQElucHV0KCkgdXNlcl9kYXRhID0gbnVsbDtcclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjYXJkQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7ICAvLyBOdWV2byBldmVudG8gcGFyYSBub3RpZmljYXIgbGEgdGFyamV0YSBhZ3JlZ2FkYVxyXG5cclxuICAgIHB1YmxpYyBsb2FkaW5nOiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY2hlY2tpbmdQYXltZW50OiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJlZF9jYXJkczogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyBwcm9jZXNzX2lkOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdXJsOiBhbnk7XHJcbiAgICBwdWJsaWMgaW5mb1ByZXZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIGNhcmROYW1lczogc3RyaW5nW10gPSBbJ3Zpc2EnLCAnbWFzdGVyY2FyZCcsICdiYW5jYXJkJ107XHJcbiAgICBwdWJsaWMgY3VycmVudENhcmRJRDogbnVtYmVyID0gLTE7XHJcbiAgICBwcml2YXRlIHNlbmRUb1BheTogYW55ID0ge1xyXG4gICAgICAgIGFsaWFzX3Rva2VuOiAnJyxcclxuICAgICAgICBudW1iZXJfb2ZfcGF5bWVudHM6IDBcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSB1c2VyQ2FyZHNSZWNvdmVyeUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLXVzZXItY2FyZHMtcmVjb3ZlcnknO1xyXG4gICAgcHJpdmF0ZSBuZXdVc2VyQ2FyZEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLW5ldy11c2VyLWNhcmQnO1xyXG4gICAgcHJpdmF0ZSB0b1BheUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLXRva2VuLXBheW1lbnQnO1xyXG4gICAgcHJpdmF0ZSBkZWxldGVDYXJkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2JhbmNhcmQvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydF90b2tlbiArICcvY2F0YXN0cm8tZGVsZXRlLWNhcmQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBjb25zdHM6IENvbnN0YW50cyxcclxuICAgICAgICBwcm90ZWN0ZWQgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiBcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkQ2FyZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyBBw7FhZGUgdW4gbGlzdGVuZXIgcGFyYSByZWNpYmlyIG1lbnNhamVzIGRlc2RlIGVsIGlmcmFtZVxyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gRWxpbWluYSBlbCBsaXN0ZW5lciBjdWFuZG8gZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZVxyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gb2J0aWVuZSBsYXMgdGFyamV0YXMgYWxtYWNlbmFkYXMgcGFyYSBlbCB1c3VhcmlvLlxyXG4gICAgICovXHJcbiAgICBsb2FkQ2FyZHMgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMudXNlckNhcmRzUmVjb3ZlcnlBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJlZF9jYXJkcyA9IHJlcy5yZWdpc3RlcmVkX2NhcmRzO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyZWQgY2FyZHMgJywgdGhpcy5yZWdpc3RlcmVkX2NhcmRzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnIgPT4geyBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7IFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBvYnRlbmdvIGVsIHByb2Nlc3MgSURcclxuICAgICAqL1xyXG4gICAgZ2V0UHJvY2Vzc0lkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5uZXdVc2VyQ2FyZEFwaSgpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzX2lkID0gcmVzLnByb2Nlc3NfaWQ7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2F0YXN0cm9fZGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcykpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvUHJldmlldyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldElGcmFtZU5ld0NhcmQoKTtcclxuICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBPYnRlbmdvIGVsIElGcmFtZSBkb25kZSBzZSBtb3N0cmFyYSBlbCBmb3JtdWxhcmlvIHBhcmEgcmVnaXN0cmFyIHVuYSBudWV2YSB0YXJqZXRhXHJcbiAgICAgKi9cclxuICAgIGdldElGcmFtZU5ld0NhcmQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL2JhbmNhcmRDYXRhc3Ryby5odG1sJyk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTWFuZWphIGxvcyBtZW5zYWplcyByZWNpYmlkb3MgZGVzZGUgZWwgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAvLyBBZ3JlZ2EgdW4gdGltZW91dCBhbnRlcyBkZSBjZXJyYXIgZWwgbW9kYWxcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2F0YXN0cm9cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwTW9kYWwgPSAod2luZG93IGFzIGFueSkuYm9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlKG1vZGFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vdHN0cmFwTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwTW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobW9kYWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVjYXJnYSBsYXMgdGFyamV0YXMgcGFyYSBtb3N0cmFyIGxhIG51ZXZhIHRhcmpldGEgZW4gbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgIC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3MgZW4gQW5ndWxhclxyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGE/LnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhdGFzdHJvXCIpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib290c3RyYXBNb2RhbCA9ICh3aW5kb3cgYXMgYW55KS5ib290c3RyYXAuTW9kYWwuZ2V0SW5zdGFuY2UobW9kYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChib290c3RyYXBNb2RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXBNb2RhbC5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShtb2RhbCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0VSUk9SISAnICsgZXZlbnQuZGF0YT8ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIC8vIFJlY2FyZ2EgbGFzIHRhcmpldGFzIHBhcmEgbW9zdHJhciBsYSBudWV2YSB0YXJqZXRhIGVuIGxhIHZpc3RhXHJcbiAgICAgICAgICAgICAgICAvLyBGb3J6YXIgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGVuIEFuZ3VsYXJcclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuTW9kYWwoKXtcclxuICAgICAgICB0aGlzLmluZm9QcmV2aWV3PXRydWU7XHJcbiAgICB9XHJcbiAgICBjbG9zZU1vZGFsKCl7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcGFyYSBzYWx0ZWFyIGVsIG1lbnNhamUgcHJldmlvLiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBza2lwSW5mb1ByZXZpZXcgPSAoKSA9PiB0aGlzLmluZm9QcmV2aWV3ID0gZmFsc2VcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBwYXJhIG9idGVuZXIgbGEgaW1hZ2VuIGRlIGxhIHRhcmpldGEgZGVzZGUgbG9zIGFzc2V0c1xyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHRhcmpldGFcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRDYXJkSW1nID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB1cmxJbWcgPSAnYXNzZXRzL2ltYWdlcy8nO1xyXG4gICAgICAgIHRoaXMuY2FyZE5hbWVzLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbSwgbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW0pLCB1cmxJbWcrZWxlbSsnLnBuZycgKVxyXG4gICAgICAgICAgICBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbSkgPyB1cmxJbWcgPSB1cmxJbWcgKyBlbGVtICsgJy5wbmcnIDogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh1cmxJbWcpXHJcbiAgICAgICAgcmV0dXJuIHVybEltZ1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIHBhcmEgZ3VhcmRhciBlbCBuw7ptZXJvIGRlIHBhZ29zXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKi9cclxuICAgIHNldE51bWJlck9mUGF5bWVudHMgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codmFsdWUpXHJcbiAgICAgICAgdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gcGFyc2VJbnQodmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGVsIElEIGRlIGxhIHRhcmpldGEgc2VsZWNjaW9uYWRhIHBhcmEgcGFnYXIuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgc2V0Q3VycmVudENhcmRJRCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FyZElEID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjaGVxdWVhIHNpIGVsIHZhbG9yIGRlbCBuw7ptZXJvIGRlIHBhZ29zIGVsIG1heW9yIGEgMFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhblBheSA9ICgpID0+IHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHBhcmEgcGFnYXIuIFxyXG4gICAgICogQHBhcmFtIGlkIGVsIElEIGRlIGxhIHRhcmpldGEuXHJcbiAgICAgKi9cclxuICAgIHRvUGF5ID0gKGlkOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdjdXJyZW50Jyx0aGlzLmN1cnJlbnRDYXJkSUQpXHJcbiAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5yZWdpc3RlcmVkX2NhcmRzLmZpbmQoY2FyZCA9PiBjYXJkLmNhcmRfaWQgPT0gaWQpXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVG9QYXkuYWxpYXNfdG9rZW4gPSBjYXJkLmFsaWFzX3Rva2VuXHJcbiAgICAgICAgICAgIGNhcmQuY2FyZF90eXBlICE9ICdjcmVkaXQnID8gdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gMSA6IG51bGxcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9QYXlBcGkoKSwgdGhpcy5zZW5kVG9QYXkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNraW5nUGF5bWVudCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgaGEgZWxlZ2lkbyBlbCBuw7ptZXJvIGRlIGN1b3RhcycpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBoYSBlbGVnaWRvIGVsIG7Dum1lcm8gZGUgY3VvdGFzJylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgZW5jb250cm8gbGEgdGFyamV0YScpXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIGxhIHRhcmpldGEnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBlbGltaW5hIHVuYSB0YXJqZXRhLlxyXG4gICAgICogQHBhcmFtIGlkIGlkIGRlIGxhIHRhcmpldGEgYSBlbGltaW5hci5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlQ2FyZCA9IChpZDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmluZChjYXJkID0+IGNhcmQuY2FyZF9pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5kZWxldGVDYXJkQXBpKCksIHsgYWxpYXNfdG9rZW46IGNhcmQuYWxpYXNfdG9rZW4gfSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGEgdGFyamV0YSBzZSBoYSBlbGltaW5hZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsaW1pbmEgbGEgdGFyamV0YSBkZSBgcmVnaXN0ZXJlZF9jYXJkc2AgeSBhY3R1YWxpemEgbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmlsdGVyKGMgPT4gYy5jYXJkX2lkICE9PSBpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2UgZWxpbWluw7MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdTZSBwcm9kdWpvIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIHRhcmpldGEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIGVsaW1pbmFyJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvY2VzYSBsYXMgcmVzcHVlc3RhIGRlIHVuIHBhZ28gXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3JlamVjdGVkJykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBQVURPIEVGRUNUVUFSIExBIENPTVBSQScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoJ3RydWUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcHJvY2VzYSBlbCBlcnJvciB0cmFzIHVuIGludGVudG8gZGUgcGFnb1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgcmVzcG9uc2UpXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSA1MDA6IHRoaXMudG9hc3RyLnNob3coJ1NlIHByb2R1am8gdW4gZXJyb3IgaW50ZXJuby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpOyBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
@@ -6110,6 +6110,8 @@ let CartEcComponent = class CartEcComponent extends ComponentHelper {
6110
6110
  this.promotions = [];
6111
6111
  this.cargando = false;
6112
6112
  this.channel = {};
6113
+ this.updateStock = false;
6114
+ this.exitUpdate = false;
6113
6115
  this.toDecimal = (amount) => this.consts.toDecimal(amount);
6114
6116
  this.actualizarCantidad = (item, cantidad, stock, id) => {
6115
6117
  if (id) {
@@ -6356,7 +6358,55 @@ let CartEcComponent = class CartEcComponent extends ComponentHelper {
6356
6358
  $('#' + id).modal('hide');
6357
6359
  }
6358
6360
  checkStock(item) {
6359
- return item.quantity > item.product.variants[0].stock;
6361
+ for (const variant of item.product.variants) {
6362
+ if (item.variant_id === variant.code) {
6363
+ if (variant.stock === 0) {
6364
+ this.updateStock = true;
6365
+ return '0';
6366
+ }
6367
+ else if (item.quantity > variant.stock) {
6368
+ this.updateStock = true;
6369
+ return variant.stock;
6370
+ }
6371
+ }
6372
+ }
6373
+ return false; // Solo se ejecuta si no se cumple la condición
6374
+ }
6375
+ updateAllStock() {
6376
+ const items = [];
6377
+ // Define la suscripción antes de usarla
6378
+ this.cartService.cartItems.subscribe(res => {
6379
+ res.forEach(item => {
6380
+ for (const variant of item.product.variants) {
6381
+ if (item.variant_id === variant.code && !this.exitUpdate) {
6382
+ if (variant.stock === 0) {
6383
+ this.cartService.deleteCartItem(item, false); // Borra el artículo
6384
+ }
6385
+ else if (item.quantity > variant.stock) {
6386
+ items.push({
6387
+ productCode: item.product.id,
6388
+ quantity: variant.stock,
6389
+ variantCode: variant.code,
6390
+ });
6391
+ }
6392
+ else {
6393
+ items.push({
6394
+ productCode: item.product.id,
6395
+ quantity: item.quantity,
6396
+ variantCode: variant.code,
6397
+ });
6398
+ }
6399
+ }
6400
+ }
6401
+ });
6402
+ if (items.length > 0 && !this.exitUpdate) {
6403
+ // subscription.unsubscribe(); // Desuscríbete antes de actualizar
6404
+ this.cartService.addAllToCart(items); // Actualiza el carrito
6405
+ this.updateStock = false;
6406
+ this.exitUpdate = true;
6407
+ // this.updateAllStock(); // Vuelve a verificar el stock
6408
+ }
6409
+ });
6360
6410
  }
6361
6411
  createDiscountMessage(saleprice, price) {
6362
6412
  if (isNaN(saleprice) || isNaN(price) || saleprice >= price || saleprice <= 0 || price <= 0) {
@@ -10711,13 +10761,14 @@ var __decorate$1m = (this && this.__decorate) || function (decorators, target, k
10711
10761
  return c > 3 && r && Object.defineProperty(target, key, r), r;
10712
10762
  };
10713
10763
  let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHelper {
10714
- constructor(authService, toastr, router, analyticsService, formBuilder) {
10764
+ constructor(authService, toastr, router, analyticsService, formBuilder, channelConfigService) {
10715
10765
  super();
10716
10766
  this.authService = authService;
10717
10767
  this.toastr = toastr;
10718
10768
  this.router = router;
10719
10769
  this.analyticsService = analyticsService;
10720
10770
  this.formBuilder = formBuilder;
10771
+ this.channelConfigService = channelConfigService;
10721
10772
  this.isLogged = true;
10722
10773
  this.darkMode = false;
10723
10774
  this.redirect = true;
@@ -10734,6 +10785,8 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
10734
10785
  newsletter: false,
10735
10786
  terms: false,
10736
10787
  };
10788
+ this.isAccountVerificationRequired = false;
10789
+ this.isSendWelcomeEmail = false;
10737
10790
  this.setProp = (prop, event) => {
10738
10791
  this.registroUsuario[prop] = event.target.value;
10739
10792
  };
@@ -10758,7 +10811,18 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
10758
10811
  if (this.registerForm.valid) {
10759
10812
  this.authService.signUp(this.registerForm.value).toPromise().then(res => {
10760
10813
  this.register_loading = false;
10761
- this.toastr.show('register-ok');
10814
+ let messageKey;
10815
+ switch (true) {
10816
+ case this.isAccountVerificationRequired:
10817
+ messageKey = 'register-ok';
10818
+ break;
10819
+ case this.isSendWelcomeEmail:
10820
+ messageKey = 'register-welcome';
10821
+ break;
10822
+ default:
10823
+ messageKey = 'register-success';
10824
+ }
10825
+ this.toastr.show(messageKey);
10762
10826
  this.analyticsService.callEvent('sign_up', {
10763
10827
  firstName: this.registerForm.value.firstName,
10764
10828
  lastName: this.registerForm.value.lastName,
@@ -10796,6 +10860,20 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
10796
10860
  newsletter: [false],
10797
10861
  terms: ['', Validators.required],
10798
10862
  });
10863
+ this.channelConfigService.channelConfig$.subscribe((config) => {
10864
+ if (config && config.isAccountVerificationRequired !== undefined) {
10865
+ this.isAccountVerificationRequired = config.isAccountVerificationRequired;
10866
+ }
10867
+ else {
10868
+ this.isAccountVerificationRequired = false;
10869
+ }
10870
+ if (config && config.isSendWelcomeEmail !== undefined) {
10871
+ this.isSendWelcomeEmail = config.isSendWelcomeEmail;
10872
+ }
10873
+ else {
10874
+ this.isSendWelcomeEmail = false;
10875
+ }
10876
+ });
10799
10877
  this.ecOnInit();
10800
10878
  }
10801
10879
  };
@@ -10804,7 +10882,8 @@ RegisterFormEcComponent.ctorParameters = () => [
10804
10882
  { type: ToastService },
10805
10883
  { type: Router },
10806
10884
  { type: AnalyticsService },
10807
- { type: FormBuilder }
10885
+ { type: FormBuilder },
10886
+ { type: ChannelConfigService }
10808
10887
  ];
10809
10888
  __decorate$1m([
10810
10889
  Input()
@@ -14573,6 +14652,9 @@ let BancardCatastroEcComponent = class BancardCatastroEcComponent extends Compon
14573
14652
  }, 1000);
14574
14653
  }
14575
14654
  }
14655
+ openModal() {
14656
+ this.infoPreview = true;
14657
+ }
14576
14658
  closeModal() {
14577
14659
  }
14578
14660
  };
@@ -14609,7 +14691,7 @@ __decorate$1S([
14609
14691
  BancardCatastroEcComponent = __decorate$1S([
14610
14692
  Component({
14611
14693
  selector: 'app-bancard-catastro-ec',
14612
- template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
14694
+ template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId(); openModal()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
14613
14695
  styles: [".iframeStyle{min-height:520px!important;width:80%}.img-card{width:90px;height:90px}"]
14614
14696
  })
14615
14697
  ], BancardCatastroEcComponent);