@envive-ai/react-hooks 0.3.58 → 0.3.59
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 +1 -1
- package/dist/application/commerce-api.js +1 -1
- package/dist/application/models/graphql/index.cjs +0 -4
- package/dist/application/models/graphql/index.d.cts +2 -3
- package/dist/application/models/graphql/index.d.ts +2 -3
- package/dist/application/models/graphql/index.js +1 -3
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.d.cts +2 -3
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.d.ts +2 -3
- package/dist/application/models/graphql/queries/getWidgetConfigQuery.cjs +22 -3
- package/dist/application/models/graphql/queries/getWidgetConfigQuery.js +22 -3
- package/dist/application/models/index.cjs +0 -4
- package/dist/application/models/index.d.cts +2 -3
- package/dist/application/models/index.d.ts +2 -3
- package/dist/application/models/index.js +1 -3
- package/dist/application/utils/elementObserver.d.cts +2 -2
- package/dist/application/utils/index.cjs +1 -1
- package/dist/application/utils/index.js +1 -1
- package/dist/atoms/app/index.d.cts +7 -7
- package/dist/atoms/app/index.d.ts +7 -7
- 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 +2 -2
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/messageQueue.d.cts +6 -6
- package/dist/atoms/chat/messageQueue.d.ts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
- package/dist/atoms/chat/replies.d.cts +3 -3
- 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 +14 -14
- 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.cts +1 -1
- package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
- package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
- package/dist/contexts/pageContext/pageContext.cjs +1 -1
- package/dist/contexts/pageContext/pageContext.js +1 -1
- 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/contexts/widgetConfigContext/widgetConfigContext.cjs +22 -31
- package/dist/contexts/widgetConfigContext/widgetConfigContext.js +22 -31
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
- package/dist/hooks/Intersection/useIntersection.cjs +14 -3
- package/dist/hooks/Intersection/useIntersection.js +14 -3
- package/dist/hooks/PageViewedEvent/usePageViewedEvent.cjs +1 -1
- package/dist/hooks/PageViewedEvent/usePageViewedEvent.js +1 -1
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
- package/dist/hooks/utils.d.ts +1 -1
- package/dist/services/enviveConfigService/enviveConfigService.cjs +3 -24
- package/dist/services/enviveConfigService/enviveConfigService.js +4 -25
- package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +59 -54
- package/dist/services/enviveConfigService/fetchGraphQLConfig.js +60 -54
- package/dist/services/hardcopyService/hardcopyService.cjs +1 -1
- package/dist/services/hardcopyService/hardcopyService.js +1 -1
- package/dist/types/config-versions.cjs +1 -3
- package/dist/types/config-versions.js +2 -3
- package/package.json +1 -1
- package/src/application/models/graphql/index.ts +0 -1
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +4 -15
- package/src/application/models/graphql/queries/getWidgetConfigQuery.ts +35 -14
- package/src/application/models/index.ts +0 -1
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +1 -2
- package/src/contexts/pageContext/pageContext.tsx +1 -2
- package/src/contexts/widgetConfigContext/__tests__/widgetConfigContext.test.tsx +52 -0
- package/src/contexts/widgetConfigContext/widgetConfigContext.tsx +39 -36
- package/src/hooks/Intersection/__tests__/useIntersection.test.ts +134 -0
- package/src/hooks/Intersection/useIntersection.ts +20 -4
- package/src/services/enviveConfigService/__tests__/enviveConfigService.test.ts +51 -75
- package/src/services/enviveConfigService/__tests__/fetchGraphQLConfig.test.ts +242 -90
- package/src/services/enviveConfigService/enviveConfigService.ts +15 -41
- package/src/services/enviveConfigService/fetchGraphQLConfig.ts +106 -68
- package/dist/application/models/graphql/queries/getColorsAndFrontendQuery.cjs +0 -18
- package/dist/application/models/graphql/queries/getColorsAndFrontendQuery.js +0 -18
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.cjs +0 -18
- package/dist/application/models/graphql/queries/getMerchantColorsQuery.js +0 -18
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.cjs +0 -18
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.d.cts +0 -75
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.d.ts +0 -75
- package/dist/application/models/graphql/queries/getMerchantFrontendConfigQuery.js +0 -18
- package/src/application/models/graphql/queries/getColorsAndFrontendQuery.ts +0 -13
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +0 -103
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const require_featureGates = require('../../application/models/featureGates.cjs');
|
|
2
2
|
const require_config_versions = require('../../types/config-versions.cjs');
|
|
3
|
-
const require_services_featureFlagService_index = require('../featureFlagService/index.cjs');
|
|
4
3
|
const require_fetchGraphQLConfig = require('./fetchGraphQLConfig.cjs');
|
|
5
4
|
|
|
6
5
|
//#region src/services/enviveConfigService/enviveConfigService.ts
|
|
@@ -46,28 +45,8 @@ var EnviveConfigService = class {
|
|
|
46
45
|
this.response = cached;
|
|
47
46
|
return this.response;
|
|
48
47
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
source: this.source,
|
|
52
|
-
user_id: this.userId,
|
|
53
|
-
include_experiments: "default",
|
|
54
|
-
include_feature_gates: Object.values(require_featureGates.FeatureGates).map((featureGate) => featureGate.toString()).join(",")
|
|
55
|
-
});
|
|
56
|
-
const orgConfigResponse = await fetch(`${this.baseUrl}/v1/org/config?${queryParams.toString()}`, {
|
|
57
|
-
method: "GET",
|
|
58
|
-
headers: {
|
|
59
|
-
"Content-Type": "application/json",
|
|
60
|
-
Authorization: `Bearer ${this.apiKey}`
|
|
61
|
-
}
|
|
62
|
-
}).then(async (r) => {
|
|
63
|
-
if (!r.ok) throw new Error(`Org config request failed with status ${r.status}`);
|
|
64
|
-
return r.json();
|
|
65
|
-
});
|
|
66
|
-
const orgConfig = new require_services_featureFlagService_index.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);
|
|
67
|
-
this.response = {
|
|
68
|
-
...orgConfigResponse,
|
|
69
|
-
orgConfig
|
|
70
|
-
};
|
|
48
|
+
const gateNames = Object.values(require_featureGates.FeatureGates).map((featureGate) => featureGate.toString());
|
|
49
|
+
this.response = await require_fetchGraphQLConfig.fetchUnifiedGraphQLConfig(this.baseUrl, this.apiKey, this.userId, gateNames, this.source);
|
|
71
50
|
this.writeCachedConfig(this.response);
|
|
72
51
|
return this.response;
|
|
73
52
|
}
|
|
@@ -91,4 +70,4 @@ var MockEnviveConfigService = class {
|
|
|
91
70
|
//#endregion
|
|
92
71
|
exports.EnviveConfigService = EnviveConfigService;
|
|
93
72
|
exports.MockEnviveConfigService = MockEnviveConfigService;
|
|
94
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5janMiLCJuYW1lcyI6WyJjb25maWdWZXJzaW9uT3ZlcnJpZGUiLCJlbnRyeTogQ2FjaGVkQ29uZmlnRW50cnkiLCJGZWF0dXJlR2F0ZXMiLCJGZWF0dXJlRmxhZ1NlcnZpY2UiLCJmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIiwiZmV0Y2hHcmFwaFFMQ29uZmlnIiwibW9ja0NvbmZpZzogRW52aXZlU2VydmljZUNvbmZpZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlL2Vudml2ZUNvbmZpZ1NlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQsIE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcyc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvc2VydmljZXMvZmVhdHVyZUZsYWdTZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgR3JhcGhRbENvbmZpZ1ZhbHVlcyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dCc7XG5pbXBvcnQgeyBjb25maWdWZXJzaW9uT3ZlcnJpZGUgfSBmcm9tICdzcmMvdHlwZXMvY29uZmlnLXZlcnNpb25zJztcbmltcG9ydCB7IGZldGNoR3JhcGhRTENvbmZpZywgZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyB9IGZyb20gJy4vZmV0Y2hHcmFwaFFMQ29uZmlnJztcblxuLy8gU2hvcnQtbGl2ZWQgc28gY29uZmlnIGNoYW5nZXMgKGdhdGVzLCBleHBlcmltZW50cykgc3RpbGwgcHJvcGFnYXRlIHdpdGhpblxuLy8gYSBzZXNzaW9uLCB3aGlsZSBzcGFyaW5nIGV2ZXJ5IHBhZ2UgbmF2aWdhdGlvbiBmcm9tIHJlLWZldGNoaW5nIG9yZ1xuLy8gY29uZmlnICsgR3JhcGhRTCBjb25maWcsIGJvdGggb2Ygd2hpY2ggc2l0IG9uIHRoZSBjcml0aWNhbCBwYXRoIGJlZm9yZVxuLy8gZmlyc3QgcGFpbnQuXG5jb25zdCBDT05GSUdfQ0FDSEVfVFRMX01TID0gNSAqIDYwICogMTAwMDtcblxudHlwZSBDYWNoZWRDb25maWdFbnRyeSA9IHtcbiAgdmFsdWU6IEVudml2ZVNlcnZpY2VDb25maWc7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xufTtcblxudHlwZSBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMgPSB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBFbnZpdmVTZXJ2aWNlQ29uZmlnID0ge1xuICBvcmc6IHtcbiAgICBvcmc6IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBzaG9ydF9uYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5X25hbWU6IHN0cmluZztcbiAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgZ2F0ZXM6IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107XG4gIC8vIFBvcHVsYXRlZCBieSB0aGUgYmFja2VuZCB3aGVuIHRoZSBgdXNlX3VuaWZpZWRfY29uZmlnYCBTdGF0c2lnIGdhdGVcbiAgLy8gZXZhbHVhdGVzIHRydWUuIGFtcGxpdHVkZVNlcnZpY2UgcmVhZHMgdGhlc2UgdG8gZW5yaWNoIGV2ZW50cyB3aXRoXG4gIC8vIGBleHBlcmltZW50Lntuc30uKmAgcHJvcGVydGllcy5cbiAgZXhwZXJpbWVudF9hc3NpZ25tZW50cz86IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W107XG4gIC8vIG9yZ0NvbmZpZy5yZXNvbHV0aW9uIGlzIHBvcHVsYXRlZCBvbmx5IG9uIHRoZSB1bmlmaWVkIHBhdGggKHNvdXJjZWQgZnJvbVxuICAvLyBnZXRXaWRnZXRDb25maWcucmVzb2x1dGlvbiwgbm90IC92MS9vcmcvY29uZmlnLnJlc29sdXRpb24pIHNvIHRoZSB2ZXJzaW9uXG4gIC8vIHRocmVhZGVkIGludG8gaW5mZXJlbmNlIHJlcXVlc3RzIG1hdGNoZXMgdGhlIHZlcnNpb24gdGhhdCBwcm9kdWNlZCB0aGVcbiAgLy8gcmVuZGVyZWQgd2lkZ2V0cy5cbiAgb3JnQ29uZmlnPzogR3JhcGhRbENvbmZpZ1ZhbHVlcztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGNsYXNzIEVudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVzcG9uc2U6IEVudml2ZVNlcnZpY2VDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcih7IGJhc2VVcmwsIGFwaUtleSwgdXNlcklkLCBuYW1lc3BhY2UsIHNvdXJjZSB9OiBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMpIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMudXNlcklkID0gdXNlcklkO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWNoZUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgZW52aXZlLWNvbmZpZy1jYWNoZToke3RoaXMuYmFzZVVybH06JHt0aGlzLmFwaUtleX06JHt0aGlzLnVzZXJJZH06JHt0aGlzLm5hbWVzcGFjZX06JHt0aGlzLnNvdXJjZX1gO1xuICB9XG5cbiAgLy8gYGVudml2ZV9jb25maWdfdmVyc2lvbmAgLyBgc3BpZmZ5X2NvbmZpZ192ZXJzaW9uYCBwaW4gYSBzcGVjaWZpYyBjb25maWdcbiAgLy8gdmVyc2lvbiBmb3IgZGVidWdnaW5nL3JvbGxiYWNrLiBBbnkgdXNlIG9mIHRoYXQgb3ZlcnJpZGUgbXVzdCBhbHdheXNcbiAgLy8gYnlwYXNzIHRoZSBjYWNoZSBiZWxvdyDigJQgYm90aCByZWFkaW5nIGEgc3RhbGUgZW50cnkgYW5kIHdyaXRpbmcgb25lXG4gIC8vIHVuZGVyIHRoZSBzaGFyZWQga2V5IHdvdWxkIGRlZmVhdCB0aGUgb3ZlcnJpZGUncyBwdXJwb3NlLlxuICBwcml2YXRlIHJlYWRDYWNoZWRDb25maWcoKTogRW52aXZlU2VydmljZUNvbmZpZyB8IG51bGwge1xuICAgIGlmIChjb25maWdWZXJzaW9uT3ZlcnJpZGUoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuZ2V0Q2FjaGVLZXkoKSk7XG4gICAgICBpZiAoIXJhdykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5ID0gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlZENvbmZpZ0VudHJ5O1xuICAgICAgaWYgKERhdGUubm93KCkgPj0gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZUNhY2hlZENvbmZpZyh2YWx1ZTogRW52aXZlU2VydmljZUNvbmZpZyk6IHZvaWQge1xuICAgIGlmIChjb25maWdWZXJzaW9uT3ZlcnJpZGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cnk6IENhY2hlZENvbmZpZ0VudHJ5ID0geyB2YWx1ZSwgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgQ09ORklHX0NBQ0hFX1RUTF9NUyB9O1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmdldENhY2hlS2V5KCksIEpTT04uc3RyaW5naWZ5KGVudHJ5KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTdG9yYWdlIGRpc2FibGVkLCBmdWxsLCBvciB1bmF2YWlsYWJsZSAocHJpdmF0ZSBicm93c2luZywgZXRjLikgLVxuICAgICAgLy8gZmFpbCBvcGVuIGFuZCBsZXQgdGhlIG5leHQgY2FsbCByZS1mZXRjaCBpbnN0ZWFkIG9mIGNhY2hpbmcuXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz4ge1xuICAgIGlmICh0aGlzLnJlc3BvbnNlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnJlYWRDYWNoZWRDb25maWcoKTtcbiAgICBpZiAoY2FjaGVkICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJlc3BvbnNlID0gY2FjaGVkO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIG5hbWVzcGFjZTogdGhpcy5uYW1lc3BhY2UsXG4gICAgICBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgdXNlcl9pZDogdGhpcy51c2VySWQsXG4gICAgICBpbmNsdWRlX2V4cGVyaW1lbnRzOiAnZGVmYXVsdCcsXG4gICAgICBpbmNsdWRlX2ZlYXR1cmVfZ2F0ZXM6IE9iamVjdC52YWx1ZXMoRmVhdHVyZUdhdGVzKVxuICAgICAgICAubWFwKGZlYXR1cmVHYXRlID0+IGZlYXR1cmVHYXRlLnRvU3RyaW5nKCkpXG4gICAgICAgIC5qb2luKCcsJyksXG4gICAgfSk7XG4gICAgLy8gU2VyaWFsaXplZCBzbyB3ZSBjYW4gYnJhbmNoIHRoZSBHcmFwaFFMIGNhbGwgb24gdGhlIGB1c2VfdW5pZmllZF9jb25maWdgXG4gICAgLy8gZ2F0ZSByZXR1cm5lZCBieSAvdjEvb3JnL2NvbmZpZy4gT25jZSB0aGUgbWlncmF0aW9uIHRvIGdldFdpZGdldENvbmZpZ1xuICAgIC8vIGNvbXBsZXRlcyAob25lIGVuZHBvaW50IHJldHVybmluZyBnYXRlcyArIGV4cGVyaW1lbnRzICsgcHJvZHVjdHNDb25maWcpLFxuICAgIC8vIHRoaXMgY29sbGFwc2VzIGJhY2sgdG8gYSBzaW5nbGUgY2FsbC5cbiAgICBjb25zdCBvcmdDb25maWdSZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS92MS9vcmcvY29uZmlnPyR7cXVlcnlQYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hcGlLZXl9YCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKS50aGVuKGFzeW5jIHIgPT4ge1xuICAgICAgaWYgKCFyLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3JnIGNvbmZpZyByZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyAke3Iuc3RhdHVzfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIuanNvbigpIGFzIFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz47XG4gICAgfSk7XG5cbiAgICAvLyBIb25vciBVUkwgLyBgd2luZG93Ll9zcGlmZnlgIC8gbG9jYWxTdG9yYWdlIG92ZXJyaWRlcyBmb3JcbiAgICAvLyBgdXNlX3VuaWZpZWRfY29uZmlnYCB0aGUgc2FtZSB3YXkgZXZlcnkgb3RoZXIgZmVhdHVyZSBnYXRlIGlzIHJlYWQuXG4gICAgY29uc3QgdXNlVW5pZmllZENvbmZpZyA9IG5ldyBGZWF0dXJlRmxhZ1NlcnZpY2UoXG4gICAgICBvcmdDb25maWdSZXNwb25zZS5nYXRlcyA/PyBbXSxcbiAgICApLmlzRmVhdHVyZUdhdGVFbmFibGVkKEZlYXR1cmVHYXRlcy5Vc2VVbmlmaWVkQ29uZmlnKTtcbiAgICBjb25zdCBvcmdDb25maWcgPSB1c2VVbmlmaWVkQ29uZmlnXG4gICAgICA/IGF3YWl0IGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcodGhpcy5iYXNlVXJsLCB0aGlzLmFwaUtleSwgdGhpcy51c2VySWQpXG4gICAgICA6IGF3YWl0IGZldGNoR3JhcGhRTENvbmZpZyh0aGlzLmJhc2VVcmwsIHRoaXMuYXBpS2V5KTtcblxuICAgIHRoaXMucmVzcG9uc2UgPSB7IC4uLm9yZ0NvbmZpZ1Jlc3BvbnNlLCBvcmdDb25maWcgfTtcbiAgICB0aGlzLndyaXRlQ2FjaGVkQ29uZmlnKHRoaXMucmVzcG9uc2UpO1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBzdGF0aWMgbW9jayBkYXRhIGZyb20gaXRzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4gUGFzc2VzIGVtcHR5IGJhc2VVcmwvYXBpS2V5XG4gKiBzbyBhbnkgY29kZSBjaGVja2luZyBpc1JlYWR5IGRvZXMgbm90IGZpcmUgcmVhbCBuZXR3b3JrIHJlcXVlc3RzLiBUaGUgb3JnQ29uZmlnIGZpZWxkXG4gKiBjb3ZlcnMgY29sb3JzLCBmcm9udGVuZENvbmZpZywgYW5kIHBhZ2Uvd2lkZ2V0L21vdW50aW5nIGNvbmZpZ3Mgd2l0aG91dCBhbnkgbmV0d29yayBjYWxscy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vY2tFbnZpdmVDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nID0gJyc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtb2NrQ29uZmlnOiBFbnZpdmVTZXJ2aWNlQ29uZmlnKSB7fVxuXG4gIGFzeW5jIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5tb2NrQ29uZmlnO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVdBLE1BQU0sc0JBQXNCLE1BQVM7QUE2Q3JDLElBQWEsc0JBQWIsTUFBaUU7Q0FhL0QsWUFBWSxFQUFFLFNBQVMsUUFBUSxRQUFRLFdBQVcsVUFBb0M7a0JBRnZDO0FBRzdDLE9BQUssVUFBVTtBQUNmLE9BQUssU0FBUztBQUNkLE9BQUssU0FBUztBQUNkLE9BQUssWUFBWTtBQUNqQixPQUFLLFNBQVM7O0NBR2hCLEFBQVEsY0FBc0I7QUFDNUIsU0FBTyx1QkFBdUIsS0FBSyxRQUFRLEdBQUcsS0FBSyxPQUFPLEdBQUcsS0FBSyxPQUFPLEdBQUcsS0FBSyxVQUFVLEdBQUcsS0FBSzs7Q0FPckcsQUFBUSxtQkFBK0M7QUFDckQsTUFBSUEsK0NBQXVCLENBQ3pCLFFBQU87QUFFVCxNQUFJO0dBQ0YsTUFBTSxNQUFNLGVBQWUsUUFBUSxLQUFLLGFBQWEsQ0FBQztBQUN0RCxPQUFJLENBQUMsSUFDSCxRQUFPO0dBRVQsTUFBTSxRQUFRLEtBQUssTUFBTSxJQUFJO0FBQzdCLE9BQUksS0FBSyxLQUFLLElBQUksTUFBTSxVQUN0QixRQUFPO0FBRVQsVUFBTyxNQUFNO1VBQ1A7QUFDTixVQUFPOzs7Q0FJWCxBQUFRLGtCQUFrQixPQUFrQztBQUMxRCxNQUFJQSwrQ0FBdUIsQ0FDekI7QUFFRixNQUFJO0dBQ0YsTUFBTUMsUUFBMkI7SUFBRTtJQUFPLFdBQVcsS0FBSyxLQUFLLEdBQUc7SUFBcUI7QUFDdkYsa0JBQWUsUUFBUSxLQUFLLGFBQWEsRUFBRSxLQUFLLFVBQVUsTUFBTSxDQUFDO1VBQzNEOztDQU1WLE1BQU0sa0JBQWdEO0FBQ3BELE1BQUksS0FBSyxhQUFhLEtBQ3BCLFFBQU8sS0FBSztFQUdkLE1BQU0sU0FBUyxLQUFLLGtCQUFrQjtBQUN0QyxNQUFJLFdBQVcsTUFBTTtBQUNuQixRQUFLLFdBQVc7QUFDaEIsVUFBTyxLQUFLOztFQUdkLE1BQU0sY0FBYyxJQUFJLGdCQUFnQjtHQUN0QyxXQUFXLEtBQUs7R0FDaEIsUUFBUSxLQUFLO0dBQ2IsU0FBUyxLQUFLO0dBQ2QscUJBQXFCO0dBQ3JCLHVCQUF1QixPQUFPLE9BQU9DLGtDQUFhLENBQy9DLEtBQUksZ0JBQWUsWUFBWSxVQUFVLENBQUMsQ0FDMUMsS0FBSyxJQUFJO0dBQ2IsQ0FBQztFQUtGLE1BQU0sb0JBQW9CLE1BQU0sTUFDOUIsR0FBRyxLQUFLLFFBQVEsaUJBQWlCLFlBQVksVUFBVSxJQUN2RDtHQUNFLFFBQVE7R0FDUixTQUFTO0lBQ1AsZ0JBQWdCO0lBQ2hCLGVBQWUsVUFBVSxLQUFLO0lBQy9CO0dBQ0YsQ0FDRixDQUFDLEtBQUssT0FBTSxNQUFLO0FBQ2hCLE9BQUksQ0FBQyxFQUFFLEdBQ0wsT0FBTSxJQUFJLE1BQU0seUNBQXlDLEVBQUUsU0FBUztBQUV0RSxVQUFPLEVBQUUsTUFBTTtJQUNmO0VBT0YsTUFBTSxZQUhtQixJQUFJQyw2REFDM0Isa0JBQWtCLFNBQVMsRUFBRSxDQUM5QixDQUFDLHFCQUFxQkQsa0NBQWEsaUJBQWlCLEdBRWpELE1BQU1FLHFEQUEwQixLQUFLLFNBQVMsS0FBSyxRQUFRLEtBQUssT0FBTyxHQUN2RSxNQUFNQyw4Q0FBbUIsS0FBSyxTQUFTLEtBQUssT0FBTztBQUV2RCxPQUFLLFdBQVc7R0FBRSxHQUFHO0dBQW1CO0dBQVc7QUFDbkQsT0FBSyxrQkFBa0IsS0FBSyxTQUFTO0FBQ3JDLFNBQU8sS0FBSzs7Ozs7Ozs7QUFTaEIsSUFBYSwwQkFBYixNQUFxRTtDQUtuRSxZQUFZLEFBQWlCQyxZQUFpQztFQUFqQztpQkFKSztnQkFFRDs7Q0FJakMsTUFBTSxrQkFBZ0Q7QUFDcEQsU0FBTyxLQUFLIn0=
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5janMiLCJuYW1lcyI6WyJjb25maWdWZXJzaW9uT3ZlcnJpZGUiLCJlbnRyeTogQ2FjaGVkQ29uZmlnRW50cnkiLCJGZWF0dXJlR2F0ZXMiLCJmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIiwibW9ja0NvbmZpZzogRW52aXZlU2VydmljZUNvbmZpZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlL2Vudml2ZUNvbmZpZ1NlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnQsIE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBoUWxDb25maWdWYWx1ZXMgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQnO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbk92ZXJyaWRlIH0gZnJvbSAnc3JjL3R5cGVzL2NvbmZpZy12ZXJzaW9ucyc7XG5pbXBvcnQgeyBmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIH0gZnJvbSAnLi9mZXRjaEdyYXBoUUxDb25maWcnO1xuXG4vLyBTaG9ydC1saXZlZCBzbyBjb25maWcgY2hhbmdlcyAoZ2F0ZXMsIGV4cGVyaW1lbnRzKSBzdGlsbCBwcm9wYWdhdGUgd2l0aGluXG4vLyBhIHNlc3Npb24sIHdoaWxlIHNwYXJpbmcgZXZlcnkgcGFnZSBuYXZpZ2F0aW9uIGZyb20gcmUtZmV0Y2hpbmcgb3JnXG4vLyBjb25maWcgKyBHcmFwaFFMIGNvbmZpZywgYm90aCBvZiB3aGljaCBzaXQgb24gdGhlIGNyaXRpY2FsIHBhdGggYmVmb3JlXG4vLyBmaXJzdCBwYWludC5cbmNvbnN0IENPTkZJR19DQUNIRV9UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuXG50eXBlIENhY2hlZENvbmZpZ0VudHJ5ID0ge1xuICB2YWx1ZTogRW52aXZlU2VydmljZUNvbmZpZztcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG59O1xuXG50eXBlIEVudml2ZUNvbmZpZ1NlcnZpY2VQcm9wcyA9IHtcbiAgYmFzZVVybDogc3RyaW5nO1xuICBhcGlLZXk6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEVudml2ZVNlcnZpY2VDb25maWcgPSB7XG4gIG9yZzoge1xuICAgIG9yZzoge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIHNob3J0X25hbWU6IHN0cmluZztcbiAgICAgIGRpc3BsYXlfbmFtZTogc3RyaW5nO1xuICAgICAgZG9tYWluOiBzdHJpbmc7XG4gICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICAgIHVwZGF0ZWRfYXQ6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBnYXRlczogT3JnQ29uZmlnRmVhdHVyZUdhdGVbXTtcbiAgLy8gUG9wdWxhdGVkIGJ5IHRoZSBiYWNrZW5kIHdoZW4gdGhlIGB1c2VfdW5pZmllZF9jb25maWdgIFN0YXRzaWcgZ2F0ZVxuICAvLyBldmFsdWF0ZXMgdHJ1ZS4gYW1wbGl0dWRlU2VydmljZSByZWFkcyB0aGVzZSB0byBlbnJpY2ggZXZlbnRzIHdpdGhcbiAgLy8gYGV4cGVyaW1lbnQue25zfS4qYCBwcm9wZXJ0aWVzLlxuICBleHBlcmltZW50X2Fzc2lnbm1lbnRzPzogT3JnQ29uZmlnRXhwZXJpbWVudEFzc2lnbm1lbnRbXTtcbiAgLy8gb3JnQ29uZmlnLnJlc29sdXRpb24gaXMgcG9wdWxhdGVkIG9ubHkgb24gdGhlIHVuaWZpZWQgcGF0aCAoc291cmNlZCBmcm9tXG4gIC8vIGdldFdpZGdldENvbmZpZy5yZXNvbHV0aW9uLCBub3QgL3YxL29yZy9jb25maWcucmVzb2x1dGlvbikgc28gdGhlIHZlcnNpb25cbiAgLy8gdGhyZWFkZWQgaW50byBpbmZlcmVuY2UgcmVxdWVzdHMgbWF0Y2hlcyB0aGUgdmVyc2lvbiB0aGF0IHByb2R1Y2VkIHRoZVxuICAvLyByZW5kZXJlZCB3aWRnZXRzLlxuICBvcmdDb25maWc/OiBHcmFwaFFsQ29uZmlnVmFsdWVzO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG4gIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+O1xufVxuXG5leHBvcnQgY2xhc3MgRW52aXZlQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB1c2VySWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZXNwb25zZTogRW52aXZlU2VydmljZUNvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHsgYmFzZVVybCwgYXBpS2V5LCB1c2VySWQsIG5hbWVzcGFjZSwgc291cmNlIH06IEVudml2ZUNvbmZpZ1NlcnZpY2VQcm9wcykge1xuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5hcGlLZXkgPSBhcGlLZXk7XG4gICAgdGhpcy51c2VySWQgPSB1c2VySWQ7XG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICBwcml2YXRlIGdldENhY2hlS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBlbnZpdmUtY29uZmlnLWNhY2hlOiR7dGhpcy5iYXNlVXJsfToke3RoaXMuYXBpS2V5fToke3RoaXMudXNlcklkfToke3RoaXMubmFtZXNwYWNlfToke3RoaXMuc291cmNlfWA7XG4gIH1cblxuICAvLyBgZW52aXZlX2NvbmZpZ192ZXJzaW9uYCAvIGBzcGlmZnlfY29uZmlnX3ZlcnNpb25gIHBpbiBhIHNwZWNpZmljIGNvbmZpZ1xuICAvLyB2ZXJzaW9uIGZvciBkZWJ1Z2dpbmcvcm9sbGJhY2suIEFueSB1c2Ugb2YgdGhhdCBvdmVycmlkZSBtdXN0IGFsd2F5c1xuICAvLyBieXBhc3MgdGhlIGNhY2hlIGJlbG93IOKAlCBib3RoIHJlYWRpbmcgYSBzdGFsZSBlbnRyeSBhbmQgd3JpdGluZyBvbmVcbiAgLy8gdW5kZXIgdGhlIHNoYXJlZCBrZXkgd291bGQgZGVmZWF0IHRoZSBvdmVycmlkZSdzIHB1cnBvc2UuXG4gIHByaXZhdGUgcmVhZENhY2hlZENvbmZpZygpOiBFbnZpdmVTZXJ2aWNlQ29uZmlnIHwgbnVsbCB7XG4gICAgaWYgKGNvbmZpZ1ZlcnNpb25PdmVycmlkZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5nZXRDYWNoZUtleSgpKTtcbiAgICAgIGlmICghcmF3KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZW50cnkgPSBKU09OLnBhcnNlKHJhdykgYXMgQ2FjaGVkQ29uZmlnRW50cnk7XG4gICAgICBpZiAoRGF0ZS5ub3coKSA+PSBlbnRyeS5leHBpcmVzQXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gZW50cnkudmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlQ2FjaGVkQ29uZmlnKHZhbHVlOiBFbnZpdmVTZXJ2aWNlQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKGNvbmZpZ1ZlcnNpb25PdmVycmlkZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRyeTogQ2FjaGVkQ29uZmlnRW50cnkgPSB7IHZhbHVlLCBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBDT05GSUdfQ0FDSEVfVFRMX01TIH07XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuZ2V0Q2FjaGVLZXkoKSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFN0b3JhZ2UgZGlzYWJsZWQsIGZ1bGwsIG9yIHVuYXZhaWxhYmxlIChwcml2YXRlIGJyb3dzaW5nLCBldGMuKSAtXG4gICAgICAvLyBmYWlsIG9wZW4gYW5kIGxldCB0aGUgbmV4dCBjYWxsIHJlLWZldGNoIGluc3RlYWQgb2YgY2FjaGluZy5cbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPiB7XG4gICAgaWYgKHRoaXMucmVzcG9uc2UgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucmVhZENhY2hlZENvbmZpZygpO1xuICAgIGlmIChjYWNoZWQgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSBjYWNoZWQ7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICB9XG5cbiAgICAvLyBnZXRXaWRnZXRDb25maWcgaXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2Ygc2Vzc2lvbiBjb25maWc6IGl0IHJldHVybnMgb3JnXG4gICAgLy8gaWRlbnRpdHkgKyBmZWF0dXJlIGdhdGVzICsgZXhwZXJpbWVudCBhc3NpZ25tZW50cyAod2hpY2ggdXNlZCB0byBiZSBhXG4gICAgLy8gc2VwYXJhdGUgR0VUIC92MS9vcmcvY29uZmlnIGNhbGwpIGFsb25nc2lkZSBwcm9kdWN0c0NvbmZpZyArIHRoZVxuICAgIC8vIHJlc29sdXRpb24gbWV0YWRhdGEgdGhyZWFkZWQgaW50byBkb3duc3RyZWFtIGluZmVyZW5jZS4gYGdhdGVOYW1lc2AgaXMgdGhlXG4gICAgLy8gbGlzdCBvZiBnYXRlcyB0aGUgYXBwIGNoZWNrcywgc28gdGhlIHJlc29sdmVyIGV2YWx1YXRlcyBhbmQgcmV0dXJucyB0aGVtLlxuICAgIGNvbnN0IGdhdGVOYW1lcyA9IE9iamVjdC52YWx1ZXMoRmVhdHVyZUdhdGVzKS5tYXAoZmVhdHVyZUdhdGUgPT4gZmVhdHVyZUdhdGUudG9TdHJpbmcoKSk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0gYXdhaXQgZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyhcbiAgICAgIHRoaXMuYmFzZVVybCxcbiAgICAgIHRoaXMuYXBpS2V5LFxuICAgICAgdGhpcy51c2VySWQsXG4gICAgICBnYXRlTmFtZXMsXG4gICAgICB0aGlzLnNvdXJjZSxcbiAgICApO1xuICAgIHRoaXMud3JpdGVDYWNoZWRDb25maWcodGhpcy5yZXNwb25zZSk7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHN0YXRpYyBtb2NrIGRhdGEgZnJvbSBpdHMgY29uc3RydWN0b3IgYXJndW1lbnRzLiBQYXNzZXMgZW1wdHkgYmFzZVVybC9hcGlLZXlcbiAqIHNvIGFueSBjb2RlIGNoZWNraW5nIGlzUmVhZHkgZG9lcyBub3QgZmlyZSByZWFsIG5ldHdvcmsgcmVxdWVzdHMuIFRoZSBvcmdDb25maWcgZmllbGRcbiAqIGNvdmVycyBjb2xvcnMsIGZyb250ZW5kQ29uZmlnLCBhbmQgcGFnZS93aWRnZXQvbW91bnRpbmcgY29uZmlncyB3aXRob3V0IGFueSBuZXR3b3JrIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ja0Vudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcblxuICBwdWJsaWMgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1vY2tDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWcpIHt9XG5cbiAgYXN5bmMgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLm1vY2tDb25maWc7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxNQUFNLHNCQUFzQixNQUFTO0FBNkNyQyxJQUFhLHNCQUFiLE1BQWlFO0NBYS9ELFlBQVksRUFBRSxTQUFTLFFBQVEsUUFBUSxXQUFXLFVBQW9DO2tCQUZ2QztBQUc3QyxPQUFLLFVBQVU7QUFDZixPQUFLLFNBQVM7QUFDZCxPQUFLLFNBQVM7QUFDZCxPQUFLLFlBQVk7QUFDakIsT0FBSyxTQUFTOztDQUdoQixBQUFRLGNBQXNCO0FBQzVCLFNBQU8sdUJBQXVCLEtBQUssUUFBUSxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssVUFBVSxHQUFHLEtBQUs7O0NBT3JHLEFBQVEsbUJBQStDO0FBQ3JELE1BQUlBLCtDQUF1QixDQUN6QixRQUFPO0FBRVQsTUFBSTtHQUNGLE1BQU0sTUFBTSxlQUFlLFFBQVEsS0FBSyxhQUFhLENBQUM7QUFDdEQsT0FBSSxDQUFDLElBQ0gsUUFBTztHQUVULE1BQU0sUUFBUSxLQUFLLE1BQU0sSUFBSTtBQUM3QixPQUFJLEtBQUssS0FBSyxJQUFJLE1BQU0sVUFDdEIsUUFBTztBQUVULFVBQU8sTUFBTTtVQUNQO0FBQ04sVUFBTzs7O0NBSVgsQUFBUSxrQkFBa0IsT0FBa0M7QUFDMUQsTUFBSUEsK0NBQXVCLENBQ3pCO0FBRUYsTUFBSTtHQUNGLE1BQU1DLFFBQTJCO0lBQUU7SUFBTyxXQUFXLEtBQUssS0FBSyxHQUFHO0lBQXFCO0FBQ3ZGLGtCQUFlLFFBQVEsS0FBSyxhQUFhLEVBQUUsS0FBSyxVQUFVLE1BQU0sQ0FBQztVQUMzRDs7Q0FNVixNQUFNLGtCQUFnRDtBQUNwRCxNQUFJLEtBQUssYUFBYSxLQUNwQixRQUFPLEtBQUs7RUFHZCxNQUFNLFNBQVMsS0FBSyxrQkFBa0I7QUFDdEMsTUFBSSxXQUFXLE1BQU07QUFDbkIsUUFBSyxXQUFXO0FBQ2hCLFVBQU8sS0FBSzs7RUFRZCxNQUFNLFlBQVksT0FBTyxPQUFPQyxrQ0FBYSxDQUFDLEtBQUksZ0JBQWUsWUFBWSxVQUFVLENBQUM7QUFFeEYsT0FBSyxXQUFXLE1BQU1DLHFEQUNwQixLQUFLLFNBQ0wsS0FBSyxRQUNMLEtBQUssUUFDTCxXQUNBLEtBQUssT0FDTjtBQUNELE9BQUssa0JBQWtCLEtBQUssU0FBUztBQUNyQyxTQUFPLEtBQUs7Ozs7Ozs7O0FBU2hCLElBQWEsMEJBQWIsTUFBcUU7Q0FLbkUsWUFBWSxBQUFpQkMsWUFBaUM7RUFBakM7aUJBSks7Z0JBRUQ7O0NBSWpDLE1BQU0sa0JBQWdEO0FBQ3BELFNBQU8sS0FBSyJ9
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { FeatureGates } from "../../application/models/featureGates.js";
|
|
2
2
|
import { configVersionOverride } from "../../types/config-versions.js";
|
|
3
|
-
import {
|
|
4
|
-
import { fetchGraphQLConfig, fetchUnifiedGraphQLConfig } from "./fetchGraphQLConfig.js";
|
|
3
|
+
import { fetchUnifiedGraphQLConfig } from "./fetchGraphQLConfig.js";
|
|
5
4
|
|
|
6
5
|
//#region src/services/enviveConfigService/enviveConfigService.ts
|
|
7
6
|
const CONFIG_CACHE_TTL_MS = 300 * 1e3;
|
|
@@ -46,28 +45,8 @@ var EnviveConfigService = class {
|
|
|
46
45
|
this.response = cached;
|
|
47
46
|
return this.response;
|
|
48
47
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
source: this.source,
|
|
52
|
-
user_id: this.userId,
|
|
53
|
-
include_experiments: "default",
|
|
54
|
-
include_feature_gates: Object.values(FeatureGates).map((featureGate) => featureGate.toString()).join(",")
|
|
55
|
-
});
|
|
56
|
-
const orgConfigResponse = await fetch(`${this.baseUrl}/v1/org/config?${queryParams.toString()}`, {
|
|
57
|
-
method: "GET",
|
|
58
|
-
headers: {
|
|
59
|
-
"Content-Type": "application/json",
|
|
60
|
-
Authorization: `Bearer ${this.apiKey}`
|
|
61
|
-
}
|
|
62
|
-
}).then(async (r) => {
|
|
63
|
-
if (!r.ok) throw new Error(`Org config request failed with status ${r.status}`);
|
|
64
|
-
return r.json();
|
|
65
|
-
});
|
|
66
|
-
const orgConfig = new FeatureFlagService(orgConfigResponse.gates ?? []).isFeatureGateEnabled(FeatureGates.UseUnifiedConfig) ? await fetchUnifiedGraphQLConfig(this.baseUrl, this.apiKey, this.userId) : await fetchGraphQLConfig(this.baseUrl, this.apiKey);
|
|
67
|
-
this.response = {
|
|
68
|
-
...orgConfigResponse,
|
|
69
|
-
orgConfig
|
|
70
|
-
};
|
|
48
|
+
const gateNames = Object.values(FeatureGates).map((featureGate) => featureGate.toString());
|
|
49
|
+
this.response = await fetchUnifiedGraphQLConfig(this.baseUrl, this.apiKey, this.userId, gateNames, this.source);
|
|
71
50
|
this.writeCachedConfig(this.response);
|
|
72
51
|
return this.response;
|
|
73
52
|
}
|
|
@@ -90,4 +69,4 @@ var MockEnviveConfigService = class {
|
|
|
90
69
|
|
|
91
70
|
//#endregion
|
|
92
71
|
export { EnviveConfigService, MockEnviveConfigService };
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5qcyIsIm5hbWVzIjpbImVudHJ5OiBDYWNoZWRDb25maWdFbnRyeSIsIm1vY2tDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9lbnZpdmVDb25maWdTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50LCBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mZWF0dXJlR2F0ZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2ZlYXR1cmVGbGFnU2VydmljZSc7XG5pbXBvcnQgdHlwZSB7IEdyYXBoUWxDb25maWdWYWx1ZXMgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQnO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbk92ZXJyaWRlIH0gZnJvbSAnc3JjL3R5cGVzL2NvbmZpZy12ZXJzaW9ucyc7XG5pbXBvcnQgeyBmZXRjaEdyYXBoUUxDb25maWcsIGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcgfSBmcm9tICcuL2ZldGNoR3JhcGhRTENvbmZpZyc7XG5cbi8vIFNob3J0LWxpdmVkIHNvIGNvbmZpZyBjaGFuZ2VzIChnYXRlcywgZXhwZXJpbWVudHMpIHN0aWxsIHByb3BhZ2F0ZSB3aXRoaW5cbi8vIGEgc2Vzc2lvbiwgd2hpbGUgc3BhcmluZyBldmVyeSBwYWdlIG5hdmlnYXRpb24gZnJvbSByZS1mZXRjaGluZyBvcmdcbi8vIGNvbmZpZyArIEdyYXBoUUwgY29uZmlnLCBib3RoIG9mIHdoaWNoIHNpdCBvbiB0aGUgY3JpdGljYWwgcGF0aCBiZWZvcmVcbi8vIGZpcnN0IHBhaW50LlxuY29uc3QgQ09ORklHX0NBQ0hFX1RUTF9NUyA9IDUgKiA2MCAqIDEwMDA7XG5cbnR5cGUgQ2FjaGVkQ29uZmlnRW50cnkgPSB7XG4gIHZhbHVlOiBFbnZpdmVTZXJ2aWNlQ29uZmlnO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbn07XG5cbnR5cGUgRW52aXZlQ29uZmlnU2VydmljZVByb3BzID0ge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIGFwaUtleTogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRW52aXZlU2VydmljZUNvbmZpZyA9IHtcbiAgb3JnOiB7XG4gICAgb3JnOiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgc2hvcnRfbmFtZTogc3RyaW5nO1xuICAgICAgZGlzcGxheV9uYW1lOiBzdHJpbmc7XG4gICAgICBkb21haW46IHN0cmluZztcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgICAgdXBkYXRlZF9hdDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGdhdGVzOiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICAvLyBQb3B1bGF0ZWQgYnkgdGhlIGJhY2tlbmQgd2hlbiB0aGUgYHVzZV91bmlmaWVkX2NvbmZpZ2AgU3RhdHNpZyBnYXRlXG4gIC8vIGV2YWx1YXRlcyB0cnVlLiBhbXBsaXR1ZGVTZXJ2aWNlIHJlYWRzIHRoZXNlIHRvIGVucmljaCBldmVudHMgd2l0aFxuICAvLyBgZXhwZXJpbWVudC57bnN9LipgIHByb3BlcnRpZXMuXG4gIGV4cGVyaW1lbnRfYXNzaWdubWVudHM/OiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdO1xuICAvLyBvcmdDb25maWcucmVzb2x1dGlvbiBpcyBwb3B1bGF0ZWQgb25seSBvbiB0aGUgdW5pZmllZCBwYXRoIChzb3VyY2VkIGZyb21cbiAgLy8gZ2V0V2lkZ2V0Q29uZmlnLnJlc29sdXRpb24sIG5vdCAvdjEvb3JnL2NvbmZpZy5yZXNvbHV0aW9uKSBzbyB0aGUgdmVyc2lvblxuICAvLyB0aHJlYWRlZCBpbnRvIGluZmVyZW5jZSByZXF1ZXN0cyBtYXRjaGVzIHRoZSB2ZXJzaW9uIHRoYXQgcHJvZHVjZWQgdGhlXG4gIC8vIHJlbmRlcmVkIHdpZGdldHMuXG4gIG9yZ0NvbmZpZz86IEdyYXBoUWxDb25maWdWYWx1ZXM7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbiAgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz47XG59XG5cbmV4cG9ydCBjbGFzcyBFbnZpdmVDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBhcGlLZXk6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlc3BvbnNlOiBFbnZpdmVTZXJ2aWNlQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoeyBiYXNlVXJsLCBhcGlLZXksIHVzZXJJZCwgbmFtZXNwYWNlLCBzb3VyY2UgfTogRW52aXZlQ29uZmlnU2VydmljZVByb3BzKSB7XG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgICB0aGlzLnVzZXJJZCA9IHVzZXJJZDtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FjaGVLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGVudml2ZS1jb25maWctY2FjaGU6JHt0aGlzLmJhc2VVcmx9OiR7dGhpcy5hcGlLZXl9OiR7dGhpcy51c2VySWR9OiR7dGhpcy5uYW1lc3BhY2V9OiR7dGhpcy5zb3VyY2V9YDtcbiAgfVxuXG4gIC8vIGBlbnZpdmVfY29uZmlnX3ZlcnNpb25gIC8gYHNwaWZmeV9jb25maWdfdmVyc2lvbmAgcGluIGEgc3BlY2lmaWMgY29uZmlnXG4gIC8vIHZlcnNpb24gZm9yIGRlYnVnZ2luZy9yb2xsYmFjay4gQW55IHVzZSBvZiB0aGF0IG92ZXJyaWRlIG11c3QgYWx3YXlzXG4gIC8vIGJ5cGFzcyB0aGUgY2FjaGUgYmVsb3cg4oCUIGJvdGggcmVhZGluZyBhIHN0YWxlIGVudHJ5IGFuZCB3cml0aW5nIG9uZVxuICAvLyB1bmRlciB0aGUgc2hhcmVkIGtleSB3b3VsZCBkZWZlYXQgdGhlIG92ZXJyaWRlJ3MgcHVycG9zZS5cbiAgcHJpdmF0ZSByZWFkQ2FjaGVkQ29uZmlnKCk6IEVudml2ZVNlcnZpY2VDb25maWcgfCBudWxsIHtcbiAgICBpZiAoY29uZmlnVmVyc2lvbk92ZXJyaWRlKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmdldENhY2hlS2V5KCkpO1xuICAgICAgaWYgKCFyYXcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBlbnRyeSA9IEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZWRDb25maWdFbnRyeTtcbiAgICAgIGlmIChEYXRlLm5vdygpID49IGVudHJ5LmV4cGlyZXNBdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVDYWNoZWRDb25maWcodmFsdWU6IEVudml2ZVNlcnZpY2VDb25maWcpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlnVmVyc2lvbk92ZXJyaWRlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVudHJ5OiBDYWNoZWRDb25maWdFbnRyeSA9IHsgdmFsdWUsIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIENPTkZJR19DQUNIRV9UVExfTVMgfTtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5nZXRDYWNoZUtleSgpLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU3RvcmFnZSBkaXNhYmxlZCwgZnVsbCwgb3IgdW5hdmFpbGFibGUgKHByaXZhdGUgYnJvd3NpbmcsIGV0Yy4pIC1cbiAgICAgIC8vIGZhaWwgb3BlbiBhbmQgbGV0IHRoZSBuZXh0IGNhbGwgcmUtZmV0Y2ggaW5zdGVhZCBvZiBjYWNoaW5nLlxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+IHtcbiAgICBpZiAodGhpcy5yZXNwb25zZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5yZWFkQ2FjaGVkQ29uZmlnKCk7XG4gICAgaWYgKGNhY2hlZCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXNwb25zZSA9IGNhY2hlZDtcbiAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICBuYW1lc3BhY2U6IHRoaXMubmFtZXNwYWNlLFxuICAgICAgc291cmNlOiB0aGlzLnNvdXJjZSxcbiAgICAgIHVzZXJfaWQ6IHRoaXMudXNlcklkLFxuICAgICAgaW5jbHVkZV9leHBlcmltZW50czogJ2RlZmF1bHQnLFxuICAgICAgaW5jbHVkZV9mZWF0dXJlX2dhdGVzOiBPYmplY3QudmFsdWVzKEZlYXR1cmVHYXRlcylcbiAgICAgICAgLm1hcChmZWF0dXJlR2F0ZSA9PiBmZWF0dXJlR2F0ZS50b1N0cmluZygpKVxuICAgICAgICAuam9pbignLCcpLFxuICAgIH0pO1xuICAgIC8vIFNlcmlhbGl6ZWQgc28gd2UgY2FuIGJyYW5jaCB0aGUgR3JhcGhRTCBjYWxsIG9uIHRoZSBgdXNlX3VuaWZpZWRfY29uZmlnYFxuICAgIC8vIGdhdGUgcmV0dXJuZWQgYnkgL3YxL29yZy9jb25maWcuIE9uY2UgdGhlIG1pZ3JhdGlvbiB0byBnZXRXaWRnZXRDb25maWdcbiAgICAvLyBjb21wbGV0ZXMgKG9uZSBlbmRwb2ludCByZXR1cm5pbmcgZ2F0ZXMgKyBleHBlcmltZW50cyArIHByb2R1Y3RzQ29uZmlnKSxcbiAgICAvLyB0aGlzIGNvbGxhcHNlcyBiYWNrIHRvIGEgc2luZ2xlIGNhbGwuXG4gICAgY29uc3Qgb3JnQ29uZmlnUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcbiAgICAgIGAke3RoaXMuYmFzZVVybH0vdjEvb3JnL2NvbmZpZz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXBpS2V5fWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICkudGhlbihhc3luYyByID0+IHtcbiAgICAgIGlmICghci5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9yZyBjb25maWcgcmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgJHtyLnN0YXR1c31gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByLmpzb24oKSBhcyBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+O1xuICAgIH0pO1xuXG4gICAgLy8gSG9ub3IgVVJMIC8gYHdpbmRvdy5fc3BpZmZ5YCAvIGxvY2FsU3RvcmFnZSBvdmVycmlkZXMgZm9yXG4gICAgLy8gYHVzZV91bmlmaWVkX2NvbmZpZ2AgdGhlIHNhbWUgd2F5IGV2ZXJ5IG90aGVyIGZlYXR1cmUgZ2F0ZSBpcyByZWFkLlxuICAgIGNvbnN0IHVzZVVuaWZpZWRDb25maWcgPSBuZXcgRmVhdHVyZUZsYWdTZXJ2aWNlKFxuICAgICAgb3JnQ29uZmlnUmVzcG9uc2UuZ2F0ZXMgPz8gW10sXG4gICAgKS5pc0ZlYXR1cmVHYXRlRW5hYmxlZChGZWF0dXJlR2F0ZXMuVXNlVW5pZmllZENvbmZpZyk7XG4gICAgY29uc3Qgb3JnQ29uZmlnID0gdXNlVW5pZmllZENvbmZpZ1xuICAgICAgPyBhd2FpdCBmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnKHRoaXMuYmFzZVVybCwgdGhpcy5hcGlLZXksIHRoaXMudXNlcklkKVxuICAgICAgOiBhd2FpdCBmZXRjaEdyYXBoUUxDb25maWcodGhpcy5iYXNlVXJsLCB0aGlzLmFwaUtleSk7XG5cbiAgICB0aGlzLnJlc3BvbnNlID0geyAuLi5vcmdDb25maWdSZXNwb25zZSwgb3JnQ29uZmlnIH07XG4gICAgdGhpcy53cml0ZUNhY2hlZENvbmZpZyh0aGlzLnJlc3BvbnNlKTtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgc3RhdGljIG1vY2sgZGF0YSBmcm9tIGl0cyBjb25zdHJ1Y3RvciBhcmd1bWVudHMuIFBhc3NlcyBlbXB0eSBiYXNlVXJsL2FwaUtleVxuICogc28gYW55IGNvZGUgY2hlY2tpbmcgaXNSZWFkeSBkb2VzIG5vdCBmaXJlIHJlYWwgbmV0d29yayByZXF1ZXN0cy4gVGhlIG9yZ0NvbmZpZyBmaWVsZFxuICogY292ZXJzIGNvbG9ycywgZnJvbnRlbmRDb25maWcsIGFuZCBwYWdlL3dpZGdldC9tb3VudGluZyBjb25maWdzIHdpdGhvdXQgYW55IG5ldHdvcmsgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrRW52aXZlQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElFbnZpdmVDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyA9ICcnO1xuXG4gIHB1YmxpYyByZWFkb25seSBhcGlLZXk6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbW9ja0NvbmZpZzogRW52aXZlU2VydmljZUNvbmZpZykge31cblxuICBhc3luYyBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMubW9ja0NvbmZpZztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFXQSxNQUFNLHNCQUFzQixNQUFTO0FBNkNyQyxJQUFhLHNCQUFiLE1BQWlFO0NBYS9ELFlBQVksRUFBRSxTQUFTLFFBQVEsUUFBUSxXQUFXLFVBQW9DO2tCQUZ2QztBQUc3QyxPQUFLLFVBQVU7QUFDZixPQUFLLFNBQVM7QUFDZCxPQUFLLFNBQVM7QUFDZCxPQUFLLFlBQVk7QUFDakIsT0FBSyxTQUFTOztDQUdoQixBQUFRLGNBQXNCO0FBQzVCLFNBQU8sdUJBQXVCLEtBQUssUUFBUSxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssVUFBVSxHQUFHLEtBQUs7O0NBT3JHLEFBQVEsbUJBQStDO0FBQ3JELE1BQUksdUJBQXVCLENBQ3pCLFFBQU87QUFFVCxNQUFJO0dBQ0YsTUFBTSxNQUFNLGVBQWUsUUFBUSxLQUFLLGFBQWEsQ0FBQztBQUN0RCxPQUFJLENBQUMsSUFDSCxRQUFPO0dBRVQsTUFBTSxRQUFRLEtBQUssTUFBTSxJQUFJO0FBQzdCLE9BQUksS0FBSyxLQUFLLElBQUksTUFBTSxVQUN0QixRQUFPO0FBRVQsVUFBTyxNQUFNO1VBQ1A7QUFDTixVQUFPOzs7Q0FJWCxBQUFRLGtCQUFrQixPQUFrQztBQUMxRCxNQUFJLHVCQUF1QixDQUN6QjtBQUVGLE1BQUk7R0FDRixNQUFNQSxRQUEyQjtJQUFFO0lBQU8sV0FBVyxLQUFLLEtBQUssR0FBRztJQUFxQjtBQUN2RixrQkFBZSxRQUFRLEtBQUssYUFBYSxFQUFFLEtBQUssVUFBVSxNQUFNLENBQUM7VUFDM0Q7O0NBTVYsTUFBTSxrQkFBZ0Q7QUFDcEQsTUFBSSxLQUFLLGFBQWEsS0FDcEIsUUFBTyxLQUFLO0VBR2QsTUFBTSxTQUFTLEtBQUssa0JBQWtCO0FBQ3RDLE1BQUksV0FBVyxNQUFNO0FBQ25CLFFBQUssV0FBVztBQUNoQixVQUFPLEtBQUs7O0VBR2QsTUFBTSxjQUFjLElBQUksZ0JBQWdCO0dBQ3RDLFdBQVcsS0FBSztHQUNoQixRQUFRLEtBQUs7R0FDYixTQUFTLEtBQUs7R0FDZCxxQkFBcUI7R0FDckIsdUJBQXVCLE9BQU8sT0FBTyxhQUFhLENBQy9DLEtBQUksZ0JBQWUsWUFBWSxVQUFVLENBQUMsQ0FDMUMsS0FBSyxJQUFJO0dBQ2IsQ0FBQztFQUtGLE1BQU0sb0JBQW9CLE1BQU0sTUFDOUIsR0FBRyxLQUFLLFFBQVEsaUJBQWlCLFlBQVksVUFBVSxJQUN2RDtHQUNFLFFBQVE7R0FDUixTQUFTO0lBQ1AsZ0JBQWdCO0lBQ2hCLGVBQWUsVUFBVSxLQUFLO0lBQy9CO0dBQ0YsQ0FDRixDQUFDLEtBQUssT0FBTSxNQUFLO0FBQ2hCLE9BQUksQ0FBQyxFQUFFLEdBQ0wsT0FBTSxJQUFJLE1BQU0seUNBQXlDLEVBQUUsU0FBUztBQUV0RSxVQUFPLEVBQUUsTUFBTTtJQUNmO0VBT0YsTUFBTSxZQUhtQixJQUFJLG1CQUMzQixrQkFBa0IsU0FBUyxFQUFFLENBQzlCLENBQUMscUJBQXFCLGFBQWEsaUJBQWlCLEdBRWpELE1BQU0sMEJBQTBCLEtBQUssU0FBUyxLQUFLLFFBQVEsS0FBSyxPQUFPLEdBQ3ZFLE1BQU0sbUJBQW1CLEtBQUssU0FBUyxLQUFLLE9BQU87QUFFdkQsT0FBSyxXQUFXO0dBQUUsR0FBRztHQUFtQjtHQUFXO0FBQ25ELE9BQUssa0JBQWtCLEtBQUssU0FBUztBQUNyQyxTQUFPLEtBQUs7Ozs7Ozs7O0FBU2hCLElBQWEsMEJBQWIsTUFBcUU7Q0FLbkUsWUFBWSxBQUFpQkMsWUFBaUM7RUFBakM7aUJBSks7Z0JBRUQ7O0NBSWpDLE1BQU0sa0JBQWdEO0FBQ3BELFNBQU8sS0FBSyJ9
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnU2VydmljZS5qcyIsIm5hbWVzIjpbImVudHJ5OiBDYWNoZWRDb25maWdFbnRyeSIsIm1vY2tDb25maWc6IEVudml2ZVNlcnZpY2VDb25maWciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9lbnZpdmVDb25maWdTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50LCBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mZWF0dXJlR2F0ZXMnO1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFsQ29uZmlnVmFsdWVzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0JztcbmltcG9ydCB7IGNvbmZpZ1ZlcnNpb25PdmVycmlkZSB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHsgZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyB9IGZyb20gJy4vZmV0Y2hHcmFwaFFMQ29uZmlnJztcblxuLy8gU2hvcnQtbGl2ZWQgc28gY29uZmlnIGNoYW5nZXMgKGdhdGVzLCBleHBlcmltZW50cykgc3RpbGwgcHJvcGFnYXRlIHdpdGhpblxuLy8gYSBzZXNzaW9uLCB3aGlsZSBzcGFyaW5nIGV2ZXJ5IHBhZ2UgbmF2aWdhdGlvbiBmcm9tIHJlLWZldGNoaW5nIG9yZ1xuLy8gY29uZmlnICsgR3JhcGhRTCBjb25maWcsIGJvdGggb2Ygd2hpY2ggc2l0IG9uIHRoZSBjcml0aWNhbCBwYXRoIGJlZm9yZVxuLy8gZmlyc3QgcGFpbnQuXG5jb25zdCBDT05GSUdfQ0FDSEVfVFRMX01TID0gNSAqIDYwICogMTAwMDtcblxudHlwZSBDYWNoZWRDb25maWdFbnRyeSA9IHtcbiAgdmFsdWU6IEVudml2ZVNlcnZpY2VDb25maWc7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xufTtcblxudHlwZSBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMgPSB7XG4gIGJhc2VVcmw6IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBFbnZpdmVTZXJ2aWNlQ29uZmlnID0ge1xuICBvcmc6IHtcbiAgICBvcmc6IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBzaG9ydF9uYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5X25hbWU6IHN0cmluZztcbiAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgZ2F0ZXM6IE9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107XG4gIC8vIFBvcHVsYXRlZCBieSB0aGUgYmFja2VuZCB3aGVuIHRoZSBgdXNlX3VuaWZpZWRfY29uZmlnYCBTdGF0c2lnIGdhdGVcbiAgLy8gZXZhbHVhdGVzIHRydWUuIGFtcGxpdHVkZVNlcnZpY2UgcmVhZHMgdGhlc2UgdG8gZW5yaWNoIGV2ZW50cyB3aXRoXG4gIC8vIGBleHBlcmltZW50Lntuc30uKmAgcHJvcGVydGllcy5cbiAgZXhwZXJpbWVudF9hc3NpZ25tZW50cz86IE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50W107XG4gIC8vIG9yZ0NvbmZpZy5yZXNvbHV0aW9uIGlzIHBvcHVsYXRlZCBvbmx5IG9uIHRoZSB1bmlmaWVkIHBhdGggKHNvdXJjZWQgZnJvbVxuICAvLyBnZXRXaWRnZXRDb25maWcucmVzb2x1dGlvbiwgbm90IC92MS9vcmcvY29uZmlnLnJlc29sdXRpb24pIHNvIHRoZSB2ZXJzaW9uXG4gIC8vIHRocmVhZGVkIGludG8gaW5mZXJlbmNlIHJlcXVlc3RzIG1hdGNoZXMgdGhlIHZlcnNpb24gdGhhdCBwcm9kdWNlZCB0aGVcbiAgLy8gcmVuZGVyZWQgd2lkZ2V0cy5cbiAgb3JnQ29uZmlnPzogR3JhcGhRbENvbmZpZ1ZhbHVlcztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuICBnZXRFbnZpdmVDb25maWcoKTogUHJvbWlzZTxFbnZpdmVTZXJ2aWNlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGNsYXNzIEVudml2ZUNvbmZpZ1NlcnZpY2UgaW1wbGVtZW50cyBJRW52aXZlQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVzcG9uc2U6IEVudml2ZVNlcnZpY2VDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcih7IGJhc2VVcmwsIGFwaUtleSwgdXNlcklkLCBuYW1lc3BhY2UsIHNvdXJjZSB9OiBFbnZpdmVDb25maWdTZXJ2aWNlUHJvcHMpIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMudXNlcklkID0gdXNlcklkO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYWNoZUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgZW52aXZlLWNvbmZpZy1jYWNoZToke3RoaXMuYmFzZVVybH06JHt0aGlzLmFwaUtleX06JHt0aGlzLnVzZXJJZH06JHt0aGlzLm5hbWVzcGFjZX06JHt0aGlzLnNvdXJjZX1gO1xuICB9XG5cbiAgLy8gYGVudml2ZV9jb25maWdfdmVyc2lvbmAgLyBgc3BpZmZ5X2NvbmZpZ192ZXJzaW9uYCBwaW4gYSBzcGVjaWZpYyBjb25maWdcbiAgLy8gdmVyc2lvbiBmb3IgZGVidWdnaW5nL3JvbGxiYWNrLiBBbnkgdXNlIG9mIHRoYXQgb3ZlcnJpZGUgbXVzdCBhbHdheXNcbiAgLy8gYnlwYXNzIHRoZSBjYWNoZSBiZWxvdyDigJQgYm90aCByZWFkaW5nIGEgc3RhbGUgZW50cnkgYW5kIHdyaXRpbmcgb25lXG4gIC8vIHVuZGVyIHRoZSBzaGFyZWQga2V5IHdvdWxkIGRlZmVhdCB0aGUgb3ZlcnJpZGUncyBwdXJwb3NlLlxuICBwcml2YXRlIHJlYWRDYWNoZWRDb25maWcoKTogRW52aXZlU2VydmljZUNvbmZpZyB8IG51bGwge1xuICAgIGlmIChjb25maWdWZXJzaW9uT3ZlcnJpZGUoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuZ2V0Q2FjaGVLZXkoKSk7XG4gICAgICBpZiAoIXJhdykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5ID0gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlZENvbmZpZ0VudHJ5O1xuICAgICAgaWYgKERhdGUubm93KCkgPj0gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZUNhY2hlZENvbmZpZyh2YWx1ZTogRW52aXZlU2VydmljZUNvbmZpZyk6IHZvaWQge1xuICAgIGlmIChjb25maWdWZXJzaW9uT3ZlcnJpZGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cnk6IENhY2hlZENvbmZpZ0VudHJ5ID0geyB2YWx1ZSwgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgQ09ORklHX0NBQ0hFX1RUTF9NUyB9O1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmdldENhY2hlS2V5KCksIEpTT04uc3RyaW5naWZ5KGVudHJ5KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBTdG9yYWdlIGRpc2FibGVkLCBmdWxsLCBvciB1bmF2YWlsYWJsZSAocHJpdmF0ZSBicm93c2luZywgZXRjLikgLVxuICAgICAgLy8gZmFpbCBvcGVuIGFuZCBsZXQgdGhlIG5leHQgY2FsbCByZS1mZXRjaCBpbnN0ZWFkIG9mIGNhY2hpbmcuXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RW52aXZlQ29uZmlnKCk6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz4ge1xuICAgIGlmICh0aGlzLnJlc3BvbnNlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnJlYWRDYWNoZWRDb25maWcoKTtcbiAgICBpZiAoY2FjaGVkICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnJlc3BvbnNlID0gY2FjaGVkO1xuICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2U7XG4gICAgfVxuXG4gICAgLy8gZ2V0V2lkZ2V0Q29uZmlnIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mIHNlc3Npb24gY29uZmlnOiBpdCByZXR1cm5zIG9yZ1xuICAgIC8vIGlkZW50aXR5ICsgZmVhdHVyZSBnYXRlcyArIGV4cGVyaW1lbnQgYXNzaWdubWVudHMgKHdoaWNoIHVzZWQgdG8gYmUgYVxuICAgIC8vIHNlcGFyYXRlIEdFVCAvdjEvb3JnL2NvbmZpZyBjYWxsKSBhbG9uZ3NpZGUgcHJvZHVjdHNDb25maWcgKyB0aGVcbiAgICAvLyByZXNvbHV0aW9uIG1ldGFkYXRhIHRocmVhZGVkIGludG8gZG93bnN0cmVhbSBpbmZlcmVuY2UuIGBnYXRlTmFtZXNgIGlzIHRoZVxuICAgIC8vIGxpc3Qgb2YgZ2F0ZXMgdGhlIGFwcCBjaGVja3MsIHNvIHRoZSByZXNvbHZlciBldmFsdWF0ZXMgYW5kIHJldHVybnMgdGhlbS5cbiAgICBjb25zdCBnYXRlTmFtZXMgPSBPYmplY3QudmFsdWVzKEZlYXR1cmVHYXRlcykubWFwKGZlYXR1cmVHYXRlID0+IGZlYXR1cmVHYXRlLnRvU3RyaW5nKCkpO1xuXG4gICAgdGhpcy5yZXNwb25zZSA9IGF3YWl0IGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcoXG4gICAgICB0aGlzLmJhc2VVcmwsXG4gICAgICB0aGlzLmFwaUtleSxcbiAgICAgIHRoaXMudXNlcklkLFxuICAgICAgZ2F0ZU5hbWVzLFxuICAgICAgdGhpcy5zb3VyY2UsXG4gICAgKTtcbiAgICB0aGlzLndyaXRlQ2FjaGVkQ29uZmlnKHRoaXMucmVzcG9uc2UpO1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBzdGF0aWMgbW9jayBkYXRhIGZyb20gaXRzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4gUGFzc2VzIGVtcHR5IGJhc2VVcmwvYXBpS2V5XG4gKiBzbyBhbnkgY29kZSBjaGVja2luZyBpc1JlYWR5IGRvZXMgbm90IGZpcmUgcmVhbCBuZXR3b3JrIHJlcXVlc3RzLiBUaGUgb3JnQ29uZmlnIGZpZWxkXG4gKiBjb3ZlcnMgY29sb3JzLCBmcm9udGVuZENvbmZpZywgYW5kIHBhZ2Uvd2lkZ2V0L21vdW50aW5nIGNvbmZpZ3Mgd2l0aG91dCBhbnkgbmV0d29yayBjYWxscy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vY2tFbnZpdmVDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUVudml2ZUNvbmZpZ1NlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nID0gJyc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtb2NrQ29uZmlnOiBFbnZpdmVTZXJ2aWNlQ29uZmlnKSB7fVxuXG4gIGFzeW5jIGdldEVudml2ZUNvbmZpZygpOiBQcm9taXNlPEVudml2ZVNlcnZpY2VDb25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5tb2NrQ29uZmlnO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBVUEsTUFBTSxzQkFBc0IsTUFBUztBQTZDckMsSUFBYSxzQkFBYixNQUFpRTtDQWEvRCxZQUFZLEVBQUUsU0FBUyxRQUFRLFFBQVEsV0FBVyxVQUFvQztrQkFGdkM7QUFHN0MsT0FBSyxVQUFVO0FBQ2YsT0FBSyxTQUFTO0FBQ2QsT0FBSyxTQUFTO0FBQ2QsT0FBSyxZQUFZO0FBQ2pCLE9BQUssU0FBUzs7Q0FHaEIsQUFBUSxjQUFzQjtBQUM1QixTQUFPLHVCQUF1QixLQUFLLFFBQVEsR0FBRyxLQUFLLE9BQU8sR0FBRyxLQUFLLE9BQU8sR0FBRyxLQUFLLFVBQVUsR0FBRyxLQUFLOztDQU9yRyxBQUFRLG1CQUErQztBQUNyRCxNQUFJLHVCQUF1QixDQUN6QixRQUFPO0FBRVQsTUFBSTtHQUNGLE1BQU0sTUFBTSxlQUFlLFFBQVEsS0FBSyxhQUFhLENBQUM7QUFDdEQsT0FBSSxDQUFDLElBQ0gsUUFBTztHQUVULE1BQU0sUUFBUSxLQUFLLE1BQU0sSUFBSTtBQUM3QixPQUFJLEtBQUssS0FBSyxJQUFJLE1BQU0sVUFDdEIsUUFBTztBQUVULFVBQU8sTUFBTTtVQUNQO0FBQ04sVUFBTzs7O0NBSVgsQUFBUSxrQkFBa0IsT0FBa0M7QUFDMUQsTUFBSSx1QkFBdUIsQ0FDekI7QUFFRixNQUFJO0dBQ0YsTUFBTUEsUUFBMkI7SUFBRTtJQUFPLFdBQVcsS0FBSyxLQUFLLEdBQUc7SUFBcUI7QUFDdkYsa0JBQWUsUUFBUSxLQUFLLGFBQWEsRUFBRSxLQUFLLFVBQVUsTUFBTSxDQUFDO1VBQzNEOztDQU1WLE1BQU0sa0JBQWdEO0FBQ3BELE1BQUksS0FBSyxhQUFhLEtBQ3BCLFFBQU8sS0FBSztFQUdkLE1BQU0sU0FBUyxLQUFLLGtCQUFrQjtBQUN0QyxNQUFJLFdBQVcsTUFBTTtBQUNuQixRQUFLLFdBQVc7QUFDaEIsVUFBTyxLQUFLOztFQVFkLE1BQU0sWUFBWSxPQUFPLE9BQU8sYUFBYSxDQUFDLEtBQUksZ0JBQWUsWUFBWSxVQUFVLENBQUM7QUFFeEYsT0FBSyxXQUFXLE1BQU0sMEJBQ3BCLEtBQUssU0FDTCxLQUFLLFFBQ0wsS0FBSyxRQUNMLFdBQ0EsS0FBSyxPQUNOO0FBQ0QsT0FBSyxrQkFBa0IsS0FBSyxTQUFTO0FBQ3JDLFNBQU8sS0FBSzs7Ozs7Ozs7QUFTaEIsSUFBYSwwQkFBYixNQUFxRTtDQUtuRSxZQUFZLEFBQWlCQyxZQUFpQztFQUFqQztpQkFKSztnQkFFRDs7Q0FJakMsTUFBTSxrQkFBZ0Q7QUFDcEQsU0FBTyxLQUFLIn0=
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
const require_logger = require('../../application/logging/logger.cjs');
|
|
2
|
-
const require_config_versions = require('../../types/config-versions.cjs');
|
|
3
2
|
const require_snakeToCamelTransformer = require('../../application/models/utils/snakeToCamelTransformer.cjs');
|
|
4
3
|
const require_contexts_types = require('../../contexts/types.cjs');
|
|
5
4
|
const require_validateGraphQLFrontendConfig = require('../../application/models/validators/validateGraphQLFrontendConfig.cjs');
|
|
6
5
|
require('../../application/models/index.cjs');
|
|
7
|
-
const
|
|
6
|
+
const require_config_versions = require('../../types/config-versions.cjs');
|
|
8
7
|
const require_getWidgetConfigQuery = require('../../application/models/graphql/queries/getWidgetConfigQuery.cjs');
|
|
9
8
|
const require_mockV3Config = require('../../contexts/graphqlContext/mockV3Config.cjs');
|
|
10
9
|
|
|
@@ -167,66 +166,72 @@ const transformV3ProductsConfig = (productsConfig) => {
|
|
|
167
166
|
}
|
|
168
167
|
};
|
|
169
168
|
};
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
|
|
169
|
+
const toExperimentAssignments = (raw) => (raw ?? []).map((a) => ({
|
|
170
|
+
layer_name: a.layerName,
|
|
171
|
+
namespace: a.namespace,
|
|
172
|
+
allocated_experiment_name: a.allocatedExperimentName,
|
|
173
|
+
group_name: a.groupName
|
|
174
|
+
}));
|
|
175
|
+
const fetchUnifiedGraphQLConfig = async (baseUrl, apiKey, userId, gateNames, source) => {
|
|
176
|
+
const query = require_getWidgetConfigQuery.getWidgetConfigQuery();
|
|
177
|
+
const version = require_config_versions.configVersionOverride();
|
|
178
|
+
const response = await fetch(`${baseUrl}/v1/graphql`, {
|
|
179
|
+
method: "POST",
|
|
180
|
+
headers: {
|
|
181
|
+
"Content-Type": "application/json",
|
|
182
|
+
Authorization: `Bearer ${apiKey}`
|
|
183
|
+
},
|
|
184
|
+
body: JSON.stringify({
|
|
185
|
+
query,
|
|
186
|
+
variables: {
|
|
187
|
+
userId,
|
|
188
|
+
version,
|
|
189
|
+
gateNames,
|
|
190
|
+
source
|
|
191
|
+
}
|
|
192
|
+
})
|
|
193
|
+
});
|
|
194
|
+
if (!response.ok) throw new Error(`Unified config request failed: ${response.statusText}`);
|
|
195
|
+
const result = await response.json();
|
|
196
|
+
if (result.errors) throw new Error(`Unified config GraphQL errors: ${JSON.stringify(result.errors)}`);
|
|
197
|
+
const me = result.data?.me;
|
|
198
|
+
const widgetConfig = me?.getWidgetConfig;
|
|
199
|
+
const org = me?.org;
|
|
200
|
+
const resolution = widgetConfig?.resolution;
|
|
201
|
+
let orgConfig;
|
|
195
202
|
try {
|
|
196
|
-
|
|
197
|
-
const version = require_config_versions.configVersionOverride();
|
|
198
|
-
const response = await fetch(`${baseUrl}/v1/graphql`, {
|
|
199
|
-
method: "POST",
|
|
200
|
-
headers: {
|
|
201
|
-
"Content-Type": "application/json",
|
|
202
|
-
Authorization: `Bearer ${apiKey}`
|
|
203
|
-
},
|
|
204
|
-
body: JSON.stringify({
|
|
205
|
-
query,
|
|
206
|
-
variables: {
|
|
207
|
-
userId,
|
|
208
|
-
version
|
|
209
|
-
}
|
|
210
|
-
})
|
|
211
|
-
});
|
|
212
|
-
if (!response.ok) throw new Error(`GraphQL request failed: ${response.statusText}`);
|
|
213
|
-
const result = await response.json();
|
|
214
|
-
if (result.errors) throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
|
|
215
|
-
const widgetConfig = result.data.me.getWidgetConfig;
|
|
216
|
-
return {
|
|
203
|
+
orgConfig = {
|
|
217
204
|
...transformV3ProductsConfig(widgetConfig?.productsConfig),
|
|
218
|
-
resolution
|
|
205
|
+
resolution
|
|
219
206
|
};
|
|
220
207
|
} catch (err) {
|
|
221
|
-
logger.logError("fetchUnifiedGraphQLConfig | Error
|
|
222
|
-
|
|
208
|
+
logger.logError("fetchUnifiedGraphQLConfig | Error transforming products config", err);
|
|
209
|
+
orgConfig = {
|
|
223
210
|
colorsConfig: void 0,
|
|
224
|
-
frontendConfig: void 0
|
|
211
|
+
frontendConfig: void 0,
|
|
212
|
+
resolution
|
|
225
213
|
};
|
|
226
214
|
}
|
|
215
|
+
return {
|
|
216
|
+
org: { org: {
|
|
217
|
+
id: org?.id ?? "",
|
|
218
|
+
short_name: org?.shortName ?? "",
|
|
219
|
+
display_name: org?.displayName ?? "",
|
|
220
|
+
domain: org?.domain ?? "",
|
|
221
|
+
status: "",
|
|
222
|
+
created_at: org?.createdAt ?? "",
|
|
223
|
+
updated_at: org?.updatedAt ?? ""
|
|
224
|
+
} },
|
|
225
|
+
gates: (widgetConfig?.gates ?? []).map((g) => ({
|
|
226
|
+
name: g.name,
|
|
227
|
+
value: g.value,
|
|
228
|
+
groupName: g.groupName
|
|
229
|
+
})),
|
|
230
|
+
experiment_assignments: toExperimentAssignments(widgetConfig?.experimentAssignments),
|
|
231
|
+
orgConfig
|
|
232
|
+
};
|
|
227
233
|
};
|
|
228
234
|
|
|
229
235
|
//#endregion
|
|
230
|
-
exports.fetchGraphQLConfig = fetchGraphQLConfig;
|
|
231
236
|
exports.fetchUnifiedGraphQLConfig = fetchUnifiedGraphQLConfig;
|
|
232
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmNqcyIsIm5hbWVzIjpbIkxvZ2dlciIsIkRFRkFVTFRfUEFHRV9WQVJJQU5UUzogUGFnZVZhcmlhbnRDb25maWdbXSIsIlBhZ2VWYXJpYW50VGVzdFR5cGUiLCJtb2NrVjNDb2xvcnNDb25maWciLCJtb2NrVjNGcm9udGVuZENvbmZpZyIsInRyYW5zZm9ybVNuYWtlVG9DYW1lbCIsInZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWciLCJ2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSIsInZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzIiwiZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSIsImdldFdpZGdldENvbmZpZ1F1ZXJ5IiwiY29uZmlnVmVyc2lvbk92ZXJyaWRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Vudml2ZUNvbmZpZ1NlcnZpY2UvZmV0Y2hHcmFwaFFMQ29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7XG4gIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCxcbiAgdHJhbnNmb3JtU25ha2VUb0NhbWVsLFxuICB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnLFxuICB2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50cyxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBGcm9udGVuZENvbmZpZ1YzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mcm9udGVuZENvbmZpZ1YzJztcbmltcG9ydCB7IENvbG9yTWFwcGluZ1YzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWdWMyc7XG4vLyBUeXBlLW9ubHk6IGEgdmFsdWUgaW1wb3J0IHdvdWxkIHB1bGwgdGhlIEZsb2F0aW5nQnV0dG9uIGNvbXBvbmVudCAoYW5kXG4vLyBSZWFjdCkgdGhyb3VnaCB0aGUgcGFja2FnZSdzIGNvbXBvbmVudCBpbmRleCBpbnRvIHRoZSBpbmplY3Rpb24gYnVuZGxlJ3Ncbi8vIHByZS1jb25maWcgY2h1bmsuXG5pbXBvcnQgdHlwZSB7IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gfSBmcm9tICdAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldENvbG9yc0FuZEZyb250ZW5kUXVlcnknO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0Q29uZmlnUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRXaWRnZXRDb25maWdRdWVyeSc7XG5pbXBvcnQgeyBtb2NrVjNDb2xvcnNDb25maWcsIG1vY2tWM0Zyb250ZW5kQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IFBhZ2VWYXJpYW50Q29uZmlnLCBQYWdlVmFyaWFudFRlc3RUeXBlLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEdyYXBoUWxDb25maWdWYWx1ZXMgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQnO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbk92ZXJyaWRlIH0gZnJvbSAnc3JjL3R5cGVzL2NvbmZpZy12ZXJzaW9ucyc7XG5pbXBvcnQgeyBFeHBlcmltZW50Q29uZmlnUmVzb2x1dGlvbk1ldGFkYXRhIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2ZldGNoR3JhcGhRTENvbmZpZycpO1xuXG50eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcbnR5cGUgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmdWMz47XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfVkFSSUFOVFM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBbXG4gIHtcbiAgICB2YXJpYW50SWQ6ICdwbHAnLFxuICAgIHZhcmlhbnRUeXBlOiAncGxwJyxcbiAgICBwbHBJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wbHAtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuICB7XG4gICAgdmFyaWFudElkOiAncGRwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BkcCcsXG4gICAgcHJvZHVjdElkRXh0cmFjdG9yOiAndXJsLXJlc29sdmVyLXByb2R1Y3QtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuXTtcblxuLy8gU3RyaW5nLWxpdGVyYWwgdmFsdWVzIG9mIHRoZSBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uIGVudW07IGtlZXAgaW4gc3luY1xuLy8gd2l0aCBAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24vdHlwZXMvdHlwZXMudHMuXG5jb25zdCBGTE9BVElOR19CVVRUT05fUE9TSVRJT05TID0gW1xuICAnYm90dG9tLWxlZnQnLFxuICAnbWlkZGxlLWxlZnQnLFxuICAnbWlkZGxlLXJpZ2h0JyxcbiAgJ2JvdHRvbS1yaWdodCcsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlID0gKHBvc2l0aW9uOiBzdHJpbmcpOiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uID0+IHtcbiAgaWYgKChGTE9BVElOR19CVVRUT05fUE9TSVRJT05TIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhwb3NpdGlvbikpIHtcbiAgICByZXR1cm4gcG9zaXRpb24gYXMgRmxvYXRpbmdCdXR0b25Mb2NhdGlvbjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9zaXRpb246ICR7cG9zaXRpb259YCk7XG59O1xuXG5jb25zdCB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cCA9IChcbiAgdjNSb290Q29uZmlnOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4pOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPT4ge1xuICBjb25zdCB7IHVpQ29uZmlncyB9ID0gdjNSb290Q29uZmlnO1xuICBpZiAoIXVpQ29uZmlncykgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmbG9hdGluZ0J1dHRvbiwgbG9va0FuZEZlZWwgfSA9IHVpQ29uZmlncyBhcyBhbnk7XG4gIGlmICghZmxvYXRpbmdCdXR0b24gfHwgIWxvb2tBbmRGZWVsKSByZXR1cm4gdjNSb290Q29uZmlnO1xuICBjb25zdCB7IGZvbnRTaXplLCBsaW5lSGVpZ2h0LCBsZXR0ZXJTcGFjaW5nIH0gPSBsb29rQW5kRmVlbC50eXBvZ3JhcGh5IGFzIGFueTtcbiAgcmV0dXJuIHtcbiAgICAuLi52M1Jvb3RDb25maWcsXG4gICAgdWlDb25maWdzOiB7XG4gICAgICAuLi51aUNvbmZpZ3MsXG4gICAgICBmbG9hdGluZ0J1dHRvbjoge1xuICAgICAgICAuLi5mbG9hdGluZ0J1dHRvbixcbiAgICAgICAgcG9zaXRpb246IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UoXG4gICAgICAgICAgdjNSb290Q29uZmlnLnVpQ29uZmlncz8uZmxvYXRpbmdCdXR0b24/LnBvc2l0aW9uIGFzIHN0cmluZyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBsb29rQW5kRmVlbDoge1xuICAgICAgICAuLi5sb29rQW5kRmVlbCxcbiAgICAgICAgY2hhdEhlYWRlckxvZ29EYXJrU3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0RhcmtTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvTGlnaHRTcmM6IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvTGlnaHRTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIHR5cG9ncmFwaHk6IHtcbiAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LFxuICAgICAgICAgIGZvbnRTaXplOiB7XG4gICAgICAgICAgICBiMTogZm9udFNpemU/LmIxIHx8IGZvbnRTaXplPy5iXzEsXG4gICAgICAgICAgICBiMjogZm9udFNpemU/LmIyIHx8IGZvbnRTaXplPy5iXzIsXG4gICAgICAgICAgICBiMzogZm9udFNpemU/LmIzIHx8IGZvbnRTaXplPy5iXzMsXG4gICAgICAgICAgICBiNDogZm9udFNpemU/LmI0IHx8IGZvbnRTaXplPy5iXzQsXG4gICAgICAgICAgICBiNTogZm9udFNpemU/LmI1IHx8IGZvbnRTaXplPy5iXzUsXG4gICAgICAgICAgICBoMTogZm9udFNpemU/LmgxIHx8IGZvbnRTaXplPy5oXzEsXG4gICAgICAgICAgICBoMjogZm9udFNpemU/LmgyIHx8IGZvbnRTaXplPy5oXzIsXG4gICAgICAgICAgICBoMzogZm9udFNpemU/LmgzIHx8IGZvbnRTaXplPy5oXzMsXG4gICAgICAgICAgICBsMTogZm9udFNpemU/LmwxIHx8IGZvbnRTaXplPy5sXzEsXG4gICAgICAgICAgICBsMjogZm9udFNpemU/LmwyIHx8IGZvbnRTaXplPy5sXzIsXG4gICAgICAgICAgICB0MTogZm9udFNpemU/LnQxIHx8IGZvbnRTaXplPy50XzEsXG4gICAgICAgICAgICB0MjogZm9udFNpemU/LnQyIHx8IGZvbnRTaXplPy50XzIsXG4gICAgICAgICAgICB0MzogZm9udFNpemU/LnQzIHx8IGZvbnRTaXplPy50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiB7XG4gICAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcsXG4gICAgICAgICAgICBiMTogbGV0dGVyU3BhY2luZz8uYjEgfHwgbGV0dGVyU3BhY2luZz8uYl8xLFxuICAgICAgICAgICAgYjI6IGxldHRlclNwYWNpbmc/LmIyIHx8IGxldHRlclNwYWNpbmc/LmJfMixcbiAgICAgICAgICAgIGIzOiBsZXR0ZXJTcGFjaW5nPy5iMyB8fCBsZXR0ZXJTcGFjaW5nPy5iXzMsXG4gICAgICAgICAgICBiNDogbGV0dGVyU3BhY2luZz8uYjQgfHwgbGV0dGVyU3BhY2luZz8uYl80LFxuICAgICAgICAgICAgYjU6IGxldHRlclNwYWNpbmc/LmI1IHx8IGxldHRlclNwYWNpbmc/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsZXR0ZXJTcGFjaW5nPy5oMSB8fCBsZXR0ZXJTcGFjaW5nPy5oXzEsXG4gICAgICAgICAgICBoMjogbGV0dGVyU3BhY2luZz8uaDIgfHwgbGV0dGVyU3BhY2luZz8uaF8yLFxuICAgICAgICAgICAgaDM6IGxldHRlclNwYWNpbmc/LmgzIHx8IGxldHRlclNwYWNpbmc/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsZXR0ZXJTcGFjaW5nPy5sMSB8fCBsZXR0ZXJTcGFjaW5nPy5sXzEsXG4gICAgICAgICAgICBsMjogbGV0dGVyU3BhY2luZz8ubDIgfHwgbGV0dGVyU3BhY2luZz8ubF8yLFxuICAgICAgICAgICAgdDE6IGxldHRlclNwYWNpbmc/LnQxIHx8IGxldHRlclNwYWNpbmc/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsZXR0ZXJTcGFjaW5nPy50MiB8fCBsZXR0ZXJTcGFjaW5nPy50XzIsXG4gICAgICAgICAgICB0MzogbGV0dGVyU3BhY2luZz8udDMgfHwgbGV0dGVyU3BhY2luZz8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGluZUhlaWdodDoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5saW5lSGVpZ2h0LFxuICAgICAgICAgICAgJzExNCc6IGxpbmVIZWlnaHQ/LmxoXzExNCB8fCBsaW5lSGVpZ2h0Py5bMTE0XSxcbiAgICAgICAgICAgICcxMTYnOiBsaW5lSGVpZ2h0Py5saF8xMTYgfHwgbGluZUhlaWdodD8uWzExNl0sXG4gICAgICAgICAgICAnMTE4JzogbGluZUhlaWdodD8ubGhfMTE4IHx8IGxpbmVIZWlnaHQ/LlsxMThdLFxuICAgICAgICAgICAgJzEyMCc6IGxpbmVIZWlnaHQ/LmxoXzEyMCB8fCBsaW5lSGVpZ2h0Py5bMTIwXSxcbiAgICAgICAgICAgICcxMjQnOiBsaW5lSGVpZ2h0Py5saF8xMjQgfHwgbGluZUhlaWdodD8uWzEyNF0sXG4gICAgICAgICAgICAnMTI4JzogbGluZUhlaWdodD8ubGhfMTI4IHx8IGxpbmVIZWlnaHQ/LlsxMjhdLFxuICAgICAgICAgICAgJzEzMCc6IGxpbmVIZWlnaHQ/LmxoXzEzMCB8fCBsaW5lSGVpZ2h0Py5bMTMwXSxcbiAgICAgICAgICAgICcxMzMnOiBsaW5lSGVpZ2h0Py5saF8xMzMgfHwgbGluZUhlaWdodD8uWzEzM10sXG4gICAgICAgICAgICAnMTQwJzogbGluZUhlaWdodD8ubGhfMTQwIHx8IGxpbmVIZWlnaHQ/LlsxNDBdLFxuICAgICAgICAgICAgJzE0OCc6IGxpbmVIZWlnaHQ/LmxoXzE0OCB8fCBsaW5lSGVpZ2h0Py5bMTQ4XSxcbiAgICAgICAgICAgIGIxOiBsaW5lSGVpZ2h0Py5iMSB8fCBsaW5lSGVpZ2h0Py5iXzEsXG4gICAgICAgICAgICBiMjogbGluZUhlaWdodD8uYjIgfHwgbGluZUhlaWdodD8uYl8yLFxuICAgICAgICAgICAgYjM6IGxpbmVIZWlnaHQ/LmIzIHx8IGxpbmVIZWlnaHQ/LmJfMyxcbiAgICAgICAgICAgIGI0OiBsaW5lSGVpZ2h0Py5iNCB8fCBsaW5lSGVpZ2h0Py5iXzQsXG4gICAgICAgICAgICBiNTogbGluZUhlaWdodD8uYjUgfHwgbGluZUhlaWdodD8uYl81LFxuICAgICAgICAgICAgaDE6IGxpbmVIZWlnaHQ/LmgxIHx8IGxpbmVIZWlnaHQ/LmhfMSxcbiAgICAgICAgICAgIGgyOiBsaW5lSGVpZ2h0Py5oMiB8fCBsaW5lSGVpZ2h0Py5oXzIsXG4gICAgICAgICAgICBoMzogbGluZUhlaWdodD8uaDMgfHwgbGluZUhlaWdodD8uaF8zLFxuICAgICAgICAgICAgbDE6IGxpbmVIZWlnaHQ/LmwxIHx8IGxpbmVIZWlnaHQ/LmxfMSxcbiAgICAgICAgICAgIGwyOiBsaW5lSGVpZ2h0Py5sMiB8fCBsaW5lSGVpZ2h0Py5sXzIsXG4gICAgICAgICAgICB0MTogbGluZUhlaWdodD8udDEgfHwgbGluZUhlaWdodD8udF8xLFxuICAgICAgICAgICAgdDI6IGxpbmVIZWlnaHQ/LnQyIHx8IGxpbmVIZWlnaHQ/LnRfMixcbiAgICAgICAgICAgIHQzOiBsaW5lSGVpZ2h0Py50MyB8fCBsaW5lSGVpZ2h0Py50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbi8vIFR1cm5zIGEgcmF3IHByb2R1Y3RzQ29uZmlnIHBheWxvYWQgKGZyb20gZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24gb3Jcbi8vIGdldFdpZGdldENvbmZpZykgaW50byB0aGUgY2FtZWxDYXNlIEdyYXBoUWxDb25maWdWYWx1ZXMgc2hhcGUgdGhlIHJlc3Qgb2Zcbi8vIHRoZSB0b29sa2l0IGNvbnN1bWVzLiBSZXR1cm5zIG1vY2sgY29uZmlnIHdoZW4gY29sb3JzIGFyZSBhYnNlbnQuXG5jb25zdCB0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnID0gKFxuICBwcm9kdWN0c0NvbmZpZzpcbiAgICB8IHtcbiAgICAgICAgZnJvbnRlbmQ/OiB7IHZhbHVlcz86IHsgbWVyY2hhbnRfb3ZlcnJpZGVfY3NzPzogc3RyaW5nIH0gfTtcbiAgICAgICAgdl90aHJlZV9jb25maWc/OiB7IHZhbHVlcz86IGFueSB9O1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkLFxuKTogR3JhcGhRbENvbmZpZ1ZhbHVlcyA9PiB7XG4gIGNvbnN0IHYzUm9vdENvbmZpZyA9IHByb2R1Y3RzQ29uZmlnPy52X3RocmVlX2NvbmZpZz8udmFsdWVzO1xuICBjb25zdCBmcm9udGVuZFZhbHVlcyA9IHByb2R1Y3RzQ29uZmlnPy5mcm9udGVuZD8udmFsdWVzO1xuXG4gIGlmICghdjNSb290Q29uZmlnPy5jb2xvcnMpIHtcbiAgICBsb2dnZXIubG9nRGVidWcoJ3RyYW5zZm9ybVYzUHJvZHVjdHNDb25maWcgfCBObyBjb2xvcnMgZm91bmQsIHJldHVybmluZyBtb2NrIGNvbmZpZycpO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcnNDb25maWc6IG1vY2tWM0NvbG9yc0NvbmZpZyxcbiAgICAgIGZyb250ZW5kQ29uZmlnOiBtb2NrVjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICAgICBvcmdQYWdlQ29uZmlnOiB7XG4gICAgICAgIHBhZ2VWYXJpYW50czogREVGQVVMVF9QQUdFX1ZBUklBTlRTLFxuICAgICAgICB3aWRnZXRDb25maWdzOiB7fSxcbiAgICAgICAgbW91bnRpbmdDb25maWdzOiB7fSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHYzRnJvbnRlbmRDb25maWcgPSB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cChcbiAgICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnKSBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICk7XG5cbiAgY29uc3QgbWVyY2hhbnRPdmVycmlkZUNzcyA9XG4gICAgdjNGcm9udGVuZENvbmZpZy51aUNvbmZpZ3M/Lm1lcmNoYW50T3ZlcnJpZGVDc3MgfHwgZnJvbnRlbmRWYWx1ZXM/Lm1lcmNoYW50X292ZXJyaWRlX2NzcztcblxuICBjb25zdCB2M01vdW50aW5nQ29uZmlnc0FycmF5ID0gKHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/Lm1vdW50aW5nX2NvbmZpZ3MpID8/XG4gICAgW10pIGFzIHVua25vd24gYXMgeyBrZXk6IHN0cmluZzsgY29uZmlnOiBXaWRnZXRNb3VudGluZ0NvbmZpZyB9W107XG4gIGNvbnN0IHYzTW91bnRpbmdDb25maWdzID0gdjNNb3VudGluZ0NvbmZpZ3NBcnJheS5yZWR1Y2UoXG4gICAgKGFjYywgeyBrZXksIGNvbmZpZyB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcoY29uZmlnLCBrZXkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ1dhcm4oJ0ludmFsaWQgbW91bnRpbmcgY29uZmlnLCBza2lwcGluZycsIGVycm9yLCB7IGtleSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRNb3VudGluZ0NvbmZpZz4sXG4gICk7XG5cbiAgY29uc3QgdjNXaWRnZXRDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ud2lkZ2V0X2NvbmZpZ3MpID8/XG4gICAgW10pIGFzIHVua25vd24gYXMgV2lkZ2V0Q29uZmlnVjNbXTtcbiAgY29uc3QgdjNXaWRnZXRDb25maWdzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHYzV2lkZ2V0Q29uZmlnc0FycmF5Py5tYXAoKHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfTogV2lkZ2V0Q29uZmlnVjMpID0+IFtcbiAgICAgIHdpZGdldENvbmZpZ0lkLFxuICAgICAgeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9IGFzIFdpZGdldENvbmZpZ1YzLFxuICAgIF0pLFxuICApIGFzIFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZ1YzPjtcblxuICBjb25zdCB2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSA9IEFycmF5LmlzQXJyYXkodjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzKVxuICAgID8gdjNSb290Q29uZmlnLnBhZ2VfdmFyaWFudHMucmVkdWNlKChhY2M6IFBhZ2VWYXJpYW50Q29uZmlnW10sIHZhcmlhbnQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhY2MucHVzaCh2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50cyh2YXJpYW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLmxvZ1dhcm4oJ0ludmFsaWQgcGFnZSB2YXJpYW50LCBza2lwcGluZycsIGVycm9yLCB7IHZhcmlhbnQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKVxuICAgIDogREVGQVVMVF9QQUdFX1ZBUklBTlRTO1xuXG4gIGNvbnN0IHYzQ29sb3JzQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8uY29sb3JzPy52YWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgIGZyb250ZW5kQ29uZmlnOiB7XG4gICAgICAuLi4odjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UpLFxuICAgICAgbWVyY2hhbnRPdmVycmlkZUNzcyxcbiAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICB9LFxuICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgIHBhZ2VWYXJpYW50czogdjNwYWdlVmFyaWFudHMsXG4gICAgICB3aWRnZXRDb25maWdzOiB2M1dpZGdldENvbmZpZ3MsXG4gICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hHcmFwaFFMQ29uZmlnID0gYXN5bmMgKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIGFwaUtleTogc3RyaW5nLFxuKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcXVlcnkgPSBnZXRDb2xvcnNBbmRGcm9udGVuZFF1ZXJ5KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5IH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdC5lcnJvcnMpfWApO1xuICAgIH1cblxuICAgIGxvZ2dlci5sb2dEZWJ1ZygnZmV0Y2hHcmFwaFFMQ29uZmlnIHwgUmV0dXJuaW5nIHYzIGNvbmZpZycpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHJlc3VsdC5kYXRhLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdmZXRjaEdyYXBoUUxDb25maWcgfCBFcnJvciBmZXRjaGluZyBHcmFwaFFMIGNvbmZpZycsIGVycik7XG4gICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgfVxufTtcblxuLy8gU3RhdHNpZy1leHBlcmltZW50LWF3YXJlIHVuaWZpZWQgY29uZmlnIHBhdGguIENhbGxlZCB3aGVuIHRoZVxuLy8gYHVzZV91bmlmaWVkX2NvbmZpZ2AgU3RhdHNpZyBnYXRlIGlzIG9uLiBSZXR1cm5zIHRoZSBzYW1lIHNoYXBlIGFzXG4vLyBmZXRjaEdyYXBoUUxDb25maWcgd2l0aCB0aGUgcmVzb2x1dGlvbiBtZXRhZGF0YSBweW1vbm8gdXNlZCB0byBwaWNrIHRoZVxuLy8gdmVyc2lvbiBhdHRhY2hlZCDigJQgY2FsbGVycyB0aHJlYWQgYHJlc29sdXRpb24uYmFzZVZlcnNpb25gIGludG8gZG93bnN0cmVhbVxuLy8gaW5mZXJlbmNlIHJlcXVlc3RzIHNvIGluZmVyZW5jZSBpcyBzY29wZWQgdG8gdGhlIHZlcnNpb24gdGhhdCBwcm9kdWNlZFxuLy8gdGhlIHdpZGdldHMgdGhlIHVzZXIgaXMgcmVuZGVyaW5nLiBBIGBzcGlmZnlfY29uZmlnX3ZlcnNpb25gIC9cbi8vIGBlbnZpdmVfY29uZmlnX3ZlcnNpb25gIFVSTCBwYXJhbSwgd2hlbiBwcmVzZW50LCBpcyB0aHJlYWRlZCB0aHJvdWdoIGFzXG4vLyB0aGUgYHZlcnNpb25gIHZhcmlhYmxlIHRvIHBpbiBhIHNwZWNpZmljIGNvbmZpZyB2ZXJzaW9uIChtYXRjaGVzIHRoZVxuLy8gbGVnYWN5IHBhdGgncyBkZWJ1Zy9yb2xsYmFjayBhZmZvcmRhbmNlKS5cbmV4cG9ydCBjb25zdCBmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnID0gYXN5bmMgKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIGFwaUtleTogc3RyaW5nLFxuICB1c2VySWQ6IHN0cmluZyxcbik6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0V2lkZ2V0Q29uZmlnUXVlcnkoKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gY29uZmlnVmVyc2lvbk92ZXJyaWRlKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXM6IHsgdXNlcklkLCB2ZXJzaW9uIH0gfSksXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkZ2V0Q29uZmlnID0gcmVzdWx0LmRhdGEubWUuZ2V0V2lkZ2V0Q29uZmlnO1xuICAgIHJldHVybiB7XG4gICAgICAuLi50cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHdpZGdldENvbmZpZz8ucHJvZHVjdHNDb25maWcpLFxuICAgICAgcmVzb2x1dGlvbjogd2lkZ2V0Q29uZmlnPy5yZXNvbHV0aW9uIGFzIEV4cGVyaW1lbnRDb25maWdSZXNvbHV0aW9uTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIHwgRXJyb3IgZmV0Y2hpbmcgdW5pZmllZCBHcmFwaFFMIGNvbmZpZycsIGVycik7XG4gICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFzQkEsTUFBTSxTQUFTLElBQUlBLHVCQUFPLHFCQUFxQjtBQUsvQyxNQUFhQyx3QkFBNkMsQ0FDeEQ7Q0FDRSxXQUFXO0NBQ1gsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixnQkFBZ0IsRUFBRTtDQUNsQixjQUFjLENBQUMsRUFBRSxVQUFVQywyQ0FBb0IsYUFBYSxDQUFDO0NBQzlELEVBQ0Q7Q0FDRSxXQUFXO0NBQ1gsYUFBYTtDQUNiLG9CQUFvQjtDQUNwQixnQkFBZ0IsRUFBRTtDQUNsQixjQUFjLENBQUMsRUFBRSxVQUFVQSwyQ0FBb0IsYUFBYSxDQUFDO0NBQzlELENBQ0Y7QUFJRCxNQUFNLDRCQUE0QjtDQUNoQztDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBRUQsTUFBTSwwQkFBMEIsYUFBNkM7QUFDM0UsS0FBSywwQkFBZ0QsU0FBUyxTQUFTLENBQ3JFLFFBQU87QUFFVCxPQUFNLElBQUksTUFBTSxxQkFBcUIsV0FBVzs7QUFHbEQsTUFBTSwyQkFDSixpQkFDNkI7Q0FDN0IsTUFBTSxFQUFFLGNBQWM7QUFDdEIsS0FBSSxDQUFDLFVBQVcsUUFBTztDQUN2QixNQUFNLEVBQUUsZ0JBQWdCLGdCQUFnQjtBQUN4QyxLQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBYSxRQUFP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
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmNqcyIsIm5hbWVzIjpbIkxvZ2dlciIsIkRFRkFVTFRfUEFHRV9WQVJJQU5UUzogUGFnZVZhcmlhbnRDb25maWdbXSIsIlBhZ2VWYXJpYW50VGVzdFR5cGUiLCJtb2NrVjNDb2xvcnNDb25maWciLCJtb2NrVjNGcm9udGVuZENvbmZpZyIsInRyYW5zZm9ybVNuYWtlVG9DYW1lbCIsInZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWciLCJ2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSIsInZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzIiwiZ2V0V2lkZ2V0Q29uZmlnUXVlcnkiLCJjb25maWdWZXJzaW9uT3ZlcnJpZGUiLCJvcmdDb25maWc6IEdyYXBoUWxDb25maWdWYWx1ZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9mZXRjaEdyYXBoUUxDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbi8vIFR5cGUtb25seTogYSB2YWx1ZSBpbXBvcnQgd291bGQgcHVsbCB0aGUgRmxvYXRpbmdCdXR0b24gY29tcG9uZW50IChhbmRcbi8vIFJlYWN0KSB0aHJvdWdoIHRoZSBwYWNrYWdlJ3MgY29tcG9uZW50IGluZGV4IGludG8gdGhlIGluamVjdGlvbiBidW5kbGUnc1xuLy8gcHJlLWNvbmZpZyBjaHVuay5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiB9IGZyb20gJ0BlbnZpdmUtYWkvcmVhY3QtdG9vbGtpdC12My9GbG9hdGluZ0J1dHRvbic7XG5pbXBvcnQgeyBnZXRXaWRnZXRDb25maWdRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFdpZGdldENvbmZpZ1F1ZXJ5JztcbmltcG9ydCB7IG1vY2tWM0NvbG9yc0NvbmZpZywgbW9ja1YzRnJvbnRlbmRDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQvbW9ja1YzQ29uZmlnJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ1YzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuaW1wb3J0IHsgUGFnZVZhcmlhbnRDb25maWcsIFBhZ2VWYXJpYW50VGVzdFR5cGUsIFdpZGdldE1vdW50aW5nQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgR3JhcGhRbENvbmZpZ1ZhbHVlcyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dCc7XG5pbXBvcnQgeyBjb25maWdWZXJzaW9uT3ZlcnJpZGUgfSBmcm9tICdzcmMvdHlwZXMvY29uZmlnLXZlcnNpb25zJztcbmltcG9ydCB7XG4gIEV4cGVyaW1lbnRDb25maWdSZXNvbHV0aW9uTWV0YWRhdGEsXG4gIE9yZ0NvbmZpZ0V4cGVyaW1lbnRBc3NpZ25tZW50LFxuICBPcmdDb25maWdGZWF0dXJlR2F0ZSxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG4vLyBUeXBlLW9ubHkgaW1wb3J0IOKAlCBlcmFzZWQgYXQgY29tcGlsZSB0aW1lLCBzbyB0aGlzIGRvZXMgbm90IGNyZWF0ZSBhIHJ1bnRpbWVcbi8vIGltcG9ydCBjeWNsZSB3aXRoIGVudml2ZUNvbmZpZ1NlcnZpY2UgKHdoaWNoIGltcG9ydHMgZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZykuXG5pbXBvcnQgdHlwZSB7IEVudml2ZVNlcnZpY2VDb25maWcgfSBmcm9tICcuL2Vudml2ZUNvbmZpZ1NlcnZpY2UnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdmZXRjaEdyYXBoUUxDb25maWcnKTtcblxudHlwZSBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWdWMz47XG50eXBlIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Q29sb3JNYXBwaW5nVjM+O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gW1xuICB7XG4gICAgdmFyaWFudElkOiAncGxwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BscCcsXG4gICAgcGxwSWRFeHRyYWN0b3I6ICd1cmwtcmVzb2x2ZXItcGxwLWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbiAge1xuICAgIHZhcmlhbnRJZDogJ3BkcCcsXG4gICAgdmFyaWFudFR5cGU6ICdwZHAnLFxuICAgIHByb2R1Y3RJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wcm9kdWN0LWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbl07XG5cbi8vIFN0cmluZy1saXRlcmFsIHZhbHVlcyBvZiB0aGUgRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiBlbnVtOyBrZWVwIGluIHN5bmNcbi8vIHdpdGggQGVudml2ZS1haS9yZWFjdC10b29sa2l0LXYzL0Zsb2F0aW5nQnV0dG9uL3R5cGVzL3R5cGVzLnRzLlxuY29uc3QgRkxPQVRJTkdfQlVUVE9OX1BPU0lUSU9OUyA9IFtcbiAgJ2JvdHRvbS1sZWZ0JyxcbiAgJ21pZGRsZS1sZWZ0JyxcbiAgJ21pZGRsZS1yaWdodCcsXG4gICdib3R0b20tcmlnaHQnLFxuXSBhcyBjb25zdDtcblxuY29uc3QgbWFwUG9zaXRpb25Ub0NhbWVsQ2FzZSA9IChwb3NpdGlvbjogc3RyaW5nKTogRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiA9PiB7XG4gIGlmICgoRkxPQVRJTkdfQlVUVE9OX1BPU0lUSU9OUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMocG9zaXRpb24pKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uIGFzIEZsb2F0aW5nQnV0dG9uTG9jYXRpb247XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBvc2l0aW9uOiAke3Bvc2l0aW9ufWApO1xufTtcblxuY29uc3QgdjNGcm9udGVuZENvbmZpZ0NsZWFudXAgPSAoXG4gIHYzUm9vdENvbmZpZzogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuKTogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlID0+IHtcbiAgY29uc3QgeyB1aUNvbmZpZ3MgfSA9IHYzUm9vdENvbmZpZztcbiAgaWYgKCF1aUNvbmZpZ3MpIHJldHVybiB2M1Jvb3RDb25maWc7XG4gIGNvbnN0IHsgZmxvYXRpbmdCdXR0b24sIGxvb2tBbmRGZWVsIH0gPSB1aUNvbmZpZ3MgYXMgYW55O1xuICBpZiAoIWZsb2F0aW5nQnV0dG9uIHx8ICFsb29rQW5kRmVlbCkgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmb250U2l6ZSwgbGluZUhlaWdodCwgbGV0dGVyU3BhY2luZyB9ID0gbG9va0FuZEZlZWwudHlwb2dyYXBoeSBhcyBhbnk7XG4gIHJldHVybiB7XG4gICAgLi4udjNSb290Q29uZmlnLFxuICAgIHVpQ29uZmlnczoge1xuICAgICAgLi4udWlDb25maWdzLFxuICAgICAgZmxvYXRpbmdCdXR0b246IHtcbiAgICAgICAgLi4uZmxvYXRpbmdCdXR0b24sXG4gICAgICAgIHBvc2l0aW9uOiBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlKFxuICAgICAgICAgIHYzUm9vdENvbmZpZy51aUNvbmZpZ3M/LmZsb2F0aW5nQnV0dG9uPy5wb3NpdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbG9va0FuZEZlZWw6IHtcbiAgICAgICAgLi4ubG9va0FuZEZlZWwsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvRGFya1NyYzogbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29EYXJrU3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICBjaGF0SGVhZGVyTG9nb0xpZ2h0U3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0xpZ2h0U3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICB0eXBvZ3JhcGh5OiB7XG4gICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeSxcbiAgICAgICAgICBmb250U2l6ZToge1xuICAgICAgICAgICAgYjE6IGZvbnRTaXplPy5iMSB8fCBmb250U2l6ZT8uYl8xLFxuICAgICAgICAgICAgYjI6IGZvbnRTaXplPy5iMiB8fCBmb250U2l6ZT8uYl8yLFxuICAgICAgICAgICAgYjM6IGZvbnRTaXplPy5iMyB8fCBmb250U2l6ZT8uYl8zLFxuICAgICAgICAgICAgYjQ6IGZvbnRTaXplPy5iNCB8fCBmb250U2l6ZT8uYl80LFxuICAgICAgICAgICAgYjU6IGZvbnRTaXplPy5iNSB8fCBmb250U2l6ZT8uYl81LFxuICAgICAgICAgICAgaDE6IGZvbnRTaXplPy5oMSB8fCBmb250U2l6ZT8uaF8xLFxuICAgICAgICAgICAgaDI6IGZvbnRTaXplPy5oMiB8fCBmb250U2l6ZT8uaF8yLFxuICAgICAgICAgICAgaDM6IGZvbnRTaXplPy5oMyB8fCBmb250U2l6ZT8uaF8zLFxuICAgICAgICAgICAgbDE6IGZvbnRTaXplPy5sMSB8fCBmb250U2l6ZT8ubF8xLFxuICAgICAgICAgICAgbDI6IGZvbnRTaXplPy5sMiB8fCBmb250U2l6ZT8ubF8yLFxuICAgICAgICAgICAgdDE6IGZvbnRTaXplPy50MSB8fCBmb250U2l6ZT8udF8xLFxuICAgICAgICAgICAgdDI6IGZvbnRTaXplPy50MiB8fCBmb250U2l6ZT8udF8yLFxuICAgICAgICAgICAgdDM6IGZvbnRTaXplPy50MyB8fCBmb250U2l6ZT8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGV0dGVyU3BhY2luZzoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5sZXR0ZXJTcGFjaW5nLFxuICAgICAgICAgICAgYjE6IGxldHRlclNwYWNpbmc/LmIxIHx8IGxldHRlclNwYWNpbmc/LmJfMSxcbiAgICAgICAgICAgIGIyOiBsZXR0ZXJTcGFjaW5nPy5iMiB8fCBsZXR0ZXJTcGFjaW5nPy5iXzIsXG4gICAgICAgICAgICBiMzogbGV0dGVyU3BhY2luZz8uYjMgfHwgbGV0dGVyU3BhY2luZz8uYl8zLFxuICAgICAgICAgICAgYjQ6IGxldHRlclNwYWNpbmc/LmI0IHx8IGxldHRlclNwYWNpbmc/LmJfNCxcbiAgICAgICAgICAgIGI1OiBsZXR0ZXJTcGFjaW5nPy5iNSB8fCBsZXR0ZXJTcGFjaW5nPy5iXzUsXG4gICAgICAgICAgICBoMTogbGV0dGVyU3BhY2luZz8uaDEgfHwgbGV0dGVyU3BhY2luZz8uaF8xLFxuICAgICAgICAgICAgaDI6IGxldHRlclNwYWNpbmc/LmgyIHx8IGxldHRlclNwYWNpbmc/LmhfMixcbiAgICAgICAgICAgIGgzOiBsZXR0ZXJTcGFjaW5nPy5oMyB8fCBsZXR0ZXJTcGFjaW5nPy5oXzMsXG4gICAgICAgICAgICBsMTogbGV0dGVyU3BhY2luZz8ubDEgfHwgbGV0dGVyU3BhY2luZz8ubF8xLFxuICAgICAgICAgICAgbDI6IGxldHRlclNwYWNpbmc/LmwyIHx8IGxldHRlclNwYWNpbmc/LmxfMixcbiAgICAgICAgICAgIHQxOiBsZXR0ZXJTcGFjaW5nPy50MSB8fCBsZXR0ZXJTcGFjaW5nPy50XzEsXG4gICAgICAgICAgICB0MjogbGV0dGVyU3BhY2luZz8udDIgfHwgbGV0dGVyU3BhY2luZz8udF8yLFxuICAgICAgICAgICAgdDM6IGxldHRlclNwYWNpbmc/LnQzIHx8IGxldHRlclNwYWNpbmc/LnRfMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IHtcbiAgICAgICAgICAgIC4uLmxvb2tBbmRGZWVsLnR5cG9ncmFwaHkubGluZUhlaWdodCxcbiAgICAgICAgICAgICcxMTQnOiBsaW5lSGVpZ2h0Py5saF8xMTQgfHwgbGluZUhlaWdodD8uWzExNF0sXG4gICAgICAgICAgICAnMTE2JzogbGluZUhlaWdodD8ubGhfMTE2IHx8IGxpbmVIZWlnaHQ/LlsxMTZdLFxuICAgICAgICAgICAgJzExOCc6IGxpbmVIZWlnaHQ/LmxoXzExOCB8fCBsaW5lSGVpZ2h0Py5bMTE4XSxcbiAgICAgICAgICAgICcxMjAnOiBsaW5lSGVpZ2h0Py5saF8xMjAgfHwgbGluZUhlaWdodD8uWzEyMF0sXG4gICAgICAgICAgICAnMTI0JzogbGluZUhlaWdodD8ubGhfMTI0IHx8IGxpbmVIZWlnaHQ/LlsxMjRdLFxuICAgICAgICAgICAgJzEyOCc6IGxpbmVIZWlnaHQ/LmxoXzEyOCB8fCBsaW5lSGVpZ2h0Py5bMTI4XSxcbiAgICAgICAgICAgICcxMzAnOiBsaW5lSGVpZ2h0Py5saF8xMzAgfHwgbGluZUhlaWdodD8uWzEzMF0sXG4gICAgICAgICAgICAnMTMzJzogbGluZUhlaWdodD8ubGhfMTMzIHx8IGxpbmVIZWlnaHQ/LlsxMzNdLFxuICAgICAgICAgICAgJzE0MCc6IGxpbmVIZWlnaHQ/LmxoXzE0MCB8fCBsaW5lSGVpZ2h0Py5bMTQwXSxcbiAgICAgICAgICAgICcxNDgnOiBsaW5lSGVpZ2h0Py5saF8xNDggfHwgbGluZUhlaWdodD8uWzE0OF0sXG4gICAgICAgICAgICBiMTogbGluZUhlaWdodD8uYjEgfHwgbGluZUhlaWdodD8uYl8xLFxuICAgICAgICAgICAgYjI6IGxpbmVIZWlnaHQ/LmIyIHx8IGxpbmVIZWlnaHQ/LmJfMixcbiAgICAgICAgICAgIGIzOiBsaW5lSGVpZ2h0Py5iMyB8fCBsaW5lSGVpZ2h0Py5iXzMsXG4gICAgICAgICAgICBiNDogbGluZUhlaWdodD8uYjQgfHwgbGluZUhlaWdodD8uYl80LFxuICAgICAgICAgICAgYjU6IGxpbmVIZWlnaHQ/LmI1IHx8IGxpbmVIZWlnaHQ/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsaW5lSGVpZ2h0Py5oMSB8fCBsaW5lSGVpZ2h0Py5oXzEsXG4gICAgICAgICAgICBoMjogbGluZUhlaWdodD8uaDIgfHwgbGluZUhlaWdodD8uaF8yLFxuICAgICAgICAgICAgaDM6IGxpbmVIZWlnaHQ/LmgzIHx8IGxpbmVIZWlnaHQ/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsaW5lSGVpZ2h0Py5sMSB8fCBsaW5lSGVpZ2h0Py5sXzEsXG4gICAgICAgICAgICBsMjogbGluZUhlaWdodD8ubDIgfHwgbGluZUhlaWdodD8ubF8yLFxuICAgICAgICAgICAgdDE6IGxpbmVIZWlnaHQ/LnQxIHx8IGxpbmVIZWlnaHQ/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsaW5lSGVpZ2h0Py50MiB8fCBsaW5lSGVpZ2h0Py50XzIsXG4gICAgICAgICAgICB0MzogbGluZUhlaWdodD8udDMgfHwgbGluZUhlaWdodD8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG4vLyBUdXJucyBhIHJhdyBwcm9kdWN0c0NvbmZpZyBwYXlsb2FkIChmcm9tIGdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uIG9yXG4vLyBnZXRXaWRnZXRDb25maWcpIGludG8gdGhlIGNhbWVsQ2FzZSBHcmFwaFFsQ29uZmlnVmFsdWVzIHNoYXBlIHRoZSByZXN0IG9mXG4vLyB0aGUgdG9vbGtpdCBjb25zdW1lcy4gUmV0dXJucyBtb2NrIGNvbmZpZyB3aGVuIGNvbG9ycyBhcmUgYWJzZW50LlxuY29uc3QgdHJhbnNmb3JtVjNQcm9kdWN0c0NvbmZpZyA9IChcbiAgcHJvZHVjdHNDb25maWc6XG4gICAgfCB7XG4gICAgICAgIGZyb250ZW5kPzogeyB2YWx1ZXM/OiB7IG1lcmNoYW50X292ZXJyaWRlX2Nzcz86IHN0cmluZyB9IH07XG4gICAgICAgIHZfdGhyZWVfY29uZmlnPzogeyB2YWx1ZXM/OiBhbnkgfTtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZCxcbik6IEdyYXBoUWxDb25maWdWYWx1ZXMgPT4ge1xuICBjb25zdCB2M1Jvb3RDb25maWcgPSBwcm9kdWN0c0NvbmZpZz8udl90aHJlZV9jb25maWc/LnZhbHVlcztcbiAgY29uc3QgZnJvbnRlbmRWYWx1ZXMgPSBwcm9kdWN0c0NvbmZpZz8uZnJvbnRlbmQ/LnZhbHVlcztcblxuICBpZiAoIXYzUm9vdENvbmZpZz8uY29sb3JzKSB7XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCd0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnIHwgTm8gY29sb3JzIGZvdW5kLCByZXR1cm5pbmcgbW9jayBjb25maWcnKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3JzQ29uZmlnOiBtb2NrVjNDb2xvcnNDb25maWcsXG4gICAgICBmcm9udGVuZENvbmZpZzogbW9ja1YzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgb3JnUGFnZUNvbmZpZzoge1xuICAgICAgICBwYWdlVmFyaWFudHM6IERFRkFVTFRfUEFHRV9WQVJJQU5UUyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczoge30sXG4gICAgICAgIG1vdW50aW5nQ29uZmlnczoge30sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdCB2M0Zyb250ZW5kQ29uZmlnID0gdjNGcm9udGVuZENvbmZpZ0NsZWFudXAoXG4gICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICApO1xuXG4gIGNvbnN0IG1lcmNoYW50T3ZlcnJpZGVDc3MgPVxuICAgIHYzRnJvbnRlbmRDb25maWcudWlDb25maWdzPy5tZXJjaGFudE92ZXJyaWRlQ3NzIHx8IGZyb250ZW5kVmFsdWVzPy5tZXJjaGFudF9vdmVycmlkZV9jc3M7XG5cbiAgY29uc3QgdjNNb3VudGluZ0NvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy5tb3VudGluZ19jb25maWdzKSA/P1xuICAgIFtdKSBhcyB1bmtub3duIGFzIHsga2V5OiBzdHJpbmc7IGNvbmZpZzogV2lkZ2V0TW91bnRpbmdDb25maWcgfVtdO1xuICBjb25zdCB2M01vdW50aW5nQ29uZmlncyA9IHYzTW91bnRpbmdDb25maWdzQXJyYXkucmVkdWNlKFxuICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnKGNvbmZpZywga2V5KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5sb2dXYXJuKCdJbnZhbGlkIG1vdW50aW5nIGNvbmZpZywgc2tpcHBpbmcnLCBlcnJvciwgeyBrZXkgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICApO1xuXG4gIGNvbnN0IHYzV2lkZ2V0Q29uZmlnc0FycmF5ID0gKHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LndpZGdldF9jb25maWdzKSA/P1xuICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gIGNvbnN0IHYzV2lkZ2V0Q29uZmlncyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICB2M1dpZGdldENvbmZpZ3NBcnJheT8ubWFwKCh7IHdpZGdldENvbmZpZ0lkLCAuLi5yZXN0IH06IFdpZGdldENvbmZpZ1YzKSA9PiBbXG4gICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgIHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfSBhcyBXaWRnZXRDb25maWdWMyxcbiAgICBdKSxcbiAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG5cbiAgY29uc3QgdjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBBcnJheS5pc0FycmF5KHYzUm9vdENvbmZpZz8ucGFnZV92YXJpYW50cylcbiAgICA/IHYzUm9vdENvbmZpZy5wYWdlX3ZhcmlhbnRzLnJlZHVjZSgoYWNjOiBQYWdlVmFyaWFudENvbmZpZ1tdLCB2YXJpYW50OiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWNjLnB1c2godmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHModmFyaWFudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci5sb2dXYXJuKCdJbnZhbGlkIHBhZ2UgdmFyaWFudCwgc2tpcHBpbmcnLCBlcnJvciwgeyB2YXJpYW50IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSlcbiAgICA6IERFRkFVTFRfUEFHRV9WQVJJQU5UUztcblxuICBjb25zdCB2M0NvbG9yc0NvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LmNvbG9ycz8udmFsdWVzKTtcblxuICByZXR1cm4ge1xuICAgIGNvbG9yc0NvbmZpZzogdjNDb2xvcnNDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSxcbiAgICBmcm9udGVuZENvbmZpZzoge1xuICAgICAgLi4uKHYzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlKSxcbiAgICAgIG1lcmNoYW50T3ZlcnJpZGVDc3MsXG4gICAgICB3aWRnZXRDb25maWdzOiB2M1dpZGdldENvbmZpZ3MsXG4gICAgfSxcbiAgICBvcmdQYWdlQ29uZmlnOiB7XG4gICAgICBwYWdlVmFyaWFudHM6IHYzcGFnZVZhcmlhbnRzLFxuICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgbW91bnRpbmdDb25maWdzOiB2M01vdW50aW5nQ29uZmlncyxcbiAgICB9LFxuICB9O1xufTtcblxuLy8gVGhlIGNhbWVsQ2FzZSBgZXhwZXJpbWVudEFzc2lnbm1lbnRzYCBHcmFwaFFMIHNoYXBlIOKGkiB0aGUgc25ha2VfY2FzZSB3aXJlXG4vLyBzaGFwZSBhbXBsaXR1ZGVTZXJ2aWNlIHJlYWRzIChpdCBwcmV2aW91c2x5IGFycml2ZWQgZnJvbSBSRVNUIC92MS9vcmcvY29uZmlnKS5cbmNvbnN0IHRvRXhwZXJpbWVudEFzc2lnbm1lbnRzID0gKFxuICByYXc6XG4gICAgfCBSZWFkb25seUFycmF5PHtcbiAgICAgICAgbGF5ZXJOYW1lPzogc3RyaW5nO1xuICAgICAgICBuYW1lc3BhY2U/OiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFsnbmFtZXNwYWNlJ107XG4gICAgICAgIGFsbG9jYXRlZEV4cGVyaW1lbnROYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgZ3JvdXBOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH0+XG4gICAgfCB1bmRlZmluZWQsXG4pOiBPcmdDb25maWdFeHBlcmltZW50QXNzaWdubWVudFtdID0+XG4gIChyYXcgPz8gW10pLm1hcChhID0+ICh7XG4gICAgbGF5ZXJfbmFtZTogYS5sYXllck5hbWUsXG4gICAgbmFtZXNwYWNlOiBhLm5hbWVzcGFjZSxcbiAgICBhbGxvY2F0ZWRfZXhwZXJpbWVudF9uYW1lOiBhLmFsbG9jYXRlZEV4cGVyaW1lbnROYW1lLFxuICAgIGdyb3VwX25hbWU6IGEuZ3JvdXBOYW1lLFxuICB9KSk7XG5cbi8vIFRoZSB1bmlmaWVkIGBnZXRXaWRnZXRDb25maWdgIGNvbmZpZyBwYXRoIOKAlCBub3cgdGhlIHNpbmdsZSBzb3VyY2Ugb2Ygc2Vzc2lvblxuLy8gY29uZmlnLiBSZXR1cm5zIGV2ZXJ5dGhpbmcgdGhlIGNsaWVudCBuZWVkcyBpbiBvbmUgY2FsbDogb3JnIGlkZW50aXR5LFxuLy8gZmVhdHVyZSBnYXRlcywgYW5kIGV4cGVyaW1lbnQgYXNzaWdubWVudHMgKHdoaWNoIHVzZWQgdG8gY29tZSBmcm9tIFJFU1Rcbi8vIGAvdjEvb3JnL2NvbmZpZ2ApLCBwbHVzIHRoZSBwcm9kdWN0c0NvbmZpZyBhbmQgdGhlIHJlc29sdXRpb24gbWV0YWRhdGEgcHltb25vXG4vLyB1c2VkIHRvIHBpY2sgdGhlIHZlcnNpb24gKGNhbGxlcnMgdGhyZWFkIGByZXNvbHV0aW9uLmJhc2VWZXJzaW9uYCBpbnRvXG4vLyBkb3duc3RyZWFtIGluZmVyZW5jZSBzbyBpdCdzIHNjb3BlZCB0byB0aGUgdmVyc2lvbiB0aGF0IHByb2R1Y2VkIHRoZSByZW5kZXJlZFxuLy8gd2lkZ2V0cykuIGBnYXRlTmFtZXNgIHNlbGVjdHMgd2hpY2ggZ2F0ZXMgdG8gZXZhbHVhdGU7IGBzb3VyY2VgIGZlZWRzIFN0YXRzaWdcbi8vIHVzZXIgcHJvcGVydGllcy4gQSBgc3BpZmZ5X2NvbmZpZ192ZXJzaW9uYCAvIGBlbnZpdmVfY29uZmlnX3ZlcnNpb25gIFVSTFxuLy8gcGFyYW0sIHdoZW4gcHJlc2VudCwgaXMgdGhyZWFkZWQgdGhyb3VnaCBhcyB0aGUgYHZlcnNpb25gIHZhcmlhYmxlIHRvIHBpbiBhXG4vLyBzcGVjaWZpYyB2ZXJzaW9uIChieXBhc3NlcyB0aGUgbWVyY2hhbnQgZXhwZXJpbWVudCDigJQgUUEgLyByb2xsYmFjaykuXG4vL1xuLy8gVGhyb3dzIG9uIG5ldHdvcmsvR3JhcGhRTCBmYWlsdXJlOiB3aXRoIG9yZyArIGdhdGVzIHNvdXJjZWQgaGVyZSwgdGhlcmUgaXMgbm9cbi8vIHBhcnRpYWwtcmVuZGVyIGZhbGxiYWNrIChpbmplY3QudHMgYWJvcnRzIGluamVjdGlvbiBvbiB0aGUgdGhyb3cpLCBtYXRjaGluZ1xuLy8gaG93IHRoZSBvbGQgL3YxL29yZy9jb25maWcgY2FsbCBiZWhhdmVkLlxuZXhwb3J0IGNvbnN0IGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcgPSBhc3luYyAoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgYXBpS2V5OiBzdHJpbmcsXG4gIHVzZXJJZDogc3RyaW5nLFxuICBnYXRlTmFtZXM6IHN0cmluZ1tdLFxuICBzb3VyY2U6IHN0cmluZyxcbik6IFByb21pc2U8RW52aXZlU2VydmljZUNvbmZpZz4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGdldFdpZGdldENvbmZpZ1F1ZXJ5KCk7XG4gIGNvbnN0IHZlcnNpb24gPSBjb25maWdWZXJzaW9uT3ZlcnJpZGUoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXM6IHsgdXNlcklkLCB2ZXJzaW9uLCBnYXRlTmFtZXMsIHNvdXJjZSB9IH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmlmaWVkIGNvbmZpZyByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBpZiAocmVzdWx0LmVycm9ycykge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5pZmllZCBjb25maWcgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gIH1cblxuICBjb25zdCBtZSA9IHJlc3VsdC5kYXRhPy5tZTtcbiAgY29uc3Qgd2lkZ2V0Q29uZmlnID0gbWU/LmdldFdpZGdldENvbmZpZztcbiAgY29uc3Qgb3JnID0gbWU/Lm9yZztcblxuICAvLyBBIG1hbGZvcm1lZCBwcm9kdWN0cyBjb25maWcgKGUuZy4gYW4gaW52YWxpZCBmbG9hdGluZy1idXR0b24gcG9zaXRpb24pXG4gIC8vIGRlZ3JhZGVzIHRvIG5vIGNvbmZpZyDigJQgd2lkZ2V0cyBmYWxsIGJhY2sgdG8gdGhlaXIgbW9jayBkZWZhdWx0cyDigJQgV0lUSE9VVFxuICAvLyBsb3NpbmcgdGhlIG9yZyAvIGdhdGVzIC8gZXhwZXJpbWVudHMgdGhhdCBjYW1lIGJhY2sgZmluZS4gVGhlIGZldGNoIGl0c2VsZlxuICAvLyBzdGlsbCB0aHJvd3MgYWJvdmU7IG9ubHkgdGhlIHByb2R1Y3RzLWNvbmZpZyB0cmFuc2Zvcm0gaXMgZ3VhcmRlZCBoZXJlLlxuICBjb25zdCByZXNvbHV0aW9uID0gd2lkZ2V0Q29uZmlnPy5yZXNvbHV0aW9uIGFzIEV4cGVyaW1lbnRDb25maWdSZXNvbHV0aW9uTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIGxldCBvcmdDb25maWc6IEdyYXBoUWxDb25maWdWYWx1ZXM7XG4gIHRyeSB7XG4gICAgb3JnQ29uZmlnID0geyAuLi50cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHdpZGdldENvbmZpZz8ucHJvZHVjdHNDb25maWcpLCByZXNvbHV0aW9uIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5sb2dFcnJvcignZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyB8IEVycm9yIHRyYW5zZm9ybWluZyBwcm9kdWN0cyBjb25maWcnLCBlcnIpO1xuICAgIG9yZ0NvbmZpZyA9IHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQsIHJlc29sdXRpb24gfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gR3JhcGhRTCBPcmdhbml6YXRpb24gaXMgY2FtZWxDYXNlOyB0aGUgcmVzdCBvZiB0aGUgYXBwIHJlYWRzIHRoZVxuICAgIC8vIHNuYWtlX2Nhc2Ugc2hhcGUgL3YxL29yZy9jb25maWcgdXNlZCB0byByZXR1cm4uIGBzdGF0dXNgIGlzbid0IGV4cG9zZWQgYnlcbiAgICAvLyB0aGUgR3JhcGhRTCB0eXBlIChhbmQgaXNuJ3QgY29uc3VtZWQgZG93bnN0cmVhbSkg4oCUIGRlZmF1bHQgaXQuXG4gICAgb3JnOiB7XG4gICAgICBvcmc6IHtcbiAgICAgICAgaWQ6IG9yZz8uaWQgPz8gJycsXG4gICAgICAgIHNob3J0X25hbWU6IG9yZz8uc2hvcnROYW1lID8/ICcnLFxuICAgICAgICBkaXNwbGF5X25hbWU6IG9yZz8uZGlzcGxheU5hbWUgPz8gJycsXG4gICAgICAgIGRvbWFpbjogb3JnPy5kb21haW4gPz8gJycsXG4gICAgICAgIHN0YXR1czogJycsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG9yZz8uY3JlYXRlZEF0ID8/ICcnLFxuICAgICAgICB1cGRhdGVkX2F0OiBvcmc/LnVwZGF0ZWRBdCA/PyAnJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBnYXRlczogKFxuICAgICAgKHdpZGdldENvbmZpZz8uZ2F0ZXMgPz8gW10pIGFzIEFycmF5PHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgdmFsdWU/OiBib29sZWFuO1xuICAgICAgICBncm91cE5hbWU/OiBzdHJpbmc7XG4gICAgICB9PlxuICAgICkubWFwKFxuICAgICAgKGcpOiBPcmdDb25maWdGZWF0dXJlR2F0ZSA9PiAoe1xuICAgICAgICBuYW1lOiBnLm5hbWUsXG4gICAgICAgIHZhbHVlOiBnLnZhbHVlLFxuICAgICAgICBncm91cE5hbWU6IGcuZ3JvdXBOYW1lLFxuICAgICAgfSksXG4gICAgKSxcbiAgICBleHBlcmltZW50X2Fzc2lnbm1lbnRzOiB0b0V4cGVyaW1lbnRBc3NpZ25tZW50cyh3aWRnZXRDb25maWc/LmV4cGVyaW1lbnRBc3NpZ25tZW50cyksXG4gICAgb3JnQ29uZmlnLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQTRCQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8scUJBQXFCO0FBSy9DLE1BQWFDLHdCQUE2QyxDQUN4RDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FBQyxFQUFFLFVBQVVDLDJDQUFvQixhQUFhLENBQUM7Q0FDOUQsRUFDRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2Isb0JBQW9CO0NBQ3BCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FBQyxFQUFFLFVBQVVBLDJDQUFvQixhQUFhLENBQUM7Q0FDOUQsQ0FDRjtBQUlELE1BQU0sNEJBQTRCO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0Q7QUFFRCxNQUFNLDBCQUEwQixhQUE2QztBQUMzRSxLQUFLLDBCQUFnRCxTQUFTLFNBQVMsQ0FDckUsUUFBTztBQUVULE9BQU0sSUFBSSxNQUFNLHFCQUFxQixXQUFXOztBQUdsRCxNQUFNLDJCQUNKLGlCQUM2QjtDQUM3QixNQUFNLEVBQUUsY0FBYztBQUN0QixLQUFJLENBQUMsVUFBVyxRQUFPO0NBQ3ZCLE1BQU0sRUFBRSxnQkFBZ0IsZ0JBQWdCO0FBQ3hDLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFhLFFBQU87Q0FDNUMsTUFBTSxFQUFFLFVBQVUsWUFBWSxrQkFBa0IsWUFBWTtBQUM1RCxRQUFPO0VBQ0wsR0FBRztFQUNILFdBQVc7R0FDVCxHQUFHO0dBQ0gsZ0JBQWdCO0lBQ2QsR0FBRztJQUNILFVBQVUsdUJBQ1IsYUFBYSxXQUFXLGdCQUFnQixTQUN6QztJQUNGO0dBQ0QsYUFBYTtJQUNYLEdB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
|