@projectcor/maia-components 2.35.6 → 2.35.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +14 -4
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +12 -3
- package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +3 -8
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +5 -11
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +5 -11
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +5 -11
- package/lib/hooks/useChatManager/useChatManager.js +2 -2
- package/lib/store/sessions/sessionStreamManager.js +4 -4
- package/lib/store/useUsageStore.js +8 -5
- package/lib/utils/usageBlockedMessage.js +11 -0
- package/package.json +1 -1
|
@@ -469,7 +469,7 @@ export var sessionStreamManager = {
|
|
|
469
469
|
store().setActivity(sessionId, null);
|
|
470
470
|
store().setStatus(sessionId, 'error');
|
|
471
471
|
if (isMaiaApiError(_t4) && isUsageQuotaExceededError(_t4.code)) {
|
|
472
|
-
getUsageStoreState().applyQuotaExceeded(
|
|
472
|
+
getUsageStoreState().applyQuotaExceeded();
|
|
473
473
|
(_callbacks$onError2 = callbacks.onError) === null || _callbacks$onError2 === void 0 || _callbacks$onError2.call(callbacks, _t4.code, _t4.message);
|
|
474
474
|
} else {
|
|
475
475
|
(_callbacks$onError3 = callbacks.onError) === null || _callbacks$onError3 === void 0 || _callbacks$onError3.call(callbacks);
|
|
@@ -579,7 +579,7 @@ export var sessionStreamManager = {
|
|
|
579
579
|
store().setActivity(sessionId, null);
|
|
580
580
|
store().setStatus(sessionId, 'error');
|
|
581
581
|
if (isMaiaApiError(_t5) && isUsageQuotaExceededError(_t5.code)) {
|
|
582
|
-
getUsageStoreState().applyQuotaExceeded(
|
|
582
|
+
getUsageStoreState().applyQuotaExceeded();
|
|
583
583
|
(_callbacks$onError4 = callbacks.onError) === null || _callbacks$onError4 === void 0 || _callbacks$onError4.call(callbacks, _t5.code, _t5.message);
|
|
584
584
|
} else {
|
|
585
585
|
(_callbacks$onError5 = callbacks.onError) === null || _callbacks$onError5 === void 0 || _callbacks$onError5.call(callbacks);
|
|
@@ -730,7 +730,7 @@ export var sessionStreamManager = {
|
|
|
730
730
|
store().setActivity(sessionId, null);
|
|
731
731
|
store().setStatus(sessionId, 'error');
|
|
732
732
|
if (isMaiaApiError(_t7) && isUsageQuotaExceededError(_t7.code)) {
|
|
733
|
-
getUsageStoreState().applyQuotaExceeded(
|
|
733
|
+
getUsageStoreState().applyQuotaExceeded();
|
|
734
734
|
(_callbacks$onError6 = callbacks.onError) === null || _callbacks$onError6 === void 0 || _callbacks$onError6.call(callbacks, _t7.code, _t7.message);
|
|
735
735
|
} else {
|
|
736
736
|
(_callbacks$onError7 = callbacks.onError) === null || _callbacks$onError7 === void 0 || _callbacks$onError7.call(callbacks);
|
|
@@ -794,4 +794,4 @@ export var sessionStreamManager = {
|
|
|
794
794
|
});
|
|
795
795
|
}
|
|
796
796
|
};
|
|
797
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiaXNNYWlhQXBpRXJyb3IiLCJnZXRVc2FnZVN0b3JlU3RhdGUiLCJpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiY2h1bmsiLCJfY2h1bmsiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc1ByZUFwcHJvdmVkIiwiX3JlZjMiLCJfdCIsIl90MiIsIl90MyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0IiwiY29udGVudCIsIl9jYWxsYmFja3Mkb25TdHJlYW1VcCIsInNldFRleHQiLCJvblN0cmVhbVVwZGF0ZSIsImNhbGwiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidG9FbWl0IiwiY2xlYXJUaW1lb3V0IiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uU3RhcnRXcmkiLCJwYXRjaE1ldGEiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJzZXRTdGF0dXMiLCJzZXRBY3Rpdml0eSIsIm9uU3RhcnRXcml0aW5nIiwic3luY0xpdmVOYXJyYXRpb24iLCJtYXJrQW5zd2VyUmVzZXQiLCJwYXlsb2FkIiwiX3BheWxvYWQkYWdlbnRfaWQiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfcmVmMiIsIl9jYWxsYmFja3Mkb25GaW5pc2hTdCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwic3ViYWdlbnRSYXciLCJzdWJhZ2VudCIsInJlc29sdmVkQ29udGV4dCIsInJlc29sdmVkX2NvbnRleHQiLCJyZWFzb25pbmciLCJmaW5pc2giLCJmaW5pc2hQYXlsb2FkIiwib25GaW5pc2hTdHJlYW0iLCJpc1N0b3BwZWQiLCJjYW5jZWwiLCJhYnJ1cHQiLCJyZWFkIiwic2VudCIsImRlY29kZSIsInN0cmVhbSIsInNwbGl0IiwicG9wIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsIl9zbGljZWRUb0FycmF5IiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImRlbHRhIiwiaSIsImFwcGVuZFRoaW5raW5nIiwicGhhc2UiLCJtZXNzYWdlIiwidG9vbCIsInR5cGUiLCJzdGF0dXMiLCJjYXB0dXJlTGVhZGluZ0Zyb21Cb2R5IiwiYXBwbHlTdGVwIiwic2hvdWxkQ2xlYXJTdHJlYW1Gb3JMZWFkaW5nIiwibm9kZSIsInVuZGVmaW5lZCIsInRocmVhZF9pZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsImF1dG9fYXBwcm92ZWQiLCJhcHByb3ZhbF9zdGF0dXMiLCJjbGVhciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsInBlbmRpbmdfYWN0aW9ucyIsImxlbmd0aCIsImNvbnNvbGUiLCJlcnJvciIsInNldEVycm9yIiwib25FcnJvciIsIndhcm4iLCJlIiwiZiIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwic2Vzc2lvblN0cmVhbU1hbmFnZXIiLCJpc0FjdGl2ZSIsImdldEFjdGl2ZUNvdW50IiwiZ2V0QWN0aXZlU2Vzc2lvbklkcyIsImZyb20iLCJrZXlzIiwic3RhcnRTdHJlYW0iLCJfY2FsbGVlMiIsInJlcXVlc3QiLCJhY3Rpdml0eU9wdGlvbnMiLCJhZ2VudE5hbWUiLCJjb250cm9sbGVyIiwiX2NhbGxiYWNrcyRvbkVycm9yMiIsIl9jYWxsYmFja3Mkb25FcnJvcjMiLCJfdDQiLCJfY29udGV4dDIiLCJzdGFydGVkIiwicmVhc29uIiwiQWJvcnRDb250cm9sbGVyIiwic2V0IiwiZW5zdXJlU2Vzc2lvbiIsIl9vYmplY3RTcHJlYWQiLCJzdGFydCIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsInNpZ25hbCIsImNvZGUiLCJhcHBseVF1b3RhRXhjZWVkZWQiLCJzdGFydENvbnRpbnVlU3RyZWFtIiwiX2NhbGxlZTMiLCJfcmVmNCIsImNvbnRpbnVlUmVxdWVzdCIsInNzZVBhcmFtcyIsIl9jYWxsYmFja3Mkb25FcnJvcjQiLCJfY2FsbGJhY2tzJG9uRXJyb3I1IiwiX3Q1IiwiX2NvbnRleHQzIiwiY29udGludWVUaHJlYWQiLCJvayIsImNvbmNhdCIsInN0YXJ0UmV0cnlTdHJlYW0iLCJfY2FsbGVlNCIsInJldHJ5UmVxdWVzdCIsImRldGFpbCIsIl9jYWxsYmFja3Mkb25FcnJvcjYiLCJfY2FsbGJhY2tzJG9uRXJyb3I3IiwiX3Q2IiwiX3Q3IiwiX2NvbnRleHQ0IiwiYmxvY2tlZCIsInJldHJ5Q29tcGxldGlvbiIsImpzb24iLCJzdG9wU3RyZWFtIiwiX2NhbGxiYWNrcyRvblN0b3AiLCJhYm9ydCIsInBhcnRpYWxUZXh0IiwiZ2V0U25hcHNob3QiLCJ0ZXh0Iiwib25TdG9wIiwiYWJvcnRTaWxlbnRseSIsIl9zdG9yZSRnZXRNZXRhIiwiZ2V0TWV0YSIsImFib3J0QWxsIiwiX3RoaXMiLCJmb3JFYWNoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgaXNNYWlhQXBpRXJyb3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9NYWlhQXBpRXJyb3InXG5pbXBvcnQgeyBnZXRVc2FnZVN0b3JlU3RhdGUsIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IgfSBmcm9tICcuLi91c2VVc2FnZVN0b3JlJ1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHtcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UnXG5pbXBvcnQgdHlwZSB7IFJlYXNvbmluZ1N0ZXBQYXlsb2FkLCBSZWFzb25pbmdUcmFjZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9yZWFzb25pbmcnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4vc2Vzc2lvblN0cmVhbWluZ1RleHQnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCB9IGZyb20gJy4vc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBzZXNzaW9uSGl0bENvbnRleHQgfSBmcm9tICcuL3Nlc3Npb25IaXRsQ29udGV4dCdcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbkZpbmlzaFBheWxvYWQsIFNlc3Npb25TdHJlYW1DYWxsYmFja3MsIFN0YXJ0U3RyZWFtUmVzdWx0IH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcblxudHlwZSBPcmNoZXN0cmF0b3JSZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yPlswXVxudHlwZSBDb250aW51ZVRocmVhZFJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZD5bMF1cbnR5cGUgUmV0cnlDb21wbGV0aW9uUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbj5bMF1cblxuLyoqIENvbXBhdGlibGUgY29uIGVsIGB0YCBkZSBpMThuZXh0ICh1c28gZGUgdW5hIHNvbGEga2V5KS4gKi9cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG50eXBlIFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgcmVxdWVzdDogT3JjaGVzdHJhdG9yUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBTdGFydENvbnRpbnVlU3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgY29udGludWVSZXF1ZXN0OiBDb250aW51ZVRocmVhZFJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgU3RhcnRSZXRyeVN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIHJldHJ5UmVxdWVzdDogUmV0cnlDb21wbGV0aW9uUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBBY3RpdmVTdHJlYW0gPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIGNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuICBpc1N0b3BwZWQ6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBNw6F4aW1vIGRlIHNlc2lvbmVzIGdlbmVyYW5kbyBlbiBwYXJhbGVsby4gUHJvdGVnZSByZWQvcmVjdXJzb3MgZGVsIGNsaWVudGUuXG4gKiBBanVzdGFibGUgYSBmdXR1cm8gdsOtYSBmbGFnIGRlbCBob3N0LlxuICovXG5leHBvcnQgY29uc3QgTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9IDRcblxuY29uc3QgU1RSRUFNX1RIUk9UVExFX01TID0gMTZcblxuY29uc3QgYWN0aXZlU3RyZWFtcyA9IG5ldyBNYXA8c3RyaW5nLCBBY3RpdmVTdHJlYW0+KClcblxuY29uc3Qgc3RvcmUgPSAoKSA9PiB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKClcblxuY29uc3QgaXNTdHJlYW1BY3RpdmUgPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiBib29sZWFuID0+IGFjdGl2ZVN0cmVhbXMuaGFzKHNlc3Npb25JZClcblxuY29uc3QgZ2V0QWN0aXZlU3RyZWFtQ291bnQgPSAoKTogbnVtYmVyID0+IGFjdGl2ZVN0cmVhbXMuc2l6ZVxuXG5jb25zdCBwYXJzZVNlc3Npb25TU0UgPSBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlLCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSwgcGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY2FsbGJhY2tzLCB0IH0gPSBwYXJhbXNcbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPSBwYXJhbXMuaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpXG5cbiAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgdGhyb3R0bGVUaW1lcjogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICBjb25zdCBmbHVzaFRvU3RvcmVzID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnNldFRleHQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250ZW50KVxuICAgIGNhbGxiYWNrcy5vblN0cmVhbVVwZGF0ZT8uKGNvbnRlbnQpXG4gIH1cblxuICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHBlbmRpbmdDb250ZW50ID0gY29udGVudFxuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgIHRocm90dGxlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgIGZsdXNoVG9TdG9yZXModG9FbWl0KVxuICAgICAgfVxuICAgIH0sIFNUUkVBTV9USFJPVFRMRV9NUylcbiAgfVxuXG4gIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgZmx1c2hUb1N0b3Jlcyh0b0VtaXQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUsIGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3dyaXRpbmcnKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkpXG4gICAgY2FsbGJhY2tzLm9uU3RhcnRXcml0aW5nPy4oKVxuICB9XG5cbiAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN5bmNMaXZlTmFycmF0aW9uKHBsYWNlaG9sZGVySWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgfVxuXG4gIGNvbnN0IGNsZWFyU3RyZWFtTGlrZUFuc3dlclJlc2V0ID0gKCkgPT4ge1xuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgfVxuICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgIGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgZmx1c2hUb1N0b3JlcygnJylcbiAgICByZWFzb25pbmdTdG9yZS5tYXJrQW5zd2VyUmVzZXQocGxhY2Vob2xkZXJJZClcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAocGF5bG9hZC5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgIH1cbiAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgeyByZXNvbHZlZF9jb250ZXh0PzogdW5rbm93biB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIGNvbnN0IHJlc29sdmVkQ29udGV4dCA9IHN1YmFnZW50UmF3Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICBjb25zdCByZWFzb25pbmcgPSAocGF5bG9hZC5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbFxuXG4gICAgcmVhc29uaW5nU3RvcmUuZmluaXNoKHBsYWNlaG9sZGVySWQsIHJlYXNvbmluZylcbiAgICBmbHVzaFBlbmRpbmcoKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY29tcGxldGUnKVxuXG4gICAgY29uc3QgZmluaXNoUGF5bG9hZDogU2Vzc2lvbkZpbmlzaFBheWxvYWQgPSB7XG4gICAgICBjb250ZW50OiBmaW5hbENvbnRlbnQsXG4gICAgICBzb3VyY2VzLFxuICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgYXR0YWNobWVudHMsXG4gICAgICBzdWdnZXN0aW9ucyxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQsXG4gICAgICByZXNvbHZlZENvbnRleHQsXG4gICAgICByZWFzb25pbmcsXG4gICAgfVxuICAgIGNhbGxiYWNrcy5vbkZpbmlzaFN0cmVhbT8uKGZpbmlzaFBheWxvYWQpXG5cbiAgICAvLyBFbCB0ZXh0byBlbiB2aXZvIE5PIHNlIGxpbXBpYSBhY8OhIGEgcHJvcMOzc2l0by4gRWwgcGxhY2Vob2xkZXIgc2UgdmEgY29uIGVsXG4gICAgLy8gYGRyb3BgIHF1ZSBoYWNlIGVsIGNvbnN1bWlkb3IsIHkgY29uIMOpbCBzdSBzdXNjcmlwY2nDs247IHZhY2lhcmxvIGFudGVzIGxvXG4gICAgLy8gZGVqYWJhIG1vbnRhZG8geSBzaW4gdGV4dG8gKGFsdHVyYSAwKSBkdXJhbnRlIH4yNW1zOiBlbCBmbGlja2VyIGRlIGZpbiBkZVxuICAgIC8vIHN0cmVhbS4gTm8gYWxjYW56YSBjb24gZGlmZXJpcmxvLCBwb3JxdWUgZXN0ZSBjbGVhciB2aWFqYSBlbiBTeW5jTGFuZVxuICAgIC8vIChzdG9yZSBleHRlcm5vKSB5IGVsIHN3YXAgZGUgbWVuc2FqZXMgZW4gRGVmYXVsdExhbmUsIGFzw60gcXVlIHNpZW1wcmUgc2VcbiAgICAvLyBjdWVsYSBlbiBlbCBtZWRpby4gRWwgc2xvdCBzZSBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gYHN0YXJ0KClgIGRlIGxhIHNlc2nDs24sXG4gICAgLy8geSBlbiBzdG9wL2Vycm9yL2FwcHJvdmFsL2NhbWJpbyBkZSBzZXNpw7NuLCBxdWUgc8OtIGxsYW1hbiBgY2xlYXJgLlxuICB9XG5cbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgIGlmIChkb25lKSBicmVha1xuXG4gICAgICBpZiAoYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RoaW5raW5nJzoge1xuICAgICAgICAgICAgICBjb25zdCB0aGlua2luZ0RlbHRhID0gdHlwZW9mIGRhdGEuZGVsdGEgPT09ICdzdHJpbmcnID8gZGF0YS5kZWx0YSA6ICcnXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5pID09PSAnbnVtYmVyJyAmJiB0aGlua2luZ0RlbHRhKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwZW5kVGhpbmtpbmcocGxhY2Vob2xkZXJJZCwgZGF0YS5pLCB0aGlua2luZ0RlbHRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAndGhpbmtpbmcnLCBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRWwgYmFja2VuZCBkZXNjYXJ0YSBsbyBlbWl0aWRvIHkgcmVpbmljaWEgbGEgcmVzcHVlc3RhIGRlc2RlIGNlcm8uXG4gICAgICAgICAgICBjYXNlICdhbnN3ZXJfcmVzZXQnOlxuICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ3JlYXNvbmluZ19zdGVwJzoge1xuICAgICAgICAgICAgICBjb25zdCBzdGVwVG9vbCA9IHR5cGVvZiBkYXRhLnRvb2wgPT09ICdzdHJpbmcnID8gZGF0YS50b29sIDogJydcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcFR5cGUgPSB0eXBlb2YgZGF0YS50eXBlID09PSAnc3RyaW5nJyA/IGRhdGEudHlwZSA6ICcnXG4gICAgICAgICAgICAgIGlmIChzdGVwVG9vbCAmJiBzdGVwVHlwZSAhPT0gJ2hhbmRvZmYnICYmIGRhdGEuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVUb29sQWN0aW9uTGFiZWwoc3RlcFRvb2wsIHQsICdwcmVzZW50JylcbiAgICAgICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmkgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuY2FwdHVyZUxlYWRpbmdGcm9tQm9keShwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwbHlTdGVwKHBsYWNlaG9sZGVySWQsIGRhdGEgYXMgUmVhc29uaW5nU3RlcFBheWxvYWQpXG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbmluZ1N0b3JlLnNob3VsZENsZWFyU3RyZWFtRm9yTGVhZGluZyhwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdjb250ZW50Jzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICBpZiAoZGF0YS5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgIC8vIFByZWFwcm9iYWRvIChhdXRvLWFwcHJvdmUgbyBkZXRlY2Npw7NuIG1hbnVhbCk6IGVsIHN0cmVhbSBubyBzZSBjb3J0YSxcbiAgICAgICAgICAgICAgLy8gc2lndWUgZWplY3V0YW5kbyBsYXMgYWNjaW9uZXMgc2luIGVzcGVyYXIgZGVjaXNpw7NuIGRlbCB1c3VhcmlvLlxuICAgICAgICAgICAgICBjb25zdCBpc1ByZUFwcHJvdmVkID1cbiAgICAgICAgICAgICAgICBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXV0b19hcHByb3ZlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXBwcm92YWxfc3RhdHVzID09PSAnYXBwcm92ZWQnXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIGlmICghaXNQcmVBcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCAoZGF0YS5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdhd2FpdGluZ19hcHByb3ZhbCcpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsUmVxdWlyZWQ/LihkYXRhIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICBpZiAoaXNQcmVBcHByb3ZlZCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEVycm9yKHNlc3Npb25JZCwgeyB0eXBlOiBkYXRhLmVycm9yPy50eXBlLCBtZXNzYWdlOiBkYXRhLmVycm9yPy5tZXNzYWdlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBmbHVzaFBlbmRpbmcoKVxuICB9XG59XG5cbi8qKlxuICogTWFuYWdlciBzaW5nbGV0b24gKG1vZHVsZS1sZXZlbCkgcXVlIGNvcnJlIE4gc3RyZWFtcyBkZWwgb3JjaGVzdHJhdG9yIGVuXG4gKiBwYXJhbGVsbywgdW5vIHBvciBgc2Vzc2lvbklkYC4gU29icmV2aXZlIGEgY2FtYmlvcyBkZSB2aXN0YSB5IGFsIGNpZXJyZSBkZWxcbiAqIG1vZGFsOiBsb3Mgc3RyZWFtcyBzb2xvIHNlIGNhbmNlbGFuIGNvbiBzdG9wIGV4cGzDrWNpdG8gZGVsIHVzdWFyaW8gbyBhbFxuICogY29tcGxldGFyL2Vycm9yYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXNzaW9uU3RyZWFtTWFuYWdlciA9IHtcbiAgaXNBY3RpdmU6IGlzU3RyZWFtQWN0aXZlLFxuICBnZXRBY3RpdmVDb3VudDogZ2V0QWN0aXZlU3RyZWFtQ291bnQsXG4gIGdldEFjdGl2ZVNlc3Npb25JZHM6ICgpOiBzdHJpbmdbXSA9PiBBcnJheS5mcm9tKGFjdGl2ZVN0cmVhbXMua2V5cygpKSxcblxuICBhc3luYyBzdGFydFN0cmVhbShwYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIHJlcXVlc3QsIGNhbGxiYWNrcywgdCwgYWN0aXZpdHlPcHRpb25zLCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN0YXJ0KHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCBhY3Rpdml0eU9wdGlvbnMgPz8ge30pKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKHJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcblxuICAgICAgICBpZiAoaXNNYWlhQXBpRXJyb3IoZXJyb3IpICYmIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IoZXJyb3IuY29kZSkpIHtcbiAgICAgICAgICBnZXRVc2FnZVN0b3JlU3RhdGUoKS5hcHBseVF1b3RhRXhjZWVkZWQoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKGVycm9yLmNvZGUsIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUgfVxuICB9LFxuXG4gIC8qKiBSZXN1bWUgSElUTCAoYGNvbnRpbnVlLXRocmVhZGApIGtleWVkIHBvciBzZXNzaW9uSWQg4oCUIG1pc21vIG1vdG9yIHF1ZSBvcmNoZXN0cmF0b3IuICovXG4gIGFzeW5jIHN0YXJ0Q29udGludWVTdHJlYW0ocGFyYW1zOiBTdGFydENvbnRpbnVlU3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNvbnRpbnVlUmVxdWVzdCwgY2FsbGJhY2tzLCB0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCwgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgaWYgKGhpdGxFeGVjdXRpb25Db250ZXh0KSB7XG4gICAgICBzZXNzaW9uSGl0bENvbnRleHQuc2V0KHNlc3Npb25JZCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQpXG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KFxuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpID8/IHVuZGVmaW5lZClcbiAgICApXG5cbiAgICBjb25zdCBzc2VQYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIHJlcXVlc3Q6IHt9IGFzIE9yY2hlc3RyYXRvclJlcXVlc3QsXG4gICAgICBjYWxsYmFja3MsXG4gICAgICB0LFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ6IGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHNlc3Npb25IaXRsQ29udGV4dC5nZXQoc2Vzc2lvbklkKSxcbiAgICAgIGFnZW50SWQsXG4gICAgICBhZ2VudE5hbWUsXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoY29udGludWVSZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb250aW51ZS10aHJlYWQgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHNzZVBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcblxuICAgICAgICBpZiAoaXNNYWlhQXBpRXJyb3IoZXJyb3IpICYmIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IoZXJyb3IuY29kZSkpIHtcbiAgICAgICAgICBnZXRVc2FnZVN0b3JlU3RhdGUoKS5hcHBseVF1b3RhRXhjZWVkZWQoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKGVycm9yLmNvZGUsIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgc2Vzc2lvbkhpdGxDb250ZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogUmVnZW5lcmEgbGEgcmVzcHVlc3RhIGRlIHVuIHR1cm5vIChgcmV0cnlfY29tcGxldGlvbmApIOKAlCBtaXNtbyBtb3RvciBTU0UgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRSZXRyeVN0cmVhbShwYXJhbXM6IFN0YXJ0UmV0cnlTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgcmV0cnlSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuICAgIGlmIChnZXRVc2FnZVN0b3JlU3RhdGUoKS5ibG9ja2VkKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAndXNhZ2VfYmxvY2tlZCcgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSA9IHsgc2Vzc2lvbklkLCBjb250cm9sbGVyLCBpc1N0b3BwZWQ6IGZhbHNlIH1cbiAgICBhY3RpdmVTdHJlYW1zLnNldChzZXNzaW9uSWQsIGFjdGl2ZSlcblxuICAgIHN0b3JlKCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7XG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgLi4uKGFnZW50SWQgIT0gbnVsbCA/IHsgYWdlbnRJZCB9IDoge30pLFxuICAgICAgLi4uKGFnZW50TmFtZSAhPSBudWxsID8geyBhZ2VudE5hbWUgfSA6IHt9KSxcbiAgICB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCBhY3Rpdml0eU9wdGlvbnMgPz8ge30pKVxuXG4gICAgY29uc3Qgc3NlUGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyA9IHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICByZXF1ZXN0OiB7fSBhcyBPcmNoZXN0cmF0b3JSZXF1ZXN0LFxuICAgICAgY2FsbGJhY2tzLFxuICAgICAgdCxcbiAgICAgIGFjdGl2aXR5T3B0aW9ucyxcbiAgICAgIGFnZW50SWQsXG4gICAgICBhZ2VudE5hbWUsXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IucmV0cnlDb21wbGV0aW9uKHJldHJ5UmVxdWVzdCwgY29udHJvbGxlci5zaWduYWwpXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgIGxldCBkZXRhaWw6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgeyBkZXRhaWw/OiBzdHJpbmcgfVxuICAgICAgICAgICAgZGV0YWlsID0gdHlwZW9mIGRhdGEuZGV0YWlsID09PSAnc3RyaW5nJyA/IGRhdGEuZGV0YWlsIDogdW5kZWZpbmVkXG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBkZXRhaWwgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRldGFpbCA9PT0gJ1R1cm4gbm90IGZvdW5kJykge1xuICAgICAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UsIHBsYWNlaG9sZGVySWQ6IG51bGwgfSlcbiAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnaWRsZScpXG4gICAgICAgICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgICAgICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAndHVybl9ub3RfZm91bmQnIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXRyeV9jb21wbGV0aW9uIGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBzc2VQYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG5cbiAgICAgICAgaWYgKGlzTWFpYUFwaUVycm9yKGVycm9yKSAmJiBpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yKGVycm9yLmNvZGUpKSB7XG4gICAgICAgICAgZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYXBwbHlRdW90YUV4Y2VlZGVkKGVycm9yLm1lc3NhZ2UpXG4gICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihlcnJvci5jb2RlLCBlcnJvci5tZXNzYWdlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogQ2FuY2VsYWNpw7NuIGV4cGzDrWNpdGEgZGVsIHVzdWFyaW8gKG1lbnNhamUgXCJjYW5jZWxhZG9cIikuICovXG4gIHN0b3BTdHJlYW0oc2Vzc2lvbklkOiBzdHJpbmcsIGNhbGxiYWNrcz86IFNlc3Npb25TdHJlYW1DYWxsYmFja3MpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVTdHJlYW1zLmdldChzZXNzaW9uSWQpXG4gICAgaWYgKCFhY3RpdmUpIHJldHVyblxuICAgIGFjdGl2ZS5pc1N0b3BwZWQgPSB0cnVlXG4gICAgYWN0aXZlLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAvLyBFbCBwYXJjaWFsIHNlIHJlc2NhdGEgYW50ZXMgZGUgbGltcGlhcjogZWwgYmFja2VuZCBsbyBwZXJzaXN0ZSwgcGVybyBzaSBubyBsb1xuICAgIC8vIHBhc2Ftb3MgYWwgY2FsbGJhY2sgZGVzYXBhcmVjZSBkZSBwYW50YWxsYSBoYXN0YSBlbCBwcsOzeGltbyBmZXRjaCBkZSBsYSBzZXNpw7NuLlxuICAgIGNvbnN0IHBhcnRpYWxUZXh0ID0gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U25hcHNob3Qoc2Vzc2lvbklkKS50ZXh0XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY2FuY2VsbGVkJylcbiAgICBjYWxsYmFja3M/Lm9uU3RvcD8uKHBhcnRpYWxUZXh0KVxuICB9LFxuXG4gIC8qKiBBYm9ydGEgc2luIG1hcmNhciBcImNhbmNlbGFkb1wiICh1c28gaW50ZXJubyAvIGxpbXBpZXphKS4gKi9cbiAgYWJvcnRTaWxlbnRseShzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIGlmIChzdG9yZSgpLmdldE1ldGEoc2Vzc2lvbklkKT8uc3RhdHVzICE9PSAnY29tcGxldGUnKSB7XG4gICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICB9XG4gIH0sXG5cbiAgYWJvcnRBbGwoKSB7XG4gICAgQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSkuZm9yRWFjaChzZXNzaW9uSWQgPT4gdGhpcy5hYm9ydFNpbGVudGx5KHNlc3Npb25JZCkpXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsY0FBYyxRQUFRLG1DQUFtQztBQUNsRSxTQUFTQyxrQkFBa0IsRUFBRUMseUJBQXlCLFFBQVEsa0JBQWtCO0FBRWhGLFNBQ0VDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMs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QUssQ0FBQyxDQUFDLENBQUN5RixTQUFTLENBQUN0RixTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3pDcUIsU0FBUyxhQUFUQSxTQUFTLGdCQUFBeU0saUJBQUEsR0FBVHpNLFNBQVMsQ0FBRThNLE1BQU0sY0FBQUwsaUJBQUEsZUFBakJBLGlCQUFBLENBQUFySixJQUFBLENBQUFwRCxTQUFTLEVBQVcyTSxXQUFXLENBQUM7RUFDbEMsQ0FBQztFQUVELDhEQUNBSSxhQUFhLFdBQWJBLGFBQWFBLENBQUNwTyxTQUFpQixFQUFFO0lBQUEsSUFBQXFPLGNBQUE7SUFDL0IsSUFBTTFOLE1BQU0sR0FBR2hCLGFBQWEsQ0FBQ3lFLEdBQUcsQ0FBQ3BFLFNBQVMsQ0FBQztJQUMzQyxJQUFJLENBQUNXLE1BQU0sRUFBRTtJQUNiQSxNQUFNLENBQUM0RyxTQUFTLEdBQUcsSUFBSTtJQUN2QjVHLE1BQU0sQ0FBQ3lLLFVBQVUsQ0FBQzJDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCcE8sYUFBYSxVQUFPLENBQUNLLFNBQVMsQ0FBQztJQUMvQlgsb0JBQW9CLENBQUNtSyxLQUFLLENBQUN4SixTQUFTLENBQUM7SUFDckNILEtBQUssQ0FBQyxDQUFDLENBQUNzRixTQUFTLENBQUNuRixTQUFTLEVBQUU7TUFBRW9GLFNBQVMsRUFBRSxLQUFLO01BQUVDLFNBQVMsRUFBRTtJQUFNLENBQUMsQ0FBQztJQUNwRXhGLEtBQUssQ0FBQyxDQUFDLENBQUMwRixXQUFXLENBQUN2RixTQUFTLEVBQUUsSUFBSSxDQUFDO0lBQ3BDLElBQUksRUFBQXFPLGNBQUEsR0FBQXhPLEtBQUssQ0FBQyxDQUFDLENBQUN5TyxPQUFPLENBQUN0TyxTQUFTLENBQUMsY0FBQXFPLGNBQUEsdUJBQTFCQSxjQUFBLENBQTRCdkYsTUFBTSxNQUFLLFVBQVUsRUFBRTtNQUNyRGpKLEtBQUssQ0FBQyxDQUFDLENBQUN5RixTQUFTLENBQUN0RixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ3RDO0VBQ0YsQ0FBQztFQUVEdU8sUUFBUSxXQUFSQSxRQUFRQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxLQUFBO0lBQ1RuSSxLQUFLLENBQUN3RSxJQUFJLENBQUNsTCxhQUFhLENBQUNtTCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMyRCxPQUFPLENBQUMsVUFBQXpPLFNBQVM7TUFBQSxPQUFJd08sS0FBSSxDQUFDSixhQUFhLENBQUNwTyxTQUFTLENBQUM7SUFBQSxFQUFDO0VBQ3RGO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
797
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiaXNNYWlhQXBpRXJyb3IiLCJnZXRVc2FnZVN0b3JlU3RhdGUiLCJpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiY2h1bmsiLCJfY2h1bmsiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc1ByZUFwcHJvdmVkIiwiX3JlZjMiLCJfdCIsIl90MiIsIl90MyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0IiwiY29udGVudCIsIl9jYWxsYmFja3Mkb25TdHJlYW1VcCIsInNldFRleHQiLCJvblN0cmVhbVVwZGF0ZSIsImNhbGwiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidG9FbWl0IiwiY2xlYXJUaW1lb3V0IiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uU3RhcnRXcmkiLCJwYXRjaE1ldGEiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJzZXRTdGF0dXMiLCJzZXRBY3Rpdml0eSIsIm9uU3RhcnRXcml0aW5nIiwic3luY0xpdmVOYXJyYXRpb24iLCJtYXJrQW5zd2VyUmVzZXQiLCJwYXlsb2FkIiwiX3BheWxvYWQkYWdlbnRfaWQiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfcmVmMiIsIl9jYWxsYmFja3Mkb25GaW5pc2hTdCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwic3ViYWdlbnRSYXciLCJzdWJhZ2VudCIsInJlc29sdmVkQ29udGV4dCIsInJlc29sdmVkX2NvbnRleHQiLCJyZWFzb25pbmciLCJmaW5pc2giLCJmaW5pc2hQYXlsb2FkIiwib25GaW5pc2hTdHJlYW0iLCJpc1N0b3BwZWQiLCJjYW5jZWwiLCJhYnJ1cHQiLCJyZWFkIiwic2VudCIsImRlY29kZSIsInN0cmVhbSIsInNwbGl0IiwicG9wIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsIl9zbGljZWRUb0FycmF5IiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImRlbHRhIiwiaSIsImFwcGVuZFRoaW5raW5nIiwicGhhc2UiLCJtZXNzYWdlIiwidG9vbCIsInR5cGUiLCJzdGF0dXMiLCJjYXB0dXJlTGVhZGluZ0Zyb21Cb2R5IiwiYXBwbHlTdGVwIiwic2hvdWxkQ2xlYXJTdHJlYW1Gb3JMZWFkaW5nIiwibm9kZSIsInVuZGVmaW5lZCIsInRocmVhZF9pZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsImF1dG9fYXBwcm92ZWQiLCJhcHByb3ZhbF9zdGF0dXMiLCJjbGVhciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsInBlbmRpbmdfYWN0aW9ucyIsImxlbmd0aCIsImNvbnNvbGUiLCJlcnJvciIsInNldEVycm9yIiwib25FcnJvciIsIndhcm4iLCJlIiwiZiIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsImFwcGx5IiwiYXJndW1lbnRzIiwic2Vzc2lvblN0cmVhbU1hbmFnZXIiLCJpc0FjdGl2ZSIsImdldEFjdGl2ZUNvdW50IiwiZ2V0QWN0aXZlU2Vzc2lvbklkcyIsImZyb20iLCJrZXlzIiwic3RhcnRTdHJlYW0iLCJfY2FsbGVlMiIsInJlcXVlc3QiLCJhY3Rpdml0eU9wdGlvbnMiLCJhZ2VudE5hbWUiLCJjb250cm9sbGVyIiwiX2NhbGxiYWNrcyRvbkVycm9yMiIsIl9jYWxsYmFja3Mkb25FcnJvcjMiLCJfdDQiLCJfY29udGV4dDIiLCJzdGFydGVkIiwicmVhc29uIiwiQWJvcnRDb250cm9sbGVyIiwic2V0IiwiZW5zdXJlU2Vzc2lvbiIsIl9vYmplY3RTcHJlYWQiLCJzdGFydCIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsInNpZ25hbCIsImNvZGUiLCJhcHBseVF1b3RhRXhjZWVkZWQiLCJzdGFydENvbnRpbnVlU3RyZWFtIiwiX2NhbGxlZTMiLCJfcmVmNCIsImNvbnRpbnVlUmVxdWVzdCIsInNzZVBhcmFtcyIsIl9jYWxsYmFja3Mkb25FcnJvcjQiLCJfY2FsbGJhY2tzJG9uRXJyb3I1IiwiX3Q1IiwiX2NvbnRleHQzIiwiY29udGludWVUaHJlYWQiLCJvayIsImNvbmNhdCIsInN0YXJ0UmV0cnlTdHJlYW0iLCJfY2FsbGVlNCIsInJldHJ5UmVxdWVzdCIsImRldGFpbCIsIl9jYWxsYmFja3Mkb25FcnJvcjYiLCJfY2FsbGJhY2tzJG9uRXJyb3I3IiwiX3Q2IiwiX3Q3IiwiX2NvbnRleHQ0IiwiYmxvY2tlZCIsInJldHJ5Q29tcGxldGlvbiIsImpzb24iLCJzdG9wU3RyZWFtIiwiX2NhbGxiYWNrcyRvblN0b3AiLCJhYm9ydCIsInBhcnRpYWxUZXh0IiwiZ2V0U25hcHNob3QiLCJ0ZXh0Iiwib25TdG9wIiwiYWJvcnRTaWxlbnRseSIsIl9zdG9yZSRnZXRNZXRhIiwiZ2V0TWV0YSIsImFib3J0QWxsIiwiX3RoaXMiLCJmb3JFYWNoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgaXNNYWlhQXBpRXJyb3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9NYWlhQXBpRXJyb3InXG5pbXBvcnQgeyBnZXRVc2FnZVN0b3JlU3RhdGUsIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IgfSBmcm9tICcuLi91c2VVc2FnZVN0b3JlJ1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHtcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UnXG5pbXBvcnQgdHlwZSB7IFJlYXNvbmluZ1N0ZXBQYXlsb2FkLCBSZWFzb25pbmdUcmFjZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9yZWFzb25pbmcnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4vc2Vzc2lvblN0cmVhbWluZ1RleHQnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCB9IGZyb20gJy4vc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBzZXNzaW9uSGl0bENvbnRleHQgfSBmcm9tICcuL3Nlc3Npb25IaXRsQ29udGV4dCdcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbkZpbmlzaFBheWxvYWQsIFNlc3Npb25TdHJlYW1DYWxsYmFja3MsIFN0YXJ0U3RyZWFtUmVzdWx0IH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcblxudHlwZSBPcmNoZXN0cmF0b3JSZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yPlswXVxudHlwZSBDb250aW51ZVRocmVhZFJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZD5bMF1cbnR5cGUgUmV0cnlDb21wbGV0aW9uUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbj5bMF1cblxuLyoqIENvbXBhdGlibGUgY29uIGVsIGB0YCBkZSBpMThuZXh0ICh1c28gZGUgdW5hIHNvbGEga2V5KS4gKi9cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG50eXBlIFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgcmVxdWVzdDogT3JjaGVzdHJhdG9yUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBTdGFydENvbnRpbnVlU3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgY29udGludWVSZXF1ZXN0OiBDb250aW51ZVRocmVhZFJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgU3RhcnRSZXRyeVN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIHJldHJ5UmVxdWVzdDogUmV0cnlDb21wbGV0aW9uUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBBY3RpdmVTdHJlYW0gPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIGNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuICBpc1N0b3BwZWQ6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBNw6F4aW1vIGRlIHNlc2lvbmVzIGdlbmVyYW5kbyBlbiBwYXJhbGVsby4gUHJvdGVnZSByZWQvcmVjdXJzb3MgZGVsIGNsaWVudGUuXG4gKiBBanVzdGFibGUgYSBmdXR1cm8gdsOtYSBmbGFnIGRlbCBob3N0LlxuICovXG5leHBvcnQgY29uc3QgTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9IDRcblxuY29uc3QgU1RSRUFNX1RIUk9UVExFX01TID0gMTZcblxuY29uc3QgYWN0aXZlU3RyZWFtcyA9IG5ldyBNYXA8c3RyaW5nLCBBY3RpdmVTdHJlYW0+KClcblxuY29uc3Qgc3RvcmUgPSAoKSA9PiB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKClcblxuY29uc3QgaXNTdHJlYW1BY3RpdmUgPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiBib29sZWFuID0+IGFjdGl2ZVN0cmVhbXMuaGFzKHNlc3Npb25JZClcblxuY29uc3QgZ2V0QWN0aXZlU3RyZWFtQ291bnQgPSAoKTogbnVtYmVyID0+IGFjdGl2ZVN0cmVhbXMuc2l6ZVxuXG5jb25zdCBwYXJzZVNlc3Npb25TU0UgPSBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlLCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSwgcGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY2FsbGJhY2tzLCB0IH0gPSBwYXJhbXNcbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPSBwYXJhbXMuaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpXG5cbiAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgdGhyb3R0bGVUaW1lcjogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICBjb25zdCBmbHVzaFRvU3RvcmVzID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnNldFRleHQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250ZW50KVxuICAgIGNhbGxiYWNrcy5vblN0cmVhbVVwZGF0ZT8uKGNvbnRlbnQpXG4gIH1cblxuICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHBlbmRpbmdDb250ZW50ID0gY29udGVudFxuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgIHRocm90dGxlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgIGZsdXNoVG9TdG9yZXModG9FbWl0KVxuICAgICAgfVxuICAgIH0sIFNUUkVBTV9USFJPVFRMRV9NUylcbiAgfVxuXG4gIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgZmx1c2hUb1N0b3Jlcyh0b0VtaXQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUsIGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3dyaXRpbmcnKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkpXG4gICAgY2FsbGJhY2tzLm9uU3RhcnRXcml0aW5nPy4oKVxuICB9XG5cbiAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN5bmNMaXZlTmFycmF0aW9uKHBsYWNlaG9sZGVySWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgfVxuXG4gIGNvbnN0IGNsZWFyU3RyZWFtTGlrZUFuc3dlclJlc2V0ID0gKCkgPT4ge1xuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgfVxuICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgIGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgZmx1c2hUb1N0b3JlcygnJylcbiAgICByZWFzb25pbmdTdG9yZS5tYXJrQW5zd2VyUmVzZXQocGxhY2Vob2xkZXJJZClcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAocGF5bG9hZC5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgIH1cbiAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgeyByZXNvbHZlZF9jb250ZXh0PzogdW5rbm93biB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIGNvbnN0IHJlc29sdmVkQ29udGV4dCA9IHN1YmFnZW50UmF3Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICBjb25zdCByZWFzb25pbmcgPSAocGF5bG9hZC5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbFxuXG4gICAgcmVhc29uaW5nU3RvcmUuZmluaXNoKHBsYWNlaG9sZGVySWQsIHJlYXNvbmluZylcbiAgICBmbHVzaFBlbmRpbmcoKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY29tcGxldGUnKVxuXG4gICAgY29uc3QgZmluaXNoUGF5bG9hZDogU2Vzc2lvbkZpbmlzaFBheWxvYWQgPSB7XG4gICAgICBjb250ZW50OiBmaW5hbENvbnRlbnQsXG4gICAgICBzb3VyY2VzLFxuICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgYXR0YWNobWVudHMsXG4gICAgICBzdWdnZXN0aW9ucyxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQsXG4gICAgICByZXNvbHZlZENvbnRleHQsXG4gICAgICByZWFzb25pbmcsXG4gICAgfVxuICAgIGNhbGxiYWNrcy5vbkZpbmlzaFN0cmVhbT8uKGZpbmlzaFBheWxvYWQpXG5cbiAgICAvLyBFbCB0ZXh0byBlbiB2aXZvIE5PIHNlIGxpbXBpYSBhY8OhIGEgcHJvcMOzc2l0by4gRWwgcGxhY2Vob2xkZXIgc2UgdmEgY29uIGVsXG4gICAgLy8gYGRyb3BgIHF1ZSBoYWNlIGVsIGNvbnN1bWlkb3IsIHkgY29uIMOpbCBzdSBzdXNjcmlwY2nDs247IHZhY2lhcmxvIGFudGVzIGxvXG4gICAgLy8gZGVqYWJhIG1vbnRhZG8geSBzaW4gdGV4dG8gKGFsdHVyYSAwKSBkdXJhbnRlIH4yNW1zOiBlbCBmbGlja2VyIGRlIGZpbiBkZVxuICAgIC8vIHN0cmVhbS4gTm8gYWxjYW56YSBjb24gZGlmZXJpcmxvLCBwb3JxdWUgZXN0ZSBjbGVhciB2aWFqYSBlbiBTeW5jTGFuZVxuICAgIC8vIChzdG9yZSBleHRlcm5vKSB5IGVsIHN3YXAgZGUgbWVuc2FqZXMgZW4gRGVmYXVsdExhbmUsIGFzw60gcXVlIHNpZW1wcmUgc2VcbiAgICAvLyBjdWVsYSBlbiBlbCBtZWRpby4gRWwgc2xvdCBzZSBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gYHN0YXJ0KClgIGRlIGxhIHNlc2nDs24sXG4gICAgLy8geSBlbiBzdG9wL2Vycm9yL2FwcHJvdmFsL2NhbWJpbyBkZSBzZXNpw7NuLCBxdWUgc8OtIGxsYW1hbiBgY2xlYXJgLlxuICB9XG5cbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgIGlmIChkb25lKSBicmVha1xuXG4gICAgICBpZiAoYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RoaW5raW5nJzoge1xuICAgICAgICAgICAgICBjb25zdCB0aGlua2luZ0RlbHRhID0gdHlwZW9mIGRhdGEuZGVsdGEgPT09ICdzdHJpbmcnID8gZGF0YS5kZWx0YSA6ICcnXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5pID09PSAnbnVtYmVyJyAmJiB0aGlua2luZ0RlbHRhKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwZW5kVGhpbmtpbmcocGxhY2Vob2xkZXJJZCwgZGF0YS5pLCB0aGlua2luZ0RlbHRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAndGhpbmtpbmcnLCBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRWwgYmFja2VuZCBkZXNjYXJ0YSBsbyBlbWl0aWRvIHkgcmVpbmljaWEgbGEgcmVzcHVlc3RhIGRlc2RlIGNlcm8uXG4gICAgICAgICAgICBjYXNlICdhbnN3ZXJfcmVzZXQnOlxuICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ3JlYXNvbmluZ19zdGVwJzoge1xuICAgICAgICAgICAgICBjb25zdCBzdGVwVG9vbCA9IHR5cGVvZiBkYXRhLnRvb2wgPT09ICdzdHJpbmcnID8gZGF0YS50b29sIDogJydcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcFR5cGUgPSB0eXBlb2YgZGF0YS50eXBlID09PSAnc3RyaW5nJyA/IGRhdGEudHlwZSA6ICcnXG4gICAgICAgICAgICAgIGlmIChzdGVwVG9vbCAmJiBzdGVwVHlwZSAhPT0gJ2hhbmRvZmYnICYmIGRhdGEuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVUb29sQWN0aW9uTGFiZWwoc3RlcFRvb2wsIHQsICdwcmVzZW50JylcbiAgICAgICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmkgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuY2FwdHVyZUxlYWRpbmdGcm9tQm9keShwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwbHlTdGVwKHBsYWNlaG9sZGVySWQsIGRhdGEgYXMgUmVhc29uaW5nU3RlcFBheWxvYWQpXG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbmluZ1N0b3JlLnNob3VsZENsZWFyU3RyZWFtRm9yTGVhZGluZyhwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdjb250ZW50Jzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICBpZiAoZGF0YS5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgIC8vIFByZWFwcm9iYWRvIChhdXRvLWFwcHJvdmUgbyBkZXRlY2Npw7NuIG1hbnVhbCk6IGVsIHN0cmVhbSBubyBzZSBjb3J0YSxcbiAgICAgICAgICAgICAgLy8gc2lndWUgZWplY3V0YW5kbyBsYXMgYWNjaW9uZXMgc2luIGVzcGVyYXIgZGVjaXNpw7NuIGRlbCB1c3VhcmlvLlxuICAgICAgICAgICAgICBjb25zdCBpc1ByZUFwcHJvdmVkID1cbiAgICAgICAgICAgICAgICBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXV0b19hcHByb3ZlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXBwcm92YWxfc3RhdHVzID09PSAnYXBwcm92ZWQnXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIGlmICghaXNQcmVBcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCAoZGF0YS5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdhd2FpdGluZ19hcHByb3ZhbCcpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsUmVxdWlyZWQ/LihkYXRhIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICBpZiAoaXNQcmVBcHByb3ZlZCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEVycm9yKHNlc3Npb25JZCwgeyB0eXBlOiBkYXRhLmVycm9yPy50eXBlLCBtZXNzYWdlOiBkYXRhLmVycm9yPy5tZXNzYWdlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBmbHVzaFBlbmRpbmcoKVxuICB9XG59XG5cbi8qKlxuICogTWFuYWdlciBzaW5nbGV0b24gKG1vZHVsZS1sZXZlbCkgcXVlIGNvcnJlIE4gc3RyZWFtcyBkZWwgb3JjaGVzdHJhdG9yIGVuXG4gKiBwYXJhbGVsbywgdW5vIHBvciBgc2Vzc2lvbklkYC4gU29icmV2aXZlIGEgY2FtYmlvcyBkZSB2aXN0YSB5IGFsIGNpZXJyZSBkZWxcbiAqIG1vZGFsOiBsb3Mgc3RyZWFtcyBzb2xvIHNlIGNhbmNlbGFuIGNvbiBzdG9wIGV4cGzDrWNpdG8gZGVsIHVzdWFyaW8gbyBhbFxuICogY29tcGxldGFyL2Vycm9yYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXNzaW9uU3RyZWFtTWFuYWdlciA9IHtcbiAgaXNBY3RpdmU6IGlzU3RyZWFtQWN0aXZlLFxuICBnZXRBY3RpdmVDb3VudDogZ2V0QWN0aXZlU3RyZWFtQ291bnQsXG4gIGdldEFjdGl2ZVNlc3Npb25JZHM6ICgpOiBzdHJpbmdbXSA9PiBBcnJheS5mcm9tKGFjdGl2ZVN0cmVhbXMua2V5cygpKSxcblxuICBhc3luYyBzdGFydFN0cmVhbShwYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIHJlcXVlc3QsIGNhbGxiYWNrcywgdCwgYWN0aXZpdHlPcHRpb25zLCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN0YXJ0KHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCBhY3Rpdml0eU9wdGlvbnMgPz8ge30pKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKHJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcblxuICAgICAgICBpZiAoaXNNYWlhQXBpRXJyb3IoZXJyb3IpICYmIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IoZXJyb3IuY29kZSkpIHtcbiAgICAgICAgICBnZXRVc2FnZVN0b3JlU3RhdGUoKS5hcHBseVF1b3RhRXhjZWVkZWQoKVxuICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oZXJyb3IuY29kZSwgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIFJlc3VtZSBISVRMIChgY29udGludWUtdGhyZWFkYCkga2V5ZWQgcG9yIHNlc3Npb25JZCDigJQgbWlzbW8gbW90b3IgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRDb250aW51ZVN0cmVhbShwYXJhbXM6IFN0YXJ0Q29udGludWVTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGludWVSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGhpdGxFeGVjdXRpb25Db250ZXh0LCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBpZiAoaGl0bEV4ZWN1dGlvbkNvbnRleHQpIHtcbiAgICAgIHNlc3Npb25IaXRsQ29udGV4dC5zZXQoc2Vzc2lvbklkLCBoaXRsRXhlY3V0aW9uQ29udGV4dClcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZCkgPz8gdW5kZWZpbmVkKVxuICAgIClcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZChjb250aW51ZVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbnRpbnVlLXRocmVhZCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuXG4gICAgICAgIGlmIChpc01haWFBcGlFcnJvcihlcnJvcikgJiYgaXNVc2FnZVF1b3RhRXhjZWVkZWRFcnJvcihlcnJvci5jb2RlKSkge1xuICAgICAgICAgIGdldFVzYWdlU3RvcmVTdGF0ZSgpLmFwcGx5UXVvdGFFeGNlZWRlZCgpXG4gICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihlcnJvci5jb2RlLCBlcnJvci5tZXNzYWdlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAgIHNlc3Npb25IaXRsQ29udGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIFJlZ2VuZXJhIGxhIHJlc3B1ZXN0YSBkZSB1biB0dXJubyAoYHJldHJ5X2NvbXBsZXRpb25gKSDigJQgbWlzbW8gbW90b3IgU1NFIHF1ZSBvcmNoZXN0cmF0b3IuICovXG4gIGFzeW5jIHN0YXJ0UmV0cnlTdHJlYW0ocGFyYW1zOiBTdGFydFJldHJ5U3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIHJldHJ5UmVxdWVzdCwgY2FsbGJhY2tzLCB0LCBhY3Rpdml0eU9wdGlvbnMsIGFnZW50SWQsIGFnZW50TmFtZSB9ID0gcGFyYW1zXG5cbiAgICBpZiAoaXNTdHJlYW1BY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2FscmVhZHlfYWN0aXZlJyB9XG4gICAgfVxuICAgIGlmIChnZXRBY3RpdmVTdHJlYW1Db3VudCgpID49IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdsaW1pdCcgfVxuICAgIH1cbiAgICBpZiAoZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYmxvY2tlZCkge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ3VzYWdlX2Jsb2NrZWQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwgYWN0aXZpdHlPcHRpb25zID8/IHt9KSlcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBhY3Rpdml0eU9wdGlvbnMsXG4gICAgICBhZ2VudElkLFxuICAgICAgYWdlbnROYW1lLFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbihyZXRyeVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBsZXQgZGV0YWlsOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHsgZGV0YWlsPzogc3RyaW5nIH1cbiAgICAgICAgICAgIGRldGFpbCA9IHR5cGVvZiBkYXRhLmRldGFpbCA9PT0gJ3N0cmluZycgPyBkYXRhLmRldGFpbCA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgZGV0YWlsID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZXRhaWwgPT09ICdUdXJuIG5vdCBmb3VuZCcpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlLCBwbGFjZWhvbGRlcklkOiBudWxsIH0pXG4gICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2lkbGUnKVxuICAgICAgICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ3R1cm5fbm90X2ZvdW5kJyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0cnlfY29tcGxldGlvbiBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuXG4gICAgICAgIGlmIChpc01haWFBcGlFcnJvcihlcnJvcikgJiYgaXNVc2FnZVF1b3RhRXhjZWVkZWRFcnJvcihlcnJvci5jb2RlKSkge1xuICAgICAgICAgIGdldFVzYWdlU3RvcmVTdGF0ZSgpLmFwcGx5UXVvdGFFeGNlZWRlZCgpXG4gICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihlcnJvci5jb2RlLCBlcnJvci5tZXNzYWdlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogQ2FuY2VsYWNpw7NuIGV4cGzDrWNpdGEgZGVsIHVzdWFyaW8gKG1lbnNhamUgXCJjYW5jZWxhZG9cIikuICovXG4gIHN0b3BTdHJlYW0oc2Vzc2lvbklkOiBzdHJpbmcsIGNhbGxiYWNrcz86IFNlc3Npb25TdHJlYW1DYWxsYmFja3MpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVTdHJlYW1zLmdldChzZXNzaW9uSWQpXG4gICAgaWYgKCFhY3RpdmUpIHJldHVyblxuICAgIGFjdGl2ZS5pc1N0b3BwZWQgPSB0cnVlXG4gICAgYWN0aXZlLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAvLyBFbCBwYXJjaWFsIHNlIHJlc2NhdGEgYW50ZXMgZGUgbGltcGlhcjogZWwgYmFja2VuZCBsbyBwZXJzaXN0ZSwgcGVybyBzaSBubyBsb1xuICAgIC8vIHBhc2Ftb3MgYWwgY2FsbGJhY2sgZGVzYXBhcmVjZSBkZSBwYW50YWxsYSBoYXN0YSBlbCBwcsOzeGltbyBmZXRjaCBkZSBsYSBzZXNpw7NuLlxuICAgIGNvbnN0IHBhcnRpYWxUZXh0ID0gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U25hcHNob3Qoc2Vzc2lvbklkKS50ZXh0XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY2FuY2VsbGVkJylcbiAgICBjYWxsYmFja3M/Lm9uU3RvcD8uKHBhcnRpYWxUZXh0KVxuICB9LFxuXG4gIC8qKiBBYm9ydGEgc2luIG1hcmNhciBcImNhbmNlbGFkb1wiICh1c28gaW50ZXJubyAvIGxpbXBpZXphKS4gKi9cbiAgYWJvcnRTaWxlbnRseShzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIGlmIChzdG9yZSgpLmdldE1ldGEoc2Vzc2lvbklkKT8uc3RhdHVzICE9PSAnY29tcGxldGUnKSB7XG4gICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICB9XG4gIH0sXG5cbiAgYWJvcnRBbGwoKSB7XG4gICAgQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSkuZm9yRWFjaChzZXNzaW9uSWQgPT4gdGhpcy5hYm9ydFNpbGVudGx5KHNlc3Npb25JZCkpXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsY0FBYyxRQUFRLG1DQUFtQztBQUNsRSxTQUFTQyxrQkFBa0IsRUFBRUMseUJBQXlCLFFBQVEsa0JBQWtCO0FBRWhGLFNBQ0VDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLEVBQ2hDQyxzQkFBc0IsUUFDakIsb0NBQW9DO0FBRTND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
|
|
@@ -7,6 +7,7 @@ import { create } from 'zustand';
|
|
|
7
7
|
import i18n from '../lang';
|
|
8
8
|
import { getUsage } from '../services/maia/Usage';
|
|
9
9
|
import { USAGE_QUOTA_EXCEEDED_CODE } from '../types/usage';
|
|
10
|
+
import { getUsageBlockedBannerText } from '../utils/usageBlockedMessage';
|
|
10
11
|
var initialState = {
|
|
11
12
|
usage: null,
|
|
12
13
|
blocked: false,
|
|
@@ -47,9 +48,11 @@ export var useUsageStore = create(function (set, get) {
|
|
|
47
48
|
blocked: usage.blocked === true,
|
|
48
49
|
loading: false,
|
|
49
50
|
fetched: true
|
|
50
|
-
}, usage.blocked
|
|
51
|
+
}, usage.blocked === true ? {
|
|
52
|
+
quotaExceededMessage: getUsageBlockedBannerText()
|
|
53
|
+
} : {
|
|
51
54
|
quotaExceededMessage: null
|
|
52
|
-
}
|
|
55
|
+
}));
|
|
53
56
|
_context.next = 6;
|
|
54
57
|
break;
|
|
55
58
|
case 4:
|
|
@@ -81,12 +84,12 @@ export var useUsageStore = create(function (set, get) {
|
|
|
81
84
|
}
|
|
82
85
|
return fetchUsage;
|
|
83
86
|
}(),
|
|
84
|
-
applyQuotaExceeded: function applyQuotaExceeded(
|
|
87
|
+
applyQuotaExceeded: function applyQuotaExceeded() {
|
|
85
88
|
// Invalida fetches en vuelo para que no limpien el bloqueo del 402.
|
|
86
89
|
fetchSeq += 1;
|
|
87
90
|
set({
|
|
88
91
|
blocked: true,
|
|
89
|
-
quotaExceededMessage:
|
|
92
|
+
quotaExceededMessage: getUsageBlockedBannerText()
|
|
90
93
|
});
|
|
91
94
|
// Alinear el resto de la UI con el backend (race del pool compartido).
|
|
92
95
|
get().fetchUsage()["catch"](function () {
|
|
@@ -105,4 +108,4 @@ export var getUsageStoreState = function getUsageStoreState() {
|
|
|
105
108
|
export var isUsageQuotaExceededError = function isUsageQuotaExceededError(code) {
|
|
106
109
|
return code === USAGE_QUOTA_EXCEEDED_CODE;
|
|
107
110
|
};
|
|
108
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGUiLCJpMThuIiwiZ2V0VXNhZ2UiLCJVU0FHRV9RVU9UQV9FWENFRURFRF9DT0RFIiwiZ2V0VXNhZ2VCbG9ja2VkQmFubmVyVGV4dCIsImluaXRpYWxTdGF0ZSIsInVzYWdlIiwiYmxvY2tlZCIsInF1b3RhRXhjZWVkZWRNZXNzYWdlIiwibG9hZGluZyIsImZldGNoZWQiLCJmZXRjaFNlcSIsInVzZVVzYWdlU3RvcmUiLCJzZXQiLCJnZXQiLCJfb2JqZWN0U3ByZWFkIiwiZmV0Y2hVc2FnZSIsIl9mZXRjaFVzYWdlIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzZXEiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGFuZ3VhZ2UiLCJzZW50IiwiYWJydXB0IiwiY29uc29sZSIsImVycm9yIiwic3RhdGUiLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJhcHBseVF1b3RhRXhjZWVkZWQiLCJ1bmRlZmluZWQiLCJyZXNldCIsImdldFVzYWdlU3RvcmVTdGF0ZSIsImdldFN0YXRlIiwiaXNVc2FnZVF1b3RhRXhjZWVkZWRFcnJvciIsImNvZGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvdXNlVXNhZ2VTdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJ1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vbGFuZydcbmltcG9ydCB7IGdldFVzYWdlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9Vc2FnZSdcbmltcG9ydCB0eXBlIHsgTWFpYVVzYWdlIH0gZnJvbSAnLi4vdHlwZXMvdXNhZ2UnXG5pbXBvcnQgeyBVU0FHRV9RVU9UQV9FWENFRURFRF9DT0RFIH0gZnJvbSAnLi4vdHlwZXMvdXNhZ2UnXG5pbXBvcnQgeyBnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0IH0gZnJvbSAnLi4vdXRpbHMvdXNhZ2VCbG9ja2VkTWVzc2FnZSdcblxudHlwZSBVc2FnZVN0YXRlID0ge1xuICB1c2FnZTogTWFpYVVzYWdlIHwgbnVsbFxuICAvKiogRnVlbnRlIGRlIHZlcmRhZCBVSTogdHJ1ZSBzaSBHRVQgdXNhZ2UuYmxvY2tlZCBvIHRyYXMgNDAyIHVzYWdlX3F1b3RhX2V4Y2VlZGVkLiAqL1xuICBibG9ja2VkOiBib29sZWFuXG4gIC8qKiBUZXh0byBkZWwgY2FydGVsLCBzaWVtcHJlIGVuIGVsIGlkaW9tYSBkZSBsYSBhcHAgKG5vIGVsIG1lbnNhamUgY3J1ZG8gZGVsIDQwMikuICovXG4gIHF1b3RhRXhjZWVkZWRNZXNzYWdlOiBzdHJpbmcgfCBudWxsXG4gIGxvYWRpbmc6IGJvb2xlYW5cbiAgZmV0Y2hlZDogYm9vbGVhblxufVxuXG50eXBlIFVzYWdlQWN0aW9ucyA9IHtcbiAgZmV0Y2hVc2FnZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogTWFyY2EgYmxvcXVlbyBpbm1lZGlhdG8gcG9yIDQwMjsgcmVmcmVzY2EgdXNhZ2UgZW4gcGFyYWxlbG8uICovXG4gIGFwcGx5UXVvdGFFeGNlZWRlZDogKCkgPT4gdm9pZFxuICByZXNldDogKCkgPT4gdm9pZFxufVxuXG5jb25zdCBpbml0aWFsU3RhdGU6IFVzYWdlU3RhdGUgPSB7XG4gIHVzYWdlOiBudWxsLFxuICBibG9ja2VkOiBmYWxzZSxcbiAgcXVvdGFFeGNlZWRlZE1lc3NhZ2U6IG51bGwsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBmZXRjaGVkOiBmYWxzZSxcbn1cblxuLyoqIEV2aXRhIHF1ZSB1biBHRVQgdXNhZ2UgZW4gdnVlbG8gcGlzZSB1biA0MDIgbcOhcyByZWNpZW50ZS4gKi9cbmxldCBmZXRjaFNlcSA9IDBcblxuZXhwb3J0IGNvbnN0IHVzZVVzYWdlU3RvcmUgPSBjcmVhdGU8VXNhZ2VTdGF0ZSAmIFVzYWdlQWN0aW9ucz4oKHNldCwgZ2V0KSA9PiAoe1xuICAuLi5pbml0aWFsU3RhdGUsXG5cbiAgZmV0Y2hVc2FnZTogYXN5bmMgKCkgPT4ge1xuICAgIGZldGNoU2VxICs9IDFcbiAgICBjb25zdCBzZXEgPSBmZXRjaFNlcVxuICAgIHNldCh7IGxvYWRpbmc6IHRydWUgfSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNhZ2UgPSBhd2FpdCBnZXRVc2FnZShpMThuLmxhbmd1YWdlKVxuICAgICAgaWYgKHNlcSAhPT0gZmV0Y2hTZXEpIHJldHVyblxuXG4gICAgICBzZXQoe1xuICAgICAgICB1c2FnZSxcbiAgICAgICAgLy8gU29sbyBibG9xdWVhciBjdWFuZG8gZWwgYmFja2VuZCBsbyBkaWNlIGV4cGzDrWNpdGFtZW50ZSAoZmFpbC1vcGVuIHNpIGZhbHRhKS5cbiAgICAgICAgYmxvY2tlZDogdXNhZ2UuYmxvY2tlZCA9PT0gdHJ1ZSxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIC4uLih1c2FnZS5ibG9ja2VkID09PSB0cnVlXG4gICAgICAgICAgPyB7IHF1b3RhRXhjZWVkZWRNZXNzYWdlOiBnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0KCkgfVxuICAgICAgICAgIDogeyBxdW90YUV4Y2VlZGVkTWVzc2FnZTogbnVsbCB9KSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChzZXEgIT09IGZldGNoU2VxKSByZXR1cm5cbiAgICAgIC8vIEZhaWwtb3Blbjogc2kgdXNhZ2Ugbm8gcmVzcG9uZGUsIG5vIGRlc2Jsb3F1ZWFyIHVuIDQwMiB5YSBhcGxpY2Fkby5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBNQUlBIHVzYWdlJywgZXJyb3IpXG4gICAgICBzZXQoc3RhdGUgPT4gKHtcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGJsb2NrZWQ6IHN0YXRlLmJsb2NrZWQsXG4gICAgICB9KSlcbiAgICB9XG4gIH0sXG5cbiAgYXBwbHlRdW90YUV4Y2VlZGVkOiAoKSA9PiB7XG4gICAgLy8gSW52YWxpZGEgZmV0Y2hlcyBlbiB2dWVsbyBwYXJhIHF1ZSBubyBsaW1waWVuIGVsIGJsb3F1ZW8gZGVsIDQwMi5cbiAgICBmZXRjaFNlcSArPSAxXG4gICAgc2V0KHtcbiAgICAgIGJsb2NrZWQ6IHRydWUsXG4gICAgICBxdW90YUV4Y2VlZGVkTWVzc2FnZTogZ2V0VXNhZ2VCbG9ja2VkQmFubmVyVGV4dCgpLFxuICAgIH0pXG4gICAgLy8gQWxpbmVhciBlbCByZXN0byBkZSBsYSBVSSBjb24gZWwgYmFja2VuZCAocmFjZSBkZWwgcG9vbCBjb21wYXJ0aWRvKS5cbiAgICBnZXQoKVxuICAgICAgLmZldGNoVXNhZ2UoKVxuICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgfSxcblxuICByZXNldDogKCkgPT4ge1xuICAgIGZldGNoU2VxICs9IDFcbiAgICBzZXQoeyAuLi5pbml0aWFsU3RhdGUgfSlcbiAgfSxcbn0pKVxuXG5leHBvcnQgY29uc3QgZ2V0VXNhZ2VTdG9yZVN0YXRlID0gKCkgPT4gdXNlVXNhZ2VTdG9yZS5nZXRTdGF0ZSgpXG5cbmV4cG9ydCBjb25zdCBpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yID0gKGNvZGU/OiBzdHJpbmcpOiBib29sZWFuID0+IGNvZGUgPT09IFVTQUdFX1FVT1RBX0VYQ0VFREVEX0NPREVcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUFTQSxNQUFNLFFBQVEsU0FBUztBQUNoQyxPQUFPQyxJQUFJLE1BQU0sU0FBUztBQUMxQixTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELFNBQVNDLHlCQUF5QixRQUFRLGdCQUFnQjtBQUMxRCxTQUFTQyx5QkFBeUIsUUFBUSw4QkFBOEI7QUFtQnhFLElBQU1DLFlBQXdCLEdBQUc7RUFDL0JDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLG9CQUFvQixFQUFFLElBQUk7RUFDMUJDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLE9BQU8sRUFBRTtBQUNYLENBQUM7O0FBRUQ7QUFDQSxJQUFJQyxRQUFRLEdBQUcsQ0FBQztBQUVoQixPQUFPLElBQU1DLGFBQWEsR0FBR1osTUFBTSxDQUE0QixVQUFDYSxHQUFHLEVBQUVDLEdBQUc7RUFBQSxPQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDbkVWLFlBQVk7SUFFZlcsVUFBVTtNQUFBLElBQUFDLFdBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFFLFNBQUFDLFFBQUE7UUFBQSxJQUFBQyxHQUFBLEVBQUFoQixLQUFBLEVBQUFpQixFQUFBO1FBQUEsT0FBQUosbUJBQUEsQ0FBQUssSUFBQSxXQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7WUFBQTtjQUNWaEIsUUFBUSxJQUFJLENBQUM7Y0FDUFcsR0FBRyxHQUFHWCxRQUFRO2NBQ3BCRSxHQUFHLENBQUM7Z0JBQUVKLE9BQU8sRUFBRTtjQUFLLENBQUMsQ0FBQztjQUFBZ0IsUUFBQSxDQUFBQyxJQUFBO2NBQUFELFFBQUEsQ0FBQUUsSUFBQTtjQUFBLE9BRUF6QixRQUFRLENBQUNELElBQUksQ0FBQzJCLFFBQVEsQ0FBQztZQUFBO2NBQXJDdEIsS0FBSyxHQUFBbUIsUUFBQSxDQUFBSSxJQUFBO2NBQUEsTUFDUFAsR0FBRyxLQUFLWCxRQUFRO2dCQUFBYyxRQUFBLENBQUFFLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFGLFFBQUEsQ0FBQUssTUFBQTtZQUFBO2NBRXBCakIsR0FBRyxDQUFBRSxhQUFBO2dCQUNEVCxLQUFLLEVBQUxBLEtBQUs7Z0JBQ0w7Z0JBQ0FDLE9BQU8sRUFBRUQsS0FBSyxDQUFDQyxPQUFPLEtBQUssSUFBSTtnQkFDL0JFLE9BQU8sRUFBRSxLQUFLO2dCQUNkQyxPQUFPLEVBQUU7Y0FBSSxHQUNUSixLQUFLLENBQUNDLE9BQU8sS0FBSyxJQUFJLEdBQ3RCO2dCQUFFQyxvQkFBb0IsRUFBRUoseUJBQXlCLENBQUM7Y0FBRSxDQUFDLEdBQ3JEO2dCQUFFSSxvQkFBb0IsRUFBRTtjQUFLLENBQUMsQ0FDbkMsQ0FBQztjQUFBaUIsUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtjQUFBRixRQUFBLENBQUFDLElBQUE7Y0FBQUgsRUFBQSxHQUFBRSxRQUFBO2NBQUEsTUFFRUgsR0FBRyxLQUFLWCxRQUFRO2dCQUFBYyxRQUFBLENBQUFFLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFGLFFBQUEsQ0FBQUssTUFBQTtZQUFBO2NBQ3BCO2NBQ0FDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLDRCQUE0QixFQUFBVCxFQUFPLENBQUM7Y0FDbERWLEdBQUcsQ0FBQyxVQUFBb0IsS0FBSztnQkFBQSxPQUFLO2tCQUNaeEIsT0FBTyxFQUFFLEtBQUs7a0JBQ2RDLE9BQU8sRUFBRSxJQUFJO2tCQUNiSCxPQUFPLEVBQUUwQixLQUFLLENBQUMxQjtnQkFDakIsQ0FBQztjQUFBLENBQUMsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBa0IsUUFBQSxDQUFBUyxJQUFBO1VBQUE7UUFBQSxHQUFBYixPQUFBO01BQUEsQ0FFTjtNQUFBLFNBNUJETCxVQUFVQSxDQUFBO1FBQUEsT0FBQUMsV0FBQSxDQUFBa0IsS0FBQSxPQUFBQyxTQUFBO01BQUE7TUFBQSxPQUFWcEIsVUFBVTtJQUFBLEdBNEJUO0lBRURxQixrQkFBa0IsRUFBRSxTQUFwQkEsa0JBQWtCQSxDQUFBLEVBQVE7TUFDeEI7TUFDQTFCLFFBQVEsSUFBSSxDQUFDO01BQ2JFLEdBQUcsQ0FBQztRQUNGTixPQUFPLEVBQUUsSUFBSTtRQUNiQyxvQkFBb0IsRUFBRUoseUJBQXlCLENBQUM7TUFDbEQsQ0FBQyxDQUFDO01BQ0Y7TUFDQVUsR0FBRyxDQUFDLENBQUMsQ0FDRkUsVUFBVSxDQUFDLENBQUMsU0FDUCxDQUFDO1FBQUEsT0FBTXNCLFNBQVM7TUFBQSxFQUFDO0lBQzNCLENBQUM7SUFFREMsS0FBSyxFQUFFLFNBQVBBLEtBQUtBLENBQUEsRUFBUTtNQUNYNUIsUUFBUSxJQUFJLENBQUM7TUFDYkUsR0FBRyxDQUFBRSxhQUFBLEtBQU1WLFlBQVksQ0FBRSxDQUFDO0lBQzFCO0VBQUM7QUFBQSxDQUNELENBQUM7QUFFSCxPQUFPLElBQU1tQyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBO0VBQUEsT0FBUzVCLGFBQWEsQ0FBQzZCLFFBQVEsQ0FBQyxDQUFDO0FBQUE7QUFFaEUsT0FBTyxJQUFNQyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJQyxJQUFhO0VBQUEsT0FBY0EsSUFBSSxLQUFLeEMseUJBQXlCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import i18n from '../lang';
|
|
2
|
+
import { SECTIONS } from '../constants/config';
|
|
3
|
+
|
|
4
|
+
/** Texto del cartel de pool agotado según el idioma activo de la app (no el del 402). */
|
|
5
|
+
export var getUsageBlockedBannerText = function getUsageBlockedBannerText() {
|
|
6
|
+
return i18n.t('chat.usage.blockedBanner', {
|
|
7
|
+
ns: SECTIONS.chatAI,
|
|
8
|
+
defaultValue: 'Te quedaste sin usos de IA. Contacta con tu administrador.'
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpMThuIiwiU0VDVElPTlMiLCJnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0IiwidCIsIm5zIiwiY2hhdEFJIiwiZGVmYXVsdFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3VzYWdlQmxvY2tlZE1lc3NhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGkxOG4gZnJvbSAnLi4vbGFuZydcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZydcblxuLyoqIFRleHRvIGRlbCBjYXJ0ZWwgZGUgcG9vbCBhZ290YWRvIHNlZ8O6biBlbCBpZGlvbWEgYWN0aXZvIGRlIGxhIGFwcCAobm8gZWwgZGVsIDQwMikuICovXG5leHBvcnQgY29uc3QgZ2V0VXNhZ2VCbG9ja2VkQmFubmVyVGV4dCA9ICgpOiBzdHJpbmcgPT5cbiAgaTE4bi50KCdjaGF0LnVzYWdlLmJsb2NrZWRCYW5uZXInLCB7XG4gICAgbnM6IFNFQ1RJT05TLmNoYXRBSSxcbiAgICBkZWZhdWx0VmFsdWU6ICdUZSBxdWVkYXN0ZSBzaW4gdXNvcyBkZSBJQS4gQ29udGFjdGEgY29uIHR1IGFkbWluaXN0cmFkb3IuJyxcbiAgfSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsUUFBUSxRQUFRLHFCQUFxQjs7QUFFOUM7QUFDQSxPQUFPLElBQU1DLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUE7RUFBQSxPQUNwQ0YsSUFBSSxDQUFDRyxDQUFDLENBQUMsMEJBQTBCLEVBQUU7SUFDakNDLEVBQUUsRUFBRUgsUUFBUSxDQUFDSSxNQUFNO0lBQ25CQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQyxDQUFDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|