@envive-ai/react-hooks 0.3.38 → 0.3.40
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/commerce-api.cjs +3 -2
- package/dist/application/commerce-api.js +3 -2
- package/dist/application/models/api/orgConfigResults.d.cts +13 -2
- package/dist/application/models/api/orgConfigResults.d.ts +13 -2
- package/dist/application/models/featureGates.cjs +2 -1
- package/dist/application/models/featureGates.d.cts +2 -1
- package/dist/application/models/featureGates.d.ts +2 -1
- package/dist/application/models/featureGates.js +2 -1
- package/dist/application/models/graphql/queries/getWidgetConfigQuery.cjs +23 -0
- package/dist/application/models/graphql/queries/getWidgetConfigQuery.js +22 -0
- package/dist/application/models/index.d.cts +2 -2
- package/dist/application/models/index.d.ts +2 -2
- package/dist/application/utils/index.cjs +0 -2
- package/dist/application/utils/index.d.cts +1 -2
- package/dist/application/utils/index.d.ts +1 -2
- package/dist/application/utils/index.js +1 -2
- package/dist/atoms/app/index.d.cts +7 -7
- package/dist/atoms/app/index.d.ts +6 -6
- package/dist/atoms/chat/chatState.d.cts +18 -18
- package/dist/atoms/chat/chatState.d.ts +19 -19
- 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 +3 -3
- 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 +2 -2
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.d.ts +13 -13
- package/dist/atoms/envive/resolvedBaseConfigVersion.cjs +9 -0
- package/dist/atoms/envive/resolvedBaseConfigVersion.js +8 -0
- 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 +4 -4
- package/dist/atoms/org/graphqlConfig.d.ts +4 -4
- package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
- 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/atoms/search/utils.d.ts +1 -1
- package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
- package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
- package/dist/contexts/enviveContext/enviveContext.cjs +11 -3
- package/dist/contexts/enviveContext/enviveContext.js +11 -3
- package/dist/contexts/graphqlContext/graphqlContext.cjs +1 -1
- package/dist/contexts/graphqlContext/graphqlContext.d.cts +3 -1
- package/dist/contexts/graphqlContext/graphqlContext.d.ts +3 -1
- package/dist/contexts/graphqlContext/graphqlContext.js +1 -1
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +9 -3
- package/dist/contexts/salesAgentContext/salesAgentService.js +9 -3
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- 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/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
- package/dist/hooks/utils.d.cts +1 -1
- package/dist/hooks/utils.d.ts +1 -1
- package/dist/services/amplitudeService/amplitudeService.cjs +17 -2
- package/dist/services/amplitudeService/amplitudeService.d.cts +3 -1
- package/dist/services/amplitudeService/amplitudeService.d.ts +3 -1
- package/dist/services/amplitudeService/amplitudeService.js +17 -2
- package/dist/services/enviveConfigService/enviveConfigService.cjs +9 -3
- package/dist/services/enviveConfigService/enviveConfigService.d.cts +3 -2
- package/dist/services/enviveConfigService/enviveConfigService.d.ts +3 -2
- package/dist/services/enviveConfigService/enviveConfigService.js +10 -4
- package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +78 -39
- package/dist/services/enviveConfigService/fetchGraphQLConfig.js +78 -40
- package/dist/services/ga4ProjectionService/ga4ProjectionService.cjs +3 -3
- package/dist/services/ga4ProjectionService/ga4ProjectionService.js +3 -3
- package/dist/services/hardcopyService/hardcopyService.cjs +4 -2
- package/dist/services/hardcopyService/hardcopyService.js +4 -2
- package/dist/types/config-versions.cjs +3 -1
- package/dist/types/config-versions.js +3 -2
- package/dist/types/customerService.cjs +2 -1
- package/dist/types/customerService.d.cts +2 -1
- package/dist/types/customerService.d.ts +2 -1
- package/dist/types/customerService.js +2 -1
- package/package.json +1 -1
- package/src/application/commerce-api.ts +5 -1
- package/src/application/models/api/orgConfigResults.ts +27 -0
- package/src/application/models/featureGates.ts +5 -0
- package/src/application/models/graphql/queries/getWidgetConfigQuery.ts +34 -0
- package/src/application/utils/__tests__/elementObserver.test.ts +200 -0
- package/src/application/utils/index.ts +0 -1
- package/src/atoms/envive/resolvedBaseConfigVersion.ts +11 -0
- package/src/contexts/enviveContext/enviveContext.tsx +20 -0
- package/src/contexts/graphqlContext/graphqlContext.tsx +5 -0
- package/src/contexts/salesAgentContext/salesAgentService.ts +4 -1
- package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +95 -0
- package/src/services/amplitudeService/amplitudeService.ts +31 -1
- package/src/services/enviveConfigService/__tests__/fetchGraphQLConfig.test.ts +107 -1
- package/src/services/enviveConfigService/enviveConfigService.ts +35 -7
- package/src/services/enviveConfigService/fetchGraphQLConfig.ts +119 -57
- package/src/services/ga4ProjectionService/ga4ProjectionService.ts +2 -2
- package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +35 -1
- package/src/services/hardcopyService/hardcopyService.ts +6 -1
- package/src/types/config-versions.ts +8 -0
- package/src/types/customerService.ts +1 -0
- package/dist/application/utils/merchantUtils.cjs +0 -18
- package/dist/application/utils/merchantUtils.d.cts +0 -5
- package/dist/application/utils/merchantUtils.d.ts +0 -5
- package/dist/application/utils/merchantUtils.js +0 -17
- package/src/application/utils/merchantUtils.ts +0 -16
|
@@ -12,6 +12,21 @@ let __amplitude_analytics_browser = require("@amplitude/analytics-browser");
|
|
|
12
12
|
|
|
13
13
|
//#region src/services/amplitudeService/amplitudeService.ts
|
|
14
14
|
const logger = new require_logger.default("amplitudeService");
|
|
15
|
+
const EXPERIMENT_NAMESPACES = ["ml", "merchant"];
|
|
16
|
+
const buildExperimentProps = (assignments) => {
|
|
17
|
+
const byNamespace = /* @__PURE__ */ new Map();
|
|
18
|
+
(assignments ?? []).forEach((a) => {
|
|
19
|
+
if (a.layer_name != null && a.namespace != null) byNamespace.set(a.namespace, a);
|
|
20
|
+
});
|
|
21
|
+
return EXPERIMENT_NAMESPACES.reduce((acc, ns) => {
|
|
22
|
+
const a = byNamespace.get(ns);
|
|
23
|
+
acc[`experiment.${ns}.layer_name`] = a?.layer_name ?? null;
|
|
24
|
+
acc[`experiment.${ns}.experiment_name`] = a?.allocated_experiment_name ?? null;
|
|
25
|
+
acc[`experiment.${ns}.group_name`] = a?.group_name ?? null;
|
|
26
|
+
acc[`experiment.${ns}.rule_id`] = null;
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
};
|
|
15
30
|
var AmplitudeService = class AmplitudeService {
|
|
16
31
|
constructor(config) {
|
|
17
32
|
this.supplementalDefaultProps = {};
|
|
@@ -38,7 +53,7 @@ var AmplitudeService = class AmplitudeService {
|
|
|
38
53
|
};
|
|
39
54
|
return acc;
|
|
40
55
|
}, {}) : {};
|
|
41
|
-
const experimentProps =
|
|
56
|
+
const experimentProps = buildExperimentProps(this.config.experimentAssignments);
|
|
42
57
|
const environmentProps = {
|
|
43
58
|
"environment.execution_context": "bundle",
|
|
44
59
|
"environment.page_url": window.location.href,
|
|
@@ -277,4 +292,4 @@ var AmplitudeService = class AmplitudeService {
|
|
|
277
292
|
|
|
278
293
|
//#endregion
|
|
279
294
|
exports.AmplitudeService = AmplitudeService;
|
|
280
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJMb2NhbFN0b3JhZ2VLZXlzIiwiZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiIsImVucmljaGVkRXZlbnQ6IEV2ZW50IiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCIsIldpZGdldFR5cGVWMyIsIkNoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMiLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbnN0YW5jZSB9IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLWJyb3dzZXInO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciwgU3BpZmZ5RXZlbnQgfSBmcm9tICdzcmMvZXZlbnRzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUtleXMgfSBmcm9tICdzcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dCc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEJyb3dzZXJDbGllbnQsXG4gIEVucmljaG1lbnRQbHVnaW4sXG4gIEV2ZW50LFxuICBTZXJ2ZXJab25lVHlwZSxcbn0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5pbXBvcnQgeyBXaWRnZXRUeXBlVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5pbXBvcnQgeyBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzJztcbmltcG9ydCB7IHByb2plY3RUb0dBNCB9IGZyb20gJy4uL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuL2V2ZW50TmFtZXMnO1xuXG4vLyBSZS1leHBvcnQgZXZlbnQgbmFtZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH07XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2FtcGxpdHVkZVNlcnZpY2UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZTtcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEdyb3Vwcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnIHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGFtcGxpdHVkZUFwaUtleTogc3RyaW5nO1xuICBkYXRhUmVzaWRlbmN5OiBzdHJpbmc7XG4gIGVudjogc3RyaW5nO1xuICBjb250ZXh0U291cmNlOiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZTogc3RyaW5nO1xuICBvcmdJZDogc3RyaW5nO1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgc2hvdzogYm9vbGVhbjtcbiAgZW52aXZlT246IGJvb2xlYW47XG4gIGVuYWJsZWRGZWF0dXJlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICBnZXRMb2NhbFN0b3JhZ2VJdGVtOiBudWxsIHwgKChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCk7XG59XG5cbmV4cG9ydCBjbGFzcyBBbXBsaXR1ZGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhbXBsaXR1ZGVDbGllbnQ6IEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIHByaXZhdGUgY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQW1wbGl0dWRlU2VydmljZUNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzTW9ja0FwaUtleSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5ID09PSAnbW9jay1hbXBsaXR1ZGUta2V5JztcbiAgfVxuXG4gIGdldCBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgdGhpcy5jb25maWcudXNlcklkICYmXG4gICAgICB0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UgJiZcbiAgICAgIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSAmJlxuICAgICAgdGhpcy5hbXBsaXR1ZGVDbGllbnQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlSXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRMb2NhbFN0b3JhZ2VJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0TG9jYWxTdG9yYWdlSXRlbShrZXkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoXG4gICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IGZlYXR1cmVHYXRlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGZWF0dXJlRmxhZ3MoKSk7XG4gICAgY29uc3QgZ2F0ZXNQcm9wcyA9XG4gICAgICBmZWF0dXJlR2F0ZXMubGVuZ3RoID4gMFxuICAgICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke25hbWV9YF06IHZhbHVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KVxuICAgICAgICA6IHt9O1xuICAgIGNvbnN0IGV4cGVyaW1lbnRQcm9wcyA9IHt9OyAvLyBObyBkaXJlY3QgZXF1aXZhbGVudCBmb3IgZXhwZXJpbWVudHMgaW4gRW52aXZlQ29uZmlnIHlldFxuXG4gICAgY29uc3QgZW52aXJvbm1lbnRQcm9wcyA9IHtcbiAgICAgICdlbnZpcm9ubWVudC5leGVjdXRpb25fY29udGV4dCc6ICdidW5kbGUnLFxuICAgICAgJ2Vudmlyb25tZW50LnBhZ2VfdXJsJzogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX3VzZXJfaWQnOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAnZW52aXJvbm1lbnQuZXhlY3V0aW9uX2Vudmlyb25tZW50JzogdGhpcy5jb25maWcuZW52IHx8ICd1bmtub3duJyxcbiAgICAgICdlbnZpcm9ubWVudC5jb250ZXh0X3NvdXJjZSc6IHRoaXMuY29uZmlnLmNvbnRleHRTb3VyY2UsXG4gICAgICAnZW52aXJvbm1lbnQuc2FsZXNfYWdlbnRfZW5hYmxlZCc6IHRoaXMuY29uZmlnLmVuYWJsZWRGZWF0dXJlcz8uc2FsZXNBZ2VudCA/PyBmYWxzZSxcbiAgICAgICdlbnZpcm9ubWVudC5zZWFyY2hfZW5hYmxlZCc6IHRoaXMuY29uZmlnLmVuYWJsZWRGZWF0dXJlcz8uc2VhcmNoQWdlbnQgPz8gZmFsc2UsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX29uX3F1ZXJ5X3BhcmFtJzogdGhpcy5jb25maWcuZW52aXZlT24sXG4gICAgICAnZW52aXJvbm1lbnQud2luZG93X3Nob3cnOiB0aGlzLmNvbmZpZy5zaG93LFxuICAgICAgJ2Vudmlyb25tZW50LmVudml2ZV9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5lbnZpdmUsXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSlcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGdWxsRmxhZ1ZhbHVlcygpLFxuICAgICAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICAgICAgICAuLi5lbnZpcm9ubWVudFByb3BzLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICAgICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4udGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICBhcHBfaWQ6ICdjb21tZXJjZS1jaGF0LXJlYWN0LWNvbXBvbmVudCcsXG4gICAgICBjaGF0X2lkOiB0aGlzLmdldExvY2FsU3RvcmFnZUl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiB0aGlzLmNvbmZpZy5lbnYgfHwgJ3Vua25vd24nLFxuICAgICAgYXBwX3NvdXJjZTogdGhpcy5jb25maWcuY29udGV4dFNvdXJjZSxcbiAgICAgIG9yZ19pZDogdGhpcy5jb25maWcub3JnSWQsXG4gICAgICAnb3JnLnNob3J0X25hbWUnOiB0aGlzLmNvbmZpZy5vcmdTaG9ydE5hbWUsXG4gICAgICAndXNlci5pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdjZHAudXNlcl9pZCc6IG51bGwsXG4gICAgICAnY2RwLnByb3ZpZGVyJzogbnVsbCxcbiAgICAgICdldmVudC5zb3VyY2UnOiAnd2ViLWJyb3dzZXInLFxuICAgICAgJ2V2ZW50LnR5cGUnOiAndXNlci1hY3Rpdml0eScsXG4gICAgICAnZXZlbnQuaWQnOiBudWxsLFxuICAgICAgJ2V2ZW50LmNoYW5uZWwnOiAnd2ViJyxcbiAgICAgICdldmVudC50aW1lc3RhbXAnOiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBwcml2YXRlIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhldmVudFByb3BzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpOiBFbnJpY2htZW50UGx1Z2luIHtcbiAgICBpZiAodGhpcy5pbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiA9IHtcbiAgICAgIG5hbWU6ICdwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudCcsXG4gICAgICB0eXBlOiAnZW5yaWNobWVudCcsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgICdbQW1wbGl0dWRlXSBQYWdlIFZpZXdlZCcsXG4gICAgICAgICAgYFtTcGlmZnldICR7U3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5CdW5kbGVMb2FkZWR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoZXZlbnRzVG9FbnJpY2guaW5jbHVkZXMoZXZlbnQuZXZlbnRfdHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnNob3cnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5zaG93KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy5lbnYnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5lbnYpO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy5jb25maWc/LmVuYWJsZWRGZWF0dXJlcyA/PyAoe30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pLFxuICAgICAgICAgICkucmVkdWNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIFtgZW5hYmxlZEZlYXR1cmVzLiR7a2V5fWBdOiBgJHt2YWx1ZX1gLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgdGltaW5nUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICd0aW1pbmcuZW5yaWNoZWRfYXRfbXMnOlxuICAgICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5wZXJmb3JtYW5jZT8ubm93KCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSB7XG4gICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgIGV2ZW50X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZXZlbnRfcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudF90eXBlIGFzIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAuLi5nbG9iYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5lbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aW1pbmdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEV2ZW50c0Rpc3BhdGNoZXIuZGlzcGF0Y2goU3BpZmZ5RXZlbnQuQU1QTElUVURFX0VWRU5ULCBlbnJpY2hlZEV2ZW50KTtcblxuICAgICAgICByZXR1cm4gZW5yaWNoZWRFdmVudDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSBlbnJpY2htZW50O1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKFxuICAgICAgdGhpcy5jb25maWcudXNlcklkICYmIHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSAmJiB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgKTtcblxuICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdBbXBsaXR1ZGVTZXJ2aWNlIGlzIG5vdCByZWFkeScsIHtcbiAgICAgICAgaXNSZWFkeSxcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAgIGhhc0ZlYXR1cmVGbGFnU2VydmljZTogISF0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgICAgIGhhc0FtcGxpdHVkZUFwaUtleTogISF0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc01vY2tBcGlLZXkpIHtcbiAgICAgIGxvZ2dlci5sb2dXYXJuKFxuICAgICAgICAnTW9jayBBUEkga2V5IGRldGVjdGVkIOKAlCBydW5uaW5nIGluIG1vY2sgbW9kZSwgbm8gZXZlbnRzIHdpbGwgYmUgc2VudCB0byBBbXBsaXR1ZGUuJyxcbiAgICAgICAgdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQgPSBjcmVhdGVJbnN0YW5jZSgpO1xuXG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuYWRkKHRoaXMuZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQoKSk7XG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuaW5pdCh0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksIHRoaXMuY29uZmlnLnVzZXJJZCwge1xuICAgICAgICBzZXJ2ZXJab25lOiB0aGlzLmNvbmZpZy5kYXRhUmVzaWRlbmN5IGFzIFNlcnZlclpvbmVUeXBlLFxuICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgcGFnZVZpZXdzOiB7XG4gICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiAncGF0aE9ubHknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2Vzc2lvbnM6IGZhbHNlLFxuICAgICAgICAgIGZvcm1JbnRlcmFjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgIGZpbGVEb3dubG9hZHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudCA9IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWFwV2lkZ2V0VHlwZVRvQ2hhdENvbXBvbmVudCh3aWRnZXRUeXBlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLkZsb2F0aW5nQnV0dG9uVjM6XG4gICAgICAgIHJldHVybiAnZmxvYXRpbmdfYnV0dG9uJztcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLkNoYXRQcmV2aWV3VjM6XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Tb2NpYWxQcm9vZlYzOlxuICAgICAgICByZXR1cm4gJ2VtYmVkZGVkX3dpZGdldCc7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5UaXRsZWRQcm9tcHRDYXJvdXNlbFYzOlxuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuUHJvbXB0Q2Fyb3VzZWxWMzpcbiAgICAgICAgcmV0dXJuICdzdWdnZXN0aW9uX2Jhcic7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Qcm9kdWN0Q2FyZFYzOlxuICAgICAgICByZXR1cm4gJ2ltYWdlX3Byb21wdF9jYXJkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb246IHVua25vd24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHJpZ2dlckxvY2F0aW9uKSB7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPRFVDVF9DQVJEX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPRFVDVF9DQVJEX1RFWFRfRklFTEQ6XG4gICAgICAgIHJldHVybiAncHJvbXB0X2NhcmQnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST01QVF9DQVJPVVNFTDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5USVRMRURfUFJPTVBUX0NBUk9VU0VMOlxuICAgICAgICByZXR1cm4gJ3RvcF9yZXZpZXdzX3NuaXBwZXQnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlRZUElOR19BTklNQVRJT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1BSSU1BUllfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9URVhUX0ZJRUxEOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fVEVYVF9GSUVMRDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuICdjaGF0X3ByZXZpZXcnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkZMT0FUSU5HX0NIQVRfT1ZFUkxBWTpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX0NMT1NFX0JVVFRPTjpcbiAgICAgICAgcmV0dXJuICdpbl9jaGF0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cmlnZ2VyTG9jYXRpb24gYXMgc3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgYWxsb3dzIHVzIHRvIG1hcCB0aGUgZXZlbnQgcHJvcHMgdG8gdGhlIGNvcnJlY3QgZm9ybWF0IGZvciB0aGUgbGVnYWN5IGFtcGxpdHVkZSBldmVudHNcbiAgc3RhdGljIG1hcEV2ZW50UHJvcHMoeyBldmVudE5hbWUsIGV2ZW50UHJvcHMgfTogVHJhY2tFdmVudFBhcmFtcyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBtZXNzYWdlTWV0YWRhdGEgPSBldmVudFByb3BzPy5tZXNzYWdlX21ldGFkYXRhID8/IHt9O1xuICAgIGNvbnN0IHRyaWdnZXJMb2NhdGlvbiA9XG4gICAgICBtZXNzYWdlTWV0YWRhdGEgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBtZXNzYWdlTWV0YWRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAndHJpZ2dlcl9sb2NhdGlvbicgaW4gbWVzc2FnZU1ldGFkYXRhXG4gICAgICAgID8gbWVzc2FnZU1ldGFkYXRhLnRyaWdnZXJfbG9jYXRpb25cbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRFeHBhbmRlZCkge1xuICAgICAgY29uc3QgbWFwcGVkVHJpZ2dlckxvY2NhdGlvbiA9XG4gICAgICAgIEFtcGxpdHVkZVNlcnZpY2UubWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICBtZXNzYWdlX21ldGFkYXRhOiB7XG4gICAgICAgICAgLi4ubWVzc2FnZU1ldGFkYXRhLFxuICAgICAgICAgIHRyaWdnZXJfbG9jYXRpb246IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24sXG4gICAgICAgICAgZnVsbF90cmlnZ2VyX2xvY2F0aW9uOiB0cmlnZ2VyTG9jYXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIGNvbnN0IG1hcHBlZFdpZGdldFR5cGUgPSBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFdpZGdldFR5cGVUb0NoYXRDb21wb25lbnQoXG4gICAgICAgIGV2ZW50UHJvcHM/LndpZGdldF90eXBlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24gPVxuICAgICAgICBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgIC4uLm1lc3NhZ2VNZXRhZGF0YSxcbiAgICAgICAgICB0cmlnZ2VyX2xvY2F0aW9uOiBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uLFxuICAgICAgICAgIGZ1bGxfdHJpZ2dlcl9sb2NhdGlvbjogdHJpZ2dlckxvY2F0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBjaGF0X2NvbXBvbmVudDogbWFwcGVkV2lkZ2V0VHlwZSxcbiAgICAgICAgJ2NoYXQuY29tcG9uZW50X3Zpc2libGUnOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50UHJvcHMgPz8ge307XG4gIH1cblxuICBzdGF0aWMgaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhFbnZpdmVNZXRyaWNzRXZlbnROYW1lKS5pbmNsdWRlcyhldmVudE5hbWUgYXMgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZGVjb3JhdGVFdmVudE5hbWUoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk6IHN0cmluZyB7XG4gICAgaWYgKEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSkpIHtcbiAgICAgIHJldHVybiBgW0Vudml2ZV0gJHtldmVudE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGBbU3BpZmZ5XSAke2V2ZW50TmFtZX1gO1xuICB9XG5cbiAgYXN5bmMgdHJhY2tFdmVudCh7XG4gICAgZXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHMsXG4gICAgZXZlbnRHcm91cHMsXG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyA9IGZhbHNlLFxuICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNNb2NrQXBpS2V5KSByZXR1cm47XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdTdWJtaXR0aW5nIGV2ZW50JywgZXZlbnROYW1lKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gQW1wbGl0dWRlU2VydmljZS5kZWNvcmF0ZUV2ZW50TmFtZShldmVudE5hbWUpO1xuXG4gICAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICAgIGxvZ2dlci5sb2dXYXJuKCdhbXBsaXR1ZGUgY2xpZW50IHVuZGVmaW5lZCcsIHVuZGVmaW5lZCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkRXZlbnRQcm9wcyA9IEFtcGxpdHVkZVNlcnZpY2UubWFwRXZlbnRQcm9wcyh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcyB9KTtcblxuICAgICAgY29uc3QgZXZlbnREYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHM6IG1hcHBlZEV2ZW50UHJvcHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGV2ZW50RGF0YSk7XG4gICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xuICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG5cbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICBwcm9wczogbWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhldmVudE5hbWUpLFxuICAgICAgICAgIC4uLm1hcHBlZEV2ZW50UHJvcHMsXG4gICAgICAgICAgLi4uKG1hcHBlZEV2ZW50UHJvcHNcbiAgICAgICAgICAgID8gdGhpcy5ldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMoZXZlbnROYW1lLCBtYXBwZWRFdmVudFByb3BzKVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFRPRE86IFB1bGwgZ2FFbmFibGVkIGZyb20gb3JnIGNvbmZpZyB3aGVuIGF2YWlsYWJsZS4gSGFyZGNvZGVkIHRvIHRydWUgZm9yIG5vdy5cbiAgICAgIGNvbnN0IGdhRW5hYmxlZCA9IHRydWU7XG5cbiAgICAgIGlmIChBbXBsaXR1ZGVTZXJ2aWNlLmlzVjNFbnZpdmVFdmVudChldmVudE5hbWUpICYmIGdhRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBtZXJnZWRQcm9wc0ZvckdBNCA9IHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKGV2ZW50TmFtZSksXG4gICAgICAgICAgLi4ubWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvamVjdFRvR0E0KGV2ZW50TmFtZSBhcyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBtZXJnZWRQcm9wc0ZvckdBNCk7XG4gICAgICB9IGVsc2UgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgZ2FFbmFibGVkKSB7XG4gICAgICAgIGxvZ2dlci5sb2dEZWJ1ZygnR0EgdHJhY2tpbmcnLCBkZWNvcmF0ZWRFdmVudE5hbWUpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRhdGFMYXllcikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgKHdpbmRvdy5kYXRhTGF5ZXIgYXMgYW55W10pLnB1c2goe1xuICAgICAgICAgICAgZXZlbnQ6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRXJyb3IgdHJhY2tpbmcgZXZlbnQnLCBlcnIsIHtcbiAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICBldmVudFByb3BzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIHRoYXQgc3VwcGxlbWVudGFsIGRlZmF1bHQgcHJvcHMgYXJlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyBwcm9wc1xuICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMgPSBwcm9wcztc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
|
|
295
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5janMiLCJuYW1lcyI6WyJMb2dnZXIiLCJFWFBFUklNRU5UX05BTUVTUEFDRVM6IEV4cGVyaW1lbnROYW1lc3BhY2VbXSIsIkxvY2FsU3RvcmFnZUtleXMiLCJlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIiwiZW5yaWNoZWRFdmVudDogRXZlbnQiLCJTcGlmZnlNZXRyaWNzRXZlbnROYW1lIiwiZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsIlNwaWZmeUV2ZW50IiwiY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50IiwiV2lkZ2V0VHlwZVYzIiwiQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyIsIkVudml2ZU1ldHJpY3NFdmVudE5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3Nlcic7XG5pbXBvcnQgeyBFdmVudHNEaXNwYXRjaGVyLCBTcGlmZnlFdmVudCB9IGZyb20gJ3NyYy9ldmVudHMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlS2V5cyB9IGZyb20gJ3NyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcbmltcG9ydCB7IFdpZGdldFR5cGVWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMnO1xuaW1wb3J0IHsgRXhwZXJpbWVudE5hbWVzcGFjZSwgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IHByb2plY3RUb0dBNCB9IGZyb20gJy4uL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuL2V2ZW50TmFtZXMnO1xuXG4vLyBSZS1leHBvcnQgZXZlbnQgbmFtZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH07XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2FtcGxpdHVkZVNlcnZpY2UnKTtcblxuZXhwb3J0IGludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZTtcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEdyb3Vwcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnIHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGFtcGxpdHVkZUFwaUtleTogc3RyaW5nO1xuICBkYXRhUmVzaWRlbmN5OiBzdHJpbmc7XG4gIGVudjogc3RyaW5nO1xuICBjb250ZXh0U291cmNlOiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZTogc3RyaW5nO1xuICBvcmdJZDogc3RyaW5nO1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgc2hvdzogYm9vbGVhbjtcbiAgZW52aXZlT246IGJvb2xlYW47XG4gIGVuYWJsZWRGZWF0dXJlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICBnZXRMb2NhbFN0b3JhZ2VJdGVtOiBudWxsIHwgKChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCk7XG4gIC8vIENhcHR1cmVkIGF0IGNvbnN0cnVjdGlvbi4gRHJpdmVzIGBleHBlcmltZW50Lntuc30uKmAgZXZlbnQtcHJvcGVydHlcbiAgLy8gZW5yaWNobWVudC4gU291cmNlZCBmcm9tIC92MS9vcmcvY29uZmlnIHdoZW4gdGhlIGB1c2VfdW5pZmllZF9jb25maWdgXG4gIC8vIGdhdGUgaXMgb247IG90aGVyd2lzZSBvbWl0dGVkIChwcm9wcyBlbWl0IGFzIG51bGwpLlxuICBleHBlcmltZW50QXNzaWdubWVudHM/OiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdO1xufVxuXG4vLyBOYW1lc3BhY2VzIGVtaXR0ZWQgb24gZXZlcnkgZXZlbnQgd2l0aCBjb25zdGFudCBrZXlzLCBzbyB0aGUgQmlnUXVlcnlcbi8vIHNjaGVtYSBpcyBzdGFibGUgcmVnYXJkbGVzcyBvZiB3aGljaCAoaWYgYW55KSBleHBlcmltZW50IGlzIHJ1bm5pbmcuXG4vLyBDdXJyZW50bHkgYG1sYCArIGBtZXJjaGFudGA7IG1hdGNoZXMgYEV4cGVyaW1lbnROYW1lc3BhY2VgLlxuY29uc3QgRVhQRVJJTUVOVF9OQU1FU1BBQ0VTOiBFeHBlcmltZW50TmFtZXNwYWNlW10gPSBbJ21sJywgJ21lcmNoYW50J107XG5cbmNvbnN0IGJ1aWxkRXhwZXJpbWVudFByb3BzID0gKFxuICBhc3NpZ25tZW50czogT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnRbXSB8IHVuZGVmaW5lZCxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgYnlOYW1lc3BhY2UgPSBuZXcgTWFwPEV4cGVyaW1lbnROYW1lc3BhY2UsIE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50PigpO1xuICAoYXNzaWdubWVudHMgPz8gW10pLmZvckVhY2goYSA9PiB7XG4gICAgaWYgKGEubGF5ZXJfbmFtZSAhPSBudWxsICYmIGEubmFtZXNwYWNlICE9IG51bGwpIHtcbiAgICAgIGJ5TmFtZXNwYWNlLnNldChhLm5hbWVzcGFjZSwgYSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIEVYUEVSSU1FTlRfTkFNRVNQQUNFUy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KChhY2MsIG5zKSA9PiB7XG4gICAgY29uc3QgYSA9IGJ5TmFtZXNwYWNlLmdldChucyk7XG4gICAgYWNjW2BleHBlcmltZW50LiR7bnN9LmxheWVyX25hbWVgXSA9IGE/LmxheWVyX25hbWUgPz8gbnVsbDtcbiAgICBhY2NbYGV4cGVyaW1lbnQuJHtuc30uZXhwZXJpbWVudF9uYW1lYF0gPSBhPy5hbGxvY2F0ZWRfZXhwZXJpbWVudF9uYW1lID8/IG51bGw7XG4gICAgYWNjW2BleHBlcmltZW50LiR7bnN9Lmdyb3VwX25hbWVgXSA9IGE/Lmdyb3VwX25hbWUgPz8gbnVsbDtcbiAgICAvLyBgcnVsZV9pZGAgcmVzZXJ2ZWQg4oCUIGJhY2tlbmQgZG9lc24ndCBjdXJyZW50bHkgc3VyZmFjZSBpdC5cbiAgICBhY2NbYGV4cGVyaW1lbnQuJHtuc30ucnVsZV9pZGBdID0gbnVsbDtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59O1xuXG5leHBvcnQgY2xhc3MgQW1wbGl0dWRlU2VydmljZSB7XG4gIHByaXZhdGUgYW1wbGl0dWRlQ2xpZW50OiBCcm93c2VyQ2xpZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBwcml2YXRlIGNvbmZpZzogQW1wbGl0dWRlU2VydmljZUNvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFtcGxpdHVkZVNlcnZpY2VDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc01vY2tBcGlLZXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSA9PT0gJ21vY2stYW1wbGl0dWRlLWtleSc7XG4gIH1cblxuICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHRoaXMuY29uZmlnLnVzZXJJZCAmJlxuICAgICAgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmXG4gICAgICB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXkgJiZcbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jb25maWcuZ2V0TG9jYWxTdG9yYWdlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldExvY2FsU3RvcmFnZUl0ZW0oa2V5KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRUcmFja2luZ1Byb3BzKFxuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBmZWF0dXJlR2F0ZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdzKCkpO1xuICAgIGNvbnN0IGdhdGVzUHJvcHMgPVxuICAgICAgZmVhdHVyZUdhdGVzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBmZWF0dXJlR2F0ZXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoYWNjLCBbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2BmZWF0dXJlX2dhdGUuJHtuYW1lfWBdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSlcbiAgICAgICAgOiB7fTtcbiAgICBjb25zdCBleHBlcmltZW50UHJvcHMgPSBidWlsZEV4cGVyaW1lbnRQcm9wcyh0aGlzLmNvbmZpZy5leHBlcmltZW50QXNzaWdubWVudHMpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnRQcm9wcyA9IHtcbiAgICAgICdlbnZpcm9ubWVudC5leGVjdXRpb25fY29udGV4dCc6ICdidW5kbGUnLFxuICAgICAgJ2Vudmlyb25tZW50LnBhZ2VfdXJsJzogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX3VzZXJfaWQnOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAnZW52aXJvbm1lbnQuZXhlY3V0aW9uX2Vudmlyb25tZW50JzogdGhpcy5jb25maWcuZW52IHx8ICd1bmtub3duJyxcbiAgICAgICdlbnZpcm9ubWVudC5jb250ZXh0X3NvdXJjZSc6IHRoaXMuY29uZmlnLmNvbnRleHRTb3VyY2UsXG4gICAgICAnZW52aXJvbm1lbnQuc2FsZXNfYWdlbnRfZW5hYmxlZCc6IHRoaXMuY29uZmlnLmVuYWJsZWRGZWF0dXJlcz8uc2FsZXNBZ2VudCA/PyBmYWxzZSxcbiAgICAgICdlbnZpcm9ubWVudC5zZWFyY2hfZW5hYmxlZCc6IHRoaXMuY29uZmlnLmVuYWJsZWRGZWF0dXJlcz8uc2VhcmNoQWdlbnQgPz8gZmFsc2UsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX29uX3F1ZXJ5X3BhcmFtJzogdGhpcy5jb25maWcuZW52aXZlT24sXG4gICAgICAnZW52aXJvbm1lbnQud2luZG93X3Nob3cnOiB0aGlzLmNvbmZpZy5zaG93LFxuICAgICAgJ2Vudmlyb25tZW50LmVudml2ZV9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5lbnZpdmUsXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSlcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGdWxsRmxhZ1ZhbHVlcygpLFxuICAgICAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICAgICAgICAuLi5lbnZpcm9ubWVudFByb3BzLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICAgICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4udGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICBhcHBfaWQ6ICdjb21tZXJjZS1jaGF0LXJlYWN0LWNvbXBvbmVudCcsXG4gICAgICBjaGF0X2lkOiB0aGlzLmdldExvY2FsU3RvcmFnZUl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiB0aGlzLmNvbmZpZy5lbnYgfHwgJ3Vua25vd24nLFxuICAgICAgYXBwX3NvdXJjZTogdGhpcy5jb25maWcuY29udGV4dFNvdXJjZSxcbiAgICAgIG9yZ19pZDogdGhpcy5jb25maWcub3JnSWQsXG4gICAgICAnb3JnLnNob3J0X25hbWUnOiB0aGlzLmNvbmZpZy5vcmdTaG9ydE5hbWUsXG4gICAgICAndXNlci5pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdjZHAudXNlcl9pZCc6IG51bGwsXG4gICAgICAnY2RwLnByb3ZpZGVyJzogbnVsbCxcbiAgICAgICdldmVudC5zb3VyY2UnOiAnd2ViLWJyb3dzZXInLFxuICAgICAgJ2V2ZW50LnR5cGUnOiAndXNlci1hY3Rpdml0eScsXG4gICAgICAnZXZlbnQuaWQnOiBudWxsLFxuICAgICAgJ2V2ZW50LmNoYW5uZWwnOiAnd2ViJyxcbiAgICAgICdldmVudC50aW1lc3RhbXAnOiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBwcml2YXRlIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhldmVudFByb3BzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpOiBFbnJpY2htZW50UGx1Z2luIHtcbiAgICBpZiAodGhpcy5pbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiA9IHtcbiAgICAgIG5hbWU6ICdwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudCcsXG4gICAgICB0eXBlOiAnZW5yaWNobWVudCcsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgICdbQW1wbGl0dWRlXSBQYWdlIFZpZXdlZCcsXG4gICAgICAgICAgYFtTcGlmZnldICR7U3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5CdW5kbGVMb2FkZWR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoZXZlbnRzVG9FbnJpY2guaW5jbHVkZXMoZXZlbnQuZXZlbnRfdHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnNob3cnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5zaG93KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy5lbnYnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5lbnYpO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgdGhpcy5jb25maWc/LmVuYWJsZWRGZWF0dXJlcyA/PyAoe30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pLFxuICAgICAgICAgICkucmVkdWNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIFtgZW5hYmxlZEZlYXR1cmVzLiR7a2V5fWBdOiBgJHt2YWx1ZX1gLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgdGltaW5nUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICd0aW1pbmcuZW5yaWNoZWRfYXRfbXMnOlxuICAgICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5wZXJmb3JtYW5jZT8ubm93KCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSB7XG4gICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgIGV2ZW50X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZXZlbnRfcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhcbiAgICAgICAgICAgICAgICBldmVudC5ldmVudF90eXBlIGFzIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAuLi5nbG9iYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5lbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aW1pbmdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEV2ZW50c0Rpc3BhdGNoZXIuZGlzcGF0Y2goU3BpZmZ5RXZlbnQuQU1QTElUVURFX0VWRU5ULCBlbnJpY2hlZEV2ZW50KTtcblxuICAgICAgICByZXR1cm4gZW5yaWNoZWRFdmVudDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSBlbnJpY2htZW50O1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKFxuICAgICAgdGhpcy5jb25maWcudXNlcklkICYmIHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSAmJiB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgKTtcblxuICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdBbXBsaXR1ZGVTZXJ2aWNlIGlzIG5vdCByZWFkeScsIHtcbiAgICAgICAgaXNSZWFkeSxcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAgIGhhc0ZlYXR1cmVGbGFnU2VydmljZTogISF0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgICAgIGhhc0FtcGxpdHVkZUFwaUtleTogISF0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc01vY2tBcGlLZXkpIHtcbiAgICAgIGxvZ2dlci5sb2dXYXJuKFxuICAgICAgICAnTW9jayBBUEkga2V5IGRldGVjdGVkIOKAlCBydW5uaW5nIGluIG1vY2sgbW9kZSwgbm8gZXZlbnRzIHdpbGwgYmUgc2VudCB0byBBbXBsaXR1ZGUuJyxcbiAgICAgICAgdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQgPSBjcmVhdGVJbnN0YW5jZSgpO1xuXG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuYWRkKHRoaXMuZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQoKSk7XG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuaW5pdCh0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksIHRoaXMuY29uZmlnLnVzZXJJZCwge1xuICAgICAgICBzZXJ2ZXJab25lOiB0aGlzLmNvbmZpZy5kYXRhUmVzaWRlbmN5IGFzIFNlcnZlclpvbmVUeXBlLFxuICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgcGFnZVZpZXdzOiB7XG4gICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiAncGF0aE9ubHknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2Vzc2lvbnM6IGZhbHNlLFxuICAgICAgICAgIGZvcm1JbnRlcmFjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgIGZpbGVEb3dubG9hZHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudCA9IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWFwV2lkZ2V0VHlwZVRvQ2hhdENvbXBvbmVudCh3aWRnZXRUeXBlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLkZsb2F0aW5nQnV0dG9uVjM6XG4gICAgICAgIHJldHVybiAnZmxvYXRpbmdfYnV0dG9uJztcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLkNoYXRQcmV2aWV3VjM6XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Tb2NpYWxQcm9vZlYzOlxuICAgICAgICByZXR1cm4gJ2VtYmVkZGVkX3dpZGdldCc7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5UaXRsZWRQcm9tcHRDYXJvdXNlbFYzOlxuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuUHJvbXB0Q2Fyb3VzZWxWMzpcbiAgICAgICAgcmV0dXJuICdzdWdnZXN0aW9uX2Jhcic7XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Qcm9kdWN0Q2FyZFYzOlxuICAgICAgICByZXR1cm4gJ2ltYWdlX3Byb21wdF9jYXJkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb246IHVua25vd24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHJpZ2dlckxvY2F0aW9uKSB7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPRFVDVF9DQVJEX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPRFVDVF9DQVJEX1RFWFRfRklFTEQ6XG4gICAgICAgIHJldHVybiAncHJvbXB0X2NhcmQnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlBST01QVF9DQVJPVVNFTDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5USVRMRURfUFJPTVBUX0NBUk9VU0VMOlxuICAgICAgICByZXR1cm4gJ3RvcF9yZXZpZXdzX3NuaXBwZXQnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlRZUElOR19BTklNQVRJT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1BSSU1BUllfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9TRUNPTkRBUllfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlNPQ0lBTF9QUk9PRl9URVhUX0ZJRUxEOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19DT01QQVJJU09OX1BST01QVF9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fVEVYVF9GSUVMRDpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuICdjaGF0X3ByZXZpZXcnO1xuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkZMT0FUSU5HX0NIQVRfT1ZFUkxBWTpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5GTE9BVElOR19DSEFUX0NMT1NFX0JVVFRPTjpcbiAgICAgICAgcmV0dXJuICdpbl9jaGF0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cmlnZ2VyTG9jYXRpb24gYXMgc3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgYWxsb3dzIHVzIHRvIG1hcCB0aGUgZXZlbnQgcHJvcHMgdG8gdGhlIGNvcnJlY3QgZm9ybWF0IGZvciB0aGUgbGVnYWN5IGFtcGxpdHVkZSBldmVudHNcbiAgc3RhdGljIG1hcEV2ZW50UHJvcHMoeyBldmVudE5hbWUsIGV2ZW50UHJvcHMgfTogVHJhY2tFdmVudFBhcmFtcyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBtZXNzYWdlTWV0YWRhdGEgPSBldmVudFByb3BzPy5tZXNzYWdlX21ldGFkYXRhID8/IHt9O1xuICAgIGNvbnN0IHRyaWdnZXJMb2NhdGlvbiA9XG4gICAgICBtZXNzYWdlTWV0YWRhdGEgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBtZXNzYWdlTWV0YWRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAndHJpZ2dlcl9sb2NhdGlvbicgaW4gbWVzc2FnZU1ldGFkYXRhXG4gICAgICAgID8gbWVzc2FnZU1ldGFkYXRhLnRyaWdnZXJfbG9jYXRpb25cbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRFeHBhbmRlZCkge1xuICAgICAgY29uc3QgbWFwcGVkVHJpZ2dlckxvY2NhdGlvbiA9XG4gICAgICAgIEFtcGxpdHVkZVNlcnZpY2UubWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICBtZXNzYWdlX21ldGFkYXRhOiB7XG4gICAgICAgICAgLi4ubWVzc2FnZU1ldGFkYXRhLFxuICAgICAgICAgIHRyaWdnZXJfbG9jYXRpb246IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24sXG4gICAgICAgICAgZnVsbF90cmlnZ2VyX2xvY2F0aW9uOiB0cmlnZ2VyTG9jYXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUpIHtcbiAgICAgIGNvbnN0IG1hcHBlZFdpZGdldFR5cGUgPSBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFdpZGdldFR5cGVUb0NoYXRDb21wb25lbnQoXG4gICAgICAgIGV2ZW50UHJvcHM/LndpZGdldF90eXBlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24gPVxuICAgICAgICBBbXBsaXR1ZGVTZXJ2aWNlLm1hcFRyaWdnZXJMb2NhdGlvblRvQ2hhdENvbXBvbmVudCh0cmlnZ2VyTG9jYXRpb24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgbWVzc2FnZV9tZXRhZGF0YToge1xuICAgICAgICAgIC4uLm1lc3NhZ2VNZXRhZGF0YSxcbiAgICAgICAgICB0cmlnZ2VyX2xvY2F0aW9uOiBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uLFxuICAgICAgICAgIGZ1bGxfdHJpZ2dlcl9sb2NhdGlvbjogdHJpZ2dlckxvY2F0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBjaGF0X2NvbXBvbmVudDogbWFwcGVkV2lkZ2V0VHlwZSxcbiAgICAgICAgJ2NoYXQuY29tcG9uZW50X3Zpc2libGUnOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50UHJvcHMgPz8ge307XG4gIH1cblxuICBzdGF0aWMgaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhFbnZpdmVNZXRyaWNzRXZlbnROYW1lKS5pbmNsdWRlcyhldmVudE5hbWUgYXMgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk7XG4gIH1cblxuICBzdGF0aWMgZGVjb3JhdGVFdmVudE5hbWUoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk6IHN0cmluZyB7XG4gICAgaWYgKEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSkpIHtcbiAgICAgIHJldHVybiBgW0Vudml2ZV0gJHtldmVudE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGBbU3BpZmZ5XSAke2V2ZW50TmFtZX1gO1xuICB9XG5cbiAgYXN5bmMgdHJhY2tFdmVudCh7XG4gICAgZXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHMsXG4gICAgZXZlbnRHcm91cHMsXG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyA9IGZhbHNlLFxuICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNNb2NrQXBpS2V5KSByZXR1cm47XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdTdWJtaXR0aW5nIGV2ZW50JywgZXZlbnROYW1lKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gQW1wbGl0dWRlU2VydmljZS5kZWNvcmF0ZUV2ZW50TmFtZShldmVudE5hbWUpO1xuXG4gICAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICAgIGxvZ2dlci5sb2dXYXJuKCdhbXBsaXR1ZGUgY2xpZW50IHVuZGVmaW5lZCcsIHVuZGVmaW5lZCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkRXZlbnRQcm9wcyA9IEFtcGxpdHVkZVNlcnZpY2UubWFwRXZlbnRQcm9wcyh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcyB9KTtcblxuICAgICAgY29uc3QgZXZlbnREYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHM6IG1hcHBlZEV2ZW50UHJvcHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGV2ZW50RGF0YSk7XG4gICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xuICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG5cbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICBwcm9wczogbWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhldmVudE5hbWUpLFxuICAgICAgICAgIC4uLm1hcHBlZEV2ZW50UHJvcHMsXG4gICAgICAgICAgLi4uKG1hcHBlZEV2ZW50UHJvcHNcbiAgICAgICAgICAgID8gdGhpcy5ldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMoZXZlbnROYW1lLCBtYXBwZWRFdmVudFByb3BzKVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFRPRE86IFB1bGwgZ2FFbmFibGVkIGZyb20gb3JnIGNvbmZpZyB3aGVuIGF2YWlsYWJsZS4gSGFyZGNvZGVkIHRvIHRydWUgZm9yIG5vdy5cbiAgICAgIGNvbnN0IGdhRW5hYmxlZCA9IHRydWU7XG5cbiAgICAgIGlmIChBbXBsaXR1ZGVTZXJ2aWNlLmlzVjNFbnZpdmVFdmVudChldmVudE5hbWUpICYmIGdhRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBtZXJnZWRQcm9wc0ZvckdBNCA9IHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKGV2ZW50TmFtZSksXG4gICAgICAgICAgLi4ubWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvamVjdFRvR0E0KGV2ZW50TmFtZSBhcyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBtZXJnZWRQcm9wc0ZvckdBNCk7XG4gICAgICB9IGVsc2UgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgZ2FFbmFibGVkKSB7XG4gICAgICAgIGxvZ2dlci5sb2dEZWJ1ZygnR0EgdHJhY2tpbmcnLCBkZWNvcmF0ZWRFdmVudE5hbWUpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRhdGFMYXllcikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgKHdpbmRvdy5kYXRhTGF5ZXIgYXMgYW55W10pLnB1c2goe1xuICAgICAgICAgICAgZXZlbnQ6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRXJyb3IgdHJhY2tpbmcgZXZlbnQnLCBlcnIsIHtcbiAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICBldmVudFByb3BzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5zdXJlIHRoYXQgc3VwcGxlbWVudGFsIGRlZmF1bHQgcHJvcHMgYXJlIG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyBwcm9wc1xuICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMgPSBwcm9wcztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBb0JBLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxtQkFBbUI7QUErQjdDLE1BQU1DLHdCQUErQyxDQUFDLE1BQU0sV0FBVztBQUV2RSxNQUFNLHdCQUNKLGdCQUM0QjtDQUM1QixNQUFNLDhCQUFjLElBQUksS0FBeUQ7QUFDakYsRUFBQyxlQUFlLEVBQUUsRUFBRSxTQUFRLE1BQUs7QUFDL0IsTUFBSSxFQUFFLGNBQWMsUUFBUSxFQUFFLGFBQWEsS0FDekMsYUFBWSxJQUFJLEVBQUUsV0FBVyxFQUFFO0dBRWpDO0FBQ0Ys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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OrgConfigExperimentAssignment } from "../../application/models/api/orgConfigResults.cjs";
|
|
1
2
|
import { FeatureFlagService } from "../../contexts/featureFlagServiceContext/featureFlagServiceContext.cjs";
|
|
2
3
|
import { EnviveMetricsEventName, SpiffyMetricsEventName } from "./eventNames.cjs";
|
|
3
4
|
|
|
@@ -21,6 +22,7 @@ interface AmplitudeServiceConfig {
|
|
|
21
22
|
enviveOn: boolean;
|
|
22
23
|
enabledFeatures?: Record<string, boolean>;
|
|
23
24
|
getLocalStorageItem: null | ((key: string) => string | null);
|
|
25
|
+
experimentAssignments?: OrgConfigExperimentAssignment[];
|
|
24
26
|
}
|
|
25
27
|
declare class AmplitudeService {
|
|
26
28
|
private amplitudeClient;
|
|
@@ -53,4 +55,4 @@ declare class AmplitudeService {
|
|
|
53
55
|
}
|
|
54
56
|
//#endregion
|
|
55
57
|
export { AmplitudeService, AmplitudeServiceConfig, TrackEventParams };
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5pbXBvcnQgeyBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4vZXZlbnROYW1lcyc7XG5leHBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH07XG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWU7XG4gICAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpdHVkZVNlcnZpY2VDb25maWcge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFtcGxpdHVkZUFwaUtleTogc3RyaW5nO1xuICAgIGRhdGFSZXNpZGVuY3k6IHN0cmluZztcbiAgICBlbnY6IHN0cmluZztcbiAgICBjb250ZXh0U291cmNlOiBzdHJpbmc7XG4gICAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gICAgb3JnSWQ6IHN0cmluZztcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgICBzaG93OiBib29sZWFuO1xuICAgIGVudml2ZU9uOiBib29sZWFuO1xuICAgIGVuYWJsZWRGZWF0dXJlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICAgIGdldExvY2FsU3RvcmFnZUl0ZW06IG51bGwgfCAoKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsKTtcbiAgICBleHBlcmltZW50QXNzaWdubWVudHM/OiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdO1xufVxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQW1wbGl0dWRlU2VydmljZSB7XG4gICAgcHJpdmF0ZSBhbXBsaXR1ZGVDbGllbnQ7XG4gICAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50O1xuICAgIHByaXZhdGUgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzO1xuICAgIHByaXZhdGUgY29uZmlnO1xuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogQW1wbGl0dWRlU2VydmljZUNvbmZpZyk7XG4gICAgZ2V0IGlzTW9ja0FwaUtleSgpOiBib29sZWFuO1xuICAgIGdldCBpc1JlYWR5KCk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2VJdGVtO1xuICAgIHByaXZhdGUgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHM7XG4gICAgcHJpdmF0ZSBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHM7XG4gICAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICBwcml2YXRlIGluaXRpYWxpemU7XG4gICAgc3RhdGljIG1hcFdpZGdldFR5cGVUb0NoYXRDb21wb25lbnQod2lkZ2V0VHlwZTogdW5rbm93bik6IHN0cmluZztcbiAgICBzdGF0aWMgbWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbjogdW5rbm93bik6IHN0cmluZztcbiAgICBzdGF0aWMgbWFwRXZlbnRQcm9wcyh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcyB9OiBUcmFja0V2ZW50UGFyYW1zKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgc3RhdGljIGlzVjNFbnZpdmVFdmVudChldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTogYm9vbGVhbjtcbiAgICBzdGF0aWMgZGVjb3JhdGVFdmVudE5hbWUoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk6IHN0cmluZztcbiAgICB0cmFja0V2ZW50KHsgZXZlbnROYW1lLCBldmVudFByb3BzLCBldmVudEdyb3VwcywgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcywgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG4gICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBSUEsSUFBVyxtQkFBbUI7Q0FBQztPQUFHO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDbEMsSUFBVyx5QkFBeUI7Q0FBQztPQUFXO09BQWM7T0FBQTtDQUFBO0FBQzlELElBQVcsbUJBQW1CO0NBQUM7T0FBUztPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBIn0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OrgConfigExperimentAssignment } from "../../application/models/api/orgConfigResults.js";
|
|
1
2
|
import { FeatureFlagService } from "../../contexts/featureFlagServiceContext/featureFlagServiceContext.js";
|
|
2
3
|
import { EnviveMetricsEventName, SpiffyMetricsEventName } from "./eventNames.js";
|
|
3
4
|
|
|
@@ -21,6 +22,7 @@ interface AmplitudeServiceConfig {
|
|
|
21
22
|
enviveOn: boolean;
|
|
22
23
|
enabledFeatures?: Record<string, boolean>;
|
|
23
24
|
getLocalStorageItem: null | ((key: string) => string | null);
|
|
25
|
+
experimentAssignments?: OrgConfigExperimentAssignment[];
|
|
24
26
|
}
|
|
25
27
|
declare class AmplitudeService {
|
|
26
28
|
private amplitudeClient;
|
|
@@ -53,4 +55,4 @@ declare class AmplitudeService {
|
|
|
53
55
|
}
|
|
54
56
|
//#endregion
|
|
55
57
|
export { AmplitudeService, AmplitudeServiceConfig, TrackEventParams };
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9hbXBsaXR1ZGVTZXJ2aWNlL2FtcGxpdHVkZVNlcnZpY2UuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcbmltcG9ydCB7IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnLi9ldmVudE5hbWVzJztcbmV4cG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfTtcbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tFdmVudFBhcmFtcyB7XG4gICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZTtcbiAgICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGl0dWRlU2VydmljZUNvbmZpZyB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgYW1wbGl0dWRlQXBpS2V5OiBzdHJpbmc7XG4gICAgZGF0YVJlc2lkZW5jeTogc3RyaW5nO1xuICAgIGVudjogc3RyaW5nO1xuICAgIGNvbnRleHRTb3VyY2U6IHN0cmluZztcbiAgICBvcmdTaG9ydE5hbWU6IHN0cmluZztcbiAgICBvcmdJZDogc3RyaW5nO1xuICAgIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgZW52aXZlT246IGJvb2xlYW47XG4gICAgZW5hYmxlZEZlYXR1cmVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgZ2V0TG9jYWxTdG9yYWdlSXRlbTogbnVsbCB8ICgoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwpO1xuICAgIGV4cGVyaW1lbnRBc3NpZ25tZW50cz86IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W107XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBBbXBsaXR1ZGVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGFtcGxpdHVkZUNsaWVudDtcbiAgICBwcml2YXRlIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgcHJpdmF0ZSBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM7XG4gICAgcHJpdmF0ZSBjb25maWc7XG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnKTtcbiAgICBnZXQgaXNNb2NrQXBpS2V5KCk6IGJvb2xlYW47XG4gICAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUl0ZW07XG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcztcbiAgICBwcml2YXRlIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcztcbiAgICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50O1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZTtcbiAgICBzdGF0aWMgbWFwV2lkZ2V0VHlwZVRvQ2hhdENvbXBvbmVudCh3aWRnZXRUeXBlOiB1bmtub3duKTogc3RyaW5nO1xuICAgIHN0YXRpYyBtYXBUcmlnZ2VyTG9jYXRpb25Ub0NoYXRDb21wb25lbnQodHJpZ2dlckxvY2F0aW9uOiB1bmtub3duKTogc3RyaW5nO1xuICAgIHN0YXRpYyBtYXBFdmVudFByb3BzKHsgZXZlbnROYW1lLCBldmVudFByb3BzIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzdGF0aWMgaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUpOiBib29sZWFuO1xuICAgIHN0YXRpYyBkZWNvcmF0ZUV2ZW50TmFtZShldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTogc3RyaW5nO1xuICAgIHRyYWNrRXZlbnQoeyBldmVudE5hbWUsIGV2ZW50UHJvcHMsIGV2ZW50R3JvdXBzLCBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzLCB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxJQUFXLG1CQUFtQjtDQUFDO09BQUc7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNsQyxJQUFXLHlCQUF5QjtDQUFDO09BQVc7T0FBYztPQUFBO0NBQUE7QUFDOUQsSUFBVyxtQkFBbUI7Q0FBQztPQUFTO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
|
|
@@ -11,6 +11,21 @@ import { createInstance } from "@amplitude/analytics-browser";
|
|
|
11
11
|
|
|
12
12
|
//#region src/services/amplitudeService/amplitudeService.ts
|
|
13
13
|
const logger = new logger_default("amplitudeService");
|
|
14
|
+
const EXPERIMENT_NAMESPACES = ["ml", "merchant"];
|
|
15
|
+
const buildExperimentProps = (assignments) => {
|
|
16
|
+
const byNamespace = /* @__PURE__ */ new Map();
|
|
17
|
+
(assignments ?? []).forEach((a) => {
|
|
18
|
+
if (a.layer_name != null && a.namespace != null) byNamespace.set(a.namespace, a);
|
|
19
|
+
});
|
|
20
|
+
return EXPERIMENT_NAMESPACES.reduce((acc, ns) => {
|
|
21
|
+
const a = byNamespace.get(ns);
|
|
22
|
+
acc[`experiment.${ns}.layer_name`] = a?.layer_name ?? null;
|
|
23
|
+
acc[`experiment.${ns}.experiment_name`] = a?.allocated_experiment_name ?? null;
|
|
24
|
+
acc[`experiment.${ns}.group_name`] = a?.group_name ?? null;
|
|
25
|
+
acc[`experiment.${ns}.rule_id`] = null;
|
|
26
|
+
return acc;
|
|
27
|
+
}, {});
|
|
28
|
+
};
|
|
14
29
|
var AmplitudeService = class AmplitudeService {
|
|
15
30
|
constructor(config) {
|
|
16
31
|
this.supplementalDefaultProps = {};
|
|
@@ -37,7 +52,7 @@ var AmplitudeService = class AmplitudeService {
|
|
|
37
52
|
};
|
|
38
53
|
return acc;
|
|
39
54
|
}, {}) : {};
|
|
40
|
-
const experimentProps =
|
|
55
|
+
const experimentProps = buildExperimentProps(this.config.experimentAssignments);
|
|
41
56
|
const environmentProps = {
|
|
42
57
|
"environment.execution_context": "bundle",
|
|
43
58
|
"environment.page_url": window.location.href,
|
|
@@ -276,4 +291,4 @@ var AmplitudeService = class AmplitudeService {
|
|
|
276
291
|
|
|
277
292
|
//#endregion
|
|
278
293
|
export { AmplitudeService };
|
|
279
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5qcyIsIm5hbWVzIjpbIkxvZ2dlciIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3Nlcic7XG5pbXBvcnQgeyBFdmVudHNEaXNwYXRjaGVyLCBTcGlmZnlFdmVudCB9IGZyb20gJ3NyYy9ldmVudHMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlS2V5cyB9IGZyb20gJ3NyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcbmltcG9ydCB7IFdpZGdldFR5cGVWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMnO1xuaW1wb3J0IHsgcHJvamVjdFRvR0E0IH0gZnJvbSAnLi4vZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4vZXZlbnROYW1lcyc7XG5cbi8vIFJlLWV4cG9ydCBldmVudCBuYW1lcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfTtcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignYW1wbGl0dWRlU2VydmljZScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lO1xuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpdHVkZVNlcnZpY2VDb25maWcge1xuICB1c2VySWQ6IHN0cmluZztcbiAgYW1wbGl0dWRlQXBpS2V5OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k6IHN0cmluZztcbiAgZW52OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U6IHN0cmluZztcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICBzaG93OiBib29sZWFuO1xuICBlbnZpdmVPbjogYm9vbGVhbjtcbiAgZW5hYmxlZEZlYXR1cmVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIGdldExvY2FsU3RvcmFnZUl0ZW06IG51bGwgfCAoKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsKTtcbn1cblxuZXhwb3J0IGNsYXNzIEFtcGxpdHVkZVNlcnZpY2Uge1xuICBwcml2YXRlIGFtcGxpdHVkZUNsaWVudDogQnJvd3NlckNsaWVudCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgcHJpdmF0ZSBjb25maWc6IEFtcGxpdHVkZVNlcnZpY2VDb25maWc7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNNb2NrQXBpS2V5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXkgPT09ICdtb2NrLWFtcGxpdHVkZS1rZXknO1xuICB9XG5cbiAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICB0aGlzLmNvbmZpZy51c2VySWQgJiZcbiAgICAgIHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSAmJlxuICAgICAgdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5ICYmXG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2VJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmdldExvY2FsU3RvcmFnZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRMb2NhbFN0b3JhZ2VJdGVtKGtleSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyhcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZmVhdHVyZUdhdGVzID0gT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlLmdldEZlYXR1cmVGbGFncygpKTtcbiAgICBjb25zdCBnYXRlc1Byb3BzID1cbiAgICAgIGZlYXR1cmVHYXRlcy5sZW5ndGggPiAwXG4gICAgICAgID8gZmVhdHVyZUdhdGVzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKGFjYywgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgZmVhdHVyZV9nYXRlLiR7bmFtZX1gXTogdmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIDoge307XG4gICAgY29uc3QgZXhwZXJpbWVudFByb3BzID0ge307IC8vIE5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBleHBlcmltZW50cyBpbiBFbnZpdmVDb25maWcgeWV0XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudFByb3BzID0ge1xuICAgICAgJ2Vudmlyb25tZW50LmV4ZWN1dGlvbl9jb250ZXh0JzogJ2J1bmRsZScsXG4gICAgICAnZW52aXJvbm1lbnQucGFnZV91cmwnOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfdXNlcl9pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdlbnZpcm9ubWVudC5leGVjdXRpb25fZW52aXJvbm1lbnQnOiB0aGlzLmNvbmZpZy5lbnYgfHwgJ3Vua25vd24nLFxuICAgICAgJ2Vudmlyb25tZW50LmNvbnRleHRfc291cmNlJzogdGhpcy5jb25maWcuY29udGV4dFNvdXJjZSxcbiAgICAgICdlbnZpcm9ubWVudC5zYWxlc19hZ2VudF9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5zYWxlc0FnZW50ID8/IGZhbHNlLFxuICAgICAgJ2Vudmlyb25tZW50LnNlYXJjaF9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5zZWFyY2hBZ2VudCA/PyBmYWxzZSxcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfb25fcXVlcnlfcGFyYW0nOiB0aGlzLmNvbmZpZy5lbnZpdmVPbixcbiAgICAgICdlbnZpcm9ubWVudC53aW5kb3dfc2hvdyc6IHRoaXMuY29uZmlnLnNob3csXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX2VuYWJsZWQnOiB0aGlzLmNvbmZpZy5lbmFibGVkRmVhdHVyZXM/LmVudml2ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzID0gQW1wbGl0dWRlU2VydmljZS5pc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlLmdldEZ1bGxGbGFnVmFsdWVzKCksXG4gICAgICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgICAgICAgIC4uLmVudmlyb25tZW50UHJvcHMsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgICAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi50aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICAgIGFwcF9pZDogJ2NvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50JyxcbiAgICAgIGNoYXRfaWQ6IHRoaXMuZ2V0TG9jYWxTdG9yYWdlSXRlbShMb2NhbFN0b3JhZ2VLZXlzLkNoYXRJZCksXG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudiB8fCAndW5rbm93bicsXG4gICAgICBhcHBfc291cmNlOiB0aGlzLmNvbmZpZy5jb250ZXh0U291cmNlLFxuICAgICAgb3JnX2lkOiB0aGlzLmNvbmZpZy5vcmdJZCxcbiAgICAgICdvcmcuc2hvcnRfbmFtZSc6IHRoaXMuY29uZmlnLm9yZ1Nob3J0TmFtZSxcbiAgICAgICd1c2VyLmlkJzogdGhpcy5jb25maWcudXNlcklkLFxuICAgICAgJ2NkcC51c2VyX2lkJzogbnVsbCxcbiAgICAgICdjZHAucHJvdmlkZXInOiBudWxsLFxuICAgICAgJ2V2ZW50LnNvdXJjZSc6ICd3ZWItYnJvd3NlcicsXG4gICAgICAnZXZlbnQudHlwZSc6ICd1c2VyLWFjdGl2aXR5JyxcbiAgICAgICdldmVudC5pZCc6IG51bGwsXG4gICAgICAnZXZlbnQuY2hhbm5lbCc6ICd3ZWInLFxuICAgICAgJ2V2ZW50LnRpbWVzdGFtcCc6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIHByaXZhdGUgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKFxuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBwcmVmaXggPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZShcbiAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBhY2NbYCR7cHJlZml4fS4ke2tleX1gXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCk6IEVucmljaG1lbnRQbHVnaW4ge1xuICAgIGlmICh0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogJ3BhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50JyxcbiAgICAgIHR5cGU6ICdlbnJpY2htZW50JyxcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgJ1tBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkJyxcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5zaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMuc2hvdyddID0gU3RyaW5nKHRoaXMuY29uZmlnLnNob3cpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLmVudiddID0gU3RyaW5nKHRoaXMuY29uZmlnLmVudik7XG5cbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZz8uZW5hYmxlZEZlYXR1cmVzID8/ICh7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiksXG4gICAgICAgICAgKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aW1pbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgJ3RpbWluZy5lbnJpY2hlZF9hdF9tcyc6XG4gICAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKFxuICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50X3R5cGUgYXMgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IGVucmljaG1lbnQ7XG4gICAgcmV0dXJuIGVucmljaG1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNSZWFkeSA9IEJvb2xlYW4oXG4gICAgICB0aGlzLmNvbmZpZy51c2VySWQgJiYgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICApO1xuXG4gICAgaWYgKCFpc1JlYWR5KSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ0FtcGxpdHVkZVNlcnZpY2UgaXMgbm90IHJlYWR5Jywge1xuICAgICAgICBpc1JlYWR5LFxuICAgICAgICB1c2VySWQ6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICAgaGFzRmVhdHVyZUZsYWdTZXJ2aWNlOiAhIXRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSxcbiAgICAgICAgaGFzQW1wbGl0dWRlQXBpS2V5OiAhIXRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTW9ja0FwaUtleSkge1xuICAgICAgbG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgICdNb2NrIEFQSSBrZXkgZGV0ZWN0ZWQg4oCUIHJ1bm5pbmcgaW4gbW9jayBtb2RlLCBubyBldmVudHMgd2lsbCBiZSBzZW50IHRvIEFtcGxpdHVkZS4nLFxuICAgICAgICB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCA9IGNyZWF0ZUluc3RhbmNlKCk7XG5cbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQodGhpcy5nZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSwgdGhpcy5jb25maWcudXNlcklkLCB7XG4gICAgICAgIHNlcnZlclpvbmU6IHRoaXMuY29uZmlnLmRhdGFSZXNpZGVuY3kgYXMgU2VydmVyWm9uZVR5cGUsXG4gICAgICAgIHRyYWNraW5nT3B0aW9uczoge1xuICAgICAgICAgIGlwQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXV0b2NhcHR1cmU6IHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlVmlld3M6IHtcbiAgICAgICAgICAgIHRyYWNrSGlzdG9yeUNoYW5nZXM6ICdwYXRoT25seScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogZmFsc2UsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50ID0gY3VycmVudEFtcGxpdHVkZUluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtYXBXaWRnZXRUeXBlVG9DaGF0Q29tcG9uZW50KHdpZGdldFR5cGU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuRmxvYXRpbmdCdXR0b25WMzpcbiAgICAgICAgcmV0dXJuICdmbG9hdGluZ19idXR0b24nO1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuQ2hhdFByZXZpZXdWMzpcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlNvY2lhbFByb29mVjM6XG4gICAgICAgIHJldHVybiAnZW1iZWRkZWRfd2lkZ2V0JztcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlRpdGxlZFByb21wdENhcm91c2VsVjM6XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Qcm9tcHRDYXJvdXNlbFYzOlxuICAgICAgICByZXR1cm4gJ3N1Z2dlc3Rpb25fYmFyJztcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlByb2R1Y3RDYXJkVjM6XG4gICAgICAgIHJldHVybiAnaW1hZ2VfcHJvbXB0X2NhcmQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0cmlnZ2VyTG9jYXRpb24pIHtcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9EVUNUX0NBUkRfUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9EVUNUX0NBUkRfVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuICdwcm9tcHRfY2FyZCc7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPTVBUX0NBUk9VU0VMOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlRJVExFRF9QUk9NUFRfQ0FST1VTRUw6XG4gICAgICAgIHJldHVybiAndG9wX3Jldmlld3Nfc25pcHBldCc7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuVFlQSU5HX0FOSU1BVElPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5TT0NJQUxfUFJPT0ZfUFJJTUFSWV9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1NFQ09OREFSWV9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1RFWFRfRklFTEQ6XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9URVhUX0ZJRUxEOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19QUk9NUFRfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19URVhUX0ZJRUxEOlxuICAgICAgICByZXR1cm4gJ2NoYXRfcHJldmlldyc7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuRkxPQVRJTkdfQ0hBVF9PVkVSTEFZOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkZMT0FUSU5HX0NIQVRfQ0xPU0VfQlVUVE9OOlxuICAgICAgICByZXR1cm4gJ2luX2NoYXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJMb2NhdGlvbiBhcyBzdHJpbmc7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gbWFwIHRoZSBldmVudCBwcm9wcyB0byB0aGUgY29ycmVjdCBmb3JtYXQgZm9yIHRoZSBsZWdhY3kgYW1wbGl0dWRlIGV2ZW50c1xuICBzdGF0aWMgbWFwRXZlbnRQcm9wcyh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcyB9OiBUcmFja0V2ZW50UGFyYW1zKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IG1lc3NhZ2VNZXRhZGF0YSA9IGV2ZW50UHJvcHM/Lm1lc3NhZ2VfbWV0YWRhdGEgPz8ge307XG4gICAgY29uc3QgdHJpZ2dlckxvY2F0aW9uID1cbiAgICAgIG1lc3NhZ2VNZXRhZGF0YSAhPT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIG1lc3NhZ2VNZXRhZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICd0cmlnZ2VyX2xvY2F0aW9uJyBpbiBtZXNzYWdlTWV0YWRhdGFcbiAgICAgICAgPyBtZXNzYWdlTWV0YWRhdGEudHJpZ2dlcl9sb2NhdGlvblxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudEV4cGFuZGVkKSB7XG4gICAgICBjb25zdCBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uID1cbiAgICAgICAgQW1wbGl0dWRlU2VydmljZS5tYXBUcmlnZ2VyTG9jYXRpb25Ub0NoYXRDb21wb25lbnQodHJpZ2dlckxvY2F0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgIG1lc3NhZ2VfbWV0YWRhdGE6IHtcbiAgICAgICAgICAuLi5tZXNzYWdlTWV0YWRhdGEsXG4gICAgICAgICAgdHJpZ2dlcl9sb2NhdGlvbjogbWFwcGVkVHJpZ2dlckxvY2NhdGlvbixcbiAgICAgICAgICBmdWxsX3RyaWdnZXJfbG9jYXRpb246IHRyaWdnZXJMb2NhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgY29uc3QgbWFwcGVkV2lkZ2V0VHlwZSA9IEFtcGxpdHVkZVNlcnZpY2UubWFwV2lkZ2V0VHlwZVRvQ2hhdENvbXBvbmVudChcbiAgICAgICAgZXZlbnRQcm9wcz8ud2lkZ2V0X3R5cGUsXG4gICAgICApO1xuICAgICAgY29uc3QgbWFwcGVkVHJpZ2dlckxvY2NhdGlvbiA9XG4gICAgICAgIEFtcGxpdHVkZVNlcnZpY2UubWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICBtZXNzYWdlX21ldGFkYXRhOiB7XG4gICAgICAgICAgLi4ubWVzc2FnZU1ldGFkYXRhLFxuICAgICAgICAgIHRyaWdnZXJfbG9jYXRpb246IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24sXG4gICAgICAgICAgZnVsbF90cmlnZ2VyX2xvY2F0aW9uOiB0cmlnZ2VyTG9jYXRpb24sXG4gICAgICAgIH0sXG4gICAgICAgIGNoYXRfY29tcG9uZW50OiBtYXBwZWRXaWRnZXRUeXBlLFxuICAgICAgICAnY2hhdC5jb21wb25lbnRfdmlzaWJsZSc6IHRydWUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnRQcm9wcyA/PyB7fTtcbiAgfVxuXG4gIHN0YXRpYyBpc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKEVudml2ZU1ldHJpY3NFdmVudE5hbWUpLmluY2x1ZGVzKGV2ZW50TmFtZSBhcyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTtcbiAgfVxuXG4gIHN0YXRpYyBkZWNvcmF0ZUV2ZW50TmFtZShldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTogc3RyaW5nIHtcbiAgICBpZiAoQW1wbGl0dWRlU2VydmljZS5pc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lKSkge1xuICAgICAgcmV0dXJuIGBbRW52aXZlXSAke2V2ZW50TmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG4gIH1cblxuICBhc3luYyB0cmFja0V2ZW50KHtcbiAgICBldmVudE5hbWUsXG4gICAgZXZlbnRQcm9wcyxcbiAgICBldmVudEdyb3VwcyxcbiAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzID0gZmFsc2UsXG4gIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc01vY2tBcGlLZXkpIHJldHVybjtcbiAgICBsb2dnZXIubG9nRGVidWcoJ1N1Ym1pdHRpbmcgZXZlbnQnLCBldmVudE5hbWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvcmF0ZWRFdmVudE5hbWUgPSBBbXBsaXR1ZGVTZXJ2aWNlLmRlY29yYXRlRXZlbnROYW1lKGV2ZW50TmFtZSk7XG5cbiAgICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ1dhcm4oJ2FtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXBwZWRFdmVudFByb3BzID0gQW1wbGl0dWRlU2VydmljZS5tYXBFdmVudFByb3BzKHsgZXZlbnROYW1lLCBldmVudFByb3BzIH0pO1xuXG4gICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRQcm9wczogbWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgIC8vIGNhbGN1bGF0ZSBhIGhhc2ggb2YgdGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gdXNlIGFzIHRoZSBpbnNlcnRfaWQgc28gdGhhdCBkdXBsaWNhdGUgZXZlbnRzXG4gICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbnNlcnRJZCA9IGhhc2hBcnJheS5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcblxuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHByb3BzOiBtYXBwZWRFdmVudFByb3BzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKGV2ZW50TmFtZSksXG4gICAgICAgICAgLi4ubWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgICAuLi4obWFwcGVkRXZlbnRQcm9wc1xuICAgICAgICAgICAgPyB0aGlzLmV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIG1hcHBlZEV2ZW50UHJvcHMpXG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLmV2ZW50R3JvdXBzLFxuICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgLy8gVE9ETzogUHVsbCBnYUVuYWJsZWQgZnJvbSBvcmcgY29uZmlnIHdoZW4gYXZhaWxhYmxlLiBIYXJkY29kZWQgdG8gdHJ1ZSBmb3Igbm93LlxuICAgICAgY29uc3QgZ2FFbmFibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSkgJiYgZ2FFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZFByb3BzRm9yR0E0ID0ge1xuICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoZXZlbnROYW1lKSxcbiAgICAgICAgICAuLi5tYXBwZWRFdmVudFByb3BzLFxuICAgICAgICB9O1xuICAgICAgICBwcm9qZWN0VG9HQTQoZXZlbnROYW1lIGFzIEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIG1lcmdlZFByb3BzRm9yR0E0KTtcbiAgICAgIH0gZWxzZSBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiBnYUVuYWJsZWQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdHQSB0cmFja2luZycsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciB0cmFja2luZyBldmVudCcsIGVyciwge1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBFbnN1cmUgdGhhdCBzdXBwbGVtZW50YWwgZGVmYXVsdCBwcm9wcyBhcmUgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHByb3BzXG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyA9IHByb3BzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQW1CQSxNQUFNLFNBQVMsSUFBSUEsZUFBTyxtQkFBbUI7QUF3QjdDLElBQWEsbUJBQWIsTUFBYSxpQkFBaUI7Q0FTNUIsWUFBWSxRQUFnQztrQ0FKZ0IsRUFBRTtB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
|
|
294
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5qcyIsIm5hbWVzIjpbIkxvZ2dlciIsIkVYUEVSSU1FTlRfTkFNRVNQQUNFUzogRXhwZXJpbWVudE5hbWVzcGFjZVtdIiwiZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiIsImVucmljaGVkRXZlbnQ6IEV2ZW50IiwiZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9hbXBsaXR1ZGVTZXJ2aWNlL2FtcGxpdHVkZVNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy1icm93c2VyJztcbmltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSAnc3JjL2V2ZW50cyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHQnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyQ2xpZW50LFxuICBFbnJpY2htZW50UGx1Z2luLFxuICBFdmVudCxcbiAgU2VydmVyWm9uZVR5cGUsXG59IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZVYzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuaW1wb3J0IHsgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMyc7XG5pbXBvcnQgeyBFeHBlcmltZW50TmFtZXNwYWNlLCBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgcHJvamVjdFRvR0E0IH0gZnJvbSAnLi4vZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4vZXZlbnROYW1lcyc7XG5cbi8vIFJlLWV4cG9ydCBldmVudCBuYW1lcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfTtcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignYW1wbGl0dWRlU2VydmljZScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lO1xuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpdHVkZVNlcnZpY2VDb25maWcge1xuICB1c2VySWQ6IHN0cmluZztcbiAgYW1wbGl0dWRlQXBpS2V5OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k6IHN0cmluZztcbiAgZW52OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U6IHN0cmluZztcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlO1xuICBzaG93OiBib29sZWFuO1xuICBlbnZpdmVPbjogYm9vbGVhbjtcbiAgZW5hYmxlZEZlYXR1cmVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIGdldExvY2FsU3RvcmFnZUl0ZW06IG51bGwgfCAoKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsKTtcbiAgLy8gQ2FwdHVyZWQgYXQgY29uc3RydWN0aW9uLiBEcml2ZXMgYGV4cGVyaW1lbnQue25zfS4qYCBldmVudC1wcm9wZXJ0eVxuICAvLyBlbnJpY2htZW50LiBTb3VyY2VkIGZyb20gL3YxL29yZy9jb25maWcgd2hlbiB0aGUgYHVzZV91bmlmaWVkX2NvbmZpZ2BcbiAgLy8gZ2F0ZSBpcyBvbjsgb3RoZXJ3aXNlIG9taXR0ZWQgKHByb3BzIGVtaXQgYXMgbnVsbCkuXG4gIGV4cGVyaW1lbnRBc3NpZ25tZW50cz86IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W107XG59XG5cbi8vIE5hbWVzcGFjZXMgZW1pdHRlZCBvbiBldmVyeSBldmVudCB3aXRoIGNvbnN0YW50IGtleXMsIHNvIHRoZSBCaWdRdWVyeVxuLy8gc2NoZW1hIGlzIHN0YWJsZSByZWdhcmRsZXNzIG9mIHdoaWNoIChpZiBhbnkpIGV4cGVyaW1lbnQgaXMgcnVubmluZy5cbi8vIEN1cnJlbnRseSBgbWxgICsgYG1lcmNoYW50YDsgbWF0Y2hlcyBgRXhwZXJpbWVudE5hbWVzcGFjZWAuXG5jb25zdCBFWFBFUklNRU5UX05BTUVTUEFDRVM6IEV4cGVyaW1lbnROYW1lc3BhY2VbXSA9IFsnbWwnLCAnbWVyY2hhbnQnXTtcblxuY29uc3QgYnVpbGRFeHBlcmltZW50UHJvcHMgPSAoXG4gIGFzc2lnbm1lbnRzOiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdIHwgdW5kZWZpbmVkLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCBieU5hbWVzcGFjZSA9IG5ldyBNYXA8RXhwZXJpbWVudE5hbWVzcGFjZSwgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQ+KCk7XG4gIChhc3NpZ25tZW50cyA/PyBbXSkuZm9yRWFjaChhID0+IHtcbiAgICBpZiAoYS5sYXllcl9uYW1lICE9IG51bGwgJiYgYS5uYW1lc3BhY2UgIT0gbnVsbCkge1xuICAgICAgYnlOYW1lc3BhY2Uuc2V0KGEubmFtZXNwYWNlLCBhKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gRVhQRVJJTUVOVF9OQU1FU1BBQ0VTLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKGFjYywgbnMpID0+IHtcbiAgICBjb25zdCBhID0gYnlOYW1lc3BhY2UuZ2V0KG5zKTtcbiAgICBhY2NbYGV4cGVyaW1lbnQuJHtuc30ubGF5ZXJfbmFtZWBdID0gYT8ubGF5ZXJfbmFtZSA/PyBudWxsO1xuICAgIGFjY1tgZXhwZXJpbWVudC4ke25zfS5leHBlcmltZW50X25hbWVgXSA9IGE/LmFsbG9jYXRlZF9leHBlcmltZW50X25hbWUgPz8gbnVsbDtcbiAgICBhY2NbYGV4cGVyaW1lbnQuJHtuc30uZ3JvdXBfbmFtZWBdID0gYT8uZ3JvdXBfbmFtZSA/PyBudWxsO1xuICAgIC8vIGBydWxlX2lkYCByZXNlcnZlZCDigJQgYmFja2VuZCBkb2Vzbid0IGN1cnJlbnRseSBzdXJmYWNlIGl0LlxuICAgIGFjY1tgZXhwZXJpbWVudC4ke25zfS5ydWxlX2lkYF0gPSBudWxsO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjbGFzcyBBbXBsaXR1ZGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhbXBsaXR1ZGVDbGllbnQ6IEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIHByaXZhdGUgY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQW1wbGl0dWRlU2VydmljZUNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzTW9ja0FwaUtleSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5ID09PSAnbW9jay1hbXBsaXR1ZGUta2V5JztcbiAgfVxuXG4gIGdldCBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgdGhpcy5jb25maWcudXNlcklkICYmXG4gICAgICB0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UgJiZcbiAgICAgIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSAmJlxuICAgICAgdGhpcy5hbXBsaXR1ZGVDbGllbnQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlSXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRMb2NhbFN0b3JhZ2VJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0TG9jYWxTdG9yYWdlSXRlbShrZXkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoXG4gICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IGZlYXR1cmVHYXRlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGZWF0dXJlRmxhZ3MoKSk7XG4gICAgY29uc3QgZ2F0ZXNQcm9wcyA9XG4gICAgICBmZWF0dXJlR2F0ZXMubGVuZ3RoID4gMFxuICAgICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke25hbWV9YF06IHZhbHVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KVxuICAgICAgICA6IHt9O1xuICAgIGNvbnN0IGV4cGVyaW1lbnRQcm9wcyA9IGJ1aWxkRXhwZXJpbWVudFByb3BzKHRoaXMuY29uZmlnLmV4cGVyaW1lbnRBc3NpZ25tZW50cyk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudFByb3BzID0ge1xuICAgICAgJ2Vudmlyb25tZW50LmV4ZWN1dGlvbl9jb250ZXh0JzogJ2J1bmRsZScsXG4gICAgICAnZW52aXJvbm1lbnQucGFnZV91cmwnOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfdXNlcl9pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdlbnZpcm9ubWVudC5leGVjdXRpb25fZW52aXJvbm1lbnQnOiB0aGlzLmNvbmZpZy5lbnYgfHwgJ3Vua25vd24nLFxuICAgICAgJ2Vudmlyb25tZW50LmNvbnRleHRfc291cmNlJzogdGhpcy5jb25maWcuY29udGV4dFNvdXJjZSxcbiAgICAgICdlbnZpcm9ubWVudC5zYWxlc19hZ2VudF9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5zYWxlc0FnZW50ID8/IGZhbHNlLFxuICAgICAgJ2Vudmlyb25tZW50LnNlYXJjaF9lbmFibGVkJzogdGhpcy5jb25maWcuZW5hYmxlZEZlYXR1cmVzPy5zZWFyY2hBZ2VudCA/PyBmYWxzZSxcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfb25fcXVlcnlfcGFyYW0nOiB0aGlzLmNvbmZpZy5lbnZpdmVPbixcbiAgICAgICdlbnZpcm9ubWVudC53aW5kb3dfc2hvdyc6IHRoaXMuY29uZmlnLnNob3csXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX2VuYWJsZWQnOiB0aGlzLmNvbmZpZy5lbmFibGVkRmVhdHVyZXM/LmVudml2ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzID0gQW1wbGl0dWRlU2VydmljZS5pc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlLmdldEZ1bGxGbGFnVmFsdWVzKCksXG4gICAgICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgICAgICAgIC4uLmVudmlyb25tZW50UHJvcHMsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgICAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi50aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICAgIGFwcF9pZDogJ2NvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50JyxcbiAgICAgIGNoYXRfaWQ6IHRoaXMuZ2V0TG9jYWxTdG9yYWdlSXRlbShMb2NhbFN0b3JhZ2VLZXlzLkNoYXRJZCksXG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudiB8fCAndW5rbm93bicsXG4gICAgICBhcHBfc291cmNlOiB0aGlzLmNvbmZpZy5jb250ZXh0U291cmNlLFxuICAgICAgb3JnX2lkOiB0aGlzLmNvbmZpZy5vcmdJZCxcbiAgICAgICdvcmcuc2hvcnRfbmFtZSc6IHRoaXMuY29uZmlnLm9yZ1Nob3J0TmFtZSxcbiAgICAgICd1c2VyLmlkJzogdGhpcy5jb25maWcudXNlcklkLFxuICAgICAgJ2NkcC51c2VyX2lkJzogbnVsbCxcbiAgICAgICdjZHAucHJvdmlkZXInOiBudWxsLFxuICAgICAgJ2V2ZW50LnNvdXJjZSc6ICd3ZWItYnJvd3NlcicsXG4gICAgICAnZXZlbnQudHlwZSc6ICd1c2VyLWFjdGl2aXR5JyxcbiAgICAgICdldmVudC5pZCc6IG51bGwsXG4gICAgICAnZXZlbnQuY2hhbm5lbCc6ICd3ZWInLFxuICAgICAgJ2V2ZW50LnRpbWVzdGFtcCc6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIHByaXZhdGUgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKFxuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBwcmVmaXggPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZShcbiAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBhY2NbYCR7cHJlZml4fS4ke2tleX1gXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCk6IEVucmljaG1lbnRQbHVnaW4ge1xuICAgIGlmICh0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogJ3BhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50JyxcbiAgICAgIHR5cGU6ICdlbnJpY2htZW50JyxcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgJ1tBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkJyxcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5zaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMuc2hvdyddID0gU3RyaW5nKHRoaXMuY29uZmlnLnNob3cpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLmVudiddID0gU3RyaW5nKHRoaXMuY29uZmlnLmVudik7XG5cbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZz8uZW5hYmxlZEZlYXR1cmVzID8/ICh7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiksXG4gICAgICAgICAgKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aW1pbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgJ3RpbWluZy5lbnJpY2hlZF9hdF9tcyc6XG4gICAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKFxuICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50X3R5cGUgYXMgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB8IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IGVucmljaG1lbnQ7XG4gICAgcmV0dXJuIGVucmljaG1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNSZWFkeSA9IEJvb2xlYW4oXG4gICAgICB0aGlzLmNvbmZpZy51c2VySWQgJiYgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICApO1xuXG4gICAgaWYgKCFpc1JlYWR5KSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ0FtcGxpdHVkZVNlcnZpY2UgaXMgbm90IHJlYWR5Jywge1xuICAgICAgICBpc1JlYWR5LFxuICAgICAgICB1c2VySWQ6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICAgaGFzRmVhdHVyZUZsYWdTZXJ2aWNlOiAhIXRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSxcbiAgICAgICAgaGFzQW1wbGl0dWRlQXBpS2V5OiAhIXRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTW9ja0FwaUtleSkge1xuICAgICAgbG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgICdNb2NrIEFQSSBrZXkgZGV0ZWN0ZWQg4oCUIHJ1bm5pbmcgaW4gbW9jayBtb2RlLCBubyBldmVudHMgd2lsbCBiZSBzZW50IHRvIEFtcGxpdHVkZS4nLFxuICAgICAgICB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXksXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCA9IGNyZWF0ZUluc3RhbmNlKCk7XG5cbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQodGhpcy5nZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSwgdGhpcy5jb25maWcudXNlcklkLCB7XG4gICAgICAgIHNlcnZlclpvbmU6IHRoaXMuY29uZmlnLmRhdGFSZXNpZGVuY3kgYXMgU2VydmVyWm9uZVR5cGUsXG4gICAgICAgIHRyYWNraW5nT3B0aW9uczoge1xuICAgICAgICAgIGlwQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXV0b2NhcHR1cmU6IHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlVmlld3M6IHtcbiAgICAgICAgICAgIHRyYWNrSGlzdG9yeUNoYW5nZXM6ICdwYXRoT25seScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogZmFsc2UsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50ID0gY3VycmVudEFtcGxpdHVkZUluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtYXBXaWRnZXRUeXBlVG9DaGF0Q29tcG9uZW50KHdpZGdldFR5cGU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuRmxvYXRpbmdCdXR0b25WMzpcbiAgICAgICAgcmV0dXJuICdmbG9hdGluZ19idXR0b24nO1xuICAgICAgY2FzZSBXaWRnZXRUeXBlVjMuQ2hhdFByZXZpZXdWMzpcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlNvY2lhbFByb29mVjM6XG4gICAgICAgIHJldHVybiAnZW1iZWRkZWRfd2lkZ2V0JztcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlRpdGxlZFByb21wdENhcm91c2VsVjM6XG4gICAgICBjYXNlIFdpZGdldFR5cGVWMy5Qcm9tcHRDYXJvdXNlbFYzOlxuICAgICAgICByZXR1cm4gJ3N1Z2dlc3Rpb25fYmFyJztcbiAgICAgIGNhc2UgV2lkZ2V0VHlwZVYzLlByb2R1Y3RDYXJkVjM6XG4gICAgICAgIHJldHVybiAnaW1hZ2VfcHJvbXB0X2NhcmQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0cmlnZ2VyTG9jYXRpb24pIHtcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9EVUNUX0NBUkRfUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5QUk9EVUNUX0NBUkRfVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuICdwcm9tcHRfY2FyZCc7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuUFJPTVBUX0NBUk9VU0VMOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLlRJVExFRF9QUk9NUFRfQ0FST1VTRUw6XG4gICAgICAgIHJldHVybiAndG9wX3Jldmlld3Nfc25pcHBldCc7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuVFlQSU5HX0FOSU1BVElPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5TT0NJQUxfUFJPT0ZfUFJJTUFSWV9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1NFQ09OREFSWV9CVVRUT046XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuU09DSUFMX1BST09GX1RFWFRfRklFTEQ6XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuQ0hBVF9QUkVWSUVXX0NPTVBBUklTT05fUFJPTVBUX0JVVFRPTjpcbiAgICAgIGNhc2UgQ2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25WMy5DSEFUX1BSRVZJRVdfQ09NUEFSSVNPTl9URVhUX0ZJRUxEOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19QUk9NUFRfQlVUVE9OOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkNIQVRfUFJFVklFV19URVhUX0ZJRUxEOlxuICAgICAgICByZXR1cm4gJ2NoYXRfcHJldmlldyc7XG4gICAgICBjYXNlIENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uVjMuRkxPQVRJTkdfQ0hBVF9PVkVSTEFZOlxuICAgICAgY2FzZSBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvblYzLkZMT0FUSU5HX0NIQVRfQ0xPU0VfQlVUVE9OOlxuICAgICAgICByZXR1cm4gJ2luX2NoYXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJMb2NhdGlvbiBhcyBzdHJpbmc7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gbWFwIHRoZSBldmVudCBwcm9wcyB0byB0aGUgY29ycmVjdCBmb3JtYXQgZm9yIHRoZSBsZWdhY3kgYW1wbGl0dWRlIGV2ZW50c1xuICBzdGF0aWMgbWFwRXZlbnRQcm9wcyh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcyB9OiBUcmFja0V2ZW50UGFyYW1zKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IG1lc3NhZ2VNZXRhZGF0YSA9IGV2ZW50UHJvcHM/Lm1lc3NhZ2VfbWV0YWRhdGEgPz8ge307XG4gICAgY29uc3QgdHJpZ2dlckxvY2F0aW9uID1cbiAgICAgIG1lc3NhZ2VNZXRhZGF0YSAhPT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIG1lc3NhZ2VNZXRhZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICd0cmlnZ2VyX2xvY2F0aW9uJyBpbiBtZXNzYWdlTWV0YWRhdGFcbiAgICAgICAgPyBtZXNzYWdlTWV0YWRhdGEudHJpZ2dlcl9sb2NhdGlvblxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChldmVudE5hbWUgPT09IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudEV4cGFuZGVkKSB7XG4gICAgICBjb25zdCBtYXBwZWRUcmlnZ2VyTG9jY2F0aW9uID1cbiAgICAgICAgQW1wbGl0dWRlU2VydmljZS5tYXBUcmlnZ2VyTG9jYXRpb25Ub0NoYXRDb21wb25lbnQodHJpZ2dlckxvY2F0aW9uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgIG1lc3NhZ2VfbWV0YWRhdGE6IHtcbiAgICAgICAgICAuLi5tZXNzYWdlTWV0YWRhdGEsXG4gICAgICAgICAgdHJpZ2dlcl9sb2NhdGlvbjogbWFwcGVkVHJpZ2dlckxvY2NhdGlvbixcbiAgICAgICAgICBmdWxsX3RyaWdnZXJfbG9jYXRpb246IHRyaWdnZXJMb2NhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSkge1xuICAgICAgY29uc3QgbWFwcGVkV2lkZ2V0VHlwZSA9IEFtcGxpdHVkZVNlcnZpY2UubWFwV2lkZ2V0VHlwZVRvQ2hhdENvbXBvbmVudChcbiAgICAgICAgZXZlbnRQcm9wcz8ud2lkZ2V0X3R5cGUsXG4gICAgICApO1xuICAgICAgY29uc3QgbWFwcGVkVHJpZ2dlckxvY2NhdGlvbiA9XG4gICAgICAgIEFtcGxpdHVkZVNlcnZpY2UubWFwVHJpZ2dlckxvY2F0aW9uVG9DaGF0Q29tcG9uZW50KHRyaWdnZXJMb2NhdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICBtZXNzYWdlX21ldGFkYXRhOiB7XG4gICAgICAgICAgLi4ubWVzc2FnZU1ldGFkYXRhLFxuICAgICAgICAgIHRyaWdnZXJfbG9jYXRpb246IG1hcHBlZFRyaWdnZXJMb2NjYXRpb24sXG4gICAgICAgICAgZnVsbF90cmlnZ2VyX2xvY2F0aW9uOiB0cmlnZ2VyTG9jYXRpb24sXG4gICAgICAgIH0sXG4gICAgICAgIGNoYXRfY29tcG9uZW50OiBtYXBwZWRXaWRnZXRUeXBlLFxuICAgICAgICAnY2hhdC5jb21wb25lbnRfdmlzaWJsZSc6IHRydWUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZXZlbnRQcm9wcyA/PyB7fTtcbiAgfVxuXG4gIHN0YXRpYyBpc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHwgRW52aXZlTWV0cmljc0V2ZW50TmFtZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKEVudml2ZU1ldHJpY3NFdmVudE5hbWUpLmluY2x1ZGVzKGV2ZW50TmFtZSBhcyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTtcbiAgfVxuXG4gIHN0YXRpYyBkZWNvcmF0ZUV2ZW50TmFtZShldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUgfCBFbnZpdmVNZXRyaWNzRXZlbnROYW1lKTogc3RyaW5nIHtcbiAgICBpZiAoQW1wbGl0dWRlU2VydmljZS5pc1YzRW52aXZlRXZlbnQoZXZlbnROYW1lKSkge1xuICAgICAgcmV0dXJuIGBbRW52aXZlXSAke2V2ZW50TmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG4gIH1cblxuICBhc3luYyB0cmFja0V2ZW50KHtcbiAgICBldmVudE5hbWUsXG4gICAgZXZlbnRQcm9wcyxcbiAgICBldmVudEdyb3VwcyxcbiAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzID0gZmFsc2UsXG4gIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc01vY2tBcGlLZXkpIHJldHVybjtcbiAgICBsb2dnZXIubG9nRGVidWcoJ1N1Ym1pdHRpbmcgZXZlbnQnLCBldmVudE5hbWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvcmF0ZWRFdmVudE5hbWUgPSBBbXBsaXR1ZGVTZXJ2aWNlLmRlY29yYXRlRXZlbnROYW1lKGV2ZW50TmFtZSk7XG5cbiAgICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ1dhcm4oJ2FtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXBwZWRFdmVudFByb3BzID0gQW1wbGl0dWRlU2VydmljZS5tYXBFdmVudFByb3BzKHsgZXZlbnROYW1lLCBldmVudFByb3BzIH0pO1xuXG4gICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRQcm9wczogbWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgIC8vIGNhbGN1bGF0ZSBhIGhhc2ggb2YgdGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gdXNlIGFzIHRoZSBpbnNlcnRfaWQgc28gdGhhdCBkdXBsaWNhdGUgZXZlbnRzXG4gICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbnNlcnRJZCA9IGhhc2hBcnJheS5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcblxuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHByb3BzOiBtYXBwZWRFdmVudFByb3BzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKGV2ZW50TmFtZSksXG4gICAgICAgICAgLi4ubWFwcGVkRXZlbnRQcm9wcyxcbiAgICAgICAgICAuLi4obWFwcGVkRXZlbnRQcm9wc1xuICAgICAgICAgICAgPyB0aGlzLmV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIG1hcHBlZEV2ZW50UHJvcHMpXG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC4uLmV2ZW50R3JvdXBzLFxuICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgLy8gVE9ETzogUHVsbCBnYUVuYWJsZWQgZnJvbSBvcmcgY29uZmlnIHdoZW4gYXZhaWxhYmxlLiBIYXJkY29kZWQgdG8gdHJ1ZSBmb3Igbm93LlxuICAgICAgY29uc3QgZ2FFbmFibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKEFtcGxpdHVkZVNlcnZpY2UuaXNWM0Vudml2ZUV2ZW50KGV2ZW50TmFtZSkgJiYgZ2FFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZFByb3BzRm9yR0E0ID0ge1xuICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoZXZlbnROYW1lKSxcbiAgICAgICAgICAuLi5tYXBwZWRFdmVudFByb3BzLFxuICAgICAgICB9O1xuICAgICAgICBwcm9qZWN0VG9HQTQoZXZlbnROYW1lIGFzIEVudml2ZU1ldHJpY3NFdmVudE5hbWUsIG1lcmdlZFByb3BzRm9yR0E0KTtcbiAgICAgIH0gZWxzZSBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiBnYUVuYWJsZWQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdHQSB0cmFja2luZycsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciB0cmFja2luZyBldmVudCcsIGVyciwge1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBFbnN1cmUgdGhhdCBzdXBwbGVtZW50YWwgZGVmYXVsdCBwcm9wcyBhcmUgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHByb3BzXG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyA9IHByb3BzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQW9CQSxNQUFNLFNBQVMsSUFBSUEsZUFBTyxtQkFBbUI7QUErQjdDLE1BQU1DLHdCQUErQyxDQUFDLE1BQU0sV0FBVztBQUV2RSxNQUFNLHdCQUNKLGdCQUM0QjtDQUM1QixNQUFNLDhCQUFjLElBQUksS0FBeUQ7QUFDakYsRUFBQyxlQUFlLEVBQUUsRUFBRSxTQUFRLE1BQUs7QUFDL0IsTUFBSSxFQUFFLGNBQWMsUUFBUSxFQUFFLGFBQWEsS0FDekMsYUFBWSxJQUFJLEVBQUUsV0FBVyxFQUFFO0dBRWpDO0FBQ0YsUUFBTyxzQkFBc0IsUUFBaUMsS0FBSyxPQUFPO0VBQ3hFLE1BQU0sSUFBSSxZQUFZLElBQUksR0FBRztBQUM3QixNQUFJLGNBQWMsR0FBRyxnQkFBZ0IsR0FBRyxjQUFjO0FBQ3RELE1BQUksY0FBYyxHQUFHLHFCQUFxQixHQUFHLDZC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
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
const require_featureGates = require('../../application/models/featureGates.cjs');
|
|
2
|
+
const require_featureFlagServiceContext = require('../../contexts/featureFlagServiceContext/featureFlagServiceContext.cjs');
|
|
3
|
+
require('../../contexts/featureFlagServiceContext/index.cjs');
|
|
2
4
|
const require_fetchGraphQLConfig = require('./fetchGraphQLConfig.cjs');
|
|
3
5
|
|
|
4
6
|
//#region src/services/enviveConfigService/enviveConfigService.ts
|
|
@@ -20,13 +22,17 @@ var EnviveConfigService = class {
|
|
|
20
22
|
include_experiments: "default",
|
|
21
23
|
include_feature_gates: Object.values(require_featureGates.FeatureGates).map((featureGate) => featureGate.toString()).join(",")
|
|
22
24
|
});
|
|
23
|
-
const
|
|
25
|
+
const orgConfigResponse = await fetch(`${this.baseUrl}/v1/org/config?${queryParams.toString()}`, {
|
|
24
26
|
method: "GET",
|
|
25
27
|
headers: {
|
|
26
28
|
"Content-Type": "application/json",
|
|
27
29
|
Authorization: `Bearer ${this.apiKey}`
|
|
28
30
|
}
|
|
29
|
-
}).then((r) =>
|
|
31
|
+
}).then(async (r) => {
|
|
32
|
+
if (!r.ok) throw new Error(`Org config request failed with status ${r.status}`);
|
|
33
|
+
return r.json();
|
|
34
|
+
});
|
|
35
|
+
const orgConfig = new require_featureFlagServiceContext.FeatureFlagService(orgConfigResponse.gates ?? []).isFeatureGateEnabled(require_featureGates.FeatureGates.UseUnifiedConfig) ? await require_fetchGraphQLConfig.fetchUnifiedGraphQLConfig(this.baseUrl, this.apiKey, this.userId) : await require_fetchGraphQLConfig.fetchGraphQLConfig(this.baseUrl, this.apiKey);
|
|
30
36
|
this.response = {
|
|
31
37
|
...orgConfigResponse,
|
|
32
38
|
orgConfig
|
|
@@ -53,4 +59,4 @@ var MockEnviveConfigService = class {
|
|
|
53
59
|
//#endregion
|
|
54
60
|
exports.EnviveConfigService = EnviveConfigService;
|
|
55
61
|
exports.MockEnviveConfigService = MockEnviveConfigService;
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5janMiLCJuYW1lcyI6WyJGZWF0dXJlR2F0ZXMiLCJGZWF0dXJlRmxhZ1NlcnZpY2UiLCJmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIiwiZmV0Y2hHcmFwaFFMQ29uZmlnIiwibW9ja0NvbmZpZzogRW52aXZlU2VydmljZUNvbmZpZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlL2Vudml2ZUNvbmZpZ1NlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQsIE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcyc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5pbXBvcnQgeyBHcmFwaFFsQ29uZmlnVmFsdWVzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0JztcbmltcG9ydCB7IGZldGNoR3JhcGhRTENvbmZpZywgZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyB9IGZyb20gJy4vZmV0Y2hHcmFwaFFMQ29uZmlnJztcblxudHlwZSBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMgPSB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBFbnZpdmVTZXJ2aWNlQ29uZmlnID0ge1xuICBvcmc6IHtcbiAgICBvcmc6IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBzaG9ydF9uYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5X25hbWU6IHN0cmluZztcbiAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgZ2F0ZXM6IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107XG4gIC8vIFBvcHVsYXRlZCBieSB0aGUgYmFja2VuZCB3aGVuIHRoZSBgdXNlX3VuaWZpZWRfY29uZmlnYCBTdGF0c2lnIGdhdGVcbiAgLy8gZXZhbHVhdGVzIHRydWUuIGFtcGxpdHVkZVNlcnZpY2UgcmVhZHMgdGhlc2UgdG8gZW5yaWNoIGV2ZW50cyB3aXRoXG4gIC8vIGBleHBlcmltZW50Lntuc30uKmAgcHJvcGVydGllcy5cbiAgZXhwZXJpbWVudF9hc3NpZ25tZW50cz86IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W107XG4gIC8vIG9yZ0NvbmZpZy5yZXNvbHV0aW9uIGlzIHBvcHVsYXRlZCBvbmx5IG9uIHRoZSB1bmlmaWVkIHBhdGggKHNvdXJjZWQgZnJvbVxuICAvLyBnZXRXaWRnZXRDb25maWcucmVzb2x1dGlvbiwgbm90IC92MS9vcmcvY29uZmlnLnJlc29sdXRpb24pIHNvIHRoZSB2ZXJzaW9uXG4gIC8vIHRocmVhZGVkIGludG8gaW5mZXJlbmNlIHJlcXVlc3RzIG1hdGNoZXMgdGhlIHZlcnNpb24gdGhhdCBwcm9kdWNlZCB0aGVcbiAgLy8gcmVuZGVyZWQgd2lkZ2V0cy5cbiAgb3JnQ29uZmlnPzogR3JhcGhRbENvbmZpZ1ZhbHVlcztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGNsYXNzIEVudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVzcG9uc2U6IEVudml2ZVNlcnZpY2VDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcih7IGJhc2VVcmwsIGFwaUtleSwgdXNlcklkLCBuYW1lc3BhY2UsIHNvdXJjZSB9OiBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMpIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMudXNlcklkID0gdXNlcklkO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgYXN5bmMgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz4ge1xuICAgIGlmICh0aGlzLnJlc3BvbnNlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5uYW1lc3BhY2UsXG4gICAgICBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgdXNlcl9pZDogdGhpcy51c2VySWQsXG4gICAgICBpbmNsdWRlX2V4cGVyaW1lbnRzOiAnZGVmYXVsdCcsXG4gICAgICBpbmNsdWRlX2ZlYXR1cmVfZ2F0ZXM6IE9iamVjdC52YWx1ZXMoRmVhdHVyZUdhdGVzKVxuICAgICAgICAubWFwKGZlYXR1cmVHYXRlID0+IGZlYXR1cmVHYXRlLnRvU3RyaW5nKCkpXG4gICAgICAgIC5qb2luKCcsJyksXG4gICAgfSk7XG4gICAgLy8gU2VyaWFsaXplZCBzbyB3ZSBjYW4gYnJhbmNoIHRoZSBHcmFwaFFMIGNhbGwgb24gdGhlIGB1c2VfdW5pZmllZF9jb25maWdgXG4gICAgLy8gZ2F0ZSByZXR1cm5lZCBieSAvdjEvb3JnL2NvbmZpZy4gT25jZSB0aGUgbWlncmF0aW9uIHRvIGdldFdpZGdldENvbmZpZ1xuICAgIC8vIGNvbXBsZXRlcyAob25lIGVuZHBvaW50IHJldHVybmluZyBnYXRlcyArIGV4cGVyaW1lbnRzICsgcHJvZHVjdHNDb25maWcpLFxuICAgIC8vIHRoaXMgY29sbGFwc2VzIGJhY2sgdG8gYSBzaW5nbGUgY2FsbC5cbiAgICBjb25zdCBvcmdDb25maWdSZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS92MS9vcmcvY29uZmlnPyR7cXVlcnlQYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hcGlLZXl9YCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKS50aGVuKGFzeW5jIHIgPT4ge1xuICAgICAgaWYgKCFyLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3JnIGNvbmZpZyByZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyAke3Iuc3RhdHVzfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIuanNvbigpIGFzIFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz47XG4gICAgfSk7XG5cbiAgICAvLyBIb25vciBVUkwgLyBgd2luZG93Ll9zcGlmZnlgIC8gbG9jYWxTdG9yYWdlIG92ZXJyaWRlcyBmb3JcbiAgICAvLyBgdXNlX3VuaWZpZWRfY29uZmlnYCB0aGUgc2FtZSB3YXkgZXZlcnkgb3RoZXIgZmVhdHVyZSBnYXRlIGlzIHJlYWQuXG4gICAgY29uc3QgdXNlVW5pZmllZENvbmZpZyA9IG5ldyBGZWF0dXJlRmxhZ1NlcnZpY2UoXG4gICAgICBvcmdDb25maWdSZXNwb25zZS5nYXRlcyA/PyBbXSxcbiAgICApLmlzRmVhdHVyZUdhdGVFbmFibGVkKEZlYXR1cmVHYXRlcy5Vc2VVbmlmaWVkQ29uZmlnKTtcbiAgICBjb25zdCBvcmdDb25maWcgPSB1c2VVbmlmaWVkQ29uZmlnXG4gICAgICA/IGF3YWl0IGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcodGhpcy5iYXNlVXJsLCB0aGlzLmFwaUtleSwgdGhpcy51c2VySWQpXG4gICAgICA6IGF3YWl0IGZldGNoR3JhcGhRTENvbmZpZyh0aGlzLmJhc2VVcmwsIHRoaXMuYXBpS2V5KTtcblxuICAgIHRoaXMucmVzcG9uc2UgPSB7IC4uLm9yZ0NvbmZpZ1Jlc3BvbnNlLCBvcmdDb25maWcgfTtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgc3RhdGljIG1vY2sgZGF0YSBmcm9tIGl0cyBjb25zdHJ1Y3RvciBhcmd1bWVudHMuIFBhc3NlcyBlbXB0eSBiYXNlVXJsL2FwaUtleVxuICogc28gYW55IGNvZGUgY2hlY2tpbmcgaXNSZWFkeSBkb2VzIG5vdCBmaXJlIHJlYWwgbmV0d29yayByZXF1ZXN0cy4gVGhlIG9yZ0NvbmZpZyBmaWVsZFxuICogY292ZXJzIGNvbG9ycywgZnJvbnRlbmRDb25maWcsIGFuZCBwYWdlL3dpZGdldC9tb3VudGluZyBjb25maWdzIHdpdGhvdXQgYW55IG5ldHdvcmsgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrRW52aXZlQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyA9ICcnO1xuXG4gIHB1YmxpYyByZWFkb25seSBhcGlLZXk6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbW9ja0NvbmZpZzogRW52aXZlU2VydmljZUNvbmZpZykge31cblxuICBhc3luYyBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMubW9ja0NvbmZpZztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUE0Q0EsSUFBYSxzQkFBYixNQUFpRTtDQWEvRCxZQUFZLEVBQUUsU0FBUyxRQUFRLFFBQVEsV0FBVyxVQUFvQztrQkFGdkM7QUFHN0MsT0FBSyxVQUFVO0FBQ2YsT0FBSyxTQUFTO0FBQ2QsT0FBSyxTQUFTO0FBQ2QsT0FBSyxZQUFZO0FBQ2pCLE9BQUssU0FBUzs7Q0FHaEIsTUFBTSxrQkFBZ0Q7QUFDcEQsTUFBSSxLQUFLLGFBQWEsS0FDcEIsUUFBTyxLQUFLO0VBRWQsTUFBTSxjQUFjLElBQUksZ0JBQWdCO0dBQ3RDLFdBQVcsS0FBSztHQUNoQixRQUFRLEtBQUs7R0FDYixTQUFTLEtBQUs7R0FDZCxxQkFBcUI7R0FDckIsdUJBQXVCLE9BQU8sT0FBT0Esa0NBQWEsQ0FDL0MsS0FBSSxnQkFBZSxZQUFZLFVBQVUsQ0FBQyxDQUMxQyxLQUFLLElBQUk7R0FDYixDQUFDO0VBS0YsTUFBTSxvQkFBb0IsTUFBTSxNQUM5QixHQUFHLEtBQUssUUFBUSxpQkFBaUIsWUFBWSxVQUFVLElBQ3ZEO0dBQ0UsUUFBUTtHQUNSLFNBQVM7SUFDUCxnQkFBZ0I7SUFDaEIsZUFBZSxVQUFVLEtBQUs7SUFDL0I7R0FDRixDQUNGLENBQUMsS0FBSyxPQUFNLE1BQUs7QUFDaEIsT0FBSSxDQUFDLEVBQUUsR0FDTCxPQUFNLElBQUksTUFBTSx5Q0FBeUMsRUFBRSxTQUFTO0FBRXRFLFVBQU8sRUFBRSxNQUFNO0lBQ2Y7RUFPRixNQUFNLFlBSG1CLElBQUlDLHFEQUMzQixrQkFBa0IsU0FBUyxFQUFFLENBQzlCLENBQUMscUJBQXFCRCxrQ0FBYSxpQkFBaUIsR0FFakQsTUFBTUUscURBQTBCLEtBQUssU0FBUyxLQUFLLFFBQVEsS0FBSyxPQUFPLEdBQ3ZFLE1BQU1DLDhDQUFtQixLQUFLLFNBQVMsS0FBSyxPQUFPO0FBRXZELE9BQUssV0FBVztHQUFFLEdBQUc7R0FBbUI7R0FBVztBQUNuRCxTQUFPLEtBQUs7Ozs7Ozs7O0FBU2hCLElBQWEsMEJBQWIsTUFBcUU7Q0FLbkUsWUFBWSxBQUFpQkMsWUFBaUM7RUFBakM7aUJBSks7Z0JBRUQ7O0NBSWpDLE1BQU0sa0JBQWdEO0FBQ3BELFNBQU8sS0FBSyJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.cjs";
|
|
1
|
+
import { OrgConfigExperimentAssignment, OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.cjs";
|
|
2
2
|
import { GraphQlConfigValues } from "../../contexts/graphqlContext/graphqlContext.cjs";
|
|
3
3
|
|
|
4
4
|
//#region src/services/enviveConfigService/enviveConfigService.d.ts
|
|
@@ -22,6 +22,7 @@ type EnviveServiceConfig = {
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
gates: OrgConfigFeatureGate[];
|
|
25
|
+
experiment_assignments?: OrgConfigExperimentAssignment[];
|
|
25
26
|
orgConfig?: GraphQlConfigValues;
|
|
26
27
|
};
|
|
27
28
|
interface IEnviveConfigService {
|
|
@@ -59,4 +60,4 @@ declare class MockEnviveConfigService implements IEnviveConfigService {
|
|
|
59
60
|
}
|
|
60
61
|
//#endregion
|
|
61
62
|
export { EnviveConfigService, EnviveServiceConfig, IEnviveConfigService, MockEnviveConfigService };
|
|
62
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9lbnZpdmVDb25maWdTZXJ2aWNlLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQsIE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBHcmFwaFFsQ29uZmlnVmFsdWVzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0JztcbnR5cGUgRW52aXZlQ29uZmlnU2VydmljZVByb3BzID0ge1xuICAgIGJhc2VVcmw6IHN0cmluZztcbiAgICBhcGlLZXk6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBzb3VyY2U6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFbnZpdmVTZXJ2aWNlQ29uZmlnID0ge1xuICAgIG9yZzoge1xuICAgICAgICBvcmc6IHtcbiAgICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgICBzaG9ydF9uYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBkaXNwbGF5X25hbWU6IHN0cmluZztcbiAgICAgICAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICAgICAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBnYXRlczogT3JnQ29uZmlnRmVhdHVyZUdhdGVbXTtcbiAgICBleHBlcmltZW50X2Fzc2lnbm1lbnRzPzogT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnRbXTtcbiAgICBvcmdDb25maWc/OiBHcmFwaFFsQ29uZmlnVmFsdWVzO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICAgIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcbiAgICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgICBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEVudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gICAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlcklkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZXNwYWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlO1xuICAgIHByaXZhdGUgcmVzcG9uc2U7XG4gICAgY29uc3RydWN0b3IoeyBiYXNlVXJsLCBhcGlLZXksIHVzZXJJZCwgbmFtZXNwYWNlLCBzb3VyY2UgfTogRW52aXZlQ29uZmlnU2VydmljZVByb3BzKTtcbiAgICBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPjtcbn1cbi8qKlxuICogUmV0dXJucyBzdGF0aWMgbW9jayBkYXRhIGZyb20gaXRzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4gUGFzc2VzIGVtcHR5IGJhc2VVcmwvYXBpS2V5XG4gKiBzbyBhbnkgY29kZSBjaGVja2luZyBpc1JlYWR5IGRvZXMgbm90IGZpcmUgcmVhbCBuZXR3b3JrIHJlcXVlc3RzLiBUaGUgb3JnQ29uZmlnIGZpZWxkXG4gKiBjb3ZlcnMgY29sb3JzLCBmcm9udGVuZENvbmZpZywgYW5kIHBhZ2Uvd2lkZ2V0L21vdW50aW5nIGNvbmZpZ3Mgd2l0aG91dCBhbnkgbmV0d29yayBjYWxscy5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgTW9ja0Vudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2NrQ29uZmlnO1xuICAgIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcbiAgICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgICBjb25zdHJ1Y3Rvcihtb2NrQ29uZmlnOiBFbnZpdmVTZXJ2aWNlQ29uZmlnKTtcbiAgICBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPjtcbn1cbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLElBQUksMkJBQTJCLENBQUMsSUFBQTtBQUNoQyxJQUFXLHNCQUFRO0NBQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNuQixJQUFXLHVCQUFPO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDbEIsSUFBVyxzQkFBTztDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDbEIsSUFBVywwQkFBVTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.js";
|
|
1
|
+
import { OrgConfigExperimentAssignment, OrgConfigFeatureGate } from "../../application/models/api/orgConfigResults.js";
|
|
2
2
|
import { GraphQlConfigValues } from "../../contexts/graphqlContext/graphqlContext.js";
|
|
3
3
|
|
|
4
4
|
//#region src/services/enviveConfigService/enviveConfigService.d.ts
|
|
@@ -22,6 +22,7 @@ type EnviveServiceConfig = {
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
gates: OrgConfigFeatureGate[];
|
|
25
|
+
experiment_assignments?: OrgConfigExperimentAssignment[];
|
|
25
26
|
orgConfig?: GraphQlConfigValues;
|
|
26
27
|
};
|
|
27
28
|
interface IEnviveConfigService {
|
|
@@ -59,4 +60,4 @@ declare class MockEnviveConfigService implements IEnviveConfigService {
|
|
|
59
60
|
}
|
|
60
61
|
//#endregion
|
|
61
62
|
export { EnviveConfigService, EnviveServiceConfig, IEnviveConfigService, MockEnviveConfigService };
|
|
62
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlL2Vudml2ZUNvbmZpZ1NlcnZpY2UuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudCwgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEdyYXBoUWxDb25maWdWYWx1ZXMgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQnO1xudHlwZSBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMgPSB7XG4gICAgYmFzZVVybDogc3RyaW5nO1xuICAgIGFwaUtleTogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHNvdXJjZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEVudml2ZVNlcnZpY2VDb25maWcgPSB7XG4gICAgb3JnOiB7XG4gICAgICAgIG9yZzoge1xuICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgIHNob3J0X25hbWU6IHN0cmluZztcbiAgICAgICAgICAgIGRpc3BsYXlfbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgZG9tYWluOiBzdHJpbmc7XG4gICAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGdhdGVzOiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICAgIGV4cGVyaW1lbnRfYXNzaWdubWVudHM/OiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdO1xuICAgIG9yZ0NvbmZpZz86IEdyYXBoUWxDb25maWdWYWx1ZXM7XG59O1xuZXhwb3J0IGludGVyZmFjZSBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gICAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICAgIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+O1xufVxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgRW52aXZlQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VySWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2U7XG4gICAgcHJpdmF0ZSByZXNwb25zZTtcbiAgICBjb25zdHJ1Y3Rvcih7IGJhc2VVcmwsIGFwaUtleSwgdXNlcklkLCBuYW1lc3BhY2UsIHNvdXJjZSB9OiBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMpO1xuICAgIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+O1xufVxuLyoqXG4gKiBSZXR1cm5zIHN0YXRpYyBtb2NrIGRhdGEgZnJvbSBpdHMgY29uc3RydWN0b3IgYXJndW1lbnRzLiBQYXNzZXMgZW1wdHkgYmFzZVVybC9hcGlLZXlcbiAqIHNvIGFueSBjb2RlIGNoZWNraW5nIGlzUmVhZHkgZG9lcyBub3QgZmlyZSByZWFsIG5ldHdvcmsgcmVxdWVzdHMuIFRoZSBvcmdDb25maWcgZmllbGRcbiAqIGNvdmVycyBjb2xvcnMsIGZyb250ZW5kQ29uZmlnLCBhbmQgcGFnZS93aWRnZXQvbW91bnRpbmcgY29uZmlncyB3aXRob3V0IGFueSBuZXR3b3JrIGNhbGxzLlxuICovXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBNb2NrRW52aXZlQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vY2tDb25maWc7XG4gICAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKG1vY2tDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWcpO1xuICAgIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+O1xufVxuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBSSwyQkFBMkIsQ0FBQyxJQUFBO0FBQ2hDLElBQVcsc0JBQVE7Q0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ25CLElBQVcsdUJBQU87Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNsQixJQUFXLHNCQUFPO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNsQixJQUFXLDBCQUFVO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBIn0=
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { FeatureGates } from "../../application/models/featureGates.js";
|
|
2
|
-
import {
|
|
2
|
+
import { FeatureFlagService } from "../../contexts/featureFlagServiceContext/featureFlagServiceContext.js";
|
|
3
|
+
import "../../contexts/featureFlagServiceContext/index.js";
|
|
4
|
+
import { fetchGraphQLConfig, fetchUnifiedGraphQLConfig } from "./fetchGraphQLConfig.js";
|
|
3
5
|
|
|
4
6
|
//#region src/services/enviveConfigService/enviveConfigService.ts
|
|
5
7
|
var EnviveConfigService = class {
|
|
@@ -20,13 +22,17 @@ var EnviveConfigService = class {
|
|
|
20
22
|
include_experiments: "default",
|
|
21
23
|
include_feature_gates: Object.values(FeatureGates).map((featureGate) => featureGate.toString()).join(",")
|
|
22
24
|
});
|
|
23
|
-
const
|
|
25
|
+
const orgConfigResponse = await fetch(`${this.baseUrl}/v1/org/config?${queryParams.toString()}`, {
|
|
24
26
|
method: "GET",
|
|
25
27
|
headers: {
|
|
26
28
|
"Content-Type": "application/json",
|
|
27
29
|
Authorization: `Bearer ${this.apiKey}`
|
|
28
30
|
}
|
|
29
|
-
}).then((r) =>
|
|
31
|
+
}).then(async (r) => {
|
|
32
|
+
if (!r.ok) throw new Error(`Org config request failed with status ${r.status}`);
|
|
33
|
+
return r.json();
|
|
34
|
+
});
|
|
35
|
+
const orgConfig = new FeatureFlagService(orgConfigResponse.gates ?? []).isFeatureGateEnabled(FeatureGates.UseUnifiedConfig) ? await fetchUnifiedGraphQLConfig(this.baseUrl, this.apiKey, this.userId) : await fetchGraphQLConfig(this.baseUrl, this.apiKey);
|
|
30
36
|
this.response = {
|
|
31
37
|
...orgConfigResponse,
|
|
32
38
|
orgConfig
|
|
@@ -52,4 +58,4 @@ var MockEnviveConfigService = class {
|
|
|
52
58
|
|
|
53
59
|
//#endregion
|
|
54
60
|
export { EnviveConfigService, MockEnviveConfigService };
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5qcyIsIm5hbWVzIjpbIm1vY2tDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9lbnZpdmVDb25maWdTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50LCBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mZWF0dXJlR2F0ZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnO1xuaW1wb3J0IHsgR3JhcGhRbENvbmZpZ1ZhbHVlcyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dCc7XG5pbXBvcnQgeyBmZXRjaEdyYXBoUUxDb25maWcsIGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcgfSBmcm9tICcuL2ZldGNoR3JhcGhRTENvbmZpZyc7XG5cbnR5cGUgRW52aXZlQ29uZmlnU2VydmljZVByb3BzID0ge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGFwaUtleTogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRW52aXZlU2VydmljZUNvbmZpZyA9IHtcbiAgb3JnOiB7XG4gICAgb3JnOiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgc2hvcnRfbmFtZTogc3RyaW5nO1xuICAgICAgZGlzcGxheV9uYW1lOiBzdHJpbmc7XG4gICAgICBkb21haW46IHN0cmluZztcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgICAgdXBkYXRlZF9hdDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGdhdGVzOiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICAvLyBQb3B1bGF0ZWQgYnkgdGhlIGJhY2tlbmQgd2hlbiB0aGUgYHVzZV91bmlmaWVkX2NvbmZpZ2AgU3RhdHNpZyBnYXRlXG4gIC8vIGV2YWx1YXRlcyB0cnVlLiBhbXBsaXR1ZGVTZXJ2aWNlIHJlYWRzIHRoZXNlIHRvIGVucmljaCBldmVudHMgd2l0aFxuICAvLyBgZXhwZXJpbWVudC57bnN9LipgIHByb3BlcnRpZXMuXG4gIGV4cGVyaW1lbnRfYXNzaWdubWVudHM/OiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdO1xuICAvLyBvcmdDb25maWcucmVzb2x1dGlvbiBpcyBwb3B1bGF0ZWQgb25seSBvbiB0aGUgdW5pZmllZCBwYXRoIChzb3VyY2VkIGZyb21cbiAgLy8gZ2V0V2lkZ2V0Q29uZmlnLnJlc29sdXRpb24sIG5vdCAvdjEvb3JnL2NvbmZpZy5yZXNvbHV0aW9uKSBzbyB0aGUgdmVyc2lvblxuICAvLyB0aHJlYWRlZCBpbnRvIGluZmVyZW5jZSByZXF1ZXN0cyBtYXRjaGVzIHRoZSB2ZXJzaW9uIHRoYXQgcHJvZHVjZWQgdGhlXG4gIC8vIHJlbmRlcmVkIHdpZGdldHMuXG4gIG9yZ0NvbmZpZz86IEdyYXBoUWxDb25maWdWYWx1ZXM7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz47XG59XG5cbmV4cG9ydCBjbGFzcyBFbnZpdmVDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBhcGlLZXk6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlc3BvbnNlOiBFbnZpdmVTZXJ2aWNlQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoeyBiYXNlVXJsLCBhcGlLZXksIHVzZXJJZCwgbmFtZXNwYWNlLCBzb3VyY2UgfTogRW52aXZlQ29uZmlnU2VydmljZVByb3BzKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgICB0aGlzLnVzZXJJZCA9IHVzZXJJZDtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxuXG4gIGFzeW5jIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+IHtcbiAgICBpZiAodGhpcy5yZXNwb25zZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICBuYW1lc3BhY2U6IHRoaXMubmFtZXNwYWNlLFxuICAgICAgc291cmNlOiB0aGlzLnNvdXJjZSxcbiAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcklkLFxuICAgICAgaW5jbHVkZV9leHBlcmltZW50czogJ2RlZmF1bHQnLFxuICAgICAgaW5jbHVkZV9mZWF0dXJlX2dhdGVzOiBPYmplY3QudmFsdWVzKEZlYXR1cmVHYXRlcylcbiAgICAgICAgLm1hcChmZWF0dXJlR2F0ZSA9PiBmZWF0dXJlR2F0ZS50b1N0cmluZygpKVxuICAgICAgICAuam9pbignLCcpLFxuICAgIH0pO1xuICAgIC8vIFNlcmlhbGl6ZWQgc28gd2UgY2FuIGJyYW5jaCB0aGUgR3JhcGhRTCBjYWxsIG9uIHRoZSBgdXNlX3VuaWZpZWRfY29uZmlnYFxuICAgIC8vIGdhdGUgcmV0dXJuZWQgYnkgL3YxL29yZy9jb25maWcuIE9uY2UgdGhlIG1pZ3JhdGlvbiB0byBnZXRXaWRnZXRDb25maWdcbiAgICAvLyBjb21wbGV0ZXMgKG9uZSBlbmRwb2ludCByZXR1cm5pbmcgZ2F0ZXMgKyBleHBlcmltZW50cyArIHByb2R1Y3RzQ29uZmlnKSxcbiAgICAvLyB0aGlzIGNvbGxhcHNlcyBiYWNrIHRvIGEgc2luZ2xlIGNhbGwuXG4gICAgY29uc3Qgb3JnQ29uZmlnUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcbiAgICAgIGAke3RoaXMuYmFzZVVybH0vdjEvb3JnL2NvbmZpZz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXBpS2V5fWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICkudGhlbihhc3luYyByID0+IHtcbiAgICAgIGlmICghci5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9yZyBjb25maWcgcmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtyLnN0YXR1c31gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByLmpzb24oKSBhcyBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+O1xuICAgIH0pO1xuXG4gICAgLy8gSG9ub3IgVVJMIC8gYHdpbmRvdy5fc3BpZmZ5YCAvIGxvY2FsU3RvcmFnZSBvdmVycmlkZXMgZm9yXG4gICAgLy8gYHVzZV91bmlmaWVkX2NvbmZpZ2AgdGhlIHNhbWUgd2F5IGV2ZXJ5IG90aGVyIGZlYXR1cmUgZ2F0ZSBpcyByZWFkLlxuICAgIGNvbnN0IHVzZVVuaWZpZWRDb25maWcgPSBuZXcgRmVhdHVyZUZsYWdTZXJ2aWNlKFxuICAgICAgb3JnQ29uZmlnUmVzcG9uc2UuZ2F0ZXMgPz8gW10sXG4gICAgKS5pc0ZlYXR1cmVHYXRlRW5hYmxlZChGZWF0dXJlR2F0ZXMuVXNlVW5pZmllZENvbmZpZyk7XG4gICAgY29uc3Qgb3JnQ29uZmlnID0gdXNlVW5pZmllZENvbmZpZ1xuICAgICAgPyBhd2FpdCBmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnKHRoaXMuYmFzZVVybCwgdGhpcy5hcGlLZXksIHRoaXMudXNlcklkKVxuICAgICAgOiBhd2FpdCBmZXRjaEdyYXBoUUxDb25maWcodGhpcy5iYXNlVXJsLCB0aGlzLmFwaUtleSk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0geyAuLi5vcmdDb25maWdSZXNwb25zZSwgb3JnQ29uZmlnIH07XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHN0YXRpYyBtb2NrIGRhdGEgZnJvbSBpdHMgY29uc3RydWN0b3IgYXJndW1lbnRzLiBQYXNzZXMgZW1wdHkgYmFzZVVybC9hcGlLZXlcbiAqIHNvIGFueSBjb2RlIGNoZWNraW5nIGlzUmVhZHkgZG9lcyBub3QgZmlyZSByZWFsIG5ldHdvcmsgcmVxdWVzdHMuIFRoZSBvcmdDb25maWcgZmllbGRcbiAqIGNvdmVycyBjb2xvcnMsIGZyb250ZW5kQ29uZmlnLCBhbmQgcGFnZS93aWRnZXQvbW91bnRpbmcgY29uZmlncyB3aXRob3V0IGFueSBuZXR3b3JrIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ja0Vudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcblxuICBwdWJsaWMgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1vY2tDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWcpIHt9XG5cbiAgYXN5bmMgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLm1vY2tDb25maWc7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBNENBLElBQWEsc0JBQWIsTUFBaUU7Q0FhL0QsWUFBWSxFQUFFLFNBQVMsUUFBUSxRQUFRLFdBQVcsVUFBb0M7a0JBRnZDO0FBRzdDLE9BQUssVUFBVTtBQUNmLE9BQUssU0FBUztBQUNkLE9BQUssU0FBUztBQUNkLE9BQUssWUFBWTtBQUNqQixPQUFLLFNBQVM7O0NBR2hCLE1BQU0sa0JBQWdEO0FBQ3BELE1BQUksS0FBSyxhQUFhLEtBQ3BCLFFBQU8sS0FBSztFQUVkLE1BQU0sY0FBYyxJQUFJLGdCQUFnQjtHQUN0QyxXQUFXLEtBQUs7R0FDaEIsUUFBUSxLQUFLO0dBQ2IsU0FBUyxLQUFLO0dBQ2QscUJBQXFCO0dBQ3JCLHVCQUF1QixPQUFPLE9BQU8sYUFBYSxDQUMvQyxLQUFJLGdCQUFlLFlBQVksVUFBVSxDQUFDLENBQzFDLEtBQUssSUFBSTtHQUNiLENBQUM7RUFLRixNQUFNLG9CQUFvQixNQUFNLE1BQzlCLEdBQUcsS0FBSyxRQUFRLGlCQUFpQixZQUFZLFVBQVUsSUFDdkQ7R0FDRSxRQUFRO0dBQ1IsU0FBUztJQUNQLGdCQUFnQjtJQUNoQixlQUFlLFVBQVUsS0FBSztJQUMvQjtHQUNGLENBQ0YsQ0FBQyxLQUFLLE9BQU0sTUFBSztBQUNoQixPQUFJLENBQUMsRUFBRSxHQUNMLE9BQU0sSUFBSSxNQUFNLHlDQUF5QyxFQUFFLFNBQVM7QUFFdEUsVUFBTyxFQUFFLE1BQU07SUFDZjtFQU9GLE1BQU0sWUFIbUIsSUFBSSxtQkFDM0Isa0JBQWtCLFNBQVMsRUFBRSxDQUM5QixDQUFDLHFCQUFxQixhQUFhLGlCQUFpQixHQUVqRCxNQUFNLDBCQUEwQixLQUFLLFNBQVMsS0FBSyxRQUFRLEtBQUssT0FBTyxHQUN2RSxNQUFNLG1CQUFtQixLQUFLLFNBQVMsS0FBSyxPQUFPO0FBRXZELE9BQUssV0FBVztHQUFFLEdBQUc7R0FBbUI7R0FBVztBQUNuRCxTQUFPLEtBQUs7Ozs7Ozs7O0FBU2hCLElBQWEsMEJBQWIsTUFBcUU7Q0FLbkUsWUFBWSxBQUFpQkEsWUFBaUM7RUFBakM7aUJBSks7Z0JBRUQ7O0NBSWpDLE1BQU0sa0JBQWdEO0FBQ3BELFNBQU8sS0FBSyJ9
|