@libs-ui/utils 0.2.355-9 → 0.2.356-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +633 -2
- package/base64.d.ts +25 -0
- package/cache.d.ts +73 -0
- package/collection.d.ts +12 -0
- package/color.d.ts +37 -0
- package/communicate-micro.d.ts +34 -1
- package/crypto-3rd.d.ts +12 -0
- package/crypto.d.ts +17 -0
- package/dangerous-object.d.ts +8 -1
- package/data.d.ts +5 -3
- package/date.d.ts +12 -0
- package/dom.d.ts +56 -0
- package/download.d.ts +21 -0
- package/esm2022/base64.mjs +27 -2
- package/esm2022/cache.mjs +74 -1
- package/esm2022/collection.mjs +13 -1
- package/esm2022/color.mjs +38 -1
- package/esm2022/communicate-micro.mjs +37 -5
- package/esm2022/crypto-3rd.mjs +13 -1
- package/esm2022/crypto.mjs +18 -1
- package/esm2022/dangerous-object.mjs +11 -2
- package/esm2022/data.mjs +6 -4
- package/esm2022/date.mjs +13 -1
- package/esm2022/dom.mjs +57 -1
- package/esm2022/download.mjs +22 -1
- package/esm2022/file.mjs +54 -1
- package/esm2022/format-number.mjs +31 -3
- package/esm2022/format-text.mjs +73 -2
- package/esm2022/function-check-embed-frame.mjs +28 -1
- package/esm2022/pattern.mjs +83 -3
- package/esm2022/trace.mjs +8 -1
- package/esm2022/two-way-signal-object.mjs +14 -1
- package/esm2022/uri.mjs +22 -3
- package/esm2022/url-search-params.mjs +68 -1
- package/esm2022/url.mjs +10 -1
- package/esm2022/uuid.mjs +7 -1
- package/esm2022/xss-filter.mjs +14 -1
- package/fesm2022/libs-ui-utils.mjs +723 -21
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/file.d.ts +53 -0
- package/format-number.d.ts +29 -1
- package/format-text.d.ts +71 -0
- package/function-check-embed-frame.d.ts +22 -0
- package/package.json +2 -2
- package/pattern.d.ts +81 -1
- package/trace.d.ts +7 -0
- package/two-way-signal-object.d.ts +13 -0
- package/uri.d.ts +20 -0
- package/url-search-params.d.ts +67 -0
- package/url.d.ts +9 -0
- package/uuid.d.ts +6 -0
- package/xss-filter.d.ts +13 -0
|
@@ -1,19 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
2
2
|
import { Subject, filter, fromEvent } from 'rxjs';
|
|
3
|
+
import { UtilsCache } from './cache';
|
|
4
|
+
import { COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE } from './constants';
|
|
3
5
|
import { decrypt, encrypt } from './crypto';
|
|
4
6
|
import { decrypt3rd, encrypt3rd } from './crypto-3rd';
|
|
5
7
|
import { isEmbedFrame } from './function-check-embed-frame';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Cấu hình các key global cho truyền thông micro
|
|
10
|
+
*/
|
|
9
11
|
export class UtilsCommunicateMicroKeyGlobal {
|
|
12
|
+
/** Key sự kiện cho modal */
|
|
10
13
|
static KEY_MESSAGE_MODAL = 'LIBS_UI_MODEL_EVENT';
|
|
14
|
+
/** Bỏ qua cập nhật thời gian live event modal */
|
|
11
15
|
static IGNORE_INTERVAL_UPDATE_TIME_LIVE_EVENT_MODAL = false;
|
|
12
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Tiện ích hỗ trợ truyền thông giữa các cửa sổ, iframes (Cross-document communication)
|
|
19
|
+
* Sử dụng Window.postMessage kèm theo mã hóa/giải mã dữ liệu tự động.
|
|
20
|
+
*/
|
|
13
21
|
export class UtilsCommunicateMicro {
|
|
14
22
|
static initdEvent;
|
|
15
23
|
static subs = new Map();
|
|
16
24
|
static allMessageSub = new Subject();
|
|
25
|
+
/**
|
|
26
|
+
* Khởi tạo trình lắng nghe sự kiện 'message' trên window hiện tại.
|
|
27
|
+
* Cần được gọi một lần duy nhất tại Root Component (AppComponent).
|
|
28
|
+
* @param currentWindow Đối tượng window hiện tại
|
|
29
|
+
* @param destroyRef Reference để tự động unsubscribe khi component bị hủy
|
|
30
|
+
*/
|
|
17
31
|
static initEvent(currentWindow, destroyRef) {
|
|
18
32
|
if (this.initdEvent) {
|
|
19
33
|
return;
|
|
@@ -59,6 +73,11 @@ export class UtilsCommunicateMicro {
|
|
|
59
73
|
UtilsCache.ClearAll();
|
|
60
74
|
});
|
|
61
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Gửi message tới cửa sổ cha (Parent) hoặc top window.
|
|
78
|
+
* Thường dùng khi app chạy trong Iframe.
|
|
79
|
+
* @param data Dữ liệu cần gửi ({type: string, response: any})
|
|
80
|
+
*/
|
|
62
81
|
static PostMessageToParent(data) {
|
|
63
82
|
data = this.convertData(data);
|
|
64
83
|
try {
|
|
@@ -72,6 +91,10 @@ export class UtilsCommunicateMicro {
|
|
|
72
91
|
console.log(error);
|
|
73
92
|
}
|
|
74
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Gửi message tới tất cả các iframe con có trong trang.
|
|
96
|
+
* @param data Dữ liệu cần gửi ({type: string, response: any})
|
|
97
|
+
*/
|
|
75
98
|
static PostMessageToChildren(data) {
|
|
76
99
|
data = this.convertData(data);
|
|
77
100
|
const iframes = document.querySelectorAll('iframe');
|
|
@@ -79,6 +102,10 @@ export class UtilsCommunicateMicro {
|
|
|
79
102
|
iframe?.contentWindow?.postMessage(data, '*');
|
|
80
103
|
});
|
|
81
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Gửi message tới cửa sổ đã mở cửa sổ hiện tại (Window Opener).
|
|
107
|
+
* @param data Dữ liệu cần gửi ({type: string, response: any})
|
|
108
|
+
*/
|
|
82
109
|
static PostMessageToOpener(data) {
|
|
83
110
|
if (!window.opener) {
|
|
84
111
|
return;
|
|
@@ -111,6 +138,11 @@ export class UtilsCommunicateMicro {
|
|
|
111
138
|
return data;
|
|
112
139
|
}
|
|
113
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Đăng ký lắng nghe các message theo type cụ thể. Trả về một RxJS Subject.
|
|
143
|
+
* @param messageType Type của message hoặc danh sách các types cần lắng nghe
|
|
144
|
+
* @returns Subject sẽ phát ra message event khi nhận được dữ liệu hợp lệ
|
|
145
|
+
*/
|
|
114
146
|
static GetMessage(messageType) {
|
|
115
147
|
if (!this.initdEvent) {
|
|
116
148
|
throw Error('chưa khơi tạo hàm lắng nghe sự kiện, gọi UtilsCommunicateMicro.initEvent(window) tại root component');
|
|
@@ -148,4 +180,4 @@ export class UtilsCommunicateMicro {
|
|
|
148
180
|
});
|
|
149
181
|
}
|
|
150
182
|
}
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbXVuaWNhdGUtbWljcm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jb21tdW5pY2F0ZS1taWNyby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxNQUFNLE9BQU8sOEJBQThCO0lBQ2xDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztJQUNqRCxNQUFNLENBQUMsNENBQTRDLEdBQUcsS0FBSyxDQUFDOztBQUdyRSxNQUFNLE9BQU8scUJBQXFCO0lBQ3hCLE1BQU0sQ0FBQyxVQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLElBQUksR0FBdUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1RCxNQUFNLENBQUMsYUFBYSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdELE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBcUIsRUFBRSxVQUFzQjtRQUNuRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FB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LEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBTdWJqZWN0LCBmaWx0ZXIsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0IH0gZnJvbSAnLi9jcnlwdG8nO1xuaW1wb3J0IHsgZGVjcnlwdDNyZCwgZW5jcnlwdDNyZCB9IGZyb20gJy4vY3J5cHRvLTNyZCc7XG5pbXBvcnQgeyBpc0VtYmVkRnJhbWUgfSBmcm9tICcuL2Z1bmN0aW9uLWNoZWNrLWVtYmVkLWZyYW1lJztcbmltcG9ydCB7IFV0aWxzQ2FjaGUgfSBmcm9tICcuL2NhY2hlJztcbmltcG9ydCB7IENPTU1VTklDQVRFX01JQ1JPX0tFWV9HRVRfQUxMX01FU1NBR0UsIENPTU1VTklDQVRFX01JQ1JPX1BSRUZJWF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuZXhwb3J0IGNsYXNzIFV0aWxzQ29tbXVuaWNhdGVNaWNyb0tleUdsb2JhbCB7XG4gIHB1YmxpYyBzdGF0aWMgS0VZX01FU1NBR0VfTU9EQUwgPSAnTElCU19VSV9NT0RFTF9FVkVOVCc7XG4gIHB1YmxpYyBzdGF0aWMgSUdOT1JFX0lOVEVSVkFMX1VQREFURV9USU1FX0xJVkVfRVZFTlRfTU9EQUwgPSBmYWxzZTtcbn1cblxuZXhwb3J0IGNsYXNzIFV0aWxzQ29tbXVuaWNhdGVNaWNybyB7XG4gIHByaXZhdGUgc3RhdGljIGluaXRkRXZlbnQ/OiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBzdWJzOiBNYXA8c3RyaW5nLCBTdWJqZWN0PE1lc3NhZ2VFdmVudD4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHN0YXRpYyBhbGxNZXNzYWdlU3ViOiBTdWJqZWN0PE1lc3NhZ2VFdmVudD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdEV2ZW50KGN1cnJlbnRXaW5kb3c6IFdpbmRvdywgZGVzdHJveVJlZjogRGVzdHJveVJlZikge1xuICAgIGlmICh0aGlzLmluaXRkRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbml0ZEV2ZW50ID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMuc3Vicy5nZXQoQ09NTVVOSUNBVEVfTUlDUk9fS0VZX0dFVF9BTExfTUVTU0FHRSkpIHtcbiAgICAgIHRoaXMuc3Vicy5zZXQoQ09NTVVOSUNBVEVfTUlDUk9fS0VZX0dFVF9BTExfTUVTU0FHRSwgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLmFsbE1lc3NhZ2VTdWIpO1xuICAgIH1cblxuICAgIGZyb21FdmVudDxNZXNzYWdlRXZlbnQ+KGN1cnJlbnRXaW5kb3csICdtZXNzYWdlJylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZChkZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGU6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBldmVudCA9IHsgZGF0YTogeyAuLi5lLmRhdGEgfSB9IGFzIE1lc3NhZ2VFdmVudDtcblxuICAgICAgICBjb25zdCBkYXRhID0gZXZlbnQuZGF0YTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGRhdGEudHlwZTtcblxuICAgICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5hbGxNZXNzYWdlU3ViLm5leHQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YiA9IFV0aWxzQ29tbXVuaWNhdGVNaWNyby5HZXRNZXNzYWdlKHR5cGUpO1xuXG4gICAgICAgIGlmICghdHlwZSB8fCAhZGF0YS5yZXNwb25zZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh0eXBlLmluY2x1ZGVzKENPTU1VTklDQVRFX01JQ1JPX1BSRUZJWF9UWVBFKSkge1xuICAgICAgICAgICAgZGF0YS5yZXNwb25zZSA9IEpTT04ucGFyc2UoZGVjcnlwdDNyZChkYXRhLnJlc3BvbnNlKSk7XG4gICAgICAgICAgICBzdWIubmV4dChldmVudCk7XG4gICAgICAgICAgICB0aGlzLmFsbE1lc3NhZ2VTdWIubmV4dChldmVudCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YS5yZXNwb25zZSA9IEpTT04ucGFyc2UoZGVjcnlwdChkYXRhLnJlc3BvbnNlKSk7XG4gICAgICAgICAgc3ViLm5leHQoZXZlbnQpO1xuICAgICAgICAgIHRoaXMuYWxsTWVzc2FnZVN1Yi5uZXh0KGV2ZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgc3ViLm5leHQoZXZlbnQpO1xuICAgICAgICAgIHRoaXMuYWxsTWVzc2FnZVN1Yi5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uR2V0TWVzc2FnZShVdGlsc0NhY2hlLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGUpID0+IGUuZGF0YS5yZXNwb25zZSAhPT0gVXRpbHNDYWNoZS5pZFNlcnZpY2UpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnY2xlYXIgYWxsIGNhY2hlIGJ5IGV2ZW50Jyk7XG4gICAgICAgIFV0aWxzQ2FjaGUuQ2xlYXJBbGwoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIFBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YTogYW55KSB7XG4gICAgZGF0YSA9IHRoaXMuY29udmVydERhdGEoZGF0YSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc0VtYmVkRnJhbWUoKSkge1xuICAgICAgICB3aW5kb3c/LnBhcmVudD8ucG9zdE1lc3NhZ2UoZGF0YSwgJyonKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdz8udG9wPy5wb3N0TWVzc2FnZShkYXRhLCAnKicpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIFBvc3RNZXNzYWdlVG9DaGlsZHJlbihkYXRhOiBhbnkpIHtcbiAgICBkYXRhID0gdGhpcy5jb252ZXJ0RGF0YShkYXRhKTtcbiAgICBjb25zdCBpZnJhbWVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJyk7XG5cbiAgICBBcnJheS5mcm9tKGlmcmFtZXMpLmZvckVhY2goKGlmcmFtZSkgPT4ge1xuICAgICAgaWZyYW1lPy5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZShkYXRhLCAnKicpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIFBvc3RNZXNzYWdlVG9PcGVuZXIoZGF0YTogYW55KSB7XG4gICAgaWYgKCF3aW5kb3cub3BlbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLmNvbnZlcnREYXRhKGRhdGEpO1xuXG4gICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShkYXRhLCAnKicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydERhdGEoZGF0YTogYW55KSB7XG4gICAgaWYgKCFkYXRhIHx8ICFkYXRhLnR5cGUgfHwgIWRhdGEucmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBkYXRhID0geyAuLi5kYXRhIH07XG4gICAgY29uc3QgdHlwZSA9IGRhdGEudHlwZTtcblxuICAgIGlmICh0eXBlLmluY2x1ZGVzKENPTU1VTklDQVRFX01JQ1JPX1BSRUZJWF9UWVBFKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgSlNPTi5wYXJzZShkZWNyeXB0M3JkKGRhdGEucmVzcG9uc2UpKTtcblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgZGF0YS5yZXNwb25zZSA9IGVuY3J5cHQzcmQoSlNPTi5zdHJpbmdpZnkoZGF0YS5yZXNwb25zZSkpO1xuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgSlNPTi5wYXJzZShkZWNyeXB0KGRhdGEucmVzcG9uc2UpKTtcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgZGF0YS5yZXNwb25zZSA9IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YS5yZXNwb25zZSkpO1xuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgR2V0TWVzc2FnZShtZXNzYWdlVHlwZTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IFN1YmplY3Q8TWVzc2FnZUV2ZW50PiB7XG4gICAgaWYgKCF0aGlzLmluaXRkRXZlbnQpIHtcbiAgICAgIHRocm93IEVycm9yKCdjaMawYSBraMahaSB04bqhbyBow6BtIGzhuq9uZyBuZ2hlIHPhu7Ega2nhu4duLCBn4buNaSBVdGlsc0NvbW11bmljYXRlTWljcm8uaW5pdEV2ZW50KHdpbmRvdykgdOG6oWkgcm9vdCBjb21wb25lbnQnKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBzdWIgPSB0aGlzLnN1YnMuZ2V0KG1lc3NhZ2VUeXBlKTtcblxuICAgICAgaWYgKCFzdWIpIHtcbiAgICAgICAgc3ViID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5zdWJzLnNldChtZXNzYWdlVHlwZSwgc3ViKTtcblxuICAgICAgICByZXR1cm4gc3ViO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3ViO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZVR5cGUpIHx8ICFtZXNzYWdlVHlwZS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0eXBlIGVtcHR5Jyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlVHlwZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLkdldE1lc3NhZ2UobWVzc2FnZVR5cGVbMF0pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlcyA9IG1lc3NhZ2VUeXBlLnNvcnQoKS5qb2luKCc7Jyk7XG5cbiAgICBsZXQgc3ViID0gdGhpcy5zdWJzLmdldCh0eXBlcyk7XG5cbiAgICBpZiAoc3ViKSB7XG4gICAgICByZXR1cm4gc3ViO1xuICAgIH1cblxuICAgIHN1YiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdGhpcy5zdWJzLnNldCh0eXBlcywgc3ViKTtcbiAgICB0aGlzLmluaXRTdWJqZWN0KHN1YiwgbWVzc2FnZVR5cGUpO1xuXG4gICAgcmV0dXJuIHN1YjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGluaXRTdWJqZWN0KHN1YlJvb3Q6IFN1YmplY3Q8TWVzc2FnZUV2ZW50PiwgbWVzc2FnZVR5cGU6IEFycmF5PHN0cmluZz4pIHtcbiAgICBtZXNzYWdlVHlwZS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuR2V0TWVzc2FnZShrZXkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICBzdWJSb290Lm5leHQoZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbXVuaWNhdGUtbWljcm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jb21tdW5pY2F0ZS1taWNyby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6Qyw0QkFBNEI7SUFDckIsTUFBTSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDO0lBQ3hELGlEQUFpRDtJQUMxQyxNQUFNLENBQUMsNENBQTRDLEdBQUcsS0FBSyxDQUFDOztBQUdyRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBQ3hCLE1BQU0sQ0FBQyxVQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLElBQUksR0FBdUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1RCxNQUFNLENBQUMsYUFBYSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXBFOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFxQixFQUFFLFVBQXNCO1FBQ25FLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFD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Q0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzQ2FjaGUgfSBmcm9tICcuL2NhY2hlJztcbmltcG9ydCB7IENPTU1VTklDQVRFX01JQ1JPX0tFWV9HRVRfQUxMX01FU1NBR0UsIENPTU1VTklDQVRFX01JQ1JPX1BSRUZJWF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZGVjcnlwdCwgZW5jcnlwdCB9IGZyb20gJy4vY3J5cHRvJztcbmltcG9ydCB7IGRlY3J5cHQzcmQsIGVuY3J5cHQzcmQgfSBmcm9tICcuL2NyeXB0by0zcmQnO1xuaW1wb3J0IHsgaXNFbWJlZEZyYW1lIH0gZnJvbSAnLi9mdW5jdGlvbi1jaGVjay1lbWJlZC1mcmFtZSc7XG4vKipcbiAqIEPhuqV1IGjDrG5oIGPDoWMga2V5IGdsb2JhbCBjaG8gdHJ1eeG7gW4gdGjDtG5nIG1pY3JvXG4gKi9cbmV4cG9ydCBjbGFzcyBVdGlsc0NvbW11bmljYXRlTWljcm9LZXlHbG9iYWwge1xuICAvKiogS2V5IHPhu7Ega2nhu4duIGNobyBtb2RhbCAqL1xuICBwdWJsaWMgc3RhdGljIEtFWV9NRVNTQUdFX01PREFMID0gJ0xJQlNfVUlfTU9ERUxfRVZFTlQnO1xuICAvKiogQuG7jyBxdWEgY+G6rXAgbmjhuq10IHRo4budaSBnaWFuIGxpdmUgZXZlbnQgbW9kYWwgKi9cbiAgcHVibGljIHN0YXRpYyBJR05PUkVfSU5URVJWQUxfVVBEQVRFX1RJTUVfTElWRV9FVkVOVF9NT0RBTCA9IGZhbHNlO1xufVxuXG4vKipcbiAqIFRp4buHbiDDrWNoIGjhu5cgdHLhu6MgdHJ1eeG7gW4gdGjDtG5nIGdp4buvYSBjw6FjIGPhu61hIHPhu5UsIGlmcmFtZXMgKENyb3NzLWRvY3VtZW50IGNvbW11bmljYXRpb24pXG4gKiBT4butIGThu6VuZyBXaW5kb3cucG9zdE1lc3NhZ2Uga8OobSB0aGVvIG3DoyBow7NhL2dp4bqjaSBtw6MgZOG7ryBsaeG7h3UgdOG7sSDEkeG7mW5nLlxuICovXG5leHBvcnQgY2xhc3MgVXRpbHNDb21tdW5pY2F0ZU1pY3JvIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGRFdmVudD86IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIHN1YnM6IE1hcDxzdHJpbmcsIFN1YmplY3Q8TWVzc2FnZUV2ZW50Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgc3RhdGljIGFsbE1lc3NhZ2VTdWI6IFN1YmplY3Q8TWVzc2FnZUV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIEto4bufaSB04bqhbyB0csOsbmggbOG6r25nIG5naGUgc+G7sSBraeG7h24gJ21lc3NhZ2UnIHRyw6puIHdpbmRvdyBoaeG7h24gdOG6oWkuXG4gICAqIEPhuqduIMSRxrDhu6NjIGfhu41pIG3hu5l0IGzhuqduIGR1eSBuaOG6pXQgdOG6oWkgUm9vdCBDb21wb25lbnQgKEFwcENvbXBvbmVudCkuXG4gICAqIEBwYXJhbSBjdXJyZW50V2luZG93IMSQ4buRaSB0xrDhu6NuZyB3aW5kb3cgaGnhu4duIHThuqFpXG4gICAqIEBwYXJhbSBkZXN0cm95UmVmIFJlZmVyZW5jZSDEkeG7gyB04buxIMSR4buZbmcgdW5zdWJzY3JpYmUga2hpIGNvbXBvbmVudCBi4buLIGjhu6d5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluaXRFdmVudChjdXJyZW50V2luZG93OiBXaW5kb3csIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYpIHtcbiAgICBpZiAodGhpcy5pbml0ZEV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW5pdGRFdmVudCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLnN1YnMuZ2V0KENPTU1VTklDQVRFX01JQ1JPX0tFWV9HRVRfQUxMX01FU1NBR0UpKSB7XG4gICAgICB0aGlzLnN1YnMuc2V0KENPTU1VTklDQVRFX01JQ1JPX0tFWV9HRVRfQUxMX01FU1NBR0UsIFV0aWxzQ29tbXVuaWNhdGVNaWNyby5hbGxNZXNzYWdlU3ViKTtcbiAgICB9XG5cbiAgICBmcm9tRXZlbnQ8TWVzc2FnZUV2ZW50PihjdXJyZW50V2luZG93LCAnbWVzc2FnZScpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChlOiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSB7IGRhdGE6IHsgLi4uZS5kYXRhIH0gfSBhcyBNZXNzYWdlRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGE7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBkYXRhLnR5cGU7XG5cbiAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWxsTWVzc2FnZVN1Yi5uZXh0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWIgPSBVdGlsc0NvbW11bmljYXRlTWljcm8uR2V0TWVzc2FnZSh0eXBlKTtcblxuICAgICAgICBpZiAoIXR5cGUgfHwgIWRhdGEucmVzcG9uc2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodHlwZS5pbmNsdWRlcyhDT01NVU5JQ0FURV9NSUNST19QUkVGSVhfVFlQRSkpIHtcbiAgICAgICAgICAgIGRhdGEucmVzcG9uc2UgPSBKU09OLnBhcnNlKGRlY3J5cHQzcmQoZGF0YS5yZXNwb25zZSkpO1xuICAgICAgICAgICAgc3ViLm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5hbGxNZXNzYWdlU3ViLm5leHQoZXZlbnQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGRhdGEucmVzcG9uc2UgPSBKU09OLnBhcnNlKGRlY3J5cHQoZGF0YS5yZXNwb25zZSkpO1xuICAgICAgICAgIHN1Yi5uZXh0KGV2ZW50KTtcbiAgICAgICAgICB0aGlzLmFsbE1lc3NhZ2VTdWIubmV4dChldmVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgIHN1Yi5uZXh0KGV2ZW50KTtcbiAgICAgICAgICB0aGlzLmFsbE1lc3NhZ2VTdWIubmV4dChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLkdldE1lc3NhZ2UoVXRpbHNDYWNoZS50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChlKSA9PiBlLmRhdGEucmVzcG9uc2UgIT09IFV0aWxzQ2FjaGUuaWRTZXJ2aWNlKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKGRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2NsZWFyIGFsbCBjYWNoZSBieSBldmVudCcpO1xuICAgICAgICBVdGlsc0NhY2hlLkNsZWFyQWxsKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBH4butaSBtZXNzYWdlIHThu5tpIGPhu61hIHPhu5UgY2hhIChQYXJlbnQpIGhv4bq3YyB0b3Agd2luZG93LlxuICAgKiBUaMaw4budbmcgZMO5bmcga2hpIGFwcCBjaOG6oXkgdHJvbmcgSWZyYW1lLlxuICAgKiBAcGFyYW0gZGF0YSBE4buvIGxp4buHdSBj4bqnbiBn4butaSAoe3R5cGU6IHN0cmluZywgcmVzcG9uc2U6IGFueX0pXG4gICAqL1xuICBzdGF0aWMgUG9zdE1lc3NhZ2VUb1BhcmVudChkYXRhOiBhbnkpIHtcbiAgICBkYXRhID0gdGhpcy5jb252ZXJ0RGF0YShkYXRhKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICAgIHdpbmRvdz8ucGFyZW50Py5wb3N0TWVzc2FnZShkYXRhLCAnKicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgd2luZG93Py50b3A/LnBvc3RNZXNzYWdlKGRhdGEsICcqJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR+G7rWkgbWVzc2FnZSB04bubaSB04bqldCBj4bqjIGPDoWMgaWZyYW1lIGNvbiBjw7MgdHJvbmcgdHJhbmcuXG4gICAqIEBwYXJhbSBkYXRhIEThu68gbGnhu4d1IGPhuqduIGfhu61pICh7dHlwZTogc3RyaW5nLCByZXNwb25zZTogYW55fSlcbiAgICovXG4gIHN0YXRpYyBQb3N0TWVzc2FnZVRvQ2hpbGRyZW4oZGF0YTogYW55KSB7XG4gICAgZGF0YSA9IHRoaXMuY29udmVydERhdGEoZGF0YSk7XG4gICAgY29uc3QgaWZyYW1lcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lmcmFtZScpO1xuXG4gICAgQXJyYXkuZnJvbShpZnJhbWVzKS5mb3JFYWNoKChpZnJhbWUpID0+IHtcbiAgICAgIGlmcmFtZT8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoZGF0YSwgJyonKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBH4butaSBtZXNzYWdlIHThu5tpIGPhu61hIHPhu5UgxJHDoyBt4bufIGPhu61hIHPhu5UgaGnhu4duIHThuqFpIChXaW5kb3cgT3BlbmVyKS5cbiAgICogQHBhcmFtIGRhdGEgROG7ryBsaeG7h3UgY+G6p24gZ+G7rWkgKHt0eXBlOiBzdHJpbmcsIHJlc3BvbnNlOiBhbnl9KVxuICAgKi9cbiAgc3RhdGljIFBvc3RNZXNzYWdlVG9PcGVuZXIoZGF0YTogYW55KSB7XG4gICAgaWYgKCF3aW5kb3cub3BlbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLmNvbnZlcnREYXRhKGRhdGEpO1xuXG4gICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShkYXRhLCAnKicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydERhdGEoZGF0YTogYW55KSB7XG4gICAgaWYgKCFkYXRhIHx8ICFkYXRhLnR5cGUgfHwgIWRhdGEucmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBkYXRhID0geyAuLi5kYXRhIH07XG4gICAgY29uc3QgdHlwZSA9IGRhdGEudHlwZTtcblxuICAgIGlmICh0eXBlLmluY2x1ZGVzKENPTU1VTklDQVRFX01JQ1JPX1BSRUZJWF9UWVBFKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgSlNPTi5wYXJzZShkZWNyeXB0M3JkKGRhdGEucmVzcG9uc2UpKTtcblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgZGF0YS5yZXNwb25zZSA9IGVuY3J5cHQzcmQoSlNPTi5zdHJpbmdpZnkoZGF0YS5yZXNwb25zZSkpO1xuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgSlNPTi5wYXJzZShkZWNyeXB0KGRhdGEucmVzcG9uc2UpKTtcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgZGF0YS5yZXNwb25zZSA9IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YS5yZXNwb25zZSkpO1xuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogxJDEg25nIGvDvSBs4bqvbmcgbmdoZSBjw6FjIG1lc3NhZ2UgdGhlbyB0eXBlIGPhu6UgdGjhu4MuIFRy4bqjIHbhu4EgbeG7mXQgUnhKUyBTdWJqZWN0LlxuICAgKiBAcGFyYW0gbWVzc2FnZVR5cGUgVHlwZSBj4bunYSBtZXNzYWdlIGhv4bq3YyBkYW5oIHPDoWNoIGPDoWMgdHlwZXMgY+G6p24gbOG6r25nIG5naGVcbiAgICogQHJldHVybnMgU3ViamVjdCBz4bq9IHBow6F0IHJhIG1lc3NhZ2UgZXZlbnQga2hpIG5o4bqtbiDEkcaw4bujYyBk4buvIGxp4buHdSBo4bujcCBs4buHXG4gICAqL1xuICBzdGF0aWMgR2V0TWVzc2FnZShtZXNzYWdlVHlwZTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IFN1YmplY3Q8TWVzc2FnZUV2ZW50PiB7XG4gICAgaWYgKCF0aGlzLmluaXRkRXZlbnQpIHtcbiAgICAgIHRocm93IEVycm9yKCdjaMawYSBraMahaSB04bqhbyBow6BtIGzhuq9uZyBuZ2hlIHPhu7Ega2nhu4duLCBn4buNaSBVdGlsc0NvbW11bmljYXRlTWljcm8uaW5pdEV2ZW50KHdpbmRvdykgdOG6oWkgcm9vdCBjb21wb25lbnQnKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBzdWIgPSB0aGlzLnN1YnMuZ2V0KG1lc3NhZ2VUeXBlKTtcblxuICAgICAgaWYgKCFzdWIpIHtcbiAgICAgICAgc3ViID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5zdWJzLnNldChtZXNzYWdlVHlwZSwgc3ViKTtcblxuICAgICAgICByZXR1cm4gc3ViO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3ViO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZVR5cGUpIHx8ICFtZXNzYWdlVHlwZS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0eXBlIGVtcHR5Jyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlVHlwZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLkdldE1lc3NhZ2UobWVzc2FnZVR5cGVbMF0pO1xuICAgIH1cbiAgICBjb25zdCB0eXBlcyA9IG1lc3NhZ2VUeXBlLnNvcnQoKS5qb2luKCc7Jyk7XG5cbiAgICBsZXQgc3ViID0gdGhpcy5zdWJzLmdldCh0eXBlcyk7XG5cbiAgICBpZiAoc3ViKSB7XG4gICAgICByZXR1cm4gc3ViO1xuICAgIH1cblxuICAgIHN1YiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdGhpcy5zdWJzLnNldCh0eXBlcywgc3ViKTtcbiAgICB0aGlzLmluaXRTdWJqZWN0KHN1YiwgbWVzc2FnZVR5cGUpO1xuXG4gICAgcmV0dXJuIHN1YjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGluaXRTdWJqZWN0KHN1YlJvb3Q6IFN1YmplY3Q8TWVzc2FnZUV2ZW50PiwgbWVzc2FnZVR5cGU6IEFycmF5PHN0cmluZz4pIHtcbiAgICBtZXNzYWdlVHlwZS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRoaXMuR2V0TWVzc2FnZShrZXkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICBzdWJSb290Lm5leHQoZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/esm2022/crypto-3rd.mjs
CHANGED
|
@@ -13,6 +13,12 @@ export const setKeyCrypto3rd = (value) => {
|
|
|
13
13
|
const keyStore = () => {
|
|
14
14
|
return key;
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Mã hóa dữ liệu dạng chuỗi bằng thuật toán AES-CBC.
|
|
18
|
+
* Yêu cầu key mã hóa đã được thiết lập qua setKeyCrypto3rd.
|
|
19
|
+
* @param plainData Chuỗi văn bản thuần túy cần mã hóa
|
|
20
|
+
* @returns Chuỗi kết quả đã được mã hóa (Base64 string)
|
|
21
|
+
*/
|
|
16
22
|
export const encrypt3rd = (plainData) => {
|
|
17
23
|
if (!keyStore()) {
|
|
18
24
|
throw Error('lỗi chưa setup key mã hóa');
|
|
@@ -24,6 +30,12 @@ export const encrypt3rd = (plainData) => {
|
|
|
24
30
|
const options = { iv: iv, mode: mode, padding: padding };
|
|
25
31
|
return CryptoES.AES.encrypt(plainData, key, options).toString();
|
|
26
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Giải mã dữ liệu đã được mã hóa bằng AES-CBC.
|
|
35
|
+
* Yêu cầu cùng một key mã hóa đã dùng để encrypt.
|
|
36
|
+
* @param encryptedData Chuỗi dữ liệu đã mã hóa
|
|
37
|
+
* @returns Chuỗi văn bản thuần túy sau khi giải mã (UTF-8)
|
|
38
|
+
*/
|
|
27
39
|
export const decrypt3rd = (encryptedData) => {
|
|
28
40
|
if (!keyStore()) {
|
|
29
41
|
throw Error('lỗi chưa setup key mã hóa');
|
|
@@ -35,4 +47,4 @@ export const decrypt3rd = (encryptedData) => {
|
|
|
35
47
|
const options = { iv: iv, mode: mode, padding: padding };
|
|
36
48
|
return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);
|
|
37
49
|
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLTNyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2NyeXB0by0zcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBRWpDLElBQUksR0FBRyxHQUFHLDBCQUEwQixDQUFDO0FBRXJDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQy9DLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLE1BQU0sNENBQTRDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0QsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUNwQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFO0lBQ3RELElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQy9CLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ25DLE1BQU0sT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV6RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFxQixFQUFVLEVBQUU7SUFDMUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDaEIsTUFBTSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0MsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDL0IsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXpELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3J5cHRvRVMgZnJvbSAnY3J5cHRvLWVzJztcblxubGV0IGtleSA9ICcxMn5AI2xvcXdzeGFjdmEoM3JkaGFxMTInO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGnhur90IGzhuq1wIGtleSBtw6MgaMOzYVxuICogQHBhcmFtIHZhbHVlIGtleSBtw6MgaMOzYSwgxJHhu5kgZMOgaSBi4bqxbmcgMjQgaG/hurdjIDMyIGvDvSB04buxLlxuICovXG5leHBvcnQgY29uc3Qgc2V0S2V5Q3J5cHRvM3JkID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLmxlbmd0aCAhPT0gMjQgJiYgdmFsdWUubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IEVycm9yKGBrZXkubGVuZ3RoID0gJHt2YWx1ZS5sZW5ndGh9OyBLZXkgcGjhuqNpIGzDoCAxIGNodeG7l2kgZMOgaSAyNCBob+G6t2MgMzIga8O9IHThu7FgKTtcbiAgfVxuICBrZXkgPSB2YWx1ZTtcbn07XG5cbmNvbnN0IGtleVN0b3JlID0gKCkgPT4ge1xuICByZXR1cm4ga2V5O1xufTtcblxuLyoqXG4gKiBNw6MgaMOzYSBk4buvIGxp4buHdSBk4bqhbmcgY2h14buXaSBi4bqxbmcgdGh14bqtdCB0b8OhbiBBRVMtQ0JDLlxuICogWcOqdSBj4bqndSBrZXkgbcOjIGjDs2EgxJHDoyDEkcaw4bujYyB0aGnhur90IGzhuq1wIHF1YSBzZXRLZXlDcnlwdG8zcmQuXG4gKiBAcGFyYW0gcGxhaW5EYXRhIENodeG7l2kgdsSDbiBi4bqjbiB0aHXhuqduIHTDunkgY+G6p24gbcOjIGjDs2FcbiAqIEByZXR1cm5zIENodeG7l2kga+G6v3QgcXXhuqMgxJHDoyDEkcaw4bujYyBtw6MgaMOzYSAoQmFzZTY0IHN0cmluZylcbiAqL1xuZXhwb3J0IGNvbnN0IGVuY3J5cHQzcmQgPSAocGxhaW5EYXRhOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWtleVN0b3JlKCkpIHtcbiAgICB0aHJvdyBFcnJvcignbOG7l2kgY2jGsGEgc2V0dXAga2V5IG3DoyBow7NhJyk7XG4gIH1cbiAgY29uc3Qga2V5ID0gQ3J5cHRvRVMuZW5jLkhleC5wYXJzZShrZXlTdG9yZSgpKTtcbiAgY29uc3QgaXYgPSBDcnlwdG9FUy5lbmMuSGV4LnBhcnNlKGtleVN0b3JlKCkpO1xuICBjb25zdCBtb2RlID0gQ3J5cHRvRVMubW9kZS5DQkM7XG4gIGNvbnN0IHBhZGRpbmcgPSBDcnlwdG9FUy5wYWQuUGtjczc7XG4gIGNvbnN0IG9wdGlvbnMgPSB7IGl2OiBpdiwgbW9kZTogbW9kZSwgcGFkZGluZzogcGFkZGluZyB9O1xuXG4gIHJldHVybiBDcnlwdG9FUy5BRVMuZW5jcnlwdChwbGFpbkRhdGEsIGtleSwgb3B0aW9ucykudG9TdHJpbmcoKTtcbn07XG5cbi8qKlxuICogR2nhuqNpIG3DoyBk4buvIGxp4buHdSDEkcOjIMSRxrDhu6NjIG3DoyBow7NhIGLhurFuZyBBRVMtQ0JDLlxuICogWcOqdSBj4bqndSBjw7luZyBt4buZdCBrZXkgbcOjIGjDs2EgxJHDoyBkw7luZyDEkeG7gyBlbmNyeXB0LlxuICogQHBhcmFtIGVuY3J5cHRlZERhdGEgQ2h14buXaSBk4buvIGxp4buHdSDEkcOjIG3DoyBow7NhXG4gKiBAcmV0dXJucyBDaHXhu5dpIHbEg24gYuG6o24gdGh14bqnbiB0w7p5IHNhdSBraGkgZ2nhuqNpIG3DoyAoVVRGLTgpXG4gKi9cbmV4cG9ydCBjb25zdCBkZWNyeXB0M3JkID0gKGVuY3J5cHRlZERhdGE6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICgha2V5U3RvcmUoKSkge1xuICAgIHRocm93IEVycm9yKCds4buXaSBjaMawYSBzZXR1cCBrZXkgbcOjIGjDs2EnKTtcbiAgfVxuICBjb25zdCBrZXkgPSBDcnlwdG9FUy5lbmMuSGV4LnBhcnNlKGtleVN0b3JlKCkpO1xuICBjb25zdCBpdiA9IENyeXB0b0VTLmVuYy5IZXgucGFyc2Uoa2V5U3RvcmUoKSk7XG4gIGNvbnN0IG1vZGUgPSBDcnlwdG9FUy5tb2RlLkNCQztcbiAgY29uc3QgcGFkZGluZyA9IENyeXB0b0VTLnBhZC5Qa2NzNztcbiAgY29uc3Qgb3B0aW9ucyA9IHsgaXY6IGl2LCBtb2RlOiBtb2RlLCBwYWRkaW5nOiBwYWRkaW5nIH07XG5cbiAgcmV0dXJuIENyeXB0b0VTLkFFUy5kZWNyeXB0KGVuY3J5cHRlZERhdGEsIGtleSwgb3B0aW9ucykudG9TdHJpbmcoQ3J5cHRvRVMuZW5jLlV0ZjgpO1xufTtcbiJdfQ==
|
package/esm2022/crypto.mjs
CHANGED
|
@@ -13,6 +13,12 @@ export const setKeyCrypto = (value) => {
|
|
|
13
13
|
const keyStore = () => {
|
|
14
14
|
return key;
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Mã hóa dữ liệu dạng chuỗi bằng thuật toán AES-CBC.
|
|
18
|
+
* Yêu cầu key mã hóa đã được thiết lập qua setKeyCrypto.
|
|
19
|
+
* @param plainData Chuỗi văn bản thuần túy cần mã hóa
|
|
20
|
+
* @returns Chuỗi kết quả đã được mã hóa (Base64 string)
|
|
21
|
+
*/
|
|
16
22
|
export const encrypt = (plainData) => {
|
|
17
23
|
if (!keyStore()) {
|
|
18
24
|
throw Error('lỗi chưa setup key mã hóa');
|
|
@@ -24,6 +30,12 @@ export const encrypt = (plainData) => {
|
|
|
24
30
|
const options = { iv: iv, mode: mode, padding: padding };
|
|
25
31
|
return CryptoES.AES.encrypt(plainData, key, options).toString();
|
|
26
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Giải mã dữ liệu đã được mã hóa bằng AES-CBC.
|
|
35
|
+
* Yêu cầu cùng một key mã hóa đã dùng để encrypt.
|
|
36
|
+
* @param encryptedData Chuỗi dữ liệu đã mã hóa
|
|
37
|
+
* @returns Chuỗi văn bản thuần túy sau khi giải mã (UTF-8)
|
|
38
|
+
*/
|
|
27
39
|
export const decrypt = (encryptedData) => {
|
|
28
40
|
if (!keyStore()) {
|
|
29
41
|
throw Error('lỗi chưa setup key mã hóa');
|
|
@@ -35,7 +47,12 @@ export const decrypt = (encryptedData) => {
|
|
|
35
47
|
const options = { iv: iv, mode: mode, padding: padding };
|
|
36
48
|
return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);
|
|
37
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Tạo mã hash MD5 từ chuỗi văn bản.
|
|
52
|
+
* @param plainData Chuỗi văn bản cần hash
|
|
53
|
+
* @returns Chuỗi mã hash MD5 (32 ký tự hex)
|
|
54
|
+
*/
|
|
38
55
|
export const md5 = (plainData) => {
|
|
39
56
|
return CryptoES.MD5(plainData).toString();
|
|
40
57
|
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS91dGlscy9zcmMvY3J5cHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxJQUFJLEdBQUcsR0FBRywwQkFBMEIsQ0FBQztBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUM1QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDL0MsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxNQUFNLDRDQUE0QyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNELEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDcEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQWlCLEVBQVUsRUFBRTtJQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUNoQixNQUFNLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMvQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFFekQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsYUFBcUIsRUFBVSxFQUFFO0lBQ3ZELElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQy9CLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ25DLE1BQU0sT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV6RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRTtJQUN2QyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENyeXB0b0VTIGZyb20gJ2NyeXB0by1lcyc7XG5cbmxldCBrZXkgPSAnMTJ+QCNsb3F3c3hhY3ZhKDNyZGhhcTEyJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhp4bq/dCBs4bqtcCBrZXkgbcOjIGjDs2FcbiAqIEBwYXJhbSB2YWx1ZSBrZXkgbcOjIGjDs2EsIMSR4buZIGTDoGkgYuG6sW5nIDI0IGhv4bq3YyAzMiBrw70gdOG7sS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldEtleUNyeXB0byA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmICh2YWx1ZS5sZW5ndGggIT09IDI0ICYmIHZhbHVlLmxlbmd0aCAhPT0gMzIpIHtcbiAgICB0aHJvdyBFcnJvcihga2V5Lmxlbmd0aCA9ICR7dmFsdWUubGVuZ3RofTsgS2V5IHBo4bqjaSBsw6AgMSBjaHXhu5dpIGTDoGkgMjQgaG/hurdjIDMyIGvDvSB04buxYCk7XG4gIH1cbiAga2V5ID0gdmFsdWU7XG59O1xuXG5jb25zdCBrZXlTdG9yZSA9ICgpID0+IHtcbiAgcmV0dXJuIGtleTtcbn07XG5cbi8qKlxuICogTcOjIGjDs2EgZOG7ryBsaeG7h3UgZOG6oW5nIGNodeG7l2kgYuG6sW5nIHRodeG6rXQgdG/DoW4gQUVTLUNCQy5cbiAqIFnDqnUgY+G6p3Uga2V5IG3DoyBow7NhIMSRw6MgxJHGsOG7o2MgdGhp4bq/dCBs4bqtcCBxdWEgc2V0S2V5Q3J5cHRvLlxuICogQHBhcmFtIHBsYWluRGF0YSBDaHXhu5dpIHbEg24gYuG6o24gdGh14bqnbiB0w7p5IGPhuqduIG3DoyBow7NhXG4gKiBAcmV0dXJucyBDaHXhu5dpIGvhur90IHF14bqjIMSRw6MgxJHGsOG7o2MgbcOjIGjDs2EgKEJhc2U2NCBzdHJpbmcpXG4gKi9cbmV4cG9ydCBjb25zdCBlbmNyeXB0ID0gKHBsYWluRGF0YTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFrZXlTdG9yZSgpKSB7XG4gICAgdGhyb3cgRXJyb3IoJ2zhu5dpIGNoxrBhIHNldHVwIGtleSBtw6MgaMOzYScpO1xuICB9XG4gIGNvbnN0IGtleSA9IENyeXB0b0VTLmVuYy5IZXgucGFyc2Uoa2V5U3RvcmUoKSk7XG4gIGNvbnN0IGl2ID0gQ3J5cHRvRVMuZW5jLkhleC5wYXJzZShrZXlTdG9yZSgpKTtcbiAgY29uc3QgbW9kZSA9IENyeXB0b0VTLm1vZGUuQ0JDO1xuICBjb25zdCBwYWRkaW5nID0gQ3J5cHRvRVMucGFkLlBrY3M3O1xuICBjb25zdCBvcHRpb25zID0geyBpdjogaXYsIG1vZGU6IG1vZGUsIHBhZGRpbmc6IHBhZGRpbmcgfTtcblxuICByZXR1cm4gQ3J5cHRvRVMuQUVTLmVuY3J5cHQocGxhaW5EYXRhLCBrZXksIG9wdGlvbnMpLnRvU3RyaW5nKCk7XG59O1xuXG4vKipcbiAqIEdp4bqjaSBtw6MgZOG7ryBsaeG7h3UgxJHDoyDEkcaw4bujYyBtw6MgaMOzYSBi4bqxbmcgQUVTLUNCQy5cbiAqIFnDqnUgY+G6p3UgY8O5bmcgbeG7mXQga2V5IG3DoyBow7NhIMSRw6MgZMO5bmcgxJHhu4MgZW5jcnlwdC5cbiAqIEBwYXJhbSBlbmNyeXB0ZWREYXRhIENodeG7l2kgZOG7ryBsaeG7h3UgxJHDoyBtw6MgaMOzYVxuICogQHJldHVybnMgQ2h14buXaSB2xINuIGLhuqNuIHRodeG6p24gdMO6eSBzYXUga2hpIGdp4bqjaSBtw6MgKFVURi04KVxuICovXG5leHBvcnQgY29uc3QgZGVjcnlwdCA9IChlbmNyeXB0ZWREYXRhOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWtleVN0b3JlKCkpIHtcbiAgICB0aHJvdyBFcnJvcignbOG7l2kgY2jGsGEgc2V0dXAga2V5IG3DoyBow7NhJyk7XG4gIH1cbiAgY29uc3Qga2V5ID0gQ3J5cHRvRVMuZW5jLkhleC5wYXJzZShrZXlTdG9yZSgpKTtcbiAgY29uc3QgaXYgPSBDcnlwdG9FUy5lbmMuSGV4LnBhcnNlKGtleVN0b3JlKCkpO1xuICBjb25zdCBtb2RlID0gQ3J5cHRvRVMubW9kZS5DQkM7XG4gIGNvbnN0IHBhZGRpbmcgPSBDcnlwdG9FUy5wYWQuUGtjczc7XG4gIGNvbnN0IG9wdGlvbnMgPSB7IGl2OiBpdiwgbW9kZTogbW9kZSwgcGFkZGluZzogcGFkZGluZyB9O1xuXG4gIHJldHVybiBDcnlwdG9FUy5BRVMuZGVjcnlwdChlbmNyeXB0ZWREYXRhLCBrZXksIG9wdGlvbnMpLnRvU3RyaW5nKENyeXB0b0VTLmVuYy5VdGY4KTtcbn07XG5cbi8qKlxuICogVOG6oW8gbcOjIGhhc2ggTUQ1IHThu6sgY2h14buXaSB2xINuIGLhuqNuLlxuICogQHBhcmFtIHBsYWluRGF0YSBDaHXhu5dpIHbEg24gYuG6o24gY+G6p24gaGFzaFxuICogQHJldHVybnMgQ2h14buXaSBtw6MgaGFzaCBNRDUgKDMyIGvDvSB04buxIGhleClcbiAqL1xuZXhwb3J0IGNvbnN0IG1kNSA9IChwbGFpbkRhdGE6IHN0cmluZykgPT4ge1xuICByZXR1cm4gQ3J5cHRvRVMuTUQ1KHBsYWluRGF0YSkudG9TdHJpbmcoKTtcbn07XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { HttpParams } from '@angular/common/http';
|
|
3
|
-
import {
|
|
3
|
+
import { ElementRef, TemplateRef } from '@angular/core';
|
|
4
4
|
import dayjs from 'dayjs';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
6
|
/**
|
|
@@ -146,4 +146,13 @@ export const isReturnAsIsObject = (obj) => {
|
|
|
146
146
|
export const isSafeToProcess = (obj) => {
|
|
147
147
|
return !isDangerousObject(obj);
|
|
148
148
|
};
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2Vyb3VzLW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2Rhbmdlcm91cy1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFVLENBQUM7QUFFek07O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEdBQVEsRUFBb0UsRUFBRTtJQUNsSCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxHQUFHLFlBQVksTUFBTSxJQUFJLEdBQUcsWUFBWSxRQUFRLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxVQUFVLENBQUM7QUFDdEgsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFRLEVBQXVDLEVBQUU7SUFDM0UsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxD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QUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBVSxHQUFRLEVBQXlCLEVBQUU7SUFDaEUsT0FBTyxHQUFHLFlBQVksR0FBRyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQVUsR0FBUSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFVLEdBQVEsRUFBbUIsRUFBRTtJQUM1RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRTtJQUN0RCxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVEsRUFBVyxFQUFFO0lBQ25ELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcywgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBEYW5oIHPDoWNoIGPDoWMgY29uc3RydWN0b3IgbmFtZSBuZ3V5IGhp4buDbVxuICovXG5jb25zdCBEQU5HRVJPVVNfQ09OU1RSVUNUT1JfTkFNRVMgPSBbJ1dpbmRvdycsICdEb2N1bWVudCcsICdIVE1MRG9jdW1lbnQnLCAnSFRNTEVsZW1lbnQnLCAnRWxlbWVudCcsICdOb2RlJywgJ0xvY2F0aW9uJywgJ05hdmlnYXRvcicsICdTY3JlZW4nLCAnSGlzdG9yeScsICdTdG9yYWdlJywgJ0NvbnNvbGUnLCAnUGVyZm9ybWFuY2UnXSBhcyBjb25zdDtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgYnJvd3NlciBnbG9iYWwgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNCcm93c2VyR2xvYmFsT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIFdpbmRvdyB8IERvY3VtZW50IHwgV2luZG93IHwgRG9jdW1lbnQgfCB0eXBlb2YgZ2xvYmFsVGhpcyA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFdpbmRvdyB8fCBvYmogaW5zdGFuY2VvZiBEb2N1bWVudCB8fCBvYmogPT09IHdpbmRvdyB8fCBvYmogPT09IGRvY3VtZW50IHx8IG9iaiA9PT0gZ2xvYmFsVGhpcztcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIERPTSBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTU9iamVjdCA9IChvYmo6IGFueSk6IG9iaiBpcyBIVE1MRWxlbWVudCB8IE5vZGUgfCBFbGVtZW50ID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgb2JqIGluc3RhbmNlb2YgTm9kZSB8fCBvYmogaW5zdGFuY2VvZiBFbGVtZW50O1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgYnJvd3NlciBBUEkgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNCcm93c2VyQVBJT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiA9PT0gd2luZG93LmxvY2F0aW9uIHx8IG9iaiA9PT0gd2luZG93Lm5hdmlnYXRvciB8fCBvYmogPT09IHdpbmRvdy5zY3JlZW4gfHwgb2JqID09PSB3aW5kb3cuaGlzdG9yeSB8fCBvYmogPT09IHdpbmRvdy5sb2NhbFN0b3JhZ2UgfHwgb2JqID09PSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UgfHwgb2JqID09PSB3aW5kb3cuY29uc29sZSB8fCBvYmogPT09IHdpbmRvdy5wZXJmb3JtYW5jZTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSBjb25zdHJ1Y3RvciBuYW1lIGPDsyBu4bqxbSB0cm9uZyBkYW5oIHPDoWNoIG5ndXkgaGnhu4NtIGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaGFzRGFuZ2Vyb3VzQ29uc3RydWN0b3JOYW1lID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgY29uc3RydWN0b3JOYW1lID0gb2JqLmNvbnN0cnVjdG9yPy5uYW1lO1xuICByZXR1cm4gY29uc3RydWN0b3JOYW1lICYmIERBTkdFUk9VU19DT05TVFJVQ1RPUl9OQU1FUy5pbmNsdWRlcyhjb25zdHJ1Y3Rvck5hbWUgYXMgYW55KTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIERPTSBvYmplY3QgaG/hurdjIGJyb3dzZXIgb2JqZWN0IG5ndXkgaGnhu4NtIGtow7RuZ1xuICogTmjhu69uZyDEkeG7kWkgdMaw4bujbmcgbsOgeSBjw7MgdGjhu4MgZ8OieSByYSBjaXJjdWxhciByZWZlcmVuY2UgdsOgIG1heGltdW0gY2FsbCBzdGFja1xuICovXG5leHBvcnQgY29uc3QgaXNEYW5nZXJvdXNPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc0Jyb3dzZXJHbG9iYWxPYmplY3Qob2JqKSB8fCBpc0RPTU9iamVjdChvYmopIHx8IGlzQnJvd3NlckFQSU9iamVjdChvYmopIHx8IGhhc0Rhbmdlcm91c0NvbnN0cnVjdG9yTmFtZShvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBBbmd1bGFyL0ZyYW1ld29yayBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0ZyYW1ld29ya09iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBUZW1wbGF0ZVJlZjxUPiB8IEVsZW1lbnRSZWY8VD4gPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCBvYmogaW5zdGFuY2VvZiBFbGVtZW50UmVmO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBGaWxlL0Jsb2Igb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNGaWxlID0gKG9iajogYW55KTogb2JqIGlzIEZpbGUgfCBCbG9iID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRmlsZSB8fCBvYmogaW5zdGFuY2VvZiBCbG9iIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBGaWxlXSc7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEJ1aWx0LWluIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQnVpbHRJbk9iamVjdCA9IChvYmo6IGFueSk6IG9iaiBpcyBEYXRlIHwgUmVnRXhwIHwgSHR0cFBhcmFtcyA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGUgfHwgaXNSZWdFeHAob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBIdHRwUGFyYW1zIHx8ICgnaGFzT3duUHJvcGVydHknIGluIG9iaiAmJiAnX19uZ0NvbnRleHRfXycgaW4gb2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgUmVnRXhwIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVnRXhwID0gKG9iajogYW55KTogb2JqIGlzIFJlZ0V4cCA9PiB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBSZWdFeHA7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEFzeW5jIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQXN5bmNPYmplY3QgPSA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4gPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBQcm9taXNlIHx8IG9iaiBpbnN0YW5jZW9mIE9ic2VydmFibGU7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIFNwZWNpYWwgb2JqZWN0IGPhuqduIGLhu48gcXVhIGtow7RuZ1xuICogQmFvIGfhu5NtOiBGcmFtZXdvcmsgb2JqZWN0cywgRmlsZSBvYmplY3RzLCBCdWlsdC1pbiBvYmplY3RzLCBBc3luYyBvYmplY3RzXG4gKi9cbmV4cG9ydCBjb25zdCBpc1NwZWNpYWxPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGlzRnJhbWV3b3JrT2JqZWN0KG9iaikgfHwgaXNGaWxlKG9iaikgfHwgaXNCdWlsdEluT2JqZWN0KG9iaikgfHwgaXNBc3luY09iamVjdChvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBkYXlqcyBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RheWpzT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIERheWpzID0+IHtcbiAgcmV0dXJuIGRheWpzLmlzRGF5anMob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6Agb2JqZWN0IGPhuqduIGLhu48gcXVhIHRyb25nIHF1w6EgdHLDrG5oIGNvbnZlcnQga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc1NraXBwYWJsZU9iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gaXNEYW5nZXJvdXNPYmplY3Qob2JqKSB8fCBpc1NwZWNpYWxPYmplY3Qob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgTWFwIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTWFwID0gPFQgPSBhbnk+KG9iajogYW55KTogb2JqIGlzIE1hcDxzdHJpbmcsIFQ+ID0+IHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIE1hcDtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgU2V0IG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU2V0ID0gPFQgPSBhbnk+KG9iajogYW55KTogb2JqIGlzIFNldDxUPiA9PiB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBTZXQ7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEFycmF5IG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQXJyYXkgPSA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgQXJyYXk8VD4gPT4ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBvYmplY3QgY+G6p24gdHLhuqMgduG7gSBuZ3V5w6puIHRy4bqhbmcga2jDtG5nXG4gKiBCYW8gZ+G7k206IGRhbmdlcm91cyBvYmplY3RzLCBzcGVjaWFsIG9iamVjdHMsIGRheWpzIG9iamVjdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmV0dXJuQXNJc09iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gaXNTa2lwcGFibGVPYmplY3Qob2JqKSB8fCBpc0RheWpzT2JqZWN0KG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIMSR4buRaSB0xrDhu6NuZyBjw7MgYW4gdG/DoG4gxJHhu4MgY2xvbmUvY29udmVydCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU2FmZVRvUHJvY2VzcyA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gIWlzRGFuZ2Vyb3VzT2JqZWN0KG9iaik7XG59O1xuIl19
|
|
149
|
+
/**
|
|
150
|
+
* Kiểm tra xem giá trị có phải là kiểu dữ liệu nguyên thủy (Primitive) không.
|
|
151
|
+
* Bao gồm: string, number, boolean, symbol, bigint, null, undefined.
|
|
152
|
+
* @param value Giá trị cần kiểm tra
|
|
153
|
+
* @returns true nếu là kiểu nguyên thủy
|
|
154
|
+
*/
|
|
155
|
+
export const isPrimitiveType = (value) => {
|
|
156
|
+
return value === null || value === undefined || ['string', 'number', 'boolean', 'symbol', 'bigint'].includes(typeof value);
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFuZ2Vyb3VzLW9iamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2Rhbmdlcm91cy1vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFVLENBQUM7QUFFek07O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEdBQVEsRUFBb0UsRUFBRTtJQUNsSCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxHQUFHLFlBQVksTUFBTSxJQUFJLEdBQUcsWUFBWSxRQUFRLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxVQUFVLENBQUM7QUFDdEgsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFRLEVBQXVDLEVBQUU7SUFDM0UsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sR0FBRyxZQUFZLFdBQVcsSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLEdBQUcsWUFBWSxPQUFPLENBQUM7QUFDckYsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEdBQVEsRUFBVyxFQUFFO0lBQ3RELElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDN0UsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxHQUFHLEtBQUssTUFBTSxDQUFDLFFBQVEsSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLFlBQVksSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLGNBQWMsSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUN4TyxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUU7SUFDL0QsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO0lBQzlDLE9BQU8sZUFBZSxJQUFJLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxlQUFzQixDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRTtJQUNyRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkgsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFVLEdBQVEsRUFBeUMsRUFBRTtJQUM1RixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxHQUFHLFlBQVksV0FBVyxJQUFJLEdBQUcsWUFBWSxVQUFVLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFRLEVBQXNCLEVBQUU7SUFDckQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxHQUFHLFlBQVksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlLENBQUM7QUFDL0csQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFRLEVBQXFDLEVBQUU7SUFDN0UsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sR0FBRyxZQUFZLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxZQUFZLFVBQVUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEdBQUcsSUFBSSxlQUFlLElBQUksR0FBRyxDQUFDLENBQUM7QUFDbEksQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFRLEVBQWlCLEVBQUU7SUFDbEQsT0FBTyxHQUFHLFlBQVksTUFBTSxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQVUsR0FBUSxFQUFxQyxFQUFFO0lBQ3BGLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLEdBQUcsWUFBWSxPQUFPLElBQUksR0FBRyxZQUFZLFVBQVUsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRTtJQUNuRCxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdGLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBUSxFQUFnQixFQUFFO0lBQ3RELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUU7SUFDckQsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBVSxHQUFRLEVBQXlCLEVBQUU7SUFDaEUsT0FBTyxHQUFHLFlBQVksR0FBRyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQVUsR0FBUSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFVLEdBQVEsRUFBbUIsRUFBRTtJQUM1RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRTtJQUN0RCxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVEsRUFBVyxFQUFFO0lBQ25ELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQVUsRUFBVyxFQUFFO0lBQ3JELE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0FBQzdILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIERhbmggc8OhY2ggY8OhYyBjb25zdHJ1Y3RvciBuYW1lIG5ndXkgaGnhu4NtXG4gKi9cbmNvbnN0IERBTkdFUk9VU19DT05TVFJVQ1RPUl9OQU1FUyA9IFsnV2luZG93JywgJ0RvY3VtZW50JywgJ0hUTUxEb2N1bWVudCcsICdIVE1MRWxlbWVudCcsICdFbGVtZW50JywgJ05vZGUnLCAnTG9jYXRpb24nLCAnTmF2aWdhdG9yJywgJ1NjcmVlbicsICdIaXN0b3J5JywgJ1N0b3JhZ2UnLCAnQ29uc29sZScsICdQZXJmb3JtYW5jZSddIGFzIGNvbnN0O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBicm93c2VyIGdsb2JhbCBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXJHbG9iYWxPYmplY3QgPSAob2JqOiBhbnkpOiBvYmogaXMgV2luZG93IHwgRG9jdW1lbnQgfCBXaW5kb3cgfCBEb2N1bWVudCB8IHR5cGVvZiBnbG9iYWxUaGlzID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgV2luZG93IHx8IG9iaiBpbnN0YW5jZW9mIERvY3VtZW50IHx8IG9iaiA9PT0gd2luZG93IHx8IG9iaiA9PT0gZG9jdW1lbnQgfHwgb2JqID09PSBnbG9iYWxUaGlzO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgRE9NIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIEhUTUxFbGVtZW50IHwgTm9kZSB8IEVsZW1lbnQgPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCBvYmogaW5zdGFuY2VvZiBOb2RlIHx8IG9iaiBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgeGVtIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBicm93c2VyIEFQSSBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Jyb3dzZXJBUElPYmplY3QgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqID09PSB3aW5kb3cubG9jYXRpb24gfHwgb2JqID09PSB3aW5kb3cubmF2aWdhdG9yIHx8IG9iaiA9PT0gd2luZG93LnNjcmVlbiB8fCBvYmogPT09IHdpbmRvdy5oaXN0b3J5IHx8IG9iaiA9PT0gd2luZG93LmxvY2FsU3RvcmFnZSB8fCBvYmogPT09IHdpbmRvdy5zZXNzaW9uU3RvcmFnZSB8fCBvYmogPT09IHdpbmRvdy5jb25zb2xlIHx8IG9iaiA9PT0gd2luZG93LnBlcmZvcm1hbmNlO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIGNvbnN0cnVjdG9yIG5hbWUgY8OzIG7hurFtIHRyb25nIGRhbmggc8OhY2ggbmd1eSBoaeG7g20ga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNEYW5nZXJvdXNDb25zdHJ1Y3Rvck5hbWUgPSAob2JqOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBjb25zdHJ1Y3Rvck5hbWUgPSBvYmouY29uc3RydWN0b3I/Lm5hbWU7XG4gIHJldHVybiBjb25zdHJ1Y3Rvck5hbWUgJiYgREFOR0VST1VTX0NPTlNUUlVDVE9SX05BTUVTLmluY2x1ZGVzKGNvbnN0cnVjdG9yTmFtZSBhcyBhbnkpO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHhlbSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgRE9NIG9iamVjdCBob+G6t2MgYnJvd3NlciBvYmplY3Qgbmd1eSBoaeG7g20ga2jDtG5nXG4gKiBOaOG7r25nIMSR4buRaSB0xrDhu6NuZyBuw6B5IGPDsyB0aOG7gyBnw6J5IHJhIGNpcmN1bGFyIHJlZmVyZW5jZSB2w6AgbWF4aW11bSBjYWxsIHN0YWNrXG4gKi9cbmV4cG9ydCBjb25zdCBpc0Rhbmdlcm91c09iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzQnJvd3Nlckdsb2JhbE9iamVjdChvYmopIHx8IGlzRE9NT2JqZWN0KG9iaikgfHwgaXNCcm93c2VyQVBJT2JqZWN0KG9iaikgfHwgaGFzRGFuZ2Vyb3VzQ29uc3RydWN0b3JOYW1lKG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEFuZ3VsYXIvRnJhbWV3b3JrIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRnJhbWV3b3JrT2JqZWN0ID0gPFQgPSBhbnk+KG9iajogYW55KTogb2JqIGlzIFRlbXBsYXRlUmVmPFQ+IHwgRWxlbWVudFJlZjxUPiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmIHx8IG9iaiBpbnN0YW5jZW9mIEVsZW1lbnRSZWY7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIEZpbGUvQmxvYiBvYmplY3Qga2jDtG5nXG4gKi9cbmV4cG9ydCBjb25zdCBpc0ZpbGUgPSAob2JqOiBhbnkpOiBvYmogaXMgRmlsZSB8IEJsb2IgPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBGaWxlIHx8IG9iaiBpbnN0YW5jZW9mIEJsb2IgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEZpbGVdJztcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgQnVpbHQtaW4gb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNCdWlsdEluT2JqZWN0ID0gKG9iajogYW55KTogb2JqIGlzIERhdGUgfCBSZWdFeHAgfCBIdHRwUGFyYW1zID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZSB8fCBpc1JlZ0V4cChvYmopIHx8IG9iaiBpbnN0YW5jZW9mIEh0dHBQYXJhbXMgfHwgKCdoYXNPd25Qcm9wZXJ0eScgaW4gb2JqICYmICdfX25nQ29udGV4dF9fJyBpbiBvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBSZWdFeHAgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNSZWdFeHAgPSAob2JqOiBhbnkpOiBvYmogaXMgUmVnRXhwID0+IHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFJlZ0V4cDtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgQXN5bmMgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNBc3luY09iamVjdCA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPiA9PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFByb21pc2UgfHwgb2JqIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgU3BlY2lhbCBvYmplY3QgY+G6p24gYuG7jyBxdWEga2jDtG5nXG4gKiBCYW8gZ+G7k206IEZyYW1ld29yayBvYmplY3RzLCBGaWxlIG9iamVjdHMsIEJ1aWx0LWluIG9iamVjdHMsIEFzeW5jIG9iamVjdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU3BlY2lhbE9iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gaXNGcmFtZXdvcmtPYmplY3Qob2JqKSB8fCBpc0ZpbGUob2JqKSB8fCBpc0J1aWx0SW5PYmplY3Qob2JqKSB8fCBpc0FzeW5jT2JqZWN0KG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIGRheWpzIG9iamVjdCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGF5anNPYmplY3QgPSAob2JqOiBhbnkpOiBvYmogaXMgRGF5anMgPT4ge1xuICByZXR1cm4gZGF5anMuaXNEYXlqcyhvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBvYmplY3QgY+G6p24gYuG7jyBxdWEgdHJvbmcgcXXDoSB0csOsbmggY29udmVydCBraMO0bmdcbiAqL1xuZXhwb3J0IGNvbnN0IGlzU2tpcHBhYmxlT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBpc0Rhbmdlcm91c09iamVjdChvYmopIHx8IGlzU3BlY2lhbE9iamVjdChvYmopO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBNYXAgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNNYXAgPSA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgTWFwPHN0cmluZywgVD4gPT4ge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTWFwO1xufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIMSR4buRaSB0xrDhu6NuZyBjw7MgcGjhuqNpIGzDoCBTZXQgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNTZXQgPSA8VCA9IGFueT4ob2JqOiBhbnkpOiBvYmogaXMgU2V0PFQ+ID0+IHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFNldDtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSDEkeG7kWkgdMaw4bujbmcgY8OzIHBo4bqjaSBsw6AgQXJyYXkgb2JqZWN0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IDxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBBcnJheTxUPiA9PiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG9iaik7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgxJHhu5FpIHTGsOG7o25nIGPDsyBwaOG6o2kgbMOgIG9iamVjdCBj4bqnbiB0cuG6oyB24buBIG5ndXnDqm4gdHLhuqFuZyBraMO0bmdcbiAqIEJhbyBn4buTbTogZGFuZ2Vyb3VzIG9iamVjdHMsIHNwZWNpYWwgb2JqZWN0cywgZGF5anMgb2JqZWN0c1xuICovXG5leHBvcnQgY29uc3QgaXNSZXR1cm5Bc0lzT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBpc1NraXBwYWJsZU9iamVjdChvYmopIHx8IGlzRGF5anNPYmplY3Qob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gxJHhu5FpIHTGsOG7o25nIGPDsyBhbiB0b8OgbiDEkeG7gyBjbG9uZS9jb252ZXJ0IGtow7RuZ1xuICovXG5leHBvcnQgY29uc3QgaXNTYWZlVG9Qcm9jZXNzID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiAhaXNEYW5nZXJvdXNPYmplY3Qob2JqKTtcbn07XG5cbi8qKlxuICogS2nhu4NtIHRyYSB4ZW0gZ2nDoSB0cuG7iyBjw7MgcGjhuqNpIGzDoCBraeG7g3UgZOG7ryBsaeG7h3Ugbmd1ecOqbiB0aOG7p3kgKFByaW1pdGl2ZSkga2jDtG5nLlxuICogQmFvIGfhu5NtOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgc3ltYm9sLCBiaWdpbnQsIG51bGwsIHVuZGVmaW5lZC5cbiAqIEBwYXJhbSB2YWx1ZSBHacOhIHRy4buLIGPhuqduIGtp4buDbSB0cmFcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgbMOgIGtp4buDdSBuZ3V5w6puIHRo4buneVxuICovXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmVUeXBlID0gKHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgWydzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnc3ltYm9sJywgJ2JpZ2ludCddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSk7XG59O1xuIl19
|
package/esm2022/data.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tính dung lượng (ước tính) của
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Tính toán dung lượng (ước tính) của một đối tượng trong bộ nhớ.
|
|
3
|
+
* Hàm sử dụng JSON.stringify và Blob để tính toán kích thước thực tế theo byte.
|
|
4
|
+
*
|
|
5
|
+
* @param obj Đối tượng cần tính dung lượng (Object, Array, Primitive...)
|
|
6
|
+
* @returns Chuỗi mô tả dung lượng đã được format (ví dụ: "100 bytes", "2.50 KB", "1.20 MB"). Trả về "N/A" nếu không thể serialize.
|
|
5
7
|
*/
|
|
6
8
|
export const getObjectSize = (obj) => {
|
|
7
9
|
try {
|
|
@@ -20,4 +22,4 @@ export const getObjectSize = (obj) => {
|
|
|
20
22
|
return 'N/A';
|
|
21
23
|
}
|
|
22
24
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBWSxFQUFVLEVBQUU7SUFDcEQsSUFBSSxDQUFDO1FBQ0gsa0ZBQWtGO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakMsK0NBQStDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFcEMsSUFBSSxLQUFLLEdBQUcsSUFBSTtZQUFFLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztRQUMxQyxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSTtZQUFFLE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNsRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsaURBQWlEO1FBQ2pELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVMOtbmggdG/DoW4gZHVuZyBsxrDhu6NuZyAoxrDhu5tjIHTDrW5oKSBj4bunYSBt4buZdCDEkeG7kWkgdMaw4bujbmcgdHJvbmcgYuG7mSBuaOG7my5cbiAqIEjDoG0gc+G7rSBk4bulbmcgSlNPTi5zdHJpbmdpZnkgdsOgIEJsb2IgxJHhu4MgdMOtbmggdG/DoW4ga8OtY2ggdGjGsOG7m2MgdGjhu7FjIHThur8gdGhlbyBieXRlLlxuICpcbiAqIEBwYXJhbSBvYmogxJDhu5FpIHTGsOG7o25nIGPhuqduIHTDrW5oIGR1bmcgbMaw4bujbmcgKE9iamVjdCwgQXJyYXksIFByaW1pdGl2ZS4uLilcbiAqIEByZXR1cm5zIENodeG7l2kgbcO0IHThuqMgZHVuZyBsxrDhu6NuZyDEkcOjIMSRxrDhu6NjIGZvcm1hdCAodsOtIGThu6U6IFwiMTAwIGJ5dGVzXCIsIFwiMi41MCBLQlwiLCBcIjEuMjAgTUJcIikuIFRy4bqjIHbhu4EgXCJOL0FcIiBu4bq/dSBraMO0bmcgdGjhu4Mgc2VyaWFsaXplLlxuICovXG5leHBvcnQgY29uc3QgZ2V0T2JqZWN0U2l6ZSA9IChvYmo6IHVua25vd24pOiBzdHJpbmcgPT4ge1xuICB0cnkge1xuICAgIC8vIENodXnhu4NuIG9iamVjdCBzYW5nIGNodeG7l2kgSlNPTiAoY2jDrW5oIHjDoWMgY2hvIG3hu41pIGxv4bqhaSBk4buvIGxp4buHdSB0deG6p24gdOG7sSBow7NhIMSRxrDhu6NjKVxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShvYmopO1xuXG4gICAgLy8gVMOtbmgga8OtY2ggdGjGsOG7m2MgYnl0ZSBk4buxYSB0csOqbiBVVEYtOCBlbmNvZGluZ1xuICAgIGNvbnN0IGJ5dGVzID0gbmV3IEJsb2IoW2pzb25dKS5zaXplO1xuXG4gICAgaWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBieXRlc2A7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDIpfSBLQmA7XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMil9IE1CYDtcbiAgfSBjYXRjaCB7XG4gICAgLy8gTuG6v3UgSlNPTi5zdHJpbmdpZnkgbOG7l2kgKGRvIGNpcmN1bGFyIHJlZmVyZW5jZSlcbiAgICByZXR1cm4gJ04vQSc7XG4gIH1cbn07XG4iXX0=
|
package/esm2022/date.mjs
CHANGED
|
@@ -15,14 +15,26 @@ dayjs.extend(timezone);
|
|
|
15
15
|
dayjs.extend(customParseFormat);
|
|
16
16
|
let timeZoneSetup = 'Asia/Ho_Chi_Minh';
|
|
17
17
|
let patternCheckTimeUTC = undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Thiết lập múi giờ mặc định cho hệ thống (mặc định là Asia/Ho_Chi_Minh).
|
|
20
|
+
* @param localeZone Tên múi giờ (ví dụ: 'America/New_York')
|
|
21
|
+
*/
|
|
18
22
|
export const setDefaultTimeZone = (localeZone = timeZoneSetup) => {
|
|
19
23
|
timeZoneSetup = localeZone;
|
|
20
24
|
dayjs.tz.setDefault(localeZone);
|
|
21
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Thiết lập pattern Regex để nhận diện và chuẩn hóa các chuỗi thời gian UTC đặc biệt.
|
|
28
|
+
* @param pattern Regex pattern dùng để kiểm tra và replace chuỗi thời gian
|
|
29
|
+
*/
|
|
22
30
|
export const setPatternCheckTimeUTC = (pattern) => {
|
|
23
31
|
patternCheckTimeUTC = pattern;
|
|
24
32
|
};
|
|
25
33
|
let functionFormatDate = undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Cung cấp một hàm format tùy chỉnh ghi đè lên logic mặc định của formatDate.
|
|
36
|
+
* @param functionCustom Hàm format tùy chỉnh
|
|
37
|
+
*/
|
|
26
38
|
export const updateFunctionFormatDate = (functionCustom) => {
|
|
27
39
|
functionFormatDate = functionCustom;
|
|
28
40
|
};
|
|
@@ -203,4 +215,4 @@ const getFormatData = (type, lang) => {
|
|
|
203
215
|
return 'MMM D, YYYY HH:mm:ss:SSS';
|
|
204
216
|
}
|
|
205
217
|
};
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxVQUFVLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNoQyxJQUFJLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUN2QyxJQUFJLG1CQUFtQixHQUF1QixTQUFTLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsYUFBYSxFQUFFLEVBQUU7SUFDL0QsYUFBYSxHQUFHLFVBQVUsQ0FBQztJQUMzQixLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFB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T0FBTyxhQUFhLENBQUM7WUFDdkIsQ0FBQztZQUVELE9BQU8sYUFBYSxDQUFDO1FBRXZCLEtBQUssUUFBUTtZQUNYLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLG1CQUFtQixDQUFDO1lBQzdCLENBQUM7WUFFRCxPQUFPLG1CQUFtQixDQUFDO1FBRTdCLEtBQUssSUFBSTtZQUNQLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1lBRUQsT0FBTyxXQUFXLENBQUM7UUFFckIsS0FBSyxTQUFTO1lBQ1osSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sc0JBQXNCLENBQUM7WUFDaEMsQ0FBQztZQUVELE9BQU8sc0JBQXNCLENBQUM7UUFFaEMsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQztRQUVqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssU0FBUztZQUNaLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssVUFBVTtZQUNiLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLDBCQUEwQixDQUFDO1lBQ3BDLENBQUM7WUFFRCxPQUFPLDBCQUEwQixDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2V0RGF5anNDb25maWcsIEdldERheWpzUmV0dXJuLCBOb25OdWxsYWJsZURhdGUsIFRZUEVfT0JKRUNUIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0ICdkYXlqcy9sb2NhbGUvZW4nO1xuaW1wb3J0ICdkYXlqcy9sb2NhbGUvdmknO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgbG9jYWxlRGF0YSBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YSc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1cGRhdGVMb2NhbGUgZnJvbSAnZGF5anMvcGx1Z2luL3VwZGF0ZUxvY2FsZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSB9IGZyb20gJy4vY2FjaGUnO1xuZGF5anMuZXh0ZW5kKGxvY2FsZURhdGEpO1xuZGF5anMuZXh0ZW5kKHVwZGF0ZUxvY2FsZSk7XG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xubGV0IHRpbWVab25lU2V0dXAgPSAnQXNpYS9Ib19DaGlfTWluaCc7XG5sZXQgcGF0dGVybkNoZWNrVGltZVVUQzogUmVnRXhwIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3Qgc2V0RGVmYXVsdFRpbWVab25lID0gKGxvY2FsZVpvbmUgPSB0aW1lWm9uZVNldHVwKSA9PiB7XG4gIHRpbWVab25lU2V0dXAgPSBsb2NhbGVab25lO1xuICBkYXlqcy50ei5zZXREZWZhdWx0KGxvY2FsZVpvbmUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFBhdHRlcm5DaGVja1RpbWVVVEMgPSAocGF0dGVybjogUmVnRXhwKSA9PiB7XG4gIHBhdHRlcm5DaGVja1RpbWVVVEMgPSBwYXR0ZXJuO1xufTtcblxuZXhwb3J0IHR5cGUgVFlQRV9GVU5DVElPTl9GT1JNQVRfREFURSA9ICh0aW1lOiBkYXlqcy5Db25maWdUeXBlLCBmb3JtYXRPdXRwdXQ6IHN0cmluZywgbGFuZz86IHN0cmluZykgPT4gc3RyaW5nO1xubGV0IGZ1bmN0aW9uRm9ybWF0RGF0ZTogVFlQRV9GVU5DVElPTl9GT1JNQVRfREFURSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUZ1bmN0aW9uRm9ybWF0RGF0ZSA9IChmdW5jdGlvbkN1c3RvbTogVFlQRV9GVU5DVElPTl9GT1JNQVRfREFURSkgPT4ge1xuICBmdW5jdGlvbkZvcm1hdERhdGUgPSBmdW5jdGlvbkN1c3RvbTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEzhuqV5IMSR4buRaSB0xrDhu6NuZyBkYXlqcyB0aGVvIGNvbmZpZ1xuICogQHBhcmFtIGNvbmZpZyBu4bq/dSBraMO0bmcgY8OzIGNvbmZpZyBz4bq9IHRy4bqjIHbhu4EgxJHhu5FpIHTGsOG7o25nIGRheWpzIGzDoCB0aOG7nWkgZ2lhbiBoaeG7h24gdOG6oWlcbiAqIEBwYXJhbSBjb25maWcuZGF0ZSB0aOG7nWkgZ2lhbiBj4bqnbiBs4bqleVxuICogQHBhcmFtIGNvbmZpZy5yZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0IHRydWUgbuG6v3UgbXXhu5FuIHRy4bqjIHbhu4EgxJHhu5FpIHTGsOG7o25nIGRheWpzIG7hur91IGNvbmZpZy5kYXRlIGtow7RuZyBjw7NcbiAqIEBwYXJhbSBjb25maWcudXRjIHRydWUgbuG6v3UgbXXhu5FuIGzhuqV5IHRo4budaSBnaWFuIFVUQ1xuICogQHBhcmFtIGNvbmZpZy5mb3JtYXRPZkRhdGUgxJHhu4tuaCBk4bqhbmcgdGjhu51pIGdpYW4gxJFhbmcgxJHGsOG7o2MgdHJ1eeG7gW4gdsOgb1xuICovXG5leHBvcnQgY29uc3QgZ2V0RGF5anMgPSA8QyBleHRlbmRzIEdldERheWpzQ29uZmlnIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihjb25maWc/OiBDKTogR2V0RGF5anNSZXR1cm48Qz4gPT4ge1xuICAvLyBoZWxwZXIgY2FzdCDEkeG7gyB0csOhbmggbOG6t3AgbOG6oWkga2nhu4N1IMSRaeG7gXUga2nhu4duIOG7nyBjw6FjIHJldHVyblxuICBjb25zdCBvdXQgPSAodjogdW5rbm93bikgPT4gdiBhcyBHZXREYXlqc1JldHVybjxDPjtcbiAgaWYgKCFjb25maWcpIHtcbiAgICByZXR1cm4gb3V0KGRheWpzKCkudHooKSk7XG4gIH1cbiAgY29uZmlnLmRhdGUgPSAhY29uZmlnLmRhdGUgJiYgY29uZmlnLnJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3QgPyBkYXlqcygpLnR6KCkgOiBjb25maWcuZGF0ZTtcbiAgaWYgKHR5cGVvZiBjb25maWcuZGF0ZSA9PT0gJ251bWJlcicpIHtcbiAgICBjb25maWcuZGF0ZSA9IGRheWpzLnVuaXgoY29uZmlnLmRhdGUpO1xuICB9XG4gIGlmICghY29uZmlnLmRhdGUpIHtcbiAgICByZXR1cm4gb3V0KHVuZGVmaW5lZCk7XG4gIH1cbiAgbGV0IHsgZGF0ZSwgdXRjLCBmb3JtYXRPZkRhdGUgfSA9IGNvbmZpZyBhcyBUWVBFX09CSkVDVDtcblxuICB3aGlsZSAoaXNTaWduYWwoZGF0ZSkpIHtcbiAgICBkYXRlID0gZGF0ZSgpO1xuICB9XG4gIHdoaWxlIChpc1NpZ25hbCh1dGMpKSB7XG4gICAgdXRjID0gdXRjKCk7XG4gIH1cbiAgd2hpbGUgKGlzU2lnbmFsKGZvcm1hdE9mRGF0ZSkpIHtcbiAgICBmb3JtYXRPZkRhdGUgPSBmb3JtYXRPZkRhdGUoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycgJiYgcGF0dGVybkNoZWNrVGltZVVUQyAmJiBuZXcgUmVnRXhwKHBhdHRlcm5DaGVja1RpbWVVVEMsICdnaScpLnRlc3QoZGF0ZSkpIHtcbiAgICBkYXRlID0gZGF5anMoZGF0ZS5yZXBsYWNlKG5ldyBSZWdFeHAocGF0dGVybkNoZWNrVGltZVVUQywgJ2dpJyksICckMSQyJDNUJDUkNiQ3JDhaJykpLnV0YygpO1xuICB9XG5cbiAgaWYgKHV0Yykge1xuICAgIGlmIChmb3JtYXRPZkRhdGUpIHtcbiAgICAgIHJldHVybiBvdXQoZGF5anMoZGF0ZSwgZm9ybWF0T2ZEYXRlKS51dGMoKSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGVJbnB1dElzVVRDID0gKGRheWpzLmlzRGF5anMoZGF0ZSkgJiYgZGF0ZS5pc1VUQygpKSB8fCAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnICYmIChkYXRlIGFzIHN0cmluZykuaW5jbHVkZXMoJ1onKSk7XG5cbiAgICBpZiAoZGF0ZUlucHV0SXNVVEMpIHtcbiAgICAgIHJldHVybiBvdXQoZGF5anMoZGF0ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQoZGF5anMoZGF0ZSkudXRjKCkpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyAmJiAhKGRhdGUgYXMgc3RyaW5nKS5pbmNsdWRlcygnWicpICYmICEoZGF0ZSBhcyBzdHJpbmcpLmluY2x1ZGVzKCcrJykpIHtcbiAgICByZXR1cm4gb3V0KGZvcm1hdE9mRGF0ZSA/IGRheWpzLnR6KGRhdGUsIGZvcm1hdE9mRGF0ZSwgY29uZmlnLmxvY2FsZVpvbmUgfHwgdGltZVpvbmVTZXR1cCkgOiBkYXlqcy50eihkYXRlLCBjb25maWcubG9jYWxlWm9uZSB8fCB0aW1lWm9uZVNldHVwKSk7XG4gIH1cblxuICByZXR1cm4gb3V0KChmb3JtYXRPZkRhdGUgPyBkYXlqcyhkYXRlLCBmb3JtYXRPZkRhdGUpIDogZGF5anMoZGF0ZSkpLnR6KCkpO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gS2nhu4NtIHRyYSB4ZW0gaGFpIG5nw6B5IGPDsyBraMOhYyBuaGF1IGtow7RuZyAoa2jDoWMgbmfDoHkgdHJvbmcgdHXhuqduKVxuICogQHBhcmFtIGRhdGUxIG5nw6B5IHRo4bupIG5o4bqldCBj4bqnbiBzbyBzw6FuaFxuICogQHBhcmFtIGRhdGUyIG5nw6B5IHRo4bupIGhhaSBj4bqnbiBzbyBzw6FuaFxuICogQHJldHVybnMgdHJ1ZSBu4bq/dSBoYWkgbmfDoHkga2jDoWMgbmhhdSwgZmFsc2UgbuG6v3UgZ2nhu5FuZyBuaGF1IGhv4bq3YyBraMO0bmcgdGjhu4Mgc28gc8OhbmhcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGlmZmVyZW5jZURheSA9IChkYXRlMTogTm9uTnVsbGFibGVEYXRlLCBkYXRlMjogTm9uTnVsbGFibGVEYXRlKSA9PiB7XG4gIGlmIChpc0RpZmZlcmVuY2VNb250aChkYXRlMSwgZGF0ZTIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgZGF5MSA9IGdldERheWpzKHsgZGF0ZTogZGF0ZTEgfSk/LmRheSgpO1xuICBjb25zdCBkYXkyID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRlMiB9KT8uZGF5KCk7XG5cbiAgcmV0dXJuIGRheTEgIT09IGRheTI7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBLaeG7g20gdHJhIHhlbSBoYWkgbmfDoHkgY8OzIGtow6FjIHRow6FuZyBraMO0bmdcbiAqIEBwYXJhbSBkYXRlMSBuZ8OgeSB0aOG7qSBuaOG6pXQgY+G6p24gc28gc8OhbmhcbiAqIEBwYXJhbSBkYXRlMiBuZ8OgeSB0aOG7qSBoYWkgY+G6p24gc28gc8OhbmhcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgaGFpIG5nw6B5IGtow6FjIHRow6FuZywgZmFsc2UgbuG6v3UgY8O5bmcgdGjDoW5nIGhv4bq3YyBraMO0bmcgdGjhu4Mgc28gc8OhbmhcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGlmZmVyZW5jZU1vbnRoID0gKGRhdGUxOiBOb25OdWxsYWJsZURhdGUsIGRhdGUyOiBOb25OdWxsYWJsZURhdGUpID0+IHtcbiAgaWYgKGlzRGlmZmVyZW5jZVllYXIoZGF0ZTEsIGRhdGUyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IG1vbnRoMSA9IGdldERheWpzKHsgZGF0ZTogZGF0ZTEgfSk/Lm1vbnRoKCk7XG4gIGNvbnN0IG1vbnRoMiA9IGdldERheWpzKHsgZGF0ZTogZGF0ZTIgfSk/Lm1vbnRoKCk7XG5cbiAgcmV0dXJuIG1vbnRoMSAhPT0gbW9udGgyO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gS2nhu4NtIHRyYSB4ZW0gaGFpIG5nw6B5IGPDsyBraMOhYyBuxINtIGtow7RuZ1xuICogQHBhcmFtIGRhdGUxIG5nw6B5IHRo4bupIG5o4bqldCBj4bqnbiBzbyBzw6FuaFxuICogQHBhcmFtIGRhdGUyIG5nw6B5IHRo4bupIGhhaSBj4bqnbiBzbyBzw6FuaFxuICogQHJldHVybnMgdHJ1ZSBu4bq/dSBoYWkgbmfDoHkga2jDoWMgbsSDbSwgZmFsc2UgbuG6v3UgY8O5bmcgbsSDbSBob+G6t2Mga2jDtG5nIHRo4buDIHNvIHPDoW5oXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpZmZlcmVuY2VZZWFyID0gKGRhdGUxOiBOb25OdWxsYWJsZURhdGUsIGRhdGUyOiBOb25OdWxsYWJsZURhdGUpID0+IHtcbiAgY29uc3QgeWVhcjEgPSBnZXREYXlqcyh7IGRhdGU6IGRhdGUxIH0pPy55ZWFyKCk7XG4gIGNvbnN0IHllYXIyID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRlMiB9KT8ueWVhcigpO1xuXG4gIHJldHVybiB5ZWFyMSAhPT0geWVhcjI7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBM4bqleSByYSBjaHXhu5dpIHRo4budaSBnaWFuIGhp4buDbiB0aOG7iyB0aGVvIMSR4buLbmggZOG6oW5nIHbDoCBuZ8O0biBuZ+G7r1xuICogQHBhcmFtIGRhdGUgdGjhu51pIGdpYW4gY+G6p24gxJHhu4tuaCBk4bqhbmdcbiAqIEBwYXJhbSBmb3JtYXQgxJHhu4tuaCBk4bqhbmcgdGjhu51pIGdpYW4gbXXhu5FuIGzhuqV5IHJhXG4gKiBAcGFyYW0gbGFuZyBs4bqleSB0aGVvIG5nw7RuIG5n4buvXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXREYXRlID0gKGRhdGU6IGRheWpzLkNvbmZpZ1R5cGUsIGZvcm1hdE91dHB1dCA9ICdZWVlZL01NL0REIEhIOm1tJywgbGFuZz86IHN0cmluZywgZm9ybWF0SW5wdXQ/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWRhdGUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgbGFuZyA9IGxhbmcgfHwgKFV0aWxzQ2FjaGUuZ2V0TGFuZygpIGFzIHN0cmluZyk7XG4gIGlmIChmdW5jdGlvbkZvcm1hdERhdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Gb3JtYXREYXRlKGRhdGUsIGZvcm1hdE91dHB1dCwgbGFuZyk7XG4gIH1cblxuICBkYXRlID0gZ2V0RGF5anMoeyBkYXRlLCBmb3JtYXRPZkRhdGU6IGZvcm1hdElucHV0IH0pLmxvY2FsZShsYW5nKTtcbiAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICBkYXlqcy51cGRhdGVMb2NhbGUoJ3ZpJywge1xuICAgICAgbW9udGhzU2hvcnQ6ICdUaGcgMV9UaGcgMl9UaGcgM19UaGcgNF9UaGcgNV9UaGcgNl9UaGcgN19UaGcgOF9UaGcgOV9UaGcgMTBfVGhnIDExX1RoZyAxMicuc3BsaXQoJ18nKSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBkYXRlLmZvcm1hdChnZXRGb3JtYXREYXRhKGdldFR5cGVCeUZvcm1hdChmb3JtYXRPdXRwdXQpLCBsYW5nKSkgfHwgJyc7XG59O1xuXG5jb25zdCBnZXRUeXBlQnlGb3JtYXQgPSAoZm9ybWF0OiBzdHJpbmcpOiAnZG0nIHwgJ2RteScgfCAnZG15IGhtJyB8ICdteScgfCAnZG15IGhtcycgfCAnaGg6bW0nIHwgJ0hIOm1tJyB8ICdoaDptbSBBJyB8ICdISDptbSBBJyB8ICdkbXkgaG1zUycgPT4ge1xuICBpZiAoZm9ybWF0ID09PSAnZG0nIHx8IGZvcm1hdCA9PT0gJ2RteScgfHwgZm9ybWF0ID09PSAnZG15IGhtJyB8fCBmb3JtYXQgPT09ICdteScgfHwgZm9ybWF0ID09PSAnZG15IGhtcycgfHwgZm9ybWF0ID09PSAnaGg6bW0nIHx8IGZvcm1hdCA9PT0gJ0hIOm1tJyB8fCBmb3JtYXQgPT09ICdoaDptbSBBJyB8fCBmb3JtYXQgPT09ICdISDptbSBBJyB8fCBmb3JtYXQgPT09ICdkbXkgaG1zUycpIHtcbiAgICByZXR1cm4gZm9ybWF0O1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ0REL01NL1lZWVknIHx8IGZvcm1hdCA9PT0gJ1lZWVktTU0tREQnIHx8IGZvcm1hdCA9PT0gJ2RkL01NL3l5eXknIHx8IGZvcm1hdCA9PT0gJ2RkLU1NLXl5eXknIHx8IGZvcm1hdCA9PT0gJ2RkL21tL3l5eXknKSB7XG4gICAgcmV0dXJuICdkbXknO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ01NLUREJyB8fCBmb3JtYXQgPT09ICdkZC9NTScgfHwgZm9ybWF0ID09PSAnZGQvbW0nKSB7XG4gICAgcmV0dXJuICdkbSc7XG4gIH1cblxuICBpZiAoZm9ybWF0ID09PSAnTS9ZWVlZJyB8fCBmb3JtYXQgPT09ICdZWVlZLU1NJyB8fCBmb3JtYXQgPT09ICdNTS95eXl5Jykge1xuICAgIHJldHVybiAnbXknO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ1lZWVkvTU0vREQgaGg6bW06c3MnIHx8IGZvcm1hdCA9PT0gJ2RteSBobXMnIHx8IGZvcm1hdCA9PT0gJ2RkL21tL3l5eXkgaGg6bW06c3MnKSB7XG4gICAgcmV0dXJuICdkbXkgaG1zJztcbiAgfVxuXG4gIGlmKGZvcm1hdC50b0xvd2VyQ2FzZSgpID09PSAnZGQvbW0veXl5eSBoaDptbTpzczpzcycgfHwgZm9ybWF0LnRvTG93ZXJDYXNlKCkgPT09ICd5eXl5L21tL2RkIGhoOm1tOnNzOnNzJyB8fCBmb3JtYXQudG9Mb3dlckNhc2UoKSA9PT0gJ3l5eXktbW0tZGQgaGg6bW06c3M6c3MnIHx8IGZvcm1hdC50b0xvd2VyQ2FzZSgpID09PSAnZGQtbW0teXl5eSBoaDptbTpzczpzcycpe1xuICAgIHJldHVybiAnZG15IGhtc1MnO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ2hoOm1tJyB8fCBmb3JtYXQgPT09ICdISDptbScpIHtcbiAgICByZXR1cm4gJ2hoOm1tJztcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdoaDptbSBBJyB8fCBmb3JtYXQgPT09ICdISDptbSBBJykge1xuICAgIHJldHVybiAnaGg6bW0gQSc7XG4gIH1cblxuICByZXR1cm4gJ2RteSBobSc7XG59O1xuXG5jb25zdCBnZXRGb3JtYXREYXRhID0gKHR5cGU6ICdkbScgfCAnZG15JyB8ICdkbXkgaG0nIHwgJ215JyB8ICdkbXkgaG1zJyB8ICdoaDptbScgfCAnaGg6bW0gQScgfCAnSEg6bW0nIHwgJ0hIOm1tIEEnIHwgJ2RteSBobXNTJywgbGFuZzogc3RyaW5nKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2RtJzpcbiAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgIHJldHVybiAnRCBNTU0nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBEJztcblxuICAgIGNhc2UgJ2RteSc6XG4gICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICByZXR1cm4gJ0QgTU1NLCBZWVlZJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdNTU0gRCwgWVlZWSc7XG5cbiAgICBjYXNlICdkbXkgaG0nOlxuICAgICAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICAgICAgcmV0dXJuICdEIE1NTSwgWVlZWSBISDptbSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnTU1NIEQsIFlZWVkgSEg6bW0nO1xuXG4gICAgY2FzZSAnbXknOlxuICAgICAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICAgICAgcmV0dXJuICdNTU0sIFlZWVknO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBZWVlZICc7XG5cbiAgICBjYXNlICdkbXkgaG1zJzpcbiAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgIHJldHVybiAnRCBNTU0sIFlZWVkgSEg6bW06c3MnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBELCBZWVlZIEhIOm1tOnNzJztcblxuICAgIGNhc2UgJ2hoOm1tJzpcbiAgICBjYXNlICdISDptbSc6XG4gICAgICByZXR1cm4gJ0hIOm1tJztcblxuICAgIGNhc2UgJ2hoOm1tIEEnOlxuICAgIGNhc2UgJ0hIOm1tIEEnOlxuICAgICAgcmV0dXJuICdISDptbSBBJztcbiAgICBjYXNlICdkbXkgaG1zUyc6XG4gICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICByZXR1cm4gJ0QgTU1NLCBZWVlZIEhIOm1tOnNzOlNTUyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnTU1NIEQsIFlZWVkgSEg6bW06c3M6U1NTJztcbiAgfVxufTtcbiJdfQ==
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxVQUFVLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxZQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNoQyxJQUFJLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUN2QyxJQUFJLG1CQUFtQixHQUF1QixTQUFTLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsYUFBYSxFQUFFLEVBQUU7SUFDL0QsYUFBYSxHQUFHLFVBQVUsQ0FBQztJQUMzQixLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRjs7O0dBR0c7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QUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxhQUFhLENBQUM7WUFDdkIsQ0FBQztZQUVELE9BQU8sYUFBYSxDQUFDO1FBRXZCLEtBQUssUUFBUTtZQUNYLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLG1CQUFtQixDQUFDO1lBQzdCLENBQUM7WUFFRCxPQUFPLG1CQUFtQixDQUFDO1FBRTdCLEtBQUssSUFBSTtZQUNQLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1lBRUQsT0FBTyxXQUFXLENBQUM7UUFFckIsS0FBSyxTQUFTO1lBQ1osSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sc0JBQXNCLENBQUM7WUFDaEMsQ0FBQztZQUVELE9BQU8sc0JBQXNCLENBQUM7UUFFaEMsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQztRQUVqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssU0FBUztZQUNaLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssVUFBVTtZQUNiLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixPQUFPLDBCQUEwQixDQUFDO1lBQ3BDLENBQUM7WUFFRCxPQUFPLDBCQUEwQixDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2V0RGF5anNDb25maWcsIEdldERheWpzUmV0dXJuLCBOb25OdWxsYWJsZURhdGUsIFRZUEVfT0JKRUNUIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0ICdkYXlqcy9sb2NhbGUvZW4nO1xuaW1wb3J0ICdkYXlqcy9sb2NhbGUvdmknO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgbG9jYWxlRGF0YSBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YSc7XG5pbXBvcnQgdGltZXpvbmUgZnJvbSAnZGF5anMvcGx1Z2luL3RpbWV6b25lJztcbmltcG9ydCB1cGRhdGVMb2NhbGUgZnJvbSAnZGF5anMvcGx1Z2luL3VwZGF0ZUxvY2FsZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSB9IGZyb20gJy4vY2FjaGUnO1xuZGF5anMuZXh0ZW5kKGxvY2FsZURhdGEpO1xuZGF5anMuZXh0ZW5kKHVwZGF0ZUxvY2FsZSk7XG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xubGV0IHRpbWVab25lU2V0dXAgPSAnQXNpYS9Ib19DaGlfTWluaCc7XG5sZXQgcGF0dGVybkNoZWNrVGltZVVUQzogUmVnRXhwIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoaeG6v3QgbOG6rXAgbcO6aSBnaeG7nSBt4bq3YyDEkeG7i25oIGNobyBo4buHIHRo4buRbmcgKG3hurdjIMSR4buLbmggbMOgIEFzaWEvSG9fQ2hpX01pbmgpLlxuICogQHBhcmFtIGxvY2FsZVpvbmUgVMOqbiBtw7ppIGdp4budICh2w60gZOG7pTogJ0FtZXJpY2EvTmV3X1lvcmsnKVxuICovXG5leHBvcnQgY29uc3Qgc2V0RGVmYXVsdFRpbWVab25lID0gKGxvY2FsZVpvbmUgPSB0aW1lWm9uZVNldHVwKSA9PiB7XG4gIHRpbWVab25lU2V0dXAgPSBsb2NhbGVab25lO1xuICBkYXlqcy50ei5zZXREZWZhdWx0KGxvY2FsZVpvbmUpO1xufTtcblxuLyoqXG4gKiBUaGnhur90IGzhuq1wIHBhdHRlcm4gUmVnZXggxJHhu4Mgbmjhuq1uIGRp4buHbiB2w6AgY2h14bqpbiBow7NhIGPDoWMgY2h14buXaSB0aOG7nWkgZ2lhbiBVVEMgxJHhurdjIGJp4buHdC5cbiAqIEBwYXJhbSBwYXR0ZXJuIFJlZ2V4IHBhdHRlcm4gZMO5bmcgxJHhu4Mga2nhu4NtIHRyYSB2w6AgcmVwbGFjZSBjaHXhu5dpIHRo4budaSBnaWFuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRQYXR0ZXJuQ2hlY2tUaW1lVVRDID0gKHBhdHRlcm46IFJlZ0V4cCkgPT4ge1xuICBwYXR0ZXJuQ2hlY2tUaW1lVVRDID0gcGF0dGVybjtcbn07XG5cbmV4cG9ydCB0eXBlIFRZUEVfRlVOQ1RJT05fRk9STUFUX0RBVEUgPSAodGltZTogZGF5anMuQ29uZmlnVHlwZSwgZm9ybWF0T3V0cHV0OiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcpID0+IHN0cmluZztcbmxldCBmdW5jdGlvbkZvcm1hdERhdGU6IFRZUEVfRlVOQ1RJT05fRk9STUFUX0RBVEUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3VuZyBj4bqlcCBt4buZdCBow6BtIGZvcm1hdCB0w7l5IGNo4buJbmggZ2hpIMSRw6ggbMOqbiBsb2dpYyBt4bq3YyDEkeG7i25oIGPhu6dhIGZvcm1hdERhdGUuXG4gKiBAcGFyYW0gZnVuY3Rpb25DdXN0b20gSMOgbSBmb3JtYXQgdMO5eSBjaOG7iW5oXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVGdW5jdGlvbkZvcm1hdERhdGUgPSAoZnVuY3Rpb25DdXN0b206IFRZUEVfRlVOQ1RJT05fRk9STUFUX0RBVEUpID0+IHtcbiAgZnVuY3Rpb25Gb3JtYXREYXRlID0gZnVuY3Rpb25DdXN0b207XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBM4bqleSDEkeG7kWkgdMaw4bujbmcgZGF5anMgdGhlbyBjb25maWdcbiAqIEBwYXJhbSBjb25maWcgbuG6v3Uga2jDtG5nIGPDsyBjb25maWcgc+G6vSB0cuG6oyB24buBIMSR4buRaSB0xrDhu6NuZyBkYXlqcyBsw6AgdGjhu51pIGdpYW4gaGnhu4duIHThuqFpXG4gKiBAcGFyYW0gY29uZmlnLmRhdGUgdGjhu51pIGdpYW4gY+G6p24gbOG6pXlcbiAqIEBwYXJhbSBjb25maWcucmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdCB0cnVlIG7hur91IG114buRbiB0cuG6oyB24buBIMSR4buRaSB0xrDhu6NuZyBkYXlqcyBu4bq/dSBjb25maWcuZGF0ZSBraMO0bmcgY8OzXG4gKiBAcGFyYW0gY29uZmlnLnV0YyB0cnVlIG7hur91IG114buRbiBs4bqleSB0aOG7nWkgZ2lhbiBVVENcbiAqIEBwYXJhbSBjb25maWcuZm9ybWF0T2ZEYXRlIMSR4buLbmggZOG6oW5nIHRo4budaSBnaWFuIMSRYW5nIMSRxrDhu6NjIHRydXnhu4FuIHbDoG9cbiAqL1xuZXhwb3J0IGNvbnN0IGdldERheWpzID0gPEMgZXh0ZW5kcyBHZXREYXlqc0NvbmZpZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oY29uZmlnPzogQyk6IEdldERheWpzUmV0dXJuPEM+ID0+IHtcbiAgLy8gaGVscGVyIGNhc3QgxJHhu4MgdHLDoW5oIGzhurdwIGzhuqFpIGtp4buDdSDEkWnhu4F1IGtp4buHbiDhu58gY8OhYyByZXR1cm5cbiAgY29uc3Qgb3V0ID0gKHY6IHVua25vd24pID0+IHYgYXMgR2V0RGF5anNSZXR1cm48Qz47XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIG91dChkYXlqcygpLnR6KCkpO1xuICB9XG4gIGNvbmZpZy5kYXRlID0gIWNvbmZpZy5kYXRlICYmIGNvbmZpZy5yZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0ID8gZGF5anMoKS50eigpIDogY29uZmlnLmRhdGU7XG4gIGlmICh0eXBlb2YgY29uZmlnLmRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgY29uZmlnLmRhdGUgPSBkYXlqcy51bml4KGNvbmZpZy5kYXRlKTtcbiAgfVxuICBpZiAoIWNvbmZpZy5kYXRlKSB7XG4gICAgcmV0dXJuIG91dCh1bmRlZmluZWQpO1xuICB9XG4gIGxldCB7IGRhdGUsIHV0YywgZm9ybWF0T2ZEYXRlIH0gPSBjb25maWcgYXMgVFlQRV9PQkpFQ1Q7XG5cbiAgd2hpbGUgKGlzU2lnbmFsKGRhdGUpKSB7XG4gICAgZGF0ZSA9IGRhdGUoKTtcbiAgfVxuICB3aGlsZSAoaXNTaWduYWwodXRjKSkge1xuICAgIHV0YyA9IHV0YygpO1xuICB9XG4gIHdoaWxlIChpc1NpZ25hbChmb3JtYXRPZkRhdGUpKSB7XG4gICAgZm9ybWF0T2ZEYXRlID0gZm9ybWF0T2ZEYXRlKCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnICYmIHBhdHRlcm5DaGVja1RpbWVVVEMgJiYgbmV3IFJlZ0V4cChwYXR0ZXJuQ2hlY2tUaW1lVVRDLCAnZ2knKS50ZXN0KGRhdGUpKSB7XG4gICAgZGF0ZSA9IGRheWpzKGRhdGUucmVwbGFjZShuZXcgUmVnRXhwKHBhdHRlcm5DaGVja1RpbWVVVEMsICdnaScpLCAnJDEkMiQzVCQ1JDYkNyQ4WicpKS51dGMoKTtcbiAgfVxuXG4gIGlmICh1dGMpIHtcbiAgICBpZiAoZm9ybWF0T2ZEYXRlKSB7XG4gICAgICByZXR1cm4gb3V0KGRheWpzKGRhdGUsIGZvcm1hdE9mRGF0ZSkudXRjKCkpO1xuICAgIH1cbiAgICBjb25zdCBkYXRlSW5wdXRJc1VUQyA9IChkYXlqcy5pc0RheWpzKGRhdGUpICYmIGRhdGUuaXNVVEMoKSkgfHwgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyAmJiAoZGF0ZSBhcyBzdHJpbmcpLmluY2x1ZGVzKCdaJykpO1xuXG4gICAgaWYgKGRhdGVJbnB1dElzVVRDKSB7XG4gICAgICByZXR1cm4gb3V0KGRheWpzKGRhdGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0KGRheWpzKGRhdGUpLnV0YygpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycgJiYgIShkYXRlIGFzIHN0cmluZykuaW5jbHVkZXMoJ1onKSAmJiAhKGRhdGUgYXMgc3RyaW5nKS5pbmNsdWRlcygnKycpKSB7XG4gICAgcmV0dXJuIG91dChmb3JtYXRPZkRhdGUgPyBkYXlqcy50eihkYXRlLCBmb3JtYXRPZkRhdGUsIGNvbmZpZy5sb2NhbGVab25lIHx8IHRpbWVab25lU2V0dXApIDogZGF5anMudHooZGF0ZSwgY29uZmlnLmxvY2FsZVpvbmUgfHwgdGltZVpvbmVTZXR1cCkpO1xuICB9XG5cbiAgcmV0dXJuIG91dCgoZm9ybWF0T2ZEYXRlID8gZGF5anMoZGF0ZSwgZm9ybWF0T2ZEYXRlKSA6IGRheWpzKGRhdGUpKS50eigpKTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEtp4buDbSB0cmEgeGVtIGhhaSBuZ8OgeSBjw7Mga2jDoWMgbmhhdSBraMO0bmcgKGtow6FjIG5nw6B5IHRyb25nIHR14bqnbilcbiAqIEBwYXJhbSBkYXRlMSBuZ8OgeSB0aOG7qSBuaOG6pXQgY+G6p24gc28gc8OhbmhcbiAqIEBwYXJhbSBkYXRlMiBuZ8OgeSB0aOG7qSBoYWkgY+G6p24gc28gc8OhbmhcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgaGFpIG5nw6B5IGtow6FjIG5oYXUsIGZhbHNlIG7hur91IGdp4buRbmcgbmhhdSBob+G6t2Mga2jDtG5nIHRo4buDIHNvIHPDoW5oXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpZmZlcmVuY2VEYXkgPSAoZGF0ZTE6IE5vbk51bGxhYmxlRGF0ZSwgZGF0ZTI6IE5vbk51bGxhYmxlRGF0ZSkgPT4ge1xuICBpZiAoaXNEaWZmZXJlbmNlTW9udGgoZGF0ZTEsIGRhdGUyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGRheTEgPSBnZXREYXlqcyh7IGRhdGU6IGRhdGUxIH0pPy5kYXkoKTtcbiAgY29uc3QgZGF5MiA9IGdldERheWpzKHsgZGF0ZTogZGF0ZTIgfSk/LmRheSgpO1xuXG4gIHJldHVybiBkYXkxICE9PSBkYXkyO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gS2nhu4NtIHRyYSB4ZW0gaGFpIG5nw6B5IGPDsyBraMOhYyB0aMOhbmcga2jDtG5nXG4gKiBAcGFyYW0gZGF0ZTEgbmfDoHkgdGjhu6kgbmjhuqV0IGPhuqduIHNvIHPDoW5oXG4gKiBAcGFyYW0gZGF0ZTIgbmfDoHkgdGjhu6kgaGFpIGPhuqduIHNvIHPDoW5oXG4gKiBAcmV0dXJucyB0cnVlIG7hur91IGhhaSBuZ8OgeSBraMOhYyB0aMOhbmcsIGZhbHNlIG7hur91IGPDuW5nIHRow6FuZyBob+G6t2Mga2jDtG5nIHRo4buDIHNvIHPDoW5oXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpZmZlcmVuY2VNb250aCA9IChkYXRlMTogTm9uTnVsbGFibGVEYXRlLCBkYXRlMjogTm9uTnVsbGFibGVEYXRlKSA9PiB7XG4gIGlmIChpc0RpZmZlcmVuY2VZZWFyKGRhdGUxLCBkYXRlMikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBtb250aDEgPSBnZXREYXlqcyh7IGRhdGU6IGRhdGUxIH0pPy5tb250aCgpO1xuICBjb25zdCBtb250aDIgPSBnZXREYXlqcyh7IGRhdGU6IGRhdGUyIH0pPy5tb250aCgpO1xuXG4gIHJldHVybiBtb250aDEgIT09IG1vbnRoMjtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEtp4buDbSB0cmEgeGVtIGhhaSBuZ8OgeSBjw7Mga2jDoWMgbsSDbSBraMO0bmdcbiAqIEBwYXJhbSBkYXRlMSBuZ8OgeSB0aOG7qSBuaOG6pXQgY+G6p24gc28gc8OhbmhcbiAqIEBwYXJhbSBkYXRlMiBuZ8OgeSB0aOG7qSBoYWkgY+G6p24gc28gc8OhbmhcbiAqIEByZXR1cm5zIHRydWUgbuG6v3UgaGFpIG5nw6B5IGtow6FjIG7Eg20sIGZhbHNlIG7hur91IGPDuW5nIG7Eg20gaG/hurdjIGtow7RuZyB0aOG7gyBzbyBzw6FuaFxuICovXG5leHBvcnQgY29uc3QgaXNEaWZmZXJlbmNlWWVhciA9IChkYXRlMTogTm9uTnVsbGFibGVEYXRlLCBkYXRlMjogTm9uTnVsbGFibGVEYXRlKSA9PiB7XG4gIGNvbnN0IHllYXIxID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRlMSB9KT8ueWVhcigpO1xuICBjb25zdCB5ZWFyMiA9IGdldERheWpzKHsgZGF0ZTogZGF0ZTIgfSk/LnllYXIoKTtcblxuICByZXR1cm4geWVhcjEgIT09IHllYXIyO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTOG6pXkgcmEgY2h14buXaSB0aOG7nWkgZ2lhbiBoaeG7g24gdGjhu4sgdGhlbyDEkeG7i25oIGThuqFuZyB2w6AgbmfDtG4gbmfhu69cbiAqIEBwYXJhbSBkYXRlIHRo4budaSBnaWFuIGPhuqduIMSR4buLbmggZOG6oW5nXG4gKiBAcGFyYW0gZm9ybWF0IMSR4buLbmggZOG6oW5nIHRo4budaSBnaWFuIG114buRbiBs4bqleSByYVxuICogQHBhcmFtIGxhbmcgbOG6pXkgdGhlbyBuZ8O0biBuZ+G7r1xuICovXG5leHBvcnQgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlOiBkYXlqcy5Db25maWdUeXBlLCBmb3JtYXRPdXRwdXQgPSAnWVlZWS9NTS9ERCBISDptbScsIGxhbmc/OiBzdHJpbmcsIGZvcm1hdElucHV0Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGxhbmcgPSBsYW5nIHx8IChVdGlsc0NhY2hlLmdldExhbmcoKSBhcyBzdHJpbmcpO1xuICBpZiAoZnVuY3Rpb25Gb3JtYXREYXRlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uRm9ybWF0RGF0ZShkYXRlLCBmb3JtYXRPdXRwdXQsIGxhbmcpO1xuICB9XG5cbiAgZGF0ZSA9IGdldERheWpzKHsgZGF0ZSwgZm9ybWF0T2ZEYXRlOiBmb3JtYXRJbnB1dCB9KS5sb2NhbGUobGFuZyk7XG4gIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgZGF5anMudXBkYXRlTG9jYWxlKCd2aScsIHtcbiAgICAgIG1vbnRoc1Nob3J0OiAnVGhnIDFfVGhnIDJfVGhnIDNfVGhnIDRfVGhnIDVfVGhnIDZfVGhnIDdfVGhnIDhfVGhnIDlfVGhnIDEwX1RoZyAxMV9UaGcgMTInLnNwbGl0KCdfJyksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGF0ZS5mb3JtYXQoZ2V0Rm9ybWF0RGF0YShnZXRUeXBlQnlGb3JtYXQoZm9ybWF0T3V0cHV0KSwgbGFuZykpIHx8ICcnO1xufTtcblxuY29uc3QgZ2V0VHlwZUJ5Rm9ybWF0ID0gKGZvcm1hdDogc3RyaW5nKTogJ2RtJyB8ICdkbXknIHwgJ2RteSBobScgfCAnbXknIHwgJ2RteSBobXMnIHwgJ2hoOm1tJyB8ICdISDptbScgfCAnaGg6bW0gQScgfCAnSEg6bW0gQScgfCAnZG15IGhtc1MnID0+IHtcbiAgaWYgKGZvcm1hdCA9PT0gJ2RtJyB8fCBmb3JtYXQgPT09ICdkbXknIHx8IGZvcm1hdCA9PT0gJ2RteSBobScgfHwgZm9ybWF0ID09PSAnbXknIHx8IGZvcm1hdCA9PT0gJ2RteSBobXMnIHx8IGZvcm1hdCA9PT0gJ2hoOm1tJyB8fCBmb3JtYXQgPT09ICdISDptbScgfHwgZm9ybWF0ID09PSAnaGg6bW0gQScgfHwgZm9ybWF0ID09PSAnSEg6bW0gQScgfHwgZm9ybWF0ID09PSAnZG15IGhtc1MnKSB7XG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdERC9NTS9ZWVlZJyB8fCBmb3JtYXQgPT09ICdZWVlZLU1NLUREJyB8fCBmb3JtYXQgPT09ICdkZC9NTS95eXl5JyB8fCBmb3JtYXQgPT09ICdkZC1NTS15eXl5JyB8fCBmb3JtYXQgPT09ICdkZC9tbS95eXl5Jykge1xuICAgIHJldHVybiAnZG15JztcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdNTS1ERCcgfHwgZm9ybWF0ID09PSAnZGQvTU0nIHx8IGZvcm1hdCA9PT0gJ2RkL21tJykge1xuICAgIHJldHVybiAnZG0nO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ00vWVlZWScgfHwgZm9ybWF0ID09PSAnWVlZWS1NTScgfHwgZm9ybWF0ID09PSAnTU0veXl5eScpIHtcbiAgICByZXR1cm4gJ215JztcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdZWVlZL01NL0REIGhoOm1tOnNzJyB8fCBmb3JtYXQgPT09ICdkbXkgaG1zJyB8fCBmb3JtYXQgPT09ICdkZC9tbS95eXl5IGhoOm1tOnNzJykge1xuICAgIHJldHVybiAnZG15IGhtcyc7XG4gIH1cblxuICBpZiAoZm9ybWF0LnRvTG93ZXJDYXNlKCkgPT09ICdkZC9tbS95eXl5IGhoOm1tOnNzOnNzJyB8fCBmb3JtYXQudG9Mb3dlckNhc2UoKSA9PT0gJ3l5eXkvbW0vZGQgaGg6bW06c3M6c3MnIHx8IGZvcm1hdC50b0xvd2VyQ2FzZSgpID09PSAneXl5eS1tbS1kZCBoaDptbTpzczpzcycgfHwgZm9ybWF0LnRvTG93ZXJDYXNlKCkgPT09ICdkZC1tbS15eXl5IGhoOm1tOnNzOnNzJykge1xuICAgIHJldHVybiAnZG15IGhtc1MnO1xuICB9XG5cbiAgaWYgKGZvcm1hdCA9PT0gJ2hoOm1tJyB8fCBmb3JtYXQgPT09ICdISDptbScpIHtcbiAgICByZXR1cm4gJ2hoOm1tJztcbiAgfVxuXG4gIGlmIChmb3JtYXQgPT09ICdoaDptbSBBJyB8fCBmb3JtYXQgPT09ICdISDptbSBBJykge1xuICAgIHJldHVybiAnaGg6bW0gQSc7XG4gIH1cblxuICByZXR1cm4gJ2RteSBobSc7XG59O1xuXG5jb25zdCBnZXRGb3JtYXREYXRhID0gKHR5cGU6ICdkbScgfCAnZG15JyB8ICdkbXkgaG0nIHwgJ215JyB8ICdkbXkgaG1zJyB8ICdoaDptbScgfCAnaGg6bW0gQScgfCAnSEg6bW0nIHwgJ0hIOm1tIEEnIHwgJ2RteSBobXNTJywgbGFuZzogc3RyaW5nKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2RtJzpcbiAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgIHJldHVybiAnRCBNTU0nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBEJztcblxuICAgIGNhc2UgJ2RteSc6XG4gICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICByZXR1cm4gJ0QgTU1NLCBZWVlZJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdNTU0gRCwgWVlZWSc7XG5cbiAgICBjYXNlICdkbXkgaG0nOlxuICAgICAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICAgICAgcmV0dXJuICdEIE1NTSwgWVlZWSBISDptbSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnTU1NIEQsIFlZWVkgSEg6bW0nO1xuXG4gICAgY2FzZSAnbXknOlxuICAgICAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICAgICAgcmV0dXJuICdNTU0sIFlZWVknO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBZWVlZICc7XG5cbiAgICBjYXNlICdkbXkgaG1zJzpcbiAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgIHJldHVybiAnRCBNTU0sIFlZWVkgSEg6bW06c3MnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ01NTSBELCBZWVlZIEhIOm1tOnNzJztcblxuICAgIGNhc2UgJ2hoOm1tJzpcbiAgICBjYXNlICdISDptbSc6XG4gICAgICByZXR1cm4gJ0hIOm1tJztcblxuICAgIGNhc2UgJ2hoOm1tIEEnOlxuICAgIGNhc2UgJ0hIOm1tIEEnOlxuICAgICAgcmV0dXJuICdISDptbSBBJztcbiAgICBjYXNlICdkbXkgaG1zUyc6XG4gICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICByZXR1cm4gJ0QgTU1NLCBZWVlZIEhIOm1tOnNzOlNTUyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnTU1NIEQsIFlZWVkgSEg6bW06c3M6U1NTJztcbiAgfVxufTtcbiJdfQ==
|