info-library 2.16.0-beta → 3.0.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/controls/autocomplete/autocomplete.component.d.ts +2 -1
- package/controls/date/date.component.d.ts +2 -1
- package/controls/date-month/date-month.component.d.ts +2 -1
- package/controls/grid/grid.component.d.ts +5 -5
- package/controls/input/input.component.d.ts +13 -3
- package/controls/multi-select/multi-select.component.d.ts +3 -1
- package/controls/select/select.component.d.ts +2 -1
- package/directives/unmask.directive.d.ts +2 -1
- package/esm2022/controls/alert/alert.component.mjs +8 -10
- package/esm2022/controls/autocomplete/autocomplete.component.mjs +33 -26
- package/esm2022/controls/big-checkbox/big-checkbox.component.mjs +27 -25
- package/esm2022/controls/card/card.component.mjs +12 -6
- package/esm2022/controls/card-menu/card-menu.component.mjs +14 -16
- package/esm2022/controls/checkbox/checkbox.component.mjs +13 -13
- package/esm2022/controls/chips/chips.component.mjs +12 -11
- package/esm2022/controls/date/date.component.mjs +64 -32
- package/esm2022/controls/date-month/date-month.component.mjs +64 -31
- package/esm2022/controls/editor/editor.component.mjs +35 -31
- package/esm2022/controls/grid/grid.component.mjs +529 -511
- package/esm2022/controls/input/input.component.mjs +146 -71
- package/esm2022/controls/input-list/input-list.component.mjs +16 -15
- package/esm2022/controls/list-checkbox/list-checkbox.component.mjs +16 -12
- package/esm2022/controls/message/message.component.mjs +9 -11
- package/esm2022/controls/multi-select/multi-select.component.mjs +35 -22
- package/esm2022/controls/paginator/paginator.component.mjs +15 -16
- package/esm2022/controls/select/select.component.mjs +32 -23
- package/esm2022/controls/timeline/timeline.component.mjs +15 -16
- package/esm2022/directives/mask.directive.mjs +17 -8
- package/esm2022/directives/unmask.directive.mjs +14 -7
- package/esm2022/info-library.module.mjs +10 -5
- package/esm2022/layouts/dialog/dialog.component.mjs +10 -6
- package/esm2022/layouts/filter/filter.component.mjs +179 -0
- package/esm2022/layouts/loading/loading.component.mjs +7 -9
- package/esm2022/layouts/main/main.component.mjs +101 -54
- package/esm2022/layouts/modal/modal.component.mjs +37 -22
- package/esm2022/layouts/pagebar/pagebar.component.mjs +125 -97
- package/esm2022/layouts/sidebar/sidebar.component.mjs +152 -100
- package/esm2022/layouts/topbar/topbar.component.mjs +417 -253
- package/esm2022/layouts/topmenu/topmenu.component.mjs +20 -12
- package/esm2022/model/app-config.model.mjs +12 -12
- package/esm2022/model/data-access.model.mjs +10 -8
- package/esm2022/model/dialog-result.model.mjs +3 -2
- package/esm2022/model/dialog.model.mjs +13 -14
- package/esm2022/model/form-prop.model.mjs +8 -6
- package/esm2022/model/grid-button.model.mjs +12 -7
- package/esm2022/model/last-search.model.mjs +5 -7
- package/esm2022/model/login.model.mjs +4 -2
- package/esm2022/model/method-grid-button.model.mjs +4 -2
- package/esm2022/model/notification.model.mjs +9 -5
- package/esm2022/model/pagebar-buttons.model.mjs +6 -6
- package/esm2022/model/permission.model.mjs +4 -1
- package/esm2022/model/platform.model.mjs +13 -14
- package/esm2022/model/session.model.mjs +25 -6
- package/esm2022/pipe/mask.pipe.mjs +10 -6
- package/esm2022/pipe/translate.pipe.mjs +4 -3
- package/esm2022/public_api.mjs +2 -1
- package/esm2022/service/authentication.service.mjs +89 -36
- package/esm2022/service/configuration.service.mjs +41 -10
- package/esm2022/service/data.service.mjs +38 -21
- package/esm2022/service/theme.service.mjs +16 -6
- package/esm2022/service/translate.service.mjs +9 -5
- package/esm2022/utils/utilities.mjs +52 -5
- package/fesm2022/info-library.mjs +2551 -1649
- package/fesm2022/info-library.mjs.map +1 -1
- package/info-library-3.0.0-beta.tgz +0 -0
- package/info-library.module.d.ts +32 -31
- package/layouts/filter/filter.component.d.ts +24 -0
- package/layouts/main/main.component.d.ts +4 -0
- package/layouts/modal/modal.component.d.ts +1 -0
- package/layouts/sidebar/sidebar.component.d.ts +1 -1
- package/layouts/topbar/topbar.component.d.ts +4 -1
- package/model/app-config.model.d.ts +2 -0
- package/model/session.model.d.ts +5 -0
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/service/authentication.service.d.ts +4 -2
- package/service/configuration.service.d.ts +4 -1
- package/service/data.service.d.ts +2 -0
- package/utils/utilities.d.ts +11 -0
|
@@ -24,6 +24,12 @@ export class Utilities {
|
|
|
24
24
|
}
|
|
25
25
|
return bytes;
|
|
26
26
|
}
|
|
27
|
+
jsonToEncrypt(object) {
|
|
28
|
+
return this.criptografar(unescape(JSON.stringify(object)));
|
|
29
|
+
}
|
|
30
|
+
decryptToJson(value) {
|
|
31
|
+
return JSON.parse(this.descriptografar(value));
|
|
32
|
+
}
|
|
27
33
|
openOrDownload(title, blob) {
|
|
28
34
|
let fileURL = URL.createObjectURL(blob);
|
|
29
35
|
if (title.indexOf("pdf") > -1)
|
|
@@ -117,9 +123,15 @@ export class Utilities {
|
|
|
117
123
|
div.innerHTML = texto;
|
|
118
124
|
return div.innerText || div.textContent;
|
|
119
125
|
}
|
|
126
|
+
key = CryptoJS.enc.Utf8.parse("GKxLtQg2atgjkrer");
|
|
127
|
+
iv = CryptoJS.enc.Utf8.parse("e0Wg6l5GNdg29dvc");
|
|
120
128
|
criptografar(texto) {
|
|
121
129
|
try {
|
|
122
|
-
return CryptoJS.AES.encrypt(texto,
|
|
130
|
+
return CryptoJS.AES.encrypt(texto, this.key, {
|
|
131
|
+
iv: this.iv,
|
|
132
|
+
mode: CryptoJS.mode.CBC,
|
|
133
|
+
padding: CryptoJS.pad.Pkcs7
|
|
134
|
+
}).toString();
|
|
123
135
|
}
|
|
124
136
|
catch (e) {
|
|
125
137
|
return null;
|
|
@@ -127,16 +139,51 @@ export class Utilities {
|
|
|
127
139
|
}
|
|
128
140
|
descriptografar(texto) {
|
|
129
141
|
try {
|
|
130
|
-
return CryptoJS.AES.decrypt(texto,
|
|
142
|
+
return CryptoJS.AES.decrypt(texto, this.key, {
|
|
143
|
+
iv: this.iv,
|
|
144
|
+
mode: CryptoJS.mode.CBC,
|
|
145
|
+
padding: CryptoJS.pad.Pkcs7
|
|
146
|
+
}).toString(CryptoJS.enc.Utf8);
|
|
131
147
|
}
|
|
132
148
|
catch (e) {
|
|
133
149
|
return null;
|
|
134
150
|
}
|
|
135
151
|
}
|
|
136
|
-
/** @nocollapse */ static
|
|
137
|
-
/** @nocollapse */ static
|
|
152
|
+
/** @nocollapse */ static ɵfac = function Utilities_Factory(t) { return new (t || Utilities)(); };
|
|
153
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: Utilities, factory: Utilities.ɵfac });
|
|
138
154
|
}
|
|
139
155
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Utilities, [{
|
|
140
156
|
type: Injectable
|
|
141
157
|
}], null, null); })();
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxPQUFPLFNBQVM7SUFDbEIsT0FBTztRQUNILE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxzQ0FBc0MsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTTtRQUN0QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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Uzs7dUZBQVQsU0FBUztjQURyQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0aWVzIHtcclxuICAgIGdldEd1aWQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRHdWlkRW1wdHkoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSkubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpOiBhbnkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xyXG4gICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICBvcGVuT3JEb3dubG9hZCh0aXRsZSwgYmxvYikge1xyXG4gICAgICAgIGxldCBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgaWYgKHRpdGxlLmluZGV4T2YoXCJwZGZcIikgPiAtMSlcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4oZmlsZVVSTCwgdGl0bGUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudEE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xyXG4gICAgICAgICAgICBlbGVtZW50QS5ocmVmID0gZmlsZVVSTDtcclxuICAgICAgICAgICAgZWxlbWVudEEuZG93bmxvYWQgPSB0aXRsZTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBLmNsaWNrKCk7ICAgICAgICBcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZXJBY2VudG9zKHZhbDogc3RyaW5nKSA6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgdmFyIG5vcm1hbGl6ZUZ1bmN0aW9uID0gU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUgPyAoc3RyKSA9PiBzdHIubm9ybWFsaXplKCdORkQnKSA6IChzdHIpID0+IHN0cjtcclxuICAgICAgICByZXR1cm4gbm9ybWFsaXplRnVuY3Rpb24odmFsKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdG9zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkVYQ0VMXCIsIE5vbWU6IFwiRXhjZWxcIiwgTWltZVR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsIEV4dGVuc2FvOiBcInhsc1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQREZcIiwgTm9tZTogXCJQREZcIiwgTWltZVR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIsIEV4dGVuc2FvOiBcInBkZlwiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXRvc0V4Y2VsKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAnUFAnLCBOb21lOiAnRXhjZWwgUG9ydHVndcOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWy5dJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdQVicsIE5vbWU6ICdFeGNlbCBQb3J0dWd1w6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLF0nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0lQJywgTm9tZTogJ0V4Y2VsIEluZ2zDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFsuXScgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnSVYnLCBOb21lOiAnRXhjZWwgSW5nbMOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWyxdJyB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkFcIiwgTm9tZTogXCJBdGl2b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQXCIsIE5vbWU6IFwiUGVuZGVudGVcIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzQ29tcGxldG8oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQ1wiLCBOb21lOiBcIkNhZGFzdHJhZG9cIiwgU2VsZWNpb25hZG86IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIkZcIiwgTm9tZTogXCJGZWl0b1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIk9cIiwgTm9tZTogXCJDb25mZXJpZG9cIiwgU2VsZWNpb25hZG86IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlJcIiwgTm9tZTogXCJSZWplaXRhZG9cIiwgU2VsZWNpb25hZG86IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJJXCIsIE5vbWU6IFwiSW5hdGl2b1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1c1Byb2Nlc3NhbWVudG8oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQVwiLCBOb21lOiBcIkFndWFyZGFuZG9Qcm9jZXNzYW1lbnRvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIkVcIiwgTm9tZTogXCJFbVByb2Nlc3NhbWVudG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUFwiLCBOb21lOiBcIlByb2Nlc3NhZG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiSVwiLCBOb21lOiBcIkluYXRpdm9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiWlwiLCBOb21lOiBcIkVycm9cIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0b0lkaW9tYXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiZW5cIiwgTm9tZTogXCJFbmdsaXNoXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcInB0LUJSXCIsIE5vbWU6IFwiUG9ydHVndcOqc1wiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRHZW5lcm9zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAnTScsIE5vbWU6ICdNYXNjdWxpbm8nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0YnLCBOb21lOiAnRmVtaW5pbm8nIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUaXBvc0V2aWRlbmNpYSgpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogMSwgTm9tZTogJ1RlbGVmb25lJ30sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogMiwgTm9tZTogJ0VtYWlsJ30sXHJcbiAgICAgICAgICAgICAgICAge0lkOiAzLCBOb21lOiAnRG9jdW1lbnRvJ30gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcmRlbnMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHtJZDogXCJub21lLWFzY1wiLCBOb21lOiBcIk5vbWVDcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcIm5vbWUtZGVzY1wiLCBOb21lOiBcIk5vbWVEZWNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwidmFsb3ItYXNjXCIsIE5vbWU6IFwiVmFsb3JDcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcInZhbG9yLWRlc2NcIiwgTm9tZTogXCJWYWxvckRlY3Jlc2NlbnRlXCJ9IF07XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhckVtYWlsKGZvcm0sIHZhbHVlLCBjb250cm9sKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwYXR0ZXJuID0gL14oW2EtekEtWjAtOV9cXC1cXC5dKylAKFthLXpBLVowLTlfXFwtXFwuXSspXFwuKFthLXpBLVpdezIsNX0pJC87XHJcbiAgICAgICAgbGV0IGVtYWlsczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOycpO1xyXG4gICAgICAgIGxldCBpbnZhbGlkbyA9IGVtYWlscy5zb21lKGVtYWlsID0+IGVtYWlsICYmICFwYXR0ZXJuLnRlc3QoZW1haWwudHJpbSgpKSk7XHJcblxyXG4gICAgICAgIGlmIChpbnZhbGlkbylcclxuICAgICAgICAgICAgZm9ybS5mb3JtLmNvbnRyb2xzW2NvbnRyb2xdLnNldEVycm9ycyggeyAnaW52YWxpZCc6IHRydWUgfSApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExvY2FsU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGhpcy5jcmlwdG9ncmFmYXIodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5kZXNjcmlwdG9ncmFmYXIobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09ICcnKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBpc0lFKCkge1xyXG4gICAgICAgIHZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xyXG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgXCIpID4gLTEgfHwgdXNlckFnZW50LmluZGV4T2YoXCJUcmlkZW50L1wiKSA+IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHJldG9ybmFUZXh0byh0ZXh0bykge1xyXG4gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IHRleHRvO1xyXG4gICAgICAgIHJldHVybiBkaXYuaW5uZXJUZXh0IHx8IGRpdi50ZXh0Q29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmVuY3J5cHQodGV4dG8sIFwiR0t4THRRZzJhdFwiKS50b1N0cmluZygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXNjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dG8sIFwiR0t4THRRZzJhdFwiKS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
158
|
+
export class StaticUtils {
|
|
159
|
+
static validarCnpj(cnpj) {
|
|
160
|
+
const cnpjOriginal = (cnpj || '');
|
|
161
|
+
cnpj = cnpjOriginal.toUpperCase().slice(0, 12);
|
|
162
|
+
cnpj = cnpj + this.getDigito(this.getSomaCnpj(cnpj));
|
|
163
|
+
cnpj = cnpj + this.getDigito(this.getSomaCnpj(cnpj));
|
|
164
|
+
return cnpjOriginal == cnpj;
|
|
165
|
+
}
|
|
166
|
+
static validarCpf(cpf) {
|
|
167
|
+
const cpfOriginal = (cpf || '');
|
|
168
|
+
cpf = cpfOriginal.toUpperCase().slice(0, 9);
|
|
169
|
+
cpf = cpf + this.getDigito(this.getSomaCpf(cpf));
|
|
170
|
+
cpf = cpf + this.getDigito(this.getSomaCpf(cpf));
|
|
171
|
+
return cpfOriginal == cpf;
|
|
172
|
+
}
|
|
173
|
+
static getDigito(soma) {
|
|
174
|
+
return (soma % 11) <= 1 ? 0 : (11 - (soma % 11));
|
|
175
|
+
}
|
|
176
|
+
static getSomaCnpj(cnpj) {
|
|
177
|
+
const peso = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
178
|
+
if (cnpj.length == 12)
|
|
179
|
+
peso.shift();
|
|
180
|
+
return Array.from(cnpj)
|
|
181
|
+
.map((c, i) => (isNaN(Number(c)) ? c.charCodeAt(0) - 48 : Number(c)) * peso[i])
|
|
182
|
+
.reduce((a, b) => a + b, 0);
|
|
183
|
+
}
|
|
184
|
+
static getSomaCpf(cpf) {
|
|
185
|
+
const fator = cpf.length == 9 ? 10 : 11;
|
|
186
|
+
return Array.from(cpf).map((c, i) => Number(c) * (fator - i)).reduce((a, b) => a + b, 0);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxPQUFPLFNBQVM7SUFDbEIsT0FBTztRQUNILE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxzQ0FBc0MsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTTtRQUN0QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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LElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtZQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUNqQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0aWVzIHtcclxuICAgIGdldEd1aWQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRHdWlkRW1wdHkoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSkubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpOiBhbnkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xyXG4gICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuICAgIFxyXG4gICAganNvblRvRW5jcnlwdChvYmplY3QpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyaXB0b2dyYWZhcih1bmVzY2FwZShKU09OLnN0cmluZ2lmeShvYmplY3QpKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGRlY3J5cHRUb0pzb24odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRlc2NyaXB0b2dyYWZhcih2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5PckRvd25sb2FkKHRpdGxlLCBibG9iKSB7XHJcbiAgICAgICAgbGV0IGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBpZiAodGl0bGUuaW5kZXhPZihcInBkZlwiKSA+IC0xKVxyXG4gICAgICAgICAgICB3aW5kb3cub3BlbihmaWxlVVJMLCB0aXRsZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50QTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBLmhyZWYgPSBmaWxlVVJMO1xyXG4gICAgICAgICAgICBlbGVtZW50QS5kb3dubG9hZCA9IHRpdGxlO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICAgICAgZWxlbWVudEEuY2xpY2soKTsgICAgICAgIFxyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlckFjZW50b3ModmFsOiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgICAgICBpZiAodmFsID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB2YXIgbm9ybWFsaXplRnVuY3Rpb24gPSBTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSA/IChzdHIpID0+IHN0ci5ub3JtYWxpemUoJ05GRCcpIDogKHN0cikgPT4gc3RyO1xyXG4gICAgICAgIHJldHVybiBub3JtYWxpemVGdW5jdGlvbih2YWwpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0b3MoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiRVhDRUxcIiwgTm9tZTogXCJFeGNlbFwiLCBNaW1lVHlwZTogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIiwgRXh0ZW5zYW86IFwieGxzXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlBERlwiLCBOb21lOiBcIlBERlwiLCBNaW1lVHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiwgRXh0ZW5zYW86IFwicGRmXCIgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdG9zRXhjZWwoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6ICdQUCcsIE5vbWU6ICdFeGNlbCBQb3J0dWd1w6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLl0nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ1BWJywgTm9tZTogJ0V4Y2VsIFBvcnR1Z3XDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFssXScgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnSVAnLCBOb21lOiAnRXhjZWwgSW5nbMOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWy5dJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdJVicsIE5vbWU6ICdFeGNlbCBJbmdsw6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLF0nIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQVwiLCBOb21lOiBcIkF0aXZvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlBcIiwgTm9tZTogXCJQZW5kZW50ZVwiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXNDb21wbGV0bygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJDXCIsIE5vbWU6IFwiQ2FkYXN0cmFkb1wiLCBTZWxlY2lvbmFkbzogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiRlwiLCBOb21lOiBcIkZlaXRvXCIsIFNlbGVjaW9uYWRvOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiT1wiLCBOb21lOiBcIkNvbmZlcmlkb1wiLCBTZWxlY2lvbmFkbzogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUlwiLCBOb21lOiBcIlJlamVpdGFkb1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIklcIiwgTm9tZTogXCJJbmF0aXZvXCIsIFNlbGVjaW9uYWRvOiBmYWxzZSB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzUHJvY2Vzc2FtZW50bygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJBXCIsIE5vbWU6IFwiQWd1YXJkYW5kb1Byb2Nlc3NhbWVudG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiRVwiLCBOb21lOiBcIkVtUHJvY2Vzc2FtZW50b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQXCIsIE5vbWU6IFwiUHJvY2Vzc2Fkb1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJJXCIsIE5vbWU6IFwiSW5hdGl2b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJaXCIsIE5vbWU6IFwiRXJyb1wiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXRvSWRpb21hcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJlblwiLCBOb21lOiBcIkVuZ2xpc2hcIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwicHQtQlJcIiwgTm9tZTogXCJQb3J0dWd1w6pzXCIgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdlbmVyb3MoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6ICdNJywgTm9tZTogJ01hc2N1bGlubycgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnRicsIE5vbWU6ICdGZW1pbmlubycgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRpcG9zRXZpZGVuY2lhKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAxLCBOb21lOiAnVGVsZWZvbmUnfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAyLCBOb21lOiAnRW1haWwnfSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IDMsIE5vbWU6ICdEb2N1bWVudG8nfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9yZGVucygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsge0lkOiBcIm5vbWUtYXNjXCIsIE5vbWU6IFwiTm9tZUNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwibm9tZS1kZXNjXCIsIE5vbWU6IFwiTm9tZURlY3Jlc2NlbnRlXCJ9LFxyXG4gICAgICAgICAgICAgICAgIHtJZDogXCJ2YWxvci1hc2NcIiwgTm9tZTogXCJWYWxvckNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwidmFsb3ItZGVzY1wiLCBOb21lOiBcIlZhbG9yRGVjcmVzY2VudGVcIn0gXTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGFyRW1haWwoZm9ybSwgdmFsdWUsIGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHBhdHRlcm4gPSAvXihbYS16QS1aMC05X1xcLVxcLl0rKUAoW2EtekEtWjAtOV9cXC1cXC5dKylcXC4oW2EtekEtWl17Miw1fSkkLztcclxuICAgICAgICBsZXQgZW1haWxzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KCc7Jyk7XHJcbiAgICAgICAgbGV0IGludmFsaWRvID0gZW1haWxzLnNvbWUoZW1haWwgPT4gZW1haWwgJiYgIXBhdHRlcm4udGVzdChlbWFpbC50cmltKCkpKTtcclxuXHJcbiAgICAgICAgaWYgKGludmFsaWRvKVxyXG4gICAgICAgICAgICBmb3JtLmZvcm0uY29udHJvbHNbY29udHJvbF0uc2V0RXJyb3JzKCB7ICdpbnZhbGlkJzogdHJ1ZSB9ICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TG9jYWxTdG9yYWdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLmNyaXB0b2dyYWZhcih2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExvY2FsU3RvcmFnZShrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRlc2NyaXB0b2dyYWZhcihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcclxuICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGlzSUUoKSB7XHJcbiAgICAgICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICAgICAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRSBcIikgPiAtMSB8fCB1c2VyQWdlbnQuaW5kZXhPZihcIlRyaWRlbnQvXCIpID4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0b3JuYVRleHRvKHRleHRvKSB7XHJcbiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIilcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dG87XHJcbiAgICAgICAgcmV0dXJuIGRpdi5pbm5lclRleHQgfHwgZGl2LnRleHRDb250ZW50O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBwcml2YXRlIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiR0t4THRRZzJhdGdqa3JlclwiKTtcclxuICAgIHByaXZhdGUgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcImUwV2c2bDVHTmRnMjlkdmNcIik7XHJcblxyXG4gICAgY3JpcHRvZ3JhZmFyKHRleHRvKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHRvLCB0aGlzLmtleSwge1xyXG4gICAgICAgICAgICAgICAgaXY6IHRoaXMuaXYsXHJcbiAgICAgICAgICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xyXG4gICAgICAgICAgICB9KS50b1N0cmluZygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXNjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dG8sIHRoaXMua2V5LCB7XHJcbiAgICAgICAgICAgICAgICBpdjogdGhpcy5pdixcclxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XHJcbiAgICAgICAgICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH0gIFxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGljVXRpbHMge1xyXG4gICAgXHJcbiAgICBzdGF0aWMgdmFsaWRhckNucGooY25wajogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY25wak9yaWdpbmFsID0gKGNucGogfHwgJycpO1xyXG4gICAgICAgIGNucGogPSBjbnBqT3JpZ2luYWwudG9VcHBlckNhc2UoKS5zbGljZSgwLCAxMik7XHJcbiAgICAgICAgY25waiA9IGNucGogKyB0aGlzLmdldERpZ2l0byh0aGlzLmdldFNvbWFDbnBqKGNucGopKTtcclxuICAgICAgICBjbnBqID0gY25waiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNucGooY25waikpO1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIGNucGpPcmlnaW5hbCA9PSBjbnBqO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGFyQ3BmKGNwZjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgY3BmT3JpZ2luYWwgPSAoY3BmIHx8ICcnKTtcclxuICAgICAgICBjcGYgPSBjcGZPcmlnaW5hbC50b1VwcGVyQ2FzZSgpLnNsaWNlKDAsIDkpO1xyXG4gICAgICAgIGNwZiA9IGNwZiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNwZihjcGYpKTtcclxuICAgICAgICBjcGYgPSBjcGYgKyB0aGlzLmdldERpZ2l0byh0aGlzLmdldFNvbWFDcGYoY3BmKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjcGZPcmlnaW5hbCA9PSBjcGY7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgc3RhdGljIGdldERpZ2l0byhzb21hOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHNvbWEgJSAxMSkgPD0gMSA/IDAgOiAoMTEgLSAoc29tYSAlIDExKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgc3RhdGljIGdldFNvbWFDbnBqKGNucGo6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBlc28gPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XHJcbiAgICAgICAgaWYgKGNucGoubGVuZ3RoID09IDEyKSBwZXNvLnNoaWZ0KCk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjbnBqKVxyXG4gICAgICAgICAgICAubWFwKChjLCBpKSA9PiAoaXNOYU4oTnVtYmVyKGMpKSA/IGMuY2hhckNvZGVBdCgwKSAtIDQ4IDogTnVtYmVyKGMpKSAqIHBlc29baV0pXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXRTb21hQ3BmKGNwZjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZmF0b3IgPSBjcGYubGVuZ3RoID09IDkgPyAxMCA6IDExO1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNwZikubWFwKChjLCBpKSA9PiBOdW1iZXIoYykgKiAoZmF0b3IgLSBpKSkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|