@gnwebsoft/ui 3.0.7 → 3.0.9
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/dist/AsyncSelectPayload-B9-6l33R.d.cts +10 -0
- package/dist/AsyncSelectPayload-B9-6l33R.d.ts +10 -0
- package/dist/chunk-3OPVOWQK.js +140 -0
- package/dist/chunk-AEOF2TUF.cjs +2273 -0
- package/dist/chunk-ALHC7RLK.js +575 -0
- package/dist/chunk-BRRLB22L.js +72 -0
- package/dist/chunk-CHZU4PZB.js +2273 -0
- package/dist/chunk-EBRUE2WR.cjs +1 -1
- package/dist/chunk-HEHPKM4B.cjs +140 -0
- package/dist/chunk-K2EJ4YKO.cjs +72 -0
- package/dist/chunk-MVPLBJRK.cjs +1 -1
- package/dist/chunk-XY4U6A77.cjs +575 -0
- package/dist/components/index.cjs +1 -1
- package/dist/{enhanced-z-I7EHVS.d.cts → enhanced-CDTkKUlj.d.ts} +5 -5
- package/dist/{enhanced-z-I7EHVS.d.ts → enhanced-ZQoS03Cd.d.cts} +5 -5
- package/dist/events-BcHVCLBz.d.cts +77 -0
- package/dist/events-BcHVCLBz.d.ts +77 -0
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.d.cts +3 -2
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +67 -6
- package/dist/index.d.cts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +65 -4
- package/dist/types/index.cjs +31 -2
- package/dist/types/index.d.cts +589 -10
- package/dist/types/index.d.ts +589 -10
- package/dist/types/index.js +30 -1
- package/dist/utils/index.cjs +37 -3
- package/dist/utils/index.d.cts +330 -13
- package/dist/utils/index.d.ts +330 -13
- package/dist/utils/index.js +35 -1
- package/dist/wrappers/index.cjs +4 -4
- package/dist/wrappers/index.d.cts +41 -19
- package/dist/wrappers/index.d.ts +41 -19
- package/dist/wrappers/index.js +2 -2
- package/package.json +15 -14
- package/dist/chunk-4H3AFH7A.js +0 -505
- package/dist/chunk-55VNGODF.cjs +0 -2265
- package/dist/chunk-BWC3LJIB.js +0 -2265
- package/dist/chunk-DE62KYFK.js +0 -122
- package/dist/chunk-DEPJRTVT.js +0 -1
- package/dist/chunk-FD57PCAC.cjs +0 -1
- package/dist/chunk-R2YK4LTT.cjs +0 -122
- package/dist/chunk-ZC7FGYL2.cjs +0 -505
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface AsyncSelectPayload {
|
|
2
|
+
query: string | null;
|
|
3
|
+
initialValue?: string | number | null;
|
|
4
|
+
}
|
|
5
|
+
interface AsyncSelectMultiPayload {
|
|
6
|
+
query: string | null;
|
|
7
|
+
initialValues?: string[] | number[] | null;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type { AsyncSelectPayload as A, AsyncSelectMultiPayload as a };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface AsyncSelectPayload {
|
|
2
|
+
query: string | null;
|
|
3
|
+
initialValue?: string | number | null;
|
|
4
|
+
}
|
|
5
|
+
interface AsyncSelectMultiPayload {
|
|
6
|
+
query: string | null;
|
|
7
|
+
initialValues?: string[] | number[] | null;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type { AsyncSelectPayload as A, AsyncSelectMultiPayload as a };
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// src/hooks/useTransform/index.ts
|
|
2
|
+
function useTransform(options) {
|
|
3
|
+
const value = typeof options.transform?.input === "function" ? options.transform.input(options.value) : options.value;
|
|
4
|
+
const onChange = (eventOrValue, value2) => {
|
|
5
|
+
if (typeof options.transform?.output === "function") {
|
|
6
|
+
options.onChange(options.transform.output(eventOrValue, value2));
|
|
7
|
+
} else {
|
|
8
|
+
options.onChange(eventOrValue);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
value,
|
|
13
|
+
onChange
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// src/hooks/useTransform/enhanced.ts
|
|
18
|
+
import { useCallback, useMemo } from "react";
|
|
19
|
+
var transformFactories = {
|
|
20
|
+
number: () => ({
|
|
21
|
+
input: (value) => {
|
|
22
|
+
if (value == null) return "";
|
|
23
|
+
return String(value);
|
|
24
|
+
},
|
|
25
|
+
output: (eventOrValue, _value) => {
|
|
26
|
+
let rawValue;
|
|
27
|
+
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
28
|
+
rawValue = String(eventOrValue.target.value);
|
|
29
|
+
} else {
|
|
30
|
+
rawValue = String(eventOrValue);
|
|
31
|
+
}
|
|
32
|
+
if (rawValue === "") return null;
|
|
33
|
+
const numValue = Number(rawValue);
|
|
34
|
+
return isNaN(numValue) ? null : numValue;
|
|
35
|
+
}
|
|
36
|
+
}),
|
|
37
|
+
text: () => ({
|
|
38
|
+
input: (value) => {
|
|
39
|
+
return value ?? "";
|
|
40
|
+
},
|
|
41
|
+
output: (eventOrValue, _value) => {
|
|
42
|
+
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
43
|
+
return eventOrValue.target.value;
|
|
44
|
+
}
|
|
45
|
+
return eventOrValue;
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
48
|
+
select: () => ({
|
|
49
|
+
input: (value) => {
|
|
50
|
+
return value ?? "";
|
|
51
|
+
},
|
|
52
|
+
output: (eventOrValue, value) => {
|
|
53
|
+
if (value !== void 0) {
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
57
|
+
return eventOrValue.target.value;
|
|
58
|
+
}
|
|
59
|
+
return eventOrValue;
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
};
|
|
63
|
+
function getBuiltInTransform(fieldType) {
|
|
64
|
+
switch (fieldType) {
|
|
65
|
+
case "number":
|
|
66
|
+
return transformFactories.number();
|
|
67
|
+
case "text":
|
|
68
|
+
return transformFactories.text();
|
|
69
|
+
case "select":
|
|
70
|
+
case "radio":
|
|
71
|
+
return transformFactories.select();
|
|
72
|
+
default:
|
|
73
|
+
return void 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function useEnhancedTransform(options) {
|
|
77
|
+
const {
|
|
78
|
+
value: fieldValue,
|
|
79
|
+
onChange: fieldOnChange,
|
|
80
|
+
transform,
|
|
81
|
+
fieldType,
|
|
82
|
+
defaultValue,
|
|
83
|
+
enableWarnings
|
|
84
|
+
} = options;
|
|
85
|
+
const builtInTransform = useMemo(
|
|
86
|
+
() => fieldType ? getBuiltInTransform(fieldType) : void 0,
|
|
87
|
+
[fieldType]
|
|
88
|
+
);
|
|
89
|
+
if (enableWarnings && process.env.NODE_ENV === "development") {
|
|
90
|
+
if (transform && fieldType) {
|
|
91
|
+
console.warn(
|
|
92
|
+
"useEnhancedTransform: Both custom transform and fieldType provided. Custom transform will take precedence."
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const transformedValue = useMemo(() => {
|
|
97
|
+
const inputTransform = transform?.input || builtInTransform?.input;
|
|
98
|
+
if (typeof inputTransform === "function") {
|
|
99
|
+
return inputTransform(fieldValue);
|
|
100
|
+
}
|
|
101
|
+
if (fieldValue == null && defaultValue !== void 0) {
|
|
102
|
+
return defaultValue;
|
|
103
|
+
}
|
|
104
|
+
return fieldValue;
|
|
105
|
+
}, [fieldValue, transform?.input, builtInTransform?.input, defaultValue]);
|
|
106
|
+
const enhancedOnChange = useCallback(
|
|
107
|
+
(eventOrValue, value) => {
|
|
108
|
+
const outputTransform = transform?.output || builtInTransform?.output;
|
|
109
|
+
if (typeof outputTransform === "function") {
|
|
110
|
+
try {
|
|
111
|
+
const transformedValue2 = outputTransform(eventOrValue, value);
|
|
112
|
+
fieldOnChange(transformedValue2);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
if (enableWarnings && process.env.NODE_ENV === "development") {
|
|
115
|
+
console.error("useEnhancedTransform: Error in output transformation:", error);
|
|
116
|
+
}
|
|
117
|
+
fieldOnChange(
|
|
118
|
+
value !== void 0 ? value : eventOrValue
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
fieldOnChange(
|
|
123
|
+
value !== void 0 ? value : eventOrValue
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
[fieldOnChange, transform?.output, builtInTransform?.output, enableWarnings]
|
|
128
|
+
);
|
|
129
|
+
return {
|
|
130
|
+
value: transformedValue,
|
|
131
|
+
onChange: enhancedOnChange
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export {
|
|
136
|
+
useTransform,
|
|
137
|
+
transformFactories,
|
|
138
|
+
useEnhancedTransform
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2hvb2tzL3VzZVRyYW5zZm9ybS9pbmRleC50cyIsICIuLi9zcmMvaG9va3MvdXNlVHJhbnNmb3JtL2VuaGFuY2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudE9yVmFsdWUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvZXZlbnRzXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rLlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zZm9ybU9wdGlvbnM8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gdW5rbm93bixcbj4ge1xuICAvKiogVGhlIGN1cnJlbnQgZmllbGQgdmFsdWUgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgdmFsdWU6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcInZhbHVlXCJdO1xuICAvKiogVGhlIG9uQ2hhbmdlIGhhbmRsZXIgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xuICAvKiogT3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zICovXG4gIHRyYW5zZm9ybT86IHtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGZpZWxkIHZhbHVlIGZvciBkaXNwbGF5IGluIHRoZSBpbnB1dFxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IGZpZWxkIHZhbHVlXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBpbnB1dD86ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBUVmFsdWU7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBpbnB1dCBldmVudCBiYWNrIHRvIHRoZSBmaWVsZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIHN0b3JlIGluIHRoZSBmb3JtXG4gICAgICovXG4gICAgb3V0cHV0PzogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZm9yIHRoZSB1c2VUcmFuc2Zvcm0gaG9vay5cbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VUcmFuc2Zvcm1SZXR1cm48XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gdW5rbm93bixcbj4ge1xuICAvKiogVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGlucHV0ICovXG4gIHZhbHVlOiBUVmFsdWU7XG4gIC8qKiBUaGUgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlciB3aXRoIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xufVxuXG4vKipcbiAqIEEgaG9vayBmb3IgdHJhbnNmb3JtaW5nIGZvcm0gZmllbGQgdmFsdWVzIGJldHdlZW4gZGlzcGxheSBhbmQgc3RvcmFnZSBmb3JtYXRzLlxuICpcbiAqIFRoaXMgaG9vayBwcm92aWRlcyBhIHdheSB0byB0cmFuc2Zvcm0gdmFsdWVzIGFzIHRoZXkgZmxvdyBiZXR3ZWVuIHRoZSBmb3JtIGZpZWxkXG4gKiBhbmQgdGhlIGRpc3BsYXkgY29tcG9uZW50LiBJdCdzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGZvcm1hdHRpbmcgZGF0YSBmb3IgZGlzcGxheVxuICogKGxpa2UgZGF0ZXMsIG51bWJlcnMsIG9yIGNvbXBsZXggb2JqZWN0cykgd2hpbGUgbWFpbnRhaW5pbmcgYSBkaWZmZXJlbnQgaW50ZXJuYWxcbiAqIHJlcHJlc2VudGF0aW9uIGluIHRoZSBmb3JtIHN0YXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBUcmFuc2Zvcm0gYSBkYXRlIGZvciBkaXNwbGF5OlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAoZGF0ZSkgPT4gZGF0ZSA/IGZvcm1hdChkYXRlLCAneXl5eS1NTS1kZCcpIDogJycsXG4gKiAgICAgb3V0cHV0OiAoZXZlbnQpID0+IG5ldyBEYXRlKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogVHJhbnNmb3JtIG51bWJlcnMgd2l0aCBmb3JtYXR0aW5nOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAobnVtKSA9PiBudW0gPyBudW0udG9Mb2NhbGVTdHJpbmcoKSA6ICcnLFxuICogICAgIG91dHB1dDogKGV2ZW50KSA9PiBwYXJzZUZsb2F0KGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSlcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyB2YWx1ZSwgb25DaGFuZ2UsIGFuZCB0cmFuc2Zvcm0gZnVuY3Rpb25zXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0cmFuc2Zvcm1lZCB2YWx1ZSBhbmQgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlclxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSB1bmtub3duLFxuPihcbiAgb3B0aW9uczogVXNlVHJhbnNmb3JtT3B0aW9uczxURmllbGRWYWx1ZXMsIFROYW1lLCBUVmFsdWU+XG4pOiBVc2VUcmFuc2Zvcm1SZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPiB7XG4gIGNvbnN0IHZhbHVlID1cbiAgICB0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0/LmlucHV0ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gb3B0aW9ucy50cmFuc2Zvcm0uaW5wdXQob3B0aW9ucy52YWx1ZSlcbiAgICAgIDogb3B0aW9ucy52YWx1ZTtcblxuICBjb25zdCBvbkNoYW5nZSA9IChcbiAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICk6IHZvaWQgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0/Lm91dHB1dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBvcHRpb25zLm9uQ2hhbmdlKG9wdGlvbnMudHJhbnNmb3JtLm91dHB1dChldmVudE9yVmFsdWUsIHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFBhc3MgdGhyb3VnaCB0aGUgZXZlbnQgb3IgdmFsdWUgZGlyZWN0bHlcbiAgICAgIG9wdGlvbnMub25DaGFuZ2UoZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPik7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVRyYW5zZm9ybTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBDaGFuZ2VFdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUge1xuICBGaWVsZFBhdGgsXG4gIEZpZWxkVmFsdWVzLFxuICBQYXRoVmFsdWUsXG4gIFVzZUNvbnRyb2xsZXJSZXR1cm4sXG59IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRPclZhbHVlLCBJbnB1dEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vdHlwZXMvZXZlbnRzXCI7XG5cbi8qKlxuICogRmllbGQgdHlwZXMgZm9yIGJ1aWx0LWluIHRyYW5zZm9ybWF0aW9uIHBhdHRlcm5zXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2RhdGUnIHwgJ3RpbWUnIHwgJ3NlbGVjdCcgfCAncmFkaW8nO1xuXG4vKipcbiAqIEVuaGFuY2VkIG9wdGlvbnMgZm9yIHRoZSB1c2VUcmFuc2Zvcm0gaG9vayB3aXRoIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnNcbiAqIGFuZCBidWlsdC1pbiBmaWVsZCB0eXBlIGhhbmRsaW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuaGFuY2VkVXNlVHJhbnNmb3JtT3B0aW9uczxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4sXG4+IHtcbiAgLyoqIFRoZSBjdXJyZW50IGZpZWxkIHZhbHVlIGZyb20gcmVhY3QtaG9vay1mb3JtICovXG4gIHZhbHVlOiBVc2VDb250cm9sbGVyUmV0dXJuPFRGaWVsZFZhbHVlcywgVE5hbWU+W1wiZmllbGRcIl1bXCJ2YWx1ZVwiXTtcbiAgLyoqIFRoZSBvbkNoYW5nZSBoYW5kbGVyIGZyb20gcmVhY3QtaG9vay1mb3JtICovXG4gIG9uQ2hhbmdlOiBVc2VDb250cm9sbGVyUmV0dXJuPFRGaWVsZFZhbHVlcywgVE5hbWU+W1wiZmllbGRcIl1bXCJvbkNoYW5nZVwiXTtcbiAgLyoqIE9wdGlvbmFsIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9ucyAqL1xuICB0cmFuc2Zvcm0/OiB7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBmaWVsZCB2YWx1ZSBmb3IgZGlzcGxheSBpbiB0aGUgaW5wdXRcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgY3VycmVudCBmaWVsZCB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0byBkaXNwbGF5XG4gICAgICovXG4gICAgaW5wdXQ/OiAodmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4gVFZhbHVlO1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSB0aGUgaW5wdXQgZXZlbnQgYmFjayB0byB0aGUgZmllbGQgdmFsdWVcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgaW5wdXQgZXZlbnQgb3IgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gc3RvcmUgaW4gdGhlIGZvcm1cbiAgICAgKi9cbiAgICBvdXRwdXQ/OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgfTtcbiAgLyoqIEJ1aWx0LWluIGZpZWxkIHR5cGUgZm9yIGF1dG9tYXRpYyB0cmFuc2Zvcm1hdGlvbiAqL1xuICBmaWVsZFR5cGU/OiBGaWVsZFR5cGU7XG4gIC8qKiBEZWZhdWx0IHZhbHVlIHRvIHVzZSB3aGVuIGZpZWxkIHZhbHVlIGlzIG51bGwvdW5kZWZpbmVkICovXG4gIGRlZmF1bHRWYWx1ZT86IFRWYWx1ZTtcbiAgLyoqIEVuYWJsZSBkZXZlbG9wbWVudCB3YXJuaW5ncyBmb3IgZGVidWdnaW5nICovXG4gIGVuYWJsZVdhcm5pbmdzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFbmhhbmNlZCByZXR1cm4gdHlwZSBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rIHdpdGggc3RhYmxlIHJlZmVyZW5jZXNcbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGUgIFxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuaGFuY2VkVXNlVHJhbnNmb3JtUmV0dXJuPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4gIFRWYWx1ZSA9IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPixcbj4ge1xuICAvKiogVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGlucHV0IChtZW1vaXplZCkgKi9cbiAgdmFsdWU6IFRWYWx1ZTtcbiAgLyoqIFRoZSBlbmhhbmNlZCBvbkNoYW5nZSBoYW5kbGVyIHdpdGggdHJhbnNmb3JtYXRpb24gYXBwbGllZCAobWVtb2l6ZWQpICovXG4gIG9uQ2hhbmdlOiBVc2VDb250cm9sbGVyUmV0dXJuPFRGaWVsZFZhbHVlcywgVE5hbWU+W1wiZmllbGRcIl1bXCJvbkNoYW5nZVwiXTtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gZmFjdG9yaWVzIGZvciBjb21tb24gZmllbGQgdHlwZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUZhY3RvcmllcyA9IHtcbiAgbnVtYmVyOiA8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4+KCkgPT4gKHtcbiAgICBpbnB1dDogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gXCJcIiBhcyBzdHJpbmc7XG5cbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH0sXG4gICAgb3V0cHV0OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgX3ZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiB7XG4gICAgICBsZXQgcmF3VmFsdWU6IHN0cmluZztcbiAgICAgIFxuICAgICAgLy8gRXh0cmFjdCBzdHJpbmcgdmFsdWUgZnJvbSBldmVudCBvciBkaXJlY3QgdmFsdWVcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgZXZlbnRPclZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICd0YXJnZXQnIGluIGV2ZW50T3JWYWx1ZSAmJlxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlLnRhcmdldCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgZXZlbnRPclZhbHVlLnRhcmdldCAhPT0gbnVsbCAmJlxuICAgICAgICAndmFsdWUnIGluIGV2ZW50T3JWYWx1ZS50YXJnZXRcbiAgICAgICkge1xuICAgICAgICByYXdWYWx1ZSA9IFN0cmluZygoZXZlbnRPclZhbHVlLnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IHVua25vd24gfSkudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmF3VmFsdWUgPSBTdHJpbmcoZXZlbnRPclZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJhd1ZhbHVlID09PSBcIlwiKSByZXR1cm4gbnVsbCBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gICAgICBjb25zdCBudW1WYWx1ZSA9IE51bWJlcihyYXdWYWx1ZSk7XG5cbiAgICAgIHJldHVybiAoaXNOYU4obnVtVmFsdWUpID8gbnVsbCA6IG51bVZhbHVlKSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gICAgfSxcbiAgfSksXG5cbiAgdGV4dDogPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzLCBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+PigpID0+ICh7XG4gICAgaW5wdXQ6ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiB7XG4gICAgICByZXR1cm4gKHZhbHVlID8/IFwiXCIpIGFzIHN0cmluZztcbiAgICB9LFxuICAgIG91dHB1dDogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIF92YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4ge1xuICAgICAgLy8gRXh0cmFjdCBzdHJpbmcgdmFsdWUgZnJvbSBldmVudCBvciBkaXJlY3QgdmFsdWVcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgZXZlbnRPclZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICd0YXJnZXQnIGluIGV2ZW50T3JWYWx1ZSAmJlxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlLnRhcmdldCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgZXZlbnRPclZhbHVlLnRhcmdldCAhPT0gbnVsbCAmJlxuICAgICAgICAndmFsdWUnIGluIGV2ZW50T3JWYWx1ZS50YXJnZXRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gKGV2ZW50T3JWYWx1ZS50YXJnZXQgYXMgdW5rbm93biBhcyB7IHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4gfSkudmFsdWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHJldHVybiBldmVudE9yVmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgIH0sXG4gIH0pLFxuXG4gIHNlbGVjdDogPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzLCBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+PigpID0+ICh7XG4gICAgaW5wdXQ6ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPz8gKFwiXCIgYXMgc3RyaW5nKTtcbiAgICB9LFxuICAgIG91dHB1dDogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiB7XG4gICAgICAvLyBNVUkgcGF0dGVybjogKGV2ZW50LCB2YWx1ZSkgd2hlcmUgdmFsdWUgaXMgdGhlIGFjdHVhbCBzZWxlY3RlZCB2YWx1ZVxuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gU3RhbmRhcmQgZXZlbnQgcGF0dGVybjogZXh0cmFjdCBmcm9tIGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgJ3RhcmdldCcgaW4gZXZlbnRPclZhbHVlICYmXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgICd2YWx1ZScgaW4gZXZlbnRPclZhbHVlLnRhcmdldFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAoZXZlbnRPclZhbHVlLnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPiB9KS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRGlyZWN0IHZhbHVlXG4gICAgICByZXR1cm4gZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICB9LFxuICB9KSxcbn0gYXMgY29uc3Q7O1xuXG4vKipcbiAqIEdldCBidWlsdC1pbiB0cmFuc2Zvcm1hdGlvbiBmb3IgYSBmaWVsZCB0eXBlXG4gKi9cbmZ1bmN0aW9uIGdldEJ1aWx0SW5UcmFuc2Zvcm08XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuPihmaWVsZFR5cGU/OiBGaWVsZFR5cGUpIHtcbiAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUZhY3Rvcmllcy5udW1iZXI8VEZpZWxkVmFsdWVzLCBUTmFtZT4oKTtcbiAgICBjYXNlICd0ZXh0JzpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1GYWN0b3JpZXMudGV4dDxURmllbGRWYWx1ZXMsIFROYW1lPigpO1xuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgY2FzZSAncmFkaW8nOlxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUZhY3Rvcmllcy5zZWxlY3Q8VEZpZWxkVmFsdWVzLCBUTmFtZT4oKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGVuaGFuY2VkIGhvb2sgZm9yIHRyYW5zZm9ybWluZyBmb3JtIGZpZWxkIHZhbHVlcyB3aXRoIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnNcbiAqIGFuZCBidWlsdC1pbiBmaWVsZCB0eXBlIGhhbmRsaW5nLlxuICpcbiAqIFRoaXMgZW5oYW5jZWQgdmVyc2lvbiBwcm92aWRlczpcbiAqIC0gUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyB3aXRoIHVzZU1lbW8gYW5kIHVzZUNhbGxiYWNrXG4gKiAtIEJ1aWx0LWluIHRyYW5zZm9ybWF0aW9ucyBmb3IgY29tbW9uIGZpZWxkIHR5cGVzXG4gKiAtIEJldHRlciBUeXBlU2NyaXB0IGluZmVyZW5jZVxuICogLSBEZXZlbG9wbWVudCB3YXJuaW5nc1xuICogLSBTdGFibGUgcmVmZXJlbmNlcyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogQmFzaWMgdXNhZ2Ugd2l0aCBidWlsdC1pbiBudW1iZXIgaGFuZGxpbmc6XG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB1c2VFbmhhbmNlZFRyYW5zZm9ybSh7XG4gKiAgIHZhbHVlOiBmaWVsZC52YWx1ZSxcbiAqICAgb25DaGFuZ2U6IGZpZWxkLm9uQ2hhbmdlLFxuICogICBmaWVsZFR5cGU6ICdudW1iZXInXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBDdXN0b20gdHJhbnNmb3JtYXRpb25zIChzYW1lIGFzIG9yaWdpbmFsKTpcbiAqIGBgYHRzeFxuICogY29uc3QgeyB2YWx1ZSwgb25DaGFuZ2UgfSA9IHVzZUVuaGFuY2VkVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAodmFsdWUpID0+IHZhbHVlPy50b1N0cmluZygpIHx8ICcnLFxuICogICAgIG91dHB1dDogKGV2ZW50KSA9PiBwYXJzZUludChldmVudC50YXJnZXQudmFsdWUpIHx8IG51bGxcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogV2l0aCBkZWZhdWx0IHZhbHVlIGFuZCB3YXJuaW5nczpcbiAqIGBgYHRzeFxuICogY29uc3QgeyB2YWx1ZSwgb25DaGFuZ2UgfSA9IHVzZUVuaGFuY2VkVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIGZpZWxkVHlwZTogJ3RleHQnLFxuICogICBkZWZhdWx0VmFsdWU6ICcnLFxuICogICBlbmFibGVXYXJuaW5nczogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCdcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlXG4gKiBAdGVtcGxhdGUgVE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0eXBlXG4gKiBAdGVtcGxhdGUgVFZhbHVlIC0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHR5cGVcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgdmFsdWUsIG9uQ2hhbmdlLCBhbmQgdHJhbnNmb3JtIGZ1bmN0aW9uc1xuICogQHJldHVybnMgT2JqZWN0IHdpdGggdHJhbnNmb3JtZWQgdmFsdWUgYW5kIGVuaGFuY2VkIG9uQ2hhbmdlIGhhbmRsZXIgKGJvdGggbWVtb2l6ZWQpXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRW5oYW5jZWRUcmFuc2Zvcm08XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+LFxuPihcbiAgb3B0aW9uczogRW5oYW5jZWRVc2VUcmFuc2Zvcm1PcHRpb25zPFRGaWVsZFZhbHVlcywgVE5hbWUsIFRWYWx1ZT5cbik6IEVuaGFuY2VkVXNlVHJhbnNmb3JtUmV0dXJuPFRGaWVsZFZhbHVlcywgVE5hbWUsIFRWYWx1ZT4ge1xuICBjb25zdCB7IFxuICAgIHZhbHVlOiBmaWVsZFZhbHVlLCBcbiAgICBvbkNoYW5nZTogZmllbGRPbkNoYW5nZSwgXG4gICAgdHJhbnNmb3JtLCBcbiAgICBmaWVsZFR5cGUsIFxuICAgIGRlZmF1bHRWYWx1ZSxcbiAgICBlbmFibGVXYXJuaW5ncyBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gR2V0IGJ1aWx0LWluIHRyYW5zZm9ybSBpZiBmaWVsZFR5cGUgaXMgc3BlY2lmaWVkXG4gIGNvbnN0IGJ1aWx0SW5UcmFuc2Zvcm0gPSB1c2VNZW1vKCgpID0+IFxuICAgIGZpZWxkVHlwZSA/IGdldEJ1aWx0SW5UcmFuc2Zvcm08VEZpZWxkVmFsdWVzLCBUTmFtZT4oZmllbGRUeXBlKSA6IHVuZGVmaW5lZCwgXG4gICAgW2ZpZWxkVHlwZV1cbiAgKTtcblxuICAvLyBEZXZlbG9wbWVudCB3YXJuaW5nc1xuICBpZiAoZW5hYmxlV2FybmluZ3MgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICBpZiAodHJhbnNmb3JtICYmIGZpZWxkVHlwZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAndXNlRW5oYW5jZWRUcmFuc2Zvcm06IEJvdGggY3VzdG9tIHRyYW5zZm9ybSBhbmQgZmllbGRUeXBlIHByb3ZpZGVkLiBDdXN0b20gdHJhbnNmb3JtIHdpbGwgdGFrZSBwcmVjZWRlbmNlLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gTWVtb2l6ZSB0aGUgdHJhbnNmb3JtZWQgZGlzcGxheSB2YWx1ZVxuICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdXNlTWVtbygoKTogVFZhbHVlID0+IHtcbiAgICBjb25zdCBpbnB1dFRyYW5zZm9ybSA9IHRyYW5zZm9ybT8uaW5wdXQgfHwgYnVpbHRJblRyYW5zZm9ybT8uaW5wdXQ7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBpbnB1dFRyYW5zZm9ybSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gaW5wdXRUcmFuc2Zvcm0oZmllbGRWYWx1ZSkgYXMgVFZhbHVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBGYWxsYmFjayB3aXRoIGRlZmF1bHQgdmFsdWUgc3VwcG9ydFxuICAgIGlmIChmaWVsZFZhbHVlID09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmaWVsZFZhbHVlIGFzIFRWYWx1ZTtcbiAgfSwgW2ZpZWxkVmFsdWUsIHRyYW5zZm9ybT8uaW5wdXQsIGJ1aWx0SW5UcmFuc2Zvcm0/LmlucHV0LCBkZWZhdWx0VmFsdWVdKTtcblxuICAvLyBNZW1vaXplIHRoZSBlbmhhbmNlZCBvbkNoYW5nZSBoYW5kbGVyXG4gIGNvbnN0IGVuaGFuY2VkT25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dFRyYW5zZm9ybSA9IHRyYW5zZm9ybT8ub3V0cHV0IHx8IGJ1aWx0SW5UcmFuc2Zvcm0/Lm91dHB1dDtcbiAgICAgIFxuICAgICAgaWYgKHR5cGVvZiBvdXRwdXRUcmFuc2Zvcm0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEhhbmRsZSBib3RoIHNpZ25hdHVyZXM6IG9sZCAoZXZlbnQgb25seSkgYW5kIG5ldyAoZXZlbnQsIHZhbHVlKVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSAob3V0cHV0VHJhbnNmb3JtIGFzIChlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+Piwgdj86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KShldmVudE9yVmFsdWUsIHZhbHVlKTtcblxuICAgICAgICAgIGZpZWxkT25DaGFuZ2UodHJhbnNmb3JtZWRWYWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVuYWJsZVdhcm5pbmdzICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCd1c2VFbmhhbmNlZFRyYW5zZm9ybTogRXJyb3IgaW4gb3V0cHV0IHRyYW5zZm9ybWF0aW9uOicsIGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBkaXJlY3QgdmFsdWUgb3IgZmlyc3QgYXJndW1lbnRcbiAgICAgICAgICBmaWVsZE9uQ2hhbmdlKFxuICAgICAgICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCBcbiAgICAgICAgICAgICAgPyB2YWx1ZSBcbiAgICAgICAgICAgICAgOiBldmVudE9yVmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gdHJhbnNmb3JtLCBwYXNzIHRocm91Z2ggdGhlIHZhbHVlIG9yIGV2ZW50XG4gICAgICAgIGZpZWxkT25DaGFuZ2UoXG4gICAgICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCBcbiAgICAgICAgICAgID8gdmFsdWUgXG4gICAgICAgICAgICA6IGV2ZW50T3JWYWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmaWVsZE9uQ2hhbmdlLCB0cmFuc2Zvcm0/Lm91dHB1dCwgYnVpbHRJblRyYW5zZm9ybT8ub3V0cHV0LCBlbmFibGVXYXJuaW5nc11cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiB0cmFuc2Zvcm1lZFZhbHVlLFxuICAgIG9uQ2hhbmdlOiBlbmhhbmNlZE9uQ2hhbmdlLFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZFRyYW5zZm9ybTsiXSwKICAibWFwcGluZ3MiOiAiO0FBNkdPLFNBQVMsYUFLZCxTQUNpRDtBQUNqRCxRQUFNLFFBQ0osT0FBTyxRQUFRLFdBQVcsVUFBVSxhQUNoQyxRQUFRLFVBQVUsTUFBTSxRQUFRLEtBQUssSUFDckMsUUFBUTtBQUVkLFFBQU0sV0FBVyxDQUNmLGNBQ0FBLFdBQ1M7QUFDVCxRQUFJLE9BQU8sUUFBUSxXQUFXLFdBQVcsWUFBWTtBQUNuRCxjQUFRLFNBQVMsUUFBUSxVQUFVLE9BQU8sY0FBY0EsTUFBSyxDQUFDO0FBQUEsSUFDaEUsT0FBTztBQUVMLGNBQVEsU0FBUyxZ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
|