@alauda-fe/crd-form 0.0.3 → 0.0.4

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.
@@ -19,7 +19,7 @@ export const isGroupField = (field) => field.type === 'object';
19
19
  export const isArrayField = (field) => field.type === 'array';
20
20
  export const isRemoteField = (field) => field.capabilities.some(c => c.startsWith(SpecCapability.remote));
21
21
  export const isArrayFieldTable = (field) => isArrayField(field) &&
22
- field.capabilities.some(c => c.startsWith('urn:alm:descriptor:widgets:common:arrayTable'));
22
+ field.capabilities.some(c => c.startsWith(SpecCapability.arrayTable));
23
23
  export const isCreatable = (field) => field.capabilities.some(c => c.startsWith(SpecCapability.creatable));
24
24
  export const isMultiple = (field) => field.capabilities.some(c => c.startsWith(SpecCapability.multiple));
25
25
  export const isAllowCreate = (field) => field.capabilities.some(c => c.startsWith(SpecCapability.allowCreate));
@@ -193,4 +193,4 @@ export function getPathFromTagPath(pathWithTag) {
193
193
  }
194
194
  // 获取path下所有的filed,例如spec.a 能匹配到 spec.a.a1 spec.a.a2
195
195
  export const getFieldsByPath = (path, fields) => fields.filter(field => getOperandPath(field).startsWith(path));
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmQtZm9ybS9zcmMvbGliL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEUsT0FBTyxFQUlMLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxVQUFVLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQ2hELEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzVCLEdBQW1CLEVBQ25CLFNBQXFDLEVBQ3JDLEVBQUU7SUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtJQUNwRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLEdBQUcs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QUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDdEIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQW1CO0lBQ2hELE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzNDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUNyQyxDQUFDO0lBQ0YsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxXQUFtQjtJQUNwRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFZLEVBQUUsTUFBc0IsRUFBRSxFQUFFLENBQ3RFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgaW5jbHVkZXMsIG1hcCwgcmVkdWNlLCBzb21lIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgT3BlcmFuZEFycmF5RmllbGRHcm91cCxcbiAgT3BlcmFuZEZpZWxkLFxuICBPcGVyYW5kRmllbGRHcm91cCxcbiAgU3BlY0NhcGFiaWxpdHksXG4gIFZhbGlkYXRpb25zLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBpc1JlcXVpcmVkID0gKGZpZWxkOiBPcGVyYW5kRmllbGQpID0+XG4gIGZpZWxkPy5yZXF1aXJlZCB8fFxuICBPYmplY3Qua2V5cyhmaWVsZD8udmFsaWRhdGlvbnMgfHwge30pPy5pbmNsdWRlcyhWYWxpZGF0aW9ucy5yZXF1aXJlZCk7XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJNYXBCeUtleSA9IDxUPihcbiAgbWFwOiBNYXA8c3RyaW5nLCBUPixcbiAgcHJlZGljYXRlOiAoaW5wdXQ6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICBjb25zdCBtID0gbmV3IE1hcCgpO1xuICBtYXAuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgIGlmIChwcmVkaWNhdGUoaykpIHtcbiAgICAgIG0uc2V0KGssIHYpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1hdGNoQXJyYXlJbmRleCA9IChhcnJQYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IGFyclBhdGgubWF0Y2goLyheLiopXFxbKFxcZCspXSQvKTtcbiAgcmV0dXJuICtnZXQobWF0Y2hlZCwgJ1syXScsIDApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzR3JvdXBGaWVsZCA9IChmaWVsZDogT3BlcmFuZEZpZWxkKTogZmllbGQgaXMgT3BlcmFuZEZpZWxkR3JvdXAgPT5cbiAgZmllbGQudHlwZSA9PT0gJ29iamVjdCc7XG5cbmV4cG9ydCBjb25zdCBpc0FycmF5RmllbGQgPSAoXG4gIGZpZWxkOiBPcGVyYW5kRmllbGQsXG4pOiBmaWVsZCBpcyBPcGVyYW5kQXJyYXlGaWVsZEdyb3VwID0+IGZpZWxkLnR5cGUgPT09ICdhcnJheSc7XG5cbmV4cG9ydCBjb25zdCBpc1JlbW90ZUZpZWxkID0gKFxuICBmaWVsZDogT3BlcmFuZEZpZWxkLFxuKTogZmllbGQgaXMgT3BlcmFuZEFycmF5RmllbGRHcm91cCA9PlxuICBmaWVsZC5jYXBhYmlsaXRpZXMuc29tZShjID0+IGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5yZW1vdGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzQXJyYXlGaWVsZFRhYmxlID0gKFxuICBmaWVsZDogT3BlcmFuZEZpZWxkLFxuKTogZmllbGQgaXMgT3BlcmFuZEFycmF5RmllbGRHcm91cCA9PlxuICBpc0FycmF5RmllbGQoZmllbGQpICYmXG4gIGZpZWxkLmNhcGFiaWxpdGllcy5zb21lKGMgPT5cbiAgICBjLnN0YXJ0c1dpdGgoJ3VybjphbG06ZGVzY3JpcHRvcjp3aWRnZXRzOmNvbW1vbjphcnJheVRhYmxlJyksXG4gICk7XG5cbmV4cG9ydCBjb25zdCBpc0NyZWF0YWJsZSA9IChmaWVsZDogT3BlcmFuZEZpZWxkKSA9PlxuICBmaWVsZC5jYXBhYmlsaXRpZXMuc29tZShjID0+IGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5jcmVhdGFibGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzTXVsdGlwbGUgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkubXVsdGlwbGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzQWxsb3dDcmVhdGUgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuYWxsb3dDcmVhdGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzQ2xlYXJhYmxlID0gKGZpZWxkOiBPcGVyYW5kRmllbGQpID0+XG4gIGZpZWxkLmNhcGFiaWxpdGllcy5zb21lKGMgPT4gYy5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LmNsZWFyYWJsZSkpO1xuXG5leHBvcnQgY29uc3QgaXNGb2xkZWQgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZm9sZGVkKSk7XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5QXJyYXkgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZW1wdHlBcnJheSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzRGVzY3JpcHRvcihcbiAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbiAgcHJlZml4OiBzdHJpbmcsXG4gIHN1ZmZpeDogc3RyaW5nID0gbnVsbCxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc3VmZml4XG4gICAgPyBpbmNsdWRlcyhmaWVsZC5jYXBhYmlsaXRpZXMsIGAke3ByZWZpeH0ke3N1ZmZpeH1gKVxuICAgIDogc29tZShmaWVsZC5jYXBhYmlsaXRpZXMsIGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKHByZWZpeCkpO1xufVxuXG4vKlxuICogTWF0Y2hlcyBhIHBhdGggdGhhdCBjb250YWlucyBhbiBhcnJheSBpbmRleC4gVXNlIFN0aW5nLm1hdGNoIGFnYWluc3QgYW4gT3BlcmFuZEZpZWxkICdwYXRoJ1xuICogcHJvcGVydHkgdG8gZGV0ZXJtaW5lIGlmIGl0IGNvbnRhaW5zIGFuIGFycmF5IGluZGV4LiBJdCB3aWxsIHBhcnNlIHRoZSBwYXRoIGludG8gdGhyZWUgcGFydHMsXG4gKiBbbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgaW5kZXgsIHBhdGhBZnRlckluZGV4XS4gRm9yIGV4YW1wbGU6XG4gKlxuICogICBjb25zdCBbbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgaW5kZXgsIHBhdGhBZnRlckluZGV4XSA9XG4gKiAgICAgJ3BhdGguYmVmb3JlWzBdLnBhdGguYWZ0ZXInLm1hdGNoKEFSUkFZX0lOREVYX1BBVFRFUk4pO1xuICpcbiAqICAgY29uc29sZS5sb2cobWF0Y2gpO1xuICogICA+ICdwYXRoLmJlZm9yZVswXS5wYXRoLmFmdGVyJ1xuICpcbiAqICAgY29uc29sZS5sb2cocGF0aEJlZm9yZUluZGV4KTtcbiAqICAgPiAncGF0aC5iZWZvcmUnXG4gKlxuICogICBjb25zb2xlLmxvZyhpbmRleClcbiAqICAgPiAnMCdcbiAqXG4gKiAgIGNvbnNvbGUubG9nKHBhdGhBZnRlckluZGV4KVxuICogICA+ICdwYXRoLmFmdGVyJ1xuICpcbiAqL1xuXG5jb25zdCBBUlJBWV9JTkRFWF9QQVRURVJOID0gL14oLiopXFxbKFxcZCspXVxcLj8oLiopJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFycmF5UGF0aChwYXRoOiBzdHJpbmcpOiB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBtYXRjaD86IHN0cmluZztcbiAgcGF0aEJlZm9yZUluZGV4Pzogc3RyaW5nO1xuICBwYXRoQWZ0ZXJJbmRleD86IHN0cmluZztcbn0ge1xuICBjb25zdCBbbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgaW5kZXgsIHBhdGhBZnRlckluZGV4XSA9XG4gICAgQVJSQVlfSU5ERVhfUEFUVEVSTi5leGVjKHBhdGgpIHx8IFtdO1xuICByZXR1cm4gbWF0Y2hcbiAgICA/IHsgaW5kZXg6IHBhcnNlSW50KGluZGV4LCAxMCksIG1hdGNoLCBwYXRoQmVmb3JlSW5kZXgsIHBhdGhBZnRlckluZGV4IH1cbiAgICA6IHsgbWF0Y2ggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5R3JvdXBOYW1lKGZpZWxkOiBPcGVyYW5kRmllbGQpIHtcbiAgaWYgKGhhc0Rlc2NyaXB0b3IoZmllbGQsIFNwZWNDYXBhYmlsaXR5LmFycmF5RmllbGRHcm91cCkpIHtcbiAgICByZXR1cm4gZmllbGQuY2FwYWJpbGl0aWVzXG4gICAgICAuZmluZChjYXBhYmlsaXR5ID0+IGNhcGFiaWxpdHkuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5hcnJheUZpZWxkR3JvdXApKVxuICAgICAgLnNsaWNlKFNwZWNDYXBhYmlsaXR5LmFycmF5RmllbGRHcm91cC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdyb3VwTmFtZShmaWVsZDogT3BlcmFuZEZpZWxkKSB7XG4gIGlmIChoYXNEZXNjcmlwdG9yKGZpZWxkLCBTcGVjQ2FwYWJpbGl0eS5maWVsZEdyb3VwKSkge1xuICAgIHJldHVybiBmaWVsZC5jYXBhYmlsaXRpZXNcbiAgICAgIC5maW5kKGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXApKVxuICAgICAgLnNsaWNlKFNwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXAubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiDpgJLlvZLkv67lpI3moJHlvaLnu5PmnoTkuK0g5pWw57uE57G75Z6L55qE57Si5byVXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtPcGVyYW5kRmllbGR9IGZpZWxkXG4gKiBAcGFyYW0ge3N0cmluZ30gZnJvbVBhdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b1BhdGhcbiAqIEByZXR1cm5zXG4gKlxuICovXG5leHBvcnQgY29uc3QgcmVwYWlyRmllbGRDaGlsZFBhdGhCeUNvcnJlY3RJbmRleCA9IChcbiAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbiAgZnJvbVBhdGg6IHN0cmluZyxcbiAgdG9QYXRoOiBzdHJpbmcsXG4pID0+IHtcbiAgY29uc3QgdGFyZ2V0RmllbGQgPSBjbG9uZURlZXAoZmllbGQpO1xuICBpZiAoaXNHcm91cEZpZWxkKHRhcmdldEZpZWxkKSkge1xuICAgIHRhcmdldEZpZWxkLmZpZWxkTGlzdCA9IG1hcCh0YXJnZXRGaWVsZC5maWVsZExpc3QsIGYgPT4gKHtcbiAgICAgIC4uLmYsXG4gICAgICBwYXRoOiBmLnBhdGgucmVwbGFjZShmcm9tUGF0aCwgdG9QYXRoKSxcbiAgICB9KSk7XG4gIH0gZWxzZSBpZiAoaXNBcnJheUZpZWxkKHRhcmdldEZpZWxkKSkge1xuICAgIHRhcmdldEZpZWxkLmZpZWxkTGlzdHMgPSByZWR1Y2UoXG4gICAgICB0YXJnZXRGaWVsZC5maWVsZExpc3RzLFxuICAgICAgKHQsIGMpID0+IFtcbiAgICAgICAgLi4udCxcbiAgICAgICAgbWFwKGMsIGYgPT4gcmVwYWlyRmllbGRDaGlsZFBhdGhCeUNvcnJlY3RJbmRleChmLCBmcm9tUGF0aCwgdG9QYXRoKSksXG4gICAgICBdLFxuICAgICAgW10sXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnRhcmdldEZpZWxkLFxuICAgIHBhdGg6IHRhcmdldEZpZWxkLnBhdGgucmVwbGFjZShmcm9tUGF0aCwgdG9QYXRoKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWxhdGVkRmllbGRzID0gKG5vcm1hbEZpZWxkczogT3BlcmFuZEZpZWxkW10pID0+XG4gIG1hcChub3JtYWxGaWVsZHMsIGZpZWxkID0+IHtcbiAgICBpZiAoZ2V0QXJyYXlHcm91cE5hbWUoZmllbGQpKSB7XG4gICAgICBjb25zdCB7IHBhdGhCZWZvcmVJbmRleCwgaW5kZXggfSA9IHBhcnNlQXJyYXlQYXRoKGZpZWxkLnBhdGgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIHBhcmVudDogcGF0aEJlZm9yZUluZGV4LFxuICAgICAgICBpblBhcmVudEluZGV4OiBpbmRleCxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChnZXRHcm91cE5hbWUoZmllbGQpKSB7XG4gICAgICBjb25zdCBncm91cE5hbWVGcm9tRGVmaW5pdGlvbiA9IGBzcGVjLiR7Z2V0R3JvdXBOYW1lKGZpZWxkKX1gO1xuICAgICAgY29uc3QgcGFyZW50ID0gZmllbGQucGF0aC5zbGljZSgwLCBncm91cE5hbWVGcm9tRGVmaW5pdGlvbi5sZW5ndGgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIHBhcmVudCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmaWVsZDtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBnZXRUcmVlRmllbGRzID0gKFxuICByb290RmllbGRzOiBPcGVyYW5kRmllbGRbXSxcbiAgYmFzaWNGaWVsZHM6IE9wZXJhbmRGaWVsZFtdLFxuKSA9PiB7XG4gIGlmIChiYXNpY0ZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHJvb3RGaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkKSA9PiB7XG4gICAgICBmaWVsZC5fZGlydHkgPSB0cnVlO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBiYXNpY0ZpZWxkcy5maWx0ZXIoZiA9PiBmLnBhcmVudCA9PT0gZmllbGQucGF0aCk7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGMgPT4gKGMuX2RpcnR5ID0gdHJ1ZSkpO1xuICAgICAgaWYgKGlzQXJyYXlGaWVsZChmaWVsZCkpIHtcbiAgICAgICAgZmllbGQuZmllbGRMaXN0cyA9IGNoaWxkcmVuXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgYWNjW2NoaWxkLmluUGFyZW50SW5kZXhdID0gW1xuICAgICAgICAgICAgICAuLi4oYWNjW2NoaWxkLmluUGFyZW50SW5kZXhdIHx8IFtdKSxcbiAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAubWFwKG0gPT5cbiAgICAgICAgICAgIGdldFRyZWVGaWVsZHMoXG4gICAgICAgICAgICAgIG0sXG4gICAgICAgICAgICAgIGJhc2ljRmllbGRzLmZpbHRlcihmID0+ICFmLl9kaXJ0eSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGlzR3JvdXBGaWVsZChmaWVsZCkpIHtcbiAgICAgICAgZmllbGQuZmllbGRMaXN0ID0gZ2V0VHJlZUZpZWxkcyhcbiAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICBiYXNpY0ZpZWxkcy5maWx0ZXIoZiA9PiAhZi5fZGlydHkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5hY2MsIGZpZWxkXTtcbiAgICB9LCBbXSk7XG4gIH1cbiAgcmV0dXJuIHJvb3RGaWVsZHMubWFwKGYgPT4ge1xuICAgIGYuX2RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gZjtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF0Y2hlZENhcGFiaWxpdHlWYWx1ZSA9IChcbiAgY2FwYWJpbGl0aWVzOiBTcGVjQ2FwYWJpbGl0eVtdLFxuICBkZXNjcmlwdG9yOiBzdHJpbmcsXG4pID0+XG4gIGNhcGFiaWxpdGllc1xuICAgIC5maW5kKGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKGRlc2NyaXB0b3IpKVxuICAgID8uc2xpY2UoZGVzY3JpcHRvci5sZW5ndGgpIHx8ICcnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXZhbEluQ29udGV4dChzdHJpbmdFeHByZXNzaW9uOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICAvLyByZXBsYWNlIGV2YWwsIHNraXAgZXNsaW50ICYgc29uYXIgc2FmZSBjaGVja1xuICBmdW5jdGlvbiBldmlsKGZuOiBzdHJpbmcpIHtcbiAgICBjb25zdCBGbiA9IEZ1bmN0aW9uO1xuICAgIHJldHVybiBuZXcgRm4oYHJldHVybiAke2ZufWApO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGV2aWwoc3RyaW5nRXhwcmVzc2lvbikuY2FsbChjb250ZXh0KTtcbiAgfSBjYXRjaCB7XG4gICAgY29uc29sZS5lcnJvcignZXhwcmVzc2lvbiBpcyBpbnZhbGlkOicsIHN0cmluZ0V4cHJlc3Npb24pO1xuICAgIHJldHVybiBzdHJpbmdFeHByZXNzaW9uO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuKHZhbDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWwgPT09ICd0cnVlJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZU51bWJlcih2YWw6IGFueSwgZmFsbGJhY2tWYWx1ZSA9IDApOiBudW1iZXIge1xuICByZXR1cm4gX2lzTnVtYmVyVmFsdWUodmFsKSA/IE51bWJlcih2YWwpIDogZmFsbGJhY2tWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9pc051bWJlclZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gcGFyc2VGbG9hdCh2YWx1ZSkgaGFuZGxlcyBtb3N0IG9mIHRoZSBjYXNlcyB3ZSdyZSBpbnRlcmVzdGVkIGluIChpdCB0cmVhdHMgbnVsbCwgZW1wdHkgc3RyaW5nLFxuICAvLyBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMgYXMgTmFOLCB3aGVyZSBOdW1iZXIganVzdCB1c2VzIDApIGJ1dCBpdCBjb25zaWRlcnMgdGhlIHN0cmluZ1xuICAvLyAnMTIzaGVsbG8nIHRvIGJlIGEgdmFsaWQgbnVtYmVyLiBUaGVyZWZvcmUgd2UgYWxzbyBjaGVjayBpZiBOdW1iZXIodmFsdWUpIGlzIE5hTi5cbiAgcmV0dXJuIChcbiAgICAhaXNOYU4odHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBwYXJzZUZsb2F0KHZhbHVlKSkgJiZcbiAgICAhaXNOYU4oTnVtYmVyKHZhbHVlKSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhbmRQYXRoKGZpZWxkOiBPcGVyYW5kRmllbGQpIHtcbiAgY29uc3QgaWRGaWVsZCA9IGZpZWxkPy5jYXBhYmlsaXRpZXMuZmluZChjID0+XG4gICAgYy5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LnBhdGhUYWcpLFxuICApO1xuICBpZiAoaWRGaWVsZCkge1xuICAgIHJldHVybiBgJHtmaWVsZC5wYXRofUAke2lkRmllbGQuc2xpY2UoU3BlY0NhcGFiaWxpdHkucGF0aFRhZy5sZW5ndGgpfWA7XG4gIH1cbiAgcmV0dXJuIGZpZWxkLnBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoRnJvbVRhZ1BhdGgocGF0aFdpdGhUYWc6IHN0cmluZykge1xuICByZXR1cm4gcGF0aFdpdGhUYWcuc3BsaXQoJ0AnKVswXTtcbn1cblxuLy8g6I635Y+WcGF0aOS4i+aJgOacieeahGZpbGVk77yM5L6L5aaCc3BlYy5hIOiDveWMuemFjeWIsCBzcGVjLmEuYTEgc3BlYy5hLmEyXG5leHBvcnQgY29uc3QgZ2V0RmllbGRzQnlQYXRoID0gKHBhdGg6IHN0cmluZywgZmllbGRzOiBPcGVyYW5kRmllbGRbXSkgPT5cbiAgZmllbGRzLmZpbHRlcihmaWVsZCA9PiBnZXRPcGVyYW5kUGF0aChmaWVsZCkuc3RhcnRzV2l0aChwYXRoKSk7XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmQtZm9ybS9zcmMvbGliL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEUsT0FBTyxFQUlMLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxVQUFVLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQ2hELEtBQUssRUFBRSxRQUFRO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzVCLEdBQW1CLEVBQ25CLFNBQXFDLEVBQ3JDLEVBQUU7SUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtJQUNwRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLEdBQUcs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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFtQjtJQUNoRCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUMzQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FDckMsQ0FBQztJQUNGLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsV0FBbUI7SUFDcEQsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQXNCLEVBQUUsRUFBRSxDQUN0RSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGluY2x1ZGVzLCBtYXAsIHJlZHVjZSwgc29tZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7XG4gIE9wZXJhbmRBcnJheUZpZWxkR3JvdXAsXG4gIE9wZXJhbmRGaWVsZCxcbiAgT3BlcmFuZEZpZWxkR3JvdXAsXG4gIFNwZWNDYXBhYmlsaXR5LFxuICBWYWxpZGF0aW9ucyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXNSZXF1aXJlZCA9IChmaWVsZDogT3BlcmFuZEZpZWxkKSA9PlxuICBmaWVsZD8ucmVxdWlyZWQgfHxcbiAgT2JqZWN0LmtleXMoZmllbGQ/LnZhbGlkYXRpb25zIHx8IHt9KT8uaW5jbHVkZXMoVmFsaWRhdGlvbnMucmVxdWlyZWQpO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyTWFwQnlLZXkgPSA8VD4oXG4gIG1hcDogTWFwPHN0cmluZywgVD4sXG4gIHByZWRpY2F0ZTogKGlucHV0OiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pID0+IHtcbiAgY29uc3QgbSA9IG5ldyBNYXAoKTtcbiAgbWFwLmZvckVhY2goKHYsIGspID0+IHtcbiAgICBpZiAocHJlZGljYXRlKGspKSB7XG4gICAgICBtLnNldChrLCB2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXRjaEFycmF5SW5kZXggPSAoYXJyUGF0aDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG1hdGNoZWQgPSBhcnJQYXRoLm1hdGNoKC8oXi4qKVxcWyhcXGQrKV0kLyk7XG4gIHJldHVybiArZ2V0KG1hdGNoZWQsICdbMl0nLCAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0dyb3VwRmllbGQgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCk6IGZpZWxkIGlzIE9wZXJhbmRGaWVsZEdyb3VwID0+XG4gIGZpZWxkLnR5cGUgPT09ICdvYmplY3QnO1xuXG5leHBvcnQgY29uc3QgaXNBcnJheUZpZWxkID0gKFxuICBmaWVsZDogT3BlcmFuZEZpZWxkLFxuKTogZmllbGQgaXMgT3BlcmFuZEFycmF5RmllbGRHcm91cCA9PiBmaWVsZC50eXBlID09PSAnYXJyYXknO1xuXG5leHBvcnQgY29uc3QgaXNSZW1vdGVGaWVsZCA9IChcbiAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbik6IGZpZWxkIGlzIE9wZXJhbmRBcnJheUZpZWxkR3JvdXAgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkucmVtb3RlKSk7XG5cbmV4cG9ydCBjb25zdCBpc0FycmF5RmllbGRUYWJsZSA9IChcbiAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbik6IGZpZWxkIGlzIE9wZXJhbmRBcnJheUZpZWxkR3JvdXAgPT5cbiAgaXNBcnJheUZpZWxkKGZpZWxkKSAmJlxuICBmaWVsZC5jYXBhYmlsaXRpZXMuc29tZShjID0+IGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5hcnJheVRhYmxlKSk7XG5cbmV4cG9ydCBjb25zdCBpc0NyZWF0YWJsZSA9IChmaWVsZDogT3BlcmFuZEZpZWxkKSA9PlxuICBmaWVsZC5jYXBhYmlsaXRpZXMuc29tZShjID0+IGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5jcmVhdGFibGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzTXVsdGlwbGUgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkubXVsdGlwbGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzQWxsb3dDcmVhdGUgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuYWxsb3dDcmVhdGUpKTtcblxuZXhwb3J0IGNvbnN0IGlzQ2xlYXJhYmxlID0gKGZpZWxkOiBPcGVyYW5kRmllbGQpID0+XG4gIGZpZWxkLmNhcGFiaWxpdGllcy5zb21lKGMgPT4gYy5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LmNsZWFyYWJsZSkpO1xuXG5leHBvcnQgY29uc3QgaXNGb2xkZWQgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZm9sZGVkKSk7XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5QXJyYXkgPSAoZmllbGQ6IE9wZXJhbmRGaWVsZCkgPT5cbiAgZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZW1wdHlBcnJheSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzRGVzY3JpcHRvcihcbiAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbiAgcHJlZml4OiBzdHJpbmcsXG4gIHN1ZmZpeDogc3RyaW5nID0gbnVsbCxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc3VmZml4XG4gICAgPyBpbmNsdWRlcyhmaWVsZC5jYXBhYmlsaXRpZXMsIGAke3ByZWZpeH0ke3N1ZmZpeH1gKVxuICAgIDogc29tZShmaWVsZC5jYXBhYmlsaXRpZXMsIGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKHByZWZpeCkpO1xufVxuXG4vKlxuICogTWF0Y2hlcyBhIHBhdGggdGhhdCBjb250YWlucyBhbiBhcnJheSBpbmRleC4gVXNlIFN0aW5nLm1hdGNoIGFnYWluc3QgYW4gT3BlcmFuZEZpZWxkICdwYXRoJ1xuICogcHJvcGVydHkgdG8gZGV0ZXJtaW5lIGlmIGl0IGNvbnRhaW5zIGFuIGFycmF5IGluZGV4LiBJdCB3aWxsIHBhcnNlIHRoZSBwYXRoIGludG8gdGhyZWUgcGFydHMsXG4gKiBbbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgaW5kZXgsIHBhdGhBZnRlckluZGV4XS4gRm9yIGV4YW1wbGU6XG4gKlxuICogICBjb25zdCBbbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgaW5kZXgsIHBhdGhBZnRlckluZGV4XSA9XG4gKiAgICAgJ3BhdGguYmVmb3JlWzBdLnBhdGguYWZ0ZXInLm1hdGNoKEFSUkFZX0lOREVYX1BBVFRFUk4pO1xuICpcbiAqICAgY29uc29sZS5sb2cobWF0Y2gpO1xuICogICA+ICdwYXRoLmJlZm9yZVswXS5wYXRoLmFmdGVyJ1xuICpcbiAqICAgY29uc29sZS5sb2cocGF0aEJlZm9yZUluZGV4KTtcbiAqICAgPiAncGF0aC5iZWZvcmUnXG4gKlxuICogICBjb25zb2xlLmxvZyhpbmRleClcbiAqICAgPiAnMCdcbiAqXG4gKiAgIGNvbnNvbGUubG9nKHBhdGhBZnRlckluZGV4KVxuICogICA+ICdwYXRoLmFmdGVyJ1xuICpcbiAqL1xuXG5jb25zdCBBUlJBWV9JTkRFWF9QQVRURVJOID0gL14oLiopXFxbKFxcZCspXVxcLj8oLiopJC87XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFycmF5UGF0aChwYXRoOiBzdHJpbmcpOiB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBtYXRjaD86IHN0cmluZztcbiAgcGF0aEJlZm9yZUluZGV4Pzogc3RyaW5nO1xuICBwYXRoQWZ0ZXJJbmRleD86IHN0cmluZztcbn0ge1xuICBjb25zdCBbbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgaW5kZXgsIHBhdGhBZnRlckluZGV4XSA9XG4gICAgQVJSQVlfSU5ERVhfUEFUVEVSTi5leGVjKHBhdGgpIHx8IFtdO1xuICByZXR1cm4gbWF0Y2hcbiAgICA/IHsgaW5kZXg6IHBhcnNlSW50KGluZGV4LCAxMCksIG1hdGNoLCBwYXRoQmVmb3JlSW5kZXgsIHBhdGhBZnRlckluZGV4IH1cbiAgICA6IHsgbWF0Y2ggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFycmF5R3JvdXBOYW1lKGZpZWxkOiBPcGVyYW5kRmllbGQpIHtcbiAgaWYgKGhhc0Rlc2NyaXB0b3IoZmllbGQsIFNwZWNDYXBhYmlsaXR5LmFycmF5RmllbGRHcm91cCkpIHtcbiAgICByZXR1cm4gZmllbGQuY2FwYWJpbGl0aWVzXG4gICAgICAuZmluZChjYXBhYmlsaXR5ID0+IGNhcGFiaWxpdHkuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5hcnJheUZpZWxkR3JvdXApKVxuICAgICAgLnNsaWNlKFNwZWNDYXBhYmlsaXR5LmFycmF5RmllbGRHcm91cC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdyb3VwTmFtZShmaWVsZDogT3BlcmFuZEZpZWxkKSB7XG4gIGlmIChoYXNEZXNjcmlwdG9yKGZpZWxkLCBTcGVjQ2FwYWJpbGl0eS5maWVsZEdyb3VwKSkge1xuICAgIHJldHVybiBmaWVsZC5jYXBhYmlsaXRpZXNcbiAgICAgIC5maW5kKGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXApKVxuICAgICAgLnNsaWNlKFNwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXAubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiDpgJLlvZLkv67lpI3moJHlvaLnu5PmnoTkuK0g5pWw57uE57G75Z6L55qE57Si5byVXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtPcGVyYW5kRmllbGR9IGZpZWxkXG4gKiBAcGFyYW0ge3N0cmluZ30gZnJvbVBhdGhcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b1BhdGhcbiAqIEByZXR1cm5zXG4gKlxuICovXG5leHBvcnQgY29uc3QgcmVwYWlyRmllbGRDaGlsZFBhdGhCeUNvcnJlY3RJbmRleCA9IChcbiAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbiAgZnJvbVBhdGg6IHN0cmluZyxcbiAgdG9QYXRoOiBzdHJpbmcsXG4pID0+IHtcbiAgY29uc3QgdGFyZ2V0RmllbGQgPSBjbG9uZURlZXAoZmllbGQpO1xuICBpZiAoaXNHcm91cEZpZWxkKHRhcmdldEZpZWxkKSkge1xuICAgIHRhcmdldEZpZWxkLmZpZWxkTGlzdCA9IG1hcCh0YXJnZXRGaWVsZC5maWVsZExpc3QsIGYgPT4gKHtcbiAgICAgIC4uLmYsXG4gICAgICBwYXRoOiBmLnBhdGgucmVwbGFjZShmcm9tUGF0aCwgdG9QYXRoKSxcbiAgICB9KSk7XG4gIH0gZWxzZSBpZiAoaXNBcnJheUZpZWxkKHRhcmdldEZpZWxkKSkge1xuICAgIHRhcmdldEZpZWxkLmZpZWxkTGlzdHMgPSByZWR1Y2UoXG4gICAgICB0YXJnZXRGaWVsZC5maWVsZExpc3RzLFxuICAgICAgKHQsIGMpID0+IFtcbiAgICAgICAgLi4udCxcbiAgICAgICAgbWFwKGMsIGYgPT4gcmVwYWlyRmllbGRDaGlsZFBhdGhCeUNvcnJlY3RJbmRleChmLCBmcm9tUGF0aCwgdG9QYXRoKSksXG4gICAgICBdLFxuICAgICAgW10sXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnRhcmdldEZpZWxkLFxuICAgIHBhdGg6IHRhcmdldEZpZWxkLnBhdGgucmVwbGFjZShmcm9tUGF0aCwgdG9QYXRoKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWxhdGVkRmllbGRzID0gKG5vcm1hbEZpZWxkczogT3BlcmFuZEZpZWxkW10pID0+XG4gIG1hcChub3JtYWxGaWVsZHMsIGZpZWxkID0+IHtcbiAgICBpZiAoZ2V0QXJyYXlHcm91cE5hbWUoZmllbGQpKSB7XG4gICAgICBjb25zdCB7IHBhdGhCZWZvcmVJbmRleCwgaW5kZXggfSA9IHBhcnNlQXJyYXlQYXRoKGZpZWxkLnBhdGgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIHBhcmVudDogcGF0aEJlZm9yZUluZGV4LFxuICAgICAgICBpblBhcmVudEluZGV4OiBpbmRleCxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChnZXRHcm91cE5hbWUoZmllbGQpKSB7XG4gICAgICBjb25zdCBncm91cE5hbWVGcm9tRGVmaW5pdGlvbiA9IGBzcGVjLiR7Z2V0R3JvdXBOYW1lKGZpZWxkKX1gO1xuICAgICAgY29uc3QgcGFyZW50ID0gZmllbGQucGF0aC5zbGljZSgwLCBncm91cE5hbWVGcm9tRGVmaW5pdGlvbi5sZW5ndGgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIHBhcmVudCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmaWVsZDtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBnZXRUcmVlRmllbGRzID0gKFxuICByb290RmllbGRzOiBPcGVyYW5kRmllbGRbXSxcbiAgYmFzaWNGaWVsZHM6IE9wZXJhbmRGaWVsZFtdLFxuKSA9PiB7XG4gIGlmIChiYXNpY0ZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHJvb3RGaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkKSA9PiB7XG4gICAgICBmaWVsZC5fZGlydHkgPSB0cnVlO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBiYXNpY0ZpZWxkcy5maWx0ZXIoZiA9PiBmLnBhcmVudCA9PT0gZmllbGQucGF0aCk7XG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKGMgPT4gKGMuX2RpcnR5ID0gdHJ1ZSkpO1xuICAgICAgaWYgKGlzQXJyYXlGaWVsZChmaWVsZCkpIHtcbiAgICAgICAgZmllbGQuZmllbGRMaXN0cyA9IGNoaWxkcmVuXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgYWNjW2NoaWxkLmluUGFyZW50SW5kZXhdID0gW1xuICAgICAgICAgICAgICAuLi4oYWNjW2NoaWxkLmluUGFyZW50SW5kZXhdIHx8IFtdKSxcbiAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAubWFwKG0gPT5cbiAgICAgICAgICAgIGdldFRyZWVGaWVsZHMoXG4gICAgICAgICAgICAgIG0sXG4gICAgICAgICAgICAgIGJhc2ljRmllbGRzLmZpbHRlcihmID0+ICFmLl9kaXJ0eSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGlzR3JvdXBGaWVsZChmaWVsZCkpIHtcbiAgICAgICAgZmllbGQuZmllbGRMaXN0ID0gZ2V0VHJlZUZpZWxkcyhcbiAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICBiYXNpY0ZpZWxkcy5maWx0ZXIoZiA9PiAhZi5fZGlydHkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5hY2MsIGZpZWxkXTtcbiAgICB9LCBbXSk7XG4gIH1cbiAgcmV0dXJuIHJvb3RGaWVsZHMubWFwKGYgPT4ge1xuICAgIGYuX2RpcnR5ID0gdHJ1ZTtcbiAgICByZXR1cm4gZjtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF0Y2hlZENhcGFiaWxpdHlWYWx1ZSA9IChcbiAgY2FwYWJpbGl0aWVzOiBTcGVjQ2FwYWJpbGl0eVtdLFxuICBkZXNjcmlwdG9yOiBzdHJpbmcsXG4pID0+XG4gIGNhcGFiaWxpdGllc1xuICAgIC5maW5kKGNhcGFiaWxpdHkgPT4gY2FwYWJpbGl0eS5zdGFydHNXaXRoKGRlc2NyaXB0b3IpKVxuICAgID8uc2xpY2UoZGVzY3JpcHRvci5sZW5ndGgpIHx8ICcnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXZhbEluQ29udGV4dChzdHJpbmdFeHByZXNzaW9uOiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICAvLyByZXBsYWNlIGV2YWwsIHNraXAgZXNsaW50ICYgc29uYXIgc2FmZSBjaGVja1xuICBmdW5jdGlvbiBldmlsKGZuOiBzdHJpbmcpIHtcbiAgICBjb25zdCBGbiA9IEZ1bmN0aW9uO1xuICAgIHJldHVybiBuZXcgRm4oYHJldHVybiAke2ZufWApO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGV2aWwoc3RyaW5nRXhwcmVzc2lvbikuY2FsbChjb250ZXh0KTtcbiAgfSBjYXRjaCB7XG4gICAgY29uc29sZS5lcnJvcignZXhwcmVzc2lvbiBpcyBpbnZhbGlkOicsIHN0cmluZ0V4cHJlc3Npb24pO1xuICAgIHJldHVybiBzdHJpbmdFeHByZXNzaW9uO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuKHZhbDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWwgPT09ICd0cnVlJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZU51bWJlcih2YWw6IGFueSwgZmFsbGJhY2tWYWx1ZSA9IDApOiBudW1iZXIge1xuICByZXR1cm4gX2lzTnVtYmVyVmFsdWUodmFsKSA/IE51bWJlcih2YWwpIDogZmFsbGJhY2tWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9pc051bWJlclZhbHVlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gcGFyc2VGbG9hdCh2YWx1ZSkgaGFuZGxlcyBtb3N0IG9mIHRoZSBjYXNlcyB3ZSdyZSBpbnRlcmVzdGVkIGluIChpdCB0cmVhdHMgbnVsbCwgZW1wdHkgc3RyaW5nLFxuICAvLyBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMgYXMgTmFOLCB3aGVyZSBOdW1iZXIganVzdCB1c2VzIDApIGJ1dCBpdCBjb25zaWRlcnMgdGhlIHN0cmluZ1xuICAvLyAnMTIzaGVsbG8nIHRvIGJlIGEgdmFsaWQgbnVtYmVyLiBUaGVyZWZvcmUgd2UgYWxzbyBjaGVjayBpZiBOdW1iZXIodmFsdWUpIGlzIE5hTi5cbiAgcmV0dXJuIChcbiAgICAhaXNOYU4odHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBwYXJzZUZsb2F0KHZhbHVlKSkgJiZcbiAgICAhaXNOYU4oTnVtYmVyKHZhbHVlKSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhbmRQYXRoKGZpZWxkOiBPcGVyYW5kRmllbGQpIHtcbiAgY29uc3QgaWRGaWVsZCA9IGZpZWxkPy5jYXBhYmlsaXRpZXMuZmluZChjID0+XG4gICAgYy5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LnBhdGhUYWcpLFxuICApO1xuICBpZiAoaWRGaWVsZCkge1xuICAgIHJldHVybiBgJHtmaWVsZC5wYXRofUAke2lkRmllbGQuc2xpY2UoU3BlY0NhcGFiaWxpdHkucGF0aFRhZy5sZW5ndGgpfWA7XG4gIH1cbiAgcmV0dXJuIGZpZWxkLnBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoRnJvbVRhZ1BhdGgocGF0aFdpdGhUYWc6IHN0cmluZykge1xuICByZXR1cm4gcGF0aFdpdGhUYWcuc3BsaXQoJ0AnKVswXTtcbn1cblxuLy8g6I635Y+WcGF0aOS4i+aJgOacieeahGZpbGVk77yM5L6L5aaCc3BlYy5hIOiDveWMuemFjeWIsCBzcGVjLmEuYTEgc3BlYy5hLmEyXG5leHBvcnQgY29uc3QgZ2V0RmllbGRzQnlQYXRoID0gKHBhdGg6IHN0cmluZywgZmllbGRzOiBPcGVyYW5kRmllbGRbXSkgPT5cbiAgZmllbGRzLmZpbHRlcihmaWVsZCA9PiBnZXRPcGVyYW5kUGF0aChmaWVsZCkuc3RhcnRzV2l0aChwYXRoKSk7XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { isEqual } from '@alauda-fe/common';
2
2
  import { find, flatMap, flatMapDepth, flatten, get, groupBy, isArray, map, parseInt, pick, reduce, sortBy, startCase, times, toPath, union, uniqWith, } from 'lodash-es';
3
3
  import { SpecCapability, SpecCapabilityUIPrefix, SpecCapabilityWidgetsPrefix, Validations, } from '../types';
4
- import { fieldShouldReveal, getBasicCapabilityType, getCapabilityDisabled, getCapabilityValidations, getDisplayByCapability, } from './capability';
4
+ import { fieldShouldReveal, getBasicCapabilityType, getCapabilityDisabled, getCapabilityValidations, } from './capability';
5
5
  import { DESCRIPTOR_DEFINITION_KEY, GROUP_PATTERN, MAX_DEPTH, SCHEMA_PATH, } from './constant';
6
6
  import { getRelatedFields, getTreeFields, hasDescriptor, parseArrayPath, } from './helper';
7
7
  export function getPropertyDepth(property, depth = 0) {
@@ -299,12 +299,9 @@ function sortGroupFields(fields, descriptors, descriptorFields) {
299
299
  return map(groupedFieldsByName, (fieldList, groupName) => ({
300
300
  groupName,
301
301
  displayName: startCase(groupName),
302
- groupDisplay: fieldList
303
- .map(field => getDisplayByCapability(field.capabilities, SpecCapability.fieldGroupName))
304
- .find(d => !!d),
305
302
  capabilities: descriptorFields.find(field => field.path === `spec.${groupName}`)
306
303
  ?.capabilities ?? [],
307
304
  fieldList,
308
305
  }));
309
306
  }
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3JkLWZvcm0vc3JjL2xpYi91dGlscy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsWUFBWSxFQUNaLE9BQU8sRUFDUCxHQUFHLEVBQ0gsT0FBTyxFQUNQLE9BQU8sRUFDUCxHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksRUFDSixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEdBQ1QsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUtMLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLFdBQVcsR0FDWixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHNCQUFzQixHQUN2QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixTQUFTLEVBQ1QsV0FBVyxHQUNaLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSxVQUFVLENBQUM7QUFTbEIsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixRQUErQixFQUMvQixLQUFLLEdBQUcsQ0FBQztJQUVULElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDOUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJ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UzthQUNwQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDWCxzQkFBc0IsQ0FDcEIsS0FBSyxDQUFDLFlBQVksRUFDbEIsY0FBYyxDQUFDLGNBQWMsQ0FDOUIsQ0FDRjthQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsWUFBWSxFQUNWLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUNoRSxFQUFFLFlBQVksSUFBSSxFQUFFO1FBQ3hCLFNBQVM7S0FDVixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGVuQVBJVjNTY2hlbWFPYmplY3QsIGlzRXF1YWwgfSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQge1xuICBmaW5kLFxuICBmbGF0TWFwLFxuICBmbGF0TWFwRGVwdGgsXG4gIGZsYXR0ZW4sXG4gIGdldCxcbiAgZ3JvdXBCeSxcbiAgaXNBcnJheSxcbiAgbWFwLFxuICBwYXJzZUludCxcbiAgcGljayxcbiAgcmVkdWNlLFxuICBzb3J0QnksXG4gIHN0YXJ0Q2FzZSxcbiAgdGltZXMsXG4gIHRvUGF0aCxcbiAgdW5pb24sXG4gIHVuaXFXaXRoLFxufSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQge1xuICBEZXNjcmlwdG9yLFxuICBGb3JtRGF0YVN0YXRlLFxuICBPcGVyYW5kRmllbGQsXG4gIE9wZXJhbmRGaWVsZFZhbGlkYXRpb24sXG4gIFNwZWNDYXBhYmlsaXR5LFxuICBTcGVjQ2FwYWJpbGl0eVVJUHJlZml4LFxuICBTcGVjQ2FwYWJpbGl0eVdpZGdldHNQcmVmaXgsXG4gIFZhbGlkYXRpb25zLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7XG4gIGZpZWxkU2hvdWxkUmV2ZWFsLFxuICBnZXRCYXNpY0NhcGFiaWxpdHlUeXBlLFxuICBnZXRDYXBhYmlsaXR5RGlzYWJsZWQsXG4gIGdldENhcGFiaWxpdHlWYWxpZGF0aW9ucyxcbiAgZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eSxcbn0gZnJvbSAnLi9jYXBhYmlsaXR5JztcbmltcG9ydCB7XG4gIERFU0NSSVBUT1JfREVGSU5JVElPTl9LRVksXG4gIEdST1VQX1BBVFRFUk4sXG4gIE1BWF9ERVBUSCxcbiAgU0NIRU1BX1BBVEgsXG59IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHtcbiAgZ2V0UmVsYXRlZEZpZWxkcyxcbiAgZ2V0VHJlZUZpZWxkcyxcbiAgaGFzRGVzY3JpcHRvcixcbiAgcGFyc2VBcnJheVBhdGgsXG59IGZyb20gJy4vaGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBGbGF0dGVuTmVzdGVkUHJvcGVydGllc0FjY3VtdWxhdG9yIHtcbiAgY3VycmVudENhcGFiaWxpdGllcz86IFNwZWNDYXBhYmlsaXR5W107XG4gIGN1cnJlbnRQYXRoPzogc3RyaW5nW107XG4gIGZpZWxkcz86IE9wZXJhbmRGaWVsZFtdO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5RGVwdGgoXG4gIHByb3BlcnR5OiBPcGVuQVBJVjNTY2hlbWFPYmplY3QsXG4gIGRlcHRoID0gMCxcbik6IG51bWJlciB7XG4gIGlmICghcHJvcGVydHkgfHwgIVsnb2JqZWN0JywgJ2FycmF5J10uaW5jbHVkZXMocHJvcGVydHkudHlwZSkpIHtcbiAgICByZXR1cm4gZGVwdGg7XG4gIH1cbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIDAsXG4gICAgLi4uT2JqZWN0LnZhbHVlcyhcbiAgICAgIHByb3BlcnR5LnByb3BlcnRpZXMgfHwgcHJvcGVydHkuaXRlbXM/LnByb3BlcnRpZXMgfHwge30sXG4gICAgKS5tYXAobmVzdGVkUHJvcGVydHkgPT4gZ2V0UHJvcGVydHlEZXB0aChuZXN0ZWRQcm9wZXJ0eSwgZGVwdGggKyAxKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZHNGcm9tRGVzY3JpcHRvcihcbiAge1xuICAgIHBhdGgsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgZGlzcGxheU5hbWUsXG4gICAgJ3gtZGVzY3JpcHRvcnMnOiBjYXBhYmlsaXRpZXMgPSBbXSxcbiAgfTogRGVzY3JpcHRvcixcbiAgZGF0YTogYW55LFxuICBvcGVuQXBpOiBPcGVuQVBJVjNTY2hlbWFPYmplY3QsXG4gIF9vcmlnaW5EZXNjcmlwdG9ycz86IERlc2NyaXB0b3JbXSxcbik6IE9wZXJhbmRGaWVsZFtdIHtcbiAgY29uc3QgeyBtYXRjaCwgcGF0aEJlZm9yZUluZGV4LCBwYXRoQWZ0ZXJJbmRleCB9ID0gcGFyc2VBcnJheVBhdGgocGF0aCk7XG4gIGNvbnN0IGZpbGVkQmFzaWNUeXBlID0gZ2V0QmFzaWNDYXBhYmlsaXR5VHlwZShjYXBhYmlsaXRpZXMpO1xuICBjb25zdCBkaXNhYmxlZCA9IGdldENhcGFiaWxpdHlEaXNhYmxlZChjYXBhYmlsaXRpZXMpO1xuICBjb25zdCB2YWxpZGF0aW9ucyA9IGdldENhcGFiaWxpdHlWYWxpZGF0aW9ucyhjYXBhYmlsaXRpZXMpO1xuICBpZiAobWF0Y2gpIHtcbiAgICBjb25zdCBuOiBudW1iZXIgPVxuICAgICAgZ2V0KGRhdGEsIHRvUGF0aChgc3BlYy4ke3BhdGhCZWZvcmVJbmRleH1gKSwgW10pLmxlbmd0aCB8fCAxO1xuICAgIGNvbnN0IHBhdGhBZnRlckluZGV4U3RyID0gYC4ke3BhdGhBZnRlckluZGV4fWA7XG4gICAgbGV0IGV4dHJhOiBEZXNjcmlwdG9yW10gPSBbXTtcbiAgICBpZiAoX29yaWdpbkRlc2NyaXB0b3JzKSB7XG4gICAgICBleHRyYSA9IGZsYXR0ZW4oXG4gICAgICAgIF9vcmlnaW5EZXNjcmlwdG9yc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICBkID0+IGQucGF0aC5zdGFydHNXaXRoKGAke3BhdGhCZWZvcmVJbmRleH1bMF1gKSAmJiBkLnBhdGggIT09IHBhdGgsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAoZCA9PlxuICAgICAgICAgICAgdGltZXMobiwgaW5kZXggPT4ge1xuICAgICAgICAgICAgICBjb25zdCBvUGF0aCA9IGQucGF0aC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIGAke3BhdGhCZWZvcmVJbmRleH1bMF1gLFxuICAgICAgICAgICAgICAgIGAke3BhdGhCZWZvcmVJbmRleH1bJHtpbmRleH1dYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgIHBhdGg6IG9QYXRoLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkuc2xpY2UoMSksXG4gICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYXR0ZW4oW1xuICAgICAgLi4udGltZXMobiwgaW5kZXggPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVBhdGggPSBgc3BlYy4ke3BhdGhCZWZvcmVJbmRleH1bJHtpbmRleH1dJHtcbiAgICAgICAgICBwYXRoQWZ0ZXJJbmRleCAmJiBwYXRoQWZ0ZXJJbmRleFN0clxuICAgICAgICB9YDtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBnZXRPcGVuQXBpUHJvcGVydHlCeVBhdGgoYHNwZWMuJHtwYXRofWAsIG9wZW5BcGkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGF0aDogcHJvcGVydHlQYXRoLFxuICAgICAgICAgIHZhbHVlOiBnZXQoZGF0YSwgcHJvcGVydHlQYXRoKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBkaXNwbGF5TmFtZSxcbiAgICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgICAgdHlwZTogZmlsZWRCYXNpY1R5cGUgfHwgcHJvcGVydHk/LnR5cGUsXG4gICAgICAgICAgcmVxdWlyZWQ6IG51bGwsXG4gICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgdmFsaWRhdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkYXRpb25zLFxuICAgICAgICAgICAgLi4uKHByb3BlcnR5Py5yZXF1aXJlZCAmJiB7IHJlcXVpcmVkOiB0cnVlIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIC4uLmV4dHJhLm1hcChlID0+IGdldEZpZWxkc0Zyb21EZXNjcmlwdG9yKGUsIGRhdGEsIG9wZW5BcGkpKSxcbiAgICBdKTtcbiAgfVxuICAvLyDpgJrov4cgZGVzY3JpcHRvciDmn6Xmib7ljp/lp4sgQ1JEIOiKgueCue+8jOaOqOWvvOexu+Wei+OAgXZhbGlkYXRpb24g562J5L+h5oGvXG4gIGNvbnN0IHByb3BlcnR5UGF0aCA9IGBzcGVjLiR7cGF0aH1gO1xuICBjb25zdCBwcm9wZXJ0eSA9IGdldE9wZW5BcGlQcm9wZXJ0eUJ5UGF0aChwcm9wZXJ0eVBhdGgsIG9wZW5BcGkpO1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhdGg6IHByb3BlcnR5UGF0aCxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZGlzcGxheU5hbWUsXG4gICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHZhbHVlOiBnZXQoZGF0YSwgcHJvcGVydHlQYXRoKSxcbiAgICAgIHR5cGU6IGZpbGVkQmFzaWNUeXBlIHx8IHByb3BlcnR5Py50eXBlLFxuICAgICAgcmVxdWlyZWQ6IG51bGwsXG4gICAgICB2YWxpZGF0aW9uczoge1xuICAgICAgICAuLi52YWxpZGF0aW9ucyxcbiAgICAgICAgLi4uKHByb3BlcnR5Py5yZXF1aXJlZCAmJiB7IHJlcXVpcmVkOiB0cnVlIH0pLFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3BlbkFwaVByb3BlcnR5QnlQYXRoKFxuICBkZXNjcmlwdG9yUGF0aDogc3RyaW5nLFxuICBvcGVuQXBpOiBPcGVuQVBJVjNTY2hlbWFPYmplY3QsXG4pIHtcbiAgY29uc3QgcGF0aHMgPSBkZXNjcmlwdG9yUGF0aC5zcGxpdCgnLicpO1xuICB0cnkge1xuICAgIHJldHVybiBwYXRocy5yZWR1Y2UoKGFjYywgcGF0aCkgPT4ge1xuICAgICAgYWNjID0gcGF0aC5pbmNsdWRlcygnWzBdJylcbiAgICAgICAgPyBhY2MuaXRlbXMucHJvcGVydGllc1twYXRoLnNwbGl0KCdbMF0nKVswXV1cbiAgICAgICAgOiBhY2MucHJvcGVydGllc1twYXRoXTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgb3BlbkFwaSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZHNGcm9tT3BlbkFwaVNjaGVtYShcbiAgb3BlbkFwaTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0LFxuICBkZXNjcmlwdG9yczogRGVzY3JpcHRvcltdLFxuICBkYXRhOiB1bmtub3duLFxuICBvcGVuQXBpU2NoZW1hUGF0aDogc3RyaW5nIHwgc3RyaW5nW10gPSBTQ0hFTUFfUEFUSCxcbiAgbWF4RGVwdGggPSBNQVhfREVQVEgsXG4pOiBPcGVyYW5kRmllbGRbXSB7XG4gIGNvbnN0IHBhdGggPSBpc0FycmF5KG9wZW5BcGlTY2hlbWFQYXRoKVxuICAgID8gb3BlbkFwaVNjaGVtYVBhdGhcbiAgICA6IG9wZW5BcGlTY2hlbWFQYXRoLnNwbGl0KCcuJykuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gZ2V0KG9wZW5BcGksIFsuLi5wYXRoLCAncHJvcGVydGllcyddLCB7fSk7XG4gIGNvbnN0IHJlcXVpcmVkID0gZ2V0KG9wZW5BcGksIFsuLi5wYXRoLCAncmVxdWlyZWQnXSwgW10pIGFzIHN0cmluZ1tdO1xuXG4gIHJldHVybiByZWR1Y2UoXG4gICAgcHJvcGVydGllcyxcbiAgICAoYWNjdW11bGF0b3IsIF9wcm9wZXJ0eSwgcHJvcGVydHlOYW1lKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IF9wcm9wZXJ0eSBhcyBPcGVuQVBJVjNTY2hlbWFPYmplY3Q7XG4gICAgICBpZiAoIXByb3BlcnR5LnR5cGUgfHwgZ2V0UHJvcGVydHlEZXB0aChwcm9wZXJ0eSkgPiBtYXhEZXB0aCkge1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmFjY3VtdWxhdG9yLFxuICAgICAgICAuLi5mbGF0dGVuTmVzdGVkUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUsIHByb3BlcnR5LCBkZXNjcmlwdG9ycywgZGF0YSwge1xuICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZC5pbmNsdWRlcyhwcm9wZXJ0eU5hbWUpLFxuICAgICAgICB9KSxcbiAgICAgIF07XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5OZXN0ZWRQcm9wZXJ0aWVzKFxuICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgcHJvcGVydHk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCxcbiAgZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JbXSxcbiAgZGF0YTogYW55LFxuICB7XG4gICAgY3VycmVudENhcGFiaWxpdGllcyA9IFtdLFxuICAgIGN1cnJlbnRQYXRoID0gW10sXG4gICAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgfTogRmxhdHRlbk5lc3RlZFByb3BlcnRpZXNBY2N1bXVsYXRvcixcbikge1xuICBpZiAoIXByb3BlcnR5KSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgaGFuZGxlT2JqZWN0UHJvcGVydHkgPSAoKTogT3BlcmFuZEZpZWxkW10gPT5cbiAgICBmbGF0TWFwKHByb3BlcnR5LnByb3BlcnRpZXMsIChuZXN0ZWRQcm9wZXJ0eSwgbmVzdGVkUHJvcGVydHlOYW1lKSA9PlxuICAgICAgZmxhdHRlbk5lc3RlZFByb3BlcnRpZXMoXG4gICAgICAgIG5lc3RlZFByb3BlcnR5TmFtZSxcbiAgICAgICAgbmVzdGVkUHJvcGVydHksXG4gICAgICAgIGRlc2NyaXB0b3JzLFxuICAgICAgICBkYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudENhcGFiaWxpdGllczogW1xuICAgICAgICAgICAgLi4uY3VycmVudENhcGFiaWxpdGllcyxcbiAgICAgICAgICAgIGAke1NwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXB9JHtwcm9wZXJ0eU5hbWV9YCBhcyBTcGVjQ2FwYWJpbGl0eSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4uY3VycmVudFBhdGgsIHByb3BlcnR5TmFtZV0sXG4gICAgICAgICAgcmVxdWlyZWQ6IChwcm9wZXJ0eS5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMobmVzdGVkUHJvcGVydHlOYW1lKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcblxuICBjb25zdCBoYW5kbGVBcnJheVByb3BlcnR5ID0gKCk6IE9wZXJhbmRGaWVsZFtdID0+IHtcbiAgICAvLyBGaW5kIHRoZSBudW1iZXIgb2YgYXJyYXkgZWxlbWVudHMgdGhhdCBhcmUgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3RcbiAgICBjb25zdCBuOiBudW1iZXIgPVxuICAgICAgZ2V0KGRhdGEsIGBzcGVjLiR7Y3VycmVudFBhdGguam9pbignLicpfSR7cHJvcGVydHlOYW1lfWAsIFtdKS5sZW5ndGggfHwgMTtcblxuICAgIC8vIFNpbmNlIF8udGltZXMgd2lsbCByZXR1cm4gYSBtdWx0aWRpbWVuc2lvbmFsIGFycmF5IG9mIE9wZXJhbmRGaWVsZHMgKE9wZXJhbmRGaWVsZFtdW10pLCB3ZVxuICAgIC8vIG5lZWQgdG8gZmxhdHRlbiBvbmUgbGV2ZWwgZGVlcGVyIHRoYW4gXy5mbGF0TWFwIHByb3ZpZGVzLlxuICAgIHJldHVybiBmbGF0TWFwRGVwdGgoXG4gICAgICBwcm9wZXJ0eS5pdGVtcy5wcm9wZXJ0aWVzLFxuICAgICAgKG5lc3RlZFByb3BlcnR5LCBuZXN0ZWRQcm9wZXJ0eU5hbWUpID0+XG4gICAgICAgIC8vIFJlcGVhdCByZWN1cnNpb24gKG4pIHRpbWVzIHNvIHRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGZpZWxkcyBhcmUgY3JlYXRlZCBmb3JcbiAgICAgICAgLy8gZXhpc3RpbmcgdmFsdWVzIGluIG9iai4gVGhpcyBlbnN1cmVzIHRoYXQgZnVydGhlciBuZXN0ZWQgZmllbGRzIGFsc28gZ2V0IGNyZWF0ZWQuXG4gICAgICAgIHRpbWVzKG4sIGluZGV4ID0+XG4gICAgICAgICAgZmxhdHRlbk5lc3RlZFByb3BlcnRpZXMoXG4gICAgICAgICAgICBuZXN0ZWRQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICBuZXN0ZWRQcm9wZXJ0eSxcbiAgICAgICAgICAgIGRlc2NyaXB0b3JzLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY3VycmVudENhcGFiaWxpdGllczogW1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgICAgICAgYCR7U3BlY0NhcGFiaWxpdHkuYXJyYXlGaWVsZEdyb3VwfSR7cHJvcGVydHlOYW1lfWAgYXMgU3BlY0NhcGFiaWxpdHksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGN1cnJlbnRQYXRoOiBbLi4uY3VycmVudFBhdGgsIGAke3Byb3BlcnR5TmFtZX1bJHtpbmRleH1dYF0sIC8vIEFycmF5IGZpZWxkIHBhdGhzIG11c3QgaW5jbHVkZSBhbiBpbmRleFxuICAgICAgICAgICAgICByZXF1aXJlZDogKHByb3BlcnR5Py5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMobmVzdGVkUHJvcGVydHlOYW1lKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIDIsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBdG9taWNQcm9wZXJ0eSA9ICgpOiBPcGVyYW5kRmllbGRbXSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IFsuLi5jdXJyZW50UGF0aCwgcHJvcGVydHlOYW1lXS5qb2luKCcuJyk7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzLmZpbmQoXG4gICAgICBpdGVtID0+IGl0ZW0ucGF0aCA9PT0gbW9kaWZ5QXJyYXlGaWVsZFBhdGhJbmRleChwYXRoLCAoKSA9PiAwKSxcbiAgICApO1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHVuaW9uKFxuICAgICAgZGVzY3JpcHRvcj8uW0RFU0NSSVBUT1JfREVGSU5JVElPTl9LRVldIHx8IFtdLFxuICAgICAgY3VycmVudENhcGFiaWxpdGllcyxcbiAgICAgIGdldENhcGFiaWxpdGllc0Zvck9wZW5BcGlQcm9wZXJ0eShcbiAgICAgICAgcHJvcGVydHksXG4gICAgICAgIGRlc2NyaXB0b3I/LltERVNDUklQVE9SX0RFRklOSVRJT05fS0VZXSxcbiAgICAgICksXG4gICAgKTtcbiAgICBjb25zdCB2YWxpZGF0aW9ucyA9IGdldENhcGFiaWxpdHlWYWxpZGF0aW9ucyhjYXBhYmlsaXRpZXMpO1xuICAgIGNvbnN0IGZpZWxkUGF0aCA9IGBzcGVjLiR7cGF0aH1gO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6IGZpZWxkUGF0aCxcbiAgICAgICAgdHlwZTogcHJvcGVydHkudHlwZSxcbiAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0b3I/LmRlc2NyaXB0aW9uIHx8IHByb3BlcnR5LmRlc2NyaXB0aW9uLFxuICAgICAgICBkaXNwbGF5TmFtZTogZGVzY3JpcHRvcj8uZGlzcGxheU5hbWUgfHwgc3RhcnRDYXNlKHByb3BlcnR5TmFtZSksXG4gICAgICAgIHZhbGlkYXRpb25zOiB7XG4gICAgICAgICAgLi4uKHBpY2soXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKFZhbGlkYXRpb25zKSxcbiAgICAgICAgICApIGFzIHVua25vd24gYXMgT3BlcmFuZEZpZWxkVmFsaWRhdGlvbiksXG4gICAgICAgICAgLi4udmFsaWRhdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlOiBnZXQoZGF0YSwgZmllbGRQYXRoKSxcbiAgICAgIH0sXG4gICAgXSBhcyBPcGVyYW5kRmllbGRbXTtcbiAgfTtcblxuICBzd2l0Y2ggKHByb3BlcnR5LnR5cGUpIHtcbiAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICByZXR1cm4gaGFuZGxlT2JqZWN0UHJvcGVydHkoKTtcbiAgICB9XG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICByZXR1cm4gaGFuZGxlQXJyYXlQcm9wZXJ0eSgpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gaGFuZGxlQXRvbWljUHJvcGVydHkoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWNjZXB0cyBhbiBPcGVuQVBJIHNwZWMgcHJvcGVydHkgYW5kIHJldHVybnMgYSBjb3JyZXNwb25kaW5nIFNwZWNDYXBhYmlsaXR5W10gYXJyYXkuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FwYWJpbGl0aWVzRm9yT3BlbkFwaVByb3BlcnR5KFxuICBwcm9wZXJ0eTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0LFxuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdID0gW10sXG4pOiBTcGVjQ2FwYWJpbGl0eVtdIHtcbiAgY29uc3QgZm9ybUNvbnRyb2xDYXBhYmlsaXRpZXMgPSBbXG4gICAgU3BlY0NhcGFiaWxpdHlVSVByZWZpeCxcbiAgICBTcGVjQ2FwYWJpbGl0eVdpZGdldHNQcmVmaXgsXG4gICAgU3BlY0NhcGFiaWxpdHkuazhzUmVzb3VyY2VQcmVmaXgsXG4gIF07XG4gIGlmIChcbiAgICBjYXBhYmlsaXRpZXMuc29tZShpID0+IGZvcm1Db250cm9sQ2FwYWJpbGl0aWVzLnNvbWUoayA9PiBpLnN0YXJ0c1dpdGgoaykpKVxuICApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKHByb3BlcnR5LmVudW0pIHtcbiAgICByZXR1cm4gKHByb3BlcnR5LmVudW0gfHwgW10pLm1hcChcbiAgICAgIChvcHRpb246IHN0cmluZykgPT4gYCR7U3BlY0NhcGFiaWxpdHkuc2VsZWN0fSR7b3B0aW9ufWAgYXMgU3BlY0NhcGFiaWxpdHksXG4gICAgKTtcbiAgfVxuICBzd2l0Y2ggKHByb3BlcnR5LnR5cGUpIHtcbiAgICBjYXNlICdpbnRlZ2VyJzoge1xuICAgICAgcmV0dXJuIFtTcGVjQ2FwYWJpbGl0eS5udW1iZXJdO1xuICAgIH1cbiAgICBjYXNlICdib29sZWFuJzoge1xuICAgICAgcmV0dXJuIFtTcGVjQ2FwYWJpbGl0eS5ib29sZWFuU3dpdGNoXTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFtTcGVjQ2FwYWJpbGl0eS50ZXh0XTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGlmeUFycmF5RmllbGRQYXRoSW5kZXgoXG4gIHBhdGg6IHN0cmluZyxcbiAgb3BlcmF0aW9uOiAoaW5kZXg/OiBudW1iZXIpID0+IHN0cmluZyB8IG51bWJlcixcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgbWF0Y2gsIGluZGV4LCBwYXRoQmVmb3JlSW5kZXgsIHBhdGhBZnRlckluZGV4IH0gPVxuICAgIHBhcnNlQXJyYXlQYXRoKHBhdGgpO1xuICBjb25zdCBwYXRoQWZ0ZXJJbmRleFN0ciA9IGAuJHtwYXRoQWZ0ZXJJbmRleH1gO1xuICByZXR1cm4gbWF0Y2hcbiAgICA/IGAke3BhdGhCZWZvcmVJbmRleH1bJHtvcGVyYXRpb24oaW5kZXgpfV0ke1xuICAgICAgICBwYXRoQWZ0ZXJJbmRleCAmJiBwYXRoQWZ0ZXJJbmRleFN0clxuICAgICAgfWBcbiAgICA6IHBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoVG9BcnJheShwYXRoOiBzdHJpbmcpOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHtcbiAgcmV0dXJuIG1hcCh0b1BhdGgocGF0aCksIHN1YlBhdGggPT5cbiAgICAvXlxcZCskLy50ZXN0KHN1YlBhdGgpID8gcGFyc2VJbnQoc3ViUGF0aCwgMTApIDogc3ViUGF0aCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlR3JvdXBEZXNjcmlwdG9yKGZpZWxkOiBPcGVyYW5kRmllbGQpOiB7XG4gIGdyb3VwTmFtZT86IHN0cmluZztcbiAgZ3JvdXBUeXBlPzogc3RyaW5nO1xuICBtYXRjaD86IHN0cmluZztcbn0ge1xuICBjb25zdCBncm91cERlc2NyaXB0b3IgPSBmaW5kKFxuICAgIGZpZWxkLmNhcGFiaWxpdGllcyxcbiAgICBkZXNjcmlwdG9yID0+XG4gICAgICBkZXNjcmlwdG9yLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZmllbGRHcm91cCkgfHxcbiAgICAgIGRlc2NyaXB0b3Iuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5hcnJheUZpZWxkR3JvdXApLFxuICApO1xuICBjb25zdCBbbWF0Y2gsIGdyb3VwVHlwZSwgZ3JvdXBOYW1lXSA9XG4gICAgR1JPVVBfUEFUVEVSTi5leGVjKGdyb3VwRGVzY3JpcHRvcikgfHwgW107XG4gIHJldHVybiB7IG1hdGNoLCBncm91cE5hbWUsIGdyb3VwVHlwZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhdGg/LnN0YXJ0c1dpdGgoJ3NwZWMuJykgPyBwYXRoIDogYHNwZWMuJHtwYXRofWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRGF0YShcbiAgZm9ybURhdGE6IEZvcm1EYXRhU3RhdGUsXG4gIHBhdGg6IHN0cmluZyxcbiAgZW5hYmxlQ29udmVydCA9IHRydWUsIC8vIGVuYWJsZSBjb252ZXJ0IHVuZGVmaW5lZCA9PiBudWxsXG4pIHtcbiAgY29uc3QgdmFsdWUgPSBmb3JtRGF0YS5nZXRJbihcbiAgICBwYXRoVG9BcnJheShub3JtYWxpemVQYXRoKHBhdGgpKSxcbiAgKSBhcyBGb3JtRGF0YVN0YXRlO1xuICByZXR1cm4gZW5hYmxlQ29udmVydCAmJiB2YWx1ZSA9PSBudWxsID8gbnVsbCA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FwYWJpbGl0eUZpZWxkKFxuICBkZXNjcmlwdG9yczogRGVzY3JpcHRvcltdID0gW10sXG4gIG9wZW5BcGlTY2hlbWE6IE9wZW5BUElWM1NjaGVtYU9iamVjdCxcbiAgZGF0YTogdW5rbm93bixcbiAgb3BlbkFwaVNjaGVtYVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuKSB7XG4gIGNvbnN0IG9wZW5BcGlGaWVsZHMgPSBnZXRGaWVsZHNGcm9tT3BlbkFwaVNjaGVtYShcbiAgICBvcGVuQXBpU2NoZW1hLFxuICAgIGRlc2NyaXB0b3JzLFxuICAgIGRhdGEsXG4gICAgb3BlbkFwaVNjaGVtYVBhdGgsXG4gICk7XG5cbiAgY29uc3QgZGVzY3JpcHRvckZpZWxkczogT3BlcmFuZEZpZWxkW10gPSB1bmlxV2l0aChcbiAgICByZWR1Y2UoXG4gICAgICBkZXNjcmlwdG9ycyxcbiAgICAgIChhY2N1bXVsYXRvciwgZGVzY3JpcHRvcikgPT5cbiAgICAgICAgb3BlbkFwaUZpZWxkcz8uc29tZShmaWVsZCA9PiBmaWVsZC5wYXRoID09PSBgc3BlYy4ke2Rlc2NyaXB0b3IucGF0aH1gKVxuICAgICAgICAgID8gYWNjdW11bGF0b3JcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgLi4uYWNjdW11bGF0b3IsXG4gICAgICAgICAgICAgIC4uLmdldEZpZWxkc0Zyb21EZXNjcmlwdG9yKFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICBvcGVuQXBpU2NoZW1hLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgIFtdLFxuICAgICksXG4gICAgaXNFcXVhbCxcbiAgKTtcbiAgY29uc3QgYmFzaWNGaWVsZHMgPSBbLi4ub3BlbkFwaUZpZWxkcywgLi4uZGVzY3JpcHRvckZpZWxkc107XG5cbiAgY29uc3QgcmVsYXRpb25GaWVsZHMgPSBnZXRSZWxhdGVkRmllbGRzKFxuICAgIGJhc2ljRmllbGRzLmZpbHRlcihmaWVsZFNob3VsZFJldmVhbCksXG4gICk7XG5cbiAgY29uc3QgdHJlZUZpZWxkcyA9IFtcbiAgICAuLi5nZXRUcmVlRmllbGRzKFxuICAgICAgcmVsYXRpb25GaWVsZHMuZmlsdGVyKGYgPT4gIWYucGFyZW50KSxcbiAgICAgIHJlbGF0aW9uRmllbGRzLmZpbHRlcihmID0+ICEhZi5wYXJlbnQpLFxuICAgICksXG4gICAgLy8g5YW85a656ICB55qE5pWw5o2u57uT5p6EXG4gICAgLi4ucmVsYXRpb25GaWVsZHMuZmlsdGVyKGYgPT4gIWYuX2RpcnR5KSxcbiAgXSBhcyBPcGVyYW5kRmllbGRbXTtcblxuICAvLyDkv53nlZnvvIzlhbzlrrnogIHmlbDmja7nu5PmnoRcbiAgY29uc3QgW1xuICAgIGFkdmFuY2VkRmllbGRzID0gW10sXG4gICAgYXJyYXlGaWVsZHMgPSBbXSxcbiAgICBncm91cEZpZWxkcyA9IFtdLFxuICAgIG5vcm1hbEZpZWxkcyA9IFtdLFxuICBdID0gcmVkdWNlKFxuICAgIHRyZWVGaWVsZHMsXG4gICAgKFxuICAgICAgW1xuICAgICAgICBhZHZhbmNlZEZpZWxkc0FjY3VtdWxhdG9yID0gW10gYXMgT3BlcmFuZEZpZWxkW10sXG4gICAgICAgIGFycmF5RmllbGRzQWNjdW11bGF0b3IgPSBbXSBhcyBPcGVyYW5kRmllbGRbXSxcbiAgICAgICAgZ3JvdXBGaWVsZHNBY2N1bXVsYXRvciA9IFtdIGFzIE9wZXJhbmRGaWVsZFtdLFxuICAgICAgICBub3JtYWxGaWVsZHNBY2N1bXVsYXRvciA9IFtdIGFzIE9wZXJhbmRGaWVsZFtdLFxuICAgICAgXSxcbiAgICAgIGZpZWxkOiBPcGVyYW5kRmllbGQsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBtYXBwZXJzID0gW1xuICAgICAgICB7IHNwZWM6IFNwZWNDYXBhYmlsaXR5LmFycmF5RmllbGRHcm91cCwgYWNjOiBhcnJheUZpZWxkc0FjY3VtdWxhdG9yIH0sXG4gICAgICAgIHsgc3BlYzogU3BlY0NhcGFiaWxpdHkuZmllbGRHcm91cCwgYWNjOiBncm91cEZpZWxkc0FjY3VtdWxhdG9yIH0sXG4gICAgICAgIHsgc3BlYzogU3BlY0NhcGFiaWxpdHkuYWR2YW5jZWQsIGFjYzogYWR2YW5jZWRGaWVsZHNBY2N1bXVsYXRvciB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGFjYyA9IG1hcHBlcnMuZmluZChtYXBwZXIgPT5cbiAgICAgICAgaGFzRGVzY3JpcHRvcihmaWVsZCwgbWFwcGVyLnNwZWMpLFxuICAgICAgKT8uYWNjO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgYWR2YW5jZWRGaWVsZHNBY2N1bXVsYXRvcixcbiAgICAgICAgYXJyYXlGaWVsZHNBY2N1bXVsYXRvcixcbiAgICAgICAgZ3JvdXBGaWVsZHNBY2N1bXVsYXRvcixcbiAgICAgICAgbm9ybWFsRmllbGRzQWNjdW11bGF0b3IsXG4gICAgICBdLm1hcChyID0+IHtcbiAgICAgICAgaWYgKCghYWNjICYmIHIgPT09IG5vcm1hbEZpZWxkc0FjY3VtdWxhdG9yKSB8fCByID09PSBhY2MpIHtcbiAgICAgICAgICByZXR1cm4gWy4uLnIsIGZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBub3JtYWxGaWVsZHM6IHNvcnRGaWVsZHMobm9ybWFsRmllbGRzLCBkZXNjcmlwdG9ycyksXG4gICAgZmllbGRHcm91cHM6IHNvcnRHcm91cEZpZWxkcyhncm91cEZpZWxkcywgZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3JGaWVsZHMpLFxuICAgIGFycmF5RmllbGRHcm91cHM6IGdldEFycmF5RmllbGRzKGFycmF5RmllbGRzLCBkZXNjcmlwdG9yRmllbGRzKSxcbiAgICBhZHZhbmNlZEZpZWxkczogc29ydEZpZWxkcyhhZHZhbmNlZEZpZWxkcywgZGVzY3JpcHRvcnMpLFxuICAgIGRlc2NyaXB0b3JGaWVsZHMsXG4gICAgb3BlbkFwaUZpZWxkcyxcbiAgICBiYXNpY0ZpZWxkcyxcbiAgICB0cmVlRmllbGRzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRBcnJheUZpZWxkcyhcbiAgZmllbGRzOiBPcGVyYW5kRmllbGRbXSxcbiAgZGVzY3JpcHRvckZpZWxkczogT3BlcmFuZEZpZWxkW10sXG4pIHtcbiAgLy8gYXJyYXkgZmllbGRzXG4gIGNvbnN0IGdyb3VwZWRBcnJheUZpZWxkc0J5TmFtZSA9IGdyb3VwQnkoZmllbGRzLCBmaWVsZCA9PiB7XG4gICAgY29uc3QgeyBncm91cE5hbWUgfSA9IHBhcnNlR3JvdXBEZXNjcmlwdG9yKGZpZWxkKTtcbiAgICByZXR1cm4gZ3JvdXBOYW1lO1xuICB9KTtcblxuICAvLyBNYXAge2dyb3VwTmFtZTogc3RyaW5nLCBmaWVsZExpc3RzOiBPcGVyYW5kRmllbGRbXVtdfSwgd2hlcmUgT3BlcmFuZEZpZWxkIGlzIGEgbmVzdGVkIGFycmF5XG4gIC8vIG9mIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMsIGdyb3VwZWQgYnkgaW5kZXguXG4gIHJldHVybiBtYXAoZ3JvdXBlZEFycmF5RmllbGRzQnlOYW1lLCAoZmllbGRzSW5Hcm91cCwgZ3JvdXBOYW1lOiBzdHJpbmcpID0+ICh7XG4gICAgZ3JvdXBOYW1lLFxuICAgIGRpc3BsYXlOYW1lOiBzdGFydENhc2UoZ3JvdXBOYW1lKSxcbiAgICBjYXBhYmlsaXRpZXM6XG4gICAgICBkZXNjcmlwdG9yRmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQucGF0aCA9PT0gYHNwZWMuJHtncm91cE5hbWV9YClcbiAgICAgICAgPy5jYXBhYmlsaXRpZXMgPz8gW10sXG4gICAgZmllbGRMaXN0czogcmVkdWNlKFxuICAgICAgZmllbGRzSW5Hcm91cCxcbiAgICAgIChmaWVsZExpc3RzQWNjdW11bGF0b3IsIGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXgsIG1hdGNoIH0gPSBwYXJzZUFycmF5UGF0aChmaWVsZC5wYXRoKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgZmllbGRMaXN0c0FjY3VtdWxhdG9yW2luZGV4XSA9IFtcbiAgICAgICAgICAgIC4uLihmaWVsZExpc3RzQWNjdW11bGF0b3JbaW5kZXhdIHx8IFtdKSxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkTGlzdHNBY2N1bXVsYXRvcjtcbiAgICAgIH0sXG4gICAgICBbXSBhcyBPcGVyYW5kRmllbGRbXVtdLFxuICAgICksXG4gICAgX2RpcnR5OiBmYWxzZSxcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkczogT3BlcmFuZEZpZWxkW10sIGRlc2NyaXB0b3JzOiBEZXNjcmlwdG9yW10pIHtcbiAgcmV0dXJuIHNvcnRCeShmaWVsZHMsIGZpZWxkID0+XG4gICAgZGVzY3JpcHRvcnMuZmluZEluZGV4KFxuICAgICAgZCA9PiBub3JtYWxpemVQYXRoKGQucGF0aCkgPT09IG5vcm1hbGl6ZVBhdGgoZmllbGQucGF0aCksXG4gICAgKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gc29ydEdyb3VwRmllbGRzKFxuICBmaWVsZHM6IE9wZXJhbmRGaWVsZFtdLFxuICBkZXNjcmlwdG9yczogRGVzY3JpcHRvcltdLFxuICBkZXNjcmlwdG9yRmllbGRzOiBPcGVyYW5kRmllbGRbXSxcbikge1xuICBjb25zdCBncm91cGVkRmllbGRzQnlOYW1lID0gZ3JvdXBCeShcbiAgICBzb3J0RmllbGRzKGZpZWxkcywgZGVzY3JpcHRvcnMpLFxuICAgIGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IHsgZ3JvdXBOYW1lIH0gPSBwYXJzZUdyb3VwRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICByZXR1cm4gZ3JvdXBOYW1lO1xuICAgIH0sXG4gICk7XG4gIHJldHVybiBtYXAoZ3JvdXBlZEZpZWxkc0J5TmFtZSwgKGZpZWxkTGlzdCwgZ3JvdXBOYW1lKSA9PiAoe1xuICAgIGdyb3VwTmFtZSxcbiAgICBkaXNwbGF5TmFtZTogc3RhcnRDYXNlKGdyb3VwTmFtZSksXG4gICAgZ3JvdXBEaXNwbGF5OiBmaWVsZExpc3RcbiAgICAgIC5tYXAoZmllbGQgPT5cbiAgICAgICAgZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eShcbiAgICAgICAgICBmaWVsZC5jYXBhYmlsaXRpZXMsXG4gICAgICAgICAgU3BlY0NhcGFiaWxpdHkuZmllbGRHcm91cE5hbWUsXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuZmluZChkID0+ICEhZCksXG4gICAgY2FwYWJpbGl0aWVzOlxuICAgICAgZGVzY3JpcHRvckZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLnBhdGggPT09IGBzcGVjLiR7Z3JvdXBOYW1lfWApXG4gICAgICAgID8uY2FwYWJpbGl0aWVzID8/IFtdLFxuICAgIGZpZWxkTGlzdCxcbiAgfSkpO1xufVxuIl19
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3JkLWZvcm0vc3JjL2xpYi91dGlscy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsWUFBWSxFQUNaLE9BQU8sRUFDUCxHQUFHLEVBQ0gsT0FBTyxFQUNQLE9BQU8sRUFDUCxHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksRUFDSixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEdBQ1QsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUtMLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLFdBQVcsR0FDWixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsd0JBQXdCLEdBQ3pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsYUFBYSxFQUNiLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsYUFBYSxFQUNiLGNBQWMsR0FDZixNQUFNLFVBQVUsQ0FBQztBQVNsQixNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFFBQStCLEVBQy9CLEtBQUssR0FBRyxDQUFDO0lBRVQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxHQUFH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LENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsU0FBUyxFQUFFLENBQUM7WUFDaEUsRUFBRSxZQUFZLElBQUksRUFBRTtRQUN4QixTQUFTO0tBQ1YsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BlbkFQSVYzU2NoZW1hT2JqZWN0LCBpc0VxdWFsIH0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHtcbiAgZmluZCxcbiAgZmxhdE1hcCxcbiAgZmxhdE1hcERlcHRoLFxuICBmbGF0dGVuLFxuICBnZXQsXG4gIGdyb3VwQnksXG4gIGlzQXJyYXksXG4gIG1hcCxcbiAgcGFyc2VJbnQsXG4gIHBpY2ssXG4gIHJlZHVjZSxcbiAgc29ydEJ5LFxuICBzdGFydENhc2UsXG4gIHRpbWVzLFxuICB0b1BhdGgsXG4gIHVuaW9uLFxuICB1bmlxV2l0aCxcbn0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgRGVzY3JpcHRvcixcbiAgRm9ybURhdGFTdGF0ZSxcbiAgT3BlcmFuZEZpZWxkLFxuICBPcGVyYW5kRmllbGRWYWxpZGF0aW9uLFxuICBTcGVjQ2FwYWJpbGl0eSxcbiAgU3BlY0NhcGFiaWxpdHlVSVByZWZpeCxcbiAgU3BlY0NhcGFiaWxpdHlXaWRnZXRzUHJlZml4LFxuICBWYWxpZGF0aW9ucyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQge1xuICBmaWVsZFNob3VsZFJldmVhbCxcbiAgZ2V0QmFzaWNDYXBhYmlsaXR5VHlwZSxcbiAgZ2V0Q2FwYWJpbGl0eURpc2FibGVkLFxuICBnZXRDYXBhYmlsaXR5VmFsaWRhdGlvbnMsXG59IGZyb20gJy4vY2FwYWJpbGl0eSc7XG5pbXBvcnQge1xuICBERVNDUklQVE9SX0RFRklOSVRJT05fS0VZLFxuICBHUk9VUF9QQVRURVJOLFxuICBNQVhfREVQVEgsXG4gIFNDSEVNQV9QQVRILFxufSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7XG4gIGdldFJlbGF0ZWRGaWVsZHMsXG4gIGdldFRyZWVGaWVsZHMsXG4gIGhhc0Rlc2NyaXB0b3IsXG4gIHBhcnNlQXJyYXlQYXRoLFxufSBmcm9tICcuL2hlbHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxhdHRlbk5lc3RlZFByb3BlcnRpZXNBY2N1bXVsYXRvciB7XG4gIGN1cnJlbnRDYXBhYmlsaXRpZXM/OiBTcGVjQ2FwYWJpbGl0eVtdO1xuICBjdXJyZW50UGF0aD86IHN0cmluZ1tdO1xuICBmaWVsZHM/OiBPcGVyYW5kRmllbGRbXTtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wZXJ0eURlcHRoKFxuICBwcm9wZXJ0eTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0LFxuICBkZXB0aCA9IDAsXG4pOiBudW1iZXIge1xuICBpZiAoIXByb3BlcnR5IHx8ICFbJ29iamVjdCcsICdhcnJheSddLmluY2x1ZGVzKHByb3BlcnR5LnR5cGUpKSB7XG4gICAgcmV0dXJuIGRlcHRoO1xuICB9XG4gIHJldHVybiBNYXRoLm1heChcbiAgICAwLFxuICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICBwcm9wZXJ0eS5wcm9wZXJ0aWVzIHx8IHByb3BlcnR5Lml0ZW1zPy5wcm9wZXJ0aWVzIHx8IHt9LFxuICAgICkubWFwKG5lc3RlZFByb3BlcnR5ID0+IGdldFByb3BlcnR5RGVwdGgobmVzdGVkUHJvcGVydHksIGRlcHRoICsgMSkpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRzRnJvbURlc2NyaXB0b3IoXG4gIHtcbiAgICBwYXRoLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGRpc3BsYXlOYW1lLFxuICAgICd4LWRlc2NyaXB0b3JzJzogY2FwYWJpbGl0aWVzID0gW10sXG4gIH06IERlc2NyaXB0b3IsXG4gIGRhdGE6IGFueSxcbiAgb3BlbkFwaTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0LFxuICBfb3JpZ2luRGVzY3JpcHRvcnM/OiBEZXNjcmlwdG9yW10sXG4pOiBPcGVyYW5kRmllbGRbXSB7XG4gIGNvbnN0IHsgbWF0Y2gsIHBhdGhCZWZvcmVJbmRleCwgcGF0aEFmdGVySW5kZXggfSA9IHBhcnNlQXJyYXlQYXRoKHBhdGgpO1xuICBjb25zdCBmaWxlZEJhc2ljVHlwZSA9IGdldEJhc2ljQ2FwYWJpbGl0eVR5cGUoY2FwYWJpbGl0aWVzKTtcbiAgY29uc3QgZGlzYWJsZWQgPSBnZXRDYXBhYmlsaXR5RGlzYWJsZWQoY2FwYWJpbGl0aWVzKTtcbiAgY29uc3QgdmFsaWRhdGlvbnMgPSBnZXRDYXBhYmlsaXR5VmFsaWRhdGlvbnMoY2FwYWJpbGl0aWVzKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgY29uc3QgbjogbnVtYmVyID1cbiAgICAgIGdldChkYXRhLCB0b1BhdGgoYHNwZWMuJHtwYXRoQmVmb3JlSW5kZXh9YCksIFtdKS5sZW5ndGggfHwgMTtcbiAgICBjb25zdCBwYXRoQWZ0ZXJJbmRleFN0ciA9IGAuJHtwYXRoQWZ0ZXJJbmRleH1gO1xuICAgIGxldCBleHRyYTogRGVzY3JpcHRvcltdID0gW107XG4gICAgaWYgKF9vcmlnaW5EZXNjcmlwdG9ycykge1xuICAgICAgZXh0cmEgPSBmbGF0dGVuKFxuICAgICAgICBfb3JpZ2luRGVzY3JpcHRvcnNcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgZCA9PiBkLnBhdGguc3RhcnRzV2l0aChgJHtwYXRoQmVmb3JlSW5kZXh9WzBdYCkgJiYgZC5wYXRoICE9PSBwYXRoLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWFwKGQgPT5cbiAgICAgICAgICAgIHRpbWVzKG4sIGluZGV4ID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgb1BhdGggPSBkLnBhdGgucmVwbGFjZShcbiAgICAgICAgICAgICAgICBgJHtwYXRoQmVmb3JlSW5kZXh9WzBdYCxcbiAgICAgICAgICAgICAgICBgJHtwYXRoQmVmb3JlSW5kZXh9WyR7aW5kZXh9XWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZCxcbiAgICAgICAgICAgICAgICBwYXRoOiBvUGF0aCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLnNsaWNlKDEpLFxuICAgICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmbGF0dGVuKFtcbiAgICAgIC4uLnRpbWVzKG4sIGluZGV4ID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlQYXRoID0gYHNwZWMuJHtwYXRoQmVmb3JlSW5kZXh9WyR7aW5kZXh9XSR7XG4gICAgICAgICAgcGF0aEFmdGVySW5kZXggJiYgcGF0aEFmdGVySW5kZXhTdHJcbiAgICAgICAgfWA7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0T3BlbkFwaVByb3BlcnR5QnlQYXRoKGBzcGVjLiR7cGF0aH1gLCBvcGVuQXBpKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhdGg6IHByb3BlcnR5UGF0aCxcbiAgICAgICAgICB2YWx1ZTogZ2V0KGRhdGEsIHByb3BlcnR5UGF0aCksXG4gICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgZGlzcGxheU5hbWUsXG4gICAgICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgICAgIHR5cGU6IGZpbGVkQmFzaWNUeXBlIHx8IHByb3BlcnR5Py50eXBlLFxuICAgICAgICAgIHJlcXVpcmVkOiBudWxsLFxuICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgIHZhbGlkYXRpb25zOiB7XG4gICAgICAgICAgICAuLi52YWxpZGF0aW9ucyxcbiAgICAgICAgICAgIC4uLihwcm9wZXJ0eT8ucmVxdWlyZWQgJiYgeyByZXF1aXJlZDogdHJ1ZSB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICAuLi5leHRyYS5tYXAoZSA9PiBnZXRGaWVsZHNGcm9tRGVzY3JpcHRvcihlLCBkYXRhLCBvcGVuQXBpKSksXG4gICAgXSk7XG4gIH1cbiAgLy8g6YCa6L+HIGRlc2NyaXB0b3Ig5p+l5om+5Y6f5aeLIENSRCDoioLngrnvvIzmjqjlr7znsbvlnovjgIF2YWxpZGF0aW9uIOetieS/oeaBr1xuICBjb25zdCBwcm9wZXJ0eVBhdGggPSBgc3BlYy4ke3BhdGh9YDtcbiAgY29uc3QgcHJvcGVydHkgPSBnZXRPcGVuQXBpUHJvcGVydHlCeVBhdGgocHJvcGVydHlQYXRoLCBvcGVuQXBpKTtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwYXRoOiBwcm9wZXJ0eVBhdGgsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGRpc3BsYXlOYW1lLFxuICAgICAgY2FwYWJpbGl0aWVzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICB2YWx1ZTogZ2V0KGRhdGEsIHByb3BlcnR5UGF0aCksXG4gICAgICB0eXBlOiBmaWxlZEJhc2ljVHlwZSB8fCBwcm9wZXJ0eT8udHlwZSxcbiAgICAgIHJlcXVpcmVkOiBudWxsLFxuICAgICAgdmFsaWRhdGlvbnM6IHtcbiAgICAgICAgLi4udmFsaWRhdGlvbnMsXG4gICAgICAgIC4uLihwcm9wZXJ0eT8ucmVxdWlyZWQgJiYgeyByZXF1aXJlZDogdHJ1ZSB9KSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZW5BcGlQcm9wZXJ0eUJ5UGF0aChcbiAgZGVzY3JpcHRvclBhdGg6IHN0cmluZyxcbiAgb3BlbkFwaTogT3BlbkFQSVYzU2NoZW1hT2JqZWN0LFxuKSB7XG4gIGNvbnN0IHBhdGhzID0gZGVzY3JpcHRvclBhdGguc3BsaXQoJy4nKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGF0aHMucmVkdWNlKChhY2MsIHBhdGgpID0+IHtcbiAgICAgIGFjYyA9IHBhdGguaW5jbHVkZXMoJ1swXScpXG4gICAgICAgID8gYWNjLml0ZW1zLnByb3BlcnRpZXNbcGF0aC5zcGxpdCgnWzBdJylbMF1dXG4gICAgICAgIDogYWNjLnByb3BlcnRpZXNbcGF0aF07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIG9wZW5BcGkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRzRnJvbU9wZW5BcGlTY2hlbWEoXG4gIG9wZW5BcGk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCxcbiAgZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JbXSxcbiAgZGF0YTogdW5rbm93bixcbiAgb3BlbkFwaVNjaGVtYVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdID0gU0NIRU1BX1BBVEgsXG4gIG1heERlcHRoID0gTUFYX0RFUFRILFxuKTogT3BlcmFuZEZpZWxkW10ge1xuICBjb25zdCBwYXRoID0gaXNBcnJheShvcGVuQXBpU2NoZW1hUGF0aClcbiAgICA/IG9wZW5BcGlTY2hlbWFQYXRoXG4gICAgOiBvcGVuQXBpU2NoZW1hUGF0aC5zcGxpdCgnLicpLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IGdldChvcGVuQXBpLCBbLi4ucGF0aCwgJ3Byb3BlcnRpZXMnXSwge30pO1xuICBjb25zdCByZXF1aXJlZCA9IGdldChvcGVuQXBpLCBbLi4ucGF0aCwgJ3JlcXVpcmVkJ10sIFtdKSBhcyBzdHJpbmdbXTtcblxuICByZXR1cm4gcmVkdWNlKFxuICAgIHByb3BlcnRpZXMsXG4gICAgKGFjY3VtdWxhdG9yLCBfcHJvcGVydHksIHByb3BlcnR5TmFtZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBfcHJvcGVydHkgYXMgT3BlbkFQSVYzU2NoZW1hT2JqZWN0O1xuICAgICAgaWYgKCFwcm9wZXJ0eS50eXBlIHx8IGdldFByb3BlcnR5RGVwdGgocHJvcGVydHkpID4gbWF4RGVwdGgpIHtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5hY2N1bXVsYXRvcixcbiAgICAgICAgLi4uZmxhdHRlbk5lc3RlZFByb3BlcnRpZXMocHJvcGVydHlOYW1lLCBwcm9wZXJ0eSwgZGVzY3JpcHRvcnMsIGRhdGEsIHtcbiAgICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQuaW5jbHVkZXMocHJvcGVydHlOYW1lKSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuTmVzdGVkUHJvcGVydGllcyhcbiAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gIHByb3BlcnR5OiBPcGVuQVBJVjNTY2hlbWFPYmplY3QsXG4gIGRlc2NyaXB0b3JzOiBEZXNjcmlwdG9yW10sXG4gIGRhdGE6IGFueSxcbiAge1xuICAgIGN1cnJlbnRDYXBhYmlsaXRpZXMgPSBbXSxcbiAgICBjdXJyZW50UGF0aCA9IFtdLFxuICAgIHJlcXVpcmVkID0gZmFsc2UsXG4gIH06IEZsYXR0ZW5OZXN0ZWRQcm9wZXJ0aWVzQWNjdW11bGF0b3IsXG4pIHtcbiAgaWYgKCFwcm9wZXJ0eSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9iamVjdFByb3BlcnR5ID0gKCk6IE9wZXJhbmRGaWVsZFtdID0+XG4gICAgZmxhdE1hcChwcm9wZXJ0eS5wcm9wZXJ0aWVzLCAobmVzdGVkUHJvcGVydHksIG5lc3RlZFByb3BlcnR5TmFtZSkgPT5cbiAgICAgIGZsYXR0ZW5OZXN0ZWRQcm9wZXJ0aWVzKFxuICAgICAgICBuZXN0ZWRQcm9wZXJ0eU5hbWUsXG4gICAgICAgIG5lc3RlZFByb3BlcnR5LFxuICAgICAgICBkZXNjcmlwdG9ycyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGN1cnJlbnRDYXBhYmlsaXRpZXM6IFtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgICBgJHtTcGVjQ2FwYWJpbGl0eS5maWVsZEdyb3VwfSR7cHJvcGVydHlOYW1lfWAgYXMgU3BlY0NhcGFiaWxpdHksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLmN1cnJlbnRQYXRoLCBwcm9wZXJ0eU5hbWVdLFxuICAgICAgICAgIHJlcXVpcmVkOiAocHJvcGVydHkucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKG5lc3RlZFByb3BlcnR5TmFtZSksXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICk7XG5cbiAgY29uc3QgaGFuZGxlQXJyYXlQcm9wZXJ0eSA9ICgpOiBPcGVyYW5kRmllbGRbXSA9PiB7XG4gICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGFycmF5IGVsZW1lbnRzIHRoYXQgYXJlIGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgcHJvdmlkZWQgb2JqZWN0XG4gICAgY29uc3QgbjogbnVtYmVyID1cbiAgICAgIGdldChkYXRhLCBgc3BlYy4ke2N1cnJlbnRQYXRoLmpvaW4oJy4nKX0ke3Byb3BlcnR5TmFtZX1gLCBbXSkubGVuZ3RoIHx8IDE7XG5cbiAgICAvLyBTaW5jZSBfLnRpbWVzIHdpbGwgcmV0dXJuIGEgbXVsdGlkaW1lbnNpb25hbCBhcnJheSBvZiBPcGVyYW5kRmllbGRzIChPcGVyYW5kRmllbGRbXVtdKSwgd2VcbiAgICAvLyBuZWVkIHRvIGZsYXR0ZW4gb25lIGxldmVsIGRlZXBlciB0aGFuIF8uZmxhdE1hcCBwcm92aWRlcy5cbiAgICByZXR1cm4gZmxhdE1hcERlcHRoKFxuICAgICAgcHJvcGVydHkuaXRlbXMucHJvcGVydGllcyxcbiAgICAgIChuZXN0ZWRQcm9wZXJ0eSwgbmVzdGVkUHJvcGVydHlOYW1lKSA9PlxuICAgICAgICAvLyBSZXBlYXQgcmVjdXJzaW9uIChuKSB0aW1lcyBzbyB0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBmaWVsZHMgYXJlIGNyZWF0ZWQgZm9yXG4gICAgICAgIC8vIGV4aXN0aW5nIHZhbHVlcyBpbiBvYmouIFRoaXMgZW5zdXJlcyB0aGF0IGZ1cnRoZXIgbmVzdGVkIGZpZWxkcyBhbHNvIGdldCBjcmVhdGVkLlxuICAgICAgICB0aW1lcyhuLCBpbmRleCA9PlxuICAgICAgICAgIGZsYXR0ZW5OZXN0ZWRQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgbmVzdGVkUHJvcGVydHlOYW1lLFxuICAgICAgICAgICAgbmVzdGVkUHJvcGVydHksXG4gICAgICAgICAgICBkZXNjcmlwdG9ycyxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGN1cnJlbnRDYXBhYmlsaXRpZXM6IFtcbiAgICAgICAgICAgICAgICAuLi5jdXJyZW50Q2FwYWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGAke1NwZWNDYXBhYmlsaXR5LmFycmF5RmllbGRHcm91cH0ke3Byb3BlcnR5TmFtZX1gIGFzIFNwZWNDYXBhYmlsaXR5LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBjdXJyZW50UGF0aDogWy4uLmN1cnJlbnRQYXRoLCBgJHtwcm9wZXJ0eU5hbWV9WyR7aW5kZXh9XWBdLCAvLyBBcnJheSBmaWVsZCBwYXRocyBtdXN0IGluY2x1ZGUgYW4gaW5kZXhcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IChwcm9wZXJ0eT8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKG5lc3RlZFByb3BlcnR5TmFtZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAyLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQXRvbWljUHJvcGVydHkgPSAoKTogT3BlcmFuZEZpZWxkW10gPT4ge1xuICAgIGNvbnN0IHBhdGggPSBbLi4uY3VycmVudFBhdGgsIHByb3BlcnR5TmFtZV0uam9pbignLicpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ycy5maW5kKFxuICAgICAgaXRlbSA9PiBpdGVtLnBhdGggPT09IG1vZGlmeUFycmF5RmllbGRQYXRoSW5kZXgocGF0aCwgKCkgPT4gMCksXG4gICAgKTtcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSB1bmlvbihcbiAgICAgIGRlc2NyaXB0b3I/LltERVNDUklQVE9SX0RFRklOSVRJT05fS0VZXSB8fCBbXSxcbiAgICAgIGN1cnJlbnRDYXBhYmlsaXRpZXMsXG4gICAgICBnZXRDYXBhYmlsaXRpZXNGb3JPcGVuQXBpUHJvcGVydHkoXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBkZXNjcmlwdG9yPy5bREVTQ1JJUFRPUl9ERUZJTklUSU9OX0tFWV0sXG4gICAgICApLFxuICAgICk7XG4gICAgY29uc3QgdmFsaWRhdGlvbnMgPSBnZXRDYXBhYmlsaXR5VmFsaWRhdGlvbnMoY2FwYWJpbGl0aWVzKTtcbiAgICBjb25zdCBmaWVsZFBhdGggPSBgc3BlYy4ke3BhdGh9YDtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYXRoOiBmaWVsZFBhdGgsXG4gICAgICAgIHR5cGU6IHByb3BlcnR5LnR5cGUsXG4gICAgICAgIHJlcXVpcmVkLFxuICAgICAgICBjYXBhYmlsaXRpZXMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdG9yPy5kZXNjcmlwdGlvbiB8fCBwcm9wZXJ0eS5kZXNjcmlwdGlvbixcbiAgICAgICAgZGlzcGxheU5hbWU6IGRlc2NyaXB0b3I/LmRpc3BsYXlOYW1lIHx8IHN0YXJ0Q2FzZShwcm9wZXJ0eU5hbWUpLFxuICAgICAgICB2YWxpZGF0aW9uczoge1xuICAgICAgICAgIC4uLihwaWNrKFxuICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhWYWxpZGF0aW9ucyksXG4gICAgICAgICAgKSBhcyB1bmtub3duIGFzIE9wZXJhbmRGaWVsZFZhbGlkYXRpb24pLFxuICAgICAgICAgIC4uLnZhbGlkYXRpb25zLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZTogZ2V0KGRhdGEsIGZpZWxkUGF0aCksXG4gICAgICB9LFxuICAgIF0gYXMgT3BlcmFuZEZpZWxkW107XG4gIH07XG5cbiAgc3dpdGNoIChwcm9wZXJ0eS50eXBlKSB7XG4gICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgcmV0dXJuIGhhbmRsZU9iamVjdFByb3BlcnR5KCk7XG4gICAgfVxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgcmV0dXJuIGhhbmRsZUFycmF5UHJvcGVydHkoKTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIGhhbmRsZUF0b21pY1Byb3BlcnR5KCk7XG4gICAgfVxuICB9XG59XG5cbi8vIEFjY2VwdHMgYW4gT3BlbkFQSSBzcGVjIHByb3BlcnR5IGFuZCByZXR1cm5zIGEgY29ycmVzcG9uZGluZyBTcGVjQ2FwYWJpbGl0eVtdIGFycmF5LlxuZXhwb3J0IGZ1bmN0aW9uIGdldENhcGFiaWxpdGllc0Zvck9wZW5BcGlQcm9wZXJ0eShcbiAgcHJvcGVydHk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCxcbiAgY2FwYWJpbGl0aWVzOiBzdHJpbmdbXSA9IFtdLFxuKTogU3BlY0NhcGFiaWxpdHlbXSB7XG4gIGNvbnN0IGZvcm1Db250cm9sQ2FwYWJpbGl0aWVzID0gW1xuICAgIFNwZWNDYXBhYmlsaXR5VUlQcmVmaXgsXG4gICAgU3BlY0NhcGFiaWxpdHlXaWRnZXRzUHJlZml4LFxuICAgIFNwZWNDYXBhYmlsaXR5Lms4c1Jlc291cmNlUHJlZml4LFxuICBdO1xuICBpZiAoXG4gICAgY2FwYWJpbGl0aWVzLnNvbWUoaSA9PiBmb3JtQ29udHJvbENhcGFiaWxpdGllcy5zb21lKGsgPT4gaS5zdGFydHNXaXRoKGspKSlcbiAgKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChwcm9wZXJ0eS5lbnVtKSB7XG4gICAgcmV0dXJuIChwcm9wZXJ0eS5lbnVtIHx8IFtdKS5tYXAoXG4gICAgICAob3B0aW9uOiBzdHJpbmcpID0+IGAke1NwZWNDYXBhYmlsaXR5LnNlbGVjdH0ke29wdGlvbn1gIGFzIFNwZWNDYXBhYmlsaXR5LFxuICAgICk7XG4gIH1cbiAgc3dpdGNoIChwcm9wZXJ0eS50eXBlKSB7XG4gICAgY2FzZSAnaW50ZWdlcic6IHtcbiAgICAgIHJldHVybiBbU3BlY0NhcGFiaWxpdHkubnVtYmVyXTtcbiAgICB9XG4gICAgY2FzZSAnYm9vbGVhbic6IHtcbiAgICAgIHJldHVybiBbU3BlY0NhcGFiaWxpdHkuYm9vbGVhblN3aXRjaF07XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBbU3BlY0NhcGFiaWxpdHkudGV4dF07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RpZnlBcnJheUZpZWxkUGF0aEluZGV4KFxuICBwYXRoOiBzdHJpbmcsXG4gIG9wZXJhdGlvbjogKGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmcgfCBudW1iZXIsXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IG1hdGNoLCBpbmRleCwgcGF0aEJlZm9yZUluZGV4LCBwYXRoQWZ0ZXJJbmRleCB9ID1cbiAgICBwYXJzZUFycmF5UGF0aChwYXRoKTtcbiAgY29uc3QgcGF0aEFmdGVySW5kZXhTdHIgPSBgLiR7cGF0aEFmdGVySW5kZXh9YDtcbiAgcmV0dXJuIG1hdGNoXG4gICAgPyBgJHtwYXRoQmVmb3JlSW5kZXh9WyR7b3BlcmF0aW9uKGluZGV4KX1dJHtcbiAgICAgICAgcGF0aEFmdGVySW5kZXggJiYgcGF0aEFmdGVySW5kZXhTdHJcbiAgICAgIH1gXG4gICAgOiBwYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aFRvQXJyYXkocGF0aDogc3RyaW5nKTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB7XG4gIHJldHVybiBtYXAodG9QYXRoKHBhdGgpLCBzdWJQYXRoID0+XG4gICAgL15cXGQrJC8udGVzdChzdWJQYXRoKSA/IHBhcnNlSW50KHN1YlBhdGgsIDEwKSA6IHN1YlBhdGgsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUdyb3VwRGVzY3JpcHRvcihmaWVsZDogT3BlcmFuZEZpZWxkKToge1xuICBncm91cE5hbWU/OiBzdHJpbmc7XG4gIGdyb3VwVHlwZT86IHN0cmluZztcbiAgbWF0Y2g/OiBzdHJpbmc7XG59IHtcbiAgY29uc3QgZ3JvdXBEZXNjcmlwdG9yID0gZmluZChcbiAgICBmaWVsZC5jYXBhYmlsaXRpZXMsXG4gICAgZGVzY3JpcHRvciA9PlxuICAgICAgZGVzY3JpcHRvci5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXApIHx8XG4gICAgICBkZXNjcmlwdG9yLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuYXJyYXlGaWVsZEdyb3VwKSxcbiAgKTtcbiAgY29uc3QgW21hdGNoLCBncm91cFR5cGUsIGdyb3VwTmFtZV0gPVxuICAgIEdST1VQX1BBVFRFUk4uZXhlYyhncm91cERlc2NyaXB0b3IpIHx8IFtdO1xuICByZXR1cm4geyBtYXRjaCwgZ3JvdXBOYW1lLCBncm91cFR5cGUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgocGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiBwYXRoPy5zdGFydHNXaXRoKCdzcGVjLicpID8gcGF0aCA6IGBzcGVjLiR7cGF0aH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybURhdGEoXG4gIGZvcm1EYXRhOiBGb3JtRGF0YVN0YXRlLFxuICBwYXRoOiBzdHJpbmcsXG4gIGVuYWJsZUNvbnZlcnQgPSB0cnVlLCAvLyBlbmFibGUgY29udmVydCB1bmRlZmluZWQgPT4gbnVsbFxuKSB7XG4gIGNvbnN0IHZhbHVlID0gZm9ybURhdGEuZ2V0SW4oXG4gICAgcGF0aFRvQXJyYXkobm9ybWFsaXplUGF0aChwYXRoKSksXG4gICkgYXMgRm9ybURhdGFTdGF0ZTtcbiAgcmV0dXJuIGVuYWJsZUNvbnZlcnQgJiYgdmFsdWUgPT0gbnVsbCA/IG51bGwgOiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNhcGFiaWxpdHlGaWVsZChcbiAgZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JbXSA9IFtdLFxuICBvcGVuQXBpU2NoZW1hOiBPcGVuQVBJVjNTY2hlbWFPYmplY3QsXG4gIGRhdGE6IHVua25vd24sXG4gIG9wZW5BcGlTY2hlbWFQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSxcbikge1xuICBjb25zdCBvcGVuQXBpRmllbGRzID0gZ2V0RmllbGRzRnJvbU9wZW5BcGlTY2hlbWEoXG4gICAgb3BlbkFwaVNjaGVtYSxcbiAgICBkZXNjcmlwdG9ycyxcbiAgICBkYXRhLFxuICAgIG9wZW5BcGlTY2hlbWFQYXRoLFxuICApO1xuXG4gIGNvbnN0IGRlc2NyaXB0b3JGaWVsZHM6IE9wZXJhbmRGaWVsZFtdID0gdW5pcVdpdGgoXG4gICAgcmVkdWNlKFxuICAgICAgZGVzY3JpcHRvcnMsXG4gICAgICAoYWNjdW11bGF0b3IsIGRlc2NyaXB0b3IpID0+XG4gICAgICAgIG9wZW5BcGlGaWVsZHM/LnNvbWUoZmllbGQgPT4gZmllbGQucGF0aCA9PT0gYHNwZWMuJHtkZXNjcmlwdG9yLnBhdGh9YClcbiAgICAgICAgICA/IGFjY3VtdWxhdG9yXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIC4uLmFjY3VtdWxhdG9yLFxuICAgICAgICAgICAgICAuLi5nZXRGaWVsZHNGcm9tRGVzY3JpcHRvcihcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgb3BlbkFwaVNjaGVtYSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9ycyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICBbXSxcbiAgICApLFxuICAgIGlzRXF1YWwsXG4gICk7XG4gIGNvbnN0IGJhc2ljRmllbGRzID0gWy4uLm9wZW5BcGlGaWVsZHMsIC4uLmRlc2NyaXB0b3JGaWVsZHNdO1xuXG4gIGNvbnN0IHJlbGF0aW9uRmllbGRzID0gZ2V0UmVsYXRlZEZpZWxkcyhcbiAgICBiYXNpY0ZpZWxkcy5maWx0ZXIoZmllbGRTaG91bGRSZXZlYWwpLFxuICApO1xuXG4gIGNvbnN0IHRyZWVGaWVsZHMgPSBbXG4gICAgLi4uZ2V0VHJlZUZpZWxkcyhcbiAgICAgIHJlbGF0aW9uRmllbGRzLmZpbHRlcihmID0+ICFmLnBhcmVudCksXG4gICAgICByZWxhdGlvbkZpZWxkcy5maWx0ZXIoZiA9PiAhIWYucGFyZW50KSxcbiAgICApLFxuICAgIC8vIOWFvOWuueiAgeeahOaVsOaNrue7k+aehFxuICAgIC4uLnJlbGF0aW9uRmllbGRzLmZpbHRlcihmID0+ICFmLl9kaXJ0eSksXG4gIF0gYXMgT3BlcmFuZEZpZWxkW107XG5cbiAgLy8g5L+d55WZ77yM5YW85a656ICB5pWw5o2u57uT5p6EXG4gIGNvbnN0IFtcbiAgICBhZHZhbmNlZEZpZWxkcyA9IFtdLFxuICAgIGFycmF5RmllbGRzID0gW10sXG4gICAgZ3JvdXBGaWVsZHMgPSBbXSxcbiAgICBub3JtYWxGaWVsZHMgPSBbXSxcbiAgXSA9IHJlZHVjZShcbiAgICB0cmVlRmllbGRzLFxuICAgIChcbiAgICAgIFtcbiAgICAgICAgYWR2YW5jZWRGaWVsZHNBY2N1bXVsYXRvciA9IFtdIGFzIE9wZXJhbmRGaWVsZFtdLFxuICAgICAgICBhcnJheUZpZWxkc0FjY3VtdWxhdG9yID0gW10gYXMgT3BlcmFuZEZpZWxkW10sXG4gICAgICAgIGdyb3VwRmllbGRzQWNjdW11bGF0b3IgPSBbXSBhcyBPcGVyYW5kRmllbGRbXSxcbiAgICAgICAgbm9ybWFsRmllbGRzQWNjdW11bGF0b3IgPSBbXSBhcyBPcGVyYW5kRmllbGRbXSxcbiAgICAgIF0sXG4gICAgICBmaWVsZDogT3BlcmFuZEZpZWxkLFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgbWFwcGVycyA9IFtcbiAgICAgICAgeyBzcGVjOiBTcGVjQ2FwYWJpbGl0eS5hcnJheUZpZWxkR3JvdXAsIGFjYzogYXJyYXlGaWVsZHNBY2N1bXVsYXRvciB9LFxuICAgICAgICB7IHNwZWM6IFNwZWNDYXBhYmlsaXR5LmZpZWxkR3JvdXAsIGFjYzogZ3JvdXBGaWVsZHNBY2N1bXVsYXRvciB9LFxuICAgICAgICB7IHNwZWM6IFNwZWNDYXBhYmlsaXR5LmFkdmFuY2VkLCBhY2M6IGFkdmFuY2VkRmllbGRzQWNjdW11bGF0b3IgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBhY2MgPSBtYXBwZXJzLmZpbmQobWFwcGVyID0+XG4gICAgICAgIGhhc0Rlc2NyaXB0b3IoZmllbGQsIG1hcHBlci5zcGVjKSxcbiAgICAgICk/LmFjYztcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGFkdmFuY2VkRmllbGRzQWNjdW11bGF0b3IsXG4gICAgICAgIGFycmF5RmllbGRzQWNjdW11bGF0b3IsXG4gICAgICAgIGdyb3VwRmllbGRzQWNjdW11bGF0b3IsXG4gICAgICAgIG5vcm1hbEZpZWxkc0FjY3VtdWxhdG9yLFxuICAgICAgXS5tYXAociA9PiB7XG4gICAgICAgIGlmICgoIWFjYyAmJiByID09PSBub3JtYWxGaWVsZHNBY2N1bXVsYXRvcikgfHwgciA9PT0gYWNjKSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5yLCBmaWVsZF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbm9ybWFsRmllbGRzOiBzb3J0RmllbGRzKG5vcm1hbEZpZWxkcywgZGVzY3JpcHRvcnMpLFxuICAgIGZpZWxkR3JvdXBzOiBzb3J0R3JvdXBGaWVsZHMoZ3JvdXBGaWVsZHMsIGRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yRmllbGRzKSxcbiAgICBhcnJheUZpZWxkR3JvdXBzOiBnZXRBcnJheUZpZWxkcyhhcnJheUZpZWxkcywgZGVzY3JpcHRvckZpZWxkcyksXG4gICAgYWR2YW5jZWRGaWVsZHM6IHNvcnRGaWVsZHMoYWR2YW5jZWRGaWVsZHMsIGRlc2NyaXB0b3JzKSxcbiAgICBkZXNjcmlwdG9yRmllbGRzLFxuICAgIG9wZW5BcGlGaWVsZHMsXG4gICAgYmFzaWNGaWVsZHMsXG4gICAgdHJlZUZpZWxkcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QXJyYXlGaWVsZHMoXG4gIGZpZWxkczogT3BlcmFuZEZpZWxkW10sXG4gIGRlc2NyaXB0b3JGaWVsZHM6IE9wZXJhbmRGaWVsZFtdLFxuKSB7XG4gIC8vIGFycmF5IGZpZWxkc1xuICBjb25zdCBncm91cGVkQXJyYXlGaWVsZHNCeU5hbWUgPSBncm91cEJ5KGZpZWxkcywgZmllbGQgPT4ge1xuICAgIGNvbnN0IHsgZ3JvdXBOYW1lIH0gPSBwYXJzZUdyb3VwRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgcmV0dXJuIGdyb3VwTmFtZTtcbiAgfSk7XG5cbiAgLy8gTWFwIHtncm91cE5hbWU6IHN0cmluZywgZmllbGRMaXN0czogT3BlcmFuZEZpZWxkW11bXX0sIHdoZXJlIE9wZXJhbmRGaWVsZCBpcyBhIG5lc3RlZCBhcnJheVxuICAvLyBvZiB0aGUgYXBwcm9wcmlhdGUgZmllbGRzLCBncm91cGVkIGJ5IGluZGV4LlxuICByZXR1cm4gbWFwKGdyb3VwZWRBcnJheUZpZWxkc0J5TmFtZSwgKGZpZWxkc0luR3JvdXAsIGdyb3VwTmFtZTogc3RyaW5nKSA9PiAoe1xuICAgIGdyb3VwTmFtZSxcbiAgICBkaXNwbGF5TmFtZTogc3RhcnRDYXNlKGdyb3VwTmFtZSksXG4gICAgY2FwYWJpbGl0aWVzOlxuICAgICAgZGVzY3JpcHRvckZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLnBhdGggPT09IGBzcGVjLiR7Z3JvdXBOYW1lfWApXG4gICAgICAgID8uY2FwYWJpbGl0aWVzID8/IFtdLFxuICAgIGZpZWxkTGlzdHM6IHJlZHVjZShcbiAgICAgIGZpZWxkc0luR3JvdXAsXG4gICAgICAoZmllbGRMaXN0c0FjY3VtdWxhdG9yLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBtYXRjaCB9ID0gcGFyc2VBcnJheVBhdGgoZmllbGQucGF0aCk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGZpZWxkTGlzdHNBY2N1bXVsYXRvcltpbmRleF0gPSBbXG4gICAgICAgICAgICAuLi4oZmllbGRMaXN0c0FjY3VtdWxhdG9yW2luZGV4XSB8fCBbXSksXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWVsZExpc3RzQWNjdW11bGF0b3I7XG4gICAgICB9LFxuICAgICAgW10gYXMgT3BlcmFuZEZpZWxkW11bXSxcbiAgICApLFxuICAgIF9kaXJ0eTogZmFsc2UsXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gc29ydEZpZWxkcyhmaWVsZHM6IE9wZXJhbmRGaWVsZFtdLCBkZXNjcmlwdG9yczogRGVzY3JpcHRvcltdKSB7XG4gIHJldHVybiBzb3J0QnkoZmllbGRzLCBmaWVsZCA9PlxuICAgIGRlc2NyaXB0b3JzLmZpbmRJbmRleChcbiAgICAgIGQgPT4gbm9ybWFsaXplUGF0aChkLnBhdGgpID09PSBub3JtYWxpemVQYXRoKGZpZWxkLnBhdGgpLFxuICAgICksXG4gICk7XG59XG5cbmZ1bmN0aW9uIHNvcnRHcm91cEZpZWxkcyhcbiAgZmllbGRzOiBPcGVyYW5kRmllbGRbXSxcbiAgZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JbXSxcbiAgZGVzY3JpcHRvckZpZWxkczogT3BlcmFuZEZpZWxkW10sXG4pIHtcbiAgY29uc3QgZ3JvdXBlZEZpZWxkc0J5TmFtZSA9IGdyb3VwQnkoXG4gICAgc29ydEZpZWxkcyhmaWVsZHMsIGRlc2NyaXB0b3JzKSxcbiAgICBmaWVsZCA9PiB7XG4gICAgICBjb25zdCB7IGdyb3VwTmFtZSB9ID0gcGFyc2VHcm91cERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgcmV0dXJuIGdyb3VwTmFtZTtcbiAgICB9LFxuICApO1xuICByZXR1cm4gbWFwKGdyb3VwZWRGaWVsZHNCeU5hbWUsIChmaWVsZExpc3QsIGdyb3VwTmFtZSkgPT4gKHtcbiAgICBncm91cE5hbWUsXG4gICAgZGlzcGxheU5hbWU6IHN0YXJ0Q2FzZShncm91cE5hbWUpLFxuICAgIGNhcGFiaWxpdGllczpcbiAgICAgIGRlc2NyaXB0b3JGaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5wYXRoID09PSBgc3BlYy4ke2dyb3VwTmFtZX1gKVxuICAgICAgICA/LmNhcGFiaWxpdGllcyA/PyBbXSxcbiAgICBmaWVsZExpc3QsXG4gIH0pKTtcbn1cbiJdfQ==
@@ -1,10 +1,16 @@
1
1
  import { ChangeDetectorRef } from '@angular/core';
2
+ import { getFieldDescription, getFieldDocLink, getFieldDocOption, getFieldTooltip, isFieldDescriptionAsLink } from '../utils';
2
3
  import { OperandFieldComponent } from './operand-field.component';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class FormItemComponent {
5
6
  readonly fieldComponent: OperandFieldComponent;
6
7
  private readonly cdr;
7
8
  plain: boolean;
9
+ getFieldTooltip: typeof getFieldTooltip;
10
+ getFieldDescription: typeof getFieldDescription;
11
+ getFieldDocLink: typeof getFieldDocLink;
12
+ getFieldDocOption: typeof getFieldDocOption;
13
+ isFieldDescriptionAsLink: typeof isFieldDescriptionAsLink;
8
14
  constructor(fieldComponent: OperandFieldComponent, cdr: ChangeDetectorRef);
9
15
  static ɵfac: i0.ɵɵFactoryDeclaration<FormItemComponent, never>;
10
16
  static ɵcmp: i0.ɵɵComponentDeclaration<FormItemComponent, "acl-crd-form-item", never, { "plain": { "alias": "plain"; "required": false; }; }, {}, never, ["*"], false, never>;
@@ -18,6 +18,6 @@ import * as i16 from "@alauda-fe/common";
18
18
  import * as i17 from "./widgets/link/component";
19
19
  export declare class FieldControlsModule {
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldControlsModule, never>;
21
- static ɵmod: i0.ɵɵNgModuleDeclaration<FieldControlsModule, [typeof i1.FormItemComponent, typeof i2.OperandAdvancedFieldGroupComponent, typeof i3.OperandArrayFieldGroupComponent, typeof i4.OperandFieldGroupComponent, typeof i5.OperandFieldComponent, typeof i6.CrdFormArrayTableComponent, typeof i7.K8sResourcePrefixComponent, typeof i8.ResourceRequirementsComponent, typeof i9.YamlEditorComponent, typeof i10.BasicAuthSecretComponent, typeof i11.BasicAuthCreateSecretDialogComponent], [typeof i12.CommonModule, typeof i13.FormsModule, typeof i13.ReactiveFormsModule, typeof i14.FormModule, typeof i14.IconModule, typeof i14.InputModule, typeof i14.RadioModule, typeof i14.SelectModule, typeof i14.SwitchModule, typeof i14.TagModule, typeof i14.TooltipModule, typeof i14.DialogModule, typeof i14.ButtonModule, typeof i15.CodeEditorModule, typeof i16.ArrayFormTableModule, typeof i16.ErrorsMapperModule, typeof i16.StrongPasswordValidatorModule, typeof i16.TranslateModule, typeof i16.CoreModule, typeof i16.WidgetModule, typeof i17.LinkComponent, typeof i16.PasswordInputComponent], [typeof i1.FormItemComponent, typeof i2.OperandAdvancedFieldGroupComponent, typeof i3.OperandArrayFieldGroupComponent, typeof i4.OperandFieldGroupComponent, typeof i5.OperandFieldComponent, typeof i6.CrdFormArrayTableComponent, typeof i7.K8sResourcePrefixComponent, typeof i8.ResourceRequirementsComponent, typeof i9.YamlEditorComponent, typeof i10.BasicAuthSecretComponent, typeof i11.BasicAuthCreateSecretDialogComponent]>;
21
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FieldControlsModule, [typeof i1.FormItemComponent, typeof i2.OperandAdvancedFieldGroupComponent, typeof i3.OperandArrayFieldGroupComponent, typeof i4.OperandFieldGroupComponent, typeof i5.OperandFieldComponent, typeof i6.CrdFormArrayTableComponent, typeof i7.K8sResourcePrefixComponent, typeof i8.ResourceRequirementsComponent, typeof i9.YamlEditorComponent, typeof i10.BasicAuthSecretComponent, typeof i11.BasicAuthCreateSecretDialogComponent], [typeof i12.CommonModule, typeof i13.FormsModule, typeof i13.ReactiveFormsModule, typeof i14.FormModule, typeof i14.IconModule, typeof i14.InputModule, typeof i14.RadioModule, typeof i14.SelectModule, typeof i14.SwitchModule, typeof i14.TagModule, typeof i14.TooltipModule, typeof i14.DialogModule, typeof i14.ButtonModule, typeof i15.CodeEditorModule, typeof i16.ArrayFormTableModule, typeof i16.ErrorsMapperModule, typeof i16.StrongPasswordValidatorModule, typeof i16.TranslateModule, typeof i16.CoreModule, typeof i16.WidgetModule, typeof i17.LinkComponent, typeof i16.PasswordInputComponent, typeof i16.DocsDirective], [typeof i1.FormItemComponent, typeof i2.OperandAdvancedFieldGroupComponent, typeof i3.OperandArrayFieldGroupComponent, typeof i4.OperandFieldGroupComponent, typeof i5.OperandFieldComponent, typeof i6.CrdFormArrayTableComponent, typeof i7.K8sResourcePrefixComponent, typeof i8.ResourceRequirementsComponent, typeof i9.YamlEditorComponent, typeof i10.BasicAuthSecretComponent, typeof i11.BasicAuthCreateSecretDialogComponent]>;
22
22
  static ɵinj: i0.ɵɵInjectorDeclaration<FieldControlsModule>;
23
23
  }
@@ -12,7 +12,7 @@ export declare class OperandFieldGroupComponent {
12
12
  get expanded(): boolean;
13
13
  set expanded(expanded: boolean);
14
14
  fieldValueChange(e: FieldValueChangeEvent): void;
15
- getGroupName(field: OperandFieldGroup): string | import("@alauda-fe/common").LocaleDisplay | {
15
+ getGroupName(field: OperandFieldGroup): string | {
16
16
  en: string;
17
17
  zh: string;
18
18
  };
@@ -6,7 +6,7 @@ import { Observable, Subject, BehaviorSubject } from 'rxjs';
6
6
  import { CrdFormComponent } from '../crd-form/component';
7
7
  import { RemoteWidgetModuleDefinition } from '../remote-widgets';
8
8
  import { FieldValueChangeEvent, FormDataState, FormErrors, OperandField, SpecCapability } from '../types';
9
- import { getDisplayByCapability, getFieldDescription, getFieldDisplayName, getFieldType, getRadioOptions } from '../utils';
9
+ import { getFieldDescription, getFieldDisplayName, getFieldPlaceholder, getFieldType, getRadioOptions } from '../utils';
10
10
  import { isLink } from './widgets/link/component';
11
11
  import * as i0 from "@angular/core";
12
12
  export declare const PASSWORD_REVEAL = "******";
@@ -43,8 +43,8 @@ export declare class OperandFieldComponent implements OnInit, OnDestroy, OnChang
43
43
  SpecCapability: typeof SpecCapability;
44
44
  getFieldDisplayName: typeof getFieldDisplayName;
45
45
  getFieldDescription: typeof getFieldDescription;
46
+ getFieldPlaceholder: typeof getFieldPlaceholder;
46
47
  getRadioOptions: typeof getRadioOptions;
47
- getDisplayByCapability: typeof getDisplayByCapability;
48
48
  editorOptions: import("@alauda-fe/common").IEditorConstructionOptions;
49
49
  editorActions: import("@alauda/code-editor").CodeEditorActionsConfig;
50
50
  isGroupField: (field: OperandField) => field is import("../types").OperandFieldGroup;
@@ -3,7 +3,6 @@ import { Injector, OnInit } from '@angular/core';
3
3
  import { ControlContainer, FormControl, FormGroup } from '@angular/forms';
4
4
  import { BaseResourceFormGroupComponent } from 'ng-resource-form-util';
5
5
  import { OperandField } from '../../../types';
6
- import { getFieldDescription, getFieldDisplayName } from '../../../utils';
7
6
  import { OperandFieldComponent } from '../../operand-field.component';
8
7
  import * as i0 from "@angular/core";
9
8
  export declare class ResourceRequirementsComponent extends BaseResourceFormGroupComponent<ResourceRequirementStrict, ResourceRequirementFormModal> implements OnInit {
@@ -47,8 +46,6 @@ export declare class ResourceRequirementsComponent extends BaseResourceFormGroup
47
46
  }[];
48
47
  memory: string[];
49
48
  };
50
- getFieldDisplayName: typeof getFieldDisplayName;
51
- getFieldDescription: typeof getFieldDescription;
52
49
  getResourceValue: typeof getResourceValue;
53
50
  getResourceViewModel: typeof getResourceViewModel;
54
51
  constructor(injector: Injector, fieldComponent: OperandFieldComponent, controlContainer: ControlContainer, translate: TranslateService);
@@ -1,4 +1,4 @@
1
- import { JSONSchema6TypeName, LocaleDisplay } from '@alauda-fe/common';
1
+ import { JSONSchema6TypeName } from '@alauda-fe/common';
2
2
  import { ValidationErrors } from '@angular/forms';
3
3
  import { Map } from 'immutable';
4
4
  export declare enum Validations {
@@ -12,50 +12,69 @@ export declare enum Validations {
12
12
  export declare const SpecCapabilityUIPrefix = "urn:alm:descriptor:com.tectonic.ui";
13
13
  export declare const SpecCapabilityWidgetsPrefix = "urn:alm:descriptor:widgets";
14
14
  export declare enum SpecCapability {
15
- podCount = "urn:alm:descriptor:com.tectonic.ui:podCount",
16
- resourceRequirements = "urn:alm:descriptor:com.tectonic.ui:resourceRequirements",
17
- booleanSwitch = "urn:alm:descriptor:com.tectonic.ui:booleanSwitch",
15
+ /**
16
+ * 表单 UI 控件
17
+ */
18
18
  text = "urn:alm:descriptor:com.tectonic.ui:text",
19
19
  textarea = "urn:alm:descriptor:com.tectonic.ui:textarea",
20
- password = "urn:alm:descriptor:com.tectonic.ui:password",
21
- confirmPassword = "urn:alm:descriptor:com.tectonic.ui:password:confirm",
22
- externalPassword = "urn:alm:descriptor:com.tectonic.ui:externalPassword",
20
+ yaml = "urn:alm:descriptor:com.tectonic.ui:yaml",
23
21
  number = "urn:alm:descriptor:com.tectonic.ui:number",
22
+ podCount = "urn:alm:descriptor:com.tectonic.ui:podCount",
23
+ booleanSwitch = "urn:alm:descriptor:com.tectonic.ui:booleanSwitch",
24
+ radio = "urn:alm:descriptor:com.tectonic.ui:radio:",
24
25
  tagsInput = "urn:alm:descriptor:com.tectonic.ui:tagsInput",
25
- fieldGroup = "urn:alm:descriptor:com.tectonic.ui:fieldGroup:",
26
- arrayFieldGroup = "urn:alm:descriptor:com.tectonic.ui:arrayFieldGroup:",
27
26
  select = "urn:alm:descriptor:com.tectonic.ui:select:",
28
- advanced = "urn:alm:descriptor:com.tectonic.ui:advanced",
29
- fieldDependency = "urn:alm:descriptor:com.tectonic.ui:fieldDependency:",
30
- defaultValue = "urn:alm:descriptor:com.tectonic.default:",
31
- hidden = "urn:alm:descriptor:com.tectonic.ui:hidden",
27
+ password = "urn:alm:descriptor:com.tectonic.ui:password",
28
+ confirmPassword = "urn:alm:descriptor:com.tectonic.ui:password:confirm",
29
+ externalPassword = "urn:alm:descriptor:com.tectonic.ui:externalPassword",
30
+ widgets = "urn:alm:descriptor:widgets:",
31
+ remote = "urn:alm:descriptor:remote:",
32
32
  k8sResourcePrefix = "urn:alm:descriptor:io.kubernetes:",
33
- labelEn = "urn:alm:descriptor:label:en:",
34
- labelZh = "urn:alm:descriptor:label:zh:",
35
- descriptionEn = "urn:alm:descriptor:description:en:",
36
- descriptionZh = "urn:alm:descriptor:description:zh:",
33
+ basicAuthSecret = "urn:alm:descriptor:com.tectonic.ui:basicAuthSecret",
34
+ resourceRequirements = "urn:alm:descriptor:com.tectonic.ui:resourceRequirements",
35
+ arrayFieldGroup = "urn:alm:descriptor:com.tectonic.ui:arrayFieldGroup:",
36
+ arrayTable = "urn:alm:descriptor:widgets:common:arrayTable",
37
+ array = "urn:alm:descriptor:com.tectonic.ui:array",
38
+ /**
39
+ * @deprecated
40
+ */
41
+ object = "urn:alm:descriptor:com.tectonic.ui:object",
42
+ /**
43
+ * aui-form 表单元素
44
+ */
45
+ label = "urn:alm:descriptor:label:",
46
+ description = "urn:alm:descriptor:description:",
37
47
  placeholder = "urn:alm:descriptor:placeholder:",
38
- fieldGroupName = "urn:alm:descriptor:fieldGroupName:",
39
48
  tooltip = "urn:alm:descriptor:tooltip:",
49
+ descriptionAsLink = "urn:alm:descriptor:descriptionAsLink",// 存在为 true,不设置为 false
50
+ docOption = "urn:alm:descriptor:docOption:",// docOption:{product}:{path}
51
+ docLink = "urn:alm:descriptor:docLink:",// docOption:{link}
52
+ validation = "urn:alm:descriptor:com.tectonic.ui:validation:",
53
+ /**
54
+ * 表单布局/控制能力
55
+ */
56
+ hidden = "urn:alm:descriptor:com.tectonic.ui:hidden",
57
+ defaultValue = "urn:alm:descriptor:com.tectonic.default:",
58
+ fieldGroup = "urn:alm:descriptor:com.tectonic.ui:fieldGroup:",
59
+ advanced = "urn:alm:descriptor:com.tectonic.ui:advanced",
60
+ fieldDependency = "urn:alm:descriptor:com.tectonic.ui:fieldDependency:",
61
+ oneOf = "urn:alm:descriptor:oneOf:",
62
+ /**
63
+ * UI 控件特性扩展
64
+ */
40
65
  expression = "urn:alm:descriptor:expression:",
41
- yaml = "urn:alm:descriptor:com.tectonic.ui:yaml",
42
66
  yamlActionsDisabled = "urn:alm:descriptor:yaml:actions:disabled:",
43
67
  yamlResult = "urn:alm:descriptor:yaml:result:",
44
- oneOf = "urn:alm:descriptor:oneOf:",
45
- object = "urn:alm:descriptor:com.tectonic.ui:object",
46
- array = "urn:alm:descriptor:com.tectonic.ui:array",
47
68
  folded = "urn:alm:descriptor:com.tectonic.ui:folded",
48
69
  emptyArray = "urn:alm:descriptor:com.tectonic.ui:emptyArray",
49
- validation = "urn:alm:descriptor:com.tectonic.ui:validation:",
50
70
  multiple = "urn:alm:descriptor:com.tectonic.ui:multiple",
51
71
  allowCreate = "urn:alm:descriptor:com.tectonic.ui:allowCreate",
52
72
  creatable = "urn:alm:descriptor:com.tectonic.ui:creatable",
53
73
  clearable = "urn:alm:descriptor:com.tectonic.ui:clearable",
54
74
  disabled = "urn:alm:descriptor:com.tectonic.ui:disabled",
55
- radio = "urn:alm:descriptor:com.tectonic.ui:radio:",
56
- widgets = "urn:alm:descriptor:widgets:",
57
- basicAuthSecret = "urn:alm:descriptor:com.tectonic.ui:basicAuthSecret",
58
- remote = "urn:alm:descriptor:remote:",
75
+ /**
76
+ * 其他
77
+ */
59
78
  pathTag = "urn:alm:descriptor:com.tectonic.ui:path.tag:"
60
79
  }
61
80
  export interface Descriptor {
@@ -95,7 +114,6 @@ export interface OperandField {
95
114
  }
96
115
  export interface OperandFieldGroup extends OperandField {
97
116
  groupName: string;
98
- groupDisplay: LocaleDisplay;
99
117
  fieldList: OperandField[];
100
118
  }
101
119
  export interface OperandArrayFieldGroup extends OperandField {
@@ -1,4 +1,4 @@
1
- import { Dictionary, JSONSchema6TypeName, StringMap } from '@alauda-fe/common';
1
+ import { Dictionary, JSONSchema6TypeName, StringMap, DocsOption } from '@alauda-fe/common';
2
2
  import { Descriptor, OperandArrayFieldGroup, OperandField, OperandFieldGroup, OperandFieldValidation, SpecCapability } from '../types';
3
3
  export declare function getBasicAuthSecretConfig(field: OperandField): unknown;
4
4
  export declare function getRadioOptions(capabilities: SpecCapability[]): {
@@ -30,14 +30,21 @@ export declare function getFieldDisplayName(field: OperandField | OperandArrayFi
30
30
  en: string;
31
31
  zh: string;
32
32
  };
33
- export declare function getDisplayByCapability(capabilities: SpecCapability[], name: string, fallback?: string): {
33
+ export declare function getFieldDescription(field: OperandField): {
34
34
  en: string;
35
35
  zh: string;
36
36
  };
37
- export declare function getFieldDescription(field: OperandField): {
37
+ export declare function getFieldPlaceholder(field: OperandField): {
38
+ en: string;
39
+ zh: string;
40
+ };
41
+ export declare function getFieldTooltip(field: OperandField): {
38
42
  en: string;
39
43
  zh: string;
40
44
  };
45
+ export declare function isFieldDescriptionAsLink(field: OperandField): boolean;
46
+ export declare function getFieldDocLink(field: OperandField): string;
47
+ export declare function getFieldDocOption(field: OperandField): DocsOption;
41
48
  export declare function getK8sResourcePrefixOptions(field: OperandField): {
42
49
  namespaced: boolean;
43
50
  labelSelector: string;
@@ -26,10 +26,6 @@ export declare function createCapabilityField(descriptors: Descriptor[], openApi
26
26
  fieldGroups: {
27
27
  groupName: string;
28
28
  displayName: string;
29
- groupDisplay: {
30
- en: string;
31
- zh: string;
32
- };
33
29
  capabilities: SpecCapability[];
34
30
  fieldList: OperandField[];
35
31
  }[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alauda-fe/crd-form",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "peerDependencies": {
5
5
  "@alauda-fe/i18n": "1.0.3",
6
6
  "@angular/common": "^13.2.0",