@envive-ai/react-hooks 0.3.54 → 0.3.56
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/application/models/featureGates.cjs +6 -1
- package/dist/application/models/featureGates.d.cts +6 -1
- package/dist/application/models/featureGates.d.ts +6 -1
- package/dist/application/models/featureGates.js +6 -1
- package/dist/atoms/app/index.d.cts +6 -6
- package/dist/atoms/app/index.d.ts +7 -7
- package/dist/atoms/app/variant.d.cts +6 -6
- package/dist/atoms/app/variant.d.ts +6 -6
- package/dist/atoms/chat/chatState.d.cts +19 -19
- package/dist/atoms/chat/chatState.d.ts +18 -18
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.d.cts +2 -2
- package/dist/atoms/chat/index.d.ts +2 -2
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/messageQueue.d.cts +6 -6
- package/dist/atoms/chat/messageQueue.d.ts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
- package/dist/atoms/chat/replies.d.cts +2 -2
- package/dist/atoms/chat/replies.d.ts +3 -3
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.d.cts +14 -14
- package/dist/atoms/envive/enviveConfig.d.ts +13 -13
- package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
- package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
- package/dist/atoms/org/customerService.d.cts +6 -6
- package/dist/atoms/org/customerService.d.ts +6 -6
- package/dist/atoms/org/graphqlConfig.d.cts +5 -5
- package/dist/atoms/org/graphqlConfig.d.ts +5 -5
- package/dist/atoms/org/newOrgConfigAtom.d.cts +3 -3
- package/dist/atoms/org/newOrgConfigAtom.d.ts +3 -3
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
- package/dist/atoms/search/chatSearch.d.cts +17 -17
- package/dist/atoms/search/chatSearch.d.ts +17 -17
- package/dist/atoms/search/searchAPI.d.cts +13 -13
- package/dist/atoms/search/searchAPI.d.ts +13 -13
- package/dist/atoms/search/types.d.ts +1 -1
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -1
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +3 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +3 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +2 -2
- package/dist/contexts/featureFlagServiceContext/index.cjs +1 -0
- package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -2
- package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -2
- package/dist/contexts/featureFlagServiceContext/index.js +2 -2
- package/dist/contexts/pageContext/pageContext.cjs +31 -6
- package/dist/contexts/pageContext/pageContext.js +31 -6
- package/dist/contexts/types.d.cts +1 -1
- package/dist/contexts/types.d.ts +1 -1
- package/dist/contexts/typesV3.d.cts +1 -1
- package/dist/contexts/typesV3.d.ts +1 -1
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/Search/useSearchInput.cjs +1 -1
- package/dist/hooks/Search/useSearchInput.js +1 -1
- package/dist/hooks/utils.d.cts +1 -1
- package/package.json +2 -2
- package/src/application/models/featureGates.ts +8 -0
- package/src/application/utils/__tests__/widgetTextFromApiWidgetTextResponse.test.ts +55 -0
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +6 -1
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +269 -0
- package/src/contexts/pageContext/pageContext.tsx +73 -5
- package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +9 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { ProductResponseAttributes } from "../../application/models/api/response.cjs";
|
|
2
2
|
import { ChatSearchFilter, ChatSearchStateType, ProductSorting } from "./types.cjs";
|
|
3
3
|
import { Message } from "../../application/models/message.cjs";
|
|
4
|
-
import * as
|
|
4
|
+
import * as jotai40 from "jotai";
|
|
5
5
|
|
|
6
6
|
//#region src/atoms/search/chatSearch.d.ts
|
|
7
|
-
declare const chatSearchStateAtom:
|
|
7
|
+
declare const chatSearchStateAtom: jotai40.PrimitiveAtom<ChatSearchStateType> & {
|
|
8
8
|
init: ChatSearchStateType;
|
|
9
9
|
};
|
|
10
|
-
declare const chatSearchHasProductsAtom:
|
|
10
|
+
declare const chatSearchHasProductsAtom: jotai40.PrimitiveAtom<boolean> & {
|
|
11
11
|
init: boolean;
|
|
12
12
|
};
|
|
13
|
-
declare const chatSearchProductSortingAtom:
|
|
13
|
+
declare const chatSearchProductSortingAtom: jotai40.PrimitiveAtom<ProductSorting> & {
|
|
14
14
|
init: ProductSorting;
|
|
15
15
|
};
|
|
16
16
|
type ChatSearchTurn = {
|
|
@@ -21,7 +21,7 @@ type ChatSearchTurn = {
|
|
|
21
21
|
filterList: string[];
|
|
22
22
|
messages: Message[];
|
|
23
23
|
};
|
|
24
|
-
declare const chatSearchIsLoadingAtom:
|
|
24
|
+
declare const chatSearchIsLoadingAtom: jotai40.PrimitiveAtom<boolean> & {
|
|
25
25
|
init: boolean;
|
|
26
26
|
};
|
|
27
27
|
type SelectedChatSearchFilterOption = {
|
|
@@ -30,21 +30,21 @@ type SelectedChatSearchFilterOption = {
|
|
|
30
30
|
filterId: string;
|
|
31
31
|
filterItemId: string;
|
|
32
32
|
};
|
|
33
|
-
declare const selectedFilterOptionsAtom:
|
|
33
|
+
declare const selectedFilterOptionsAtom: jotai40.PrimitiveAtom<SelectedChatSearchFilterOption[]> & {
|
|
34
34
|
init: SelectedChatSearchFilterOption[];
|
|
35
35
|
};
|
|
36
|
-
declare const additiveDynamicFiltersAtom:
|
|
36
|
+
declare const additiveDynamicFiltersAtom: jotai40.Atom<boolean>;
|
|
37
37
|
declare const createChatSearchFilterOption: (filterId: string, filterItemId: string, displayName: string) => SelectedChatSearchFilterOption;
|
|
38
|
-
declare const chatSearchParamsAtom:
|
|
38
|
+
declare const chatSearchParamsAtom: jotai40.WritableAtom<{
|
|
39
39
|
id: string | null;
|
|
40
40
|
query: string | null;
|
|
41
41
|
}, [value: {
|
|
42
42
|
id: string | null;
|
|
43
43
|
query: string | null;
|
|
44
44
|
}], void>;
|
|
45
|
-
declare const chatSearchQueryAtom:
|
|
46
|
-
declare const chatSearchIdAtom:
|
|
47
|
-
declare const ChatSearchTurnAtom:
|
|
45
|
+
declare const chatSearchQueryAtom: jotai40.WritableAtom<string | null, [value: string | null], void>;
|
|
46
|
+
declare const chatSearchIdAtom: jotai40.WritableAtom<string | null, [value: string | null], void>;
|
|
47
|
+
declare const ChatSearchTurnAtom: jotai40.Atom<{
|
|
48
48
|
productList: {
|
|
49
49
|
averageRating?: number | undefined;
|
|
50
50
|
colors?: string[] | undefined;
|
|
@@ -74,7 +74,7 @@ declare const ChatSearchTurnAtom: jotai48.Atom<{
|
|
|
74
74
|
filterList: string[];
|
|
75
75
|
messages: Message[];
|
|
76
76
|
} | null>;
|
|
77
|
-
declare const chatSearchProducts:
|
|
77
|
+
declare const chatSearchProducts: jotai40.Atom<{
|
|
78
78
|
averageRating?: number | undefined;
|
|
79
79
|
colors?: string[] | undefined;
|
|
80
80
|
description?: string | undefined;
|
|
@@ -97,19 +97,19 @@ declare const chatSearchProducts: jotai48.Atom<{
|
|
|
97
97
|
title: string;
|
|
98
98
|
url: string;
|
|
99
99
|
}[]>;
|
|
100
|
-
declare const chatSearchFiltersAtom:
|
|
100
|
+
declare const chatSearchFiltersAtom: jotai40.Atom<ChatSearchFilter[]>;
|
|
101
101
|
declare const setSearchParams: (query: string) => void;
|
|
102
|
-
declare const getSearchParamsAtom:
|
|
102
|
+
declare const getSearchParamsAtom: jotai40.Atom<{
|
|
103
103
|
es: string | null;
|
|
104
104
|
esq: string | null;
|
|
105
105
|
}>;
|
|
106
|
-
declare const initiateChatSearchAtom:
|
|
106
|
+
declare const initiateChatSearchAtom: jotai40.WritableAtom<null, [query: string], void> & {
|
|
107
107
|
init: null;
|
|
108
108
|
};
|
|
109
|
-
declare const handleSearchResultsAtom:
|
|
109
|
+
declare const handleSearchResultsAtom: jotai40.WritableAtom<null, [message: Message | undefined], void> & {
|
|
110
110
|
init: null;
|
|
111
111
|
};
|
|
112
|
-
declare const setChatSearchParamsAtom:
|
|
112
|
+
declare const setChatSearchParamsAtom: jotai40.WritableAtom<null, [query: string], void> & {
|
|
113
113
|
init: null;
|
|
114
114
|
};
|
|
115
115
|
//#endregion
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { ProductResponseAttributes } from "../../application/models/api/response.js";
|
|
2
2
|
import { ChatSearchFilter, ChatSearchStateType, ProductSorting } from "./types.js";
|
|
3
3
|
import { Message } from "../../application/models/message.js";
|
|
4
|
-
import * as
|
|
4
|
+
import * as jotai68 from "jotai";
|
|
5
5
|
|
|
6
6
|
//#region src/atoms/search/chatSearch.d.ts
|
|
7
|
-
declare const chatSearchStateAtom:
|
|
7
|
+
declare const chatSearchStateAtom: jotai68.PrimitiveAtom<ChatSearchStateType> & {
|
|
8
8
|
init: ChatSearchStateType;
|
|
9
9
|
};
|
|
10
|
-
declare const chatSearchHasProductsAtom:
|
|
10
|
+
declare const chatSearchHasProductsAtom: jotai68.PrimitiveAtom<boolean> & {
|
|
11
11
|
init: boolean;
|
|
12
12
|
};
|
|
13
|
-
declare const chatSearchProductSortingAtom:
|
|
13
|
+
declare const chatSearchProductSortingAtom: jotai68.PrimitiveAtom<ProductSorting> & {
|
|
14
14
|
init: ProductSorting;
|
|
15
15
|
};
|
|
16
16
|
type ChatSearchTurn = {
|
|
@@ -21,7 +21,7 @@ type ChatSearchTurn = {
|
|
|
21
21
|
filterList: string[];
|
|
22
22
|
messages: Message[];
|
|
23
23
|
};
|
|
24
|
-
declare const chatSearchIsLoadingAtom:
|
|
24
|
+
declare const chatSearchIsLoadingAtom: jotai68.PrimitiveAtom<boolean> & {
|
|
25
25
|
init: boolean;
|
|
26
26
|
};
|
|
27
27
|
type SelectedChatSearchFilterOption = {
|
|
@@ -30,21 +30,21 @@ type SelectedChatSearchFilterOption = {
|
|
|
30
30
|
filterId: string;
|
|
31
31
|
filterItemId: string;
|
|
32
32
|
};
|
|
33
|
-
declare const selectedFilterOptionsAtom:
|
|
33
|
+
declare const selectedFilterOptionsAtom: jotai68.PrimitiveAtom<SelectedChatSearchFilterOption[]> & {
|
|
34
34
|
init: SelectedChatSearchFilterOption[];
|
|
35
35
|
};
|
|
36
|
-
declare const additiveDynamicFiltersAtom:
|
|
36
|
+
declare const additiveDynamicFiltersAtom: jotai68.Atom<boolean>;
|
|
37
37
|
declare const createChatSearchFilterOption: (filterId: string, filterItemId: string, displayName: string) => SelectedChatSearchFilterOption;
|
|
38
|
-
declare const chatSearchParamsAtom:
|
|
38
|
+
declare const chatSearchParamsAtom: jotai68.WritableAtom<{
|
|
39
39
|
id: string | null;
|
|
40
40
|
query: string | null;
|
|
41
41
|
}, [value: {
|
|
42
42
|
id: string | null;
|
|
43
43
|
query: string | null;
|
|
44
44
|
}], void>;
|
|
45
|
-
declare const chatSearchQueryAtom:
|
|
46
|
-
declare const chatSearchIdAtom:
|
|
47
|
-
declare const ChatSearchTurnAtom:
|
|
45
|
+
declare const chatSearchQueryAtom: jotai68.WritableAtom<string | null, [value: string | null], void>;
|
|
46
|
+
declare const chatSearchIdAtom: jotai68.WritableAtom<string | null, [value: string | null], void>;
|
|
47
|
+
declare const ChatSearchTurnAtom: jotai68.Atom<{
|
|
48
48
|
productList: {
|
|
49
49
|
averageRating?: number | undefined;
|
|
50
50
|
colors?: string[] | undefined;
|
|
@@ -74,7 +74,7 @@ declare const ChatSearchTurnAtom: jotai64.Atom<{
|
|
|
74
74
|
filterList: string[];
|
|
75
75
|
messages: Message[];
|
|
76
76
|
} | null>;
|
|
77
|
-
declare const chatSearchProducts:
|
|
77
|
+
declare const chatSearchProducts: jotai68.Atom<{
|
|
78
78
|
averageRating?: number | undefined;
|
|
79
79
|
colors?: string[] | undefined;
|
|
80
80
|
description?: string | undefined;
|
|
@@ -97,19 +97,19 @@ declare const chatSearchProducts: jotai64.Atom<{
|
|
|
97
97
|
title: string;
|
|
98
98
|
url: string;
|
|
99
99
|
}[]>;
|
|
100
|
-
declare const chatSearchFiltersAtom:
|
|
100
|
+
declare const chatSearchFiltersAtom: jotai68.Atom<ChatSearchFilter[]>;
|
|
101
101
|
declare const setSearchParams: (query: string) => void;
|
|
102
|
-
declare const getSearchParamsAtom:
|
|
102
|
+
declare const getSearchParamsAtom: jotai68.Atom<{
|
|
103
103
|
es: string | null;
|
|
104
104
|
esq: string | null;
|
|
105
105
|
}>;
|
|
106
|
-
declare const initiateChatSearchAtom:
|
|
106
|
+
declare const initiateChatSearchAtom: jotai68.WritableAtom<null, [query: string], void> & {
|
|
107
107
|
init: null;
|
|
108
108
|
};
|
|
109
|
-
declare const handleSearchResultsAtom:
|
|
109
|
+
declare const handleSearchResultsAtom: jotai68.WritableAtom<null, [message: Message | undefined], void> & {
|
|
110
110
|
init: null;
|
|
111
111
|
};
|
|
112
|
-
declare const setChatSearchParamsAtom:
|
|
112
|
+
declare const setChatSearchParamsAtom: jotai68.WritableAtom<null, [query: string], void> & {
|
|
113
113
|
init: null;
|
|
114
114
|
};
|
|
115
115
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChatSearchFilter, ProductSorting } from "./types.cjs";
|
|
2
2
|
import { SearchParams, SearchResult } from "../../application/models/api/search.cjs";
|
|
3
|
-
import * as
|
|
3
|
+
import * as jotai56 from "jotai";
|
|
4
4
|
|
|
5
5
|
//#region src/atoms/search/searchAPI.d.ts
|
|
6
6
|
type SelectedFilterOption = {
|
|
@@ -15,28 +15,28 @@ interface SearchState {
|
|
|
15
15
|
error: string | null;
|
|
16
16
|
lastQuery: string | null;
|
|
17
17
|
}
|
|
18
|
-
declare const searchAtom:
|
|
18
|
+
declare const searchAtom: jotai56.PrimitiveAtom<SearchState> & {
|
|
19
19
|
init: SearchState;
|
|
20
20
|
};
|
|
21
|
-
declare const searchProductSortingAtom:
|
|
21
|
+
declare const searchProductSortingAtom: jotai56.PrimitiveAtom<ProductSorting> & {
|
|
22
22
|
init: ProductSorting;
|
|
23
23
|
};
|
|
24
|
-
declare const searchSelectedFiltersAtom:
|
|
24
|
+
declare const searchSelectedFiltersAtom: jotai56.PrimitiveAtom<SelectedFilterOption[]> & {
|
|
25
25
|
init: SelectedFilterOption[];
|
|
26
26
|
};
|
|
27
27
|
declare const createFilterOption: (filterId: string, filterItemId: string, displayName: string) => SelectedFilterOption;
|
|
28
|
-
declare const searchParamsAtom:
|
|
28
|
+
declare const searchParamsAtom: jotai56.WritableAtom<{
|
|
29
29
|
id: string | null;
|
|
30
30
|
query: string | null;
|
|
31
31
|
}, [value: {
|
|
32
32
|
id: string | null;
|
|
33
33
|
query: string | null;
|
|
34
34
|
}], void>;
|
|
35
|
-
declare const internalSearchSystemStateAtom:
|
|
35
|
+
declare const internalSearchSystemStateAtom: jotai56.PrimitiveAtom<boolean> & {
|
|
36
36
|
init: boolean;
|
|
37
37
|
};
|
|
38
|
-
declare const searchSystemAtom:
|
|
39
|
-
declare const filteredSearchProductsAtom:
|
|
38
|
+
declare const searchSystemAtom: jotai56.WritableAtom<boolean, [value: boolean], void>;
|
|
39
|
+
declare const filteredSearchProductsAtom: jotai56.Atom<{
|
|
40
40
|
averageRating?: number | undefined;
|
|
41
41
|
colors?: string[] | undefined;
|
|
42
42
|
description?: string | undefined;
|
|
@@ -59,17 +59,17 @@ declare const filteredSearchProductsAtom: jotai36.Atom<{
|
|
|
59
59
|
title: string;
|
|
60
60
|
url: string;
|
|
61
61
|
}[]>;
|
|
62
|
-
declare const searchFiltersAtom:
|
|
63
|
-
declare const addSearchFilterAtom:
|
|
62
|
+
declare const searchFiltersAtom: jotai56.Atom<ChatSearchFilter[]>;
|
|
63
|
+
declare const addSearchFilterAtom: jotai56.WritableAtom<null, [filter: SelectedFilterOption], void> & {
|
|
64
64
|
init: null;
|
|
65
65
|
};
|
|
66
|
-
declare const removeSearchFilterAtom:
|
|
66
|
+
declare const removeSearchFilterAtom: jotai56.WritableAtom<null, [filterId: string], void> & {
|
|
67
67
|
init: null;
|
|
68
68
|
};
|
|
69
|
-
declare const clearSearchFiltersAtom:
|
|
69
|
+
declare const clearSearchFiltersAtom: jotai56.WritableAtom<null, [], void> & {
|
|
70
70
|
init: null;
|
|
71
71
|
};
|
|
72
|
-
declare const performSearchAtom:
|
|
72
|
+
declare const performSearchAtom: jotai56.WritableAtom<null, [params: SearchParams, allowRedirect?: unknown], Promise<void>> & {
|
|
73
73
|
init: null;
|
|
74
74
|
};
|
|
75
75
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChatSearchFilter, ProductSorting } from "./types.js";
|
|
2
2
|
import { SearchParams, SearchResult } from "../../application/models/api/search.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as jotai56 from "jotai";
|
|
4
4
|
|
|
5
5
|
//#region src/atoms/search/searchAPI.d.ts
|
|
6
6
|
type SelectedFilterOption = {
|
|
@@ -15,28 +15,28 @@ interface SearchState {
|
|
|
15
15
|
error: string | null;
|
|
16
16
|
lastQuery: string | null;
|
|
17
17
|
}
|
|
18
|
-
declare const searchAtom:
|
|
18
|
+
declare const searchAtom: jotai56.PrimitiveAtom<SearchState> & {
|
|
19
19
|
init: SearchState;
|
|
20
20
|
};
|
|
21
|
-
declare const searchProductSortingAtom:
|
|
21
|
+
declare const searchProductSortingAtom: jotai56.PrimitiveAtom<ProductSorting> & {
|
|
22
22
|
init: ProductSorting;
|
|
23
23
|
};
|
|
24
|
-
declare const searchSelectedFiltersAtom:
|
|
24
|
+
declare const searchSelectedFiltersAtom: jotai56.PrimitiveAtom<SelectedFilterOption[]> & {
|
|
25
25
|
init: SelectedFilterOption[];
|
|
26
26
|
};
|
|
27
27
|
declare const createFilterOption: (filterId: string, filterItemId: string, displayName: string) => SelectedFilterOption;
|
|
28
|
-
declare const searchParamsAtom:
|
|
28
|
+
declare const searchParamsAtom: jotai56.WritableAtom<{
|
|
29
29
|
id: string | null;
|
|
30
30
|
query: string | null;
|
|
31
31
|
}, [value: {
|
|
32
32
|
id: string | null;
|
|
33
33
|
query: string | null;
|
|
34
34
|
}], void>;
|
|
35
|
-
declare const internalSearchSystemStateAtom:
|
|
35
|
+
declare const internalSearchSystemStateAtom: jotai56.PrimitiveAtom<boolean> & {
|
|
36
36
|
init: boolean;
|
|
37
37
|
};
|
|
38
|
-
declare const searchSystemAtom:
|
|
39
|
-
declare const filteredSearchProductsAtom:
|
|
38
|
+
declare const searchSystemAtom: jotai56.WritableAtom<boolean, [value: boolean], void>;
|
|
39
|
+
declare const filteredSearchProductsAtom: jotai56.Atom<{
|
|
40
40
|
averageRating?: number | undefined;
|
|
41
41
|
colors?: string[] | undefined;
|
|
42
42
|
description?: string | undefined;
|
|
@@ -59,17 +59,17 @@ declare const filteredSearchProductsAtom: jotai52.Atom<{
|
|
|
59
59
|
title: string;
|
|
60
60
|
url: string;
|
|
61
61
|
}[]>;
|
|
62
|
-
declare const searchFiltersAtom:
|
|
63
|
-
declare const addSearchFilterAtom:
|
|
62
|
+
declare const searchFiltersAtom: jotai56.Atom<ChatSearchFilter[]>;
|
|
63
|
+
declare const addSearchFilterAtom: jotai56.WritableAtom<null, [filter: SelectedFilterOption], void> & {
|
|
64
64
|
init: null;
|
|
65
65
|
};
|
|
66
|
-
declare const removeSearchFilterAtom:
|
|
66
|
+
declare const removeSearchFilterAtom: jotai56.WritableAtom<null, [filterId: string], void> & {
|
|
67
67
|
init: null;
|
|
68
68
|
};
|
|
69
|
-
declare const clearSearchFiltersAtom:
|
|
69
|
+
declare const clearSearchFiltersAtom: jotai56.WritableAtom<null, [], void> & {
|
|
70
70
|
init: null;
|
|
71
71
|
};
|
|
72
|
-
declare const performSearchAtom:
|
|
72
|
+
declare const performSearchAtom: jotai56.WritableAtom<null, [params: SearchParams, allowRedirect?: unknown], Promise<void>> & {
|
|
73
73
|
init: null;
|
|
74
74
|
};
|
|
75
75
|
//#endregion
|
|
@@ -57,4 +57,4 @@ interface ProductRetrievalParams {
|
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
export { ChatSearchFilter, ChatSearchFilterItem, ChatSearchSortModalProps, ChatSearchSortOverrides, ChatSearchSortProps, ChatSearchStateType, ProductRetrievalParams, ProductRetrievalResult, ProductSorting, ProductSortingNames, SortOption };
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXRvbXMvc2VhcmNoL3R5cGVzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlJztcbmV4cG9ydCBkZWNsYXJlIGVudW0gUHJvZHVjdFNvcnRpbmcge1xuICAgIEZFQVRVUkVEID0gXCJmZWF0dXJlZFwiLFxuICAgIFBSSUNFX0FTQyA9IFwicHJpY2VfYXNjXCIsXG4gICAgUFJJQ0VfREVTQyA9IFwicHJpY2VfZGVzY1wiXG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBQcm9kdWN0U29ydGluZ05hbWVzOiB7XG4gICAgZmVhdHVyZWQ6IHN0cmluZztcbiAgICBwcmljZV9hc2M6IHN0cmluZztcbiAgICBwcmljZV9kZXNjOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaFN0YXRlVHlwZSA9ICdlbnRyeXBvaW50JyB8ICdpbml0aWFsaXppbmctc2VhcmNoJyB8ICdwcm9kdWN0LXBhZ2UnO1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaEZpbHRlciA9IHtcbiAgICBmaWx0ZXJJZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IENoYXRTZWFyY2hGaWx0ZXJJdGVtW107XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaEZpbHRlckl0ZW0gPSB7XG4gICAgZmlsdGVySXRlbUlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNlYXJjaFNvcnRQcm9wcyB7XG4gICAgb3B0aW9uczogUHJvZHVjdFNvcnRpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNlYXJjaFNvcnRNb2RhbFByb3BzIGV4dGVuZHMgQ2hhdFNlYXJjaFNvcnRQcm9wcyB7XG4gICAgb3BlbjogYm9vbGVhbjtcbiAgICBoYW5kbGVQb3B1cFN0YXRlOiAoc3RhdGU6IGJvb2xlYW4pID0+
|
|
60
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXRvbXMvc2VhcmNoL3R5cGVzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlJztcbmV4cG9ydCBkZWNsYXJlIGVudW0gUHJvZHVjdFNvcnRpbmcge1xuICAgIEZFQVRVUkVEID0gXCJmZWF0dXJlZFwiLFxuICAgIFBSSUNFX0FTQyA9IFwicHJpY2VfYXNjXCIsXG4gICAgUFJJQ0VfREVTQyA9IFwicHJpY2VfZGVzY1wiXG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBQcm9kdWN0U29ydGluZ05hbWVzOiB7XG4gICAgZmVhdHVyZWQ6IHN0cmluZztcbiAgICBwcmljZV9hc2M6IHN0cmluZztcbiAgICBwcmljZV9kZXNjOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaFN0YXRlVHlwZSA9ICdlbnRyeXBvaW50JyB8ICdpbml0aWFsaXppbmctc2VhcmNoJyB8ICdwcm9kdWN0LXBhZ2UnO1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaEZpbHRlciA9IHtcbiAgICBmaWx0ZXJJZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IENoYXRTZWFyY2hGaWx0ZXJJdGVtW107XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaEZpbHRlckl0ZW0gPSB7XG4gICAgZmlsdGVySXRlbUlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNlYXJjaFNvcnRQcm9wcyB7XG4gICAgb3B0aW9uczogUHJvZHVjdFNvcnRpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNlYXJjaFNvcnRNb2RhbFByb3BzIGV4dGVuZHMgQ2hhdFNlYXJjaFNvcnRQcm9wcyB7XG4gICAgb3BlbjogYm9vbGVhbjtcbiAgICBoYW5kbGVQb3B1cFN0YXRlOiAoc3RhdGU6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNvcnRPcHRpb24ge1xuICAgIHZhbHVlOiBQcm9kdWN0U29ydGluZztcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIG9uU2VsZWN0OiAob3B0aW9uOiBQcm9kdWN0U29ydGluZykgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gQ2hhdFNlYXJjaFNvcnRPdmVycmlkZXMge1xuICAgIERFU0tUT1BfRklMVEVSX0NPTlRBSU5FUiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1jb250YWluZXJcIixcbiAgICBERVNLVE9QX0ZJTFRFUl9TRUxFQ1RfQ09NUE9ORU5UID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLXNlbGVjdC1jb21wb25lbnRcIixcbiAgICBERVNLVE9QX0ZJTFRFUl9TRUxFQ1RfSUNPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1zZWxlY3QtaWNvblwiLFxuICAgIE1PQklMRV9GSUxURVJfQlVUVE9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLWJ1dHRvblwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfQ09OVEFJTkVSID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLWNvbnRhaW5lclwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfSEVBREVSID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLWhlYWRlclwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfU0VMRUNUSU9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLXNlbGVjdGlvblwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfT1BUSU9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLW9wdGlvblwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfT1BUSU9OX1BJTEwgPSBcInNwaWZmeS1jaGF0LXNlYXJjaC1maWx0ZXItbW9kYWwtb3B0aW9uLXBpbGxcIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX09QVElPTl9ERVNDUklQVElPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1vcHRpb24tZGVzY1wiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfQVBQTFlfQlVUVE9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLWFwcGx5LWJ1dHRvblwiXG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQge1xuICAgIHByb2R1Y3RzOiBTZWFyY2hSZXNwb25zZVByb2R1Y3RBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ11bXTtcbiAgICB0b3RhbFByb2R1Y3RDb3VudDogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0UmV0cmlldmFsUGFyYW1zIHtcbiAgICBwcm9kdWN0SWRzOiBzdHJpbmdbXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyxpQkFBaUIsQ0FBQyxHQUFHO0FBQ2hDLElBQVcsc0JBQWMsQ0FBQSxHQUFBO0FBQ3pCLElBQVcsc0JBQWdCLENBQUEsR0FBQTtBQUMzQixJQUFXLG1CQUFpQixDQUFBLFVBQUEscUJBQUE7QUFDNUIsSUFBQSx1QkFBQSxDQUFBLEdBQUE7QUFDQSxJQUFXLHNCQUFzQixDQUFDLFVBQVEsZUFBQTtBQUMxQyxJQUFXLDJCQUFTLENBQUEsVUFBQSxvQkFBQTtBQUNwQixJQUFXLGFBQVU7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNyQixJQUFXLDBCQUFXLENBQUEsR0FBQTtBQUN0QixJQUFDLHlCQUFBLENBQUEsVUFBQSxnQ0FBQTtBQUNELElBQVcseUJBQXlCLENBQUMsR0FBRyJ9
|
|
@@ -20,6 +20,7 @@ const useFeatureFlagService = () => {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
//#endregion
|
|
23
|
+
exports.FeatureFlagServiceContext = FeatureFlagServiceContext;
|
|
23
24
|
exports.FeatureFlagServiceProvider = FeatureFlagServiceProvider;
|
|
24
25
|
exports.useFeatureFlagService = useFeatureFlagService;
|
|
25
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5janMiLCJuYW1lcyI6WyJGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlLCBGdWxsRmxhZ1ZhbHVlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5cbi8vIFRoZSBzZXJ2aWNlIGNsYXNzIGxpdmVzIGluIHNyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UgKGEgUmVhY3QtZnJlZVxuLy8gbW9kdWxlIHRoZSBpbmplY3Rpb24gYnVuZGxlIGNhbiBpbXBvcnQgcHJlLWNvbmZpZyk7IHJlLWV4cG9ydCBpdCBoZXJlIHNvXG4vLyBleGlzdGluZyBpbXBvcnRzIGtlZXAgd29ya2luZy5cbmV4cG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSB9O1xuZXhwb3J0IHR5cGUgeyBGdWxsRmxhZ1ZhbHVlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdDb250ZXh0VHlwZSB7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlIHwgdW5kZWZpbmVkO1xufVxuXG4vLyBFeHBvcnRlZCBzbyBjb25zdW1lcnMgdGhhdCBtdXN0IG5vdCB0aHJvdyB3aGVuIGEgcHJvdmlkZXIgaXMgYWJzZW50IChlLmcuIFBhZ2VQcm92aWRlclxuLy8gcmVuZGVyZWQgYmFyZSBpbiB1bml0IHRlc3RzKSBjYW4gcmVhZCBpdCBkaXJlY3RseSB3aXRoIGB1c2VDb250ZXh0YCBpbnN0ZWFkIG9mIHRoZVxuLy8gdGhyb3dpbmcgYHVzZUZlYXR1cmVGbGFnU2VydmljZWAgaG9vay5cbmV4cG9ydCBjb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHwgdW5kZWZpbmVkPihcbiAgdW5kZWZpbmVkLFxuKTtcblxuaW50ZXJmYWNlIEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHMge1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPiA9ICh7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogaW5wdXRTZXJ2aWNlLFxuICBjaGlsZHJlbixcbn0pID0+IHtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBpbnB1dFNlcnZpY2UsXG4gICAgfSksXG4gICAgW2lucHV0U2VydmljZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dFZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlRmVhdHVyZUZsYWdTZXJ2aWNlIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQWdCQSxNQUFhLHFEQUNYLE9BQ0Q7QUFPRCxNQUFhQSw4QkFBeUUsRUFDcEYsb0JBQW9CLGNBQ3BCLGVBQ0k7Q0FDSixNQUFNLHlDQUNHLEVBQ0wsb0JBQW9CLGNBQ3JCLEdBQ0QsQ0FBQyxhQUFhLENBQ2Y7QUFFRCxRQUNFLDJDQUFDLDBCQUEwQjtFQUFTLE9BQU87RUFDeEM7R0FDa0M7O0FBSXpDLE1BQWEsOEJBQThCO0NBQ3pDLE1BQU0sZ0NBQXFCLDBCQUEwQjtBQUNyRCxLQUFJLFlBQVksT0FDZCxPQUFNLElBQUksTUFBTSx5RUFBeUU7QUFFM0YsUUFBTyJ9
|
|
@@ -5,6 +5,7 @@ import React, { ReactNode } from "react";
|
|
|
5
5
|
interface FeatureFlagContextType {
|
|
6
6
|
featureFlagService: FeatureFlagService | undefined;
|
|
7
7
|
}
|
|
8
|
+
declare const FeatureFlagServiceContext: React.Context<FeatureFlagContextType | undefined>;
|
|
8
9
|
interface FeatureFlagServiceProviderProps {
|
|
9
10
|
featureFlagService: FeatureFlagService;
|
|
10
11
|
children: ReactNode;
|
|
@@ -12,5 +13,5 @@ interface FeatureFlagServiceProviderProps {
|
|
|
12
13
|
declare const FeatureFlagServiceProvider: React.FC<FeatureFlagServiceProviderProps>;
|
|
13
14
|
declare const useFeatureFlagService: () => FeatureFlagContextType;
|
|
14
15
|
//#endregion
|
|
15
|
-
export { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
export { FeatureFlagContextType, FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSwgRnVsbEZsYWdWYWx1ZSB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9mZWF0dXJlRmxhZ1NlcnZpY2UnO1xuZXhwb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH07XG5leHBvcnQgdHlwZSB7IEZ1bGxGbGFnVmFsdWUgfTtcbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdDb250ZXh0VHlwZSB7XG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2UgfCB1bmRlZmluZWQ7XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0OiBSZWFjdC5Db250ZXh0PEZlYXR1cmVGbGFnQ29udGV4dFR5cGUgfCB1bmRlZmluZWQ+O1xuaW50ZXJmYWNlIEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHMge1xuICAgIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICAgIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlcjogUmVhY3QuRkM8RmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcz47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VGZWF0dXJlRmxhZ1NlcnZpY2U6ICgpID0+IEZlYXR1cmVGbGFnQ29udGV4dFR5cGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFJQSxJQUFXLHlCQUF5QixDQUFDLFdBQUcsbUJBQUE7QUFDeEMsSUFBVyw0QkFBNEI7Q0FBQztPQUFXO09BQUcsTUFBQTtDQUFBO0FBQ3RELElBQUEsa0NBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsNkJBQTZCO0NBQUM7T0FBVztPQUF1QyxNQUFNO0NBQUE7QUFDakcsSUFBVyx3QkFBd0IsQ0FBQyxXQUFNLHVCQUFBIn0=
|
|
@@ -5,6 +5,7 @@ import React, { ReactNode } from "react";
|
|
|
5
5
|
interface FeatureFlagContextType {
|
|
6
6
|
featureFlagService: FeatureFlagService | undefined;
|
|
7
7
|
}
|
|
8
|
+
declare const FeatureFlagServiceContext: React.Context<FeatureFlagContextType | undefined>;
|
|
8
9
|
interface FeatureFlagServiceProviderProps {
|
|
9
10
|
featureFlagService: FeatureFlagService;
|
|
10
11
|
children: ReactNode;
|
|
@@ -12,5 +13,5 @@ interface FeatureFlagServiceProviderProps {
|
|
|
12
13
|
declare const FeatureFlagServiceProvider: React.FC<FeatureFlagServiceProviderProps>;
|
|
13
14
|
declare const useFeatureFlagService: () => FeatureFlagContextType;
|
|
14
15
|
//#endregion
|
|
15
|
-
export { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
16
|
+
export { FeatureFlagContextType, FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlLCBGdWxsRmxhZ1ZhbHVlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5leHBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfTtcbmV4cG9ydCB0eXBlIHsgRnVsbEZsYWdWYWx1ZSB9O1xuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHtcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZSB8IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQ6IFJlYWN0LkNvbnRleHQ8RmVhdHVyZUZsYWdDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD47XG5pbnRlcmZhY2UgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcyB7XG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gICAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZUZlYXR1cmVGbGFnU2VydmljZTogKCkgPT4gRmVhdHVyZUZsYWdDb250ZXh0VHlwZTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLElBQVcseUJBQXlCLENBQUMsV0FBRyxtQkFBQTtBQUN4QyxJQUFXLDRCQUE0QjtDQUFDO09BQVc7T0FBRyxNQUFBO0NBQUE7QUFDdEQsSUFBQSxrQ0FBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyw2QkFBNkI7Q0FBQztPQUFXO09BQXVDLE1BQU07Q0FBQTtBQUNqRyxJQUFXLHdCQUF3QixDQUFDLFdBQU0sdUJBQUEifQ==
|
|
@@ -18,5 +18,5 @@ const useFeatureFlagService = () => {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
//#endregion
|
|
21
|
-
export { FeatureFlagServiceProvider, useFeatureFlagService };
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
21
|
+
export { FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5qcyIsIm5hbWVzIjpbIkZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyOiBSZWFjdC5GQzxGZWF0dXJlRmxhZ1NlcnZpY2VQcm92aWRlclByb3BzPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBSZWFjdE5vZGUsIGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UsIEZ1bGxGbGFnVmFsdWUgfSBmcm9tICdzcmMvc2VydmljZXMvZmVhdHVyZUZsYWdTZXJ2aWNlJztcblxuLy8gVGhlIHNlcnZpY2UgY2xhc3MgbGl2ZXMgaW4gc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSAoYSBSZWFjdC1mcmVlXG4vLyBtb2R1bGUgdGhlIGluamVjdGlvbiBidW5kbGUgY2FuIGltcG9ydCBwcmUtY29uZmlnKTsgcmUtZXhwb3J0IGl0IGhlcmUgc29cbi8vIGV4aXN0aW5nIGltcG9ydHMga2VlcCB3b3JraW5nLlxuZXhwb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH07XG5leHBvcnQgdHlwZSB7IEZ1bGxGbGFnVmFsdWUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRmxhZ0NvbnRleHRUeXBlIHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2UgfCB1bmRlZmluZWQ7XG59XG5cbi8vIEV4cG9ydGVkIHNvIGNvbnN1bWVycyB0aGF0IG11c3Qgbm90IHRocm93IHdoZW4gYSBwcm92aWRlciBpcyBhYnNlbnQgKGUuZy4gUGFnZVByb3ZpZGVyXG4vLyByZW5kZXJlZCBiYXJlIGluIHVuaXQgdGVzdHMpIGNhbiByZWFkIGl0IGRpcmVjdGx5IHdpdGggYHVzZUNvbnRleHRgIGluc3RlYWQgb2YgdGhlXG4vLyB0aHJvd2luZyBgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlYCBob29rLlxuZXhwb3J0IGNvbnN0IEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEZlYXR1cmVGbGFnQ29udGV4dFR5cGUgfCB1bmRlZmluZWQ+KFxuICB1bmRlZmluZWQsXG4pO1xuXG5pbnRlcmZhY2UgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXJQcm9wcyB7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgRmVhdHVyZUZsYWdTZXJ2aWNlUHJvdmlkZXI6IFJlYWN0LkZDPEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyUHJvcHM+ID0gKHtcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBpbnB1dFNlcnZpY2UsXG4gIGNoaWxkcmVuLFxufSkgPT4ge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IGlucHV0U2VydmljZSxcbiAgICB9KSxcbiAgICBbaW5wdXRTZXJ2aWNlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvRmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEZlYXR1cmVGbGFnU2VydmljZVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSxNQUFhLDRCQUE0QixjQUN2QyxPQUNEO0FBT0QsTUFBYUEsOEJBQXlFLEVBQ3BGLG9CQUFvQixjQUNwQixlQUNJO0NBQ0osTUFBTSxlQUFlLGVBQ1osRUFDTCxvQkFBb0IsY0FDckIsR0FDRCxDQUFDLGFBQWEsQ0FDZjtBQUVELFFBQ0Usb0JBQUMsMEJBQTBCO0VBQVMsT0FBTztFQUN4QztHQUNrQzs7QUFJekMsTUFBYSw4QkFBOEI7Q0FDekMsTUFBTSxVQUFVLFdBQVcsMEJBQTBCO0FBQ3JELEtBQUksWUFBWSxPQUNkLE9BQU0sSUFBSSxNQUFNLHlFQUF5RTtBQUUzRixRQUFPIn0=
|
|
@@ -2,5 +2,6 @@ const require_services_featureFlagService_index = require('../../services/featur
|
|
|
2
2
|
const require_featureFlagServiceContext = require('./featureFlagServiceContext.cjs');
|
|
3
3
|
|
|
4
4
|
exports.FeatureFlagService = require_services_featureFlagService_index.FeatureFlagService;
|
|
5
|
+
exports.FeatureFlagServiceContext = require_featureFlagServiceContext.FeatureFlagServiceContext;
|
|
5
6
|
exports.FeatureFlagServiceProvider = require_featureFlagServiceContext.FeatureFlagServiceProvider;
|
|
6
7
|
exports.useFeatureFlagService = require_featureFlagServiceContext.useFeatureFlagService;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { FeatureFlagService, FullFlagValue } from "../../services/featureFlagService/index.cjs";
|
|
2
|
-
import { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.cjs";
|
|
3
|
-
export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
|
|
2
|
+
import { FeatureFlagContextType, FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.cjs";
|
|
3
|
+
export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceContext, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { FeatureFlagService, FullFlagValue } from "../../services/featureFlagService/index.js";
|
|
2
|
-
import { FeatureFlagContextType, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
|
|
3
|
-
export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
|
|
2
|
+
import { FeatureFlagContextType, FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
|
|
3
|
+
export { FeatureFlagContextType, FeatureFlagService, FeatureFlagServiceContext, FeatureFlagServiceProvider, FullFlagValue, useFeatureFlagService };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { FeatureFlagService } from "../../services/featureFlagService/index.js";
|
|
2
|
-
import { FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
|
|
2
|
+
import { FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService } from "./featureFlagServiceContext.js";
|
|
3
3
|
|
|
4
|
-
export { FeatureFlagService, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
4
|
+
export { FeatureFlagService, FeatureFlagServiceContext, FeatureFlagServiceProvider, useFeatureFlagService };
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_logger = require('../../application/logging/logger.cjs');
|
|
3
|
+
const require_featureGates = require('../../application/models/featureGates.cjs');
|
|
3
4
|
const require_variantInfo = require('../../application/models/variantInfo/variantInfo.cjs');
|
|
4
5
|
require('../../application/models/index.cjs');
|
|
5
6
|
const require_eventNames = require('../../services/amplitudeService/eventNames.cjs');
|
|
6
7
|
const require_variant = require('../../atoms/app/variant.cjs');
|
|
7
8
|
const require_application_commerce_api = require('../../application/commerce-api.cjs');
|
|
9
|
+
const require_featureFlagServiceContext = require('../featureFlagServiceContext/featureFlagServiceContext.cjs');
|
|
8
10
|
const require_amplitudeContext = require('../amplitudeContext/amplitudeContext.cjs');
|
|
9
11
|
require('../amplitudeContext/index.cjs');
|
|
12
|
+
require('../featureFlagServiceContext/index.cjs');
|
|
10
13
|
const require_mapping = require('./mapping.cjs');
|
|
11
14
|
let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
|
|
12
15
|
let react = require("react");
|
|
@@ -24,6 +27,9 @@ const PageProvider = ({ children, previewMode = false, onUrlResolverNotReady })
|
|
|
24
27
|
const [userEvent, setUserEvent] = (0, jotai.useAtom)(require_variant.pageUserEventAtom);
|
|
25
28
|
const [isSupported, setIsSupported] = (0, react.useState)(false);
|
|
26
29
|
const lastNotReadyUrlRef = (0, react.useRef)(null);
|
|
30
|
+
const lastResolvedUrlRef = (0, react.useRef)(null);
|
|
31
|
+
const hasResolvedOnceRef = (0, react.useRef)(false);
|
|
32
|
+
const isVariantResetEnabled = (0, react.useContext)(require_featureFlagServiceContext.FeatureFlagServiceContext)?.featureFlagService?.isFeatureGateEnabled(require_featureGates.FeatureGates.IsPdpVariantContextResetEnabled) ?? false;
|
|
27
33
|
(0, react.useEffect)(() => {
|
|
28
34
|
setPageUrl(window.location.href);
|
|
29
35
|
}, []);
|
|
@@ -78,12 +84,28 @@ const PageProvider = ({ children, previewMode = false, onUrlResolverNotReady })
|
|
|
78
84
|
setIsLoading(false);
|
|
79
85
|
return;
|
|
80
86
|
}
|
|
81
|
-
if (previewMode || userEvent || variantInfo) {
|
|
82
|
-
setIsLoading(false);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
87
|
const cleansedUrl = pageUrl.toLowerCase().trim();
|
|
88
|
+
if (!isVariantResetEnabled) {
|
|
89
|
+
if (previewMode || userEvent || variantInfo) {
|
|
90
|
+
setIsLoading(false);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
if (lastResolvedUrlRef.current === cleansedUrl) {
|
|
95
|
+
setIsLoading(false);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (previewMode || (userEvent || variantInfo) && !hasResolvedOnceRef.current) {
|
|
99
|
+
hasResolvedOnceRef.current = true;
|
|
100
|
+
lastResolvedUrlRef.current = cleansedUrl;
|
|
101
|
+
setIsLoading(false);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
hasResolvedOnceRef.current = true;
|
|
105
|
+
lastResolvedUrlRef.current = cleansedUrl;
|
|
106
|
+
}
|
|
86
107
|
const response = urlResolverResponse[cleansedUrl] ?? await require_application_commerce_api.default.resolveUrl(cleansedUrl);
|
|
108
|
+
if (isVariantResetEnabled && lastResolvedUrlRef.current !== cleansedUrl) return;
|
|
87
109
|
setVariantFromUrlResolver(cleansedUrl, response);
|
|
88
110
|
setIsLoading(false);
|
|
89
111
|
setIsSupported(response.ready);
|
|
@@ -96,6 +118,8 @@ const PageProvider = ({ children, previewMode = false, onUrlResolverNotReady })
|
|
|
96
118
|
});
|
|
97
119
|
}
|
|
98
120
|
} catch (e) {
|
|
121
|
+
const failedUrl = pageUrl?.toLowerCase().trim();
|
|
122
|
+
if (failedUrl && lastResolvedUrlRef.current === failedUrl) lastResolvedUrlRef.current = null;
|
|
99
123
|
setIsLoading(false);
|
|
100
124
|
logger.logError("Failed to resolve page URL", e, { pageUrl });
|
|
101
125
|
}
|
|
@@ -109,7 +133,8 @@ const PageProvider = ({ children, previewMode = false, onUrlResolverNotReady })
|
|
|
109
133
|
userEvent,
|
|
110
134
|
variantInfo,
|
|
111
135
|
previewMode,
|
|
112
|
-
onUrlResolverNotReady
|
|
136
|
+
onUrlResolverNotReady,
|
|
137
|
+
isVariantResetEnabled
|
|
113
138
|
]);
|
|
114
139
|
const { trackEvent } = require_amplitudeContext.useAmplitude();
|
|
115
140
|
const resolvedVariantInfo = (0, jotai.useAtomValue)(require_variant.variantInfoAtom);
|
|
@@ -197,4 +222,4 @@ const usePage = () => {
|
|
|
197
222
|
//#endregion
|
|
198
223
|
exports.PageProvider = PageProvider;
|
|
199
224
|
exports.usePage = usePage;
|
|
200
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZUNvbnRleHQuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwiUGFnZVByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIHByZXZpZXdNb2RlOiBib29sZWFuO1xuICAvKiogV2hlbiBVUkwgcmVzb2x2ZXIgcmV0dXJucyBgcmVhZHk6IGZhbHNlYCwgaW52b2tlZCBmb3IgZXh0ZW5zaW9uL2luamVjdGlvbiBmYWlsdXJlIHJlcG9ydGluZy4gKi9cbiAgb25VcmxSZXNvbHZlck5vdFJlYWR5PzogKGVycm9yOiBFcnJvcikgPT4gUHJvbWlzZTx1bmtub3duPiB8IHZvaWQ7XG59PiIsInVybFJlc29sdmVyQXRvbSIsInBhZ2VWYXJpYW50SW5mb0F0b20iLCJwYWdlVXNlckV2ZW50QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5IiwiUGFnZVZpc2l0Q2F0ZWdvcnkiLCJWYXJpYW50VHlwZUVudW0iLCJtYXBVcmxSZXNvbHZlclJlc3BvbnNlVG9WYXJpYW50SW5mbyIsIm1hcEFwaVVzZXJFdmVudFRvVXNlckV2ZW50IiwiQ29tbWVyY2VBcGlDbGllbnQiLCJ1c2VBbXBsaXR1ZGUiLCJ2YXJpYW50SW5mb0F0b20iLCJoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20iLCJwYWdlVHlwZTogc3RyaW5nIiwicGFnZUlkOiBzdHJpbmciLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL3BhZ2VDb250ZXh0L3BhZ2VDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIFVybFJlc29sdmVyUmVzcG9uc2UsXG4gIGhhc1BhcnNlZFZhcmlhbnRJbmZvQXRvbSxcbiAgcGFnZVVzZXJFdmVudEF0b20sXG4gIHBhZ2VWYXJpYW50SW5mb0F0b20sXG4gIHVybFJlc29sdmVyQXRvbSxcbiAgdmFyaWFudEluZm9BdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGknO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgUGFnZVZpc2l0Q2F0ZWdvcnksIFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IFZhcmlhbnRUeXBlRW51bSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgdXNlQW1wbGl0dWRlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWFwQXBpVXNlckV2ZW50VG9Vc2VyRXZlbnQsIG1hcFVybFJlc29sdmVyUmVzcG9uc2VUb1ZhcmlhbnRJbmZvIH0gZnJvbSAnLi9tYXBwaW5nJztcbmltcG9ydCB7IFBhZ2VEZXRhaWxzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3BhZ2VDb250ZXh0Jyk7XG5cbmNvbnN0IFBhZ2VDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxcbiAgfCAoUGFnZURldGFpbHMgJiB7XG4gICAgICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gICAgICBpc1N1cHBvcnRlZDogYm9vbGVhbjtcbiAgICAgIHNldFBhZ2VVcmw6ICh1cmw6IHN0cmluZykgPT4gdm9pZDtcbiAgICB9KVxuICB8IHVuZGVmaW5lZFxuPih1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgUGFnZVByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIHByZXZpZXdNb2RlOiBib29sZWFuO1xuICAvKiogV2hlbiBVUkwgcmVzb2x2ZXIgcmV0dXJucyBgcmVhZHk6IGZhbHNlYCwgaW52b2tlZCBmb3IgZXh0ZW5zaW9uL2luamVjdGlvbiBmYWlsdXJlIHJlcG9ydGluZy4gKi9cbiAgb25VcmxSZXNvbHZlck5vdFJlYWR5PzogKGVycm9yOiBFcnJvcikgPT4gUHJvbWlzZTx1bmtub3duPiB8IHZvaWQ7XG59PiA9ICh7IGNoaWxkcmVuLCBwcmV2aWV3TW9kZSA9IGZhbHNlLCBvblVybFJlc29sdmVyTm90UmVhZHkgfSkgPT4ge1xuICBjb25zdCBbcGFnZVVybCwgc2V0UGFnZVVybF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFt1cmxSZXNvbHZlclJlc3BvbnNlLCBzZXRVcmxSZXNvbHZlclJlc3BvbnNlXSA9IHVzZUF0b20odXJsUmVzb2x2ZXJBdG9tKTtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3ZhcmlhbnRJbmZvLCBzZXRWYXJpYW50SW5mb10gPSB1c2VBdG9tKHBhZ2VWYXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBbdXNlckV2ZW50LCBzZXRVc2VyRXZlbnRdID0gdXNlQXRvbShwYWdlVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IFtpc1N1cHBvcnRlZCwgc2V0SXNTdXBwb3J0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBsYXN0Tm90UmVhZHlVcmxSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQYWdlVXJsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgfSwgW10pO1xuXG4gIC8vIEF1dG8taW5pdGlhbGl6ZSBhdG9tcyBmb3IgcHJldmlldyBtb2RlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZpZXdNb2RlICYmICF1c2VyRXZlbnQgJiYgIXZhcmlhbnRJbmZvKSB7XG4gICAgICBjb25zdCB1cmwgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogJyc7XG4gICAgICBzZXRVc2VyRXZlbnQoe1xuICAgICAgICBldmVudF9pZDogJ3ByZXZpZXctdXNlci1ldmVudCcsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBhZ2VWaXNpdCxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIHBhZ2VfdmlzaXRfY2F0ZWdvcnk6IFBhZ2VWaXNpdENhdGVnb3J5Lk90aGVyLFxuICAgICAgICAgIHVybCxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgYW55KTtcblxuICAgICAgc2V0VmFyaWFudEluZm8oe1xuICAgICAgICB2YXJpYW50VHlwZTogVmFyaWFudFR5cGVFbnVtLlBhZ2VWaXNpdCxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbcHJldmlld01vZGUsIHVzZXJFdmVudCwgdmFyaWFudEluZm8sIHNldFVzZXJFdmVudCwgc2V0VmFyaWFudEluZm9dKTtcblxuICBjb25zdCBzZXRWYXJpYW50RnJvbVVybFJlc29sdmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKHVybDogc3RyaW5nLCByZXNwb25zZTogVXJsUmVzb2x2ZXJSZXNwb25zZSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlLnJlYWR5KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhcmlhbnRJbmZvID0gbWFwVXJsUmVzb2x2ZXJSZXNwb25zZVRvVmFyaWFudEluZm8odXJsLCByZXNwb25zZSk7XG4gICAgICAgIGNvbnN0IG5ld1VzZXJFdmVudCA9IG1hcEFwaVVzZXJFdmVudFRvVXNlckV2ZW50KHJlc3BvbnNlLnVzZXJfZXZlbnQgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdzZXR0aW5nIHZhcmlhbnQgaW5mbyBhbmQgdXNlciBldmVudCcsIHsgbmV3VmFyaWFudEluZm8sIG5ld1VzZXJFdmVudCB9KTtcbiAgICAgICAgc2V0VmFyaWFudEluZm8obmV3VmFyaWFudEluZm8pO1xuICAgICAgICBzZXRVc2VyRXZlbnQobmV3VXNlckV2ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFVzZXJFdmVudCh1bmRlZmluZWQpO1xuICAgICAgICBzZXRWYXJpYW50SW5mbyh1bmRlZmluZWQpO1xuICAgICAgICBsb2dnZXIubG9nRGVidWcoJ3NldCB2YXJpYW50IGluZm8gYW5kIHVzZXIgZXZlbnQgdG8gdW5kZWZpbmVkJywgeyB2YXJpYW50SW5mbywgdXNlckV2ZW50IH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFZhcmlhbnRJbmZvLCBzZXRVc2VyRXZlbnRdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZVBhZ2VVcmwgPSBhc3luYyAoKSA9PiB7XG4gICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIXBhZ2VVcmwpIHtcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGluIHByZXZpZXcgbW9kZSBvciBhdG9tcyBhcmUgYWxyZWFkeSBzZXQgKGUuZy4sIGJ5IHN0b3J5Ym9vayksIHNraXAgQVBJIGNhbGxcbiAgICAgICAgaWYgKHByZXZpZXdNb2RlIHx8IHVzZXJFdmVudCB8fCB2YXJpYW50SW5mbykge1xuICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xlYW5zZWRVcmwgPSBwYWdlVXJsLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9XG4gICAgICAgICAgdXJsUmVzb2x2ZXJSZXNwb25zZVtjbGVhbnNlZFVybF0gPz9cbiAgICAgICAgICAoKGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmwoY2xlYW5zZWRVcmwpKSBhcyBVcmxSZXNvbHZlclJlc3BvbnNlKTtcbiAgICAgICAgc2V0VmFyaWFudEZyb21VcmxSZXNvbHZlcihjbGVhbnNlZFVybCwgcmVzcG9uc2UpO1xuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICBzZXRJc1N1cHBvcnRlZChyZXNwb25zZS5yZWFkeSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnJlYWR5KSB7XG4gICAgICAgICAgbGFzdE5vdFJlYWR5VXJsUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKG9uVXJsUmVzb2x2ZXJOb3RSZWFkeSAmJiBsYXN0Tm90UmVhZHlVcmxSZWYuY3VycmVudCAhPT0gY2xlYW5zZWRVcmwpIHtcbiAgICAgICAgICBsYXN0Tm90UmVhZHlVcmxSZWYuY3VycmVudCA9IGNsZWFuc2VkVXJsO1xuICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVVJMIHJlc29sdmVyIHJldHVybmVkIHJlYWR5PWZhbHNlIGZvciAke2NsZWFuc2VkVXJsfWApO1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShvblVybFJlc29sdmVyTm90UmVhZHkoZXJyKSkuY2F0Y2goY2FsbGJhY2tFcnJvciA9PiB7XG4gICAgICAgICAgICBsb2dnZXIubG9nRGVidWcoJ29uVXJsUmVzb2x2ZXJOb3RSZWFkeSBjYWxsYmFjayBmYWlsZWQnLCBjYWxsYmFja0Vycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ0ZhaWxlZCB0byByZXNvbHZlIHBhZ2UgVVJMJywgZSwgeyBwYWdlVXJsIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgcmVzb2x2ZVBhZ2VVcmwoKTtcbiAgfSwgW1xuICAgIHBhZ2VVcmwsXG4gICAgdXJsUmVzb2x2ZXJSZXNwb25zZSxcbiAgICBzZXRVcmxSZXNvbHZlclJlc3BvbnNlLFxuICAgIHNldFZhcmlhbnRGcm9tVXJsUmVzb2x2ZXIsXG4gICAgdXNlckV2ZW50LFxuICAgIHZhcmlhbnRJbmZvLFxuICAgIHByZXZpZXdNb2RlLFxuICAgIG9uVXJsUmVzb2x2ZXJOb3RSZWFkeSxcbiAgXSk7XG5cbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgcmVzb2x2ZWRWYXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZSh2YXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBoYXNQYXJzZWRWYXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZShoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBwYWdlVmlld2VkRmlyZWQgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBhZ2VWaWV3ZWRGaXJlZC5jdXJyZW50IHx8IGlzTG9hZGluZyB8fCAhaGFzUGFyc2VkVmFyaWFudEluZm8gfHwgIXZhcmlhbnRJbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHBhZ2VUeXBlOiBzdHJpbmc7XG4gICAgbGV0IHBhZ2VJZDogc3RyaW5nO1xuXG4gICAgc3dpdGNoICh2YXJpYW50SW5mby52YXJpYW50VHlwZSkge1xuICAgICAgY2FzZSBWYXJpYW50VHlwZUVudW0uUGRwOlxuICAgICAgICBwYWdlVHlwZSA9ICdwZHAnO1xuICAgICAgICBwYWdlSWQgPSB2YXJpYW50SW5mby5wcm9kdWN0SWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBWYXJpYW50VHlwZUVudW0uUGxwOlxuICAgICAgICBwYWdlVHlwZSA9ICdwbHAnO1xuICAgICAgICBwYWdlSWQgPSB2YXJpYW50SW5mby5wbHBJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5Ib21lOlxuICAgICAgICBwYWdlVHlwZSA9ICdob21lcGFnZSc7XG4gICAgICAgIHBhZ2VJZCA9IHZhcmlhbnRJbmZvLnVybDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5PdGhlcjpcbiAgICAgICAgcGFnZVR5cGUgPSAnb3RoZXInO1xuICAgICAgICBwYWdlSWQgPSB2YXJpYW50SW5mby51cmw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBWYXJpYW50VHlwZUVudW0uUGFnZVZpc2l0OlxuICAgICAgICBwYWdlVHlwZSA9ICdvdGhlcic7XG4gICAgICAgIHBhZ2VJZCA9IHZhcmlhbnRJbmZvLnVybDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5GdWxsUGFnZVNhbGVzQWdlbnQ6XG4gICAgICAgIHBhZ2VUeXBlID0gJ2FkYXB0aXZlX3N0b3JlZnJvbnQnO1xuICAgICAgICBwYWdlSWQgPSB2YXJpYW50SW5mby51cmw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBhZ2VWaWV3ZWRGaXJlZC5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIHRyYWNrRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLlBhZ2VWaWV3ZWQsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICdjb250ZXh0LnBhZ2VfdHlwZSc6IHBhZ2VUeXBlLFxuICAgICAgICAnY29udGV4dC5wYWdlX2lkJzogcGFnZUlkLFxuICAgICAgICAnY29udGV4dC5zdXBwb3J0ZWQnOiBpc1N1cHBvcnRlZCxcbiAgICAgICAgJ2NvbnRleHQucmVhZHknOiBpc1N1cHBvcnRlZCxcbiAgICAgICAgJ2NvbnRleHQucGFnZV92YXJpYW50X2lkJzogcmVzb2x2ZWRWYXJpYW50SW5mby52YXJpYW50SWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbaXNMb2FkaW5nLCBpc1N1cHBvcnRlZCwgaGFzUGFyc2VkVmFyaWFudEluZm8sIHZhcmlhbnRJbmZvLCByZXNvbHZlZFZhcmlhbnRJbmZvLCB0cmFja0V2ZW50XSk7XG5cbiAgY29uc3Qgc2V0UGFnZVVybFN0YWJsZSA9IHVzZUNhbGxiYWNrKCh1cmw6IHN0cmluZykgPT4ge1xuICAgIHNldFBhZ2VVcmwodXJsKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgcGFnZVVybCxcbiAgICAgIHZhcmlhbnRJbmZvLFxuICAgICAgdXNlckV2ZW50LFxuICAgICAgaXNMb2FkaW5nLFxuICAgICAgaXNTdXBwb3J0ZWQsXG4gICAgICBzZXRQYWdlVXJsOiBzZXRQYWdlVXJsU3RhYmxlLFxuICAgIH0pLFxuICAgIFtwYWdlVXJsLCB1c2VyRXZlbnQsIHZhcmlhbnRJbmZvLCBpc0xvYWRpbmcsIGlzU3VwcG9ydGVkLCBzZXRQYWdlVXJsU3RhYmxlXSxcbiAgKTtcblxuICByZXR1cm4gPFBhZ2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvUGFnZUNvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFBhZ2VDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VQYWdlIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBQYWdlUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQkEsTUFBTSxTQUFTLElBQUlBLHVCQUFP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
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZUNvbnRleHQuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwiUGFnZVByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIHByZXZpZXdNb2RlOiBib29sZWFuO1xuICAvKiogV2hlbiBVUkwgcmVzb2x2ZXIgcmV0dXJucyBgcmVhZHk6IGZhbHNlYCwgaW52b2tlZCBmb3IgZXh0ZW5zaW9uL2luamVjdGlvbiBmYWlsdXJlIHJlcG9ydGluZy4gKi9cbiAgb25VcmxSZXNvbHZlck5vdFJlYWR5PzogKGVycm9yOiBFcnJvcikgPT4gUHJvbWlzZTx1bmtub3duPiB8IHZvaWQ7XG59PiIsInVybFJlc29sdmVyQXRvbSIsInBhZ2VWYXJpYW50SW5mb0F0b20iLCJwYWdlVXNlckV2ZW50QXRvbSIsIkZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQiLCJGZWF0dXJlR2F0ZXMiLCJVc2VyRXZlbnRDYXRlZ29yeSIsIlBhZ2VWaXNpdENhdGVnb3J5IiwiVmFyaWFudFR5cGVFbnVtIiwibWFwVXJsUmVzb2x2ZXJSZXNwb25zZVRvVmFyaWFudEluZm8iLCJtYXBBcGlVc2VyRXZlbnRUb1VzZXJFdmVudCIsIkNvbW1lcmNlQXBpQ2xpZW50IiwidXNlQW1wbGl0dWRlIiwidmFyaWFudEluZm9BdG9tIiwiaGFzUGFyc2VkVmFyaWFudEluZm9BdG9tIiwicGFnZVR5cGU6IHN0cmluZyIsInBhZ2VJZDogc3RyaW5nIiwiRW52aXZlTWV0cmljc0V2ZW50TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dC9wYWdlQ29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBVcmxSZXNvbHZlclJlc3BvbnNlLFxuICBoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20sXG4gIHBhZ2VVc2VyRXZlbnRBdG9tLFxuICBwYWdlVmFyaWFudEluZm9BdG9tLFxuICB1cmxSZXNvbHZlckF0b20sXG4gIHZhcmlhbnRJbmZvQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IHVzZUF0b20sIHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCB9IGZyb20gJ3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IFBhZ2VWaXNpdENhdGVnb3J5LCBVc2VyRXZlbnRDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBWYXJpYW50VHlwZUVudW0gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIHVzZUFtcGxpdHVkZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IG1hcEFwaVVzZXJFdmVudFRvVXNlckV2ZW50LCBtYXBVcmxSZXNvbHZlclJlc3BvbnNlVG9WYXJpYW50SW5mbyB9IGZyb20gJy4vbWFwcGluZyc7XG5pbXBvcnQgeyBQYWdlRGV0YWlscyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdwYWdlQ29udGV4dCcpO1xuXG5jb25zdCBQYWdlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8XG4gIHwgKFBhZ2VEZXRhaWxzICYge1xuICAgICAgaXNMb2FkaW5nOiBib29sZWFuO1xuICAgICAgaXNTdXBwb3J0ZWQ6IGJvb2xlYW47XG4gICAgICBzZXRQYWdlVXJsOiAodXJsOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgfSlcbiAgfCB1bmRlZmluZWRcbj4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IFBhZ2VQcm92aWRlcjogUmVhY3QuRkM8e1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBwcmV2aWV3TW9kZTogYm9vbGVhbjtcbiAgLyoqIFdoZW4gVVJMIHJlc29sdmVyIHJldHVybnMgYHJlYWR5OiBmYWxzZWAsIGludm9rZWQgZm9yIGV4dGVuc2lvbi9pbmplY3Rpb24gZmFpbHVyZSByZXBvcnRpbmcuICovXG4gIG9uVXJsUmVzb2x2ZXJOb3RSZWFkeT86IChlcnJvcjogRXJyb3IpID0+IFByb21pc2U8dW5rbm93bj4gfCB2b2lkO1xufT4gPSAoeyBjaGlsZHJlbiwgcHJldmlld01vZGUgPSBmYWxzZSwgb25VcmxSZXNvbHZlck5vdFJlYWR5IH0pID0+IHtcbiAgY29uc3QgW3BhZ2VVcmwsIHNldFBhZ2VVcmxdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBbdXJsUmVzb2x2ZXJSZXNwb25zZSwgc2V0VXJsUmVzb2x2ZXJSZXNwb25zZV0gPSB1c2VBdG9tKHVybFJlc29sdmVyQXRvbSk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFt2YXJpYW50SW5mbywgc2V0VmFyaWFudEluZm9dID0gdXNlQXRvbShwYWdlVmFyaWFudEluZm9BdG9tKTtcbiAgY29uc3QgW3VzZXJFdmVudCwgc2V0VXNlckV2ZW50XSA9IHVzZUF0b20ocGFnZVVzZXJFdmVudEF0b20pO1xuICBjb25zdCBbaXNTdXBwb3J0ZWQsIHNldElzU3VwcG9ydGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgbGFzdE5vdFJlYWR5VXJsUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAvLyBUcmFja3MgdGhlIGxhc3QgVVJMIHdlIHJhbiB0aHJvdWdoIHRoZSByZXNvbHZlciAoZGVkdXBlIGtleSkuIExldHMgdXMgcmUtcmVzb2x2ZSB3aGVuIHRoZVxuICAvLyBwYWdlIFVSTCBjaGFuZ2VzIGNsaWVudC1zaWRlIChlLmcuIGEgUERQIGNvbG9yL3ZhcmlhbnQgc3dhcCB0aGF0IHB1c2hlcyBhIG5ldyBVUkwgd2l0aG91dFxuICAvLyBhIGZ1bGwgcmVsb2FkKSBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgb24gdGhlIHN0YWxlIHZhcmlhbnQvdXNlckV2ZW50IGF0b21zLiBDbGVhcmVkXG4gIC8vIG9uIGZhaWx1cmUgc28gdGhlIFVSTCBjYW4gYmUgcmV0cmllZC5cbiAgY29uc3QgbGFzdFJlc29sdmVkVXJsUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAvLyBXaGV0aGVyIHdlIGhhdmUgZXZlciBkcml2ZW4gYSByZXNvbHV0aW9uIG91cnNlbHZlcy4gS2VwdCBzZXBhcmF0ZSBmcm9tXG4gIC8vIGBsYXN0UmVzb2x2ZWRVcmxSZWZgICh3aGljaCBhIGZhaWx1cmUgY2xlYXJzKSBzbyBhIGZhaWxlZCByZXNvbHZlIGNhbiByZXRyeSB3aXRob3V0IHRoZVxuICAvLyBuZXh0IG5hdmlnYXRpb24gbWlzcmVhZGluZyBpdCBhcyBcImF0b21zIHdlcmUgc2VlZGVkIGV4dGVybmFsbHlcIiBhbmQgc2tpcHBpbmcgdGhlIEFQSSBjYWxsLlxuICBjb25zdCBoYXNSZXNvbHZlZE9uY2VSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIC8vIEdhdGU6IHJlLXJlc29sdmluZyB0aGUgVVJMIG9uIGEgY2xpZW50LXNpZGUgY2hhbmdlIChQRFAgdmFyaWFudCByZXNldCkgaXMgb3B0LWluIHBlciBvcmdcbiAgLy8gdmlhIFN0YXRzaWcuIFdoZW4gb2ZmLCBrZWVwIHRoZSBvcmlnaW5hbCBiZWhhdmlvciAocmVzb2x2ZSBvbmNlLCB0aGVuIHNob3J0LWNpcmN1aXQpLlxuICAvLyBSZWFkIHZpYSB1c2VDb250ZXh0IChub3QgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlKSBzbyBhIGJhcmUgUGFnZVByb3ZpZGVyIOKAlCBlLmcuIGluIHVuaXRcbiAgLy8gdGVzdHMg4oCUIGRvZXMgbm90IHRocm93OyBhYnNlbnQgcHJvdmlkZXIgb3IgZ2F0ZSByZXNvbHZlcyB0byBmYWxzZS5cbiAgY29uc3QgZmVhdHVyZUZsYWdDb250ZXh0ID0gdXNlQ29udGV4dChGZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0KTtcbiAgY29uc3QgaXNWYXJpYW50UmVzZXRFbmFibGVkID1cbiAgICBmZWF0dXJlRmxhZ0NvbnRleHQ/LmZlYXR1cmVGbGFnU2VydmljZT8uaXNGZWF0dXJlR2F0ZUVuYWJsZWQoXG4gICAgICBGZWF0dXJlR2F0ZXMuSXNQZHBWYXJpYW50Q29udGV4dFJlc2V0RW5hYmxlZCxcbiAgICApID8/IGZhbHNlO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UGFnZVVybCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gIH0sIFtdKTtcblxuICAvLyBBdXRvLWluaXRpYWxpemUgYXRvbXMgZm9yIHByZXZpZXcgbW9kZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmV2aWV3TW9kZSAmJiAhdXNlckV2ZW50ICYmICF2YXJpYW50SW5mbykge1xuICAgICAgY29uc3QgdXJsID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cubG9jYXRpb24uaHJlZiA6ICcnO1xuICAgICAgc2V0VXNlckV2ZW50KHtcbiAgICAgICAgZXZlbnRfaWQ6ICdwcmV2aWV3LXVzZXItZXZlbnQnLFxuICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QYWdlVmlzaXQsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBwYWdlX3Zpc2l0X2NhdGVnb3J5OiBQYWdlVmlzaXRDYXRlZ29yeS5PdGhlcixcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICB9IGFzIGFueSk7XG5cbiAgICAgIHNldFZhcmlhbnRJbmZvKHtcbiAgICAgICAgdmFyaWFudFR5cGU6IFZhcmlhbnRUeXBlRW51bS5QYWdlVmlzaXQsXG4gICAgICAgIHVybCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3ByZXZpZXdNb2RlLCB1c2VyRXZlbnQsIHZhcmlhbnRJbmZvLCBzZXRVc2VyRXZlbnQsIHNldFZhcmlhbnRJbmZvXSk7XG5cbiAgY29uc3Qgc2V0VmFyaWFudEZyb21VcmxSZXNvbHZlciA9IHVzZUNhbGxiYWNrKFxuICAgICh1cmw6IHN0cmluZywgcmVzcG9uc2U6IFVybFJlc29sdmVyUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5yZWFkeSkge1xuICAgICAgICBjb25zdCBuZXdWYXJpYW50SW5mbyA9IG1hcFVybFJlc29sdmVyUmVzcG9uc2VUb1ZhcmlhbnRJbmZvKHVybCwgcmVzcG9uc2UpO1xuICAgICAgICBjb25zdCBuZXdVc2VyRXZlbnQgPSBtYXBBcGlVc2VyRXZlbnRUb1VzZXJFdmVudChyZXNwb25zZS51c2VyX2V2ZW50ID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIGxvZ2dlci5sb2dEZWJ1Zygnc2V0dGluZyB2YXJpYW50IGluZm8gYW5kIHVzZXIgZXZlbnQnLCB7IG5ld1ZhcmlhbnRJbmZvLCBuZXdVc2VyRXZlbnQgfSk7XG4gICAgICAgIHNldFZhcmlhbnRJbmZvKG5ld1ZhcmlhbnRJbmZvKTtcbiAgICAgICAgc2V0VXNlckV2ZW50KG5ld1VzZXJFdmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRVc2VyRXZlbnQodW5kZWZpbmVkKTtcbiAgICAgICAgc2V0VmFyaWFudEluZm8odW5kZWZpbmVkKTtcbiAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdzZXQgdmFyaWFudCBpbmZvIGFuZCB1c2VyIGV2ZW50IHRvIHVuZGVmaW5lZCcsIHsgdmFyaWFudEluZm8sIHVzZXJFdmVudCB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRWYXJpYW50SW5mbywgc2V0VXNlckV2ZW50XSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVQYWdlVXJsID0gYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFwYWdlVXJsKSB7XG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGVhbnNlZFVybCA9IHBhZ2VVcmwudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhcmlhbnRSZXNldEVuYWJsZWQpIHtcbiAgICAgICAgICAvLyBHYXRlIG9mZjogb3JpZ2luYWwgYmVoYXZpb3Ig4oCUIHJlc29sdmUgb25jZSwgdGhlbiBzaG9ydC1jaXJjdWl0IGZvcmV2ZXIgd2hpbGUgdGhlXG4gICAgICAgICAgLy8gdmFyaWFudC91c2VyRXZlbnQgYXRvbXMgYXJlIHNldCAoYSBjbGllbnQtc2lkZSBVUkwgY2hhbmdlIG5ldmVyIHJlLXJlc29sdmVzKS5cbiAgICAgICAgICBpZiAocHJldmlld01vZGUgfHwgdXNlckV2ZW50IHx8IHZhcmlhbnRJbmZvKSB7XG4gICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBHYXRlIG9uOiByZS1yZXNvbHZlIHdoZW4gdGhlIFVSTCBjaGFuZ2VzIHNvIGEgUERQIHZhcmlhbnQgc3dhcCBmb2xsb3dzIHRvIHRoZSBuZXdcbiAgICAgICAgICAvLyBwcm9kdWN0LlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gQWxyZWFkeSByZXNvbHZlZCB0aGlzIGV4YWN0IFVSTCDigJQgZ3VhcmRzIGFnYWluc3QgdGhlIGVmZmVjdCByZS1ydW5uaW5nIG9uY2UgdGhlXG4gICAgICAgICAgLy8gcmVzb2x2ZXIgd3JpdGVzIHRoZSB2YXJpYW50L3VzZXJFdmVudCBhdG9tcyAodGhleSBhcmUgZWZmZWN0IGRlcGVuZGVuY2llcykuXG4gICAgICAgICAgaWYgKGxhc3RSZXNvbHZlZFVybFJlZi5jdXJyZW50ID09PSBjbGVhbnNlZFVybCkge1xuICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSW4gcHJldmlldyBtb2RlLCBvciB3aGVuIHRoZSBhdG9tcyB3ZXJlIHNlZWRlZCBleHRlcm5hbGx5IChlLmcuIGJ5IHN0b3J5Ym9vaylcbiAgICAgICAgICAvLyBiZWZvcmUgd2Ugb3Vyc2VsdmVzIHJlc29sdmVkIGFueXRoaW5nLCBob25vciB0aG9zZSBhdG9tcyBhbmQgc2tpcCB0aGUgQVBJIGNhbGwuXG4gICAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHJlc29sdmVkIGF0IGxlYXN0IG9uY2UgKGBoYXNSZXNvbHZlZE9uY2VSZWZgKSwgYSBjaGFuZ2VkIFVSTCBzaG91bGRcbiAgICAgICAgICAvLyByZS1yZXNvbHZlIGV2ZW4gdGhvdWdoIHRoZSBwcmV2aW91cyB2YXJpYW50L3VzZXJFdmVudCBhdG9tcyBhcmUgc2V0LlxuICAgICAgICAgIGlmIChwcmV2aWV3TW9kZSB8fCAoKHVzZXJFdmVudCB8fCB2YXJpYW50SW5mbykgJiYgIWhhc1Jlc29sdmVkT25jZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgaGFzUmVzb2x2ZWRPbmNlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgbGFzdFJlc29sdmVkVXJsUmVmLmN1cnJlbnQgPSBjbGVhbnNlZFVybDtcbiAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGhhc1Jlc29sdmVkT25jZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICBsYXN0UmVzb2x2ZWRVcmxSZWYuY3VycmVudCA9IGNsZWFuc2VkVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPVxuICAgICAgICAgIHVybFJlc29sdmVyUmVzcG9uc2VbY2xlYW5zZWRVcmxdID8/XG4gICAgICAgICAgKChhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5yZXNvbHZlVXJsKGNsZWFuc2VkVXJsKSkgYXMgVXJsUmVzb2x2ZXJSZXNwb25zZSk7XG5cbiAgICAgICAgLy8gQSBuZXdlciBuYXZpZ2F0aW9uIHN0YXJ0ZWQgcmVzb2x2aW5nIHdoaWxlIHdlIGF3YWl0ZWQgKGUuZy4gdGhlIHNob3BwZXIgY2xpY2tlZFxuICAgICAgICAvLyB0aHJvdWdoIHNldmVyYWwgdmFyaWFudCBzd2F0Y2hlcyBxdWlja2x5KS4gRHJvcCB0aGlzIG5vdy1zdGFsZSByZXNwb25zZSBzbyBhblxuICAgICAgICAvLyBvdXQtb2Ytb3JkZXIgcmVzb2x1dGlvbiBjYW4ndCBvdmVyd3JpdGUgdGhlIGxhdGVzdCB2YXJpYW50LiBEbyBOT1QgY2xlYXIgaXNMb2FkaW5nXG4gICAgICAgIC8vIGhlcmU6IHRoZSBuZXdlciBpbi1mbGlnaHQgcmVxdWVzdCBvd25zIHRoZSBsb2FkaW5nIHN0YXRlLCBhbmQgY2xlYXJpbmcgaXQgd291bGRcbiAgICAgICAgLy8gb3BlbiBhIHdpbmRvdyB3aGVyZSBpc0xvYWRpbmc9ZmFsc2Ugd2hpbGUgdmFyaWFudEluZm8vaXNTdXBwb3J0ZWQgc3RpbGwgYmVsb25nIHRvXG4gICAgICAgIC8vIHRoZSBwcmV2aW91cyBwcm9kdWN0IChjYXVzaW5nIHdpZGdldCBmbGFzaGVzIGFuZCBhIGZpcmUtb25jZSBzdWNjZXNzIHJlZiDigJQgc2VlXG4gICAgICAgIC8vIFdpZGdldHMudHN4IOKAlCB0byBsYXRjaCBvbnRvIHRoZSB3cm9uZyBwcm9kdWN0J3Mgc3RhdGUpLlxuICAgICAgICBpZiAoaXNWYXJpYW50UmVzZXRFbmFibGVkICYmIGxhc3RSZXNvbHZlZFVybFJlZi5jdXJyZW50ICE9PSBjbGVhbnNlZFVybCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFZhcmlhbnRGcm9tVXJsUmVzb2x2ZXIoY2xlYW5zZWRVcmwsIHJlc3BvbnNlKTtcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgc2V0SXNTdXBwb3J0ZWQocmVzcG9uc2UucmVhZHkpO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5yZWFkeSkge1xuICAgICAgICAgIGxhc3ROb3RSZWFkeVVybFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChvblVybFJlc29sdmVyTm90UmVhZHkgJiYgbGFzdE5vdFJlYWR5VXJsUmVmLmN1cnJlbnQgIT09IGNsZWFuc2VkVXJsKSB7XG4gICAgICAgICAgbGFzdE5vdFJlYWR5VXJsUmVmLmN1cnJlbnQgPSBjbGVhbnNlZFVybDtcbiAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYFVSTCByZXNvbHZlciByZXR1cm5lZCByZWFkeT1mYWxzZSBmb3IgJHtjbGVhbnNlZFVybH1gKTtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUob25VcmxSZXNvbHZlck5vdFJlYWR5KGVycikpLmNhdGNoKGNhbGxiYWNrRXJyb3IgPT4ge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdvblVybFJlc29sdmVyTm90UmVhZHkgY2FsbGJhY2sgZmFpbGVkJywgY2FsbGJhY2tFcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQWxsb3cgdGhpcyBVUkwgdG8gYmUgcmV0cmllZCBvbiBhIHN1YnNlcXVlbnQgdHJpZ2dlciDigJQgYnV0IG9ubHkgaWYgYSBuZXdlclxuICAgICAgICAvLyBuYXZpZ2F0aW9uIGhhc24ndCBhbHJlYWR5IHN1cGVyc2VkZWQgaXQsIHNvIGEgc3RhbGUgZmFpbHVyZSBjYW4ndCBkaXNjYXJkIGEgbmV3ZXJcbiAgICAgICAgLy8gaW4tZmxpZ2h0IHJlc29sdXRpb24uIGBoYXNSZXNvbHZlZE9uY2VSZWZgIGlzIGludGVudGlvbmFsbHkgbGVmdCBzZXQsIHNvIHJldHJ5aW5nXG4gICAgICAgIC8vIG5ldmVyIGZhbGxzIGludG8gdGhlIHNlZWRlZC1hdG9tcyBicmFuY2ggYWJvdmUuXG4gICAgICAgIGNvbnN0IGZhaWxlZFVybCA9IHBhZ2VVcmw/LnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICBpZiAoZmFpbGVkVXJsICYmIGxhc3RSZXNvbHZlZFVybFJlZi5jdXJyZW50ID09PSBmYWlsZWRVcmwpIHtcbiAgICAgICAgICBsYXN0UmVzb2x2ZWRVcmxSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBwYWdlIFVSTCcsIGUsIHsgcGFnZVVybCB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJlc29sdmVQYWdlVXJsKCk7XG4gIH0sIFtcbiAgICBwYWdlVXJsLFxuICAgIHVybFJlc29sdmVyUmVzcG9uc2UsXG4gICAgc2V0VXJsUmVzb2x2ZXJSZXNwb25zZSxcbiAgICBzZXRWYXJpYW50RnJvbVVybFJlc29sdmVyLFxuICAgIHVzZXJFdmVudCxcbiAgICB2YXJpYW50SW5mbyxcbiAgICBwcmV2aWV3TW9kZSxcbiAgICBvblVybFJlc29sdmVyTm90UmVhZHksXG4gICAgaXNWYXJpYW50UmVzZXRFbmFibGVkLFxuICBdKTtcblxuICBjb25zdCB7IHRyYWNrRXZlbnQgfSA9IHVzZUFtcGxpdHVkZSgpO1xuICBjb25zdCByZXNvbHZlZFZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHZhcmlhbnRJbmZvQXRvbSk7XG4gIGNvbnN0IGhhc1BhcnNlZFZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKGhhc1BhcnNlZFZhcmlhbnRJbmZvQXRvbSk7XG4gIGNvbnN0IHBhZ2VWaWV3ZWRGaXJlZCA9IHVzZVJlZihmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocGFnZVZpZXdlZEZpcmVkLmN1cnJlbnQgfHwgaXNMb2FkaW5nIHx8ICFoYXNQYXJzZWRWYXJpYW50SW5mbyB8fCAhdmFyaWFudEluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcGFnZVR5cGU6IHN0cmluZztcbiAgICBsZXQgcGFnZUlkOiBzdHJpbmc7XG5cbiAgICBzd2l0Y2ggKHZhcmlhbnRJbmZvLnZhcmlhbnRUeXBlKSB7XG4gICAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5QZHA6XG4gICAgICAgIHBhZ2VUeXBlID0gJ3BkcCc7XG4gICAgICAgIHBhZ2VJZCA9IHZhcmlhbnRJbmZvLnByb2R1Y3RJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5QbHA6XG4gICAgICAgIHBhZ2VUeXBlID0gJ3BscCc7XG4gICAgICAgIHBhZ2VJZCA9IHZhcmlhbnRJbmZvLnBscElkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLkhvbWU6XG4gICAgICAgIHBhZ2VUeXBlID0gJ2hvbWVwYWdlJztcbiAgICAgICAgcGFnZUlkID0gdmFyaWFudEluZm8udXJsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLk90aGVyOlxuICAgICAgICBwYWdlVHlwZSA9ICdvdGhlcic7XG4gICAgICAgIHBhZ2VJZCA9IHZhcmlhbnRJbmZvLnVybDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5QYWdlVmlzaXQ6XG4gICAgICAgIHBhZ2VUeXBlID0gJ290aGVyJztcbiAgICAgICAgcGFnZUlkID0gdmFyaWFudEluZm8udXJsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLkZ1bGxQYWdlU2FsZXNBZ2VudDpcbiAgICAgICAgcGFnZVR5cGUgPSAnYWRhcHRpdmVfc3RvcmVmcm9udCc7XG4gICAgICAgIHBhZ2VJZCA9IHZhcmlhbnRJbmZvLnVybDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGFnZVZpZXdlZEZpcmVkLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgdHJhY2tFdmVudCh7XG4gICAgICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUuUGFnZVZpZXdlZCxcbiAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgJ2NvbnRleHQucGFnZV90eXBlJzogcGFnZVR5cGUsXG4gICAgICAgICdjb250ZXh0LnBhZ2VfaWQnOiBwYWdlSWQsXG4gICAgICAgICdjb250ZXh0LnN1cHBvcnRlZCc6IGlzU3VwcG9ydGVkLFxuICAgICAgICAnY29udGV4dC5yZWFkeSc6IGlzU3VwcG9ydGVkLFxuICAgICAgICAnY29udGV4dC5wYWdlX3ZhcmlhbnRfaWQnOiByZXNvbHZlZFZhcmlhbnRJbmZvLnZhcmlhbnRJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sIFtpc0xvYWRpbmcsIGlzU3VwcG9ydGVkLCBoYXNQYXJzZWRWYXJpYW50SW5mbywgdmFyaWFudEluZm8sIHJlc29sdmVkVmFyaWFudEluZm8sIHRyYWNrRXZlbnRdKTtcblxuICBjb25zdCBzZXRQYWdlVXJsU3RhYmxlID0gdXNlQ2FsbGJhY2soKHVybDogc3RyaW5nKSA9PiB7XG4gICAgc2V0UGFnZVVybCh1cmwpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBwYWdlVXJsLFxuICAgICAgdmFyaWFudEluZm8sXG4gICAgICB1c2VyRXZlbnQsXG4gICAgICBpc0xvYWRpbmcsXG4gICAgICBpc1N1cHBvcnRlZCxcbiAgICAgIHNldFBhZ2VVcmw6IHNldFBhZ2VVcmxTdGFibGUsXG4gICAgfSksXG4gICAgW3BhZ2VVcmwsIHVzZXJFdmVudCwgdmFyaWFudEluZm8sIGlzTG9hZGluZywgaXNTdXBwb3J0ZWQsIHNldFBhZ2VVcmxTdGFibGVdLFxuICApO1xuXG4gIHJldHVybiA8UGFnZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9QYWdlQ29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgY29uc3QgdXNlUGFnZSA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoUGFnZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZVBhZ2UgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFBhZ2VQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZCQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8sY0FBYztBQUV4QyxNQUFNLHVDQU9KLE9BQVU7QUFFWixNQUFhQyxnQkFLUCxFQUFFLFVBQVUsY0FBYyxPQUFPLDRCQUE0QjtDQUNqRSxNQUFNLENBQUMsU0FBUyxrQ0FBMkMsT0FBVTtDQUNyRSxNQUFNLENBQUMscUJBQXFCLDZDQUFrQ0MsZ0NBQWdCO0NBQzlFLE1BQU0sQ0FBQyxXQUFXLG9DQUF5QixNQUFNO0NBQ2pELE1BQU0sQ0FBQyxhQUFhLHFDQUEwQkMsb0NBQW9CO0NBQ2xFLE1BQU0sQ0FBQyxXQUFXLG1DQUF3QkMsa0NBQWtCO0NBQzVELE1BQU0sQ0FBQyxhQUFhLHNDQUEyQixNQUFNO0NBQ3JELE1BQU0sdUNBQTJDLEtBQUs7Q0FLdEQsTUFBTSx1Q0FBMkMsS0FBSztDQUl0RCxNQUFNLHVDQUE0QixNQUFNO0NBT3hDLE1BQU0sOENBRGdD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
|