@onepercentio/one-ui 0.29.9 → 1.0.1
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/components/AdaptiveDialog/AdaptiveDialog.d.ts +2 -1
- package/dist/components/AdaptiveDialog/AdaptiveDialog.js +1 -1
- package/dist/components/Button/Button.d.ts +3 -2
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/EmailInput/EmailInput.d.ts +0 -1
- package/dist/components/Form/Form.d.ts +15 -49
- package/dist/components/Form/{v2/Form.hook.d.ts → Form.hook.d.ts} +1 -1
- package/dist/components/Form/Form.hook.js +233 -0
- package/dist/components/Form/Form.js +67 -123
- package/{dist-ts/components/Form/v2 → dist/components/Form}/Form.types.d.ts +1 -0
- package/dist/components/Form/Form.types.js +40 -0
- package/{dist-ts/components/Form/v2 → dist/components/Form}/FormField/Extensions/DateField/DateField.d.ts +3 -1
- package/dist/components/Form/FormField/Extensions/DateField/DateField.js +71 -0
- package/dist/components/Form/FormField/Extensions/DateField/index.js +26 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +90 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/index.js +26 -0
- package/dist/components/Form/FormField/FormField.js +276 -0
- package/{dist-ts/components/Form/v2 → dist/components/Form}/FormField/FormField.types.d.ts +8 -6
- package/dist/components/Form/FormField/FormField.types.js +12 -0
- package/dist/components/Form/FormField/index.js +26 -0
- package/dist/components/Form/index.js +1 -1
- package/dist/components/Input/Input.d.ts +0 -6
- package/dist/components/Input/Input.js +9 -20
- package/dist/components/Input/Input.module.scss +0 -32
- package/dist/components/LinkToId/LinkToId.d.ts +3 -2
- package/dist/components/LinkToId/LinkToId.js +1 -1
- package/dist/components/PasswordInput/PasswordInput.d.ts +0 -1
- package/dist/components/Radio/Radio.d.ts +1 -0
- package/dist/components/Radio/Radio.js +2 -1
- package/dist/components/SectionContainer/SectionContainer.js +1 -1
- package/dist/components/Select/Select.js +1 -2
- package/dist/components/Spacing/Spacing.d.ts +2 -1
- package/dist/components/Spacing/Spacing.js +1 -1
- package/dist/components/Tabs/Tabs.js +5 -3
- package/dist/components/Text/Text.d.ts +5 -4
- package/dist/components/Text/Text.js +2 -2
- package/dist/components/Text/Text.module.scss +3 -71
- package/dist/context/AsyncProcess.d.ts +5 -4
- package/dist/context/AsyncProcess.js +1 -1
- package/dist/context/OneUIProvider.d.ts +37 -22
- package/dist/context/OneUIProvider.js +1 -1
- package/dist/hooks/useHero.js +6 -2
- package/dist/hooks/useShortIntl.d.ts +2 -1
- package/dist/hooks/useShortIntl.js +1 -1
- package/dist/index.d.ts +7 -10
- package/dist/index.js +154 -180
- package/dist/index.preprocess.js +4 -3
- package/dist/type-utils.d.ts +11 -1
- package/dist/type-utils.js +1 -1
- package/dist/utility.d.js +1 -17
- package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.d.ts +2 -1
- package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.js.map +1 -1
- package/dist-ts/components/Button/Button.d.ts +3 -2
- package/dist-ts/components/Button/Button.js.map +1 -1
- package/dist-ts/components/EmailInput/EmailInput.d.ts +0 -1
- package/dist-ts/components/Form/Form.d.ts +15 -49
- package/dist-ts/components/Form/{v2/Form.hook.d.ts → Form.hook.d.ts} +1 -1
- package/dist-ts/components/Form/{v2/Form.hook.js → Form.hook.js} +9 -5
- package/dist-ts/components/Form/Form.hook.js.map +1 -0
- package/dist-ts/components/Form/Form.js +37 -66
- package/dist-ts/components/Form/Form.js.map +1 -1
- package/{dist/components/Form/v2 → dist-ts/components/Form}/Form.types.d.ts +1 -0
- package/dist-ts/components/Form/Form.types.js.map +1 -0
- package/{dist/components/Form/v2 → dist-ts/components/Form}/FormField/Extensions/DateField/DateField.d.ts +3 -1
- package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/DateField/DateField.js +6 -6
- package/dist-ts/components/Form/FormField/Extensions/DateField/DateField.js.map +1 -0
- package/dist-ts/components/Form/FormField/Extensions/DateField/index.js.map +1 -0
- package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/PhoneField.js +4 -4
- package/dist-ts/components/Form/FormField/Extensions/PhoneField/PhoneField.js.map +1 -0
- package/dist-ts/components/Form/FormField/Extensions/PhoneField/index.js.map +1 -0
- package/dist-ts/components/Form/{v2/FormField → FormField}/FormField.js +15 -16
- package/dist-ts/components/Form/FormField/FormField.js.map +1 -0
- package/{dist/components/Form/v2 → dist-ts/components/Form}/FormField/FormField.types.d.ts +8 -6
- package/dist-ts/components/Form/FormField/FormField.types.js.map +1 -0
- package/dist-ts/components/Form/FormField/index.js.map +1 -0
- package/dist-ts/components/Form/index.js.map +1 -1
- package/dist-ts/components/Input/Input.d.ts +0 -6
- package/dist-ts/components/Input/Input.js +4 -15
- package/dist-ts/components/Input/Input.js.map +1 -1
- package/dist-ts/components/Input/Input.module.scss +0 -32
- package/dist-ts/components/LinkToId/LinkToId.d.ts +3 -2
- package/dist-ts/components/LinkToId/LinkToId.js.map +1 -1
- package/dist-ts/components/PasswordInput/PasswordInput.d.ts +0 -1
- package/dist-ts/components/Radio/Radio.d.ts +1 -0
- package/dist-ts/components/Radio/Radio.js +1 -1
- package/dist-ts/components/Radio/Radio.js.map +1 -1
- package/dist-ts/components/SectionContainer/SectionContainer.js.map +1 -1
- package/dist-ts/components/Select/Select.js +1 -1
- package/dist-ts/components/Select/Select.js.map +1 -1
- package/dist-ts/components/Spacing/Spacing.d.ts +2 -1
- package/dist-ts/components/Spacing/Spacing.js.map +1 -1
- package/dist-ts/components/Tabs/Tabs.js +4 -2
- package/dist-ts/components/Tabs/Tabs.js.map +1 -1
- package/dist-ts/components/Text/Text.d.ts +5 -4
- package/dist-ts/components/Text/Text.js +1 -1
- package/dist-ts/components/Text/Text.js.map +1 -1
- package/dist-ts/components/Text/Text.module.scss +3 -71
- package/dist-ts/context/AsyncProcess.d.ts +5 -4
- package/dist-ts/context/AsyncProcess.js.map +1 -1
- package/dist-ts/context/OneUIProvider.d.ts +37 -22
- package/dist-ts/context/OneUIProvider.js.map +1 -1
- package/dist-ts/hooks/useHero.js +3 -1
- package/dist-ts/hooks/useHero.js.map +1 -1
- package/dist-ts/hooks/useShortIntl.d.ts +2 -1
- package/dist-ts/hooks/useShortIntl.js.map +1 -1
- package/dist-ts/index.d.ts +7 -10
- package/dist-ts/index.js +7 -10
- package/dist-ts/index.js.map +1 -1
- package/dist-ts/index.preprocess.js +16 -12
- package/dist-ts/index.preprocess.js.map +1 -1
- package/dist-ts/type-utils.d.ts +11 -1
- package/package.json +9 -6
- package/tsconfig.prod.json +1 -0
- package/dist/components/Form/v2/Form.d.ts +0 -18
- package/dist/components/Form/v2/Form.hook.js +0 -230
- package/dist/components/Form/v2/Form.js +0 -63
- package/dist/components/Form/v2/Form.types.js +0 -40
- package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +0 -68
- package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +0 -26
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +0 -90
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +0 -26
- package/dist/components/Form/v2/FormField/FormField.js +0 -281
- package/dist/components/Form/v2/FormField/FormField.module.scss +0 -0
- package/dist/components/Form/v2/FormField/FormField.types.js +0 -12
- package/dist/components/Form/v2/FormField/index.js +0 -26
- package/dist/components/Form/v2/index.d.ts +0 -2
- package/dist/components/Form/v2/index.js +0 -26
- package/dist/hooks/useForm.d.ts +0 -16
- package/dist/hooks/useForm.js +0 -38
- package/dist/test.d.ts +0 -0
- package/dist/test.js +0 -2
- package/dist-ts/components/Form/v2/Form.d.ts +0 -18
- package/dist-ts/components/Form/v2/Form.hook.js.map +0 -1
- package/dist-ts/components/Form/v2/Form.js +0 -31
- package/dist-ts/components/Form/v2/Form.js.map +0 -1
- package/dist-ts/components/Form/v2/Form.types.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/Extensions/DateField/DateField.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/Extensions/DateField/index.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/Extensions/PhoneField/index.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/FormField.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/FormField.module.scss +0 -0
- package/dist-ts/components/Form/v2/FormField/FormField.types.js.map +0 -1
- package/dist-ts/components/Form/v2/FormField/index.js.map +0 -1
- package/dist-ts/components/Form/v2/index.d.ts +0 -2
- package/dist-ts/components/Form/v2/index.js +0 -3
- package/dist-ts/components/Form/v2/index.js.map +0 -1
- package/dist-ts/hooks/useForm.d.ts +0 -16
- package/dist-ts/hooks/useForm.js +0 -27
- package/dist-ts/hooks/useForm.js.map +0 -1
- package/dist-ts/test.d.ts +0 -0
- package/dist-ts/test.js +0 -2
- package/dist-ts/test.js.map +0 -1
- /package/dist/components/Form/{v2/Form.module.scss → Form.module.scss} +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/Extensions/DateField/DateField.module.scss +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/Extensions/DateField/index.d.ts +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/PhoneField.d.ts +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/PhoneField.module.scss +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/index.d.ts +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/FormField.d.ts +0 -0
- /package/dist/components/Form/{v2/FormField → FormField}/index.d.ts +0 -0
- /package/dist-ts/components/Form/{v2/Form.module.scss → Form.module.scss} +0 -0
- /package/dist-ts/components/Form/{v2/Form.types.js → Form.types.js} +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/DateField/DateField.module.scss +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/DateField/index.d.ts +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/DateField/index.js +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/PhoneField.d.ts +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/PhoneField.module.scss +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/index.d.ts +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/Extensions/PhoneField/index.js +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/FormField.d.ts +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/FormField.types.js +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/index.d.ts +0 -0
- /package/dist-ts/components/Form/{v2/FormField → FormField}/index.js +0 -0
|
@@ -1,59 +1,65 @@
|
|
|
1
1
|
import { JSX } from "react";
|
|
2
2
|
import { Get } from "type-fest";
|
|
3
|
-
import React, { ComponentProps, ReactElement } from "react";
|
|
3
|
+
import React, { ComponentProps, ReactElement, ReactNode } from "react";
|
|
4
4
|
import { PropsWithChildren } from "react";
|
|
5
5
|
import { ImageScales } from "@muritavo/webpack-microfrontend-scripts/bin/types/ImageScales";
|
|
6
6
|
import { UploadTask } from "firebase/storage";
|
|
7
|
-
import { FieldPath } from "../type-utils";
|
|
7
|
+
import { FieldPath, FromOnePercentUtility, NamespaceAccessors, PathObject } from "../type-utils";
|
|
8
8
|
import Button from "../components/Button";
|
|
9
9
|
import CheckBox from "../components/CheckBox";
|
|
10
10
|
import Radio from "../components/Radio/Radio";
|
|
11
11
|
import { FileInputViewProps } from "../components/FileInput/View/View.types";
|
|
12
|
-
import { AnswerByField, GenericFormFieldProps } from "../components/Form/
|
|
13
|
-
import { BaseQuestion } from "../components/Form/
|
|
12
|
+
import { AnswerByField, FormField, GenericFormFieldProps } from "../components/Form/FormField/FormField.types";
|
|
13
|
+
import { BaseQuestion, FormMode } from "../components/Form/Form.types";
|
|
14
14
|
type DeepPartial<T> = {
|
|
15
15
|
[P in keyof T]?: NonNullable<T[P]> extends Function ? T[P] : DeepPartial<T[P]>;
|
|
16
16
|
};
|
|
17
|
+
type IfUtilityHas<N extends NamespaceAccessors, Declare> = FromOnePercentUtility<N> extends `To define this property you need to set OnepercentUtility.${string} globally` ? undefined : Declare;
|
|
17
18
|
export type OneUIContextSpecs = {
|
|
18
19
|
component: {
|
|
19
20
|
spacing: {
|
|
20
21
|
variants: {
|
|
21
|
-
[k in
|
|
22
|
+
[k in FromOnePercentUtility<"UIElements.SpacingVariants">]: string;
|
|
22
23
|
};
|
|
23
24
|
};
|
|
24
25
|
collapsable: {
|
|
25
26
|
className: string;
|
|
26
27
|
};
|
|
27
28
|
form: {
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
fieldWrapper: {
|
|
30
|
+
[k in `${keyof typeof FormMode}-${FormField["type"]}`]: string | ((p: PropsWithChildren<FormField & {
|
|
31
|
+
value: any;
|
|
32
|
+
}>) => ReactNode);
|
|
33
|
+
};
|
|
34
|
+
titleVariant: FromOnePercentUtility<"UIElements.TextVariants">;
|
|
35
|
+
labelVariant: FromOnePercentUtility<"UIElements.TextVariants">;
|
|
30
36
|
/** Label shown when a field is optional */
|
|
31
37
|
optionalLabel: string;
|
|
32
38
|
/** Label shown when a required field was not provided */
|
|
33
39
|
requiredLabel: string;
|
|
34
40
|
onFileUpload(questionId: string, file: File): UploadTask;
|
|
35
|
-
extensions
|
|
36
|
-
[K in
|
|
41
|
+
extensions: IfUtilityHas<"UIElements.FormExtension", {
|
|
42
|
+
[K in FromOnePercentUtility<"UIElements.FormExtension">["fields"]["type"]]: {
|
|
37
43
|
Input: (props: GenericFormFieldProps<K>) => ReactElement;
|
|
38
44
|
validator: (answer: AnswerByField<{
|
|
39
45
|
type: K;
|
|
40
|
-
}>, question: BaseQuestion & (
|
|
46
|
+
}>, question: BaseQuestion & (FromOnePercentUtility<"UIElements.FormExtension">["fields"] & {
|
|
41
47
|
type: K;
|
|
42
48
|
})) => {
|
|
43
49
|
isValid: boolean;
|
|
44
50
|
error?: string;
|
|
45
51
|
};
|
|
46
52
|
};
|
|
47
|
-
}
|
|
53
|
+
}>;
|
|
48
54
|
};
|
|
49
|
-
text
|
|
50
|
-
className
|
|
51
|
-
[k in React.ComponentProps<typeof import("../components/Text")["default"]>["type"]]
|
|
55
|
+
text: IfUtilityHas<"UIElements.TextVariants", {
|
|
56
|
+
className: {
|
|
57
|
+
[k in React.ComponentProps<typeof import("../components/Text")["default"]>["type"]]: string;
|
|
52
58
|
};
|
|
53
|
-
htmlTag
|
|
54
|
-
[k in React.ComponentProps<typeof import("../components/Text")["default"]>["type"]]
|
|
59
|
+
htmlTag: {
|
|
60
|
+
[k in React.ComponentProps<typeof import("../components/Text")["default"]>["type"]]: "p" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
|
|
55
61
|
};
|
|
56
|
-
}
|
|
62
|
+
}>;
|
|
57
63
|
button?: {
|
|
58
64
|
className?: {
|
|
59
65
|
[k in NonNullable<React.ComponentProps<typeof import("../components/Button")["default"]>["variant"]>]?: string;
|
|
@@ -61,8 +67,12 @@ export type OneUIContextSpecs = {
|
|
|
61
67
|
Component?: (props: ComponentProps<typeof Button>) => ReactElement;
|
|
62
68
|
};
|
|
63
69
|
input: {
|
|
64
|
-
className:
|
|
65
|
-
|
|
70
|
+
className: {
|
|
71
|
+
/** The wrapper around input tag & caption element (used for error and caption) */
|
|
72
|
+
container: string;
|
|
73
|
+
/** The input html tag */
|
|
74
|
+
input: string;
|
|
75
|
+
};
|
|
66
76
|
};
|
|
67
77
|
fileInput: {
|
|
68
78
|
View: (props: FileInputViewProps) => ReactElement;
|
|
@@ -116,7 +126,7 @@ export type OneUIContextSpecs = {
|
|
|
116
126
|
dialogClassName: string;
|
|
117
127
|
backdropClassName: string;
|
|
118
128
|
variant: {
|
|
119
|
-
[k in
|
|
129
|
+
[k in FromOnePercentUtility<"UIElements.AdaptiveDialogVariants">]: string;
|
|
120
130
|
};
|
|
121
131
|
};
|
|
122
132
|
adaptiveSidebar: {
|
|
@@ -129,6 +139,10 @@ export type OneUIContextSpecs = {
|
|
|
129
139
|
radio: {
|
|
130
140
|
Component?: (props: ComponentProps<typeof Radio>) => ReactElement;
|
|
131
141
|
};
|
|
142
|
+
tabs: {
|
|
143
|
+
item: string;
|
|
144
|
+
container: string;
|
|
145
|
+
};
|
|
132
146
|
};
|
|
133
147
|
hook: {
|
|
134
148
|
ui: {
|
|
@@ -143,12 +157,13 @@ export type OneUIContextSpecs = {
|
|
|
143
157
|
imageScale: ImageScales;
|
|
144
158
|
};
|
|
145
159
|
};
|
|
146
|
-
type ContextConfigSpecs = DeepPartial<OneUIContextSpecs>;
|
|
160
|
+
export type ContextConfigSpecs = DeepPartial<OneUIContextSpecs> & PathObject<OneUIContextSpecs, "component.text">;
|
|
147
161
|
declare function OneUIProvider({ children, config, }: PropsWithChildren<{
|
|
148
162
|
config: ContextConfigSpecs;
|
|
149
163
|
}>): import("react/jsx-runtime").JSX.Element;
|
|
150
164
|
export default OneUIProvider;
|
|
151
165
|
export declare function useOneUIContext(): OneUIContextSpecs;
|
|
152
166
|
export declare function useOneUIView<P extends FieldPath<OneUIContextSpecs>>(oneuiConfigPath: P, componentName: string): NonNullable<import("type-fest/source/get").GetWithPath<OneUIContextSpecs, P extends string ? import("type-fest").Split<import("type-fest/source/get").FixPathSquareBrackets<P>, "."> : P, {}>>;
|
|
153
|
-
export declare function useOneUIConfig<P extends FieldPath<OneUIContextSpecs
|
|
167
|
+
export declare function useOneUIConfig<P extends FieldPath<OneUIContextSpecs>>(prop: P): Get<OneUIContextSpecs, P>;
|
|
168
|
+
export declare function useOneUIConfig<P extends FieldPath<OneUIContextSpecs>, T extends DeepPartial<Get<OneUIContextSpecs, P>>>(prop: P, defaultValue: T): NonNullable<Get<OneUIContextSpecs, P>>;
|
|
154
169
|
export declare function useCurrentImageScale(): DeepPartial<ImageScales>;
|
|
@@ -96,4 +96,4 @@ function useCurrentImageScale() {
|
|
|
96
96
|
const context = (0, _react.useContext)(Context);
|
|
97
97
|
return context.state.imageScale;
|
|
98
98
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2V0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWVyZ2UiLCJfY2xvbmVEZWVwIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQWRhcHRpdmVJbWFnZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiT25lVUlQcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsImNvbmZpZyIsInByZXZDdHgiLCJ1c2VDb250ZXh0Iiwic2NhbGUiLCJ1c2VBZGFwdGl2ZUltYWdlIiwibWVyZ2VkQ29uZmlnIiwidXNlTWVtbyIsIm1lcmdlIiwiY2xvbmUiLCJzdGF0ZSIsImltYWdlU2NhbGUiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsInBhdGhUb0pzb24iLCJwYXRoIiwia2V5IiwiZXhhbXBsZUNvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNwbGl0Iiwic2xpY2UiLCJyZXBsYWNlIiwiY29uY2F0IiwicmVkdWNlIiwicmVzdWx0IiwiaWR4IiwiYXJyIiwiayIsIkVycm9yV3JhcHBlciIsIm9yaWdpbmFsT2JqZWN0IiwiUHJveHkiLCJfdGFyZ2V0IiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsInBhdGhKc29uIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidXNlT25lVUlDb250ZXh0IiwiY29udGV4dCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVzZU9uZVVJVmlldyIsIm9uZXVpQ29uZmlnUGF0aCIsImNvbXBvbmVudE5hbWUiLCJwcm92aWRlZFZhbHVlIiwidXNlT25lVUlDb25maWciLCJwcm9wIiwiZGVmYXVsdFZhbHVlIiwidmFsIiwiZW5kc1dpdGgiLCJ1c2VDdXJyZW50SW1hZ2VTY2FsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L09uZVVJUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpTWCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGdldCBmcm9tIFwibG9kYXNoL2dldFwiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJsb2Rhc2gvbWVyZ2VcIjtcbmltcG9ydCBjbG9uZSBmcm9tIFwibG9kYXNoL2Nsb25lRGVlcFwiO1xuaW1wb3J0IHsgR2V0IH0gZnJvbSBcInR5cGUtZmVzdFwiO1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFByb3BzLCBSZWFjdEVsZW1lbnQsIFJlYWN0Tm9kZSwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEltYWdlU2NhbGVzIH0gZnJvbSBcIkBtdXJpdGF2by93ZWJwYWNrLW1pY3JvZnJvbnRlbmQtc2NyaXB0cy9iaW4vdHlwZXMvSW1hZ2VTY2FsZXNcIjtcbmltcG9ydCB7IFVwbG9hZFRhc2sgfSBmcm9tIFwiZmlyZWJhc2Uvc3RvcmFnZVwiO1xuaW1wb3J0IHsgRmllbGRQYXRoIH0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB1c2VBZGFwdGl2ZUltYWdlIGZyb20gXCIuLi9ob29rcy91aS91c2VBZGFwdGl2ZUltYWdlXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL0J1dHRvblwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCIuLi9jb21wb25lbnRzL0NoZWNrQm94XCI7XG5pbXBvcnQgUmFkaW8gZnJvbSBcIi4uL2NvbXBvbmVudHMvUmFkaW8vUmFkaW9cIjtcbmltcG9ydCB7IEZpbGVJbnB1dFZpZXdQcm9wcyB9IGZyb20gXCIuLi9jb21wb25lbnRzL0ZpbGVJbnB1dC9WaWV3L1ZpZXcudHlwZXNcIjtcbmltcG9ydCB7XG4gIEFuc3dlckJ5RmllbGQsXG4gIEdlbmVyaWNGb3JtRmllbGRQcm9wcyxcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRm9ybS92Mi9Gb3JtRmllbGQvRm9ybUZpZWxkLnR5cGVzXCI7XG5pbXBvcnQgeyBCYXNlUXVlc3Rpb24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy9Gb3JtL3YyL0Zvcm0udHlwZXNcIjtcblxudHlwZSBEZWVwUGFydGlhbDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0/OiBOb25OdWxsYWJsZTxUW1BdPiBleHRlbmRzIEZ1bmN0aW9uXG4gID8gVFtQXVxuICA6IERlZXBQYXJ0aWFsPFRbUF0+O1xufTtcblxuZXhwb3J0IHR5cGUgT25lVUlDb250ZXh0U3BlY3MgPSB7XG4gIGNvbXBvbmVudDoge1xuICAgIHNwYWNpbmc6IHtcbiAgICAgIHZhcmlhbnRzOiB7XG4gICAgICAgIFtrIGluIE9uZXBlcmNlbnRVdGlsaXR5LlVJRWxlbWVudHMuU3BhY2luZ1ZhcmlhbnRzXTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIGNvbGxhcHNhYmxlOiB7XG4gICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIGZvcm06IHtcbiAgICAgIHRpdGxlVmFyaWFudDogT25lcGVyY2VudFV0aWxpdHkuVUlFbGVtZW50cy5UZXh0VmFyaWFudHM7XG4gICAgICBsYWJlbFZhcmlhbnQ6IE9uZXBlcmNlbnRVdGlsaXR5LlVJRWxlbWVudHMuVGV4dFZhcmlhbnRzO1xuICAgICAgLyoqIExhYmVsIHNob3duIHdoZW4gYSBmaWVsZCBpcyBvcHRpb25hbCAqL1xuICAgICAgb3B0aW9uYWxMYWJlbDogc3RyaW5nO1xuXG4gICAgICAvKiogTGFiZWwgc2hvd24gd2hlbiBhIHJlcXVpcmVkIGZpZWxkIHdhcyBub3QgcHJvdmlkZWQgKi9cbiAgICAgIHJlcXVpcmVkTGFiZWw6IHN0cmluZztcblxuICAgICAgb25GaWxlVXBsb2FkKHF1ZXN0aW9uSWQ6IHN0cmluZywgZmlsZTogRmlsZSk6IFVwbG9hZFRhc2s7XG5cbiAgICAgIGV4dGVuc2lvbnM/OiB7XG4gICAgICAgIFtLIGluIE9uZXBlcmNlbnRVdGlsaXR5LlVJRWxlbWVudHMuRm9ybUV4dGVuc2lvbltcImZpZWxkc1wiXVtcInR5cGVcIl1dOiB7XG4gICAgICAgICAgSW5wdXQ6IChwcm9wczogR2VuZXJpY0Zvcm1GaWVsZFByb3BzPEs+KSA9PiBSZWFjdEVsZW1lbnQ7XG4gICAgICAgICAgdmFsaWRhdG9yOiAoXG4gICAgICAgICAgICBhbnN3ZXI6IEFuc3dlckJ5RmllbGQ8eyB0eXBlOiBLIH0+LFxuICAgICAgICAgICAgcXVlc3Rpb246IEJhc2VRdWVzdGlvbiAmXG4gICAgICAgICAgICAgIChPbmVwZXJjZW50VXRpbGl0eS5VSUVsZW1lbnRzLkZvcm1FeHRlbnNpb25bXCJmaWVsZHNcIl0gJiB7XG4gICAgICAgICAgICAgICAgdHlwZTogSztcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGlzVmFsaWQ6IGJvb2xlYW47XG4gICAgICAgICAgICBlcnJvcj86IHN0cmluZztcbiAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHRleHQ/OiB7XG4gICAgICBjbGFzc05hbWU/OiB7XG4gICAgICAgIFtrIGluIFJlYWN0LkNvbXBvbmVudFByb3BzPFxuICAgICAgICAgIHR5cGVvZiBpbXBvcnQoXCIuLi9jb21wb25lbnRzL1RleHRcIilbXCJkZWZhdWx0XCJdXG4gICAgICAgID5bXCJ0eXBlXCJdXT86IHN0cmluZztcbiAgICAgIH07XG4gICAgICBodG1sVGFnPzoge1xuICAgICAgICBbayBpbiBSZWFjdC5Db21wb25lbnRQcm9wczxcbiAgICAgICAgICB0eXBlb2YgaW1wb3J0KFwiLi4vY29tcG9uZW50cy9UZXh0XCIpW1wiZGVmYXVsdFwiXVxuICAgICAgICA+W1widHlwZVwiXV0/OiBcInBcIiB8IFwiaDFcIiB8IFwiaDJcIiB8IFwiaDNcIiB8IFwiaDRcIiB8IFwiaDVcIiB8IFwiaDZcIjtcbiAgICAgIH07XG4gICAgfTtcbiAgICBidXR0b24/OiB7XG4gICAgICBjbGFzc05hbWU/OiB7XG4gICAgICAgIFtrIGluIE5vbk51bGxhYmxlPFxuICAgICAgICAgIFJlYWN0LkNvbXBvbmVudFByb3BzPFxuICAgICAgICAgICAgdHlwZW9mIGltcG9ydChcIi4uL2NvbXBvbmVudHMvQnV0dG9uXCIpW1wiZGVmYXVsdFwiXVxuICAgICAgICAgID5bXCJ2YXJpYW50XCJdXG4gICAgICAgID5dPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICAgIENvbXBvbmVudD86IChwcm9wczogQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj4pID0+IFJlYWN0RWxlbWVudDtcbiAgICB9O1xuICAgIGlucHV0OiB7XG4gICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICAgIGJvcmRlcjogYm9vbGVhbjtcbiAgICB9O1xuICAgIGZpbGVJbnB1dDoge1xuICAgICAgVmlldzogKHByb3BzOiBGaWxlSW5wdXRWaWV3UHJvcHMpID0+IFJlYWN0RWxlbWVudDtcbiAgICB9O1xuICAgIHBhc3N3b3JkSW5wdXQ6IHtcbiAgICAgIGljb25TcmM6IHtcbiAgICAgICAgcGFzc3dvcmRIaWRkZW46IHN0cmluZztcbiAgICAgICAgcGFzc3dvcmRWaXNpYmxlOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgYXN5bmNXcmFwcGVyOiB7XG4gICAgICBMb2FkaW5nQ29tcG9uZW50PzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gICAgICBtZXNzYWdlczoge1xuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgICAgcmV0cnlCdG46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBzZWxlY3Q6IHtcbiAgICAgIFN0YXRlSW5kaWNhdG9yOiAocHJvcHM6IHsgb3BlbjogYm9vbGVhbiB9KSA9PiBKU1guRWxlbWVudDtcbiAgICAgIGNsYXNzTmFtZT86IHtcbiAgICAgICAgZHJvcGRvd24/OiBzdHJpbmc7XG4gICAgICAgIGl0ZW0/OiBzdHJpbmc7XG4gICAgICAgIHNlbGVjdGVkSXRlbT86IHN0cmluZztcbiAgICAgICAgaW5wdXQ/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgaGVhZGVyOiB7XG4gICAgICBMb2dvSW1hZ2U6ICgpID0+IEpTWC5FbGVtZW50O1xuICAgICAgTW9yZU9wdGlvbnM6ICh7IG9wZW4gfTogeyBvcGVuOiBib29sZWFuIH0pID0+IEpTWC5FbGVtZW50O1xuICAgIH07XG4gICAgdGFibGU6IHtcbiAgICAgIGNvbnRyb2xzOiB7XG4gICAgICAgIFByZXZQYWdlOiAoeyBkaXNhYmxlZCB9OiB7IGRpc2FibGVkOiBib29sZWFuIH0pID0+IEpTWC5FbGVtZW50O1xuICAgICAgICBOZXh0UGFnZTogKHsgZGlzYWJsZWQgfTogeyBkaXNhYmxlZDogYm9vbGVhbiB9KSA9PiBKU1guRWxlbWVudDtcbiAgICAgIH07XG4gICAgfTtcbiAgICB0b29sdGlwOiB7XG4gICAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBhZGFwdGl2ZURpYWxvZzoge1xuICAgICAgZGlhbG9nQ2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgICBiYWNrZHJvcENsYXNzTmFtZTogc3RyaW5nO1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBbayBpbiBPbmVwZXJjZW50VXRpbGl0eS5VSUVsZW1lbnRzLkFkYXB0aXZlRGlhbG9nVmFyaWFudHNdOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgYWRhcHRpdmVTaWRlYmFyOiB7XG4gICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICAgIGNvbnRyb2xDbGFzc05hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIGNoZWNrYm94OiB7XG4gICAgICBDb21wb25lbnQ/OiAocHJvcHM6IENvbXBvbmVudFByb3BzPHR5cGVvZiBDaGVja0JveD4pID0+IFJlYWN0RWxlbWVudDtcbiAgICB9O1xuICAgIHJhZGlvOiB7XG4gICAgICBDb21wb25lbnQ/OiAocHJvcHM6IENvbXBvbmVudFByb3BzPHR5cGVvZiBSYWRpbz4pID0+IFJlYWN0RWxlbWVudDtcbiAgICB9O1xuICB9O1xuICBob29rOiB7XG4gICAgdWk6IHtcbiAgICAgIHVzZVBhZ2luYXRpb25Db250cm9sczoge1xuICAgICAgICBMZWZ0Q29udHJvbDogKCkgPT4gUmVhY3RFbGVtZW50O1xuICAgICAgICBSaWdodENvbnRyb2w6ICgpID0+IFJlYWN0RWxlbWVudDtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICBzdGF0ZToge1xuICAgIGltYWdlU2NhbGU6IEltYWdlU2NhbGVzO1xuICB9O1xufTtcblxudHlwZSBDb250ZXh0Q29uZmlnU3BlY3MgPSBEZWVwUGFydGlhbDxPbmVVSUNvbnRleHRTcGVjcz47XG5cbmNvbnN0IENvbnRleHQgPSBjcmVhdGVDb250ZXh0PENvbnRleHRDb25maWdTcGVjcz4obnVsbCBhcyBhbnkpO1xuXG5mdW5jdGlvbiBPbmVVSVByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIGNvbmZpZyxcbn06IFByb3BzV2l0aENoaWxkcmVuPHsgY29uZmlnOiBDb250ZXh0Q29uZmlnU3BlY3MgfT4pIHtcbiAgY29uc3QgcHJldkN0eCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gIGNvbnN0IHNjYWxlID0gdXNlQWRhcHRpdmVJbWFnZSgpO1xuICBjb25zdCBtZXJnZWRDb25maWcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2UoY2xvbmUocHJldkN0eCksIGNvbmZpZywge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgaW1hZ2VTY2FsZTogc2NhbGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbcHJldkN0eCwgY29uZmlnLCBzY2FsZV0pO1xuXG4gIHJldHVybiA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVyZ2VkQ29uZmlnfT57Y2hpbGRyZW59PC9Db250ZXh0LlByb3ZpZGVyPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT25lVUlQcm92aWRlcjtcblxuZnVuY3Rpb24gcGF0aFRvSnNvbihcbiAgcGF0aDogc3RyaW5nLFxuICBrZXk/OiBzdHJpbmcgfCBTeW1ib2wsXG4gIGV4YW1wbGVDb25maWcgPSBcIlRIRV9NSVNTSU5HX0NPTkZJR1wiXG4pIHtcbiAgaWYgKCFrZXkpIHtcbiAgICBrZXkgPSBwYXRoLnNwbGl0KFwiLlwiKS5zbGljZSgtMSlbMF07XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZShgLiR7a2V5fWAsIFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHBhdGhcbiAgICAuc3BsaXQoXCIuXCIpXG4gICAgLmNvbmNhdChrZXkgYXMgc3RyaW5nKVxuICAgIC5yZWR1Y2UoKHJlc3VsdCwga2V5LCBpZHgsIGFycikgPT4ge1xuICAgICAgKGFyci5zbGljZSgwLCBpZHgpLnJlZHVjZSgociwgaykgPT4gKHIgYXMgYW55KVtrXSwgcmVzdWx0KSBhcyBhbnkpW2tleV0gPVxuICAgICAgICBpZHggPT09IGFyci5sZW5ndGggLSAxID8gZXhhbXBsZUNvbmZpZyA6IHt9O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIEVycm9yV3JhcHBlcihcbiAgb3JpZ2luYWxPYmplY3Q6IGFueSxcbiAgcGF0aDogc3RyaW5nID0gXCJjb25maWdcIlxuKTogdHlwZW9mIFByb3h5IHtcbiAgcmV0dXJuIG5ldyBQcm94eShcbiAgICB0eXBlb2Ygb3JpZ2luYWxPYmplY3QgIT09IFwib2JqZWN0XCIgPyB7fSA6IG9yaWdpbmFsT2JqZWN0IHx8IHt9LFxuICAgIHtcbiAgICAgIGdldChfdGFyZ2V0LCBrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gU3ltYm9sLnRvUHJpbWl0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuICgpID0+IF90YXJnZXRba2V5XTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gb3JpZ2luYWxPYmplY3Rba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpXG4gICAgICAgICAgICByZXR1cm4gRXJyb3JXcmFwcGVyKHZhbHVlLCBbcGF0aCwga2V5XS5maWx0ZXIoQm9vbGVhbikuam9pbihcIi5cIikpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnN0IHBhdGhKc29uID0gcGF0aFRvSnNvbihwYXRoLCBrZXkpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBBIGNvbXBvbmVudCBpcyB1c2luZyB0aGUgVUkgY29uZmlnICR7W3BhdGgsIGtleV0uam9pbihcIi5cIil9LlxuXG5QbGVhc2UgZGVmaW5lIGl0IHVzaW5nOlxuaW1wb3J0IE9uZVVJUHJvdmlkZXIgZnJvbSBcIkBvbmVwZXJjZW50L29uZS11aS9kaXN0L2NvbnRleHQvT25lVUlQcm92aWRlclwiO1xuXG4gIC4uLlxuJHtgPE9uZVVJUHJvdmlkZXIgY29uZmlnPXske0pTT04uc3RyaW5naWZ5KHBhdGhKc29uLCBudWxsLCA0KX19PlxuLi4uXG48L09uZVVJUHJvdmlkZXI+YC5yZXBsYWNlKC9bIF0vZywgXCItXCIpfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU9uZVVJQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgcmV0dXJuIEVycm9yV3JhcHBlcihjb250ZXh0KSBhcyB1bmtub3duIGFzIE9uZVVJQ29udGV4dFNwZWNzO1xuXG4gIHJldHVybiBjb250ZXh0IGFzIE9uZVVJQ29udGV4dFNwZWNzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlT25lVUlWaWV3PFAgZXh0ZW5kcyBGaWVsZFBhdGg8T25lVUlDb250ZXh0U3BlY3M+PihcbiAgb25ldWlDb25maWdQYXRoOiBQLFxuICBjb21wb25lbnROYW1lOiBzdHJpbmdcbikge1xuICBjb25zdCBwcm92aWRlZFZhbHVlID0gdXNlT25lVUlDb25maWcob25ldWlDb25maWdQYXRoKTtcbiAgaWYgKCFwcm92aWRlZFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgY29tcG9uZW50ICR7Y29tcG9uZW50TmFtZX0gcmVxdWlyZXMgYSB2aWV3IHRvIGJlIHNldCBvbiBPbmVVSSBpbml0aWFsaXphdGlvblxuXG5WaWV3cyByZWFkeSBmb3IgdXNlIHdpdGggdGhpcyBjb21wb25lbnQgc2hhbGwgYmUgYXZhaWxhYmxlIGF0OlxuaW1wb3J0IFNvbWVWaWV3IGZyb20gXCJAb25lcGVyY2VudGlvL29uZS11aS9kaXN0L2NvbXBvbmVudHMvJHtjb21wb25lbnROYW1lfS9WaWV3L1NvbWVWaWV3XCI7XG4gICAgXG5QbGVhc2UgZGVmaW5lIGl0IHVzaW5nOlxuaW1wb3J0IE9uZVVJUHJvdmlkZXIgZnJvbSBcIkBvbmVwZXJjZW50aW8vb25lLXVpL2Rpc3QvY29udGV4dC9PbmVVSVByb3ZpZGVyXCI7XG5cbiAgLi4uXG4ke2A8T25lVUlQcm92aWRlciBjb25maWc9eyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBwYXRoVG9Kc29uKG9uZXVpQ29uZmlnUGF0aCwgdW5kZWZpbmVkLCBcIlNvbWVWaWV3XCIpLFxuICAgICAgbnVsbCxcbiAgICAgIDRcbiAgICApfX0+XG4uLi5cbjwvT25lVUlQcm92aWRlcj5gLnJlcGxhY2UoL1sgXS9nLCBcIi1cIil9YCk7XG4gIH1cblxuICByZXR1cm4gcHJvdmlkZWRWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU9uZVVJQ29uZmlnPFxuICBQIGV4dGVuZHMgRmllbGRQYXRoPE9uZVVJQ29udGV4dFNwZWNzPixcbiAgVCBleHRlbmRzIEdldDxPbmVVSUNvbnRleHRTcGVjcywgUD5cbj4ocHJvcDogUCwgZGVmYXVsdFZhbHVlPzogVCk6IE5vbk51bGxhYmxlPEdldDxPbmVVSUNvbnRleHRTcGVjcywgUD4+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgY29uc3QgdmFsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZ2V0KGNvbnRleHQsIHByb3ApO1xuICAgIH0sIFtjb250ZXh0LCBwcm9wXSk7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgdHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICBwcm9wLmVuZHNXaXRoKFwiLkNvbXBvbmVudFwiKSB8fFxuICAgICAgcHJvcC5lbmRzV2l0aChcIi5WaWV3XCIpXG4gICAgKVxuICAgICAgcmV0dXJuICh2YWwgYXMgYW55KSB8fCBkZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCIpIHJldHVybiB2YWwgYXMgYW55O1xuICAgIHJldHVybiBFcnJvcldyYXBwZXIodmFsIHx8IGRlZmF1bHRWYWx1ZSkgYXMgdW5rbm93biBhcyBOb25OdWxsYWJsZTxUPjtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBnZXQoY29udGV4dCwgcHJvcCk7XG4gIH0sIFtjb250ZXh0LCBwcm9wXSk7XG4gIHJldHVybiB2YWx1ZSB8fCBkZWZhdWx0VmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDdXJyZW50SW1hZ2VTY2FsZSgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRleHQuc3RhdGUhLmltYWdlU2NhbGUhO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBS0EsSUFBQUssaUJBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUE0RCxTQUFBSSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsQ0FBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxnQkFBQVAsQ0FBQSxJQUFBRCxDQUFBLGdCQUFBQyxDQUFBLE9BQUFhLGNBQUEsQ0FBQUMsSUFB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
|
|
99
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2V0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWVyZ2UiLCJfY2xvbmVEZWVwIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQWRhcHRpdmVJbWFnZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiT25lVUlQcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsImNvbmZpZyIsInByZXZDdHgiLCJ1c2VDb250ZXh0Iiwic2NhbGUiLCJ1c2VBZGFwdGl2ZUltYWdlIiwibWVyZ2VkQ29uZmlnIiwidXNlTWVtbyIsIm1lcmdlIiwiY2xvbmUiLCJzdGF0ZSIsImltYWdlU2NhbGUiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsInBhdGhUb0pzb24iLCJwYXRoIiwia2V5IiwiZXhhbXBsZUNvbmZpZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNwbGl0Iiwic2xpY2UiLCJyZXBsYWNlIiwiY29uY2F0IiwicmVkdWNlIiwicmVzdWx0IiwiaWR4IiwiYXJyIiwiayIsIkVycm9yV3JhcHBlciIsIm9yaWdpbmFsT2JqZWN0IiwiUHJveHkiLCJfdGFyZ2V0IiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsInBhdGhKc29uIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidXNlT25lVUlDb250ZXh0IiwiY29udGV4dCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVzZU9uZVVJVmlldyIsIm9uZXVpQ29uZmlnUGF0aCIsImNvbXBvbmVudE5hbWUiLCJwcm92aWRlZFZhbHVlIiwidXNlT25lVUlDb25maWciLCJwcm9wIiwiZGVmYXVsdFZhbHVlIiwidmFsIiwiZW5kc1dpdGgiLCJ1c2VDdXJyZW50SW1hZ2VTY2FsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L09uZVVJUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpTWCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGdldCBmcm9tIFwibG9kYXNoL2dldFwiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJsb2Rhc2gvbWVyZ2VcIjtcbmltcG9ydCBjbG9uZSBmcm9tIFwibG9kYXNoL2Nsb25lRGVlcFwiO1xuaW1wb3J0IHsgR2V0IH0gZnJvbSBcInR5cGUtZmVzdFwiO1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFByb3BzLCBSZWFjdEVsZW1lbnQsIFJlYWN0Tm9kZSwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEltYWdlU2NhbGVzIH0gZnJvbSBcIkBtdXJpdGF2by93ZWJwYWNrLW1pY3JvZnJvbnRlbmQtc2NyaXB0cy9iaW4vdHlwZXMvSW1hZ2VTY2FsZXNcIjtcbmltcG9ydCB7IFVwbG9hZFRhc2sgfSBmcm9tIFwiZmlyZWJhc2Uvc3RvcmFnZVwiO1xuaW1wb3J0IHtcbiAgRmllbGRQYXRoLFxuICBGcm9tT25lUGVyY2VudFV0aWxpdHksXG4gIE5hbWVzcGFjZUFjY2Vzc29ycyxcbiAgUGF0aCxcbiAgUGF0aE9iamVjdCxcbn0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB1c2VBZGFwdGl2ZUltYWdlIGZyb20gXCIuLi9ob29rcy91aS91c2VBZGFwdGl2ZUltYWdlXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9jb21wb25lbnRzL0J1dHRvblwiO1xuaW1wb3J0IENoZWNrQm94IGZyb20gXCIuLi9jb21wb25lbnRzL0NoZWNrQm94XCI7XG5pbXBvcnQgUmFkaW8gZnJvbSBcIi4uL2NvbXBvbmVudHMvUmFkaW8vUmFkaW9cIjtcbmltcG9ydCB7IEZpbGVJbnB1dFZpZXdQcm9wcyB9IGZyb20gXCIuLi9jb21wb25lbnRzL0ZpbGVJbnB1dC9WaWV3L1ZpZXcudHlwZXNcIjtcbmltcG9ydCB7XG4gIEFuc3dlckJ5RmllbGQsXG4gIEZvcm1GaWVsZCxcbiAgR2VuZXJpY0Zvcm1GaWVsZFByb3BzLFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9Gb3JtL0Zvcm1GaWVsZC9Gb3JtRmllbGQudHlwZXNcIjtcbmltcG9ydCB7IEJhc2VRdWVzdGlvbiwgRm9ybU1vZGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9Gb3JtL0Zvcm0udHlwZXNcIjtcblxudHlwZSBEZWVwUGFydGlhbDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0/OiBOb25OdWxsYWJsZTxUW1BdPiBleHRlbmRzIEZ1bmN0aW9uXG4gICAgPyBUW1BdXG4gICAgOiBEZWVwUGFydGlhbDxUW1BdPjtcbn07XG5cbnR5cGUgSWZVdGlsaXR5SGFzPFxuICBOIGV4dGVuZHMgTmFtZXNwYWNlQWNjZXNzb3JzLFxuICBEZWNsYXJlXG4+ID0gRnJvbU9uZVBlcmNlbnRVdGlsaXR5PE4+IGV4dGVuZHMgYFRvIGRlZmluZSB0aGlzIHByb3BlcnR5IHlvdSBuZWVkIHRvIHNldCBPbmVwZXJjZW50VXRpbGl0eS4ke3N0cmluZ30gZ2xvYmFsbHlgXG4gID8gdW5kZWZpbmVkXG4gIDogRGVjbGFyZTtcblxuZXhwb3J0IHR5cGUgT25lVUlDb250ZXh0U3BlY3MgPSB7XG4gIGNvbXBvbmVudDoge1xuICAgIHNwYWNpbmc6IHtcbiAgICAgIHZhcmlhbnRzOiB7XG4gICAgICAgIFtrIGluIEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIlVJRWxlbWVudHMuU3BhY2luZ1ZhcmlhbnRzXCI+XTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIGNvbGxhcHNhYmxlOiB7XG4gICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIGZvcm06IHtcbiAgICAgIGZpZWxkV3JhcHBlcjoge1xuICAgICAgICBbayBpbiBgJHtrZXlvZiB0eXBlb2YgRm9ybU1vZGV9LSR7Rm9ybUZpZWxkW1widHlwZVwiXX1gXTpcbiAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgIHwgKChwOiBQcm9wc1dpdGhDaGlsZHJlbjxGb3JtRmllbGQgJiB7dmFsdWU6IGFueX0+KSA9PiBSZWFjdE5vZGUpO1xuICAgICAgfTtcbiAgICAgIHRpdGxlVmFyaWFudDogRnJvbU9uZVBlcmNlbnRVdGlsaXR5PFwiVUlFbGVtZW50cy5UZXh0VmFyaWFudHNcIj47XG4gICAgICBsYWJlbFZhcmlhbnQ6IEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIlVJRWxlbWVudHMuVGV4dFZhcmlhbnRzXCI+O1xuICAgICAgLyoqIExhYmVsIHNob3duIHdoZW4gYSBmaWVsZCBpcyBvcHRpb25hbCAqL1xuICAgICAgb3B0aW9uYWxMYWJlbDogc3RyaW5nO1xuXG4gICAgICAvKiogTGFiZWwgc2hvd24gd2hlbiBhIHJlcXVpcmVkIGZpZWxkIHdhcyBub3QgcHJvdmlkZWQgKi9cbiAgICAgIHJlcXVpcmVkTGFiZWw6IHN0cmluZztcblxuICAgICAgb25GaWxlVXBsb2FkKHF1ZXN0aW9uSWQ6IHN0cmluZywgZmlsZTogRmlsZSk6IFVwbG9hZFRhc2s7XG5cbiAgICAgIGV4dGVuc2lvbnM6IElmVXRpbGl0eUhhczxcbiAgICAgICAgXCJVSUVsZW1lbnRzLkZvcm1FeHRlbnNpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIFtLIGluIEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIlVJRWxlbWVudHMuRm9ybUV4dGVuc2lvblwiPltcImZpZWxkc1wiXVtcInR5cGVcIl1dOiB7XG4gICAgICAgICAgICBJbnB1dDogKHByb3BzOiBHZW5lcmljRm9ybUZpZWxkUHJvcHM8Sz4pID0+IFJlYWN0RWxlbWVudDtcbiAgICAgICAgICAgIHZhbGlkYXRvcjogKFxuICAgICAgICAgICAgICBhbnN3ZXI6IEFuc3dlckJ5RmllbGQ8eyB0eXBlOiBLIH0+LFxuICAgICAgICAgICAgICBxdWVzdGlvbjogQmFzZVF1ZXN0aW9uICZcbiAgICAgICAgICAgICAgICAoRnJvbU9uZVBlcmNlbnRVdGlsaXR5PFwiVUlFbGVtZW50cy5Gb3JtRXh0ZW5zaW9uXCI+W1wiZmllbGRzXCJdICYge1xuICAgICAgICAgICAgICAgICAgdHlwZTogSztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgIGlzVmFsaWQ6IGJvb2xlYW47XG4gICAgICAgICAgICAgIGVycm9yPzogc3RyaW5nO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICA+O1xuICAgIH07XG4gICAgdGV4dDogSWZVdGlsaXR5SGFzPFxuICAgICAgXCJVSUVsZW1lbnRzLlRleHRWYXJpYW50c1wiLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICBbayBpbiBSZWFjdC5Db21wb25lbnRQcm9wczxcbiAgICAgICAgICAgIHR5cGVvZiBpbXBvcnQoXCIuLi9jb21wb25lbnRzL1RleHRcIilbXCJkZWZhdWx0XCJdXG4gICAgICAgICAgPltcInR5cGVcIl1dOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICAgIGh0bWxUYWc6IHtcbiAgICAgICAgICBbayBpbiBSZWFjdC5Db21wb25lbnRQcm9wczxcbiAgICAgICAgICAgIHR5cGVvZiBpbXBvcnQoXCIuLi9jb21wb25lbnRzL1RleHRcIilbXCJkZWZhdWx0XCJdXG4gICAgICAgICAgPltcInR5cGVcIl1dOiBcInBcIiB8IFwiaDFcIiB8IFwiaDJcIiB8IFwiaDNcIiB8IFwiaDRcIiB8IFwiaDVcIiB8IFwiaDZcIjtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICA+O1xuICAgIGJ1dHRvbj86IHtcbiAgICAgIGNsYXNzTmFtZT86IHtcbiAgICAgICAgW2sgaW4gTm9uTnVsbGFibGU8XG4gICAgICAgICAgUmVhY3QuQ29tcG9uZW50UHJvcHM8XG4gICAgICAgICAgICB0eXBlb2YgaW1wb3J0KFwiLi4vY29tcG9uZW50cy9CdXR0b25cIilbXCJkZWZhdWx0XCJdXG4gICAgICAgICAgPltcInZhcmlhbnRcIl1cbiAgICAgICAgPl0/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgQ29tcG9uZW50PzogKHByb3BzOiBDb21wb25lbnRQcm9wczx0eXBlb2YgQnV0dG9uPikgPT4gUmVhY3RFbGVtZW50O1xuICAgIH07XG4gICAgaW5wdXQ6IHtcbiAgICAgIGNsYXNzTmFtZToge1xuICAgICAgICAvKiogVGhlIHdyYXBwZXIgYXJvdW5kIGlucHV0IHRhZyAmIGNhcHRpb24gZWxlbWVudCAodXNlZCBmb3IgZXJyb3IgYW5kIGNhcHRpb24pICovXG4gICAgICAgIGNvbnRhaW5lcjogc3RyaW5nO1xuICAgICAgICAvKiogVGhlIGlucHV0IGh0bWwgdGFnICovXG4gICAgICAgIGlucHV0OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgZmlsZUlucHV0OiB7XG4gICAgICBWaWV3OiAocHJvcHM6IEZpbGVJbnB1dFZpZXdQcm9wcykgPT4gUmVhY3RFbGVtZW50O1xuICAgIH07XG4gICAgcGFzc3dvcmRJbnB1dDoge1xuICAgICAgaWNvblNyYzoge1xuICAgICAgICBwYXNzd29yZEhpZGRlbjogc3RyaW5nO1xuICAgICAgICBwYXNzd29yZFZpc2libGU6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICBhc3luY1dyYXBwZXI6IHtcbiAgICAgIExvYWRpbmdDb21wb25lbnQ/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgICAgIG1lc3NhZ2VzOiB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgICAgICByZXRyeUJ0bjogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHNlbGVjdDoge1xuICAgICAgU3RhdGVJbmRpY2F0b3I6IChwcm9wczogeyBvcGVuOiBib29sZWFuIH0pID0+IEpTWC5FbGVtZW50O1xuICAgICAgY2xhc3NOYW1lPzoge1xuICAgICAgICBkcm9wZG93bj86IHN0cmluZztcbiAgICAgICAgaXRlbT86IHN0cmluZztcbiAgICAgICAgc2VsZWN0ZWRJdGVtPzogc3RyaW5nO1xuICAgICAgICBpbnB1dD86IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICBoZWFkZXI6IHtcbiAgICAgIExvZ29JbWFnZTogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gICAgICBNb3JlT3B0aW9uczogKHsgb3BlbiB9OiB7IG9wZW46IGJvb2xlYW4gfSkgPT4gSlNYLkVsZW1lbnQ7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgY29udHJvbHM6IHtcbiAgICAgICAgUHJldlBhZ2U6ICh7IGRpc2FibGVkIH06IHsgZGlzYWJsZWQ6IGJvb2xlYW4gfSkgPT4gSlNYLkVsZW1lbnQ7XG4gICAgICAgIE5leHRQYWdlOiAoeyBkaXNhYmxlZCB9OiB7IGRpc2FibGVkOiBib29sZWFuIH0pID0+IEpTWC5FbGVtZW50O1xuICAgICAgfTtcbiAgICB9O1xuICAgIHRvb2x0aXA6IHtcbiAgICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICB9O1xuICAgIGFkYXB0aXZlRGlhbG9nOiB7XG4gICAgICBkaWFsb2dDbGFzc05hbWU6IHN0cmluZztcbiAgICAgIGJhY2tkcm9wQ2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIFtrIGluIEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIlVJRWxlbWVudHMuQWRhcHRpdmVEaWFsb2dWYXJpYW50c1wiPl06IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICBhZGFwdGl2ZVNpZGViYXI6IHtcbiAgICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgICAgY29udHJvbENsYXNzTmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgY2hlY2tib3g6IHtcbiAgICAgIENvbXBvbmVudD86IChwcm9wczogQ29tcG9uZW50UHJvcHM8dHlwZW9mIENoZWNrQm94PikgPT4gUmVhY3RFbGVtZW50O1xuICAgIH07XG4gICAgcmFkaW86IHtcbiAgICAgIENvbXBvbmVudD86IChwcm9wczogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFJhZGlvPikgPT4gUmVhY3RFbGVtZW50O1xuICAgIH07XG4gICAgdGFiczoge1xuICAgICAgaXRlbTogc3RyaW5nO1xuICAgICAgY29udGFpbmVyOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgaG9vazoge1xuICAgIHVpOiB7XG4gICAgICB1c2VQYWdpbmF0aW9uQ29udHJvbHM6IHtcbiAgICAgICAgTGVmdENvbnRyb2w6ICgpID0+IFJlYWN0RWxlbWVudDtcbiAgICAgICAgUmlnaHRDb250cm9sOiAoKSA9PiBSZWFjdEVsZW1lbnQ7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgc3RhdGU6IHtcbiAgICBpbWFnZVNjYWxlOiBJbWFnZVNjYWxlcztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIENvbnRleHRDb25maWdTcGVjcyA9IERlZXBQYXJ0aWFsPE9uZVVJQ29udGV4dFNwZWNzPiAmXG4gIFBhdGhPYmplY3Q8T25lVUlDb250ZXh0U3BlY3MsIFwiY29tcG9uZW50LnRleHRcIj47XG5cbmNvbnN0IENvbnRleHQgPSBjcmVhdGVDb250ZXh0PENvbnRleHRDb25maWdTcGVjcz4obnVsbCBhcyBhbnkpO1xuXG5mdW5jdGlvbiBPbmVVSVByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIGNvbmZpZyxcbn06IFByb3BzV2l0aENoaWxkcmVuPHsgY29uZmlnOiBDb250ZXh0Q29uZmlnU3BlY3MgfT4pIHtcbiAgY29uc3QgcHJldkN0eCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gIGNvbnN0IHNjYWxlID0gdXNlQWRhcHRpdmVJbWFnZSgpO1xuICBjb25zdCBtZXJnZWRDb25maWcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2UoY2xvbmUocHJldkN0eCksIGNvbmZpZywge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgaW1hZ2VTY2FsZTogc2NhbGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbcHJldkN0eCwgY29uZmlnLCBzY2FsZV0pO1xuXG4gIHJldHVybiA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVyZ2VkQ29uZmlnfT57Y2hpbGRyZW59PC9Db250ZXh0LlByb3ZpZGVyPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT25lVUlQcm92aWRlcjtcblxuZnVuY3Rpb24gcGF0aFRvSnNvbihcbiAgcGF0aDogc3RyaW5nLFxuICBrZXk/OiBzdHJpbmcgfCBTeW1ib2wsXG4gIGV4YW1wbGVDb25maWcgPSBcIlRIRV9NSVNTSU5HX0NPTkZJR1wiXG4pIHtcbiAgaWYgKCFrZXkpIHtcbiAgICBrZXkgPSBwYXRoLnNwbGl0KFwiLlwiKS5zbGljZSgtMSlbMF07XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZShgLiR7a2V5fWAsIFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHBhdGhcbiAgICAuc3BsaXQoXCIuXCIpXG4gICAgLmNvbmNhdChrZXkgYXMgc3RyaW5nKVxuICAgIC5yZWR1Y2UoKHJlc3VsdCwga2V5LCBpZHgsIGFycikgPT4ge1xuICAgICAgKGFyci5zbGljZSgwLCBpZHgpLnJlZHVjZSgociwgaykgPT4gKHIgYXMgYW55KVtrXSwgcmVzdWx0KSBhcyBhbnkpW2tleV0gPVxuICAgICAgICBpZHggPT09IGFyci5sZW5ndGggLSAxID8gZXhhbXBsZUNvbmZpZyA6IHt9O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIEVycm9yV3JhcHBlcihcbiAgb3JpZ2luYWxPYmplY3Q6IGFueSxcbiAgcGF0aDogc3RyaW5nID0gXCJjb25maWdcIlxuKTogdHlwZW9mIFByb3h5IHtcbiAgcmV0dXJuIG5ldyBQcm94eShcbiAgICB0eXBlb2Ygb3JpZ2luYWxPYmplY3QgIT09IFwib2JqZWN0XCIgPyB7fSA6IG9yaWdpbmFsT2JqZWN0IHx8IHt9LFxuICAgIHtcbiAgICAgIGdldChfdGFyZ2V0LCBrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gU3ltYm9sLnRvUHJpbWl0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuICgpID0+IF90YXJnZXRba2V5XTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gb3JpZ2luYWxPYmplY3Rba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpXG4gICAgICAgICAgICByZXR1cm4gRXJyb3JXcmFwcGVyKHZhbHVlLCBbcGF0aCwga2V5XS5maWx0ZXIoQm9vbGVhbikuam9pbihcIi5cIikpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnN0IHBhdGhKc29uID0gcGF0aFRvSnNvbihwYXRoLCBrZXkpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBBIGNvbXBvbmVudCBpcyB1c2luZyB0aGUgVUkgY29uZmlnICR7W3BhdGgsIGtleV0uam9pbihcIi5cIil9LlxuXG5QbGVhc2UgZGVmaW5lIGl0IHVzaW5nOlxuaW1wb3J0IE9uZVVJUHJvdmlkZXIgZnJvbSBcIkBvbmVwZXJjZW50L29uZS11aS9kaXN0L2NvbnRleHQvT25lVUlQcm92aWRlclwiO1xuXG4gIC4uLlxuJHtgPE9uZVVJUHJvdmlkZXIgY29uZmlnPXske0pTT04uc3RyaW5naWZ5KHBhdGhKc29uLCBudWxsLCA0KX19PlxuLi4uXG48L09uZVVJUHJvdmlkZXI+YC5yZXBsYWNlKC9bIF0vZywgXCItXCIpfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU9uZVVJQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgcmV0dXJuIEVycm9yV3JhcHBlcihjb250ZXh0KSBhcyB1bmtub3duIGFzIE9uZVVJQ29udGV4dFNwZWNzO1xuXG4gIHJldHVybiBjb250ZXh0IGFzIE9uZVVJQ29udGV4dFNwZWNzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlT25lVUlWaWV3PFAgZXh0ZW5kcyBGaWVsZFBhdGg8T25lVUlDb250ZXh0U3BlY3M+PihcbiAgb25ldWlDb25maWdQYXRoOiBQLFxuICBjb21wb25lbnROYW1lOiBzdHJpbmdcbikge1xuICBjb25zdCBwcm92aWRlZFZhbHVlID0gdXNlT25lVUlDb25maWcob25ldWlDb25maWdQYXRoKTtcbiAgaWYgKCFwcm92aWRlZFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgY29tcG9uZW50ICR7Y29tcG9uZW50TmFtZX0gcmVxdWlyZXMgYSB2aWV3IHRvIGJlIHNldCBvbiBPbmVVSSBpbml0aWFsaXphdGlvblxuXG5WaWV3cyByZWFkeSBmb3IgdXNlIHdpdGggdGhpcyBjb21wb25lbnQgc2hhbGwgYmUgYXZhaWxhYmxlIGF0OlxuaW1wb3J0IFNvbWVWaWV3IGZyb20gXCJAb25lcGVyY2VudGlvL29uZS11aS9kaXN0L2NvbXBvbmVudHMvJHtjb21wb25lbnROYW1lfS9WaWV3L1NvbWVWaWV3XCI7XG4gICAgXG5QbGVhc2UgZGVmaW5lIGl0IHVzaW5nOlxuaW1wb3J0IE9uZVVJUHJvdmlkZXIgZnJvbSBcIkBvbmVwZXJjZW50aW8vb25lLXVpL2Rpc3QvY29udGV4dC9PbmVVSVByb3ZpZGVyXCI7XG5cbiAgLi4uXG4ke2A8T25lVUlQcm92aWRlciBjb25maWc9eyR7SlNPTi5zdHJpbmdpZnkoXG4gIHBhdGhUb0pzb24ob25ldWlDb25maWdQYXRoLCB1bmRlZmluZWQsIFwiU29tZVZpZXdcIiksXG4gIG51bGwsXG4gIDRcbil9fT5cbi4uLlxuPC9PbmVVSVByb3ZpZGVyPmAucmVwbGFjZSgvWyBdL2csIFwiLVwiKX1gKTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlZFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlT25lVUlDb25maWc8UCBleHRlbmRzIEZpZWxkUGF0aDxPbmVVSUNvbnRleHRTcGVjcz4+KFxuICBwcm9wOiBQXG4pOiBHZXQ8T25lVUlDb250ZXh0U3BlY3MsIFA+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9uZVVJQ29uZmlnPFxuICBQIGV4dGVuZHMgRmllbGRQYXRoPE9uZVVJQ29udGV4dFNwZWNzPixcbiAgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEdldDxPbmVVSUNvbnRleHRTcGVjcywgUD4+XG4+KHByb3A6IFAsIGRlZmF1bHRWYWx1ZTogVCk6IE5vbk51bGxhYmxlPEdldDxPbmVVSUNvbnRleHRTcGVjcywgUD4+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9uZVVJQ29uZmlnPFxuICBQIGV4dGVuZHMgRmllbGRQYXRoPE9uZVVJQ29udGV4dFNwZWNzPixcbiAgVCBleHRlbmRzIEdldDxPbmVVSUNvbnRleHRTcGVjcywgUD5cbj4ocHJvcDogUCwgZGVmYXVsdFZhbHVlPzogVCk6IEdldDxPbmVVSUNvbnRleHRTcGVjcywgUD4gfCBUIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgY29uc3QgdmFsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZ2V0KGNvbnRleHQsIHByb3ApO1xuICAgIH0sIFtjb250ZXh0LCBwcm9wXSk7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgdHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICBwcm9wLmVuZHNXaXRoKFwiLkNvbXBvbmVudFwiKSB8fFxuICAgICAgcHJvcC5lbmRzV2l0aChcIi5WaWV3XCIpXG4gICAgKVxuICAgICAgcmV0dXJuICh2YWwgYXMgYW55KSB8fCBkZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCIpIHJldHVybiB2YWwgYXMgYW55O1xuICAgIHJldHVybiBFcnJvcldyYXBwZXIodmFsIHx8IGRlZmF1bHRWYWx1ZSkgYXMgdW5rbm93biBhcyBOb25OdWxsYWJsZTxUPjtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBnZXQoY29udGV4dCwgcHJvcCk7XG4gIH0sIFtjb250ZXh0LCBwcm9wXSk7XG4gIHJldHVybiB2YWx1ZSB8fCBkZWZhdWx0VmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDdXJyZW50SW1hZ2VTY2FsZSgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQ29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRleHQuc3RhdGUhLmltYWdlU2NhbGUhO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsTUFBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBV0EsSUFBQUssaUJBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUE0RCxTQUFBSSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9B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
|
package/dist/hooks/useHero.js
CHANGED
|
@@ -137,7 +137,11 @@ function useHero(id) {
|
|
|
137
137
|
const coordinates = otherElement.getBoundingClientRect();
|
|
138
138
|
const currentCoordinates = heroRef.current.getBoundingClientRect();
|
|
139
139
|
const itWontMove = !willTheHeroMove(coordinates, currentCoordinates);
|
|
140
|
-
if (itWontMove)
|
|
140
|
+
if (itWontMove) {
|
|
141
|
+
var _events$onHeroEnd;
|
|
142
|
+
(_events$onHeroEnd = events.onHeroEnd) === null || _events$onHeroEnd === void 0 || _events$onHeroEnd.call(events);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
141
145
|
if (!oldClone) {
|
|
142
146
|
/** Set the clone over the starting element */
|
|
143
147
|
setCloneToCoordinatesOf(otherElement);
|
|
@@ -266,4 +270,4 @@ const TRANSITION_FACTORY = exports.TRANSITION_FACTORY = {
|
|
|
266
270
|
}
|
|
267
271
|
})
|
|
268
272
|
};
|
|
269
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIiLCJvcmlnaW4iLCJpZHNUaGF0V2lsbEFwcGVhciIsIm1hcCIsImEiLCJnZXRBdHRyaWJ1dGUiLCJwcmVleGlzdGluZ0NvbXBvbmVudHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlZEVsZW1lbnRzIiwiZWwiLCJpbmNsdWRlcyIsImVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQiLCJoZWlnaHRLZXkiLCJzdHlsZSIsImNsaWVudEhlaWdodCIsInNldFRpbWVvdXQiLCJvcGFjaXR5IiwiY29tcG9uZW50VGhhdFdpbGxBcHBlYXIiLCJhbHJlYWR5SW5qZWN0ZWRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlY3Vyc2l2ZUJ1aWxkUGF0aCIsImZyb21FbGVtZW50IiwicGF0aFN1ZmZpeCIsInVuZGVmaW5lZCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwYXJlbnRDaGlsZHMiLCJjaGlsZHJlbiIsImVsQ2hpbGRTZWxlY3RvciIsImluZGV4T2YiLCJ3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQiLCJpbnNlcnRBdEluZGV4IiwidGFyZ2V0RWxlbWVudENsb25lIiwiY2xvbmVOb2RlIiwic2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCIsInJlbWFpbmluZ0luZGV4ZXMiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJjaGlsZE5vZGVzIiwiaXRlbSIsIkFMV0FZU19UUkFOU0lUSU9OIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9wIiwiZGF0YVByZWZmaXgiLCJyZXBlYXRhYmxlIiwidXNlTWVtbyIsInAiLCJyZXBsYWNlIiwiXyIsInZhbCIsInRvTG93ZXJDYXNlIiwiX2RhdGFQcmVmZml4IiwiZGF0YVByb3BlcnR5IiwiaGVyb1JlZiIsInVzZVJlZiIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzZXRBdHRyaWJ1dGUiLCJnZXRIZXJvc09uU2NyZWVuIiwidXNlQ2FsbGJhY2siLCJvdGhlckVsZW1lbnRzIiwiZG9jdW1lbnQiLCJ0cmlnZ2VySGVyb0FuaW1hdGlvbiIsImFsbFByb3BzVG9UcmFuc2l0aW9uIiwib3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbGVtZW50IiwiY3VycmVudEVsQ29vcmRpbmF0ZXMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIm90aGVyRWxlbWVudCIsImZpbmQiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJvbkJlZm9yZVRyYW5zaXRpb24iLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwid2lsbFRoZUhlcm9Nb3ZlIiwidGFyZ2V0Iiwid2lsbEl0TW92ZSIsIk1hdGgiLCJ0cnVuYyIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsInNldENsb25lVG9Db29yZGluYXRlc09mIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJ3aWxsTW92ZSIsInBvc2l0aW9uIiwiaXRXb250TW92ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInByb3BUb1RyYW5zaXRpb24iLCJnZXRDb21wdXRlZFN0eWxlIiwidHJhbnNpdGlvbiIsInByb3AiLCJzdWIiLCJqb2luIiwiZWxJdFdpbGxUcmFuc2l0aW9uVG8iLCJjbGVhbnVwIiwib25IZXJvRW5kIiwicmVtb3ZlIiwib25IZXJvU3RhcnQiLCJpbml0aWFsT2Zmc2V0IiwicyIsIl9yZWYiLCJkIiwiY29udGFpbnMiLCJzY3JvbGxUb3AiLCJtYXJnaW5Ub3AiLCJ0cmFuc2l0aW9uRW5kQ2IiLCJvd25FdmVudCIsIl9yZWYyIiwiY3VycmVudFRhcmdldCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25DYW5jZWxDYiIsInVzZUVmZmVjdCIsInRyaWdnZXIiLCJoZXJvQ29tcG9uZW50UmVmIiwiY29tcG9uZW50SWQiLCJlbFJlZiIsImNsYXNzTGlzdCIsImFkZCIsIlN0eWxlcyIsImNvbXBvbmVudCIsImlzRWxlbWVudE91dHNpZGVWaWV3cG9ydCIsImVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydCIsImVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQiLCJjb250YWluZXIiLCJWaXN1YWxWaWV3cG9ydCIsImNvbnRhaW5lckJvdW5kcyIsImlzQ29udGFpbmVyT3V0c2lkZVZpZXdwb3J0IiwiY2VudGVyUG9pbnQiLCJyZWN0IiwiYW5nbGUiLCJwb2ludEEiLCJwb2ludEIiLCJhdGFuMiIsIlBJIiwidG9GaXhlZCIsIlRSQU5TSVRJT05fRkFDVE9SWSIsImV4cG9ydHMiLCJBQ0NFTEVSQVRJT04iLCJhY2NlbGVyYXRpb24iLCJjZW50ZXJQb2ludE9yaWdpbiIsImNlbnRlclBvaW50RGVzdGluYXRpb24iLCJhbmdsZUJldHdlZW5FbGVtZW50cyIsInZlY3RvclgiLCJzaW4iLCJ2ZWN0b3JZIiwiY29zIiwicm90YXRlWSIsIm9yaWdpblgiLCJyb3RhdGVYIiwib3JpZ2luWSIsInNldFByb3BlcnR5IiwicGVyc3BlY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlSGVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQ1NTUHJvcGVydGllcyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi91dGlscy9vd25FdmVudFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi91c2VIZXJvLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IElEID0gKGlkOiBzdHJpbmcpID0+IGAke2lkfS1oZXJvYDtcbnR5cGUgU2hvdWxkU2tpcCA9IGJvb2xlYW47XG50eXBlIFJlc3VsdCA9IFtcbiAgb3JpZ2luQ29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnQsXG4gIHRhcmdldENvbnRhaW5lcjogRWxlbWVudCB8IFZpc3VhbFZpZXdwb3J0XG5dO1xuY29uc3Qgdmlld3BvcnQgPSB3aW5kb3cudmlzdWFsVmlld3BvcnQhO1xuY29uc3QgREFUQV9UQUdfSEVST19DT01QT05FTlQgPSBcImRhdGEtaGVyby1jb21wb25lbnRcIjtcblxuZnVuY3Rpb24gdHJpZ2dlckR5bmFtaWNDb21wb25lbnRzKFxuICBjbG9uZTogSFRNTERpdkVsZW1lbnQsXG4gIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXI6IEhUTUxEaXZFbGVtZW50W10sXG4gIG9yaWdpbjogSFRNTERpdkVsZW1lbnRcbikge1xuICBjb25zdCBpZHNUaGF0V2lsbEFwcGVhciA9IGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIubWFwKChhKSA9PlxuICAgIGEuZ2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UKVxuICApO1xuICBjb25zdCBwcmVleGlzdGluZ0NvbXBvbmVudHMgPSBBcnJheS5mcm9tKFxuICAgIGNsb25lLnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfV1gKVxuICApIGFzIEhUTUxEaXZFbGVtZW50W107XG4gIGNvbnN0IHJlbW92ZWRFbGVtZW50czogSFRNTERpdkVsZW1lbnRbXSA9IHByZWV4aXN0aW5nQ29tcG9uZW50cy5maWx0ZXIoXG4gICAgKGVsKSA9PlxuICAgICAgIWlkc1RoYXRXaWxsQXBwZWFyLmluY2x1ZGVzKGVsLmdldEF0dHJpYnV0ZShEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCkpXG4gICk7XG5cbiAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZVtcbiAgICAgICAgaGVpZ2h0S2V5XG4gICAgICBdID0gYCR7ZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5jbGllbnRIZWlnaHR9cHhgO1xuICB9XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGZvciAobGV0IGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQgb2YgcmVtb3ZlZEVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlW2hlaWdodEtleV0gPSBgMHB4YDtcbiAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGUub3BhY2l0eSA9IGAwYDtcbiAgICB9XG4gIH0sIDApO1xuXG4gIGZvciAobGV0IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyIG9mIGNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIpIHtcbiAgICBjb25zdCBhbHJlYWR5SW5qZWN0ZWRFbGVtZW50ID0gISFjbG9uZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFske0RBVEFfVEFHX0hFUk9fQ09NUE9ORU5UfT1cIiR7Y29tcG9uZW50VGhhdFdpbGxBcHBlYXIuZ2V0QXR0cmlidXRlKFxuICAgICAgICBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVFxuICAgICAgKX1cIl1gXG4gICAgKTtcbiAgICBpZiAoIWFscmVhZHlJbmplY3RlZEVsZW1lbnQpIHtcbiAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgZnJvbUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgICBwYXRoU3VmZml4OiBzdHJpbmcgPSBcIlwiXG4gICAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoZnJvbUVsZW1lbnQgPT09IG9yaWdpbikgcmV0dXJuIHBhdGhTdWZmaXg7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGZyb21FbGVtZW50LnBhcmVudEVsZW1lbnQhO1xuICAgICAgICBjb25zdCBwYXJlbnRDaGlsZHMgPSBBcnJheS5mcm9tKHBhcmVudC5jaGlsZHJlbik7XG4gICAgICAgIGNvbnN0IGVsQ2hpbGRTZWxlY3RvciA9IGA6bnRoLWNoaWxkKCR7XG4gICAgICAgICAgcGFyZW50Q2hpbGRzLmluZGV4T2YoZnJvbUVsZW1lbnQpICsgMVxuICAgICAgICB9KWA7XG5cbiAgICAgICAgaWYgKGZyb21FbGVtZW50ICE9PSBvcmlnaW4pXG4gICAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgIGAke2VsQ2hpbGRTZWxlY3Rvcn0ke3BhdGhTdWZmaXggPyBgPiR7cGF0aFN1ZmZpeH1gIDogXCJcIn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gcGF0aFN1ZmZpeDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCA9IHJlY3Vyc2l2ZUJ1aWxkUGF0aChcbiAgICAgICAgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIucGFyZW50RWxlbWVudCFcbiAgICAgICk7XG4gICAgICBjb25zdCBpbnNlcnRBdEluZGV4ID0gQXJyYXkuZnJvbShcbiAgICAgICAgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIucGFyZW50RWxlbWVudCEuY2hpbGRyZW5cbiAgICAgICkuaW5kZXhPZihjb21wb25lbnRUaGF0V2lsbEFwcGVhcik7XG5cbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRDbG9uZSA9IGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmNsb25lTm9kZShcbiAgICAgICAgdHJ1ZVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZVtoZWlnaHRLZXldID0gXCIwcHhcIjtcbiAgICAgIGNvbnN0IHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQgPSB3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnRcbiAgICAgICAgPyBjbG9uZS5xdWVyeVNlbGVjdG9yKHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudCkhXG4gICAgICAgIDogY2xvbmU7XG4gICAgICBjb25zdCByZW1haW5pbmdJbmRleGVzID0gQXJyYXkuZnJvbShzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmNoaWxkcmVuKVxuICAgICAgICAubWFwKChlbCwgaSkgPT5cbiAgICAgICAgICByZW1vdmVkRWxlbWVudHMuaW5jbHVkZXMoZWwgYXMgSFRNTERpdkVsZW1lbnQpID8gdW5kZWZpbmVkIDogaVxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKGUpID0+IGUgIT09IHVuZGVmaW5lZCkgYXMgbnVtYmVyW107XG5cbiAgICAgIGlmIChpbnNlcnRBdEluZGV4ID09PSByZW1haW5pbmdJbmRleGVzLmxlbmd0aClcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5hcHBlbmQodGFyZ2V0RWxlbWVudENsb25lKTtcbiAgICAgIGVsc2VcbiAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLFxuICAgICAgICAgIHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuY2hpbGROb2Rlcy5pdGVtKFxuICAgICAgICAgICAgcmVtYWluaW5nSW5kZXhlc1tpbnNlcnRBdEluZGV4XVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBoZWlnaHRLZXkgb2YgW1wiaGVpZ2h0XCIsIFwibWluSGVpZ2h0XCIsIFwibWF4SGVpZ2h0XCJdIGFzIGNvbnN0KVxuICAgICAgICAgIHRhcmdldEVsZW1lbnRDbG9uZS5zdHlsZVtcbiAgICAgICAgICAgIGhlaWdodEtleVxuICAgICAgICAgIF0gPSBgJHtjb21wb25lbnRUaGF0V2lsbEFwcGVhci5jbGllbnRIZWlnaHR9cHhgO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IEFMV0FZU19UUkFOU0lUSU9OID0gW1widG9wXCIsIFwibGVmdFwiXTtcblxuLyoqXG4gKiBUaGlzIGhvb2sgaW1wbGVtZW50cyB0aGUgbG9naWMgZm9yIGEgaGVybyBhbmltYXRpb24gYmV0d2VlbiAyIGVsZW1lbnRzIHNoYXJpbmcgdGhlIHNhbWUgaWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSGVybyhcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogUGFydGlhbDx7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IEV4Y2x1ZGU8XG4gICAgICBrZXlvZiBDU1NQcm9wZXJ0aWVzLFxuICAgICAgXCJ3aWR0aFwiIHwgXCJoZWlnaHRcIiB8IFwidG9wXCIgfCBcImxlZnRcIlxuICAgID5bXTtcbiAgICAvKiogSWYgc2V0LCB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzICh3aWR0aCwgaGVpZ2h0LCBldGMuLi4pIHdpbGwgbm90IHRyYW5zaXRpb24sIGFuZCBwcm9wc1RvVHJhbnNpdGlvbiB3aWxsIGJlIHRoZSBvbmx5IG9uZXMgdGhhdCB3aWxsIGJlIHRyYW5zaXRpb25lZCAqL1xuICAgIG92ZXJyaWRlUHJvcHNUb1RyYW5zaXRpb246IGJvb2xlYW47XG5cbiAgICBcImRhdGEtcHJlZmZpeFwiOiBzdHJpbmc7XG4gICAgLyoqIFRoaXMgaW5kaWNhdGVzIHRoaXMgaGVybyBhbmltYXRpb24gd2lsbCBwcm9iYWJseSBiZSByZXBlYXRlZCBtdWx0aXBsZSB0aW1lICovXG4gICAgcmVwZWF0YWJsZTogYm9vbGVhbjtcbiAgfT4gPSB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IFtdLFxuICB9LFxuICBldmVudHM6IHtcbiAgICAvKipcbiAgICAgKiBTaG91bGQgcmV0dXJuIGlmIHRoZSBkZXRlY3RlZCBlbGVtZW50IHNob3VsZCBiZSBcImhlcm9lZFwiXG4gICAgICpcbiAgICAgKiBVc2VmdWxsIGZvciB3aGVuIHRoZSBoZXJvIGhhcyAyIHBvc3NpYmxlIG9yaWdpbnMuXG4gICAgICogRm9yIGV4YW1wbGUsIG9uZSBjb3VsZCBoZXJvIG9ubHkgdGhlIGN1cnJlbnQgaG92ZXJlZCBlbGVtZW50IHdpdGggZWwubWF0Y2hlcyhcIjpob3ZlclwiKVxuICAgICAqL1xuICAgIG9uSGVyb0RldGVjdD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRG8gc29tZXRoaW5nIHdoZW4gdGhlIGhlcm8gZW5kc1xuICAgICAqXG4gICAgICogVXNlZnVsbCBmb3IgdHJpZ2dlcmluZyBzZWNvbmRhcnkgYW5pbWF0aW9uc1xuICAgICAqL1xuICAgIG9uSGVyb0VuZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogRG8gc29tZXRoaWduIHdpdGggdGhlIGNsb25lIGJlZm9yZSBpdCBnb2VzIHRvIHRoZSBodG1sICovXG4gICAgb25IZXJvQ2xvbmVkPzogKGNsb25lOiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIERvIHNvbWV0aGluZyB3aGVuIHRoZSBoZXJvIHN0YXJ0cyB0aGUgdHJhbnNpdGlvblxuICAgICAqIEhlcmUgaXQncyB1c2VmdWxsIHRvIHN3aXRjaCBjbGFzc05hbWVzIHdpdGggdGhlIHRhcmdldC5cbiAgICAgKlxuICAgICAqIElmIGRvbmUgY29ycmVjdGx5LCBpdCB3aWxsIHRyYW5zaXRpb24gZnJvbSBzdGF0ZSBhIHRvIGIgc21vb3RobHlcbiAgICAgKi9cbiAgICBvbkhlcm9TdGFydD86IChcbiAgICAgIGNsb25lOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogSXMgY2FsbGVkIHdoZW4gdGhlIGhlcm8gaXMgY29taW5nL2dvaW5nIG91dHNpZGUgdGhlIHZpZXdwb3J0XG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0IGl0J3Mgc2V0IHRvIHNraXAgYWxsIGhlcm9lcyB0aGF0IGhhdmUgdGhlc2UgY29uZGl0aW9uc1xuICAgICAqXG4gICAgICogQHJldHVybnMgSWYgdGhlIGhlcm8gc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90XG4gICAgICovXG4gICAgb25IZXJvU2tpcD86IChvcmlnaW46IEhUTUxEaXZFbGVtZW50LCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiBTaG91bGRTa2lwO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gYSBoZXJvIGlzIHNraXBwZWRcbiAgICAgKi9cbiAgICBvbkhlcm9Ta2lwcGVkPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEJlZm9yZSB0cmFuc2l0aW9uIHN0YXJ0LCBzZXR1cCB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgaGVybyBhbmltYXRpb25cbiAgICAgKiBAcmV0dXJucyBUaGUgY29udGFpbmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBoZXJvIGlzIG91dCBvciBpbiB0aGUgdmlld1xuICAgICAqL1xuICAgIG9uQmVmb3JlVHJhbnNpdGlvbj86IChcbiAgICAgIG9yaWdpbjogSFRNTERpdkVsZW1lbnQsXG4gICAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50XG4gICAgKSA9PiBSZXN1bHQgfCBSZWFkb25seTxSZXN1bHQ+O1xuICB9ID0ge31cbikge1xuICBjb25zdCB7XG4gICAgcHJvcHNUb1RyYW5zaXRpb246IF9wID0gW10sXG4gICAgXCJkYXRhLXByZWZmaXhcIjogZGF0YVByZWZmaXgsXG4gICAgcmVwZWF0YWJsZSxcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHByb3BzVG9UcmFuc2l0aW9uID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgX3AubWFwKChwKSA9PiBwLnJlcGxhY2UoLyhbQS1aXSkvZywgKF8sIHZhbCkgPT4gYC0ke3ZhbC50b0xvd2VyQ2FzZSgpfWApKSxcbiAgICBbX3BdXG4gICk7XG4gIGNvbnN0IF9kYXRhUHJlZmZpeCA9IGRhdGFQcmVmZml4ID8gYC0ke2RhdGFQcmVmZml4fWAgOiBcIlwiO1xuICBjb25zdCBkYXRhUHJvcGVydHkgPSBgZGF0YSR7X2RhdGFQcmVmZml4fS1oZXJvYDtcbiAgY29uc3QgaGVyb1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBoZXJvUmVmLmN1cnJlbnQhLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgfSwgW2lkXSk7XG5cbiAgY29uc3QgZ2V0SGVyb3NPblNjcmVlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBvdGhlckVsZW1lbnRzID0gKFxuICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgWyR7ZGF0YVByb3BlcnR5fT1cIiR7aWR9XCJdYClcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnRbXVxuICAgICkuZmlsdGVyKChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCk7XG4gICAgcmV0dXJuIG90aGVyRWxlbWVudHM7XG4gIH0sIFtpZF0pO1xuXG4gIGZ1bmN0aW9uIHRyaWdnZXJIZXJvQW5pbWF0aW9uKCkge1xuICAgIGNvbnN0IGFsbFByb3BzVG9UcmFuc2l0aW9uID0gb3B0aW9ucy5vdmVycmlkZVByb3BzVG9UcmFuc2l0aW9uXG4gICAgICA/IFsuLi5BTFdBWVNfVFJBTlNJVElPTiwgLi4ucHJvcHNUb1RyYW5zaXRpb25dXG4gICAgICA6IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIC4uLkFMV0FZU19UUkFOU0lUSU9OLCAuLi5wcm9wc1RvVHJhbnNpdGlvbl07XG4gICAgY29uc3Qgc2hvdWxkSGVyb0ZuID0gZXZlbnRzLm9uSGVyb0RldGVjdCB8fCAoKC4uLmE6IGFueVtdKSA9PiB0cnVlKTtcbiAgICBjb25zdCBvdGhlckVsZW1lbnRzID0gZ2V0SGVyb3NPblNjcmVlbigpLmZpbHRlcigoZWwpID0+XG4gICAgICBzaG91bGRIZXJvRm4oZWwsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IGhlcm9SZWYuY3VycmVudCE7XG4gICAgY29uc3QgY3VycmVudEVsQ29vcmRpbmF0ZXMgPSBjdXJyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIG90aGVyRWxlbWVudHMubGVuZ3RoID4gMilcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJUaGVyZSBhcmUgdG9vIG1hbnkgZWxlbWVudHMgdG8gdHJhbnNpdGlvbiB0bywgSSB3aWxsIHRyYW5zaXRpb24gdG8gdGhlIGZpcnN0IEkgZmluZFwiLFxuICAgICAgICBvdGhlckVsZW1lbnRzXG4gICAgICApO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudCA9IG90aGVyRWxlbWVudHMuZmluZChcbiAgICAgIChlbCkgPT4gZWwgIT09IGhlcm9SZWYuY3VycmVudCFcbiAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgaWYgKG90aGVyRWxlbWVudCkge1xuICAgICAgY29uc3QgW29yaWdpbkNvbnRhaW5lciwgdGFyZ2V0Q29udGFpbmVyXSA9IGV2ZW50cy5vbkJlZm9yZVRyYW5zaXRpb25cbiAgICAgICAgPyBldmVudHMub25CZWZvcmVUcmFuc2l0aW9uKG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICAgICAgOiBbdmlld3BvcnQsIHZpZXdwb3J0XTtcbiAgICAgIGNvbnN0IHNob3VsZFNraXAgPVxuICAgICAgICBpc0VsZW1lbnRPdXRzaWRlQ29udGFpbmVyKHRhcmdldENvbnRhaW5lciwgY3VycmVudEVsQ29vcmRpbmF0ZXMpIHx8XG4gICAgICAgIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIoXG4gICAgICAgICAgb3JpZ2luQ29udGFpbmVyLFxuICAgICAgICAgIG90aGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICApXG4gICAgICAgICAgPyAoZXZlbnRzLm9uSGVyb1NraXAgfHwgKCgpID0+IHRydWUpKShvdGhlckVsZW1lbnQsIGhlcm9SZWYuY3VycmVudCEpXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIGlmIChzaG91bGRTa2lwKSB7XG4gICAgICAgIGV2ZW50cy5vbkhlcm9Ta2lwcGVkPy4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2xkQ2xvbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgWyR7ZGF0YVByb3BlcnR5fS1jbG9uZT1cIiR7SUQoaWQpfVwiXWBcbiAgICAgICk7XG4gICAgICBjb25zdCBjbG9uZSA9IChvbGRDbG9uZSB8fFxuICAgICAgICBvdGhlckVsZW1lbnQuY2xvbmVOb2RlKHRydWUpKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgaWYgKGV2ZW50cy5vbkhlcm9DbG9uZWQgJiYgIW9sZENsb25lKSBldmVudHMub25IZXJvQ2xvbmVkKGNsb25lKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgdGhvcyBwcm9wZXJ0aWVzIHRoYXQgY2FuIGNhdXNlIGNvbmZ1c2lvbiBzaW5jZSBpdCdzIGEgY2xvbmVcbiAgICAgIGNsb25lLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgY2xvbmUucmVtb3ZlQXR0cmlidXRlKGRhdGFQcm9wZXJ0eSk7XG5cbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShgJHtkYXRhUHJvcGVydHl9LWNsb25lYCwgSUQoaWQpKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBJZiBpdCdzIHJlcGVhdGFibGUsIHdlIHNob3VsZCBrZWVwIHRoZSBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBoZXJvIGV4aXN0YW5jZVxuICAgICAgICovXG4gICAgICBpZiAoIXJlcGVhdGFibGUpXG4gICAgICAgIC8vIFNpbmNlIGEgdHJhbnNpdGlvbiBpcyBub3cgdHJpZ2dlcmluZyBmcm9tIHRoZSBvbGQgZWxlbWVudCwgaGUgY2Fubm90IGJlIGNvbnNpZGVyZWQgZm9yIG90aGVyIHRyYW5zaXRpb25zXG4gICAgICAgIG90aGVyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoZGF0YVByb3BlcnR5KTtcblxuICAgICAgZnVuY3Rpb24gd2lsbFRoZUhlcm9Nb3ZlKG9yaWdpbjogRE9NUmVjdCwgdGFyZ2V0OiBET01SZWN0KSB7XG4gICAgICAgIGNvbnN0IHdpbGxJdE1vdmUgPSAhKFxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLnRvcCkgPT09IE1hdGgudHJ1bmModGFyZ2V0LnRvcCkgJiZcbiAgICAgICAgICBNYXRoLnRydW5jKG9yaWdpbi5sZWZ0KSA9PT0gTWF0aC50cnVuYyh0YXJnZXQubGVmdCkgJiZcbiAgICAgICAgICBNYXRoLnRydW5jKG9yaWdpbi53aWR0aCkgPT09IE1hdGgudHJ1bmModGFyZ2V0LndpZHRoKSAmJlxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLmhlaWdodCkgPT09IE1hdGgudHJ1bmModGFyZ2V0LmhlaWdodClcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB3aWxsSXRNb3ZlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gZWxcbiAgICAgICAqIEByZXR1cm5zIFJldHVybnMgaWYgaXQgd2lsbCBtb3ZlXG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIHNldENsb25lVG9Db29yZGluYXRlc09mKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBjbG9uZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgd2lsbE1vdmUgPSB3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG5cbiAgICAgICAgY2xvbmUuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2Nvb3JkaW5hdGVzLnRvcH1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtjb29yZGluYXRlcy5sZWZ0fXB4YDtcbiAgICAgICAgaWYgKGFsbFByb3BzVG9UcmFuc2l0aW9uLmluY2x1ZGVzKFwid2lkdGhcIikpXG4gICAgICAgICAgY2xvbmUuc3R5bGUud2lkdGggPSBgJHtjb29yZGluYXRlcy53aWR0aH1weGA7XG4gICAgICAgIGlmIChhbGxQcm9wc1RvVHJhbnNpdGlvbi5pbmNsdWRlcyhcImhlaWdodFwiKSlcbiAgICAgICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtjb29yZGluYXRlcy5oZWlnaHR9cHhgO1xuXG4gICAgICAgIHJldHVybiB3aWxsTW92ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBoZXJvUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaXRXb250TW92ZSA9ICF3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG4gICAgICBpZiAoaXRXb250TW92ZSkgcmV0dXJuO1xuXG4gICAgICBpZiAoIW9sZENsb25lKSB7XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQgKi9cbiAgICAgICAgc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2Yob3RoZXJFbGVtZW50KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB9XG4gICAgICBoZXJvUmVmLmN1cnJlbnQhLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3RoZXJFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuXG4gICAgICBmb3IgKGxldCBwcm9wVG9UcmFuc2l0aW9uIG9mIHByb3BzVG9UcmFuc2l0aW9uKSB7XG4gICAgICAgIGNsb25lLnN0eWxlW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XSA9XG4gICAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUob3RoZXJFbGVtZW50KVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV07XG4gICAgICB9XG5cbiAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgJHthbGxQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgICAubWFwKFxuICAgICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgICAgYCR7cHJvcC5yZXBsYWNlKFxuICAgICAgICAgICAgICAvW0EtWl0vZyxcbiAgICAgICAgICAgICAgKHN1YikgPT4gYC0ke3N1Yi50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICl9IHZhcigtLWFuaW1hdGlvbi0tc3BlZWQtZmFzdCwgMjUwbXMpIGVhc2Utb3V0YFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiLCBcIil9YDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsSXRXaWxsVHJhbnNpdGlvblRvID0gaGVyb1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudHMub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAgICAgICAgaWYgKGVsSXRXaWxsVHJhbnNpdGlvblRvKSB7XG4gICAgICAgICAgICBpZiAocmVwZWF0YWJsZSlcbiAgICAgICAgICAgICAgZWxJdFdpbGxUcmFuc2l0aW9uVG8hLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgICAgICAgICAgIGVsSXRXaWxsVHJhbnNpdGlvblRvLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9O1xuICAgICAgICB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gICAgICAgICAgY2xvbmUsXG4gICAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICAgIGhlcm9SZWYuY3VycmVudCEucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICAgICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdLFxuICAgICAgICAgIGN1cnJlbnRFbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIGlmIChldmVudHMub25IZXJvU3RhcnQpIHtcbiAgICAgICAgICBldmVudHMub25IZXJvU3RhcnQoY2xvbmUsIG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbEl0V2lsbFRyYW5zaXRpb25Ubykge1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgbmV3IHBvc2l0aW9uICovXG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWxJdFdpbGxUcmFuc2l0aW9uVG8pO1xuICAgICAgICBpZiAoIXdpbGxNb3ZlKSBjbGVhbnVwKCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IHByb3BUb1RyYW5zaXRpb24gb2YgcHJvcHNUb1RyYW5zaXRpb24pXG4gICAgICAgICAgICBjbG9uZS5zdHlsZVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV0gPVxuICAgICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbEl0V2lsbFRyYW5zaXRpb25UbylbXG4gICAgICAgICAgICAgICAgcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnlcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBsZXQgaW5pdGlhbE9mZnNldDogbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IHMgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChkLmNvbnRhaW5zKGVsSXRXaWxsVHJhbnNpdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhbE9mZnNldCA9PT0gdW5kZWZpbmVkKSBpbml0aWFsT2Zmc2V0ID0gZC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbG9uZS5zdHlsZS5tYXJnaW5Ub3AgPSBgJHstKGQuc2Nyb2xsVG9wIC0gaW5pdGlhbE9mZnNldCl9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvbkVuZENiID0gb3duRXZlbnQoXG4gICAgICAgICAgICAoeyB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfTogVHJhbnNpdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzIGFzIGFueSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCB0cmFuc2l0aW9uRW5kQ2IpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uc3RhcnRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25DYW5jZWxDYiA9IG93bkV2ZW50KChlKSA9PiB7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmNhbmNlbFwiLCBvbkNhbmNlbENiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cmlnZ2VySGVyb0FuaW1hdGlvbigpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZXJvUmVmLFxuICAgIGdldEhlcm9zT25TY3JlZW4sXG4gICAgdHJpZ2dlcjogdHJpZ2dlckhlcm9BbmltYXRpb24sXG4gICAgaGVyb0NvbXBvbmVudFJlZjpcbiAgICAgIChjb21wb25lbnRJZDogc3RyaW5nKSA9PiAoZWxSZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZWxSZWYpIHtcbiAgICAgICAgICBlbFJlZi5zZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQsIGNvbXBvbmVudElkKTtcbiAgICAgICAgICBlbFJlZi5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29vcmRpbmF0ZXM6IERPTVJlY3QpIHtcbiAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICBjb29yZGluYXRlcy5sZWZ0ID49IHZpZXdwb3J0LndpZHRoIHx8IGNvb3JkaW5hdGVzLnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQ7XG4gIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPD0gLWNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgY29vcmRpbmF0ZXMudG9wIDw9IC1jb29yZGluYXRlcy5oZWlnaHQ7XG4gIHJldHVybiBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydDtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgY29udGFpbmVyOiBWaXN1YWxWaWV3cG9ydCB8IEVsZW1lbnQsXG4gIGNvb3JkaW5hdGVzOiBET01SZWN0XG4pIHtcbiAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIFZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlcyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGFpbmVyQm91bmRzID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQgPVxuICAgICAgaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvbnRhaW5lckJvdW5kcyk7XG5cbiAgICBpZiAoaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29udGFpbmVyQm91bmRzLmxlZnQgKyBjb250YWluZXJCb3VuZHMud2lkdGggfHxcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCA+PSBjb250YWluZXJCb3VuZHMudG9wICsgY29udGFpbmVyQm91bmRzLmhlaWdodDtcblxuICAgIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29udGFpbmVyQm91bmRzLmxlZnQgLSBjb29yZGluYXRlcy5sZWZ0ID49IGNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgICBjb250YWluZXJCb3VuZHMudG9wIC0gY29vcmRpbmF0ZXMudG9wID49IGNvb3JkaW5hdGVzLmhlaWdodDtcblxuICAgIHJldHVybiBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0IHx8IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydDtcbiAgfVxufVxuXG50eXBlIEVWRU5UU19JTlRFUkZBQ0UgPSBQYXJhbWV0ZXJzPHR5cGVvZiB1c2VIZXJvPlsyXTtcbnR5cGUgVFJBTlNJVElPTl9UWVBFUyA9IFwiQUNDRUxFUkFUSU9OXCI7XG5mdW5jdGlvbiBjZW50ZXJQb2ludChyZWN0OiBET01SZWN0KSB7XG4gIHJldHVybiBbcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyXSBhcyBjb25zdDtcbn1cbmNvbnN0IGFuZ2xlID0gKFxuICBwb2ludEE6IHJlYWRvbmx5IFt4OiBudW1iZXIsIHk6IG51bWJlcl0sXG4gIHBvaW50QjogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXVxuKSA9PlxuICBOdW1iZXIoXG4gICAgKFxuICAgICAgTWF0aC5hdGFuMihwb2ludEFbMV0gLSBwb2ludEJbMV0sIHBvaW50QVswXSAtIHBvaW50QlswXSkgKlxuICAgICAgKDE3OS4wOCAvIE1hdGguUEkpXG4gICAgKS50b0ZpeGVkKDUpXG4gICk7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9GQUNUT1JZOiB7XG4gIFtuIGluIFRSQU5TSVRJT05fVFlQRVNdOiAoZXZlbnRzPzogRVZFTlRTX0lOVEVSRkFDRSkgPT4gRVZFTlRTX0lOVEVSRkFDRTtcbn0gPSB7XG4gIEFDQ0VMRVJBVElPTjogKGV2ZW50cykgPT4gKHtcbiAgICAuLi5ldmVudHMsXG4gICAgb25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KSB7XG4gICAgICBpZiAoZXZlbnRzPy5vbkhlcm9TdGFydCkgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvcmlnaW4sIHRhcmdldCk7XG4gICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5hY2NlbGVyYXRpb24pO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnRPcmlnaW4gPSBjZW50ZXJQb2ludChvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnREZXN0aW5hdGlvbiA9IGNlbnRlclBvaW50KFxuICAgICAgICB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICk7XG4gICAgICBjb25zdCBhbmdsZUJldHdlZW5FbGVtZW50cyA9IGFuZ2xlKFxuICAgICAgICBjZW50ZXJQb2ludE9yaWdpbixcbiAgICAgICAgY2VudGVyUG9pbnREZXN0aW5hdGlvblxuICAgICAgKTtcbiAgICAgIGNvbnN0IHZlY3RvclggPSBNYXRoLnNpbihhbmdsZUJldHdlZW5FbGVtZW50cyk7XG4gICAgICBjb25zdCB2ZWN0b3JZID0gTWF0aC5jb3MoYW5nbGVCZXR3ZWVuRWxlbWVudHMpO1xuXG4gICAgICBjb25zdCByb3RhdGVZID0gKDEwICogdmVjdG9yWSkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblggPSAodmVjdG9yWSArIDEpICogNTA7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVggPSAtKDEwICogdmVjdG9yWCkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblkgPSAodmVjdG9yWCArIDEpICogNTA7XG5cbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMVwiLFxuICAgICAgICBgcm90YXRlWSgke3JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LXJvdGF0ZVh9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXN0YWdlLTJcIixcbiAgICAgICAgYHJvdGF0ZVkoJHstcm90YXRlWSAqIDAuM31kZWcpIHJvdGF0ZVgoJHtyb3RhdGVYICogMC4zfWRlZylgXG4gICAgICApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXCItLW9yaWdpbi0xXCIsIGAke29yaWdpblh9JSAke29yaWdpbll9JWApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1vcmlnaW4tMlwiLFxuICAgICAgICBgJHsxMDAgLSBvcmlnaW5YfSUgJHsxMDAgLSBvcmlnaW5ZfSVgXG4gICAgICApO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiMTAwdndcIjtcbiAgICB9LFxuICAgIG9uSGVyb0VuZCgpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiXCI7XG4gICAgfSxcbiAgfSksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUEsSUFBQUMsU0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQTJDLFNBQUFFLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFI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QztNQUM5QyxNQUFNRyxPQUFPLEdBQUd4RSxJQUFJLENBQUN5RSxHQUFHLENBQUNKLG9CQUFvQixDQUFDO01BRTlDLE1BQU1LLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBR0YsT0FBTyxFQUFFVixPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ3pDLE1BQU1hLE9BQU8sR0FBRyxDQUFDSCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUU7TUFFbEMsTUFBTUksT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUdOLE9BQU8sRUFBRVIsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUMxQyxNQUFNZSxPQUFPLEdBQUcsQ0FBQ1AsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFO01BRWxDeEssS0FBSyxDQUFDZ0IsS0FBSyxDQUFDZ0ssV0FBVyxDQUNyQixXQUFXLGFBQUF0TCxNQUFBLENBQ0FrTCxPQUFPLG1CQUFBbEwsTUFBQSxDQUFnQixDQUFDb0wsT0FBTyxTQUM1QyxDQUFDO01BQ0Q5SyxLQUFLLENBQUNnQixLQUFLLENBQUNnSyxXQUFXLENBQ3JCLFdBQVcsYUFBQXRMLE1BQUEsQ0FDQSxDQUFDa0wsT0FBTyxHQUFHLEdBQUcsbUJBQUFsTCxNQUFBLENBQWdCb0wsT0FBTyxHQUFHLEdBQUcsU0FDeEQsQ0FBQztNQUNEOUssS0FBSyxDQUFDZ0IsS0FBSyxDQUFDZ0ssV0FBVyxDQUFDLFlBQVksS0FBQXRMLE1BQUEsQ0FBS21MLE9BQU8sUUFBQW5MLE1BQUEsQ0FBS3FMLE9BQU8sTUFBRyxDQUFDO01BQ2hFL0ssS0FBSyxDQUFDZ0IsS0FBSyxDQUFDZ0ssV0FBVyxDQUNyQixZQUFZLEtBQUF0TCxNQUFBLENBQ1QsR0FBRyxHQUFHbUwsT0FBTyxRQUFBbkwsTUFBQSxDQUFLLEdBQUcsR0FBR3FMLE9BQU8sTUFDcEMsQ0FBQztNQUNENUcsUUFBUSxDQUFDMkMsSUFBSSxDQUFDOUYsS0FBSyxDQUFDaUssV0FBVyxHQUFHLE9BQU87SUFDM0MsQ0FBQztJQUNEekQsU0FBU0EsQ0FBQSxFQUFHO01BQ1YsSUFBSXpFLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUV5RSxTQUFTLEVBQUV6RSxNQUFNLENBQUN5RSxTQUFTLENBQUMsQ0FBQztNQUN6Q3JELFFBQVEsQ0FBQzJDLElBQUksQ0FBQzlGLEtBQUssQ0FBQ2lLLFdBQVcsR0FBRyxFQUFFO0lBQ3RDO0VBQUM7QUFFTCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
273
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX293bkV2ZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VIZXJvTW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIklEIiwiaWQiLCJjb25jYXQiLCJ2aWV3cG9ydCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiREFUQV9UQUdfSEVST19DT01QT05FTlQiLCJ0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMiLCJjbG9uZSIsImNvbXBvbmVudHNGcm9tT3JpZ2luVGhhdFdpbGxBcHBlYXIiLCJvcmlnaW4iLCJpZHNUaGF0V2lsbEFwcGVhciIsIm1hcCIsImEiLCJnZXRBdHRyaWJ1dGUiLCJwcmVleGlzdGluZ0NvbXBvbmVudHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicmVtb3ZlZEVsZW1lbnRzIiwiZWwiLCJpbmNsdWRlcyIsImVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQiLCJoZWlnaHRLZXkiLCJzdHlsZSIsImNsaWVudEhlaWdodCIsInNldFRpbWVvdXQiLCJvcGFjaXR5IiwiY29tcG9uZW50VGhhdFdpbGxBcHBlYXIiLCJhbHJlYWR5SW5qZWN0ZWRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInJlY3Vyc2l2ZUJ1aWxkUGF0aCIsImZyb21FbGVtZW50IiwicGF0aFN1ZmZpeCIsInVuZGVmaW5lZCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwYXJlbnRDaGlsZHMiLCJjaGlsZHJlbiIsImVsQ2hpbGRTZWxlY3RvciIsImluZGV4T2YiLCJ3aGF0SXNUaGVFbGVtZW50UGF0aEZyb21DbG9uZUVsZW1lbnQiLCJpbnNlcnRBdEluZGV4IiwidGFyZ2V0RWxlbWVudENsb25lIiwiY2xvbmVOb2RlIiwic2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCIsInJlbWFpbmluZ0luZGV4ZXMiLCJhcHBlbmQiLCJpbnNlcnRCZWZvcmUiLCJjaGlsZE5vZGVzIiwiaXRlbSIsIkFMV0FZU19UUkFOU0lUSU9OIiwidXNlSGVybyIsIm9wdGlvbnMiLCJwcm9wc1RvVHJhbnNpdGlvbiIsImV2ZW50cyIsIl9wIiwiZGF0YVByZWZmaXgiLCJyZXBlYXRhYmxlIiwidXNlTWVtbyIsInAiLCJyZXBsYWNlIiwiXyIsInZhbCIsInRvTG93ZXJDYXNlIiwiX2RhdGFQcmVmZml4IiwiZGF0YVByb3BlcnR5IiwiaGVyb1JlZiIsInVzZVJlZiIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzZXRBdHRyaWJ1dGUiLCJnZXRIZXJvc09uU2NyZWVuIiwidXNlQ2FsbGJhY2siLCJvdGhlckVsZW1lbnRzIiwiZG9jdW1lbnQiLCJ0cmlnZ2VySGVyb0FuaW1hdGlvbiIsImFsbFByb3BzVG9UcmFuc2l0aW9uIiwib3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbiIsInNob3VsZEhlcm9GbiIsIm9uSGVyb0RldGVjdCIsImN1cnJlbnRFbGVtZW50IiwiY3VycmVudEVsQ29vcmRpbmF0ZXMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIm90aGVyRWxlbWVudCIsImZpbmQiLCJvcmlnaW5Db250YWluZXIiLCJ0YXJnZXRDb250YWluZXIiLCJvbkJlZm9yZVRyYW5zaXRpb24iLCJzaG91bGRTa2lwIiwiaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lciIsIm9uSGVyb1NraXAiLCJfZXZlbnRzJG9uSGVyb1NraXBwZWQiLCJvbkhlcm9Ta2lwcGVkIiwib2xkQ2xvbmUiLCJvbkhlcm9DbG9uZWQiLCJ2aXNpYmlsaXR5IiwicmVtb3ZlQXR0cmlidXRlIiwid2lsbFRoZUhlcm9Nb3ZlIiwidGFyZ2V0Iiwid2lsbEl0TW92ZSIsIk1hdGgiLCJ0cnVuYyIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsInNldENsb25lVG9Db29yZGluYXRlc09mIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJ3aWxsTW92ZSIsInBvc2l0aW9uIiwiaXRXb250TW92ZSIsIl9ldmVudHMkb25IZXJvRW5kIiwib25IZXJvRW5kIiwiYm9keSIsImFwcGVuZENoaWxkIiwicHJvcFRvVHJhbnNpdGlvbiIsImdldENvbXB1dGVkU3R5bGUiLCJ0cmFuc2l0aW9uIiwicHJvcCIsInN1YiIsImpvaW4iLCJlbEl0V2lsbFRyYW5zaXRpb25UbyIsImNsZWFudXAiLCJyZW1vdmUiLCJvbkhlcm9TdGFydCIsImluaXRpYWxPZmZzZXQiLCJzIiwiX3JlZiIsImQiLCJjb250YWlucyIsInNjcm9sbFRvcCIsIm1hcmdpblRvcCIsInRyYW5zaXRpb25FbmRDYiIsIm93bkV2ZW50IiwiX3JlZjIiLCJjdXJyZW50VGFyZ2V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkNhbmNlbENiIiwidXNlRWZmZWN0IiwidHJpZ2dlciIsImhlcm9Db21wb25lbnRSZWYiLCJjb21wb25lbnRJZCIsImVsUmVmIiwiY2xhc3NMaXN0IiwiYWRkIiwiU3R5bGVzIiwiY29tcG9uZW50IiwiaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0IiwiZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0IiwiZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydCIsImNvbnRhaW5lciIsIlZpc3VhbFZpZXdwb3J0IiwiY29udGFpbmVyQm91bmRzIiwiaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQiLCJjZW50ZXJQb2ludCIsInJlY3QiLCJhbmdsZSIsInBvaW50QSIsInBvaW50QiIsImF0YW4yIiwiUEkiLCJ0b0ZpeGVkIiwiVFJBTlNJVElPTl9GQUNUT1JZIiwiZXhwb3J0cyIsIkFDQ0VMRVJBVElPTiIsImFjY2VsZXJhdGlvbiIsImNlbnRlclBvaW50T3JpZ2luIiwiY2VudGVyUG9pbnREZXN0aW5hdGlvbiIsImFuZ2xlQmV0d2VlbkVsZW1lbnRzIiwidmVjdG9yWCIsInNpbiIsInZlY3RvclkiLCJjb3MiLCJyb3RhdGVZIiwib3JpZ2luWCIsInJvdGF0ZVgiLCJvcmlnaW5ZIiwic2V0UHJvcGVydHkiLCJwZXJzcGVjdGl2ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VIZXJvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBDU1NQcm9wZXJ0aWVzLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgb3duRXZlbnQgZnJvbSBcIi4uL3V0aWxzL293bkV2ZW50XCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL3VzZUhlcm8ubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgSUQgPSAoaWQ6IHN0cmluZykgPT4gYCR7aWR9LWhlcm9gO1xudHlwZSBTaG91bGRTa2lwID0gYm9vbGVhbjtcbnR5cGUgUmVzdWx0ID0gW1xuICBvcmlnaW5Db250YWluZXI6IEVsZW1lbnQgfCBWaXN1YWxWaWV3cG9ydCxcbiAgdGFyZ2V0Q29udGFpbmVyOiBFbGVtZW50IHwgVmlzdWFsVmlld3BvcnRcbl07XG5jb25zdCB2aWV3cG9ydCA9IHdpbmRvdy52aXN1YWxWaWV3cG9ydCE7XG5jb25zdCBEQVRBX1RBR19IRVJPX0NPTVBPTkVOVCA9IFwiZGF0YS1oZXJvLWNvbXBvbmVudFwiO1xuXG5mdW5jdGlvbiB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gIGNsb25lOiBIVE1MRGl2RWxlbWVudCxcbiAgY29tcG9uZW50c0Zyb21PcmlnaW5UaGF0V2lsbEFwcGVhcjogSFRNTERpdkVsZW1lbnRbXSxcbiAgb3JpZ2luOiBIVE1MRGl2RWxlbWVudFxuKSB7XG4gIGNvbnN0IGlkc1RoYXRXaWxsQXBwZWFyID0gY29tcG9uZW50c0Zyb21PcmlnaW5UaGF0V2lsbEFwcGVhci5tYXAoKGEpID0+XG4gICAgYS5nZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQpXG4gICk7XG4gIGNvbnN0IHByZWV4aXN0aW5nQ29tcG9uZW50cyA9IEFycmF5LmZyb20oXG4gICAgY2xvbmUucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICkgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgY29uc3QgcmVtb3ZlZEVsZW1lbnRzOiBIVE1MRGl2RWxlbWVudFtdID0gcHJlZXhpc3RpbmdDb21wb25lbnRzLmZpbHRlcihcbiAgICAoZWwpID0+XG4gICAgICAhaWRzVGhhdFdpbGxBcHBlYXIuaW5jbHVkZXMoZWwuZ2V0QXR0cmlidXRlKERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UKSlcbiAgKTtcblxuICBmb3IgKGxldCBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkIG9mIHJlbW92ZWRFbGVtZW50cykge1xuICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICBlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLnN0eWxlW1xuICAgICAgICBoZWlnaHRLZXlcbiAgICAgIF0gPSBgJHtlbGVtZW50VGhhdElzQmVpbmdSZW1vdmVkLmNsaWVudEhlaWdodH1weGA7XG4gIH1cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZm9yIChsZXQgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZCBvZiByZW1vdmVkRWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgIGVsZW1lbnRUaGF0SXNCZWluZ1JlbW92ZWQuc3R5bGVbaGVpZ2h0S2V5XSA9IGAwcHhgO1xuICAgICAgZWxlbWVudFRoYXRJc0JlaW5nUmVtb3ZlZC5zdHlsZS5vcGFjaXR5ID0gYDBgO1xuICAgIH1cbiAgfSwgMCk7XG5cbiAgZm9yIChsZXQgY29tcG9uZW50VGhhdFdpbGxBcHBlYXIgb2YgY29tcG9uZW50c0Zyb21PcmlnaW5UaGF0V2lsbEFwcGVhcikge1xuICAgIGNvbnN0IGFscmVhZHlJbmplY3RlZEVsZW1lbnQgPSAhIWNsb25lLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9PVwiJHtjb21wb25lbnRUaGF0V2lsbEFwcGVhci5nZXRBdHRyaWJ1dGUoXG4gICAgICAgIERBVEFfVEFHX0hFUk9fQ09NUE9ORU5UXG4gICAgICApfVwiXWBcbiAgICApO1xuICAgIGlmICghYWxyZWFkeUluamVjdGVkRWxlbWVudCkge1xuICAgICAgZnVuY3Rpb24gcmVjdXJzaXZlQnVpbGRQYXRoKFxuICAgICAgICBmcm9tRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgIHBhdGhTdWZmaXg6IHN0cmluZyA9IFwiXCJcbiAgICAgICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChmcm9tRWxlbWVudCA9PT0gb3JpZ2luKSByZXR1cm4gcGF0aFN1ZmZpeDtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gZnJvbUVsZW1lbnQucGFyZW50RWxlbWVudCE7XG4gICAgICAgIGNvbnN0IHBhcmVudENoaWxkcyA9IEFycmF5LmZyb20ocGFyZW50LmNoaWxkcmVuKTtcbiAgICAgICAgY29uc3QgZWxDaGlsZFNlbGVjdG9yID0gYDpudGgtY2hpbGQoJHtcbiAgICAgICAgICBwYXJlbnRDaGlsZHMuaW5kZXhPZihmcm9tRWxlbWVudCkgKyAxXG4gICAgICAgIH0pYDtcblxuICAgICAgICBpZiAoZnJvbUVsZW1lbnQgIT09IG9yaWdpbilcbiAgICAgICAgICByZXR1cm4gcmVjdXJzaXZlQnVpbGRQYXRoKFxuICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgYCR7ZWxDaGlsZFNlbGVjdG9yfSR7cGF0aFN1ZmZpeCA/IGA+JHtwYXRoU3VmZml4fWAgOiBcIlwifWBcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlIHJldHVybiBwYXRoU3VmZml4O1xuICAgICAgfVxuICAgICAgY29uc3Qgd2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50ID0gcmVjdXJzaXZlQnVpbGRQYXRoKFxuICAgICAgICBjb21wb25lbnRUaGF0V2lsbEFwcGVhci5wYXJlbnRFbGVtZW50IVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGluc2VydEF0SW5kZXggPSBBcnJheS5mcm9tKFxuICAgICAgICBjb21wb25lbnRUaGF0V2lsbEFwcGVhci5wYXJlbnRFbGVtZW50IS5jaGlsZHJlblxuICAgICAgKS5pbmRleE9mKGNvbXBvbmVudFRoYXRXaWxsQXBwZWFyKTtcblxuICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudENsb25lID0gY29tcG9uZW50VGhhdFdpbGxBcHBlYXIuY2xvbmVOb2RlKFxuICAgICAgICB0cnVlXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgZm9yIChsZXQgaGVpZ2h0S2V5IG9mIFtcImhlaWdodFwiLCBcIm1pbkhlaWdodFwiLCBcIm1heEhlaWdodFwiXSBhcyBjb25zdClcbiAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLnN0eWxlW2hlaWdodEtleV0gPSBcIjBweFwiO1xuICAgICAgY29uc3Qgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudCA9IHdoYXRJc1RoZUVsZW1lbnRQYXRoRnJvbUNsb25lRWxlbWVudFxuICAgICAgICA/IGNsb25lLnF1ZXJ5U2VsZWN0b3Iod2hhdElzVGhlRWxlbWVudFBhdGhGcm9tQ2xvbmVFbGVtZW50KSFcbiAgICAgICAgOiBjbG9uZTtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0luZGV4ZXMgPSBBcnJheS5mcm9tKHNob3VsZEJlSW5zZXJ0ZWRBdEVsZW1lbnQuY2hpbGRyZW4pXG4gICAgICAgIC5tYXAoKGVsLCBpKSA9PlxuICAgICAgICAgIHJlbW92ZWRFbGVtZW50cy5pbmNsdWRlcyhlbCBhcyBIVE1MRGl2RWxlbWVudCkgPyB1bmRlZmluZWQgOiBpXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcigoZSkgPT4gZSAhPT0gdW5kZWZpbmVkKSBhcyBudW1iZXJbXTtcblxuICAgICAgaWYgKGluc2VydEF0SW5kZXggPT09IHJlbWFpbmluZ0luZGV4ZXMubGVuZ3RoKVxuICAgICAgICBzaG91bGRCZUluc2VydGVkQXRFbGVtZW50LmFwcGVuZCh0YXJnZXRFbGVtZW50Q2xvbmUpO1xuICAgICAgZWxzZVxuICAgICAgICBzaG91bGRCZUluc2VydGVkQXRFbGVtZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICB0YXJnZXRFbGVtZW50Q2xvbmUsXG4gICAgICAgICAgc2hvdWxkQmVJbnNlcnRlZEF0RWxlbWVudC5jaGlsZE5vZGVzLml0ZW0oXG4gICAgICAgICAgICByZW1haW5pbmdJbmRleGVzW2luc2VydEF0SW5kZXhdXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGhlaWdodEtleSBvZiBbXCJoZWlnaHRcIiwgXCJtaW5IZWlnaHRcIiwgXCJtYXhIZWlnaHRcIl0gYXMgY29uc3QpXG4gICAgICAgICAgdGFyZ2V0RWxlbWVudENsb25lLnN0eWxlW1xuICAgICAgICAgICAgaGVpZ2h0S2V5XG4gICAgICAgICAgXSA9IGAke2NvbXBvbmVudFRoYXRXaWxsQXBwZWFyLmNsaWVudEhlaWdodH1weGA7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgQUxXQVlTX1RSQU5TSVRJT04gPSBbXCJ0b3BcIiwgXCJsZWZ0XCJdO1xuXG4vKipcbiAqIFRoaXMgaG9vayBpbXBsZW1lbnRzIHRoZSBsb2dpYyBmb3IgYSBoZXJvIGFuaW1hdGlvbiBiZXR3ZWVuIDIgZWxlbWVudHMgc2hhcmluZyB0aGUgc2FtZSBpZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VIZXJvKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zOiBQYXJ0aWFsPHtcbiAgICBwcm9wc1RvVHJhbnNpdGlvbjogRXhjbHVkZTxcbiAgICAgIGtleW9mIENTU1Byb3BlcnRpZXMsXG4gICAgICBcIndpZHRoXCIgfCBcImhlaWdodFwiIHwgXCJ0b3BcIiB8IFwibGVmdFwiXG4gICAgPltdO1xuICAgIC8qKiBJZiBzZXQsIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgKHdpZHRoLCBoZWlnaHQsIGV0Yy4uLikgd2lsbCBub3QgdHJhbnNpdGlvbiwgYW5kIHByb3BzVG9UcmFuc2l0aW9uIHdpbGwgYmUgdGhlIG9ubHkgb25lcyB0aGF0IHdpbGwgYmUgdHJhbnNpdGlvbmVkICovXG4gICAgb3ZlcnJpZGVQcm9wc1RvVHJhbnNpdGlvbjogYm9vbGVhbjtcblxuICAgIFwiZGF0YS1wcmVmZml4XCI6IHN0cmluZztcbiAgICAvKiogVGhpcyBpbmRpY2F0ZXMgdGhpcyBoZXJvIGFuaW1hdGlvbiB3aWxsIHByb2JhYmx5IGJlIHJlcGVhdGVkIG11bHRpcGxlIHRpbWUgKi9cbiAgICByZXBlYXRhYmxlOiBib29sZWFuO1xuICB9PiA9IHtcbiAgICBwcm9wc1RvVHJhbnNpdGlvbjogW10sXG4gIH0sXG4gIGV2ZW50czoge1xuICAgIC8qKlxuICAgICAqIFNob3VsZCByZXR1cm4gaWYgdGhlIGRldGVjdGVkIGVsZW1lbnQgc2hvdWxkIGJlIFwiaGVyb2VkXCJcbiAgICAgKlxuICAgICAqIFVzZWZ1bGwgZm9yIHdoZW4gdGhlIGhlcm8gaGFzIDIgcG9zc2libGUgb3JpZ2lucy5cbiAgICAgKiBGb3IgZXhhbXBsZSwgb25lIGNvdWxkIGhlcm8gb25seSB0aGUgY3VycmVudCBob3ZlcmVkIGVsZW1lbnQgd2l0aCBlbC5tYXRjaGVzKFwiOmhvdmVyXCIpXG4gICAgICovXG4gICAgb25IZXJvRGV0ZWN0PzogKG9yaWdpbjogSFRNTERpdkVsZW1lbnQsIHRhcmdldDogSFRNTERpdkVsZW1lbnQpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBEbyBzb21ldGhpbmcgd2hlbiB0aGUgaGVybyBlbmRzXG4gICAgICpcbiAgICAgKiBVc2VmdWxsIGZvciB0cmlnZ2VyaW5nIHNlY29uZGFyeSBhbmltYXRpb25zXG4gICAgICovXG4gICAgb25IZXJvRW5kPzogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBEbyBzb21ldGhpZ24gd2l0aCB0aGUgY2xvbmUgYmVmb3JlIGl0IGdvZXMgdG8gdGhlIGh0bWwgKi9cbiAgICBvbkhlcm9DbG9uZWQ/OiAoY2xvbmU6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogRG8gc29tZXRoaW5nIHdoZW4gdGhlIGhlcm8gc3RhcnRzIHRoZSB0cmFuc2l0aW9uXG4gICAgICogSGVyZSBpdCdzIHVzZWZ1bGwgdG8gc3dpdGNoIGNsYXNzTmFtZXMgd2l0aCB0aGUgdGFyZ2V0LlxuICAgICAqXG4gICAgICogSWYgZG9uZSBjb3JyZWN0bHksIGl0IHdpbGwgdHJhbnNpdGlvbiBmcm9tIHN0YXRlIGEgdG8gYiBzbW9vdGhseVxuICAgICAqL1xuICAgIG9uSGVyb1N0YXJ0PzogKFxuICAgICAgY2xvbmU6IEhUTUxEaXZFbGVtZW50LFxuICAgICAgb3JpZ2luOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIHRhcmdldDogSFRNTERpdkVsZW1lbnRcbiAgICApID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBJcyBjYWxsZWQgd2hlbiB0aGUgaGVybyBpcyBjb21pbmcvZ29pbmcgb3V0c2lkZSB0aGUgdmlld3BvcnRcbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQgaXQncyBzZXQgdG8gc2tpcCBhbGwgaGVyb2VzIHRoYXQgaGF2ZSB0aGVzZSBjb25kaXRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBJZiB0aGUgaGVybyBzaG91bGQgYmUgc2tpcHBlZCBvciBub3RcbiAgICAgKi9cbiAgICBvbkhlcm9Ta2lwPzogKG9yaWdpbjogSFRNTERpdkVsZW1lbnQsIHRhcmdldDogSFRNTERpdkVsZW1lbnQpID0+IFNob3VsZFNraXA7XG5cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgd2hlbiBhIGhlcm8gaXMgc2tpcHBlZFxuICAgICAqL1xuICAgIG9uSGVyb1NraXBwZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQmVmb3JlIHRyYW5zaXRpb24gc3RhcnQsIHNldHVwIHRoZSBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBoZXJvIGFuaW1hdGlvblxuICAgICAqIEByZXR1cm5zIFRoZSBjb250YWluZXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIGhlcm8gaXMgb3V0IG9yIGluIHRoZSB2aWV3XG4gICAgICovXG4gICAgb25CZWZvcmVUcmFuc2l0aW9uPzogKFxuICAgICAgb3JpZ2luOiBIVE1MRGl2RWxlbWVudCxcbiAgICAgIHRhcmdldDogSFRNTERpdkVsZW1lbnRcbiAgICApID0+IFJlc3VsdCB8IFJlYWRvbmx5PFJlc3VsdD47XG4gIH0gPSB7fVxuKSB7XG4gIGNvbnN0IHtcbiAgICBwcm9wc1RvVHJhbnNpdGlvbjogX3AgPSBbXSxcbiAgICBcImRhdGEtcHJlZmZpeFwiOiBkYXRhUHJlZmZpeCxcbiAgICByZXBlYXRhYmxlLFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcHJvcHNUb1RyYW5zaXRpb24gPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBfcC5tYXAoKHApID0+IHAucmVwbGFjZSgvKFtBLVpdKS9nLCAoXywgdmFsKSA9PiBgLSR7dmFsLnRvTG93ZXJDYXNlKCl9YCkpLFxuICAgIFtfcF1cbiAgKTtcbiAgY29uc3QgX2RhdGFQcmVmZml4ID0gZGF0YVByZWZmaXggPyBgLSR7ZGF0YVByZWZmaXh9YCA6IFwiXCI7XG4gIGNvbnN0IGRhdGFQcm9wZXJ0eSA9IGBkYXRhJHtfZGF0YVByZWZmaXh9LWhlcm9gO1xuICBjb25zdCBoZXJvUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGhlcm9SZWYuY3VycmVudCEuc2V0QXR0cmlidXRlKGRhdGFQcm9wZXJ0eSwgaWQpO1xuICB9LCBbaWRdKTtcblxuICBjb25zdCBnZXRIZXJvc09uU2NyZWVuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG90aGVyRWxlbWVudHMgPSAoXG4gICAgICBBcnJheS5mcm9tKFxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbJHtkYXRhUHJvcGVydHl9PVwiJHtpZH1cIl1gKVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdXG4gICAgKS5maWx0ZXIoKGVsKSA9PiBlbCAhPT0gaGVyb1JlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gb3RoZXJFbGVtZW50cztcbiAgfSwgW2lkXSk7XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckhlcm9BbmltYXRpb24oKSB7XG4gICAgY29uc3QgYWxsUHJvcHNUb1RyYW5zaXRpb24gPSBvcHRpb25zLm92ZXJyaWRlUHJvcHNUb1RyYW5zaXRpb25cbiAgICAgID8gWy4uLkFMV0FZU19UUkFOU0lUSU9OLCAuLi5wcm9wc1RvVHJhbnNpdGlvbl1cbiAgICAgIDogW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgLi4uQUxXQVlTX1RSQU5TSVRJT04sIC4uLnByb3BzVG9UcmFuc2l0aW9uXTtcbiAgICBjb25zdCBzaG91bGRIZXJvRm4gPSBldmVudHMub25IZXJvRGV0ZWN0IHx8ICgoLi4uYTogYW55W10pID0+IHRydWUpO1xuICAgIGNvbnN0IG90aGVyRWxlbWVudHMgPSBnZXRIZXJvc09uU2NyZWVuKCkuZmlsdGVyKChlbCkgPT5cbiAgICAgIHNob3VsZEhlcm9GbihlbCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICApO1xuICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gaGVyb1JlZi5jdXJyZW50ITtcbiAgICBjb25zdCBjdXJyZW50RWxDb29yZGluYXRlcyA9IGN1cnJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIgJiYgb3RoZXJFbGVtZW50cy5sZW5ndGggPiAyKVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlRoZXJlIGFyZSB0b28gbWFueSBlbGVtZW50cyB0byB0cmFuc2l0aW9uIHRvLCBJIHdpbGwgdHJhbnNpdGlvbiB0byB0aGUgZmlyc3QgSSBmaW5kXCIsXG4gICAgICAgIG90aGVyRWxlbWVudHNcbiAgICAgICk7XG4gICAgY29uc3Qgb3RoZXJFbGVtZW50ID0gb3RoZXJFbGVtZW50cy5maW5kKFxuICAgICAgKGVsKSA9PiBlbCAhPT0gaGVyb1JlZi5jdXJyZW50IVxuICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICBpZiAob3RoZXJFbGVtZW50KSB7XG4gICAgICBjb25zdCBbb3JpZ2luQ29udGFpbmVyLCB0YXJnZXRDb250YWluZXJdID0gZXZlbnRzLm9uQmVmb3JlVHJhbnNpdGlvblxuICAgICAgICA/IGV2ZW50cy5vbkJlZm9yZVRyYW5zaXRpb24ob3RoZXJFbGVtZW50LCBoZXJvUmVmLmN1cnJlbnQhKVxuICAgICAgICA6IFt2aWV3cG9ydCwgdmlld3BvcnRdO1xuICAgICAgY29uc3Qgc2hvdWxkU2tpcCA9XG4gICAgICAgIGlzRWxlbWVudE91dHNpZGVDb250YWluZXIodGFyZ2V0Q29udGFpbmVyLCBjdXJyZW50RWxDb29yZGluYXRlcykgfHxcbiAgICAgICAgaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgICAgICAgICBvcmlnaW5Db250YWluZXIsXG4gICAgICAgICAgb3RoZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIClcbiAgICAgICAgICA/IChldmVudHMub25IZXJvU2tpcCB8fCAoKCkgPT4gdHJ1ZSkpKG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISlcbiAgICAgICAgICA6IGZhbHNlO1xuICAgICAgaWYgKHNob3VsZFNraXApIHtcbiAgICAgICAgZXZlbnRzLm9uSGVyb1NraXBwZWQ/LigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBvbGRDbG9uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIGBbJHtkYXRhUHJvcGVydHl9LWNsb25lPVwiJHtJRChpZCl9XCJdYFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNsb25lID0gKG9sZENsb25lIHx8XG4gICAgICAgIG90aGVyRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkpIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICBpZiAoZXZlbnRzLm9uSGVyb0Nsb25lZCAmJiAhb2xkQ2xvbmUpIGV2ZW50cy5vbkhlcm9DbG9uZWQoY2xvbmUpO1xuXG4gICAgICAvLyBDbGVhbiB1cCB0aG9zIHByb3BlcnRpZXMgdGhhdCBjYW4gY2F1c2UgY29uZnVzaW9uIHNpbmNlIGl0J3MgYSBjbG9uZVxuICAgICAgY2xvbmUuc3R5bGUudmlzaWJpbGl0eSA9IFwiXCI7XG4gICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoZGF0YVByb3BlcnR5KTtcblxuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKGAke2RhdGFQcm9wZXJ0eX0tY2xvbmVgLCBJRChpZCkpO1xuXG4gICAgICAvKipcbiAgICAgICAqIElmIGl0J3MgcmVwZWF0YWJsZSwgd2Ugc2hvdWxkIGtlZXAgdGhlIGZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhlIGhlcm8gZXhpc3RhbmNlXG4gICAgICAgKi9cbiAgICAgIGlmICghcmVwZWF0YWJsZSlcbiAgICAgICAgLy8gU2luY2UgYSB0cmFuc2l0aW9uIGlzIG5vdyB0cmlnZ2VyaW5nIGZyb20gdGhlIG9sZCBlbGVtZW50LCBoZSBjYW5ub3QgYmUgY29uc2lkZXJlZCBmb3Igb3RoZXIgdHJhbnNpdGlvbnNcbiAgICAgICAgb3RoZXJFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShkYXRhUHJvcGVydHkpO1xuXG4gICAgICBmdW5jdGlvbiB3aWxsVGhlSGVyb01vdmUob3JpZ2luOiBET01SZWN0LCB0YXJnZXQ6IERPTVJlY3QpIHtcbiAgICAgICAgY29uc3Qgd2lsbEl0TW92ZSA9ICEoXG4gICAgICAgICAgTWF0aC50cnVuYyhvcmlnaW4udG9wKSA9PT0gTWF0aC50cnVuYyh0YXJnZXQudG9wKSAmJlxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLmxlZnQpID09PSBNYXRoLnRydW5jKHRhcmdldC5sZWZ0KSAmJlxuICAgICAgICAgIE1hdGgudHJ1bmMob3JpZ2luLndpZHRoKSA9PT0gTWF0aC50cnVuYyh0YXJnZXQud2lkdGgpICYmXG4gICAgICAgICAgTWF0aC50cnVuYyhvcmlnaW4uaGVpZ2h0KSA9PT0gTWF0aC50cnVuYyh0YXJnZXQuaGVpZ2h0KVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB3aWxsSXRNb3ZlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gZWxcbiAgICAgICAqIEByZXR1cm5zIFJldHVybnMgaWYgaXQgd2lsbCBtb3ZlXG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIHNldENsb25lVG9Db29yZGluYXRlc09mKGVsOiBIVE1MRGl2RWxlbWVudCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBjbG9uZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgd2lsbE1vdmUgPSB3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG5cbiAgICAgICAgY2xvbmUuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2Nvb3JkaW5hdGVzLnRvcH1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtjb29yZGluYXRlcy5sZWZ0fXB4YDtcbiAgICAgICAgaWYgKGFsbFByb3BzVG9UcmFuc2l0aW9uLmluY2x1ZGVzKFwid2lkdGhcIikpXG4gICAgICAgICAgY2xvbmUuc3R5bGUud2lkdGggPSBgJHtjb29yZGluYXRlcy53aWR0aH1weGA7XG4gICAgICAgIGlmIChhbGxQcm9wc1RvVHJhbnNpdGlvbi5pbmNsdWRlcyhcImhlaWdodFwiKSlcbiAgICAgICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtjb29yZGluYXRlcy5oZWlnaHR9cHhgO1xuXG4gICAgICAgIHJldHVybiB3aWxsTW92ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvdGhlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjdXJyZW50Q29vcmRpbmF0ZXMgPSBoZXJvUmVmLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaXRXb250TW92ZSA9ICF3aWxsVGhlSGVyb01vdmUoY29vcmRpbmF0ZXMsIGN1cnJlbnRDb29yZGluYXRlcyk7XG4gICAgICBpZiAoaXRXb250TW92ZSkge1xuICAgICAgICBldmVudHMub25IZXJvRW5kPy4oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW9sZENsb25lKSB7XG4gICAgICAgIC8qKiBTZXQgdGhlIGNsb25lIG92ZXIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQgKi9cbiAgICAgICAgc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2Yob3RoZXJFbGVtZW50KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICB9XG4gICAgICBoZXJvUmVmLmN1cnJlbnQhLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3RoZXJFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuXG4gICAgICBmb3IgKGxldCBwcm9wVG9UcmFuc2l0aW9uIG9mIHByb3BzVG9UcmFuc2l0aW9uKSB7XG4gICAgICAgIGNsb25lLnN0eWxlW3Byb3BUb1RyYW5zaXRpb24gYXMgYW55XSA9XG4gICAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUob3RoZXJFbGVtZW50KVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV07XG4gICAgICB9XG5cbiAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgJHthbGxQcm9wc1RvVHJhbnNpdGlvblxuICAgICAgICAubWFwKFxuICAgICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgICAgYCR7cHJvcC5yZXBsYWNlKFxuICAgICAgICAgICAgICAvW0EtWl0vZyxcbiAgICAgICAgICAgICAgKHN1YikgPT4gYC0ke3N1Yi50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICAgICl9IHZhcigtLWFuaW1hdGlvbi0tc3BlZWQtZmFzdCwgMjUwbXMpIGVhc2Utb3V0YFxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiLCBcIil9YDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsSXRXaWxsVHJhbnNpdGlvblRvID0gaGVyb1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudHMub25IZXJvRW5kKSBldmVudHMub25IZXJvRW5kKCk7XG4gICAgICAgICAgaWYgKGVsSXRXaWxsVHJhbnNpdGlvblRvKSB7XG4gICAgICAgICAgICBpZiAocmVwZWF0YWJsZSlcbiAgICAgICAgICAgICAgZWxJdFdpbGxUcmFuc2l0aW9uVG8hLnNldEF0dHJpYnV0ZShkYXRhUHJvcGVydHksIGlkKTtcbiAgICAgICAgICAgIGVsSXRXaWxsVHJhbnNpdGlvblRvLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9O1xuICAgICAgICB0cmlnZ2VyRHluYW1pY0NvbXBvbmVudHMoXG4gICAgICAgICAgY2xvbmUsXG4gICAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICAgIGhlcm9SZWYuY3VycmVudCEucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9UQUdfSEVST19DT01QT05FTlR9XWApXG4gICAgICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudFtdLFxuICAgICAgICAgIGN1cnJlbnRFbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIGlmIChldmVudHMub25IZXJvU3RhcnQpIHtcbiAgICAgICAgICBldmVudHMub25IZXJvU3RhcnQoY2xvbmUsIG90aGVyRWxlbWVudCwgaGVyb1JlZi5jdXJyZW50ISk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbEl0V2lsbFRyYW5zaXRpb25Ubykge1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFNldCB0aGUgY2xvbmUgb3ZlciB0aGUgbmV3IHBvc2l0aW9uICovXG4gICAgICAgIGNvbnN0IHdpbGxNb3ZlID0gc2V0Q2xvbmVUb0Nvb3JkaW5hdGVzT2YoZWxJdFdpbGxUcmFuc2l0aW9uVG8pO1xuICAgICAgICBpZiAoIXdpbGxNb3ZlKSBjbGVhbnVwKCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IHByb3BUb1RyYW5zaXRpb24gb2YgcHJvcHNUb1RyYW5zaXRpb24pXG4gICAgICAgICAgICBjbG9uZS5zdHlsZVtwcm9wVG9UcmFuc2l0aW9uIGFzIGFueV0gPVxuICAgICAgICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbEl0V2lsbFRyYW5zaXRpb25UbylbXG4gICAgICAgICAgICAgICAgcHJvcFRvVHJhbnNpdGlvbiBhcyBhbnlcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICBsZXQgaW5pdGlhbE9mZnNldDogbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IHMgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGlmIChkLmNvbnRhaW5zKGVsSXRXaWxsVHJhbnNpdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhbE9mZnNldCA9PT0gdW5kZWZpbmVkKSBpbml0aWFsT2Zmc2V0ID0gZC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjbG9uZS5zdHlsZS5tYXJnaW5Ub3AgPSBgJHstKGQuc2Nyb2xsVG9wIC0gaW5pdGlhbE9mZnNldCl9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdHJhbnNpdGlvbkVuZENiID0gb3duRXZlbnQoXG4gICAgICAgICAgICAoeyB0YXJnZXQsIGN1cnJlbnRUYXJnZXQgfTogVHJhbnNpdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIGNsZWFudXAoKTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzIGFzIGFueSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHMgYXMgYW55LCB0cnVlKTtcbiAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCB0cmFuc2l0aW9uRW5kQ2IpO1xuICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uc3RhcnRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25DYW5jZWxDYiA9IG93bkV2ZW50KChlKSA9PiB7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHRyYW5zaXRpb25FbmRDYik7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uQ2FuY2VsQ2IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmNhbmNlbFwiLCBvbkNhbmNlbENiKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cmlnZ2VySGVyb0FuaW1hdGlvbigpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZXJvUmVmLFxuICAgIGdldEhlcm9zT25TY3JlZW4sXG4gICAgdHJpZ2dlcjogdHJpZ2dlckhlcm9BbmltYXRpb24sXG4gICAgaGVyb0NvbXBvbmVudFJlZjpcbiAgICAgIChjb21wb25lbnRJZDogc3RyaW5nKSA9PiAoZWxSZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZWxSZWYpIHtcbiAgICAgICAgICBlbFJlZi5zZXRBdHRyaWJ1dGUoREFUQV9UQUdfSEVST19DT01QT05FTlQsIGNvbXBvbmVudElkKTtcbiAgICAgICAgICBlbFJlZi5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRPdXRzaWRlVmlld3BvcnQoY29vcmRpbmF0ZXM6IERPTVJlY3QpIHtcbiAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICBjb29yZGluYXRlcy5sZWZ0ID49IHZpZXdwb3J0LndpZHRoIHx8IGNvb3JkaW5hdGVzLnRvcCA+PSB2aWV3cG9ydC5oZWlnaHQ7XG4gIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgIGNvb3JkaW5hdGVzLmxlZnQgPD0gLWNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgY29vcmRpbmF0ZXMudG9wIDw9IC1jb29yZGluYXRlcy5oZWlnaHQ7XG4gIHJldHVybiBlbGVtZW50T3ZlcmZsb3dzVmlld3BvcnQgfHwgZWxlbWVudFVuZGVyZmxvd3NWaWV3cG9ydDtcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50T3V0c2lkZUNvbnRhaW5lcihcbiAgY29udGFpbmVyOiBWaXN1YWxWaWV3cG9ydCB8IEVsZW1lbnQsXG4gIGNvb3JkaW5hdGVzOiBET01SZWN0XG4pIHtcbiAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIFZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudE91dHNpZGVWaWV3cG9ydChjb29yZGluYXRlcyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udGFpbmVyQm91bmRzID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQgPVxuICAgICAgaXNFbGVtZW50T3V0c2lkZVZpZXdwb3J0KGNvbnRhaW5lckJvdW5kcyk7XG5cbiAgICBpZiAoaXNDb250YWluZXJPdXRzaWRlVmlld3BvcnQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZWxlbWVudE92ZXJmbG93c1ZpZXdwb3J0ID1cbiAgICAgIGNvb3JkaW5hdGVzLmxlZnQgPj0gY29udGFpbmVyQm91bmRzLmxlZnQgKyBjb250YWluZXJCb3VuZHMud2lkdGggfHxcbiAgICAgIGNvb3JkaW5hdGVzLnRvcCA+PSBjb250YWluZXJCb3VuZHMudG9wICsgY29udGFpbmVyQm91bmRzLmhlaWdodDtcblxuICAgIGNvbnN0IGVsZW1lbnRVbmRlcmZsb3dzVmlld3BvcnQgPVxuICAgICAgY29udGFpbmVyQm91bmRzLmxlZnQgLSBjb29yZGluYXRlcy5sZWZ0ID49IGNvb3JkaW5hdGVzLndpZHRoIHx8XG4gICAgICBjb250YWluZXJCb3VuZHMudG9wIC0gY29vcmRpbmF0ZXMudG9wID49IGNvb3JkaW5hdGVzLmhlaWdodDtcblxuICAgIHJldHVybiBlbGVtZW50VW5kZXJmbG93c1ZpZXdwb3J0IHx8IGVsZW1lbnRPdmVyZmxvd3NWaWV3cG9ydDtcbiAgfVxufVxuXG50eXBlIEVWRU5UU19JTlRFUkZBQ0UgPSBQYXJhbWV0ZXJzPHR5cGVvZiB1c2VIZXJvPlsyXTtcbnR5cGUgVFJBTlNJVElPTl9UWVBFUyA9IFwiQUNDRUxFUkFUSU9OXCI7XG5mdW5jdGlvbiBjZW50ZXJQb2ludChyZWN0OiBET01SZWN0KSB7XG4gIHJldHVybiBbcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyXSBhcyBjb25zdDtcbn1cbmNvbnN0IGFuZ2xlID0gKFxuICBwb2ludEE6IHJlYWRvbmx5IFt4OiBudW1iZXIsIHk6IG51bWJlcl0sXG4gIHBvaW50QjogcmVhZG9ubHkgW3g6IG51bWJlciwgeTogbnVtYmVyXVxuKSA9PlxuICBOdW1iZXIoXG4gICAgKFxuICAgICAgTWF0aC5hdGFuMihwb2ludEFbMV0gLSBwb2ludEJbMV0sIHBvaW50QVswXSAtIHBvaW50QlswXSkgKlxuICAgICAgKDE3OS4wOCAvIE1hdGguUEkpXG4gICAgKS50b0ZpeGVkKDUpXG4gICk7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9GQUNUT1JZOiB7XG4gIFtuIGluIFRSQU5TSVRJT05fVFlQRVNdOiAoZXZlbnRzPzogRVZFTlRTX0lOVEVSRkFDRSkgPT4gRVZFTlRTX0lOVEVSRkFDRTtcbn0gPSB7XG4gIEFDQ0VMRVJBVElPTjogKGV2ZW50cykgPT4gKHtcbiAgICAuLi5ldmVudHMsXG4gICAgb25IZXJvU3RhcnQoY2xvbmUsIG9yaWdpbiwgdGFyZ2V0KSB7XG4gICAgICBpZiAoZXZlbnRzPy5vbkhlcm9TdGFydCkgZXZlbnRzLm9uSGVyb1N0YXJ0KGNsb25lLCBvcmlnaW4sIHRhcmdldCk7XG4gICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5hY2NlbGVyYXRpb24pO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnRPcmlnaW4gPSBjZW50ZXJQb2ludChvcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgY29uc3QgY2VudGVyUG9pbnREZXN0aW5hdGlvbiA9IGNlbnRlclBvaW50KFxuICAgICAgICB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICk7XG4gICAgICBjb25zdCBhbmdsZUJldHdlZW5FbGVtZW50cyA9IGFuZ2xlKFxuICAgICAgICBjZW50ZXJQb2ludE9yaWdpbixcbiAgICAgICAgY2VudGVyUG9pbnREZXN0aW5hdGlvblxuICAgICAgKTtcbiAgICAgIGNvbnN0IHZlY3RvclggPSBNYXRoLnNpbihhbmdsZUJldHdlZW5FbGVtZW50cyk7XG4gICAgICBjb25zdCB2ZWN0b3JZID0gTWF0aC5jb3MoYW5nbGVCZXR3ZWVuRWxlbWVudHMpO1xuXG4gICAgICBjb25zdCByb3RhdGVZID0gKDEwICogdmVjdG9yWSkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblggPSAodmVjdG9yWSArIDEpICogNTA7XG5cbiAgICAgIGNvbnN0IHJvdGF0ZVggPSAtKDEwICogdmVjdG9yWCkudG9GaXhlZCgwKTtcbiAgICAgIGNvbnN0IG9yaWdpblkgPSAodmVjdG9yWCArIDEpICogNTA7XG5cbiAgICAgIGNsb25lLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tc3RhZ2UtMVwiLFxuICAgICAgICBgcm90YXRlWSgke3JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LXJvdGF0ZVh9ZGVnKWBcbiAgICAgICk7XG4gICAgICBjbG9uZS5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXN0YWdlLTJcIixcbiAgICAgICAgYHJvdGF0ZVkoJHstcm90YXRlWSAqIDAuM31kZWcpIHJvdGF0ZVgoJHtyb3RhdGVYICogMC4zfWRlZylgXG4gICAgICApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXCItLW9yaWdpbi0xXCIsIGAke29yaWdpblh9JSAke29yaWdpbll9JWApO1xuICAgICAgY2xvbmUuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS1vcmlnaW4tMlwiLFxuICAgICAgICBgJHsxMDAgLSBvcmlnaW5YfSUgJHsxMDAgLSBvcmlnaW5ZfSVgXG4gICAgICApO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiMTAwdndcIjtcbiAgICB9LFxuICAgIG9uSGVyb0VuZCgpIHtcbiAgICAgIGlmIChldmVudHM/Lm9uSGVyb0VuZCkgZXZlbnRzLm9uSGVyb0VuZCgpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wZXJzcGVjdGl2ZSA9IFwiXCI7XG4gICAgfSxcbiAgfSksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUEsSUFBQUMsU0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQTJDLFNBQUFFLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFB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
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { IntlFormatters, IntlShape } from "react-intl";
|
|
2
2
|
import { BigNumber } from "bignumber.js";
|
|
3
3
|
import { ReactElement } from "react";
|
|
4
|
+
import { FromOnePercentUtility } from "../type-utils";
|
|
4
5
|
export default function useShortIntl(): IntlShape & {
|
|
5
|
-
txt: <R extends ReturnType<IntlFormatters["formatMessage"]> = string>(id:
|
|
6
|
+
txt: <R extends ReturnType<IntlFormatters["formatMessage"]> = string>(id: FromOnePercentUtility<"IntlIds">, params?: Record<string, string | ReactElement>) => R;
|
|
6
7
|
formatToDoubleDecimal(number: number, options?: Parameters<IntlFormatters["formatNumber"]>[1]): string;
|
|
7
8
|
formatBigNumber(number: BigNumber, options?: Parameters<IntlFormatters["formatNumber"]>[1]): string;
|
|
8
9
|
};
|
|
@@ -75,4 +75,4 @@ function isolateMessages(preffix, strings) {
|
|
|
75
75
|
});
|
|
76
76
|
}, {});
|
|
77
77
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3RJbnRsIiwicmVxdWlyZSIsIl9yZWFjdCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwidXNlU2hvcnRJbnRsIiwiaW50bCIsInVzZUludGwiLCJmb3JtYXRNZXNzYWdlIiwiZm9ybWF0TnVtYmVyIiwiZGV2TW9kZSIsInNldERldk1vZGUiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImtleURvd25EZXRlY3QiLCJldiIsImtleSIsImN0cmxLZXkiLCJrZXlVcERldGVjdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0eHQiLCJpZCIsInBhcmFtcyIsImZvcm1hdFRvRG91YmxlRGVjaW1hbCIsInZhbCIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXRCaWdOdW1iZXIiLCJiaWdOdW1iZXIiLCJkZWNpbWFsU2VwYXJhdG9yIiwiZm9ybWF0TnVtYmVyVG9QYXJ0cyIsInJlZHVjZSIsImEiLCJ0eXBlIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJpbnRlZ2VyUGFydCIsImludGVnZXJWYWx1ZSIsImludGVnZXIiLCJ0b051bWJlciIsImRlY2ltYWxzIiwibWludXMiLCJkZWNpbWFsUGxhY2VzIiwidG9TdHJpbmciLCJyZXBsYWNlIiwiY29uY2F0IiwiaXNvbGF0ZU1lc3NhZ2VzIiwicHJlZmZpeCIsInN0cmluZ3MiLCJlbnRyaWVzIiwiX3JlZiIsImsiLCJ2Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNob3J0SW50bC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRsRm9ybWF0dGVycywgSW50bFNoYXBlLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCB7IFJlYWN0RWxlbWVudCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTaG9ydEludGwoKTogSW50bFNoYXBlICYge1xuICB0eHQ6IDxSIGV4dGVuZHMgUmV0dXJuVHlwZTxJbnRsRm9ybWF0dGVyc1tcImZvcm1hdE1lc3NhZ2VcIl0+ID0gc3RyaW5nPihcbiAgICBpZDogT25lcGVyY2VudFV0aWxpdHkuSW50bElkcyxcbiAgICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+XG4gICkgPT4gUjtcbiAgZm9ybWF0VG9Eb3VibGVEZWNpbWFsKFxuICAgIG51bWJlcjogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBQYXJhbWV0ZXJzPEludGxGb3JtYXR0ZXJzW1wiZm9ybWF0TnVtYmVyXCJdPlsxXVxuICApOiBzdHJpbmc7XG4gIGZvcm1hdEJpZ051bWJlcihcbiAgICBudW1iZXI6IEJpZ051bWJlcixcbiAgICBvcHRpb25zPzogUGFyYW1ldGVyczxJbnRsRm9ybWF0dGVyc1tcImZvcm1hdE51bWJlclwiXT5bMV1cbiAgKTogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gIGNvbnN0IHsgZm9ybWF0TWVzc2FnZSwgZm9ybWF0TnVtYmVyIH0gPSBpbnRsO1xuICBjb25zdCBbZGV2TW9kZSwgc2V0RGV2TW9kZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgY29uc3Qga2V5RG93bkRldGVjdCA9IChldjogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXYua2V5ID09PSBcImlcIiAmJiBldi5jdHJsS2V5KSB7XG4gICAgICAgICAgY29uc3Qga2V5VXBEZXRlY3QgPSAoZXY6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldi5rZXkgPT09IFwiaVwiKSB7XG4gICAgICAgICAgICAgIHNldERldk1vZGUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgc2V0RGV2TW9kZSh0cnVlKTtcbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIGtleVVwRGV0ZWN0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBrZXlEb3duRGV0ZWN0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uaW50bCxcbiAgICB0eHQ6IChpZCwgcGFyYW1zKSA9PiB7XG4gICAgICByZXR1cm4gZGV2TW9kZSA/IGlkIDogZm9ybWF0TWVzc2FnZSh7IGlkIH0sIHBhcmFtcykgYXMgYW55O1xuICAgIH0sXG4gICAgZm9ybWF0VG9Eb3VibGVEZWNpbWFsKHZhbDogbnVtYmVyLCBvcHRpb25zID0ge30pIHtcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIodmFsLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmb3JtYXRCaWdOdW1iZXIoYmlnTnVtYmVyLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCB7IGRlY2ltYWxTZXBhcmF0b3IgfSA9IGludGxcbiAgICAgICAgLmZvcm1hdE51bWJlclRvUGFydHMoMTAwMC4xKVxuICAgICAgICAucmVkdWNlKChyLCBhKSA9PiB7XG4gICAgICAgICAgaWYgKGEudHlwZSA9PT0gXCJkZWNpbWFsXCIpIHJldHVybiB7IC4uLnIsIGRlY2ltYWxTZXBhcmF0b3I6IGEudmFsdWUgfTtcbiAgICAgICAgICBpZiAoYS50eXBlID09PSBcImdyb3VwXCIpIHJldHVybiB7IC4uLnIsIHRob3VzYW5kU2VwYXJhdG9yOiBhLnZhbHVlIH07XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0sIHt9IGFzIHsgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nOyB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nIH0pO1xuXG4gICAgICBjb25zdCBpbnRlZ2VyUGFydCA9IGJpZ051bWJlci5pbnRlZ2VyVmFsdWUoMSk7XG4gICAgICBjb25zdCBpbnRlZ2VyID0gaW50bC5mb3JtYXROdW1iZXIoaW50ZWdlclBhcnQudG9OdW1iZXIoKSwgb3B0aW9ucyk7XG4gICAgICBjb25zdCBkZWNpbWFscyA9IGJpZ051bWJlclxuICAgICAgICAubWludXMoaW50ZWdlclBhcnQpXG4gICAgICAgIC5kZWNpbWFsUGxhY2VzKFxuICAgICAgICAgIG9wdGlvbnM/Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyB8fCBiaWdOdW1iZXIuZGVjaW1hbFBsYWNlcygpISxcbiAgICAgICAgICA1XG4gICAgICAgIClcbiAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgLnJlcGxhY2UoXCIwLlwiLCBcIlwiKTtcbiAgICAgIHJldHVybiBgJHtpbnRlZ2VyfSR7XG4gICAgICAgIGRlY2ltYWxzICE9PSBcIjBcIiA/IGAke2RlY2ltYWxTZXBhcmF0b3J9JHtkZWNpbWFsc31gIDogXCJcIlxuICAgICAgfWA7XG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBTdHJNYXAgPSB7XG4gIFtzOiBzdHJpbmddOiBzdHJpbmc7XG59O1xuXG50eXBlIElzb2xhdGVkTWVzc2FnZXM8QSBleHRlbmRzIHN0cmluZywgTSBleHRlbmRzIFN0ck1hcCwgUCBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtzMSBpbiBgJHtQfS4ke2tleW9mIE0gZXh0ZW5kcyBzdHJpbmcgPyBrZXlvZiBNIDogXCJcIn1gXTogTVtrZXlvZiBNXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc29sYXRlTWVzc2FnZXM8QSBleHRlbmRzIHN0cmluZywgTSBleHRlbmRzIFN0ck1hcD4oXG4gIHByZWZmaXg6IEEsXG4gIHN0cmluZ3M6IE1cbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3RyaW5ncykucmVkdWNlKFxuICAgIChyLCBbaywgdl0pID0+ICh7XG4gICAgICAuLi5yLFxuICAgICAgW2Ake3ByZWZmaXh9LiR7a31gXTogdixcbiAgICB9KSxcbiAgICB7fSBhcyBJc29sYXRlZE1lc3NhZ2VzPEEsIE0sIHR5cGVvZiBwcmVmZml4PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQTBELFNBQUFFLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FB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
|
|
78
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3RJbnRsIiwicmVxdWlyZSIsIl9yZWFjdCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwidXNlU2hvcnRJbnRsIiwiaW50bCIsInVzZUludGwiLCJmb3JtYXRNZXNzYWdlIiwiZm9ybWF0TnVtYmVyIiwiZGV2TW9kZSIsInNldERldk1vZGUiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImtleURvd25EZXRlY3QiLCJldiIsImtleSIsImN0cmxLZXkiLCJrZXlVcERldGVjdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0eHQiLCJpZCIsInBhcmFtcyIsImZvcm1hdFRvRG91YmxlRGVjaW1hbCIsInZhbCIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXRCaWdOdW1iZXIiLCJiaWdOdW1iZXIiLCJkZWNpbWFsU2VwYXJhdG9yIiwiZm9ybWF0TnVtYmVyVG9QYXJ0cyIsInJlZHVjZSIsImEiLCJ0eXBlIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJpbnRlZ2VyUGFydCIsImludGVnZXJWYWx1ZSIsImludGVnZXIiLCJ0b051bWJlciIsImRlY2ltYWxzIiwibWludXMiLCJkZWNpbWFsUGxhY2VzIiwidG9TdHJpbmciLCJyZXBsYWNlIiwiY29uY2F0IiwiaXNvbGF0ZU1lc3NhZ2VzIiwicHJlZmZpeCIsInN0cmluZ3MiLCJlbnRyaWVzIiwiX3JlZiIsImsiLCJ2Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNob3J0SW50bC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRsRm9ybWF0dGVycywgSW50bFNoYXBlLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCB7IFJlYWN0RWxlbWVudCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRnJvbU9uZVBlcmNlbnRVdGlsaXR5IH0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU2hvcnRJbnRsKCk6IEludGxTaGFwZSAmIHtcbiAgdHh0OiA8UiBleHRlbmRzIFJldHVyblR5cGU8SW50bEZvcm1hdHRlcnNbXCJmb3JtYXRNZXNzYWdlXCJdPiA9IHN0cmluZz4oXG4gICAgaWQ6IEZyb21PbmVQZXJjZW50VXRpbGl0eTxcIkludGxJZHNcIj4sXG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgUmVhY3RFbGVtZW50PlxuICApID0+IFI7XG4gIGZvcm1hdFRvRG91YmxlRGVjaW1hbChcbiAgICBudW1iZXI6IG51bWJlcixcbiAgICBvcHRpb25zPzogUGFyYW1ldGVyczxJbnRsRm9ybWF0dGVyc1tcImZvcm1hdE51bWJlclwiXT5bMV1cbiAgKTogc3RyaW5nO1xuICBmb3JtYXRCaWdOdW1iZXIoXG4gICAgbnVtYmVyOiBCaWdOdW1iZXIsXG4gICAgb3B0aW9ucz86IFBhcmFtZXRlcnM8SW50bEZvcm1hdHRlcnNbXCJmb3JtYXROdW1iZXJcIl0+WzFdXG4gICk6IHN0cmluZztcbn0ge1xuICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICBjb25zdCB7IGZvcm1hdE1lc3NhZ2UsIGZvcm1hdE51bWJlciB9ID0gaW50bDtcbiAgY29uc3QgW2Rldk1vZGUsIHNldERldk1vZGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgIGNvbnN0IGtleURvd25EZXRlY3QgPSAoZXY6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2LmtleSA9PT0gXCJpXCIgJiYgZXYuY3RybEtleSkge1xuICAgICAgICAgIGNvbnN0IGtleVVwRGV0ZWN0ID0gKGV2OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXYua2V5ID09PSBcImlcIikge1xuICAgICAgICAgICAgICBzZXREZXZNb2RlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHNldERldk1vZGUodHJ1ZSk7XG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCBrZXlVcERldGVjdCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwga2V5RG93bkRldGVjdCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLmludGwsXG4gICAgdHh0OiAoaWQsIHBhcmFtcykgPT4ge1xuICAgICAgcmV0dXJuIGRldk1vZGUgPyBpZCA6IChmb3JtYXRNZXNzYWdlKHsgaWQgfSwgcGFyYW1zKSBhcyBhbnkpO1xuICAgIH0sXG4gICAgZm9ybWF0VG9Eb3VibGVEZWNpbWFsKHZhbDogbnVtYmVyLCBvcHRpb25zID0ge30pIHtcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIodmFsLCB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmb3JtYXRCaWdOdW1iZXIoYmlnTnVtYmVyLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCB7IGRlY2ltYWxTZXBhcmF0b3IgfSA9IGludGxcbiAgICAgICAgLmZvcm1hdE51bWJlclRvUGFydHMoMTAwMC4xKVxuICAgICAgICAucmVkdWNlKChyLCBhKSA9PiB7XG4gICAgICAgICAgaWYgKGEudHlwZSA9PT0gXCJkZWNpbWFsXCIpIHJldHVybiB7IC4uLnIsIGRlY2ltYWxTZXBhcmF0b3I6IGEudmFsdWUgfTtcbiAgICAgICAgICBpZiAoYS50eXBlID09PSBcImdyb3VwXCIpIHJldHVybiB7IC4uLnIsIHRob3VzYW5kU2VwYXJhdG9yOiBhLnZhbHVlIH07XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0sIHt9IGFzIHsgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nOyB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nIH0pO1xuXG4gICAgICBjb25zdCBpbnRlZ2VyUGFydCA9IGJpZ051bWJlci5pbnRlZ2VyVmFsdWUoMSk7XG4gICAgICBjb25zdCBpbnRlZ2VyID0gaW50bC5mb3JtYXROdW1iZXIoaW50ZWdlclBhcnQudG9OdW1iZXIoKSwgb3B0aW9ucyk7XG4gICAgICBjb25zdCBkZWNpbWFscyA9IGJpZ051bWJlclxuICAgICAgICAubWludXMoaW50ZWdlclBhcnQpXG4gICAgICAgIC5kZWNpbWFsUGxhY2VzKFxuICAgICAgICAgIG9wdGlvbnM/Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyB8fCBiaWdOdW1iZXIuZGVjaW1hbFBsYWNlcygpISxcbiAgICAgICAgICA1XG4gICAgICAgIClcbiAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgLnJlcGxhY2UoXCIwLlwiLCBcIlwiKTtcbiAgICAgIHJldHVybiBgJHtpbnRlZ2VyfSR7XG4gICAgICAgIGRlY2ltYWxzICE9PSBcIjBcIiA/IGAke2RlY2ltYWxTZXBhcmF0b3J9JHtkZWNpbWFsc31gIDogXCJcIlxuICAgICAgfWA7XG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBTdHJNYXAgPSB7XG4gIFtzOiBzdHJpbmddOiBzdHJpbmc7XG59O1xuXG50eXBlIElzb2xhdGVkTWVzc2FnZXM8QSBleHRlbmRzIHN0cmluZywgTSBleHRlbmRzIFN0ck1hcCwgUCBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtzMSBpbiBgJHtQfS4ke2tleW9mIE0gZXh0ZW5kcyBzdHJpbmcgPyBrZXlvZiBNIDogXCJcIn1gXTogTVtrZXlvZiBNXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc29sYXRlTWVzc2FnZXM8QSBleHRlbmRzIHN0cmluZywgTSBleHRlbmRzIFN0ck1hcD4oXG4gIHByZWZmaXg6IEEsXG4gIHN0cmluZ3M6IE1cbikge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3RyaW5ncykucmVkdWNlKFxuICAgIChyLCBbaywgdl0pID0+ICh7XG4gICAgICAuLi5yLFxuICAgICAgW2Ake3ByZWZmaXh9LiR7a31gXTogdixcbiAgICB9KSxcbiAgICB7fSBhcyBJc29sYXRlZE1lc3NhZ2VzPEEsIE0sIHR5cGVvZiBwcmVmZml4PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQTBELFNBQUFFLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxX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
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from "./type-utils";
|
|
1
2
|
export * from "./context/AsyncProcess";
|
|
2
3
|
export { default as AsyncProcess } from "./context/AsyncProcess";
|
|
3
4
|
export * from "./context/CustomBrowserRouter";
|
|
@@ -21,16 +22,14 @@ export * from "./components/FlowController/index";
|
|
|
21
22
|
export { default as FlowController } from "./components/FlowController/index";
|
|
22
23
|
export * from "./components/Transition/index";
|
|
23
24
|
export { default as Transition } from "./components/Transition/index";
|
|
24
|
-
export * from "./components/Form/v2/index";
|
|
25
|
-
export { default as FormV2 } from "./components/Form/v2/index";
|
|
26
|
-
export * from "./components/Form/v2/FormField/index";
|
|
27
|
-
export { default as FormField } from "./components/Form/v2/FormField/index";
|
|
28
|
-
export * from "./components/Form/v2/FormField/Extensions/PhoneField/index";
|
|
29
|
-
export { default as PhoneField } from "./components/Form/v2/FormField/Extensions/PhoneField/index";
|
|
30
|
-
export * from "./components/Form/v2/FormField/Extensions/DateField/index";
|
|
31
|
-
export { default as DateField } from "./components/Form/v2/FormField/Extensions/DateField/index";
|
|
32
25
|
export * from "./components/Form/index";
|
|
33
26
|
export { default as Form } from "./components/Form/index";
|
|
27
|
+
export * from "./components/Form/FormField/index";
|
|
28
|
+
export { default as FormField } from "./components/Form/FormField/index";
|
|
29
|
+
export * from "./components/Form/FormField/Extensions/PhoneField/index";
|
|
30
|
+
export { default as PhoneField } from "./components/Form/FormField/Extensions/PhoneField/index";
|
|
31
|
+
export * from "./components/Form/FormField/Extensions/DateField/index";
|
|
32
|
+
export { default as DateField } from "./components/Form/FormField/Extensions/DateField/index";
|
|
34
33
|
export * from "./components/InstantCounter/index";
|
|
35
34
|
export { default as InstantCounter } from "./components/InstantCounter/index";
|
|
36
35
|
export * from "./components/LinkToId/index";
|
|
@@ -170,8 +169,6 @@ export * from "./hooks/ui/useCustomScrollbar";
|
|
|
170
169
|
export { default as useCustomScrollbar } from "./hooks/ui/useCustomScrollbar";
|
|
171
170
|
export * from "./hooks/useAsyncControl";
|
|
172
171
|
export { default as useAsyncControl } from "./hooks/useAsyncControl";
|
|
173
|
-
export * from "./hooks/useForm";
|
|
174
|
-
export { default as useForm } from "./hooks/useForm";
|
|
175
172
|
export * from "./hooks/useMergeRefs";
|
|
176
173
|
export { default as useMergeRefs } from "./hooks/useMergeRefs";
|
|
177
174
|
export * from "./hooks/usePooledOperation";
|