@hestia-earth/ui-components 0.24.2 → 0.25.0

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.
Files changed (34) hide show
  1. package/common/utils.d.ts +1 -0
  2. package/cycles/cycles-nodes/cycles-nodes.component.d.ts +1 -0
  3. package/esm2022/common/utils.mjs +2 -1
  4. package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +8 -6
  5. package/esm2022/engine/aggregation-engine.service.mjs +2 -2
  6. package/esm2022/engine/engine.service.mjs +3 -3
  7. package/esm2022/files/files-error-summary.model.mjs +1 -1
  8. package/esm2022/files/files-error.model.mjs +5 -3
  9. package/esm2022/files/files-form/files-form.component.mjs +1 -1
  10. package/esm2022/files/files-form.model.mjs +1 -1
  11. package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +141 -122
  12. package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +38 -13
  13. package/esm2022/node/node-logs-models/node-logs-models.component.mjs +8 -4
  14. package/esm2022/node/node-value-details/node-value-details.component.mjs +2 -1
  15. package/esm2022/schema/index.mjs +2 -1
  16. package/esm2022/schema/schema-validation.model.mjs +2 -0
  17. package/esm2022/sites/index.mjs +2 -2
  18. package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +129 -0
  19. package/esm2022/sites/sites.module.mjs +4 -4
  20. package/fesm2022/hestia-earth-ui-components.mjs +1504 -1425
  21. package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
  22. package/files/files-error-summary.model.d.ts +2 -1
  23. package/files/files-error.model.d.ts +2 -20
  24. package/files/files-form.model.d.ts +1 -1
  25. package/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.d.ts +35 -17
  26. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +16 -6
  27. package/node/node-logs-models/node-logs-models.component.d.ts +3 -0
  28. package/package.json +1 -1
  29. package/schema/index.d.ts +1 -0
  30. package/schema/schema-validation.model.d.ts +30 -0
  31. package/sites/index.d.ts +1 -1
  32. package/sites/{sites-measurements/sites-measurements.component.d.ts → sites-nodes/sites-nodes.component.d.ts} +24 -11
  33. package/sites/sites.module.d.ts +2 -2
  34. package/esm2022/sites/sites-measurements/sites-measurements.component.mjs +0 -101
@@ -608,4 +608,4 @@ export const calculateCycleStartDate = (properties, property) => {
608
608
  const endDate = siblingProperty(properties, property, 'endDate');
609
609
  return moment(endDate.value).locale('en-gb').subtract(cycleDuration.value, 'days').format('YYYY-MM-DD');
610
610
  };
611
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBRUwsVUFBVSxFQUNWLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFHWixnQkFBZ0IsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLGVBQWUsRUFFZixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVySCxNQUFNLHVCQUF1QixHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFF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LFVBQTJCLEVBQUUsUUFBdUIsRUFBRSxFQUFFO0lBQ3JHLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxVQUEyQixFQUFFLFFBQXVCLEVBQUUsRUFBRTtJQUM5RixNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUUsQ0FBQztJQUM5RSxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUUsQ0FBQztJQUNsRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMxRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2VuLWdiJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZGlmZkluRGF5cywgaXNOdW1iZXIgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7XG4gIEpTT04gYXMgSGVzdGlhSnNvbixcbiAgU2NoZW1hVHlwZSxcbiAgTm9kZVR5cGUsXG4gIGlzVHlwZU5vZGUsXG4gIGlzVHlwZVZhbGlkLFxuICBpc0V4cGFuZGFibGUsXG4gIFNpdGUsXG4gIE9yZ2FuaXNhdGlvbixcbiAgdHlwZVRvU2NoZW1hVHlwZVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBkZWZpbml0aW9ucywgZGVmaW5pdGlvbiwgSURlZmluaXRpb25PYmplY3QsIElEZWZpbml0aW9uQXJyYXksIGdlbmVyaWNUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5cbmltcG9ydCB7XG4gIElWYWxpZGF0aW9uRXJyb3IsXG4gIGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZSxcbiAgZm9ybWF0RXJyb3IsXG4gIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IsXG4gIGVycm9ySGFzRXJyb3IsXG4gIGVycm9ySGFzV2FybmluZyxcbiAgdmFsaWRhdGlvbkVycm9yTGV2ZWwsXG4gIG1pc3NpbmdOb2RlRXJyb3JzLFxuICBpc01pc3NpbmdPbmVPZkVycm9yLFxuICBpc01pZ3JhdGlvbkVycm9yLFxuICBtaWdyYXRpb25FcnJvck1lc3NhZ2Vcbn0gZnJvbSAnLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQge1xuICBzY2hlbWFSZXF1aXJlZFByb3BlcnRpZXMsXG4gIHZhbHVlVHlwZVRvRGVmYXVsdCxcbiAgZGVmaW5pdGlvblRvU2NoZW1hVHlwZSxcbiAgYXZhaWxhYmxlUHJvcGVydGllcyxcbiAgbmVzdGluZ1R5cGVFbmFibGVkLFxuICBuZXN0aW5nRW5hYmxlZCxcbiAgbGlua1R5cGVFbmFibGVkLFxuICBpc1NjaGVtYUlyaVxufSBmcm9tICcuLi9zY2hlbWEvc2NoZW1hLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hDb3VudHJ5IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBiYXNlVXJsLCBjb2RlLCBnbG9zc2FyeUxpbmssIG1hcHNVcmwsIHNhZmVKU09OUGFyc2UsIHNhZmVKU09OU3RyaW5naWZ5LCBzY2hlbWFMaW5rIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgbWlzc2luZ05vZGVFcnJvck1lc3NhZ2UgPSAoeyAnQHR5cGUnOiBfdCwgdHlwZSwgbmFtZSB9OiBhbnksIG1pc3NpbmdJZEVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAgKF90IHx8IHR5cGUpID09PSAnVGVybSdcbiAgICA/IC8vIG1pZ3JhdGVkIGZyb20gYSB2YWx1ZSB0byBhbm90aGVyXG4gICAgICBpc01pZ3JhdGlvbkVycm9yKG1pc3NpbmdJZEVycm9yKVxuICAgICAgPyBtaWdyYXRpb25FcnJvck1lc3NhZ2UobWlzc2luZ0lkRXJyb3IpXG4gICAgICA6IGAke25hbWUgPyBgVGhlIHRlcm0gXCIke25hbWV9XCJgIDogJ1RoaXMgdGVybSd9IGRvZXNuJ3QgbWF0Y2ggYSB0ZXJtIGluIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uXG4gICAgICBQbGVhc2UgY2hlY2sgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeScpfSBmb3IgdGhlIGNvcnJlY3QgJHtjb2RlKCdAaWQnKX0gb3IgJHtjb2RlKCduYW1lJyl9IGFuZCBzcGVsbGluZy5gXG4gICAgOiBgVGhpcyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGRvZXMgbm90IGV4aXN0IGluIEhlc3RpYS4gSWYgeW91IGFyZSB0cnlpbmcgdG8gbGluayB0byBhbiBleGlzdGluZ1xuICAgICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0gaW4gSGVzdGlhLCBwbGVhc2UgY2hlY2sgdGhlICR7Y29kZSgnbmFtZScpfSBvciAke2NvZGUoJ0BpZCcpfSBpcyBjb3JyZWN0LlxuICAgIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9LCBwbGVhc2UgaWRlbnRpZnkgaXQgd2l0aCBhbiAke2NvZGUoJ2lkJyl9IGZpZWxkLmA7XG5cbmV4cG9ydCBjb25zdCBBUlJBWV9ERUxJTUlURVIgPSAnOyc7XG5jb25zdCBpZ25vcmVLZXlzID0gWydmaWxlcGF0aCcsICdfY2FjaGUnXTtcblxuZXhwb3J0IHR5cGUgc3VnZ2VzdGlvblR5cGUgPSBOb2RlVHlwZSB8ICdzZWxlY3QnIHwgJ2RlZmF1bHQnO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTdWdnZXN0aW9uVHlwZTogc3VnZ2VzdGlvblR5cGUgPSAnZGVmYXVsdCc7XG5cbmludGVyZmFjZSBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbiB7XG4gIHR5cGU/OiBzdWdnZXN0aW9uVHlwZTtcbiAgcXVlcmllcz86IGFueVtdO1xuICB2YWx1ZXM/OiBzdHJpbmdbXTtcbiAgcGFyZW50TGV2ZWw/OiBudW1iZXI7XG4gIGlzTGlua05vZGU/OiBib29sZWFuO1xuICBpc1VuaXF1ZUtleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTmV3UHJvcGVydHkge1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9wPzogZGVmaW5pdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRXJyb3JQcm9wZXJ0eSB7XG4gIGxldmVsPzogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHByb3BlcnR5IHdhcyBhZGRlZCBieSB0aGUgdXNlclxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgaXNBZGRlZD86IGJvb2xlYW47XG4gIHNjaGVtYVR5cGU6IFNjaGVtYVR5cGU7XG4gIGtleTogc3RyaW5nO1xuICBmdWxsS2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBhbnk7XG4gIGFkZFByb3BlcnR5RW5hYmxlZDogYm9vbGVhbjtcbiAgc3VnZ2VzdGlvbnM/OiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbjtcbiAgc2NoZW1hPzogZGVmaW5pdGlvbjtcbiAgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yO1xuICBoYXNFcnJvcj86IGJvb2xlYW47XG4gIGhhc1dhcm5pbmc/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGNsb3NlZFZpc2libGU/OiBib29sZWFuO1xuICBuZXdQcm9wZXJ0eT86IElOZXdQcm9wZXJ0eTtcbiAgbmV3RXJyb3I/OiBJRXJyb3JQcm9wZXJ0eTtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbiAgaXNBcnJheT86IGJvb2xlYW47XG4gIGlzRXhwYW5kYWJsZT86IGJvb2xlYW47XG4gIGlzT3Blbj86IGJvb2xlYW47XG4gIHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGV4dGVybmFsVXJsPzoge1xuICAgIHVybD86IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGRlZmF1bHQgaXMgZXh0ZXJuYWwtbGluay1hbHRcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHVybFBhcmFtVmFsdWU/OiBib29sZWFuO1xuICB9O1xuICAvLyBtYWtpbmcgY2hhbmdlcyBvbiB0aGUgcHJvcGVydHlcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIC8vIHVzZXIgbWFkZSBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICBjaGFuZ2VkPzogYm9vbGVhbjtcbiAgZm9ybWF0dGVyOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBzdHJpbmdWYWx1ZSA9ICh2YWx1ZTogYW55KSA9PiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdmFsdWUpLnRvU3RyaW5nKCk7XG5jb25zdCBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aCA9IChrZXk6IHN0cmluZykgPT4ga2V5LnJlcGxhY2UoL1xcW1xcZCtcXF0kLywgJycpO1xuZXhwb3J0IGNvbnN0IGtleVRvRGF0YVBhdGggPSAoa2V5OiBzdHJpbmcpID0+IChrZXk/Lmxlbmd0aCA/IGAuJHtrZXl9YCA6ICcnKTtcbmV4cG9ydCBjb25zdCBkYXRhUGF0aFRvS2V5ID0gKGRhdGFQYXRoID0gJycsIHRyaW1BcnJheSA9IGZhbHNlKSA9PlxuICB0cmltQXJyYXkgPyBub25FeHBhbmRhYmxlQXJyYXlEYXRhUGF0aChkYXRhUGF0aC5zdWJzdHJpbmcoMSkpIDogZGF0YVBhdGguc3Vic3RyaW5nKDEpO1xuZXhwb3J0IGNvbnN0IHBhcmVudEtleSA9IChrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBrZXlzID0gKGtleS5zdGFydHNXaXRoKCcuJykgPyBrZXkuc3Vic3RyaW5nKDEpIDoga2V5KS5zcGxpdCgnLicpO1xuICBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5cy5qb2luKCcuJyk7XG59O1xuXG4vKipcbiAqIFNvcnQgcHJvcGVydGllcyBoYXZpbmcgZXJyb3JzLCB0eXBlLCBpZCwgLi4ucHJvcGVydGllcyAoc2ltcGxlKSwgYW5kIGZpbmFsbHkgdGhlIGdyb3Vwc1xuICpcbiAqIEBwYXJhbSBhIHtJTm9kZVByb3BlcnR5fVxuICogQHBhcmFtIGIge0lOb2RlUHJvcGVydHl9XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0UHJvcGVydGllcyA9IChhOiBJTm9kZVByb3BlcnR5LCBiOiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGlmIChpc051bWJlcihhLmtleSkgJiYgaXNOdW1iZXIoYi5rZXkpKSB7XG4gICAgcmV0dXJuICthLmtleSAtICtiLmtleTtcbiAgfVxuICBpZiAoYS5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gYi5pc0V4cGFuZGFibGUgPyBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KSA6IDE7XG4gIH1cbiAgaWYgKGIuaXNFeHBhbmRhYmxlKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYS5rZXkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgY29uc3QgYUtleSA9IGEua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGNvbnN0IGJLZXkgPSBiLmtleS5yZXBsYWNlKCdAJywgJycpO1xuICBpZiAoYUtleSA9PT0gJ3R5cGUnKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmIChiS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBpZiAoYUtleSA9PT0gJ2lkJyAmJiBiS2V5ICE9PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGEuaGFzRXJyb3IgfHwgYS5oYXNXYXJuaW5nKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBhLmtleS5sb2NhbGVDb21wYXJlKGIua2V5KTtcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wZXJ0eUVycm9yOiB7XG4gIFtrZXk6IHN0cmluZ106IChlcnJvcjogYW55LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgbWF4OiAoeyBtYXggfSkgPT4gYHNob3VsZCBiZSA8PSAke21heH1gLFxuICBtaW46ICh7IG1pbiB9KSA9PiBgc2hvdWxkIGJlID49ICR7bWlufWAsXG4gIHBhdHRlcm46ICh7IHJlcXVpcmVkUGF0dGVybiB9KSA9PiBgc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCIke3JlcXVpcmVkUGF0dGVybn1cImAsXG4gIHJlcXVpcmVkOiAoX2UsIHsgc2NoZW1hVHlwZSB9KSA9PiAoc2NoZW1hVHlwZSA/IGBzaG91bGQgYmUgc2V0IG9yIGxpbmtlZCB0byBhbm90aGVyICR7c2NoZW1hVHlwZX1gIDogdW5kZWZpbmVkKVxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFByb3BlcnR5RXJyb3IgPSAoZXJyb3JzOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF07XG4gIHJldHVybiBrZXkgaW4gZGVmYXVsdFByb3BlcnR5RXJyb3IgPyBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UoZGVmYXVsdFByb3BlcnR5RXJyb3Jba2V5XShlcnJvcnNba2V5XSwgcHJvcGVydHkpKSA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHRlciA9IChrZXk6IHN0cmluZykgPT4gKHZhbHVlOiBhbnkpID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZS5iaWJsaW9ncmFwaHk/LnRpdGxlIHx8IHZhbHVlW2tleV0gfHwgdmFsdWUubmFtZSA6IHZhbHVlO1xuXG5leHBvcnQgY29uc3QgaGFzRXJyb3IgPSB2YWx1ZSA9PiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5zb21lKGhhc0Vycm9yKSA6IHZhbHVlLmhhc0Vycm9yKTtcblxuZXhwb3J0IGNvbnN0IGhhc1dhcm5pbmcgPSB2YWx1ZSA9PiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5zb21lKGhhc1dhcm5pbmcpIDogdmFsdWUuaGFzV2FybmluZyk7XG5cbmNvbnN0IGNvbXBpbGVTdWdnZXN0aW9uUXVlcmllcyA9IChrZXk6IHN0cmluZywgYWxsT2Y6IGFueVtdKSA9PiB7XG4gIGNvbnN0IGNvbmRpdGlvbnMgPSAoYWxsT2YgfHwgW10pXG4gICAgLmZpbHRlcih2ID0+ICh2LmlmPy5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKHYgPT4gdi50aGVuPy5wcm9wZXJ0aWVzPy5ba2V5XSlcbiAgICAubWFwKHYgPT4gdj8uaXRlbXM/LnByb3BlcnRpZXMgfHwgdj8ucHJvcGVydGllcylcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gY29uZGl0aW9ucy5sZW5ndGhcbiAgICA/IFtcbiAgICAgICAge1xuICAgICAgICAgIGJvb2w6IHtcbiAgICAgICAgICAgIHNob3VsZDogY29uZGl0aW9ucy5mbGF0TWFwKGNvbmQgPT5cbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29uZCkuZmxhdE1hcChrID0+XG4gICAgICAgICAgICAgICAgKGNvbmRba10uZW51bSB8fCBbXSkubWFwKHYgPT4gKHtcbiAgICAgICAgICAgICAgICAgIG1hdGNoOiB7IFtrXTogdiB9XG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIDogW107XG59O1xuXG4vLyBkZWZhdWx0IHN1Z2dlc3QgZm9yIGxpbmtpbmcgbm9kZXMgdG9nZXRoZXIgdXNpbmcgdGhlIGBpZGAgZmllbGRcbmNvbnN0IHN1Z2dlc3RMaW5rTm9kZXMgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKTtcbiAgcmV0dXJuIGtleSA9PT0gJ2lkJyAmJiBrZXlzLmxlbmd0aCA+PSAxID8geyB0eXBlLCBpc0xpbmtOb2RlOiB0cnVlIH0gOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBzdWdnZXN0RXhpc3RpbmdOb2RlID0gKHR5cGU6IE5vZGVUeXBlLCBmdWxsS2V5OiBzdHJpbmcpOiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICByZXR1cm4ga2V5cy5sZW5ndGggPj0gMSAmJiBbJ0BpZCcsICdvcGVuTENBSWQnXS5pbmNsdWRlcyhrZXkpID8geyB0eXBlLCBpc1VuaXF1ZUtleTogJ0BpZCcgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24gPSAodHlwZTogTm9kZVR5cGUpID0+IChmdWxsS2V5OiBzdHJpbmcpID0+XG4gIHN1Z2dlc3RMaW5rTm9kZXModHlwZSwgZnVsbEtleSkgfHwgc3VnZ2VzdEV4aXN0aW5nTm9kZSh0eXBlLCBmdWxsS2V5KTtcblxuY29uc3QgdGVybVN1Z2dlc3Rpb25zID0gKHBhcmVudDogc3RyaW5nLCB7IGFsbE9mIH06IElEZWZpbml0aW9uT2JqZWN0KSA9PiAoe1xuICB0eXBlOiBOb2RlVHlwZS5UZXJtLFxuICBxdWVyaWVzOiBbXG4gICAgLi4uY29tcGlsZVN1Z2dlc3Rpb25RdWVyaWVzKG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKHBhcmVudCksIGFsbE9mISksXG4gICAgLi4uKFsnY291bnRyeSddLmluY2x1ZGVzKHBhcmVudCkgPyBbbWF0Y2hDb3VudHJ5XSA6IFtdKVxuICBdXG59KTtcblxuY29uc3QgdHlwZVRvU3VnZ2VzdGlvbjoge1xuICBbdHlwZSBpbiBTY2hlbWFUeXBlIHwgTm9kZVR5cGUgfCBnZW5lcmljVHlwZSB8ICdpbnRlZ2VyJ10/OiAoXG4gICAgZnVsbEtleTogc3RyaW5nLFxuICAgIHBhcmVudFNjaGVtYT86IGRlZmluaXRpb24sXG4gICAgc2NoZW1hPzogZGVmaW5pdGlvblxuICApID0+IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgYW55O1xufSA9IHtcbiAgW05vZGVUeXBlLkFjdG9yXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5BY3RvciksXG4gIFtOb2RlVHlwZS5DeWNsZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuQ3ljbGUpLFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCksXG4gIFtOb2RlVHlwZS5PcmdhbmlzYXRpb25dOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLk9yZ2FuaXNhdGlvbiksXG4gIFtOb2RlVHlwZS5TaXRlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5TaXRlKSxcbiAgW05vZGVUeXBlLlNvdXJjZV06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuU291cmNlKSxcbiAgW05vZGVUeXBlLlRlcm1dOiAoZnVsbEtleSwgcGFyZW50U2NoZW1hKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgICByZXR1cm4gWyduYW1lJ10uaW5jbHVkZXMoa2V5KSAmJiBrZXlzLmxlbmd0aCA+PSAxXG4gICAgICA/IHRlcm1TdWdnZXN0aW9ucyhrZXlzLnBvcCgpISwgcGFyZW50U2NoZW1hIGFzIElEZWZpbml0aW9uT2JqZWN0KVxuICAgICAgOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlRlcm0pKGZ1bGxLZXkpO1xuICB9LFxuICBbU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHldOiBmdWxsS2V5ID0+IHtcbiAgICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICAgIGNvbnN0IHBhcmVudCA9IGtleXMucG9wKCkhO1xuICAgIC8vIHByZXZlbnQgcmVwbGFjaW5nIGEgdG9wLWxldmVsIHNvdXJjZVxuICAgIHJldHVybiBbJ3RpdGxlJywgJ2RvY3VtZW50RE9JJywgJ3Njb3B1cyddLmluY2x1ZGVzKGtleSkgJiYgcGFyZW50ID09PSAnYmlibGlvZ3JhcGh5JyAmJiBrZXlzLmxlbmd0aCA+PSAxXG4gICAgICA/IHtcbiAgICAgICAgICB0eXBlOiBOb2RlVHlwZS5Tb3VyY2UsXG4gICAgICAgICAgcGFyZW50TGV2ZWw6IDFcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH0sXG4gIG51bWJlcjogKF9hLCBfYiwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID8gWyhzY2hlbWEgYXMgYW55KS5jb25zdF0gOiBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdmFsdWVzLmxlbmd0aCA+IDAgPyAnc2VsZWN0JyA6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSxcbiAgICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBpbnRlZ2VyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIHN0cmluZzogKGZ1bGxLZXksIF9iLCBzY2hlbWEpID0+IHtcbiAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdFxuICAgICAgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XVxuICAgICAgOiAoKHNjaGVtYSBhcyBhbnkpLmVudW0gfHwgW10pLmZpbHRlcih2YWwgPT4gIU9iamVjdC52YWx1ZXMoU2NoZW1hVHlwZSkuaW5jbHVkZXModmFsKSk7XG4gICAgY29uc3Qga2V5ID0gZnVsbEtleS5zcGxpdCgnLicpLnBvcCgpO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCAmJiBrZXkgIT09ICd0eXBlJyA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgYm9vbGVhbjogX2EgPT4gKHtcbiAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB2YWx1ZXM6IFsndHJ1ZScsICdmYWxzZSddXG4gIH0pXG59O1xuXG5jb25zdCBlbmFibGVTdWdnZXN0aW9ucyA9IChcbiAgcGFyZW50U2NoZW1hOiBkZWZpbml0aW9uLFxuICB0eXBlOiBTY2hlbWFUeXBlIHwgTm9kZVR5cGUgfCBnZW5lcmljVHlwZSxcbiAgZnVsbEtleTogc3RyaW5nLFxuICBzY2hlbWE/OiBkZWZpbml0aW9uXG4pID0+IHtcbiAgY29uc3Qgc3VnZ2VzdGlvbiA9IHR5cGUgaW4gdHlwZVRvU3VnZ2VzdGlvbiA/IHR5cGVUb1N1Z2dlc3Rpb25bdHlwZV0hKGZ1bGxLZXksIHBhcmVudFNjaGVtYSkgOiB1bmRlZmluZWQ7XG4gIHJldHVybiAoXG4gICAgc3VnZ2VzdGlvbiB8fFxuICAgIChzY2hlbWEgJiYgKHNjaGVtYS50eXBlIGFzIGdlbmVyaWNUeXBlKSBpbiB0eXBlVG9TdWdnZXN0aW9uXG4gICAgICA/IHR5cGVUb1N1Z2dlc3Rpb25bc2NoZW1hLnR5cGUgYXMgZ2VuZXJpY1R5cGVdIShmdWxsS2V5LCBwYXJlbnRTY2hlbWEsIHNjaGVtYSlcbiAgICAgIDogdW5kZWZpbmVkKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LFxuICB7IGZ1bGxLZXksIHNjaGVtYSwgc2NoZW1hVHlwZSB9OiBQYXJ0aWFsPElOb2RlUHJvcGVydHk+XG4pID0+IGF2YWlsYWJsZVByb3BlcnRpZXMoc2NoZW1hISwgc2NoZW1hVHlwZSEsIGZ1bGxLZXkgPyBnZXQobm9kZSwgZnVsbEtleSwge30pIDogbm9kZSwgZnVsbEtleSEubGVuZ3RoID4gMCk7XG5cbmV4cG9ydCBjb25zdCBpc0FkZFByb3BlcnR5RW5hYmxlZCA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPixcbiAgc2NoZW1hVHlwZTogU2NoZW1hVHlwZSxcbiAgc2NoZW1hOiBkZWZpbml0aW9uLFxuICBmdWxsS2V5ID0gJydcbikgPT5cbiAgISFzY2hlbWEgJiZcbiAgISFPYmplY3Qua2V5cyhub2RlQXZhaWxhYmxlUHJvcGVydGllcyhub2RlLCB7IGZ1bGxLZXksIHNjaGVtYSB9KSkubGVuZ3RoICYmXG4gICghZnVsbEtleSB8fCBuZXN0aW5nVHlwZUVuYWJsZWQoc2NoZW1hVHlwZSkpO1xuXG5jb25zdCBlZGl0YWJsZUtleSA9IChrZXk6IHN0cmluZykgPT4gIVsndHlwZScsICdAdHlwZScsICd0ZXJtVHlwZSddLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0eUlkID0gKCkgPT4gdXVpZHY0KCk7XG5cbmNvbnN0IGlzR2VvanNvbiA9IChzY2hlbWE6IGFueSkgPT4gc2NoZW1hLmdlb2pzb247XG5cbmNvbnN0IHByb3BlcnR5VXJsID0gKG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIGtleTogc3RyaW5nKSA9PlxuICBbJ0BpZCcsICduYW1lJ10uaW5jbHVkZXMoa2V5KSAmJiBsaW5rVHlwZUVuYWJsZWQobm9kZVsnQHR5cGUnXSlcbiAgICA/IG5vZGVbJ0BpZCddXG4gICAgICA/IHtcbiAgICAgICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vJHtub2RlWydAdHlwZSddLnRvTG93ZXJDYXNlKCl9LyR7bm9kZVsnQGlkJ119YCxcbiAgICAgICAgICB0aXRsZTogJ09wZW4nXG4gICAgICAgIH1cbiAgICAgIDogbm9kZVsnQHR5cGUnXSA9PT0gU2NoZW1hVHlwZS5UZXJtXG4gICAgICA/IHtcbiAgICAgICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/cXVlcnk9YCxcbiAgICAgICAgICB1cmxQYXJhbVZhbHVlOiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiAnU2VhcmNoIGluIEdsb3NzYXJ5J1xuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZFxuICAgIDogdW5kZWZpbmVkO1xuXG5jb25zdCBwcm9wZXJ0eU1hcHNVcmwgPSAobm9kZTogU2l0ZSB8IE9yZ2FuaXNhdGlvbiwga2V5OiBzdHJpbmcsIHZhbHVlKSA9PlxuICBbJ3R5cGUnXS5pbmNsdWRlcyhrZXkpICYmXG4gIFtTY2hlbWFUeXBlLlNpdGUudG9TdHJpbmcoKSwgU2NoZW1hVHlwZS5PcmdhbmlzYXRpb24udG9TdHJpbmcoKV0uaW5jbHVkZXMoc3RyaW5nVmFsdWUodmFsdWUpIHx8IG5vZGUudHlwZSlcbiAgICA/IHtcbiAgICAgICAgdXJsOiBtYXBzVXJsKHsgbGF0OiBub2RlLmxhdGl0dWRlLCBsbmc6IG5vZGUubG9uZ2l0dWRlIH0pLFxuICAgICAgICB0aXRsZTogJ1ZpZXcgb24gbWFwcycsXG4gICAgICAgIGljb246ICdtYXAnXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5RXh0ZXJuYWxVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+XG4gIHByb3BlcnR5VXJsKG5vZGUsIGtleSkgfHwgcHJvcGVydHlNYXBzVXJsKG5vZGUgYXMgYW55LCBrZXksIHZhbHVlKTtcblxuY29uc3QgYXJyYXlQbGFjZWhvbGRlciA9ICh2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBgVHlwZSBhICR7dmFsdWVUeXBlfSB0aGVuIHByZXNzIEVudGVyYDtcblxuY29uc3QgZGVmYXVsdFBsYWNlaG9sZGVyID0gKHsgdHlwZSwgZXhhbXBsZXMsIGdlb2pzb24gfTogYW55LCB2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PlxuICBnZW9qc29uXG4gICAgPyAnTXVzdCBiZSBhIHZhbGlkIEdlb0pTT04nXG4gICAgOiBleGFtcGxlcz8ubGVuZ3RoXG4gICAgPyBBcnJheS5pc0FycmF5KGV4YW1wbGVzWzBdKVxuICAgICAgPyBhcnJheVBsYWNlaG9sZGVyKHZhbHVlVHlwZSlcbiAgICAgIDogZXhhbXBsZXNbMF1cbiAgICA6IGBNdXN0IGJlIG9mIHR5cGUgJHt0eXBlIHx8IHZhbHVlVHlwZX1gO1xuXG5jb25zdCBzY2hlbWFQbGFjaG9sZGVyID0gKHNjaGVtYTogYW55LCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgW3BhcmVudCwgLi4ua2V5c10gPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBzY2hlbWEucHJvcGVydGllcyB8fCB7fTtcbiAgY29uc3QgeyBleGFtcGxlcyB9ID0gcGFyZW50IGluIHByb3BlcnRpZXMgPyBwcm9wZXJ0aWVzW3BhcmVudF0gOiB7IGV4YW1wbGVzOiBbXSB9O1xuICByZXR1cm4gZXhhbXBsZXM/Lmxlbmd0aCAmJiB0eXBlb2YgZXhhbXBsZXNbMF0gPT09ICdvYmplY3QnID8gZ2V0KGV4YW1wbGVzWzBdLCBrZXlzLmpvaW4oJy4nKSwgbnVsbCkgOiBudWxsO1xufTtcblxuY29uc3QgcHJvcGVydHlQbGFjZWhvbGRlciA9IChzY2hlbWE6IGFueSwgdmFsdWVUeXBlOiBnZW5lcmljVHlwZSwgZnVsbEtleSA9ICcnLCBwYXJlbnRTY2hlbWE/OiBhbnkpID0+XG4gIHNjaGVtYS50eXBlID09PSAnYXJyYXknXG4gICAgPyBhcnJheVBsYWNlaG9sZGVyKHZhbHVlVHlwZSlcbiAgICA6IChwYXJlbnRTY2hlbWEgJiYgZnVsbEtleT8ubGVuZ3RoID8gc2NoZW1hUGxhY2hvbGRlcihwYXJlbnRTY2hlbWEsIGZ1bGxLZXkpIDogbnVsbCkgfHxcbiAgICAgIGRlZmF1bHRQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSk7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVZhbHVlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiAodmFsdWU6IGFueSwgc2NoZW1hOiBkZWZpbml0aW9uKSA9PiBhbnk7XG59ID0ge1xuICBvYmplY3Q6IHNhZmVKU09OU3RyaW5naWZ5LFxuICBhcnJheTogKHZhbCwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgcmV0dXJuICckcmVmJyBpbiBpdGVtc1xuICAgICAgPyB2YWxcbiAgICAgIDogQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgICA/IHZhbC5tYXAodmFsdWUgPT4gcHJvcGVydHlWYWx1ZShpdGVtcywgdmFsdWUpKS5qb2luKEFSUkFZX0RFTElNSVRFUilcbiAgICAgIDogdmFsO1xuICB9LFxuICBqc29uOiB2YWwgPT4gdmFsIHx8ICcnLFxuICBzdHJpbmc6IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRyaW0oKSxcbiAgbnVtYmVyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBpbnRlZ2VyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBib29sZWFuOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbn07XG5cbmNvbnN0IHByb3BlcnR5VmFsdWUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZTogYW55KSA9PiB7XG4gIGNvbnN0IHZhbHVlVHlwZSA9IGlzR2VvanNvbihzY2hlbWEpXG4gICAgPyAnanNvbidcbiAgICA6IHNjaGVtYS50eXBlXG4gICAgPyBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSAmJiB0eXBlb2YgdmFsdWUgaW4gcHJvcGVydHlUeXBlVmFsdWVcbiAgICAgID8gdHlwZW9mIHZhbHVlXG4gICAgICA6IChzY2hlbWEudHlwZSBhcyBzdHJpbmcpXG4gICAgOiAnb2JqZWN0JztcbiAgcmV0dXJuIHByb3BlcnR5VHlwZVZhbHVlW3ZhbHVlVHlwZSBpbiBwcm9wZXJ0eVR5cGVWYWx1ZSA/IHZhbHVlVHlwZSA6ICdzdHJpbmcnXSh2YWx1ZSwgc2NoZW1hKTtcbn07XG5cbmNvbnN0IHByb3BlcnR5VmFsdWVUeXBlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU/OiBhbnkpID0+XG4gIChpc0dlb2pzb24oc2NoZW1hKVxuICAgID8gJ2pzb24nXG4gICAgOiBzY2hlbWEudHlwZVxuICAgID8gQXJyYXkuaXNBcnJheShzY2hlbWEudHlwZSlcbiAgICAgID8gc2NoZW1hLnR5cGVbMF1cbiAgICAgIDogc2NoZW1hLnR5cGUgPT09ICdhcnJheSdcbiAgICAgID8gcHJvcGVydHlWYWx1ZVR5cGUoeyAuLi5zY2hlbWEsIHR5cGU6IFtzY2hlbWEuaXRlbXMudHlwZSBhcyBnZW5lcmljVHlwZV0gfSlcbiAgICAgIDogc2NoZW1hLnR5cGVcbiAgICA6IHR5cGVvZiB2YWx1ZSkgYXMgZ2VuZXJpY1R5cGU7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVBhcnNlVmFsdWU6IHtcbiAgW3R5cGU6IHN0cmluZ106ICh2YWx1ZTogYW55LCBzY2hlbWE6IGRlZmluaXRpb24pID0+IGFueTtcbn0gPSB7XG4gIHVuZGVmaW5lZDogKCkgPT4gdW5kZWZpbmVkLFxuICBvYmplY3Q6IHZhbCA9PiBzYWZlSlNPTlBhcnNlKHZhbCksXG4gIGFycmF5OiAodmFsLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICByZXR1cm4gJyRyZWYnIGluIGl0ZW1zXG4gICAgICA/IHZhbFxuICAgICAgOiAhdmFsIHx8IEFycmF5LmlzQXJyYXkodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogdmFsLnNwbGl0KEFSUkFZX0RFTElNSVRFUikubWFwKHZhbHVlID0+IHBhcnNlTmV3VmFsdWUoaXRlbXMsIHZhbHVlKSk7XG4gIH0sXG4gIGpzb246IHZhbCA9PiB2YWwgfHwgJycsXG4gIHN0cmluZzogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudHJpbSgpLFxuICBudW1iZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGludGVnZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGJvb2xlYW46IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHZhbHVlIHRvIHRoZSBmaW5hbCB0eXBlIGluIHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHNjaGVtYSBEZWZpbml0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnMgVmFsdWUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VOZXdWYWx1ZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlOiBhbnkpID0+XG4gIHNjaGVtYT8udHlwZVxuICAgID8gQXJyYXkuaXNBcnJheShzY2hlbWE/LnR5cGUpXG4gICAgICA/IHByb3BlcnR5VHlwZVBhcnNlVmFsdWVbdHlwZW9mIHZhbHVlXSh2YWx1ZSwgc2NoZW1hKVxuICAgICAgOiBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlW2lzR2VvanNvbihzY2hlbWEpID8gJ2pzb24nIDogKHNjaGVtYS50eXBlIGFzIHN0cmluZyldKHZhbHVlLCBzY2hlbWEpXG4gICAgOiB2YWx1ZTtcblxuY29uc3QgaXNPcGVuRGVmYXVsdCA9IChzY2hlbWFUeXBlOiBTY2hlbWFUeXBlKSA9PiBbU2NoZW1hVHlwZS5UZXJtXS5pbmNsdWRlcyhzY2hlbWFUeXBlKTtcblxuLy8gY2FuIHRoZSBwcm9wZXJ0eSBiZSBzZWVuIHdoZW4gdGhlIGdyb3VwIGlzIGNsb3NlZFxuY29uc3QgaXNLZXlDbG9zZWRWaXNpYmxlID0gKGtleTogc3RyaW5nKSA9PiBbJ3R5cGUnLCAnaWQnLCAnQHR5cGUnLCAnQGlkJ10uaW5jbHVkZXMoa2V5KTtcblxuY29uc3QgaXNLZXlIaWRkZW4gPSAoa2V5OiBzdHJpbmcpID0+IFsndHlwZScsICdAdHlwZSddLmluY2x1ZGVzKGtleSk7XG5cbmNvbnN0IGlzS2V5UmVxdWlyZWQgPSAoa2V5OiBzdHJpbmcsIGRlZj86IElEZWZpbml0aW9uT2JqZWN0KSA9PlxuICBbJ3R5cGUnLCAnaWQnXS5pbmNsdWRlcyhrZXkpIHx8IChkZWY/LnJlcXVpcmVkIHx8IFtdKS5pbmNsdWRlcyhrZXkpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlFcnJvciA9XG4gIChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT5cbiAgKGRhdGFQYXRoOiBzdHJpbmcsIG5vbkV4cGFuZGFibGVBcnJheSA9IGZhbHNlKSA9PlxuICAgIGVycm9ycy5maW5kKFxuICAgICAgZXJyb3IgPT5cbiAgICAgICAgKGVycm9yLmRhdGFQYXRoID09PSBkYXRhUGF0aCB8fFxuICAgICAgICAgIChub25FeHBhbmRhYmxlQXJyYXkgJiZcbiAgICAgICAgICAgIG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGVycm9yLmRhdGFQYXRoISkgPT09IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoKSkpICYmXG4gICAgICAgIChkYXRhUGF0aC5sZW5ndGggPiAwIHx8ICFpc01pc3NpbmdQcm9wZXJ0eUVycm9yKGVycm9yKSlcbiAgICApO1xuXG5jb25zdCBtaXNzaW5nUHJvcGVydHlFcnJvcnMgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sXG4gIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLFxuICBwYXJlbnQgPSAnJ1xuKTogSU5vZGVQcm9wZXJ0eVtdID0+IHtcbiAgY29uc3QgYWxsRXJyb3JzID0gZXJyb3JzLmZpbHRlcihlcnJvciA9PiBlcnJvci5kYXRhUGF0aCA9PT0ga2V5VG9EYXRhUGF0aChwYXJlbnQpICYmIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IoZXJyb3IpKTtcbiAgLy8gY2hlY2sgZm9yIG5vZGUgbm90IGZvdW5kIGVycm9yc1xuICBjb25zdCBtaXNzaW5nTm9kZSA9IG1pc3NpbmdOb2RlRXJyb3JzKGFsbEVycm9ycyk7XG4gIHJldHVybiBtaXNzaW5nTm9kZS5sZW5ndGggPT09IDJcbiAgICA/IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiB7IHR5cGU6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSB9LFxuICAgICAgICAgIGtleTogJycsXG4gICAgICAgICAgZnVsbEtleTogcGFyZW50LFxuICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgbGV2ZWw6ICdlcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiBtaXNzaW5nTm9kZUVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgbWlzc2luZ05vZGUuZmluZCgoeyBwYXJhbXMgfSkgPT4gcGFyYW1zPy5taXNzaW5nUHJvcGVydHkgPT09ICdAaWQnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGFzRXJyb3I6IHRydWUsXG4gICAgICAgICAgcHJvcGVydGllczogW10sXG4gICAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcignJylcbiAgICAgICAgfVxuICAgICAgXVxuICAgIDogYWxsRXJyb3JzLm1hcChlcnJvciA9PiB7XG4gICAgICAgIGNvbnN0IHsgbWlzc2luZ1Byb3BlcnR5IH0gPSBlcnJvci5wYXJhbXMhO1xuICAgICAgICBjb25zdCBmdWxsS2V5ID0gcGFyZW50ID8gYCR7cGFyZW50fS4ke21pc3NpbmdQcm9wZXJ0eX1gIDogbWlzc2luZ1Byb3BlcnR5O1xuICAgICAgICBjb25zdCBtaXNzaW5nT25lT2YgPSBpc01pc3NpbmdPbmVPZkVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAgICBzdWdnZXN0aW9uczogeyB0eXBlOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUgfSxcbiAgICAgICAgICBrZXk6IG1pc3NpbmdQcm9wZXJ0eSxcbiAgICAgICAgICBmdWxsS2V5LFxuICAgICAgICAgIHZhbHVlOiAnQWRkIGZpZWxkIHRvIGZpeCcsXG4gICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgICAgICAgaGFzRXJyb3I6IG1pc3NpbmdPbmVPZiA/IGZhbHNlIDogZXJyb3JIYXNFcnJvcihlcnJvciksXG4gICAgICAgICAgaGFzV2FybmluZzogbWlzc2luZ09uZU9mIHx8IGVycm9ySGFzV2FybmluZyhlcnJvciksXG4gICAgICAgICAgcHJvcGVydGllczogW10sXG4gICAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKG1pc3NpbmdQcm9wZXJ0eSlcbiAgICAgICAgfTtcbiAgICAgIH0pO1xufTtcblxuY29uc3QgcHJvcGVydHlGcm9tTm9kZSA9XG4gIChcbiAgICBzY2hlbWFzOiBkZWZpbml0aW9ucyxcbiAgICBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSxcbiAgICBub2RlU2NoZW1hOiBkZWZpbml0aW9uLFxuICAgIGRlZXBFZGl0YWJsZTogYm9vbGVhbixcbiAgICBwYXJlbnQgPSAnJyxcbiAgICBub2RlOiBhbnlcbiAgKSA9PlxuICAoa2V5OiBzdHJpbmcpOiBJTm9kZVByb3BlcnR5ID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IG5vZGVba2V5XTtcbiAgICBjb25zdCBleHBhbmRhYmxlID0gaXNFeHBhbmRhYmxlKHZhbHVlKTtcbiAgICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gICAgY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5ID0gaXNBcnJheSAmJiAhZXhwYW5kYWJsZTtcbiAgICBjb25zdCBmdWxsS2V5ID0gQXJyYXkuaXNBcnJheShub2RlKSA/IGAke3BhcmVudH1bJHtrZXl9XWAgOiBbcGFyZW50LCBrZXldLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgY29uc3Qgbm9kZVR5cGUgPSBub2RlLnR5cGUgfHwgbm9kZVsnQHR5cGUnXTtcbiAgICBjb25zdCBzY2hlbWFUeXBlID0gZXhwYW5kYWJsZVxuICAgICAgPyBpc0FycmF5ICYmIHZhbHVlLmxlbmd0aFxuICAgICAgICA/IHZhbHVlWzBdLnR5cGUgfHwgdmFsdWVbMF1bJ0B0eXBlJ11cbiAgICAgICAgOiB2YWx1ZS50eXBlIHx8IHZhbHVlWydAdHlwZSddXG4gICAgICA6IG5vZGVUeXBlO1xuICAgIGNvbnN0IHNjaGVtYSA9XG4gICAgICAoc2NoZW1hcyAmJiBpc1R5cGVWYWxpZCh7IHR5cGU6IHNjaGVtYVR5cGUgfSlcbiAgICAgICAgPyBleHBhbmRhYmxlXG4gICAgICAgICAgPyBzY2hlbWFzW3NjaGVtYVR5cGVdXG4gICAgICAgICAgOiBzY2hlbWFzW3NjaGVtYVR5cGVdLnByb3BlcnRpZXNba2V5XVxuICAgICAgICA6IG51bGwpIHx8IHt9O1xuICAgIGNvbnN0IGlzSXJpID0gaXNTY2hlbWFJcmkoc2NoZW1hKTtcbiAgICBjb25zdCBlcnJvciA9IHByb3BlcnR5RXJyb3IoZXJyb3JzKShrZXlUb0RhdGFQYXRoKGZ1bGxLZXkpLCBub25FeHBhbmRhYmxlQXJyYXkpO1xuICAgIGNvbnN0IHBhcmVudFNjaGVtYSA9IGV4cGFuZGFibGVcbiAgICAgID8gLy8gVE9ETzogZm9yIG5vbi1hcnJheSwgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICAgICAgaXNBcnJheVxuICAgICAgICA/IHNjaGVtYVxuICAgICAgICA6IG5vZGVTY2hlbWFcbiAgICAgIDogbm9kZVNjaGVtYTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID1cbiAgICAgIGV4cGFuZGFibGUgfHwgaXNJcmkgPyByZWN1cnNpdmVQcm9wZXJ0aWVzKHNjaGVtYXMsIGVycm9ycywgcGFyZW50U2NoZW1hLCBkZWVwRWRpdGFibGUsIGZ1bGxLZXkpKHZhbHVlKSA6IFtdO1xuICAgIGNvbnN0IGluRXJyb3IgPSBlcnJvckhhc0Vycm9yKGVycm9yKSB8fCBoYXNFcnJvcihwcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBpbldhcm5pbmcgPSBlcnJvckhhc1dhcm5pbmcoZXJyb3IpIHx8IGhhc1dhcm5pbmcocHJvcGVydGllcyk7XG4gICAgY29uc3QgZWRpdGFibGUgPVxuICAgICAgaXNUeXBlTm9kZShub2RlWydAdHlwZSddKSB8fCAoZXhwYW5kYWJsZSAmJiBpc1R5cGVOb2RlKHZhbHVlWydAdHlwZSddKSlcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6IC8vIHByZXZlbnQgZWRpdGluZy9hZGRpbmcgbmV3IHByb3BlcnRpZXMgb24gZXhpc3Rpbmcgc3ViLW5vZGVzXG4gICAgICAgICFkZWVwRWRpdGFibGUgJiZcbiAgICAgICAgICBpc1R5cGVOb2RlKHNjaGVtYVR5cGUpICYmXG4gICAgICAgICAgKGV4cGFuZGFibGUgPyB2YWx1ZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtIDogcGFyZW50ICYmIG5vZGUudHlwZSAhPT0gTm9kZVR5cGUuVGVybSlcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6IC8vIGhhbmRsZSBJUklcbiAgICAgICAgICAoIXNjaGVtYVR5cGUgJiYga2V5ID09PSAnQGlkJykgfHwgZWRpdGFibGVLZXkoa2V5KTtcbiAgICBjb25zdCB2YWx1ZVR5cGUgPSBwcm9wZXJ0eVZhbHVlVHlwZShzY2hlbWEsIHZhbHVlKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgIHNjaGVtYVR5cGU6IGlzSXJpID8gbnVsbCA6IHNjaGVtYVR5cGUsXG4gICAgICBzY2hlbWEsXG4gICAgICBrZXksXG4gICAgICBmdWxsS2V5LFxuICAgICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgICBlZGl0YWJsZTogaW5FcnJvciB8fCBlZGl0YWJsZSxcbiAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBub2RlLnR5cGUsIGZ1bGxLZXksIHNjaGVtYSksXG4gICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYSwgZnVsbEtleSksXG4gICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICBlcnJvcjogZm9ybWF0RXJyb3IoZXJyb3IpLFxuICAgICAgaXNIaWRkZW46IHBhcmVudCAmJiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICBoYXNFcnJvcjogaW5FcnJvcixcbiAgICAgIGhhc1dhcm5pbmc6IGluV2FybmluZyxcbiAgICAgIGlzUmVxdWlyZWQ6IGlzS2V5UmVxdWlyZWQoa2V5LCBzY2hlbWFzW25vZGVUeXBlXSksXG4gICAgICBpc0FycmF5LFxuICAgICAgaXNFeHBhbmRhYmxlOiBleHBhbmRhYmxlLFxuICAgICAgaXNPcGVuOiBpc09wZW5EZWZhdWx0KHNjaGVtYVR5cGUpLFxuICAgICAgcHJvcGVydGllcyxcbiAgICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eVBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlLCBmdWxsS2V5LCBwYXJlbnRTY2hlbWEpLFxuICAgICAgZXh0ZXJuYWxVcmw6IHByb3BlcnR5RXh0ZXJuYWxVcmwobm9kZSwga2V5LCB2YWx1ZSksXG4gICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gICAgfTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNpbmdsZVByb3BlcnR5ID0gKHNjaGVtYXM6IGRlZmluaXRpb25zLCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgbm9kZTogYW55LCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgW190LCAuLi5rZXlzXSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gIGNvbnN0IHBhcmVudCA9IGtleXMuam9pbignLicpO1xuICBjb25zdCBwYXJlbnROb2RlID0gcGFyZW50Lmxlbmd0aCA/IGdldChub2RlLCBwYXJlbnQpIDogbm9kZTtcbiAgY29uc3Qgc2NoZW1hVHlwZSA9IHR5cGVUb1NjaGVtYVR5cGUocGFyZW50Tm9kZS50eXBlIHx8IHBhcmVudE5vZGVbJ0B0eXBlJ10pO1xuICBjb25zdCBwYXJlbnRTY2hlbWEgPSBzY2hlbWFzW3NjaGVtYVR5cGVdO1xuICByZXR1cm4gcHJvcGVydHlGcm9tTm9kZShzY2hlbWFzLCBlcnJvcnMsIHBhcmVudFNjaGVtYSwgdHJ1ZSwgcGFyZW50LCBwYXJlbnROb2RlKShrZXkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlY3Vyc2l2ZVByb3BlcnRpZXMgPVxuICAoc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBkZWVwRWRpdGFibGU6IGJvb2xlYW4sIHBhcmVudCA9ICcnKSA9PlxuICAobm9kZTogYW55KTogSU5vZGVQcm9wZXJ0eVtdID0+XG4gICAgT2JqZWN0LmtleXMobm9kZSlcbiAgICAgIC5maWx0ZXIoa2V5ID0+ICFpZ25vcmVLZXlzLmluY2x1ZGVzKGtleSkpXG4gICAgICAubWFwKHByb3BlcnR5RnJvbU5vZGUoc2NoZW1hcywgZXJyb3JzLCBub2RlU2NoZW1hLCBkZWVwRWRpdGFibGUsIHBhcmVudCwgbm9kZSkpXG4gICAgICAuY29uY2F0KC4uLm1pc3NpbmdQcm9wZXJ0eUVycm9ycyhub2RlLCBlcnJvcnMsIHBhcmVudCkpXG4gICAgICAuc29ydChzb3J0UHJvcGVydGllcyk7XG5cbmNvbnN0IGZ1bGxLZXlQYXJ0cyA9IChmdWxsS2V5OiBzdHJpbmcpID0+XG4gIGZ1bGxLZXkuc3BsaXQoJy4nKS5mbGF0TWFwKHZhbCA9PiB7XG4gICAgaWYgKHZhbC5lbmRzV2l0aCgnXScpKSB7XG4gICAgICBjb25zdCBba2V5LCBpbmRleF0gPSB2YWwuc3BsaXQoJ1snKTtcbiAgICAgIHJldHVybiBba2V5LCBpbmRleC5yZXBsYWNlKCddJywgJycpXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9wZXJ0aWVzID0gKFxuICB7IHByb3BlcnRpZXMgfTogUGFydGlhbDxJTm9kZVByb3BlcnR5PixcbiAgdXBkYXRlcjogKHByb3A6IElOb2RlUHJvcGVydHkpID0+IElOb2RlUHJvcGVydHlcbikgPT4gKHByb3BlcnRpZXMgfHwgW10pLm1hcChwcm9wID0+IHVwZGF0ZVByb3BlcnRpZXModXBkYXRlcihwcm9wKSwgdXBkYXRlcikpO1xuXG5leHBvcnQgY29uc3QgdHlwZVRvTmV3UHJvcGVydHkgPSAoXG4gIHNjaGVtYXM6IGRlZmluaXRpb25zLFxuICBzY2hlbWE6IGRlZmluaXRpb24sXG4gIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sXG4gIG5vZGU6IGFueSxcbiAgZnVsbEtleTogc3RyaW5nXG4pOiBJTm9kZVByb3BlcnR5ID0+IHtcbiAgY29uc3Qga2V5ID0gZnVsbEtleVBhcnRzKGZ1bGxLZXkpLnBvcCgpITtcbiAgY29uc3QgbWFwcGluZ3M6IHtcbiAgICBba2V5OiBzdHJpbmddOiAoKSA9PiBJTm9kZVByb3BlcnR5O1xuICB9ID0ge1xuICAgIG9iamVjdDogKCkgPT4ge1xuICAgICAgY29uc3QgeyBzY2hlbWFUeXBlLCBwcm9wZXJ0aWVzIH0gPSBzY2hlbWFSZXF1aXJlZFByb3BlcnRpZXMoc2NoZW1hcywgc2NoZW1hIGFzIElEZWZpbml0aW9uT2JqZWN0KTtcbiAgICAgIG5vZGVba2V5XSA9IG5vZGVba2V5XSB8fCB7fTtcbiAgICAgIG5vZGVba2V5XS50eXBlID0gc2NoZW1hVHlwZTtcbiAgICAgIC8vIFRPRE86IGhhbmRsZSBub2RlU2NoZW1hIHNob3VsZCBiZSBzY2hlbWEgdW5sZXNzIGxhc3QgcmVjdXJzaW9uXG4gICAgICBjb25zdCBwcm9wcyA9IHByb3BlcnRpZXNcbiAgICAgICAgLmZpbHRlcihwcm9wID0+IG5lc3RpbmdFbmFibGVkKHNjaGVtYVR5cGUsIHByb3Aua2V5KSAmJiAhIXByb3AudmFsdWUpXG4gICAgICAgIC5tYXAodiA9PiAoe1xuICAgICAgICAgIC4uLnR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIHYudmFsdWUsIG5vZGVTY2hlbWEsIG5vZGVba2V5XSwgYCR7ZnVsbEtleX0uJHt2LmtleX1gKSxcbiAgICAgICAgICBpc1JlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0pKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoeyAuLi5wcmV2LCBbY3Vyci5rZXldOiBjdXJyLnZhbHVlIH0pLCB7fSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWE6IHNjaGVtYXNbc2NoZW1hVHlwZV0sXG4gICAgICAgIHNjaGVtYVR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBzY2hlbWFUeXBlLCBmdWxsS2V5KSxcbiAgICAgICAgcHJvcGVydGllczogcHJvcHMuc29ydChzb3J0UHJvcGVydGllcyksXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQobm9kZSwgc2NoZW1hVHlwZSwgc2NoZW1hc1tzY2hlbWFUeXBlXSwga2V5KSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzUmVxdWlyZWQ6IGlzS2V5UmVxdWlyZWQoa2V5LCBzY2hlbWEgYXMgYW55KSxcbiAgICAgICAgaXNBcnJheTogZmFsc2UsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgaXNPcGVuOiBpc09wZW5EZWZhdWx0KHNjaGVtYVR5cGUpLFxuICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gICAgICB9O1xuICAgIH0sXG4gICAgYXJyYXk6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgICAgLy8gYXJyYXkgb2Ygc3RyaW5nLCBudW1iZXIgYW5kIGJvb2xlYW5cbiAgICAgIGlmIChpdGVtcy50eXBlKSB7XG4gICAgICAgIHJldHVybiBtYXBwaW5ncy5kZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWFUeXBlID0gZGVmaW5pdGlvblRvU2NoZW1hVHlwZShpdGVtcyBhcyBJRGVmaW5pdGlvbk9iamVjdCk7XG4gICAgICBub2RlW2tleV0gPSBub2RlW2tleV0gfHwgW107XG4gICAgICBub2RlW2tleV0ucHVzaCh7fSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIGl0ZW1zLCBzY2hlbWFzW3NjaGVtYVR5cGVdLCBub2RlW2tleV1bMF0sIGAke2Z1bGxLZXl9WzBdYCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNjaGVtYVR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWU6IFtwcm9wZXJ0eS52YWx1ZV0sXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BlcnRpZXM6IFtwcm9wZXJ0eV0sXG4gICAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgICBpc0FycmF5OiB0cnVlLFxuICAgICAgICBpc0V4cGFuZGFibGU6IHRydWUsXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZW9qc29uOiAoKSA9PiB0eXBlVG9OZXdQcm9wZXJ0eShzY2hlbWFzLCB7IHR5cGU6ICdqc29uJyB9IGFzIGFueSwgbm9kZVNjaGVtYSwgbm9kZSwgZnVsbEtleSksXG4gICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVUeXBlID0gcHJvcGVydHlWYWx1ZVR5cGUoc2NoZW1hKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gc2NoZW1hLmRlZmF1bHQgfHwgKHNjaGVtYSBhcyBhbnkpLmNvbnN0IHx8IHZhbHVlVHlwZVRvRGVmYXVsdFt2YWx1ZVR5cGVdO1xuICAgICAgbm9kZVtrZXldID0gdmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZShzY2hlbWEsIHZhbHVlKSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5UGxhY2Vob2xkZXIoc2NoZW1hLCB2YWx1ZVR5cGUsIGZ1bGxLZXksIG5vZGVTY2hlbWEpLFxuICAgICAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKSxcbiAgICAgICAgcHJvcGVydGllczogW10sXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICAgIH07XG4gICAgfVxuICB9O1xuICBjb25zdCBtYXBwZWQgPSBpc0dlb2pzb24oc2NoZW1hKVxuICAgID8gbWFwcGluZ3MuZ2VvanNvblxuICAgIDogIXNjaGVtYS50eXBlXG4gICAgPyBtYXBwaW5ncy5vYmplY3RcbiAgICA6IChzY2hlbWEudHlwZSBhcyBzdHJpbmcpIGluIG1hcHBpbmdzXG4gICAgPyBtYXBwaW5nc1tzY2hlbWEudHlwZSBhcyBzdHJpbmddXG4gICAgOiBtYXBwaW5ncy5kZWZhdWx0O1xuICByZXR1cm4gbWFwcGVkKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFByb3BlcnR5ID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgZnVsbEtleTogc3RyaW5nKSA9PiB7XG4gIGZvciAoY29uc3QgcCBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgaWYgKHAuZnVsbEtleSA9PT0gZnVsbEtleSkge1xuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUCA9IGZpbmRQcm9wZXJ0eShwLnByb3BlcnRpZXMsIGZ1bGxLZXkpO1xuICAgIGlmIChjaGlsZFApIHtcbiAgICAgIHJldHVybiBjaGlsZFA7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcmVudFByb3BlcnR5ID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgYWxsS2V5cyA9IHByb3BlcnR5LmZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgWy4uLm5ldyBBcnJheShwcm9wZXJ0eS5zdWdnZXN0aW9ucz8ucGFyZW50TGV2ZWwgfHwgMCldLm1hcCgoKSA9PiBhbGxLZXlzLnBvcCgpKTtcbiAgY29uc3QgcGFyZW50S2V5cyA9IGZ1bGxLZXlQYXJ0cyhhbGxLZXlzLmpvaW4oJy4nKSk7XG4gIHBhcmVudEtleXMucG9wKCk7XG4gIGNvbnN0IHBhcmVudCA9IHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3Vycik7XG4gICAgcmV0dXJuIGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxID8gcHJvcCB8fCAoe30gYXMgSU5vZGVQcm9wZXJ0eSkgOiBwcm9wIS5wcm9wZXJ0aWVzIHx8IFtdO1xuICB9LCBwcm9wZXJ0aWVzKSBhcyBhbnkgYXMgSU5vZGVQcm9wZXJ0eTtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFyZW50KSA/IHByb3BlcnR5IDogcGFyZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IG5lc3RlZFByb3BlcnR5ID0gKHsgcHJvcGVydGllcyB9OiBJTm9kZVByb3BlcnR5LCBuZXN0ZWRLZXk6IHN0cmluZykgPT5cbiAgcHJvcGVydGllcy5maW5kKCh7IGtleSB9KSA9PiBrZXkgPT09IG5lc3RlZEtleSk7XG5cbmV4cG9ydCBjb25zdCBzaWJsaW5nUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgc2libGluZ0tleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgY29uc3QgcGFyZW50UHJvcGVydGllcyA9IHBhcmVudCA9PT0gcHJvcGVydHkgPyBwcm9wZXJ0aWVzIDogcGFyZW50LnByb3BlcnRpZXM7XG4gIHJldHVybiBwYXJlbnRQcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wLmtleSA9PT0gc2libGluZ0tleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBDaGFuZ2VkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwga2V5OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyZW50S2V5cyA9IGZ1bGxLZXlQYXJ0cyhrZXkpO1xuICAgIHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpID0+IHtcbiAgICAgIGlmIChjdXJySW5kZXggPT09IHBhcmVudEtleXMubGVuZ3RoIC0gMSAmJiB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJldi5zcGxpY2UoXG4gICAgICAgICAgcHJldi5maW5kSW5kZXgodiA9PiB2LmtleSA9PT0gY3VyciksXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IHByZXYuZmluZCh2ID0+IHYua2V5ID09PSBjdXJyKSE7XG4gICAgICAgIHByb3AuY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBwcm9wLnByb3BlcnRpZXM7XG4gICAgICB9XG4gICAgfSwgcHJvcGVydGllcyk7XG4gIH0gY2F0Y2ggKF9lcnIpIHtcbiAgICAvLyBpZ25vcmUgZXJyb3JcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9wZXJ0eUtleXMgPSAocHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+XG4gIHByb3BlcnR5LnByb3BlcnRpZXMubWFwKChwcm9wLCBpKSA9PiB7XG4gICAgcHJvcC5mdWxsS2V5ID0gYCR7cHJvcGVydHkuZnVsbEtleX0ke3Byb3BlcnR5LmlzQXJyYXkgPyBgWyR7aX1dYCA6IGAuJHtwcm9wLmtleX1gfWA7XG4gICAgcHJvcC5rZXkgPSBwcm9wZXJ0eS5pc0FycmF5ID8gYCR7aX1gIDogcHJvcC5rZXk7XG4gICAgcmV0dXJuIHJlZnJlc2hQcm9wZXJ0eUtleXMocHJvcCk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBzdGFydERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdzdGFydERhdGUnKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhc3RhcnREYXRlPy52YWx1ZSAmJiAhIWVuZERhdGU/LnZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24gPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBzdGFydERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdzdGFydERhdGUnKSE7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJykhO1xuICByZXR1cm4gZGlmZkluRGF5cyhzdGFydERhdGUudmFsdWUsIGVuZERhdGUudmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJyk7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJyk7XG4gIHJldHVybiAhIWN5Y2xlRHVyYXRpb24/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGUgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBjeWNsZUR1cmF0aW9uID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnY3ljbGVEdXJhdGlvbicpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBtb21lbnQoZW5kRGF0ZS52YWx1ZSkubG9jYWxlKCdlbi1nYicpLnN1YnRyYWN0KGN5Y2xlRHVyYXRpb24udmFsdWUsICdkYXlzJykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG59O1xuIl19
611
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBRUwsVUFBVSxFQUNWLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFHWixnQkFBZ0IsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQztBQUk5QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVySCxNQUFNLHVCQUF1QixHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQU8sRUFBRSxjQUFpQyxFQUFFLEVBQUUsQ0FDdEcsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssTUFBTTtJQUNyQixDQUFDLENBQUMsbUNBQW1DO1FBQ25DLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztZQUNoQyxDQUFDLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxnQ0FBZ0MsWUFBWSxDQUFDLG1CQUFtQixDQUFDO3lCQUM1RixZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7SUFDL0csQ0FBQyxDQUFDLFFBQVEsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7TUFDOUIsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO3dDQUNsRCxVQUFVLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7QUFFbEgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUcxQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBbUIsU0FBUyxDQUFDO0FBOEQvRCxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxXQUFXLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM3RyxNQUFNLDBCQUEwQixHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FDaEUsU0FBUyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDdkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBZ0IsRUFBRSxDQUFnQixFQUFFLEVBQUU7SUFDbkUsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDdEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0tBQ3hCO0lBQ0QsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEQ7SUFDRCxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7UUFDbEIsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUNYO0lBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7UUFDVixPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ1g7SUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUNuQixPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ1g7SUFDRCxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDbkIsT0FBTyxDQUFDLENBQUM7S0FDVjtJQUNELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDWDtJQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDWDtJQUNELE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBRXRCO0lBQ0YsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsRUFBRTtJQUN2QyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFO0lBQ3ZDLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixlQUFlLEdBQUc7SUFDN0UsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztDQUNoSCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFXLEVBQUUsUUFBdUIsRUFBRSxFQUFFO0lBQzFFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsT0FBTyxHQUFHLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQ3ZELE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUU1RixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUV0RyxNQUFNLHdCQUF3QixHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVksRUFBRSxFQUFFO0lBQzdELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUM3QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUM7U0FDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLE9BQU8sVUFBVSxDQUFDLE1BQU07UUFDdEIsQ0FBQyxDQUFDO1lBQ0U7Z0JBQ0UsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUM3QixLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtxQkFDbEIsQ0FBQyxDQUFDLENBQ0osQ0FDRjtvQkFDRCxvQkFBb0IsRUFBRSxDQUFDO2lCQUN4QjthQUNGO1NBQ0Y7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsa0VBQWtFO0FBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFjLEVBQUUsT0FBZSxFQUF1QyxFQUFFO0lBQ2hHLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDbkYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQWMsRUFBRSxPQUFlLEVBQXVDLEVBQUU7SUFDbkcsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFHLENBQUM7SUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzNHLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxJQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDeEUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUV4RSxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLEtBQUssRUFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7SUFDbkIsT0FBTyxFQUFFO1FBQ1AsR0FBRyx3QkFBd0IsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFNLENBQUM7UUFDdkUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDeEQ7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLGdCQUFnQixHQU1sQjtJQUNGLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDM0QsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUMzRCxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ3pFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDekQsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUseUJBQXlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUM3RCxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRTtRQUN6QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUcsQ0FBQztRQUN4QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMvQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUcsRUFBRSxZQUFpQyxDQUFDO1lBQ2pFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRyxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUcsQ0FBQztRQUMzQix1Q0FBdUM7UUFDdkMsT0FBTyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sS0FBSyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ3RHLENBQUMsQ0FBQztnQkFDRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3JCLFdBQVcsRUFBRSxDQUFDO2FBQ2Y7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLE1BQU0sTUFBTSxHQUFJLE1BQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUUsTUFBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsT0FBTztZQUNMLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7WUFDMUQsZ0NBQWdDO1lBQ2hDLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDMUIsTUFBTSxNQUFNLEdBQUksTUFBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBRSxNQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtZQUMxRCxnQ0FBZ0M7WUFDaEMsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM5QixnQ0FBZ0M7UUFDaEMsTUFBTSxNQUFNLEdBQUksTUFBYyxDQUFDLEtBQUs7WUFDbEMsQ0FBQyxDQUFDLENBQUUsTUFBYyxDQUFDLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBRSxNQUFjLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6RixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7WUFDNUUsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztLQUMxQixDQUFDO0NBQ0gsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsWUFBd0IsRUFDeEIsSUFBeUMsRUFDekMsT0FBZSxFQUNmLE1BQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pHLE9BQU8sQ0FDTCxVQUFVO1FBQ1YsQ0FBQyxNQUFNLElBQUssTUFBTSxDQUFDLElBQW9CLElBQUksZ0JBQWdCO1lBQ3pELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBbUIsQ0FBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDO1lBQzlFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDZixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsSUFBNEIsRUFDNUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBMEIsRUFDdkQsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE1BQU8sRUFBRSxVQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFN0csTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsSUFBNEIsRUFDNUIsVUFBc0IsRUFDdEIsTUFBa0IsRUFDbEIsT0FBTyxHQUFHLEVBQUUsRUFDWixFQUFFLENBQ0YsQ0FBQyxDQUFDLE1BQU07SUFDUixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU07SUFDeEUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRXpDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBRWxELE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBNEIsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUNoRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNYLENBQUMsQ0FBQztZQUNFLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakUsS0FBSyxFQUFFLE1BQU07U0FDZDtRQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLElBQUk7WUFDbkMsQ0FBQyxDQUFDO2dCQUNFLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQ25DLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixLQUFLLEVBQUUsb0JBQW9CO2FBQzVCO1lBQ0gsQ0FBQyxDQUFDLFNBQVM7SUFDYixDQUFDLENBQUMsU0FBUyxDQUFDO0FBRWhCLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBeUIsRUFBRSxHQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDeEUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ3RCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hHLENBQUMsQ0FBQztRQUNFLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pELEtBQUssRUFBRSxjQUFjO1FBQ3JCLElBQUksRUFBRSxLQUFLO0tBQ1o7SUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO0FBRWhCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUE0QixFQUFFLEdBQVcsRUFBRSxLQUFVLEVBQUUsRUFBRSxDQUNwRixXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXJFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxTQUFzQixFQUFFLEVBQUUsQ0FBQyxVQUFVLFNBQVMsbUJBQW1CLENBQUM7QUFFNUYsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQU8sRUFBRSxTQUFzQixFQUFFLEVBQUUsQ0FDdEYsT0FBTztJQUNMLENBQUMsQ0FBQyx5QkFBeUI7SUFDM0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNO1FBQ2xCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7QUFFN0MsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQVcsRUFBRSxPQUFlLEVBQUUsRUFBRTtJQUN4RCxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUMzQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRixPQUFPLFFBQVEsRUFBRSxNQUFNLElBQUksT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3RyxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBVyxFQUFFLFNBQXNCLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxZQUFrQixFQUFFLEVBQUUsQ0FDcEcsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPO0lBQ3JCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xGLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztBQUU1QyxNQUFNLGlCQUFpQixHQUVuQjtJQUNGLE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUEwQixDQUFDO1FBQzdDLE9BQU8sTUFBTSxJQUFJLEtBQUs7WUFDcEIsQ0FBQyxDQUFDLEdBQUc7WUFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ3BCLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ3JFLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDVixDQUFDO0lBQ0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUU7SUFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRTtJQUN0QyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7SUFDakMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDO0lBQ2xDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNO0NBQzFELENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWtCLEVBQUUsS0FBVSxFQUFFLEVBQUU7SUFDdkQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxDQUFDLENBQUMsTUFBTTtRQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUNiLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEtBQUssSUFBSSxpQkFBaUI7Z0JBQy9ELENBQUMsQ0FBQyxPQUFPLEtBQUs7Z0JBQ2QsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxJQUFlO1lBQzNCLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDYixPQUFPLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQWtCLEVBQUUsS0FBVyxFQUFFLEVBQUUsQ0FDNUQsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxNQUFNO0lBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTztnQkFDekIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFtQixDQUFDLEVBQUUsQ0FBQztnQkFDNUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ2YsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFnQixDQUFDO0FBRW5DLE1BQU0sc0JBQXNCLEdBRXhCO0lBQ0YsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7SUFDMUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUNqQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQTBCLENBQUM7UUFDN0MsT0FBTyxNQUFNLElBQUksS0FBSztZQUNwQixDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRTtJQUN0QixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFO0lBQ3RDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztJQUNqQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7SUFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU07Q0FDMUQsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWtCLEVBQUUsS0FBVSxFQUFFLEVBQUUsQ0FDOUQsTUFBTSxFQUFFLElBQUk7SUFDVixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDckQsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsSUFBZSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUMvRixDQUFDLENBQUMsS0FBSyxDQUFDO0FBRVosTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFekYsb0RBQW9EO0FBQ3BELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFckUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBdUIsRUFBRSxFQUFFLENBQzdELENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FDeEIsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FDL0IsQ0FBQyxRQUFnQixFQUFFLGtCQUFrQixHQUFHLEtBQUssRUFBRSxFQUFFLENBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQ1QsS0FBSyxDQUFDLEVBQUUsQ0FDTixDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUTtJQUMxQixDQUFDLGtCQUFrQjtRQUNqQiwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsUUFBUyxDQUFDLEtBQUssMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztBQUVOLE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsSUFBNEIsRUFDNUIsTUFBMEIsRUFDMUIsTUFBTSxHQUFHLEVBQUUsRUFDTSxFQUFFO0lBQ25CLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BILGtDQUFrQztJQUNsQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUM7WUFDRTtnQkFDRSxFQUFFLEVBQUUsVUFBVSxFQUFFO2dCQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3JCLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtnQkFDNUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLEtBQUssRUFBRSxPQUFPO29CQUNkLE9BQU8sRUFBRSx1QkFBdUIsQ0FDOUIsSUFBSSxFQUNKLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxLQUFLLEtBQUssQ0FBQyxDQUNwRTtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsRUFBRTtnQkFDZCxrQkFBa0IsRUFBRSxLQUFLO2dCQUN6QixTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUN6QjtTQUNGO1FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFPLENBQUM7WUFDMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBQzFFLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFVBQVUsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNyQixXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7Z0JBQzVDLEdBQUcsRUFBRSxlQUFlO2dCQUNwQixPQUFPO2dCQUNQLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUN6QixRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7Z0JBQ3JELFVBQVUsRUFBRSxZQUFZLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztnQkFDbEQsVUFBVSxFQUFFLEVBQUU7Z0JBQ2Qsa0JBQWtCLEVBQUUsSUFBSTtnQkFDeEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxlQUFlLENBQUM7YUFDdEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FDcEIsQ0FDRSxPQUFvQixFQUNwQixNQUEwQixFQUMxQixVQUFzQixFQUN0QixZQUFxQixFQUNyQixNQUFNLEdBQUcsRUFBRSxFQUNYLElBQVMsRUFDVCxFQUFFLENBQ0osQ0FBQyxHQUFXLEVBQWlCLEVBQUU7SUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BHLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE1BQU0sVUFBVSxHQUFHLFVBQVU7UUFDM0IsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTTtZQUN2QixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDaEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNiLE1BQU0sTUFBTSxHQUNWLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsVUFBVTtZQUNWLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDaEYsTUFBTSxZQUFZLEdBQUcsVUFBVTtRQUM3QixDQUFDLENBQUMsOERBQThEO1lBQzlELE9BQU87Z0JBQ1AsQ0FBQyxDQUFDLE1BQU07Z0JBQ1IsQ0FBQyxDQUFDLFVBQVU7UUFDZCxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2YsTUFBTSxVQUFVLEdBQ2QsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUcsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3RCxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sUUFBUSxHQUNaLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLEtBQUs7UUFDUCxDQUFDLENBQUMsOERBQThEO1lBQ2hFLENBQUMsWUFBWTtnQkFDWCxVQUFVLENBQUMsVUFBVSxDQUFDO2dCQUN0QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNyRixDQUFDLENBQUMsS0FBSztnQkFDUCxDQUFDLENBQUMsYUFBYTtvQkFDYixDQUFDLENBQUMsVUFBVSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELE9BQU87UUFDTCxFQUFFLEVBQUUsVUFBVSxFQUFFO1FBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUNyQyxNQUFNO1FBQ04sR0FBRztRQUNILE9BQU87UUFDUCxLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFDbkMsUUFBUSxFQUFFLE9BQU8sSUFBSSxRQUFRO1FBQzdCLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQ3RFLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUMzRSxXQUFXLEVBQUUsRUFBRTtRQUNmLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7UUFDOUIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDekIsUUFBUSxFQUFFLE1BQU0sSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQ3BDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7UUFDdEMsUUFBUSxFQUFFLE9BQU87UUFDakIsVUFBVSxFQUFFLFNBQVM7UUFDckIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE9BQU87UUFDUCxZQUFZLEVBQUUsVUFBVTtRQUN4QixNQUFNLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUNqQyxVQUFVO1FBQ1YsV0FBVyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQztRQUMxRSxXQUFXLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUM7UUFDbEQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7S0FDMUIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVKLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQW9CLEVBQUUsTUFBMEIsRUFBRSxJQUFTLEVBQUUsT0FBZSxFQUFFLEVBQUU7SUFDN0csTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRyxDQUFDO0lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FDOUIsQ0FBQyxPQUFvQixFQUFFLE1BQTBCLEVBQUUsVUFBc0IsRUFBRSxZQUFxQixFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUNqSCxDQUFDLElBQVMsRUFBbUIsRUFBRSxDQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN4QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM5RSxNQUFNLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU1QixNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQy9CLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNyQixNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3RDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUMsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLEVBQUUsVUFBVSxFQUEwQixFQUN0QyxPQUErQyxFQUMvQyxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsT0FBb0IsRUFDcEIsTUFBa0IsRUFDbEIsVUFBc0IsRUFDdEIsSUFBUyxFQUNULE9BQWUsRUFDQSxFQUFFO0lBQ2pCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUcsQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FFVjtRQUNGLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDWCxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxNQUEyQixDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFDNUIsaUVBQWlFO1lBQ2pFLE1BQU0sS0FBSyxHQUFHLFVBQVU7aUJBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2lCQUNwRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNULEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BGLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ04sTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RixPQUFPO2dCQUNMLEVBQUUsRUFBRSxVQUFVLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUMzQixVQUFVO2dCQUNWLEdBQUc7Z0JBQ0gsT0FBTztnQkFDUCxLQUFLO2dCQUNMLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUMxQixRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDMUIsYUFBYSxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFDdEMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO2dCQUMvRCxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ3RDLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztnQkFDcEYsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDOUIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxHQUFHLEVBQUUsTUFBYSxDQUFDO2dCQUM3QyxPQUFPLEVBQUUsS0FBSztnQkFDZCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO2FBQzFCLENBQUM7UUFDSixDQUFDO1FBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNWLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUEwQixDQUFDO1lBQzdDLHNDQUFzQztZQUN0QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2QsT0FBTyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDM0I7WUFDRCxNQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxLQUEwQixDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQixNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEtBQUssQ0FBQyxDQUFDO1lBQ3ZHLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFVBQVUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTTtnQkFDTixVQUFVO2dCQUNWLEdBQUc7Z0JBQ0gsT0FBTztnQkFDUCxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUN2QixRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDMUIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0JBQzFCLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQ3RDLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RCLFdBQVcsRUFBRSxFQUFFO2dCQUNmLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQzlCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFlBQVksRUFBRSxJQUFJO2dCQUNsQixrQkFBa0IsRUFBRSxLQUFLO2dCQUN6QixTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQzthQUMxQixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7UUFDN0YsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUssTUFBYyxDQUFDLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFVBQVUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTTtnQkFDTixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3JCLEdBQUc7Z0JBQ0gsT0FBTztnQkFDUCxLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0JBQ25DLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUMxQixRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDMUIsYUFBYSxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFDdEMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0JBQ3RFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUM7Z0JBQ3hFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQztnQkFDbEQsVUFBVSxFQUFFLEVBQUU7Z0JBQ2Qsa0JBQWtCLEVBQUUsS0FBSztnQkFDekIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7YUFDMUIsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUM5QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU87UUFDbEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7WUFDZCxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDakIsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxJQUFlLElBQUksUUFBUTtnQkFDckMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBYyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNyQixPQUFPLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFVBQTJCLEVBQUUsT0FBZSxFQUFFLEVBQUU7SUFDM0UsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDMUIsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUN6QixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQztTQUNmO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQTJCLEVBQUUsUUFBdUIsRUFBRSxFQUFFO0lBQ3JGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQU8sRUFBRTtRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLFNBQVMsS0FBSyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFLLEVBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO0lBQ3RHLENBQUMsRUFBRSxVQUFVLENBQXlCLENBQUM7SUFDdkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBaUIsRUFBRSxTQUFpQixFQUFFLEVBQUUsQ0FDakYsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUEyQixFQUFFLFFBQXVCLEVBQUUsVUFBa0IsRUFBRSxFQUFFO0lBQzFHLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDOUUsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFVBQTJCLEVBQUUsR0FBVyxFQUFFLEtBQVcsRUFBRSxFQUFFO0lBQ3BGLElBQUk7UUFDRixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxTQUFTLEtBQUssVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDekQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsRUFDbkMsQ0FBQyxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN4QjtRQUNILENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUNoQjtJQUFDLE9BQU8sSUFBSSxFQUFFO1FBQ2IsZUFBZTtLQUNoQjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBdUIsRUFBRSxFQUFFLENBQzdELFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDcEYsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2hELE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLFVBQTJCLEVBQUUsUUFBdUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxVQUEyQixFQUFFLFFBQXVCLEVBQUUsRUFBRTtJQUM3RixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUUsQ0FBQztJQUN0RSxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUUsQ0FBQztJQUNsRSxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLFVBQTJCLEVBQUUsUUFBdUIsRUFBRSxFQUFFO0lBQ3JHLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxVQUEyQixFQUFFLFFBQXVCLEVBQUUsRUFBRTtJQUM5RixNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUUsQ0FBQztJQUM5RSxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUUsQ0FBQztJQUNsRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMxRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2VuLWdiJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZGlmZkluRGF5cywgaXNOdW1iZXIgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7XG4gIEpTT04gYXMgSGVzdGlhSnNvbixcbiAgU2NoZW1hVHlwZSxcbiAgTm9kZVR5cGUsXG4gIGlzVHlwZU5vZGUsXG4gIGlzVHlwZVZhbGlkLFxuICBpc0V4cGFuZGFibGUsXG4gIFNpdGUsXG4gIE9yZ2FuaXNhdGlvbixcbiAgdHlwZVRvU2NoZW1hVHlwZVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBkZWZpbml0aW9ucywgZGVmaW5pdGlvbiwgSURlZmluaXRpb25PYmplY3QsIElEZWZpbml0aW9uQXJyYXksIGdlbmVyaWNUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5cbmltcG9ydCB7IElWYWxpZGF0aW9uRXJyb3IsIHZhbGlkYXRpb25FcnJvckxldmVsIH0gZnJvbSAnLi4vc2NoZW1hL3NjaGVtYS12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7XG4gIGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZSxcbiAgZm9ybWF0RXJyb3IsXG4gIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IsXG4gIGVycm9ySGFzRXJyb3IsXG4gIGVycm9ySGFzV2FybmluZyxcbiAgbWlzc2luZ05vZGVFcnJvcnMsXG4gIGlzTWlzc2luZ09uZU9mRXJyb3IsXG4gIGlzTWlncmF0aW9uRXJyb3IsXG4gIG1pZ3JhdGlvbkVycm9yTWVzc2FnZVxufSBmcm9tICcuL2ZpbGVzLWVycm9yLm1vZGVsJztcbmltcG9ydCB7XG4gIHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcyxcbiAgdmFsdWVUeXBlVG9EZWZhdWx0LFxuICBkZWZpbml0aW9uVG9TY2hlbWFUeXBlLFxuICBhdmFpbGFibGVQcm9wZXJ0aWVzLFxuICBuZXN0aW5nVHlwZUVuYWJsZWQsXG4gIG5lc3RpbmdFbmFibGVkLFxuICBsaW5rVHlwZUVuYWJsZWQsXG4gIGlzU2NoZW1hSXJpXG59IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEuc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaENvdW50cnkgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IGJhc2VVcmwsIGNvZGUsIGdsb3NzYXJ5TGluaywgbWFwc1VybCwgc2FmZUpTT05QYXJzZSwgc2FmZUpTT05TdHJpbmdpZnksIHNjaGVtYUxpbmsgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBtaXNzaW5nTm9kZUVycm9yTWVzc2FnZSA9ICh7ICdAdHlwZSc6IF90LCB0eXBlLCBuYW1lIH06IGFueSwgbWlzc2luZ0lkRXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yKSA9PlxuICAoX3QgfHwgdHlwZSkgPT09ICdUZXJtJ1xuICAgID8gLy8gbWlncmF0ZWQgZnJvbSBhIHZhbHVlIHRvIGFub3RoZXJcbiAgICAgIGlzTWlncmF0aW9uRXJyb3IobWlzc2luZ0lkRXJyb3IpXG4gICAgICA/IG1pZ3JhdGlvbkVycm9yTWVzc2FnZShtaXNzaW5nSWRFcnJvcilcbiAgICAgIDogYCR7bmFtZSA/IGBUaGUgdGVybSBcIiR7bmFtZX1cImAgOiAnVGhpcyB0ZXJtJ30gZG9lc24ndCBtYXRjaCBhIHRlcm0gaW4gdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeSBvZiBUZXJtcycpfS5cbiAgICAgIFBsZWFzZSBjaGVjayB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5Jyl9IGZvciB0aGUgY29ycmVjdCAke2NvZGUoJ0BpZCcpfSBvciAke2NvZGUoJ25hbWUnKX0gYW5kIHNwZWxsaW5nLmBcbiAgICA6IGBUaGlzICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0gZG9lcyBub3QgZXhpc3QgaW4gSGVzdGlhLiBJZiB5b3UgYXJlIHRyeWluZyB0byBsaW5rIHRvIGFuIGV4aXN0aW5nXG4gICAgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSBpbiBIZXN0aWEsIHBsZWFzZSBjaGVjayB0aGUgJHtjb2RlKCduYW1lJyl9IG9yICR7Y29kZSgnQGlkJyl9IGlzIGNvcnJlY3QuXG4gICAgSWYgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGEgbmV3ICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0sIHBsZWFzZSBpZGVudGlmeSBpdCB3aXRoIGFuICR7Y29kZSgnaWQnKX0gZmllbGQuYDtcblxuZXhwb3J0IGNvbnN0IEFSUkFZX0RFTElNSVRFUiA9ICc7JztcbmNvbnN0IGlnbm9yZUtleXMgPSBbJ2ZpbGVwYXRoJywgJ19jYWNoZSddO1xuXG5leHBvcnQgdHlwZSBzdWdnZXN0aW9uVHlwZSA9IE5vZGVUeXBlIHwgJ3NlbGVjdCcgfCAnZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgZGVmYXVsdFN1Z2dlc3Rpb25UeXBlOiBzdWdnZXN0aW9uVHlwZSA9ICdkZWZhdWx0JztcblxuaW50ZXJmYWNlIElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHtcbiAgdHlwZT86IHN1Z2dlc3Rpb25UeXBlO1xuICBxdWVyaWVzPzogYW55W107XG4gIHZhbHVlcz86IHN0cmluZ1tdO1xuICBwYXJlbnRMZXZlbD86IG51bWJlcjtcbiAgaXNMaW5rTm9kZT86IGJvb2xlYW47XG4gIGlzVW5pcXVlS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOZXdQcm9wZXJ0eSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByb3A/OiBkZWZpbml0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFcnJvclByb3BlcnR5IHtcbiAgbGV2ZWw/OiB2YWxpZGF0aW9uRXJyb3JMZXZlbDtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgcHJvcGVydHkgd2FzIGFkZGVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICBpc0FkZGVkPzogYm9vbGVhbjtcbiAgc2NoZW1hVHlwZTogU2NoZW1hVHlwZTtcbiAga2V5OiBzdHJpbmc7XG4gIGZ1bGxLZXk6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgYWRkUHJvcGVydHlFbmFibGVkOiBib29sZWFuO1xuICBzdWdnZXN0aW9ucz86IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uO1xuICBzY2hlbWE/OiBkZWZpbml0aW9uO1xuICBlcnJvcj86IElWYWxpZGF0aW9uRXJyb3I7XG4gIGhhc0Vycm9yPzogYm9vbGVhbjtcbiAgaGFzV2FybmluZz86IGJvb2xlYW47XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgY2xvc2VkVmlzaWJsZT86IGJvb2xlYW47XG4gIG5ld1Byb3BlcnR5PzogSU5ld1Byb3BlcnR5O1xuICBuZXdFcnJvcj86IElFcnJvclByb3BlcnR5O1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xuICBpc0FycmF5PzogYm9vbGVhbjtcbiAgaXNFeHBhbmRhYmxlPzogYm9vbGVhbjtcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgcHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZXh0ZXJuYWxVcmw/OiB7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZGVmYXVsdCBpcyBleHRlcm5hbC1saW5rLWFsdFxuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdXJsUGFyYW1WYWx1ZT86IGJvb2xlYW47XG4gIH07XG4gIC8vIG1ha2luZyBjaGFuZ2VzIG9uIHRoZSBwcm9wZXJ0eVxuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgLy8gdXNlciBtYWRlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIHZhbHVlXG4gIGNoYW5nZWQ/OiBib29sZWFuO1xuICBmb3JtYXR0ZXI6ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IHN0cmluZ1ZhbHVlID0gKHZhbHVlOiBhbnkpID0+ICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSkudG9TdHJpbmcoKTtcbmNvbnN0IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoID0gKGtleTogc3RyaW5nKSA9PiBrZXkucmVwbGFjZSgvXFxbXFxkK1xcXSQvLCAnJyk7XG5leHBvcnQgY29uc3Qga2V5VG9EYXRhUGF0aCA9IChrZXk6IHN0cmluZykgPT4gKGtleT8ubGVuZ3RoID8gYC4ke2tleX1gIDogJycpO1xuZXhwb3J0IGNvbnN0IGRhdGFQYXRoVG9LZXkgPSAoZGF0YVBhdGggPSAnJywgdHJpbUFycmF5ID0gZmFsc2UpID0+XG4gIHRyaW1BcnJheSA/IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoLnN1YnN0cmluZygxKSkgOiBkYXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5leHBvcnQgY29uc3QgcGFyZW50S2V5ID0gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGtleXMgPSAoa2V5LnN0YXJ0c1dpdGgoJy4nKSA/IGtleS5zdWJzdHJpbmcoMSkgOiBrZXkpLnNwbGl0KCcuJyk7XG4gIGtleXMucG9wKCk7XG4gIHJldHVybiBrZXlzLmpvaW4oJy4nKTtcbn07XG5cbi8qKlxuICogU29ydCBwcm9wZXJ0aWVzIGhhdmluZyBlcnJvcnMsIHR5cGUsIGlkLCAuLi5wcm9wZXJ0aWVzIChzaW1wbGUpLCBhbmQgZmluYWxseSB0aGUgZ3JvdXBzXG4gKlxuICogQHBhcmFtIGEge0lOb2RlUHJvcGVydHl9XG4gKiBAcGFyYW0gYiB7SU5vZGVQcm9wZXJ0eX1cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRQcm9wZXJ0aWVzID0gKGE6IElOb2RlUHJvcGVydHksIGI6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgaWYgKGlzTnVtYmVyKGEua2V5KSAmJiBpc051bWJlcihiLmtleSkpIHtcbiAgICByZXR1cm4gK2Eua2V5IC0gK2Iua2V5O1xuICB9XG4gIGlmIChhLmlzRXhwYW5kYWJsZSkge1xuICAgIHJldHVybiBiLmlzRXhwYW5kYWJsZSA/IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpIDogMTtcbiAgfVxuICBpZiAoYi5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhLmtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBjb25zdCBhS2V5ID0gYS5rZXkucmVwbGFjZSgnQCcsICcnKTtcbiAgY29uc3QgYktleSA9IGIua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGlmIChhS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGJLZXkgPT09ICd0eXBlJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChhS2V5ID09PSAnaWQnICYmIGJLZXkgIT09ICd0eXBlJykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoYS5oYXNFcnJvciB8fCBhLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpO1xufTtcblxuY29uc3QgZGVmYXVsdFByb3BlcnR5RXJyb3I6IHtcbiAgW2tleTogc3RyaW5nXTogKGVycm9yOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59ID0ge1xuICBtYXg6ICh7IG1heCB9KSA9PiBgc2hvdWxkIGJlIDw9ICR7bWF4fWAsXG4gIG1pbjogKHsgbWluIH0pID0+IGBzaG91bGQgYmUgPj0gJHttaW59YCxcbiAgcGF0dGVybjogKHsgcmVxdWlyZWRQYXR0ZXJuIH0pID0+IGBzaG91bGQgbWF0Y2ggcGF0dGVybiBcIiR7cmVxdWlyZWRQYXR0ZXJufVwiYCxcbiAgcmVxdWlyZWQ6IChfZSwgeyBzY2hlbWFUeXBlIH0pID0+IChzY2hlbWFUeXBlID8gYHNob3VsZCBiZSBzZXQgb3IgbGlua2VkIHRvIGFub3RoZXIgJHtzY2hlbWFUeXBlfWAgOiB1bmRlZmluZWQpXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0UHJvcGVydHlFcnJvciA9IChlcnJvcnM6IGFueSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZXJyb3JzKVswXTtcbiAgcmV0dXJuIGtleSBpbiBkZWZhdWx0UHJvcGVydHlFcnJvciA/IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShkZWZhdWx0UHJvcGVydHlFcnJvcltrZXldKGVycm9yc1trZXldLCBwcm9wZXJ0eSkpIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0dGVyID0gKGtleTogc3RyaW5nKSA9PiAodmFsdWU6IGFueSkgPT5cbiAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlLmJpYmxpb2dyYXBoeT8udGl0bGUgfHwgdmFsdWVba2V5XSB8fCB2YWx1ZS5uYW1lIDogdmFsdWU7XG5cbmV4cG9ydCBjb25zdCBoYXNFcnJvciA9IHZhbHVlID0+IChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNvbWUoaGFzRXJyb3IpIDogdmFsdWUuaGFzRXJyb3IpO1xuXG5leHBvcnQgY29uc3QgaGFzV2FybmluZyA9IHZhbHVlID0+IChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNvbWUoaGFzV2FybmluZykgOiB2YWx1ZS5oYXNXYXJuaW5nKTtcblxuY29uc3QgY29tcGlsZVN1Z2dlc3Rpb25RdWVyaWVzID0gKGtleTogc3RyaW5nLCBhbGxPZjogYW55W10pID0+IHtcbiAgY29uc3QgY29uZGl0aW9ucyA9IChhbGxPZiB8fCBbXSlcbiAgICAuZmlsdGVyKHYgPT4gKHYuaWY/LnJlcXVpcmVkIHx8IFtdKS5pbmNsdWRlcyhrZXkpKVxuICAgIC5tYXAodiA9PiB2LnRoZW4/LnByb3BlcnRpZXM/LltrZXldKVxuICAgIC5tYXAodiA9PiB2Py5pdGVtcz8ucHJvcGVydGllcyB8fCB2Py5wcm9wZXJ0aWVzKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBjb25kaXRpb25zLmxlbmd0aFxuICAgID8gW1xuICAgICAgICB7XG4gICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgc2hvdWxkOiBjb25kaXRpb25zLmZsYXRNYXAoY29uZCA9PlxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb25kKS5mbGF0TWFwKGsgPT5cbiAgICAgICAgICAgICAgICAoY29uZFtrXS5lbnVtIHx8IFtdKS5tYXAodiA9PiAoe1xuICAgICAgICAgICAgICAgICAgbWF0Y2g6IHsgW2tdOiB2IH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgOiBbXTtcbn07XG5cbi8vIGRlZmF1bHQgc3VnZ2VzdCBmb3IgbGlua2luZyBub2RlcyB0b2dldGhlciB1c2luZyB0aGUgYGlkYCBmaWVsZFxuY29uc3Qgc3VnZ2VzdExpbmtOb2RlcyA9ICh0eXBlOiBOb2RlVHlwZSwgZnVsbEtleTogc3RyaW5nKTogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5ID09PSAnaWQnICYmIGtleXMubGVuZ3RoID49IDEgPyB7IHR5cGUsIGlzTGlua05vZGU6IHRydWUgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHN1Z2dlc3RFeGlzdGluZ05vZGUgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA+PSAxICYmIFsnQGlkJywgJ29wZW5MQ0FJZCddLmluY2x1ZGVzKGtleSkgPyB7IHR5cGUsIGlzVW5pcXVlS2V5OiAnQGlkJyB9IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbiA9ICh0eXBlOiBOb2RlVHlwZSkgPT4gKGZ1bGxLZXk6IHN0cmluZykgPT5cbiAgc3VnZ2VzdExpbmtOb2Rlcyh0eXBlLCBmdWxsS2V5KSB8fCBzdWdnZXN0RXhpc3RpbmdOb2RlKHR5cGUsIGZ1bGxLZXkpO1xuXG5jb25zdCB0ZXJtU3VnZ2VzdGlvbnMgPSAocGFyZW50OiBzdHJpbmcsIHsgYWxsT2YgfTogSURlZmluaXRpb25PYmplY3QpID0+ICh7XG4gIHR5cGU6IE5vZGVUeXBlLlRlcm0sXG4gIHF1ZXJpZXM6IFtcbiAgICAuLi5jb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMobm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgocGFyZW50KSwgYWxsT2YhKSxcbiAgICAuLi4oWydjb3VudHJ5J10uaW5jbHVkZXMocGFyZW50KSA/IFttYXRjaENvdW50cnldIDogW10pXG4gIF1cbn0pO1xuXG5jb25zdCB0eXBlVG9TdWdnZXN0aW9uOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGUgfCBOb2RlVHlwZSB8IGdlbmVyaWNUeXBlIHwgJ2ludGVnZXInXT86IChcbiAgICBmdWxsS2V5OiBzdHJpbmcsXG4gICAgcGFyZW50U2NoZW1hPzogZGVmaW5pdGlvbixcbiAgICBzY2hlbWE/OiBkZWZpbml0aW9uXG4gICkgPT4gSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24gfCBhbnk7XG59ID0ge1xuICBbTm9kZVR5cGUuQWN0b3JdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLkFjdG9yKSxcbiAgW05vZGVUeXBlLkN5Y2xlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5DeWNsZSksXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50KSxcbiAgW05vZGVUeXBlLk9yZ2FuaXNhdGlvbl06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuT3JnYW5pc2F0aW9uKSxcbiAgW05vZGVUeXBlLlNpdGVdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlNpdGUpLFxuICBbTm9kZVR5cGUuU291cmNlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5Tb3VyY2UpLFxuICBbTm9kZVR5cGUuVGVybV06IChmdWxsS2V5LCBwYXJlbnRTY2hlbWEpID0+IHtcbiAgICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICAgIHJldHVybiBbJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGtleXMubGVuZ3RoID49IDFcbiAgICAgID8gdGVybVN1Z2dlc3Rpb25zKGtleXMucG9wKCkhLCBwYXJlbnRTY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpXG4gICAgICA6IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuVGVybSkoZnVsbEtleSk7XG4gIH0sXG4gIFtTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeV06IGZ1bGxLZXkgPT4ge1xuICAgIGNvbnN0IGtleXMgPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gICAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5wb3AoKSE7XG4gICAgLy8gcHJldmVudCByZXBsYWNpbmcgYSB0b3AtbGV2ZWwgc291cmNlXG4gICAgcmV0dXJuIFsndGl0bGUnLCAnZG9jdW1lbnRET0knLCAnc2NvcHVzJ10uaW5jbHVkZXMoa2V5KSAmJiBwYXJlbnQgPT09ICdiaWJsaW9ncmFwaHknICYmIGtleXMubGVuZ3RoID49IDFcbiAgICAgID8ge1xuICAgICAgICAgIHR5cGU6IE5vZGVUeXBlLlNvdXJjZSxcbiAgICAgICAgICBwYXJlbnRMZXZlbDogMVxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgbnVtYmVyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIGludGVnZXI6IChfYSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/IFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDogW107XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgc3RyaW5nOiAoZnVsbEtleSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0XG4gICAgICA/IFsoc2NoZW1hIGFzIGFueSkuY29uc3RdXG4gICAgICA6ICgoc2NoZW1hIGFzIGFueSkuZW51bSB8fCBbXSkuZmlsdGVyKHZhbCA9PiAhT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5pbmNsdWRlcyh2YWwpKTtcbiAgICBjb25zdCBrZXkgPSBmdWxsS2V5LnNwbGl0KCcuJykucG9wKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwICYmIGtleSAhPT0gJ3R5cGUnID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBib29sZWFuOiBfYSA9PiAoe1xuICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgIHZhbHVlczogWyd0cnVlJywgJ2ZhbHNlJ11cbiAgfSlcbn07XG5cbmNvbnN0IGVuYWJsZVN1Z2dlc3Rpb25zID0gKFxuICBwYXJlbnRTY2hlbWE6IGRlZmluaXRpb24sXG4gIHR5cGU6IFNjaGVtYVR5cGUgfCBOb2RlVHlwZSB8IGdlbmVyaWNUeXBlLFxuICBmdWxsS2V5OiBzdHJpbmcsXG4gIHNjaGVtYT86IGRlZmluaXRpb25cbikgPT4ge1xuICBjb25zdCBzdWdnZXN0aW9uID0gdHlwZSBpbiB0eXBlVG9TdWdnZXN0aW9uID8gdHlwZVRvU3VnZ2VzdGlvblt0eXBlXSEoZnVsbEtleSwgcGFyZW50U2NoZW1hKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIChcbiAgICBzdWdnZXN0aW9uIHx8XG4gICAgKHNjaGVtYSAmJiAoc2NoZW1hLnR5cGUgYXMgZ2VuZXJpY1R5cGUpIGluIHR5cGVUb1N1Z2dlc3Rpb25cbiAgICAgID8gdHlwZVRvU3VnZ2VzdGlvbltzY2hlbWEudHlwZSBhcyBnZW5lcmljVHlwZV0hKGZ1bGxLZXksIHBhcmVudFNjaGVtYSwgc2NoZW1hKVxuICAgICAgOiB1bmRlZmluZWQpXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9kZUF2YWlsYWJsZVByb3BlcnRpZXMgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sXG4gIHsgZnVsbEtleSwgc2NoZW1hLCBzY2hlbWFUeXBlIH06IFBhcnRpYWw8SU5vZGVQcm9wZXJ0eT5cbikgPT4gYXZhaWxhYmxlUHJvcGVydGllcyhzY2hlbWEhLCBzY2hlbWFUeXBlISwgZnVsbEtleSA/IGdldChub2RlLCBmdWxsS2V5LCB7fSkgOiBub2RlLCBmdWxsS2V5IS5sZW5ndGggPiAwKTtcblxuZXhwb3J0IGNvbnN0IGlzQWRkUHJvcGVydHlFbmFibGVkID0gKFxuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LFxuICBzY2hlbWFUeXBlOiBTY2hlbWFUeXBlLFxuICBzY2hlbWE6IGRlZmluaXRpb24sXG4gIGZ1bGxLZXkgPSAnJ1xuKSA9PlxuICAhIXNjaGVtYSAmJlxuICAhIU9iamVjdC5rZXlzKG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzKG5vZGUsIHsgZnVsbEtleSwgc2NoZW1hIH0pKS5sZW5ndGggJiZcbiAgKCFmdWxsS2V5IHx8IG5lc3RpbmdUeXBlRW5hYmxlZChzY2hlbWFUeXBlKSk7XG5cbmNvbnN0IGVkaXRhYmxlS2V5ID0gKGtleTogc3RyaW5nKSA9PiAhWyd0eXBlJywgJ0B0eXBlJywgJ3Rlcm1UeXBlJ10uaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnR5SWQgPSAoKSA9PiB1dWlkdjQoKTtcblxuY29uc3QgaXNHZW9qc29uID0gKHNjaGVtYTogYW55KSA9PiBzY2hlbWEuZ2VvanNvbjtcblxuY29uc3QgcHJvcGVydHlVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcpID0+XG4gIFsnQGlkJywgJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGxpbmtUeXBlRW5hYmxlZChub2RlWydAdHlwZSddKVxuICAgID8gbm9kZVsnQGlkJ11cbiAgICAgID8ge1xuICAgICAgICAgIHVybDogYCR7YmFzZVVybCgpfS8ke25vZGVbJ0B0eXBlJ10udG9Mb3dlckNhc2UoKX0vJHtub2RlWydAaWQnXX1gLFxuICAgICAgICAgIHRpdGxlOiAnT3BlbidcbiAgICAgICAgfVxuICAgICAgOiBub2RlWydAdHlwZSddID09PSBTY2hlbWFUeXBlLlRlcm1cbiAgICAgID8ge1xuICAgICAgICAgIHVybDogYCR7YmFzZVVybCgpfS9nbG9zc2FyeT9xdWVyeT1gLFxuICAgICAgICAgIHVybFBhcmFtVmFsdWU6IHRydWUsXG4gICAgICAgICAgdGl0bGU6ICdTZWFyY2ggaW4gR2xvc3NhcnknXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkXG4gICAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5TWFwc1VybCA9IChub2RlOiBTaXRlIHwgT3JnYW5pc2F0aW9uLCBrZXk6IHN0cmluZywgdmFsdWUpID0+XG4gIFsndHlwZSddLmluY2x1ZGVzKGtleSkgJiZcbiAgW1NjaGVtYVR5cGUuU2l0ZS50b1N0cmluZygpLCBTY2hlbWFUeXBlLk9yZ2FuaXNhdGlvbi50b1N0cmluZygpXS5pbmNsdWRlcyhzdHJpbmdWYWx1ZSh2YWx1ZSkgfHwgbm9kZS50eXBlKVxuICAgID8ge1xuICAgICAgICB1cmw6IG1hcHNVcmwoeyBsYXQ6IG5vZGUubGF0aXR1ZGUsIGxuZzogbm9kZS5sb25naXR1ZGUgfSksXG4gICAgICAgIHRpdGxlOiAnVmlldyBvbiBtYXBzJyxcbiAgICAgICAgaWNvbjogJ21hcCdcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3QgcHJvcGVydHlFeHRlcm5hbFVybCA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT5cbiAgcHJvcGVydHlVcmwobm9kZSwga2V5KSB8fCBwcm9wZXJ0eU1hcHNVcmwobm9kZSBhcyBhbnksIGtleSwgdmFsdWUpO1xuXG5jb25zdCBhcnJheVBsYWNlaG9sZGVyID0gKHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUpID0+IGBUeXBlIGEgJHt2YWx1ZVR5cGV9IHRoZW4gcHJlc3MgRW50ZXJgO1xuXG5jb25zdCBkZWZhdWx0UGxhY2Vob2xkZXIgPSAoeyB0eXBlLCBleGFtcGxlcywgZ2VvanNvbiB9OiBhbnksIHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUpID0+XG4gIGdlb2pzb25cbiAgICA/ICdNdXN0IGJlIGEgdmFsaWQgR2VvSlNPTidcbiAgICA6IGV4YW1wbGVzPy5sZW5ndGhcbiAgICA/IEFycmF5LmlzQXJyYXkoZXhhbXBsZXNbMF0pXG4gICAgICA/IGFycmF5UGxhY2Vob2xkZXIodmFsdWVUeXBlKVxuICAgICAgOiBleGFtcGxlc1swXVxuICAgIDogYE11c3QgYmUgb2YgdHlwZSAke3R5cGUgfHwgdmFsdWVUeXBlfWA7XG5cbmNvbnN0IHNjaGVtYVBsYWNob2xkZXIgPSAoc2NoZW1hOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbcGFyZW50LCAuLi5rZXlzXSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9O1xuICBjb25zdCB7IGV4YW1wbGVzIH0gPSBwYXJlbnQgaW4gcHJvcGVydGllcyA/IHByb3BlcnRpZXNbcGFyZW50XSA6IHsgZXhhbXBsZXM6IFtdIH07XG4gIHJldHVybiBleGFtcGxlcz8ubGVuZ3RoICYmIHR5cGVvZiBleGFtcGxlc1swXSA9PT0gJ29iamVjdCcgPyBnZXQoZXhhbXBsZXNbMF0sIGtleXMuam9pbignLicpLCBudWxsKSA6IG51bGw7XG59O1xuXG5jb25zdCBwcm9wZXJ0eVBsYWNlaG9sZGVyID0gKHNjaGVtYTogYW55LCB2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlLCBmdWxsS2V5ID0gJycsIHBhcmVudFNjaGVtYT86IGFueSkgPT5cbiAgc2NoZW1hLnR5cGUgPT09ICdhcnJheSdcbiAgICA/IGFycmF5UGxhY2Vob2xkZXIodmFsdWVUeXBlKVxuICAgIDogKHBhcmVudFNjaGVtYSAmJiBmdWxsS2V5Py5sZW5ndGggPyBzY2hlbWFQbGFjaG9sZGVyKHBhcmVudFNjaGVtYSwgZnVsbEtleSkgOiBudWxsKSB8fFxuICAgICAgZGVmYXVsdFBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlKTtcblxuY29uc3QgcHJvcGVydHlUeXBlVmFsdWU6IHtcbiAgW3R5cGU6IHN0cmluZ106ICh2YWx1ZTogYW55LCBzY2hlbWE6IGRlZmluaXRpb24pID0+IGFueTtcbn0gPSB7XG4gIG9iamVjdDogc2FmZUpTT05TdHJpbmdpZnksXG4gIGFycmF5OiAodmFsLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICByZXR1cm4gJyRyZWYnIGluIGl0ZW1zXG4gICAgICA/IHZhbFxuICAgICAgOiBBcnJheS5pc0FycmF5KHZhbClcbiAgICAgID8gdmFsLm1hcCh2YWx1ZSA9PiBwcm9wZXJ0eVZhbHVlKGl0ZW1zLCB2YWx1ZSkpLmpvaW4oQVJSQVlfREVMSU1JVEVSKVxuICAgICAgOiB2YWw7XG4gIH0sXG4gIGpzb246IHZhbCA9PiB2YWwgfHwgJycsXG4gIHN0cmluZzogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudHJpbSgpLFxuICBudW1iZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGludGVnZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGJvb2xlYW46IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xufTtcblxuY29uc3QgcHJvcGVydHlWYWx1ZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlOiBhbnkpID0+IHtcbiAgY29uc3QgdmFsdWVUeXBlID0gaXNHZW9qc29uKHNjaGVtYSlcbiAgICA/ICdqc29uJ1xuICAgIDogc2NoZW1hLnR5cGVcbiAgICA/IEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpICYmIHR5cGVvZiB2YWx1ZSBpbiBwcm9wZXJ0eVR5cGVWYWx1ZVxuICAgICAgPyB0eXBlb2YgdmFsdWVcbiAgICAgIDogKHNjaGVtYS50eXBlIGFzIHN0cmluZylcbiAgICA6ICdvYmplY3QnO1xuICByZXR1cm4gcHJvcGVydHlUeXBlVmFsdWVbdmFsdWVUeXBlIGluIHByb3BlcnR5VHlwZVZhbHVlID8gdmFsdWVUeXBlIDogJ3N0cmluZyddKHZhbHVlLCBzY2hlbWEpO1xufTtcblxuY29uc3QgcHJvcGVydHlWYWx1ZVR5cGUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZT86IGFueSkgPT5cbiAgKGlzR2VvanNvbihzY2hlbWEpXG4gICAgPyAnanNvbidcbiAgICA6IHNjaGVtYS50eXBlXG4gICAgPyBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKVxuICAgICAgPyBzY2hlbWEudHlwZVswXVxuICAgICAgOiBzY2hlbWEudHlwZSA9PT0gJ2FycmF5J1xuICAgICAgPyBwcm9wZXJ0eVZhbHVlVHlwZSh7IC4uLnNjaGVtYSwgdHlwZTogW3NjaGVtYS5pdGVtcy50eXBlIGFzIGdlbmVyaWNUeXBlXSB9KVxuICAgICAgOiBzY2hlbWEudHlwZVxuICAgIDogdHlwZW9mIHZhbHVlKSBhcyBnZW5lcmljVHlwZTtcblxuY29uc3QgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZToge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlOiBhbnksIHNjaGVtYTogZGVmaW5pdGlvbikgPT4gYW55O1xufSA9IHtcbiAgdW5kZWZpbmVkOiAoKSA9PiB1bmRlZmluZWQsXG4gIG9iamVjdDogdmFsID0+IHNhZmVKU09OUGFyc2UodmFsKSxcbiAgYXJyYXk6ICh2YWwsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgIHJldHVybiAnJHJlZicgaW4gaXRlbXNcbiAgICAgID8gdmFsXG4gICAgICA6ICF2YWwgfHwgQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB2YWwuc3BsaXQoQVJSQVlfREVMSU1JVEVSKS5tYXAodmFsdWUgPT4gcGFyc2VOZXdWYWx1ZShpdGVtcywgdmFsdWUpKTtcbiAgfSxcbiAganNvbjogdmFsID0+IHZhbCB8fCAnJyxcbiAgc3RyaW5nOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50cmltKCksXG4gIG51bWJlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgaW50ZWdlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgYm9vbGVhbjogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnXG59O1xuXG4vKipcbiAqIENvbnZlcnQgdmFsdWUgdG8gdGhlIGZpbmFsIHR5cGUgaW4gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIERlZmluaXRpb24gb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcmV0dXJucyBWYWx1ZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZU5ld1ZhbHVlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU6IGFueSkgPT5cbiAgc2NoZW1hPy50eXBlXG4gICAgPyBBcnJheS5pc0FycmF5KHNjaGVtYT8udHlwZSlcbiAgICAgID8gcHJvcGVydHlUeXBlUGFyc2VWYWx1ZVt0eXBlb2YgdmFsdWVdKHZhbHVlLCBzY2hlbWEpXG4gICAgICA6IHByb3BlcnR5VHlwZVBhcnNlVmFsdWVbaXNHZW9qc29uKHNjaGVtYSkgPyAnanNvbicgOiAoc2NoZW1hLnR5cGUgYXMgc3RyaW5nKV0odmFsdWUsIHNjaGVtYSlcbiAgICA6IHZhbHVlO1xuXG5jb25zdCBpc09wZW5EZWZhdWx0ID0gKHNjaGVtYVR5cGU6IFNjaGVtYVR5cGUpID0+IFtTY2hlbWFUeXBlLlRlcm1dLmluY2x1ZGVzKHNjaGVtYVR5cGUpO1xuXG4vLyBjYW4gdGhlIHByb3BlcnR5IGJlIHNlZW4gd2hlbiB0aGUgZ3JvdXAgaXMgY2xvc2VkXG5jb25zdCBpc0tleUNsb3NlZFZpc2libGUgPSAoa2V5OiBzdHJpbmcpID0+IFsndHlwZScsICdpZCcsICdAdHlwZScsICdAaWQnXS5pbmNsdWRlcyhrZXkpO1xuXG5jb25zdCBpc0tleUhpZGRlbiA9IChrZXk6IHN0cmluZykgPT4gWyd0eXBlJywgJ0B0eXBlJ10uaW5jbHVkZXMoa2V5KTtcblxuY29uc3QgaXNLZXlSZXF1aXJlZCA9IChrZXk6IHN0cmluZywgZGVmPzogSURlZmluaXRpb25PYmplY3QpID0+XG4gIFsndHlwZScsICdpZCddLmluY2x1ZGVzKGtleSkgfHwgKGRlZj8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0eUVycm9yID1cbiAgKGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdKSA9PlxuICAoZGF0YVBhdGg6IHN0cmluZywgbm9uRXhwYW5kYWJsZUFycmF5ID0gZmFsc2UpID0+XG4gICAgZXJyb3JzLmZpbmQoXG4gICAgICBlcnJvciA9PlxuICAgICAgICAoZXJyb3IuZGF0YVBhdGggPT09IGRhdGFQYXRoIHx8XG4gICAgICAgICAgKG5vbkV4cGFuZGFibGVBcnJheSAmJlxuICAgICAgICAgICAgbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZXJyb3IuZGF0YVBhdGghKSA9PT0gbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZGF0YVBhdGgpKSkgJiZcbiAgICAgICAgKGRhdGFQYXRoLmxlbmd0aCA+IDAgfHwgIWlzTWlzc2luZ1Byb3BlcnR5RXJyb3IoZXJyb3IpKVxuICAgICk7XG5cbmNvbnN0IG1pc3NpbmdQcm9wZXJ0eUVycm9ycyA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPixcbiAgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sXG4gIHBhcmVudCA9ICcnXG4pOiBJTm9kZVByb3BlcnR5W10gPT4ge1xuICBjb25zdCBhbGxFcnJvcnMgPSBlcnJvcnMuZmlsdGVyKGVycm9yID0+IGVycm9yLmRhdGFQYXRoID09PSBrZXlUb0RhdGFQYXRoKHBhcmVudCkgJiYgaXNNaXNzaW5nUHJvcGVydHlFcnJvcihlcnJvcikpO1xuICAvLyBjaGVjayBmb3Igbm9kZSBub3QgZm91bmQgZXJyb3JzXG4gIGNvbnN0IG1pc3NpbmdOb2RlID0gbWlzc2luZ05vZGVFcnJvcnMoYWxsRXJyb3JzKTtcbiAgcmV0dXJuIG1pc3NpbmdOb2RlLmxlbmd0aCA9PT0gMlxuICAgID8gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6IHsgdHlwZTogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlIH0sXG4gICAgICAgICAga2V5OiAnJyxcbiAgICAgICAgICBmdWxsS2V5OiBwYXJlbnQsXG4gICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1pc3NpbmdOb2RlRXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBtaXNzaW5nTm9kZS5maW5kKCh7IHBhcmFtcyB9KSA9PiBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKCcnKVxuICAgICAgICB9XG4gICAgICBdXG4gICAgOiBhbGxFcnJvcnMubWFwKGVycm9yID0+IHtcbiAgICAgICAgY29uc3QgeyBtaXNzaW5nUHJvcGVydHkgfSA9IGVycm9yLnBhcmFtcyE7XG4gICAgICAgIGNvbnN0IGZ1bGxLZXkgPSBwYXJlbnQgPyBgJHtwYXJlbnR9LiR7bWlzc2luZ1Byb3BlcnR5fWAgOiBtaXNzaW5nUHJvcGVydHk7XG4gICAgICAgIGNvbnN0IG1pc3NpbmdPbmVPZiA9IGlzTWlzc2luZ09uZU9mRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiB7IHR5cGU6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSB9LFxuICAgICAgICAgIGtleTogbWlzc2luZ1Byb3BlcnR5LFxuICAgICAgICAgIGZ1bGxLZXksXG4gICAgICAgICAgdmFsdWU6ICdBZGQgZmllbGQgdG8gZml4JyxcbiAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZXJyb3I6IGZvcm1hdEVycm9yKGVycm9yKSxcbiAgICAgICAgICBoYXNFcnJvcjogbWlzc2luZ09uZU9mID8gZmFsc2UgOiBlcnJvckhhc0Vycm9yKGVycm9yKSxcbiAgICAgICAgICBoYXNXYXJuaW5nOiBtaXNzaW5nT25lT2YgfHwgZXJyb3JIYXNXYXJuaW5nKGVycm9yKSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIobWlzc2luZ1Byb3BlcnR5KVxuICAgICAgICB9O1xuICAgICAgfSk7XG59O1xuXG5jb25zdCBwcm9wZXJ0eUZyb21Ob2RlID1cbiAgKFxuICAgIHNjaGVtYXM6IGRlZmluaXRpb25zLFxuICAgIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLFxuICAgIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sXG4gICAgZGVlcEVkaXRhYmxlOiBib29sZWFuLFxuICAgIHBhcmVudCA9ICcnLFxuICAgIG5vZGU6IGFueVxuICApID0+XG4gIChrZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gbm9kZVtrZXldO1xuICAgIGNvbnN0IGV4cGFuZGFibGUgPSBpc0V4cGFuZGFibGUodmFsdWUpO1xuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICBjb25zdCBub25FeHBhbmRhYmxlQXJyYXkgPSBpc0FycmF5ICYmICFleHBhbmRhYmxlO1xuICAgIGNvbnN0IGZ1bGxLZXkgPSBBcnJheS5pc0FycmF5KG5vZGUpID8gYCR7cGFyZW50fVske2tleX1dYCA6IFtwYXJlbnQsIGtleV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgICBjb25zdCBub2RlVHlwZSA9IG5vZGUudHlwZSB8fCBub2RlWydAdHlwZSddO1xuICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBleHBhbmRhYmxlXG4gICAgICA/IGlzQXJyYXkgJiYgdmFsdWUubGVuZ3RoXG4gICAgICAgID8gdmFsdWVbMF0udHlwZSB8fCB2YWx1ZVswXVsnQHR5cGUnXVxuICAgICAgICA6IHZhbHVlLnR5cGUgfHwgdmFsdWVbJ0B0eXBlJ11cbiAgICAgIDogbm9kZVR5cGU7XG4gICAgY29uc3Qgc2NoZW1hID1cbiAgICAgIChzY2hlbWFzICYmIGlzVHlwZVZhbGlkKHsgdHlwZTogc2NoZW1hVHlwZSB9KVxuICAgICAgICA/IGV4cGFuZGFibGVcbiAgICAgICAgICA/IHNjaGVtYXNbc2NoZW1hVHlwZV1cbiAgICAgICAgICA6IHNjaGVtYXNbc2NoZW1hVHlwZV0ucHJvcGVydGllc1trZXldXG4gICAgICAgIDogbnVsbCkgfHwge307XG4gICAgY29uc3QgaXNJcmkgPSBpc1NjaGVtYUlyaShzY2hlbWEpO1xuICAgIGNvbnN0IGVycm9yID0gcHJvcGVydHlFcnJvcihlcnJvcnMpKGtleVRvRGF0YVBhdGgoZnVsbEtleSksIG5vbkV4cGFuZGFibGVBcnJheSk7XG4gICAgY29uc3QgcGFyZW50U2NoZW1hID0gZXhwYW5kYWJsZVxuICAgICAgPyAvLyBUT0RPOiBmb3Igbm9uLWFycmF5LCBzaG91bGQgYmUgc2NoZW1hIHVubGVzcyBsYXN0IHJlY3Vyc2lvblxuICAgICAgICBpc0FycmF5XG4gICAgICAgID8gc2NoZW1hXG4gICAgICAgIDogbm9kZVNjaGVtYVxuICAgICAgOiBub2RlU2NoZW1hO1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPVxuICAgICAgZXhwYW5kYWJsZSB8fCBpc0lyaSA/IHJlY3Vyc2l2ZVByb3BlcnRpZXMoc2NoZW1hcywgZXJyb3JzLCBwYXJlbnRTY2hlbWEsIGRlZXBFZGl0YWJsZSwgZnVsbEtleSkodmFsdWUpIDogW107XG4gICAgY29uc3QgaW5FcnJvciA9IGVycm9ySGFzRXJyb3IoZXJyb3IpIHx8IGhhc0Vycm9yKHByb3BlcnRpZXMpO1xuICAgIGNvbnN0IGluV2FybmluZyA9IGVycm9ySGFzV2FybmluZyhlcnJvcikgfHwgaGFzV2FybmluZyhwcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBlZGl0YWJsZSA9XG4gICAgICBpc1R5cGVOb2RlKG5vZGVbJ0B0eXBlJ10pIHx8IChleHBhbmRhYmxlICYmIGlzVHlwZU5vZGUodmFsdWVbJ0B0eXBlJ10pKVxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogLy8gcHJldmVudCBlZGl0aW5nL2FkZGluZyBuZXcgcHJvcGVydGllcyBvbiBleGlzdGluZyBzdWItbm9kZXNcbiAgICAgICAgIWRlZXBFZGl0YWJsZSAmJlxuICAgICAgICAgIGlzVHlwZU5vZGUoc2NoZW1hVHlwZSkgJiZcbiAgICAgICAgICAoZXhwYW5kYWJsZSA/IHZhbHVlLnR5cGUgIT09IE5vZGVUeXBlLlRlcm0gOiBwYXJlbnQgJiYgbm9kZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtKVxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogLy8gaGFuZGxlIElSSVxuICAgICAgICAgICghc2NoZW1hVHlwZSAmJiBrZXkgPT09ICdAaWQnKSB8fCBlZGl0YWJsZUtleShrZXkpO1xuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSwgdmFsdWUpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgc2NoZW1hVHlwZTogaXNJcmkgPyBudWxsIDogc2NoZW1hVHlwZSxcbiAgICAgIHNjaGVtYSxcbiAgICAgIGtleSxcbiAgICAgIGZ1bGxLZXksXG4gICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZShzY2hlbWEsIHZhbHVlKSxcbiAgICAgIGVkaXRhYmxlOiBpbkVycm9yIHx8IGVkaXRhYmxlLFxuICAgICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQobm9kZSwgc2NoZW1hVHlwZSwgc2NoZW1hLCBmdWxsS2V5KSxcbiAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgICBpc0hpZGRlbjogcGFyZW50ICYmIGlzS2V5SGlkZGVuKGtleSksXG4gICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgIGhhc0Vycm9yOiBpbkVycm9yLFxuICAgICAgaGFzV2FybmluZzogaW5XYXJuaW5nLFxuICAgICAgaXNSZXF1aXJlZDogaXNLZXlSZXF1aXJlZChrZXksIHNjaGVtYXNbbm9kZVR5cGVdKSxcbiAgICAgIGlzQXJyYXksXG4gICAgICBpc0V4cGFuZGFibGU6IGV4cGFuZGFibGUsXG4gICAgICBpc09wZW46IGlzT3BlbkRlZmF1bHQoc2NoZW1hVHlwZSksXG4gICAgICBwcm9wZXJ0aWVzLFxuICAgICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5UGxhY2Vob2xkZXIoc2NoZW1hLCB2YWx1ZVR5cGUsIGZ1bGxLZXksIHBhcmVudFNjaGVtYSksXG4gICAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKSxcbiAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICB9O1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2luZ2xlUHJvcGVydHkgPSAoc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbX3QsIC4uLmtleXNdID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgY29uc3QgcGFyZW50ID0ga2V5cy5qb2luKCcuJyk7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBwYXJlbnQubGVuZ3RoID8gZ2V0KG5vZGUsIHBhcmVudCkgOiBub2RlO1xuICBjb25zdCBzY2hlbWFUeXBlID0gdHlwZVRvU2NoZW1hVHlwZShwYXJlbnROb2RlLnR5cGUgfHwgcGFyZW50Tm9kZVsnQHR5cGUnXSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IHNjaGVtYXNbc2NoZW1hVHlwZV07XG4gIHJldHVybiBwcm9wZXJ0eUZyb21Ob2RlKHNjaGVtYXMsIGVycm9ycywgcGFyZW50U2NoZW1hLCB0cnVlLCBwYXJlbnQsIHBhcmVudE5vZGUpKGtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdXJzaXZlUHJvcGVydGllcyA9XG4gIChzY2hlbWFzOiBkZWZpbml0aW9ucywgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sIGRlZXBFZGl0YWJsZTogYm9vbGVhbiwgcGFyZW50ID0gJycpID0+XG4gIChub2RlOiBhbnkpOiBJTm9kZVByb3BlcnR5W10gPT5cbiAgICBPYmplY3Qua2V5cyhub2RlKVxuICAgICAgLmZpbHRlcihrZXkgPT4gIWlnbm9yZUtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgIC5tYXAocHJvcGVydHlGcm9tTm9kZShzY2hlbWFzLCBlcnJvcnMsIG5vZGVTY2hlbWEsIGRlZXBFZGl0YWJsZSwgcGFyZW50LCBub2RlKSlcbiAgICAgIC5jb25jYXQoLi4ubWlzc2luZ1Byb3BlcnR5RXJyb3JzKG5vZGUsIGVycm9ycywgcGFyZW50KSlcbiAgICAgIC5zb3J0KHNvcnRQcm9wZXJ0aWVzKTtcblxuY29uc3QgZnVsbEtleVBhcnRzID0gKGZ1bGxLZXk6IHN0cmluZykgPT5cbiAgZnVsbEtleS5zcGxpdCgnLicpLmZsYXRNYXAodmFsID0+IHtcbiAgICBpZiAodmFsLmVuZHNXaXRoKCddJykpIHtcbiAgICAgIGNvbnN0IFtrZXksIGluZGV4XSA9IHZhbC5zcGxpdCgnWycpO1xuICAgICAgcmV0dXJuIFtrZXksIGluZGV4LnJlcGxhY2UoJ10nLCAnJyldO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVByb3BlcnRpZXMgPSAoXG4gIHsgcHJvcGVydGllcyB9OiBQYXJ0aWFsPElOb2RlUHJvcGVydHk+LFxuICB1cGRhdGVyOiAocHJvcDogSU5vZGVQcm9wZXJ0eSkgPT4gSU5vZGVQcm9wZXJ0eVxuKSA9PiAocHJvcGVydGllcyB8fCBbXSkubWFwKHByb3AgPT4gdXBkYXRlUHJvcGVydGllcyh1cGRhdGVyKHByb3ApLCB1cGRhdGVyKSk7XG5cbmV4cG9ydCBjb25zdCB0eXBlVG9OZXdQcm9wZXJ0eSA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsXG4gIHNjaGVtYTogZGVmaW5pdGlvbixcbiAgbm9kZVNjaGVtYTogZGVmaW5pdGlvbixcbiAgbm9kZTogYW55LFxuICBmdWxsS2V5OiBzdHJpbmdcbik6IElOb2RlUHJvcGVydHkgPT4ge1xuICBjb25zdCBrZXkgPSBmdWxsS2V5UGFydHMoZnVsbEtleSkucG9wKCkhO1xuICBjb25zdCBtYXBwaW5nczoge1xuICAgIFtrZXk6IHN0cmluZ106ICgpID0+IElOb2RlUHJvcGVydHk7XG4gIH0gPSB7XG4gICAgb2JqZWN0OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IHNjaGVtYVR5cGUsIHByb3BlcnRpZXMgfSA9IHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcyhzY2hlbWFzLCBzY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IHt9O1xuICAgICAgbm9kZVtrZXldLnR5cGUgPSBzY2hlbWFUeXBlO1xuICAgICAgLy8gVE9ETzogaGFuZGxlIG5vZGVTY2hlbWEgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICAgIGNvbnN0IHByb3BzID0gcHJvcGVydGllc1xuICAgICAgICAuZmlsdGVyKHByb3AgPT4gbmVzdGluZ0VuYWJsZWQoc2NoZW1hVHlwZSwgcHJvcC5rZXkpICYmICEhcHJvcC52YWx1ZSlcbiAgICAgICAgLm1hcCh2ID0+ICh7XG4gICAgICAgICAgLi4udHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgdi52YWx1ZSwgbm9kZVNjaGVtYSwgbm9kZVtrZXldLCBgJHtmdWxsS2V5fS4ke3Yua2V5fWApLFxuICAgICAgICAgIGlzUmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSkpO1xuICAgICAgY29uc3QgdmFsdWUgPSBwcm9wcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+ICh7IC4uLnByZXYsIFtjdXJyLmtleV06IGN1cnIudmFsdWUgfSksIHt9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYTogc2NoZW1hc1tzY2hlbWFUeXBlXSxcbiAgICAgICAgc2NoZW1hVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIHNjaGVtYVR5cGUsIGZ1bGxLZXkpLFxuICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wcy5zb3J0KHNvcnRQcm9wZXJ0aWVzKSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBpc0FkZFByb3BlcnR5RW5hYmxlZChub2RlLCBzY2hlbWFUeXBlLCBzY2hlbWFzW3NjaGVtYVR5cGVdLCBrZXkpLFxuICAgICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICAgICAgaXNSZXF1aXJlZDogaXNLZXlSZXF1aXJlZChrZXksIHNjaGVtYSBhcyBhbnkpLFxuICAgICAgICBpc0FycmF5OiBmYWxzZSxcbiAgICAgICAgaXNFeHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICBpc09wZW46IGlzT3BlbkRlZmF1bHQoc2NoZW1hVHlwZSksXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICAgIH07XG4gICAgfSxcbiAgICBhcnJheTogKCkgPT4ge1xuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgICAvLyBhcnJheSBvZiBzdHJpbmcsIG51bWJlciBhbmQgYm9vbGVhblxuICAgICAgaWYgKGl0ZW1zLnR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG1hcHBpbmdzLmRlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjaGVtYVR5cGUgPSBkZWZpbml0aW9uVG9TY2hlbWFUeXBlKGl0ZW1zIGFzIElEZWZpbml0aW9uT2JqZWN0KTtcbiAgICAgIG5vZGVba2V5XSA9IG5vZGVba2V5XSB8fCBbXTtcbiAgICAgIG5vZGVba2V5XS5wdXNoKHt9KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgaXRlbXMsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIG5vZGVba2V5XVswXSwgYCR7ZnVsbEtleX1bMF1gKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgc2NoZW1hVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogW3Byb3BlcnR5LnZhbHVlXSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvcGVydGllczogW3Byb3BlcnR5XSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9LFxuICAgIGdlb2pzb246ICgpID0+IHR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIHsgdHlwZTogJ2pzb24nIH0gYXMgYW55LCBub2RlU2NoZW1hLCBub2RlLCBmdWxsS2V5KSxcbiAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBwcm9wZXJ0eVZhbHVlVHlwZShzY2hlbWEpO1xuICAgICAgY29uc3QgdmFsdWUgPSBzY2hlbWEuZGVmYXVsdCB8fCAoc2NoZW1hIGFzIGFueSkuY29uc3QgfHwgdmFsdWVUeXBlVG9EZWZhdWx0W3ZhbHVlVHlwZV07XG4gICAgICBub2RlW2tleV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlOiBwcm9wZXJ0eVZhbHVlKHNjaGVtYSwgdmFsdWUpLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgbm9kZS50eXBlLCBmdWxsS2V5LCBzY2hlbWEpLFxuICAgICAgICBwbGFjZWhvbGRlcjogcHJvcGVydHlQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSwgZnVsbEtleSwgbm9kZVNjaGVtYSksXG4gICAgICAgIGV4dGVybmFsVXJsOiBwcm9wZXJ0eUV4dGVybmFsVXJsKG5vZGUsIGtleSwgdmFsdWUpLFxuICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG1hcHBlZCA9IGlzR2VvanNvbihzY2hlbWEpXG4gICAgPyBtYXBwaW5ncy5nZW9qc29uXG4gICAgOiAhc2NoZW1hLnR5cGVcbiAgICA/IG1hcHBpbmdzLm9iamVjdFxuICAgIDogKHNjaGVtYS50eXBlIGFzIHN0cmluZykgaW4gbWFwcGluZ3NcbiAgICA/IG1hcHBpbmdzW3NjaGVtYS50eXBlIGFzIHN0cmluZ11cbiAgICA6IG1hcHBpbmdzLmRlZmF1bHQ7XG4gIHJldHVybiBtYXBwZWQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgZm9yIChjb25zdCBwIG9mIHByb3BlcnRpZXMpIHtcbiAgICBpZiAocC5mdWxsS2V5ID09PSBmdWxsS2V5KSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRQID0gZmluZFByb3BlcnR5KHAucHJvcGVydGllcywgZnVsbEtleSk7XG4gICAgaWYgKGNoaWxkUCkge1xuICAgICAgcmV0dXJuIGNoaWxkUDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyZW50UHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBhbGxLZXlzID0gcHJvcGVydHkuZnVsbEtleS5zcGxpdCgnLicpO1xuICBbLi4ubmV3IEFycmF5KHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5wYXJlbnRMZXZlbCB8fCAwKV0ubWFwKCgpID0+IGFsbEtleXMucG9wKCkpO1xuICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGFsbEtleXMuam9pbignLicpKTtcbiAgcGFyZW50S2V5cy5wb3AoKTtcbiAgY29uc3QgcGFyZW50ID0gcGFyZW50S2V5cy5yZWR1Y2UoKHByZXYsIGN1cnIsIGN1cnJJbmRleCk6IGFueSA9PiB7XG4gICAgY29uc3QgcHJvcCA9IHByZXYuZmluZCh2ID0+IHYua2V5ID09PSBjdXJyKTtcbiAgICByZXR1cm4gY3VyckluZGV4ID09PSBwYXJlbnRLZXlzLmxlbmd0aCAtIDEgPyBwcm9wIHx8ICh7fSBhcyBJTm9kZVByb3BlcnR5KSA6IHByb3AhLnByb3BlcnRpZXMgfHwgW107XG4gIH0sIHByb3BlcnRpZXMpIGFzIGFueSBhcyBJTm9kZVByb3BlcnR5O1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJlbnQpID8gcHJvcGVydHkgOiBwYXJlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgbmVzdGVkUHJvcGVydHkgPSAoeyBwcm9wZXJ0aWVzIH06IElOb2RlUHJvcGVydHksIG5lc3RlZEtleTogc3RyaW5nKSA9PlxuICBwcm9wZXJ0aWVzLmZpbmQoKHsga2V5IH0pID0+IGtleSA9PT0gbmVzdGVkS2V5KTtcblxuZXhwb3J0IGNvbnN0IHNpYmxpbmdQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCBzaWJsaW5nS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcGFyZW50ID0gcGFyZW50UHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHkpO1xuICBjb25zdCBwYXJlbnRQcm9wZXJ0aWVzID0gcGFyZW50ID09PSBwcm9wZXJ0eSA/IHByb3BlcnRpZXMgOiBwYXJlbnQucHJvcGVydGllcztcbiAgcmV0dXJuIHBhcmVudFByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3Aua2V5ID09PSBzaWJsaW5nS2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCBncm91cENoYW5nZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBrZXk6IHN0cmluZywgdmFsdWU/OiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGtleSk7XG4gICAgcGFyZW50S2V5cy5yZWR1Y2UoKHByZXYsIGN1cnIsIGN1cnJJbmRleCkgPT4ge1xuICAgICAgaWYgKGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcmV2LnNwbGljZShcbiAgICAgICAgICBwcmV2LmZpbmRJbmRleCh2ID0+IHYua2V5ID09PSBjdXJyKSxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwcm9wID0gcHJldi5maW5kKHYgPT4gdi5rZXkgPT09IGN1cnIpITtcbiAgICAgICAgcHJvcC5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHByb3AucHJvcGVydGllcztcbiAgICAgIH1cbiAgICB9LCBwcm9wZXJ0aWVzKTtcbiAgfSBjYXRjaCAoX2Vycikge1xuICAgIC8vIGlnbm9yZSBlcnJvclxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb3BlcnR5S2V5cyA9IChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT5cbiAgcHJvcGVydHkucHJvcGVydGllcy5tYXAoKHByb3AsIGkpID0+IHtcbiAgICBwcm9wLmZ1bGxLZXkgPSBgJHtwcm9wZXJ0eS5mdWxsS2V5fSR7cHJvcGVydHkuaXNBcnJheSA/IGBbJHtpfV1gIDogYC4ke3Byb3Aua2V5fWB9YDtcbiAgICBwcm9wLmtleSA9IHByb3BlcnR5LmlzQXJyYXkgPyBgJHtpfWAgOiBwcm9wLmtleTtcbiAgICByZXR1cm4gcmVmcmVzaFByb3BlcnR5S2V5cyhwcm9wKTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpO1xuICByZXR1cm4gISFzdGFydERhdGU/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbiA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBkaWZmSW5EYXlzKHN0YXJ0RGF0ZS52YWx1ZSwgZW5kRGF0ZS52YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgY3ljbGVEdXJhdGlvbiA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2N5Y2xlRHVyYXRpb24nKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhY3ljbGVEdXJhdGlvbj8udmFsdWUgJiYgISFlbmREYXRlPy52YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJykhO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpITtcbiAgcmV0dXJuIG1vbWVudChlbmREYXRlLnZhbHVlKS5sb2NhbGUoJ2VuLWdiJykuc3VidHJhY3QoY3ljbGVEdXJhdGlvbi52YWx1ZSwgJ2RheXMnKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbn07XG4iXX0=