@seniorsistemas/components-ai 2.0.0 → 2.0.2-master-c019cc99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +9 -18
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +15 -6
- package/esm2022/lib/services/auth.service.mjs +24 -118
- package/esm2022/lib/utils/utils.mjs +2 -2
- package/fesm2022/seniorsistemas-components-ai.mjs +47 -140
- package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -1
- package/lib/services/auth.service.d.ts +2 -45
- package/package.json +1 -1
|
@@ -143,7 +143,7 @@ export const createFilterString = (formField, value) => {
|
|
|
143
143
|
return getEnumQuery(name, value, multiple);
|
|
144
144
|
case FieldType.String: {
|
|
145
145
|
const escapedValue = escapeFilterValue(String(value));
|
|
146
|
-
return `upper(${name})
|
|
146
|
+
return `containing(upper(${name}), upper('${escapedValue}'))`;
|
|
147
147
|
}
|
|
148
148
|
case FieldType.Lookup: {
|
|
149
149
|
const lookupId = typeof value === 'object' ? value.id : value;
|
|
@@ -309,4 +309,4 @@ export const throttle = (func, limit) => {
|
|
|
309
309
|
}
|
|
310
310
|
};
|
|
311
311
|
};
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksU0FXWDtBQVhELFdBQVksU0FBUztJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBYSxDQUFBO0lBQ2IsMEJBQWEsQ0FBQTtJQUNiLGtDQUFxQixDQUFBO0lBQ3JCLDRDQUErQixDQUFBO0lBQy9CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBWFcsU0FBUyxLQUFULFNBQVMsUUFXcEI7QUFxQkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQWlCLEVBQUU7SUFDNUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQWUsRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUNoRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3BCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztRQUNwQixLQUFLLFNBQVMsQ0FBQyxhQUFhLENB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QztRQUM5QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCBlbnVtIEZpZWxkVHlwZSB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBJbnRlZ2VyID0gJ0ludGVnZXInLFxuICBEb3VibGUgPSAnRG91YmxlJyxcbiAgQm9vbGVhbiA9ICdCb29sZWFuJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgVGltZSA9ICdUaW1lJyxcbiAgRGF0ZVRpbWUgPSAnRGF0ZVRpbWUnLFxuICBMb2NhbERhdGVUaW1lID0gJ0xvY2FsRGF0ZVRpbWUnLFxuICBFbnVtID0gJ0VudW0nLFxuICBMb29rdXAgPSAnTG9va3VwJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogRmllbGRUeXBlO1xuICBsYWJlbDogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHNlYXJjaEZpZWxkcz86IEZvcm1GaWVsZFtdO1xuICBvcHRpb25zPzogT3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uIHtcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJUb2tlbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmNvbnN0IG51bWJlclR5cGVzID0gW0ZpZWxkVHlwZS5JbnRlZ2VyLCBGaWVsZFR5cGUuRG91YmxlXTtcbmNvbnN0IG51bWJlclBhdHRlcm4gPSAvXlxcZCtcXGIkLztcblxuLyoqXG4gKiBNZXJnZSB0d28gYXJyYXlzIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlVW5pcXVlID0gKGFycmF5OiBBcnJheTxzdHJpbmc+LCBvdGhlckFycmF5OiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiA9PiB7XG4gIHJldHVybiBhcnJheS5jb25jYXQob3RoZXJBcnJheS5maWx0ZXIoKGl0ZW0pID0+ICFhcnJheS5pbmNsdWRlcyhpdGVtKSkpO1xufTtcblxuLyoqXG4gKiBHZXQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluZm9ybWF0aW9uID0gKHR5cGU6IEZpZWxkVHlwZSwgdmFsdWU6IGFueSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgIHJldHVybiB7IGlzVmFsaWRWYWx1ZTogZmFsc2UsIHR5cGVFeGlzdHM6IHRydWUgfTtcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzVmFsaWRWYWx1ZTogdmFsdWUubWF0Y2gobnVtYmVyUGF0dGVybiksXG4gICAgICAgIHR5cGVFeGlzdHM6IG51bWJlclR5cGVzLmluY2x1ZGVzKHR5cGUpLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWYWxpZFZhbHVlOiB2YWx1ZS5tYXRjaChudW1iZXJQYXR0ZXJuKSxcbiAgICAgICAgdHlwZUV4aXN0czogbnVtYmVyVHlwZXMuaW5jbHVkZXModHlwZSksXG4gICAgICB9O1xuICB9XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIGZpbHRlciB2YWx1ZSBpcyB2YWxpZCBmb3IgZmllbGQgdHlwZVxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZEZpbHRlciA9ICh0eXBlOiBGaWVsZFR5cGUsIHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgeyBpc1ZhbGlkVmFsdWUsIHR5cGVFeGlzdHMgfSA9IGdldFR5cGVJbmZvcm1hdGlvbih0eXBlLCB2YWx1ZSk7XG4gIHJldHVybiAhKHR5cGVFeGlzdHMgJiYgIWlzVmFsaWRWYWx1ZSk7XG59O1xuXG4vKipcbiAqIEdldCBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBvYmplY3QgdXNpbmcgZG90IG5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcm9wID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkgPT4ge1xuICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuICcnO1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4ge1xuICAgIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdFtwcm9wXSAhPT0gdW5kZWZpbmVkKSA/IHJlc3VsdFtwcm9wXSA6ICcnO1xuICB9LCBvYmopO1xufTtcblxuLyoqXG4gKiBTZXQgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluIG9iamVjdCB1c2luZyBkb3Qgbm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFByb3AgPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgPT4ge1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcbiAgXG4gIGlmICghbGFzdEtleSkgcmV0dXJuO1xuICBcbiAgY29uc3QgdGFyZ2V0ID0ga2V5cy5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgIGlmICghY3VycmVudFtrZXldIHx8IHR5cGVvZiBjdXJyZW50W2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRba2V5XTtcbiAgfSwgb2JqKTtcbiAgXG4gIHRhcmdldFtsYXN0S2V5XSA9IHZhbHVlO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgbGFiZWwtdmFsdWUgcGFpcnMgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVSZXF1ZXN0ID0gKGNvbnRlbnRzOiBhbnlbXSwgZGlzcGxheUZpZWxkczogc3RyaW5nW10pOiBhbnlbXSA9PiB7XG4gIHJldHVybiBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAuLi5pdGVtLFxuICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcCgoZmllbGQpID0+IGdldFByb3AoaXRlbSwgZmllbGQpKS5qb2luKCcgLSAnKSxcbiAgfSkpO1xufTtcblxuLyoqXG4gKiBHZXQgc3VnZ2VzdGlvbiB2YWx1ZSBmb3IgYXV0b2NvbXBsZXRlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdWdnZXN0aW9uVmFsdWUgPSAoXG4gIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBcbiAgb3duZXJFbnRpdHk6IHN0cmluZywgXG4gIHZhbHVlOiBhbnksIFxuICBzZXBhcmF0b3I6IHN0cmluZyA9ICcgLSAnXG4pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gZGlzcGxheUZpZWxkc1xuICAgIC5tYXAoKGZpZWxkKSA9PiBnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKSlcbiAgICAuZmlsdGVyKHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJylcbiAgICAuam9pbihzZXBhcmF0b3IpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZW51bSBxdWVyeSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVudW1RdWVyeSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgPT4ge1xuICBpZiAobXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2ApLmpvaW4oJyBvciAnKX0pYDtcbiAgfVxuICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG59O1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZmlsdGVyIHN0cmluZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZUZpbHRlclZhbHVlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZmlsdGVyIHN0cmluZyBmb3IgZGlmZmVyZW50IGZpZWxkIHR5cGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJTdHJpbmcgPSAoZm9ybUZpZWxkOiBGb3JtRmllbGQsIHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0gPSBmb3JtRmllbGQ7XG4gIFxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtuYW1lfSBlcSBudWxsYDtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZToge1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gZGF0ZVZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6IHtcbiAgICAgIGNvbnN0IHRpbWVWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xuICAgICAgY29uc3QgdGltZVN0ciA9IHRpbWVWYWx1ZS50b1RpbWVTdHJpbmcoKS5zcGxpdCgnICcpWzBdO1xuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3RpbWVTdHJ9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6IHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCl9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZToge1xuICAgICAgY29uc3QgbG9jYWxEYXRlVGltZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBsb2NhbERhdGVUaW1lU3RyID0gbG9jYWxEYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsICcnKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtsb2NhbERhdGVUaW1lU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICByZXR1cm4gZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6IHtcbiAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IGVzY2FwZUZpbHRlclZhbHVlKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgcmV0dXJuIGB1cHBlcigke25hbWV9KSBsaWtlIHVwcGVyKCcke2VzY2FwZWRWYWx1ZX0lJylgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkxvb2t1cDoge1xuICAgICAgY29uc3QgbG9va3VwSWQgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdmFsdWUuaWQgOiB2YWx1ZTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtsb29rdXBJZH0nYDtcbiAgICB9XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5Cb29sZWFuOlxuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfWA7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XG4gICAgICBcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke2VzY2FwZUZpbHRlclZhbHVlKFN0cmluZyh2YWx1ZSkpfSdgO1xuICB9XG59O1xuXG4vKipcbiAqIENyZWF0ZSBmaWx0ZXIgdG9rZW5zIGZvciBVSSBkaXNwbGF5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJUb2tlbnMgPSAoXG4gIGZvcm1GaWVsZDogRm9ybUZpZWxkLCBcbiAgdmFsdWU6IGFueSwgXG4gIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlXG4pOiBGaWx0ZXJUb2tlbiA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgdHlwZSwgbGFiZWwsIHNlYXJjaEZpZWxkcywgb3B0aW9ucyB9ID0gZm9ybUZpZWxkIGFzIGFueTtcbiAgbGV0IGxhYmVsVmFsdWUgPSB2YWx1ZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLnRvTG9jYWxlRGF0ZVN0cmluZyA/IHZhbHVlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDogdmFsdWU7XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICBsYWJlbFZhbHVlID0gdmFsdWUudG9Mb2NhbGVUaW1lU3RyaW5nID8gdmFsdWUudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZS50b0xvY2FsZVN0cmluZyA/IHZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9va3VwOlxuICAgICAgaWYgKHNlYXJjaEZpZWxkcyAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgIGxhYmVsVmFsdWUgPSBzZWFyY2hGaWVsZHMubWFwKChmaWVsZDogRm9ybUZpZWxkKSA9PiBnZXRQcm9wKHZhbHVlLCBmaWVsZC5uYW1lKSkuam9pbignIC0gJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbFZhbHVlID0gdmFsdWUubGFiZWwgfHwgdmFsdWUubmFtZSB8fCB2YWx1ZS5pZDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuRW51bTpcbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0OiBPcHRpb24pID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICBsYWJlbFZhbHVlID0gb3B0aW9uID8gb3B0aW9uLmxhYmVsIDogdmFsdWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICBsYWJlbFZhbHVlID0gdmFsdWUgXG4gICAgICAgID8gdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnYm9vbGVhbi50cnVlJykgXG4gICAgICAgIDogdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnYm9vbGVhbi5mYWxzZScpO1xuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIGxhYmVsVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUudG9Mb2NhbGVTdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4geyBcbiAgICBpZDogbmFtZSwgXG4gICAgbGFiZWw6IGAke2xhYmVsfTogJHtsYWJlbFZhbHVlfWAgXG4gIH07XG59O1xuXG4vKipcbiAqIFJlc29sdmUgJHJlZiByZWZlcmVuY2VzIGluIEpTT04gb2JqZWN0c1xuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlZnMgPSAocGF5bG9hZDogYW55KTogYW55ID0+IHtcbiAgY29uc3QgZ2V0RGF0YUZyb21SZWYgPSAocmVmOiBzdHJpbmcsIHJvb3RPYmo6IGFueSk6IGFueSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSAvXFxbXCIoLio/KVwiXFxdL2c7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgbGV0IG1hdGNoO1xuXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocmVmKSkgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdC5wdXNoKG1hdGNoWzFdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCByb290T2JqKTtcbiAgfTtcblxuICBjb25zdCByZXNvbHZlID0gKG9iajogYW55LCByb290T2JqOiBhbnkpOiB2b2lkID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaCgoaXRlbSkgPT4gcmVzb2x2ZShpdGVtLCByb290T2JqKSk7XG4gICAgfSBlbHNlIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09ICckcmVmJyAmJiBvYmpba2V5XSkge1xuICAgICAgICAgIGNvbnN0IHJlZlBhdGggPSBvYmpba2V5XTtcbiAgICAgICAgICBjb25zdCByZWZEYXRhID0gZ2V0RGF0YUZyb21SZWYocmVmUGF0aCwgcm9vdE9iaik7XG4gICAgICAgICAgaWYgKHJlZkRhdGEpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCByZWZEYXRhKTtcbiAgICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShvYmpba2V5XSwgcm9vdE9iaik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9uZWRQYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gIHJlc29sdmUoY2xvbmVkUGF5bG9hZCwgY2xvbmVkUGF5bG9hZCk7XG4gIHJldHVybiBjbG9uZWRQYXlsb2FkO1xufTtcblxuLyoqXG4gKiBEZWVwIGNsb25lIGFuIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgZGVlcENsb25lID0gPFQ+KG9iajogVCk6IFQgPT4ge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuICBcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IERhdGUob2JqLmdldFRpbWUoKSkgYXMgYW55O1xuICB9XG4gIFxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoaXRlbSA9PiBkZWVwQ2xvbmUoaXRlbSkpIGFzIGFueTtcbiAgfVxuICBcbiAgY29uc3QgY2xvbmVkID0ge30gYXMgVDtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgKGNsb25lZCBhcyBhbnkpW2tleV0gPSBkZWVwQ2xvbmUoKG9iaiBhcyBhbnkpW2tleV0pO1xuICB9KTtcbiAgXG4gIHJldHVybiBjbG9uZWQ7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIHR3byBvYmplY3RzIGFyZSBkZWVwbHkgZXF1YWxcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZXBFcXVhbCA9IChvYmoxOiBhbnksIG9iajI6IGFueSk6IGJvb2xlYW4gPT4ge1xuICBpZiAob2JqMSA9PT0gb2JqMikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICBpZiAob2JqMSA9PSBudWxsIHx8IG9iajIgPT0gbnVsbCkge1xuICAgIHJldHVybiBvYmoxID09PSBvYmoyO1xuICB9XG4gIFxuICBpZiAodHlwZW9mIG9iajEgIT09IHR5cGVvZiBvYmoyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICBpZiAodHlwZW9mIG9iajEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iajEgPT09IG9iajI7XG4gIH1cbiAgXG4gIGlmIChBcnJheS5pc0FycmF5KG9iajEpICE9PSBBcnJheS5pc0FycmF5KG9iajIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xuICBjb25zdCBrZXlzMiA9IE9iamVjdC5rZXlzKG9iajIpO1xuICBcbiAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICByZXR1cm4ga2V5czEuZXZlcnkoa2V5ID0+IGRlZXBFcXVhbChvYmoxW2tleV0sIG9iajJba2V5XSkpO1xufTtcblxuLyoqXG4gKiBEZWJvdW5jZSBmdW5jdGlvbiBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gIGZ1bmM6IFQsXG4gIHdhaXQ6IG51bWJlclxuKTogKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkKSA9PiB7XG4gIGxldCB0aW1lb3V0OiBhbnk7XG4gIFxuICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gZnVuYyguLi5hcmdzKSwgd2FpdCk7XG4gIH07XG59O1xuXG4vKipcbiAqIFRocm90dGxlIGZ1bmN0aW9uIGV4ZWN1dGlvblxuICovXG5leHBvcnQgY29uc3QgdGhyb3R0bGUgPSA8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgZnVuYzogVCxcbiAgbGltaXQ6IG51bWJlclxuKTogKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkKSA9PiB7XG4gIGxldCBpblRocm90dGxlOiBib29sZWFuO1xuICBcbiAgcmV0dXJuICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB7XG4gICAgaWYgKCFpblRocm90dGxlKSB7XG4gICAgICBmdW5jKC4uLmFyZ3MpO1xuICAgICAgaW5UaHJvdHRsZSA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGluVGhyb3R0bGUgPSBmYWxzZSwgbGltaXQpO1xuICAgIH1cbiAgfTtcbn07XG4iXX0=
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLWFpL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksU0FXWDtBQVhELFdBQVksU0FBUztJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQixnQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBYSxDQUFBO0lBQ2IsMEJBQWEsQ0FBQTtJQUNiLGtDQUFxQixDQUFBO0lBQ3JCLDRDQUErQixDQUFBO0lBQy9CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBWFcsU0FBUyxLQUFULFNBQVMsUUFXcEI7QUFxQkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQWlCLEVBQUU7SUFDNUYsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQWUsRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUNoRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3BCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztRQUNwQixLQUFLLFNBQVMsQ0FBQyxhQUFhLENB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QztRQUM5QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCBlbnVtIEZpZWxkVHlwZSB7XG4gIFN0cmluZyA9ICdTdHJpbmcnLFxuICBJbnRlZ2VyID0gJ0ludGVnZXInLFxuICBEb3VibGUgPSAnRG91YmxlJyxcbiAgQm9vbGVhbiA9ICdCb29sZWFuJyxcbiAgRGF0ZSA9ICdEYXRlJyxcbiAgVGltZSA9ICdUaW1lJyxcbiAgRGF0ZVRpbWUgPSAnRGF0ZVRpbWUnLFxuICBMb2NhbERhdGVUaW1lID0gJ0xvY2FsRGF0ZVRpbWUnLFxuICBFbnVtID0gJ0VudW0nLFxuICBMb29rdXAgPSAnTG9va3VwJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogRmllbGRUeXBlO1xuICBsYWJlbDogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHNlYXJjaEZpZWxkcz86IEZvcm1GaWVsZFtdO1xuICBvcHRpb25zPzogT3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uIHtcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJUb2tlbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmNvbnN0IG51bWJlclR5cGVzID0gW0ZpZWxkVHlwZS5JbnRlZ2VyLCBGaWVsZFR5cGUuRG91YmxlXTtcbmNvbnN0IG51bWJlclBhdHRlcm4gPSAvXlxcZCtcXGIkLztcblxuLyoqXG4gKiBNZXJnZSB0d28gYXJyYXlzIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lcmdlVW5pcXVlID0gKGFycmF5OiBBcnJheTxzdHJpbmc+LCBvdGhlckFycmF5OiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiA9PiB7XG4gIHJldHVybiBhcnJheS5jb25jYXQob3RoZXJBcnJheS5maWx0ZXIoKGl0ZW0pID0+ICFhcnJheS5pbmNsdWRlcyhpdGVtKSkpO1xufTtcblxuLyoqXG4gKiBHZXQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluZm9ybWF0aW9uID0gKHR5cGU6IEZpZWxkVHlwZSwgdmFsdWU6IGFueSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgIHJldHVybiB7IGlzVmFsaWRWYWx1ZTogZmFsc2UsIHR5cGVFeGlzdHM6IHRydWUgfTtcbiAgICBjYXNlIEZpZWxkVHlwZS5JbnRlZ2VyOlxuICAgIGNhc2UgRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzVmFsaWRWYWx1ZTogdmFsdWUubWF0Y2gobnVtYmVyUGF0dGVybiksXG4gICAgICAgIHR5cGVFeGlzdHM6IG51bWJlclR5cGVzLmluY2x1ZGVzKHR5cGUpLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWYWxpZFZhbHVlOiB2YWx1ZS5tYXRjaChudW1iZXJQYXR0ZXJuKSxcbiAgICAgICAgdHlwZUV4aXN0czogbnVtYmVyVHlwZXMuaW5jbHVkZXModHlwZSksXG4gICAgICB9O1xuICB9XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGlmIGZpbHRlciB2YWx1ZSBpcyB2YWxpZCBmb3IgZmllbGQgdHlwZVxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZEZpbHRlciA9ICh0eXBlOiBGaWVsZFR5cGUsIHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgeyBpc1ZhbGlkVmFsdWUsIHR5cGVFeGlzdHMgfSA9IGdldFR5cGVJbmZvcm1hdGlvbih0eXBlLCB2YWx1ZSk7XG4gIHJldHVybiAhKHR5cGVFeGlzdHMgJiYgIWlzVmFsaWRWYWx1ZSk7XG59O1xuXG4vKipcbiAqIEdldCBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBvYmplY3QgdXNpbmcgZG90IG5vdGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQcm9wID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkgPT4ge1xuICBpZiAoIW9iaiB8fCAhcGF0aCkgcmV0dXJuICcnO1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4ge1xuICAgIHJldHVybiAocmVzdWx0ICYmIHJlc3VsdFtwcm9wXSAhPT0gdW5kZWZpbmVkKSA/IHJlc3VsdFtwcm9wXSA6ICcnO1xuICB9LCBvYmopO1xufTtcblxuLyoqXG4gKiBTZXQgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluIG9iamVjdCB1c2luZyBkb3Qgbm90YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFByb3AgPSAob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQgPT4ge1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKTtcbiAgXG4gIGlmICghbGFzdEtleSkgcmV0dXJuO1xuICBcbiAgY29uc3QgdGFyZ2V0ID0ga2V5cy5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuICAgIGlmICghY3VycmVudFtrZXldIHx8IHR5cGVvZiBjdXJyZW50W2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRba2V5XTtcbiAgfSwgb2JqKTtcbiAgXG4gIHRhcmdldFtsYXN0S2V5XSA9IHZhbHVlO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgbGFiZWwtdmFsdWUgcGFpcnMgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsVmFsdWVSZXF1ZXN0ID0gKGNvbnRlbnRzOiBhbnlbXSwgZGlzcGxheUZpZWxkczogc3RyaW5nW10pOiBhbnlbXSA9PiB7XG4gIHJldHVybiBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAuLi5pdGVtLFxuICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcCgoZmllbGQpID0+IGdldFByb3AoaXRlbSwgZmllbGQpKS5qb2luKCcgLSAnKSxcbiAgfSkpO1xufTtcblxuLyoqXG4gKiBHZXQgc3VnZ2VzdGlvbiB2YWx1ZSBmb3IgYXV0b2NvbXBsZXRlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdWdnZXN0aW9uVmFsdWUgPSAoXG4gIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBcbiAgb3duZXJFbnRpdHk6IHN0cmluZywgXG4gIHZhbHVlOiBhbnksIFxuICBzZXBhcmF0b3I6IHN0cmluZyA9ICcgLSAnXG4pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gZGlzcGxheUZpZWxkc1xuICAgIC5tYXAoKGZpZWxkKSA9PiBnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKSlcbiAgICAuZmlsdGVyKHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSAnJylcbiAgICAuam9pbihzZXBhcmF0b3IpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZW51bSBxdWVyeSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVudW1RdWVyeSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgPT4ge1xuICBpZiAobXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYCgke3ZhbHVlLm1hcCgoc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2ApLmpvaW4oJyBvciAnKX0pYDtcbiAgfVxuICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG59O1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZmlsdGVyIHN0cmluZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGVzY2FwZUZpbHRlclZhbHVlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgZmlsdGVyIHN0cmluZyBmb3IgZGlmZmVyZW50IGZpZWxkIHR5cGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJTdHJpbmcgPSAoZm9ybUZpZWxkOiBGb3JtRmllbGQsIHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0gPSBmb3JtRmllbGQ7XG4gIFxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtuYW1lfSBlcSBudWxsYDtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZToge1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gZGF0ZVZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6IHtcbiAgICAgIGNvbnN0IHRpbWVWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xuICAgICAgY29uc3QgdGltZVN0ciA9IHRpbWVWYWx1ZS50b1RpbWVTdHJpbmcoKS5zcGxpdCgnICcpWzBdO1xuICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3RpbWVTdHJ9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6IHtcbiAgICAgIGNvbnN0IGRhdGVUaW1lVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtkYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCl9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZToge1xuICAgICAgY29uc3QgbG9jYWxEYXRlVGltZVZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICBjb25zdCBsb2NhbERhdGVUaW1lU3RyID0gbG9jYWxEYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgnWicsICcnKTtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtsb2NhbERhdGVUaW1lU3RyfSdgO1xuICAgIH1cbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICByZXR1cm4gZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6IHtcbiAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IGVzY2FwZUZpbHRlclZhbHVlKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgcmV0dXJuIGBjb250YWluaW5nKHVwcGVyKCR7bmFtZX0pLCB1cHBlcignJHtlc2NhcGVkVmFsdWV9JykpYDtcbiAgICB9XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5Mb29rdXA6IHtcbiAgICAgIGNvbnN0IGxvb2t1cElkID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlLmlkIDogdmFsdWU7XG4gICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bG9va3VwSWR9J2A7XG4gICAgfVxuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuQm9vbGVhbjpcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJ31gO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuSW50ZWdlcjpcbiAgICBjYXNlIEZpZWxkVHlwZS5Eb3VibGU6XG4gICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICAgICAgXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHtlc2NhcGVGaWx0ZXJWYWx1ZShTdHJpbmcodmFsdWUpKX0nYDtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGUgZmlsdGVyIHRva2VucyBmb3IgVUkgZGlzcGxheVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyVG9rZW5zID0gKFxuICBmb3JtRmllbGQ6IEZvcm1GaWVsZCwgXG4gIHZhbHVlOiBhbnksIFxuICB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZVxuKTogRmlsdGVyVG9rZW4gPT4ge1xuICBjb25zdCB7IG5hbWUsIHR5cGUsIGxhYmVsLCBzZWFyY2hGaWVsZHMsIG9wdGlvbnMgfSA9IGZvcm1GaWVsZCBhcyBhbnk7XG4gIGxldCBsYWJlbFZhbHVlID0gdmFsdWU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcgPyB2YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLnRvTG9jYWxlVGltZVN0cmluZyA/IHZhbHVlLnRvTG9jYWxlVGltZVN0cmluZygpIDogdmFsdWU7XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICBsYWJlbFZhbHVlID0gdmFsdWUudG9Mb2NhbGVTdHJpbmcgPyB2YWx1ZS50b0xvY2FsZVN0cmluZygpIDogdmFsdWU7XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkxvb2t1cDpcbiAgICAgIGlmIChzZWFyY2hGaWVsZHMgJiYgc2VhcmNoRmllbGRzLmxlbmd0aCkge1xuICAgICAgICBsYWJlbFZhbHVlID0gc2VhcmNoRmllbGRzLm1hcCgoZmllbGQ6IEZvcm1GaWVsZCkgPT4gZ2V0UHJvcCh2YWx1ZSwgZmllbGQubmFtZSkpLmpvaW4oJyAtICcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLmxhYmVsIHx8IHZhbHVlLm5hbWUgfHwgdmFsdWUuaWQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAgIFxuICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdDogT3B0aW9uKSA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcbiAgICAgICAgbGFiZWxWYWx1ZSA9IG9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgICBcbiAgICBjYXNlIEZpZWxkVHlwZS5Cb29sZWFuOlxuICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlIFxuICAgICAgICA/IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Jvb2xlYW4udHJ1ZScpIFxuICAgICAgICA6IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Jvb2xlYW4uZmFsc2UnKTtcbiAgICAgIGJyZWFrO1xuICAgICAgXG4gICAgY2FzZSBGaWVsZFR5cGUuSW50ZWdlcjpcbiAgICBjYXNlIEZpZWxkVHlwZS5Eb3VibGU6XG4gICAgICBsYWJlbFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHsgXG4gICAgaWQ6IG5hbWUsIFxuICAgIGxhYmVsOiBgJHtsYWJlbH06ICR7bGFiZWxWYWx1ZX1gIFxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlICRyZWYgcmVmZXJlbmNlcyBpbiBKU09OIG9iamVjdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVSZWZzID0gKHBheWxvYWQ6IGFueSk6IGFueSA9PiB7XG4gIGNvbnN0IGdldERhdGFGcm9tUmVmID0gKHJlZjogc3RyaW5nLCByb290T2JqOiBhbnkpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1wiKC4qPylcIlxcXS9nO1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGxldCBtYXRjaDtcblxuICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHJlZikpICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQucHVzaChtYXRjaFsxXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgcm9vdE9iaik7XG4gIH07XG5cbiAgY29uc3QgcmVzb2x2ZSA9IChvYmo6IGFueSwgcm9vdE9iajogYW55KTogdm9pZCA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgb2JqLmZvckVhY2goKGl0ZW0pID0+IHJlc29sdmUoaXRlbSwgcm9vdE9iaikpO1xuICAgIH0gZWxzZSBpZiAob2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5ID09PSAnJHJlZicgJiYgb2JqW2tleV0pIHtcbiAgICAgICAgICBjb25zdCByZWZQYXRoID0gb2JqW2tleV07XG4gICAgICAgICAgY29uc3QgcmVmRGF0YSA9IGdldERhdGFGcm9tUmVmKHJlZlBhdGgsIHJvb3RPYmopO1xuICAgICAgICAgIGlmIChyZWZEYXRhKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG9iaiwgcmVmRGF0YSk7XG4gICAgICAgICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUob2JqW2tleV0sIHJvb3RPYmopO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvbmVkUGF5bG9hZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICByZXNvbHZlKGNsb25lZFBheWxvYWQsIGNsb25lZFBheWxvYWQpO1xuICByZXR1cm4gY2xvbmVkUGF5bG9hZDtcbn07XG5cbi8qKlxuICogRGVlcCBjbG9uZSBhbiBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZXBDbG9uZSA9IDxUPihvYmo6IFQpOiBUID0+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbiAgXG4gIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG9iai5nZXRUaW1lKCkpIGFzIGFueTtcbiAgfVxuICBcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKGl0ZW0gPT4gZGVlcENsb25lKGl0ZW0pKSBhcyBhbnk7XG4gIH1cbiAgXG4gIGNvbnN0IGNsb25lZCA9IHt9IGFzIFQ7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChrZXkgPT4ge1xuICAgIChjbG9uZWQgYXMgYW55KVtrZXldID0gZGVlcENsb25lKChvYmogYXMgYW55KVtrZXldKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gY2xvbmVkO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiB0d28gb2JqZWN0cyBhcmUgZGVlcGx5IGVxdWFsXG4gKi9cbmV4cG9ydCBjb25zdCBkZWVwRXF1YWwgPSAob2JqMTogYW55LCBvYmoyOiBhbnkpOiBib29sZWFuID0+IHtcbiAgaWYgKG9iajEgPT09IG9iajIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgaWYgKG9iajEgPT0gbnVsbCB8fCBvYmoyID09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqMSA9PT0gb2JqMjtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiBvYmoxICE9PSB0eXBlb2Ygb2JqMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgaWYgKHR5cGVvZiBvYmoxICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmoxID09PSBvYmoyO1xuICB9XG4gIFxuICBpZiAoQXJyYXkuaXNBcnJheShvYmoxKSAhPT0gQXJyYXkuaXNBcnJheShvYmoyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgY29uc3Qga2V5czEgPSBPYmplY3Qua2V5cyhvYmoxKTtcbiAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcbiAgXG4gIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgcmV0dXJuIGtleXMxLmV2ZXJ5KGtleSA9PiBkZWVwRXF1YWwob2JqMVtrZXldLCBvYmoyW2tleV0pKTtcbn07XG5cbi8qKlxuICogRGVib3VuY2UgZnVuY3Rpb24gZXhlY3V0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IDxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk+KFxuICBmdW5jOiBULFxuICB3YWl0OiBudW1iZXJcbik6ICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gdm9pZCkgPT4ge1xuICBsZXQgdGltZW91dDogYW55O1xuICBcbiAgcmV0dXJuICguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZ1bmMoLi4uYXJncyksIHdhaXQpO1xuICB9O1xufTtcblxuLyoqXG4gKiBUaHJvdHRsZSBmdW5jdGlvbiBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHRocm90dGxlID0gPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gIGZ1bmM6IFQsXG4gIGxpbWl0OiBudW1iZXJcbik6ICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gdm9pZCkgPT4ge1xuICBsZXQgaW5UaHJvdHRsZTogYm9vbGVhbjtcbiAgXG4gIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgIGlmICghaW5UaHJvdHRsZSkge1xuICAgICAgZnVuYyguLi5hcmdzKTtcbiAgICAgIGluVGhyb3R0bGUgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBpblRocm90dGxlID0gZmFsc2UsIGxpbWl0KTtcbiAgICB9XG4gIH07XG59O1xuIl19
|