monkey-front-components 0.0.180 → 0.0.181

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.
Files changed (81) hide show
  1. package/esm2020/lib/components/base/base-component.mjs +297 -0
  2. package/esm2020/lib/components/base/base-dynamic-array.mjs +221 -0
  3. package/esm2020/lib/components/base/base-dynamic.mjs +99 -0
  4. package/{esm2015/lib/components/base/base-validators.js → esm2020/lib/components/base/base-validators.mjs} +1 -1
  5. package/{esm2015/lib/components/base/index.js → esm2020/lib/components/base/index.mjs} +0 -0
  6. package/esm2020/lib/components/dynamic/button/button.component.mjs +52 -0
  7. package/{esm2015/lib/components/dynamic/button/index.js → esm2020/lib/components/dynamic/button/index.mjs} +0 -0
  8. package/esm2020/lib/components/dynamic/dynamic-directive.mjs +95 -0
  9. package/{esm2015/lib/components/dynamic/dynamic.module.js → esm2020/lib/components/dynamic/dynamic.module.mjs} +5 -5
  10. package/esm2020/lib/components/dynamic/file-upload/file-upload.component.mjs +52 -0
  11. package/{esm2015/lib/components/dynamic/file-upload/index.js → esm2020/lib/components/dynamic/file-upload/index.mjs} +0 -0
  12. package/esm2020/lib/components/dynamic/form/dynamic-form-array.component.mjs +72 -0
  13. package/esm2020/lib/components/dynamic/form/dynamic-form.component.mjs +46 -0
  14. package/{esm2015/lib/components/dynamic/form/index.js → esm2020/lib/components/dynamic/form/index.mjs} +0 -0
  15. package/{esm2015/lib/components/dynamic/index.js → esm2020/lib/components/dynamic/index.mjs} +0 -0
  16. package/{esm2015/lib/components/dynamic/input/index.js → esm2020/lib/components/dynamic/input/index.mjs} +0 -0
  17. package/esm2020/lib/components/dynamic/input/input.component.mjs +65 -0
  18. package/{esm2015/lib/components/dynamic/input-phone/index.js → esm2020/lib/components/dynamic/input-phone/index.mjs} +0 -0
  19. package/esm2020/lib/components/dynamic/input-phone/input-phone.component.mjs +65 -0
  20. package/{esm2015/lib/components/dynamic/radio/index.js → esm2020/lib/components/dynamic/radio/index.mjs} +0 -0
  21. package/esm2020/lib/components/dynamic/radio/radio.component.mjs +33 -0
  22. package/{esm2015/lib/components/dynamic/select/index.js → esm2020/lib/components/dynamic/select/index.mjs} +0 -0
  23. package/esm2020/lib/components/dynamic/select/select.component.mjs +80 -0
  24. package/{esm2015/lib/components/dynamic/select-search/index.js → esm2020/lib/components/dynamic/select-search/index.mjs} +0 -0
  25. package/esm2020/lib/components/dynamic/select-search/select-search.component.mjs +80 -0
  26. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
  27. package/{esm2015/lib/components/shared/index.js → esm2020/lib/components/shared/index.mjs} +2 -1
  28. package/{esm2015/lib/components/shared/password-strength/index.js → esm2020/lib/components/shared/password-strength/index.mjs} +0 -0
  29. package/esm2020/lib/components/shared/password-strength/password-strength.component.mjs +83 -0
  30. package/{esm2015/lib/components/shared/password-strength/password-strength.js → esm2020/lib/components/shared/password-strength/password-strength.mjs} +0 -0
  31. package/{esm2015/lib/components/shared/password-strength/password-strength.module.js → esm2020/lib/components/shared/password-strength/password-strength.module.mjs} +5 -5
  32. package/esm2020/lib/components/shared/progress-bar/index.mjs +4 -0
  33. package/esm2020/lib/components/shared/progress-bar/progress-bar.component.mjs +28 -0
  34. package/esm2020/lib/components/shared/progress-bar/progress-bar.module.mjs +18 -0
  35. package/esm2020/lib/components/shared/progress-bar/progress-bar.service.mjs +49 -0
  36. package/{esm2015/lib/interfaces/field-config.js → esm2020/lib/interfaces/field-config.mjs} +0 -0
  37. package/{esm2015/lib/interfaces/index.js → esm2020/lib/interfaces/index.mjs} +0 -0
  38. package/{esm2015/monkey-front-components.js → esm2020/monkey-front-components.mjs} +0 -0
  39. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  40. package/fesm2015/monkey-front-components.mjs +1493 -0
  41. package/fesm2015/monkey-front-components.mjs.map +1 -0
  42. package/fesm2020/monkey-front-components.mjs +1477 -0
  43. package/fesm2020/monkey-front-components.mjs.map +1 -0
  44. package/lib/components/base/base-component.d.ts +1 -1
  45. package/lib/components/base/base-dynamic-array.d.ts +1 -1
  46. package/lib/components/base/base-dynamic.d.ts +1 -1
  47. package/lib/components/base/base-validators.d.ts +1 -14
  48. package/lib/components/dynamic/button/button.component.d.ts +2 -2
  49. package/lib/components/dynamic/dynamic-directive.d.ts +2 -2
  50. package/lib/components/dynamic/input/input.component.d.ts +3 -3
  51. package/lib/components/dynamic/input-phone/input-phone.component.d.ts +3 -3
  52. package/lib/components/dynamic/radio/radio.component.d.ts +2 -2
  53. package/lib/components/dynamic/select/select.component.d.ts +2 -2
  54. package/lib/components/dynamic/select-search/select-search.component.d.ts +2 -2
  55. package/lib/components/shared/index.d.ts +1 -0
  56. package/lib/components/shared/password-strength/password-strength.component.d.ts +2 -2
  57. package/lib/components/shared/progress-bar/index.d.ts +3 -0
  58. package/lib/components/shared/progress-bar/progress-bar.component.d.ts +12 -0
  59. package/lib/components/shared/progress-bar/progress-bar.module.d.ts +8 -0
  60. package/lib/components/shared/progress-bar/progress-bar.service.d.ts +14 -0
  61. package/monkey-front-components-0.0.181.tgz +0 -0
  62. package/package.json +24 -10
  63. package/bundles/monkey-front-components.umd.js +0 -1866
  64. package/bundles/monkey-front-components.umd.js.map +0 -1
  65. package/esm2015/lib/components/base/base-component.js +0 -288
  66. package/esm2015/lib/components/base/base-dynamic-array.js +0 -215
  67. package/esm2015/lib/components/base/base-dynamic.js +0 -98
  68. package/esm2015/lib/components/dynamic/button/button.component.js +0 -57
  69. package/esm2015/lib/components/dynamic/dynamic-directive.js +0 -95
  70. package/esm2015/lib/components/dynamic/file-upload/file-upload.component.js +0 -57
  71. package/esm2015/lib/components/dynamic/form/dynamic-form-array.component.js +0 -77
  72. package/esm2015/lib/components/dynamic/form/dynamic-form.component.js +0 -51
  73. package/esm2015/lib/components/dynamic/input/input.component.js +0 -66
  74. package/esm2015/lib/components/dynamic/input-phone/input-phone.component.js +0 -66
  75. package/esm2015/lib/components/dynamic/radio/radio.component.js +0 -36
  76. package/esm2015/lib/components/dynamic/select/select.component.js +0 -81
  77. package/esm2015/lib/components/dynamic/select-search/select-search.component.js +0 -81
  78. package/esm2015/lib/components/shared/password-strength/password-strength.component.js +0 -89
  79. package/fesm2015/monkey-front-components.js +0 -1414
  80. package/fesm2015/monkey-front-components.js.map +0 -1
  81. package/monkey-front-components-0.0.180.tgz +0 -0
@@ -1,89 +0,0 @@
1
- import { Component, Input, ViewEncapsulation, Output, EventEmitter } from '@angular/core';
2
- import { MonkeyEcxUtils } from 'monkey-front-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "monkey-front-core";
5
- import * as i2 from "monkey-style-guide";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@ngx-translate/core";
8
- export class MECXPasswordStrengthComponent {
9
- constructor(configService) {
10
- this.configService = configService;
11
- this.onHandleSubmitReady = new EventEmitter();
12
- this._validatorsPasswordPass = [];
13
- this._stepPassword = null;
14
- this.validatorsPassword = new Map();
15
- // not do
16
- }
17
- handleColor(score) {
18
- let idx = 0;
19
- if (score > 50)
20
- idx = 1;
21
- if (score === 100)
22
- idx = 2;
23
- this._stepPassword = idx;
24
- }
25
- passwordStrengthValidator(pass) {
26
- this._validatorsPasswordPass = [];
27
- let score = 0;
28
- this.validatorsPassword.forEach((key, value) => {
29
- this._validatorsPasswordPass.push({
30
- regex: `${value}`,
31
- validate: `${key.VALIDATE}` === String(RegExp(`${key.REGEX}`).test(pass)),
32
- percent: 100 / this.validatorsPassword.size
33
- });
34
- });
35
- this._validatorsPasswordPass.forEach((check) => {
36
- if (check.validate) {
37
- score += check.percent;
38
- }
39
- });
40
- return Math.trunc(score);
41
- }
42
- onHandleReady() {
43
- var _a;
44
- const validate = (_a = this._validatorsPasswordPass) === null || _a === void 0 ? void 0 : _a.find(({ validate }) => { return !validate; });
45
- this.onHandleSubmitReady.next(!validate);
46
- }
47
- onHandleChages() {
48
- const password = this.passwordToCheck;
49
- this.handleColor(this.passwordStrengthValidator(password));
50
- this.onHandleReady();
51
- }
52
- onHandlePasswordStrengthKeys(params) {
53
- var _a, _b, _c;
54
- const ps = (_c = (_b = (_a = params === null || params === void 0 ? void 0 : params.program) === null || _a === void 0 ? void 0 : _a.screens) === null || _b === void 0 ? void 0 : _b.login) === null || _c === void 0 ? void 0 : _c.passwordStrength;
55
- if (ps) {
56
- Object.entries(ps)
57
- .forEach(([key, value]) => {
58
- if (MonkeyEcxUtils.persistNullEmptyUndefined(value)) {
59
- this.validatorsPassword.set(key, value);
60
- }
61
- });
62
- this.onHandleChages();
63
- }
64
- }
65
- ngOnInit() {
66
- this.configService.config().subscribe((_) => {
67
- this.onHandlePasswordStrengthKeys(_);
68
- });
69
- }
70
- ngOnChanges() {
71
- this.onHandleChages();
72
- }
73
- }
74
- MECXPasswordStrengthComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MECXPasswordStrengthComponent, deps: [{ token: i1.MonkeyEcxConfigService }], target: i0.ɵɵFactoryTarget.Component });
75
- MECXPasswordStrengthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: MECXPasswordStrengthComponent, selector: "mecx-password-strength", inputs: { passwordToCheck: "passwordToCheck" }, outputs: { onHandleSubmitReady: "onHandleSubmitReady" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"_validatorsPasswordPass?.length\">\n <div id=\"strength\" class=\"d-flex full-width flex-column justify-content-center align-items-center\"\n #strength>\n <div id=\"strengthBar\" class=\"strength-bar d-flex full-width flex-row\">\n <div class=\"d-flex full-width align-items-center\">\n <div class=\"bar-label\">\n <small>{{ 'SCREENS.LOGIN.REGISTER.PASSWORD-STRENGTH.TITLE' | translate }}</small>\n </div>\n </div>\n <div class=\"d-flex full-width align-items-center flex-column\">\n <div class=\"point\" [class.error]=\"_stepPassword === 0\" [class.warning]=\"_stepPassword === 1\"\n [class.success]=\"_stepPassword === 2\">\n </div>\n <ng-container *ngIf=\"_stepPassword === 0\">\n <ng-container *ngTemplateOutlet=\"stepPasswordLabel\"></ng-container>\n </ng-container>\n </div>\n <div class=\"d-flex full-width align-items-center flex-column\">\n <div class=\"point\" [class.warning]=\"_stepPassword === 1\"\n [class.success]=\"_stepPassword === 2\"></div>\n <ng-container *ngIf=\"_stepPassword === 1\">\n <ng-container *ngTemplateOutlet=\"stepPasswordLabel\"></ng-container>\n </ng-container>\n </div>\n <div class=\"d-flex full-width align-items-center flex-column\">\n <div class=\"point\" [class.success]=\"_stepPassword === 2\"></div>\n <ng-container *ngIf=\"_stepPassword === 2\">\n <ng-container *ngTemplateOutlet=\"stepPasswordLabel\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"callbacks mt-2 row\">\n <div class=\"col-sm-6 mt-2 d-flex justify-content-start\"\n *ngFor=\"let validators of _validatorsPasswordPass\">\n <monkey-icon *ngIf=\"validators.validate\" icon=\"check-circle-20\"></monkey-icon>\n <monkey-icon *ngIf=\"!validators.validate\" icon=\"error-20\"></monkey-icon>\n <span class=\"ml-2\">\n {{ 'SCREENS.LOGIN.REGISTER.PASSWORD-STRENGTH.TYPES.' + validators.regex | translate }}\n </span>\n </div>\n </div>\n</ng-container>\n<ng-template #stepPasswordLabel>\n <div class=\"name-point mt-1\" [class.error]=\"_stepPassword === 0\"\n [class.warning]=\"_stepPassword === 1\" [class.success]=\"_stepPassword === 2\">\n {{ 'SCREENS.LOGIN.REGISTER.PASSWORD-STRENGTH.LABELS.' + _stepPassword | translate }}\n </div>\n</ng-template>", styles: ["mecx-password-strength{margin-bottom:8px}mecx-password-strength .strength-bar{display:inline;list-style:none;padding:0;vertical-align:2px;grid-gap:.5rem;gap:.5rem}mecx-password-strength .strength-bar .bar-label{font-style:normal;font-weight:normal;font-size:14px;line-height:16px;color:#4b4a53}mecx-password-strength .strength-bar .point:last-child{margin:0}mecx-password-strength .callbacks{font-style:normal;font-weight:normal;font-size:14px;line-height:16px;color:#72717e}mecx-password-strength .point{background:#ebebeb;border-radius:8px;display:inline-block;height:8px;margin-right:4px;width:100%}mecx-password-strength .point.success{background:var(--mecx-color-success-main)}mecx-password-strength .point.warning{background:var(--mecx-color-warning-main)}mecx-password-strength .point.error{background:var(--mecx-color-error-main)}mecx-password-strength .name-point.success{color:var(--mecx-color-success-main)}mecx-password-strength .name-point.warning{color:var(--mecx-color-warning-main)}mecx-password-strength .name-point.error{color:var(--mecx-color-error-main)}\n"], components: [{ type: i2.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "color", "contrast", "disabled"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i4.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MECXPasswordStrengthComponent, decorators: [{
77
- type: Component,
78
- args: [{
79
- selector: 'mecx-password-strength',
80
- templateUrl: './password-strength.component.html',
81
- styleUrls: ['./password-strength.component.scss'],
82
- encapsulation: ViewEncapsulation.None
83
- }]
84
- }], ctorParameters: function () { return [{ type: i1.MonkeyEcxConfigService }]; }, propDecorators: { passwordToCheck: [{
85
- type: Input
86
- }], onHandleSubmitReady: [{
87
- type: Output
88
- }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9wYXNzd29yZC1zdHJlbmd0aC9wYXNzd29yZC1zdHJlbmd0aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL3Bhc3N3b3JkLXN0cmVuZ3RoL3Bhc3N3b3JkLXN0cmVuZ3RoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUEyQyxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBUzVGLE1BQU0sT0FBTyw2QkFBNkI7SUFXeEMsWUFBb0IsYUFBcUM7UUFBckMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBUi9DLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEQsNEJBQXVCLEdBQTRCLEVBQUUsQ0FBQztRQUV0RCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUViLHVCQUFrQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFHckMsU0FBUztJQUNYLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBYTtRQUMvQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLEtBQUssR0FBRyxFQUFFO1lBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLEtBQUssS0FBSyxHQUFHO1lBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEdB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RSxvQ0FBb0M7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLG9DQUFvQyxDQUFDO29CQUNqRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7NkdBRVUsZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9ua2V5RWN4Q29uZmlnLCBNb25rZXlFY3hDb25maWdTZXJ2aWNlLCBNb25rZXlFY3hVdGlscyB9IGZyb20gJ21vbmtleS1mcm9udC1jb3JlJztcbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGggfSBmcm9tICcuL3Bhc3N3b3JkLXN0cmVuZ3RoJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWVjeC1wYXNzd29yZC1zdHJlbmd0aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC1zdHJlbmd0aC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bhc3N3b3JkLXN0cmVuZ3RoLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTUVDWFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwYXNzd29yZFRvQ2hlY2s6IHN0cmluZztcblxuICBAT3V0cHV0KCkgb25IYW5kbGVTdWJtaXRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIF92YWxpZGF0b3JzUGFzc3dvcmRQYXNzOiBBcnJheTxQYXNzd29yZFN0cmVuZ3RoPiA9IFtdO1xuXG4gIF9zdGVwUGFzc3dvcmQgPSBudWxsO1xuXG4gIHByaXZhdGUgdmFsaWRhdG9yc1Bhc3N3b3JkID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogTW9ua2V5RWN4Q29uZmlnU2VydmljZSkge1xuICAgIC8vIG5vdCBkb1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb2xvcihzY29yZTogbnVtYmVyKSB7XG4gICAgbGV0IGlkeCA9IDA7XG4gICAgaWYgKHNjb3JlID4gNTApIGlkeCA9IDE7XG4gICAgaWYgKHNjb3JlID09PSAxMDApIGlkeCA9IDI7XG4gICAgdGhpcy5fc3RlcFBhc3N3b3JkID0gaWR4O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXNzd29yZFN0cmVuZ3RoVmFsaWRhdG9yKHBhc3MgOiBzdHJpbmcpIHtcbiAgICB0aGlzLl92YWxpZGF0b3JzUGFzc3dvcmRQYXNzID0gW107XG4gICAgbGV0IHNjb3JlID0gMDtcblxuICAgIHRoaXMudmFsaWRhdG9yc1Bhc3N3b3JkLmZvckVhY2goKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRvcnNQYXNzd29yZFBhc3MucHVzaCh7XG4gICAgICAgIHJlZ2V4OiBgJHt2YWx1ZX1gLFxuICAgICAgICB2YWxpZGF0ZTogYCR7a2V5LlZBTElEQVRFfWAgPT09IFN0cmluZyhSZWdFeHAoYCR7a2V5LlJFR0VYfWApLnRlc3QocGFzcykpLFxuICAgICAgICBwZXJjZW50OiAxMDAgLyB0aGlzLnZhbGlkYXRvcnNQYXNzd29yZC5zaXplXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvcnNQYXNzd29yZFBhc3MuZm9yRWFjaCgoY2hlY2spID0+IHtcbiAgICAgIGlmIChjaGVjay52YWxpZGF0ZSkge1xuICAgICAgICBzY29yZSArPSBjaGVjay5wZXJjZW50O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIE1hdGgudHJ1bmMoc2NvcmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhhbmRsZVJlYWR5KCkge1xuICAgIGNvbnN0IHZhbGlkYXRlID0gdGhpcy5fdmFsaWRhdG9yc1Bhc3N3b3JkUGFzcz8uZmluZCgoeyB2YWxpZGF0ZSB9KSA9PiB7IHJldHVybiAhdmFsaWRhdGU7IH0pO1xuICAgIHRoaXMub25IYW5kbGVTdWJtaXRSZWFkeS5uZXh0KCF2YWxpZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uSGFuZGxlQ2hhZ2VzKCkge1xuICAgIGNvbnN0IHBhc3N3b3JkID0gdGhpcy5wYXNzd29yZFRvQ2hlY2s7XG4gICAgdGhpcy5oYW5kbGVDb2xvcih0aGlzLnBhc3N3b3JkU3RyZW5ndGhWYWxpZGF0b3IocGFzc3dvcmQpKTtcbiAgICB0aGlzLm9uSGFuZGxlUmVhZHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25IYW5kbGVQYXNzd29yZFN0cmVuZ3RoS2V5cyhwYXJhbXM6IE1vbmtleUVjeENvbmZpZykge1xuICAgIGNvbnN0IHBzID0gcGFyYW1zPy5wcm9ncmFtPy5zY3JlZW5zPy5sb2dpbj8ucGFzc3dvcmRTdHJlbmd0aDtcbiAgICBpZiAocHMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBzKVxuICAgICAgICAuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKE1vbmtleUVjeFV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRvcnNQYXNzd29yZC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHRoaXMub25IYW5kbGVDaGFnZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnKCkuc3Vic2NyaWJlKChfOiBNb25rZXlFY3hDb25maWcpID0+IHtcbiAgICAgIHRoaXMub25IYW5kbGVQYXNzd29yZFN0cmVuZ3RoS2V5cyhfKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMub25IYW5kbGVDaGFnZXMoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIl92YWxpZGF0b3JzUGFzc3dvcmRQYXNzPy5sZW5ndGhcIj5cbiAgPGRpdiBpZD1cInN0cmVuZ3RoXCIgY2xhc3M9XCJkLWZsZXggZnVsbC13aWR0aCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgI3N0cmVuZ3RoPlxuICAgIDxkaXYgaWQ9XCJzdHJlbmd0aEJhclwiIGNsYXNzPVwic3RyZW5ndGgtYmFyIGQtZmxleCBmdWxsLXdpZHRoIGZsZXgtcm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZ1bGwtd2lkdGggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYXItbGFiZWxcIj5cbiAgICAgICAgICA8c21hbGw+e3sgJ1NDUkVFTlMuTE9HSU4uUkVHSVNURVIuUEFTU1dPUkQtU1RSRU5HVEguVElUTEUnIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZnVsbC13aWR0aCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvaW50XCIgW2NsYXNzLmVycm9yXT1cIl9zdGVwUGFzc3dvcmQgPT09IDBcIiBbY2xhc3Mud2FybmluZ109XCJfc3RlcFBhc3N3b3JkID09PSAxXCJcbiAgICAgICAgICBbY2xhc3Muc3VjY2Vzc109XCJfc3RlcFBhc3N3b3JkID09PSAyXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3N0ZXBQYXNzd29yZCA9PT0gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGVwUGFzc3dvcmRMYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmdWxsLXdpZHRoIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9pbnRcIiBbY2xhc3Mud2FybmluZ109XCJfc3RlcFBhc3N3b3JkID09PSAxXCJcbiAgICAgICAgICBbY2xhc3Muc3VjY2Vzc109XCJfc3RlcFBhc3N3b3JkID09PSAyXCI+PC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc3RlcFBhc3N3b3JkID09PSAxXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0ZXBQYXNzd29yZExhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZ1bGwtd2lkdGggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb2ludFwiIFtjbGFzcy5zdWNjZXNzXT1cIl9zdGVwUGFzc3dvcmQgPT09IDJcIj48L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zdGVwUGFzc3dvcmQgPT09IDJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RlcFBhc3N3b3JkTGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYWxsYmFja3MgbXQtMiByb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0XCJcbiAgICAgICpuZ0Zvcj1cImxldCB2YWxpZGF0b3JzIG9mIF92YWxpZGF0b3JzUGFzc3dvcmRQYXNzXCI+XG4gICAgICA8bW9ua2V5LWljb24gKm5nSWY9XCJ2YWxpZGF0b3JzLnZhbGlkYXRlXCIgaWNvbj1cImNoZWNrLWNpcmNsZS0yMFwiPjwvbW9ua2V5LWljb24+XG4gICAgICA8bW9ua2V5LWljb24gKm5nSWY9XCIhdmFsaWRhdG9ycy52YWxpZGF0ZVwiIGljb249XCJlcnJvci0yMFwiPjwvbW9ua2V5LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAge3sgJ1NDUkVFTlMuTE9HSU4uUkVHSVNURVIuUEFTU1dPUkQtU1RSRU5HVEguVFlQRVMuJyArIHZhbGlkYXRvcnMucmVnZXggfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjc3RlcFBhc3N3b3JkTGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJuYW1lLXBvaW50IG10LTFcIiBbY2xhc3MuZXJyb3JdPVwiX3N0ZXBQYXNzd29yZCA9PT0gMFwiXG4gICAgW2NsYXNzLndhcm5pbmddPVwiX3N0ZXBQYXNzd29yZCA9PT0gMVwiIFtjbGFzcy5zdWNjZXNzXT1cIl9zdGVwUGFzc3dvcmQgPT09IDJcIj5cbiAgICB7eyAnU0NSRUVOUy5MT0dJTi5SRUdJU1RFUi5QQVNTV09SRC1TVFJFTkdUSC5MQUJFTFMuJyArIF9zdGVwUGFzc3dvcmQgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==