@igo2/geo 17.0.0-next.14 → 17.0.0-next.16
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.
|
@@ -586,6 +586,14 @@ export class OgcFilterWriter {
|
|
|
586
586
|
conditions.push(condition);
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
|
+
if (ogcFilters.filters &&
|
|
590
|
+
'operator' in ogcFilters.filters &&
|
|
591
|
+
ogcFilters.filters.operator.toLowerCase() ===
|
|
592
|
+
OgcFilterOperator.During.toLowerCase() &&
|
|
593
|
+
ogcFilters.filters.active &&
|
|
594
|
+
ogcFilters.interfaceOgcFilters?.length > 0) {
|
|
595
|
+
conditions.push(ogcFilters.interfaceOgcFilters[0]);
|
|
596
|
+
}
|
|
589
597
|
if (conditions.length >= 1) {
|
|
590
598
|
filterQueryStringSelector = this.buildFilter(conditions.length === 1
|
|
591
599
|
? conditions[0]
|
|
@@ -739,4 +747,4 @@ export class OgcFilterWriter {
|
|
|
739
747
|
}
|
|
740
748
|
}
|
|
741
749
|
}
|
|
742
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdoRCxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBYTdFLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGNBQWMsR0FBZ0MsRUFBRSxDQUFDO0lBQ2xELFNBQVMsR0FBRztRQUNqQixDQUFDLGlCQUFpQixDQUFDLGlCQUEyQixDQUFDLEVBQUU7WUFDL0MsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsRUFBRTtTQUNsQjtRQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxFQUFFO1NBQ2xCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxjQUF3QixDQUFDLEVBQUU7WUFDNUMsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLHFCQUErQixDQUFDLEVBQUU7WUFDbkQsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3QyxDQUFDLEVBQUU7WUFDNUQsT0FBTyxFQUFFLEtB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QyxNQUFNLEVBQUU7Z0JBQ25CLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sV0FBVyxLQUFLLEtBQUs7Z0JBQzFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDckUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtxQkFDTCxLQUFLLENBQUMsS0FBSyxDQUFDO3FCQUNaLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO3FCQUNqRCxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sV0FBVyxLQUFLLEtBQUs7Z0JBQzFCLENBQUMsQ0FBQyxNQUFNLEVBQUU7cUJBQ0wsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7cUJBQ3RELE1BQU0sRUFBRTtnQkFDYixDQUFDLENBQUMsTUFBTSxFQUFFO3FCQUNMLEtBQUssQ0FBQyxLQUFLLENBQUM7cUJBQ1osUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7cUJBQ3RELE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYmplY3RVdGlscywgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xGb3JtYXRXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvciwgT2djRmlsdGVyT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHtcbiAgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgSWdvT2djU2VsZWN0b3IsXG4gIE9nY0ZpbHRlcixcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcbiAgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJlxuICAgICAgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVyc09wdGlvbnMucmFkaW9CdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCB8fFxuICAgICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogRXh0ZW50LFxuICAgIHByb2o/OiBvbFByb2plY3Rpb24sXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIGxldCBvdXJCYm94RmlsdGVyO1xuICAgIGxldCBlbmFibGVCYm94OiBib29sZWFuO1xuICAgIGlmICgvaW50ZXJzZWN0c3xjb250YWluc3x3aXRoaW4vZ2kudGVzdChKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSkpIHtcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5hYmxlQmJveCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWVsZE5hbWVHZW9tZXRyeSA9XG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lXG4gICAgICAgICAgOiBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICB9XG4gICAgaWYgKGV4dGVudCAmJiBmaWx0ZXJzKSB7XG4gICAgICBvdXJCYm94RmlsdGVyID0gb2xmaWx0ZXIuYmJveChmaWVsZE5hbWVHZW9tZXRyeSwgZXh0ZW50LCBwcm9qLmdldENvZGUoKSk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJBc3NlbWJseTogT2djRmlsdGVyO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgcHJvalxuICAgICAgKTtcbiAgICAgIGlmIChleHRlbnQgJiYgZW5hYmxlQmJveCkge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcbiAgICAgICAgICBvdXJCYm94RmlsdGVyLFxuICAgICAgICAgIHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2Jib3g9JyArIGV4dGVudC5qb2luKCcsJykgKyAnLCcgKyBwcm9qLmdldENvZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB3ZnNPcHRpb25zOiBXcml0ZUdldEZlYXR1cmVPcHRpb25zID0ge1xuICAgICAgc3JzTmFtZTogJycsXG4gICAgICBmZWF0dXJlTlM6ICcnLFxuICAgICAgZmVhdHVyZVByZWZpeDogJycsXG4gICAgICBmZWF0dXJlVHlwZXM6IFsnZmVhdHVyZVR5cGVzJ10sXG4gICAgICBmaWx0ZXI6IGZpbHRlckFzc2VtYmx5LFxuICAgICAgb3V0cHV0Rm9ybWF0OiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnlcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgb2xGb3JtYXRXRlMoKS53cml0ZUdldEZlYXR1cmUod2ZzT3B0aW9ucyk7XG4gICAgY29uc3Qgc3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhxdWVyeSk7XG4gICAgY29uc3QgcmVnZXhwMSA9IC90eXBlbmFtZXMgKj18dHlwZW5hbWUgKj1cXFwiZmVhdHVyZVR5cGVzXFxcIiAqPi9naTtcbiAgICBjb25zdCByZWdleHAyID0gLzxcXC9RdWVyeT48XFwvR2V0RmVhdHVyZT4vZ2k7XG5cbiAgICByZXR1cm4gJ2ZpbHRlcj0nICsgc3RyLnNwbGl0KHJlZ2V4cDEpWzFdLnNwbGl0KHJlZ2V4cDIpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidW5kbGVGaWx0ZXIoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IFtdO1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgbG9naWNhbEFycmF5LnB1c2godGhpcy5idW5kbGVGaWx0ZXIoZWxlbWVudCwgb3B0aW9ucykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbG9naWNhbEFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdsb2dpY2FsJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9wZXJhdG9yOiBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGxvZ2ljYWxBcnJheTogdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVyT2JqZWN0LmZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpbHRlcihcbiAgICBmaWx0ZXJPcHRpb25zLFxuICAgIG9wdGlvbnM/OiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2djRmlsdGVyIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlck9wdGlvbnMub3BlcmF0b3I7XG4gICAgY29uc3QgbG9naWNhbEFycmF5ID0gZmlsdGVyT3B0aW9ucy5sb2dpY2FsQXJyYXk7XG5cbiAgICBjb25zdCB3ZnNQcm9wZXJ0eU5hbWUgPSBmaWx0ZXJPcHRpb25zLnByb3BlcnR5TmFtZTtcbiAgICBjb25zdCB3ZnNQYXR0ZXJuID0gZmlsdGVyT3B0aW9ucy5wYXR0ZXJuO1xuICAgIGNvbnN0IHdmc01hdGNoQ2FzZSA9IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA/IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA6IHRydWU7XG4gICAgY29uc3Qgd2ZzV2lsZENhcmQgPSBmaWx0ZXJPcHRpb25zLndpbGRDYXJkID8gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA6ICcqJztcbiAgICBjb25zdCB3ZnNTaW5nbGVDaGFyID0gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc2luZ2xlQ2hhclxuICAgICAgOiAnLic7XG4gICAgY29uc3Qgd2ZzRXNjYXBlQ2hhciA9IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLmVzY2FwZUNoYXJcbiAgICAgIDogJyEnO1xuXG4gICAgY29uc3Qgd2ZzTG93ZXJCb3VuZGFyeSA9IGZpbHRlck9wdGlvbnMubG93ZXJCb3VuZGFyeTtcbiAgICBjb25zdCB3ZnNVcHBlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy51cHBlckJvdW5kYXJ5O1xuXG4gICAgY29uc3Qgd2ZzR2VvbWV0cnlOYW1lID0gZmlsdGVyT3B0aW9ucy5nZW9tZXRyeU5hbWU7XG4gICAgY29uc3Qgd2ZzRXh0ZW50ID0gZmlsdGVyT3B0aW9ucy5leHRlbnQ7XG4gICAgY29uc3Qgd2ZzV2t0R2VvbWV0cnkgPSBmaWx0ZXJPcHRpb25zLndrdF9nZW9tZXRyeTtcbiAgICBjb25zdCB3ZnNTcnNOYW1lID0gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxuICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIGNvbnN0IHdmc0JlZ2luID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmJlZ2luLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWluRGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgY29uc3Qgd2ZzRW5kID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmVuZCxcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heERhdGUgOiB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgY29uc3Qgd2ZzRXhwcmVzc2lvbiA9IGZpbHRlck9wdGlvbnMuZXhwcmVzc2lvbjtcblxuICAgIGxldCBnZW9tZXRyeTogb2xHZW9tZXRyeTtcbiAgICBpZiAod2ZzV2t0R2VvbWV0cnkpIHtcbiAgICAgIGNvbnN0IHdrdCA9IG5ldyBvbEZvcm1hdFdLVCgpO1xuICAgICAgZ2VvbWV0cnkgPSB3a3QucmVhZEdlb21ldHJ5KHdmc1drdEdlb21ldHJ5LCB7XG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lLFxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogd2ZzU3JzTmFtZSB8fCAnRVBTRzozODU3J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChvcGVyYXRvci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkJCT1gudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmJib3god2ZzR2VvbWV0cnlOYW1lLCB3ZnNFeHRlbnQsIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2Vlbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmV0d2VlbihcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzTG93ZXJCb3VuZGFyeSB8fCAxZTQwICogLTEsXG4gICAgICAgICAgd2ZzVXBwZXJCb3VuZGFyeSB8fCAxZTQwXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5jb250YWlucyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5kdXJpbmcod2ZzUHJvcGVydHlOYW1lLCB3ZnNCZWdpbiwgd2ZzRW5kKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uLCB3ZnNNYXRjaENhc2UpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0cy50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaW50ZXJzZWN0cyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc051bGwudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmlzTnVsbCh3ZnNQcm9wZXJ0eU5hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxlc3NUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2UudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxpa2UoXG4gICAgICAgICAgd2ZzUHJvcGVydHlOYW1lLFxuICAgICAgICAgIHdmc1BhdHRlcm5cbiAgICAgICAgICAgID8gd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhcilcbiAgICAgICAgICAgIDogd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcbiAgICAgICAgICB3ZnNFc2NhcGVDaGFyLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90RXF1YWxUbyhcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzRXhwcmVzc2lvbixcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci53aXRoaW4od2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICAvLyBMT0dJQ0FMXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkFuZC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYW5kLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5vci5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Ob3QudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBnZW9tZXRyeU5hbWUsXG4gICAgbG9naWNhbCA9ICcnLFxuICAgIGxldmVsID0gLTFcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxuICAgICAgICAgIHRoaXMuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgbG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICBsZXZlbCA9IGxldmVsICsgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFkZEludGVyZmFjZUZpbHRlcihmaWx0ZXJPYmplY3QsIGdlb21ldHJ5TmFtZSwgbGV2ZWwsIGxvZ2ljYWwpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcXVlbmNlO1xuICB9XG5cbiAgcHVibGljIGNvbXB1dGVBbGxvd2VkT3BlcmF0b3JzKFxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGVcbiAgKSB7XG4gICAgbGV0IGVmZmVjdGl2ZU9wZXJhdG9yczoge30gPSB7fTtcbiAgICBsZXQgYWxsb3dlZE9wZXJhdG9ycztcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xuICAgIGxldCBpbmNsdWRlQ29udGFpbnM6IGJvb2xlYW47XG5cbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xuICAgICAgY29uc3Qgc3JjRmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IHByb3BlcnR5TmFtZSk7XG4gICAgICBhbGxvd2VkT3BlcmF0b3JzID1cbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA/IHNyY0ZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlXG4gICAgICAgICAgOiBkZWZhdWx0T3BlcmF0b3JzVHlwZTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRPcGVyYXRvcnNUeXBlID0gZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWwudG9Mb3dlckNhc2UoKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGluY2x1ZGVDb250YWlucyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvd2VkT3BlcmF0b3JzID0gYWxsb3dlZE9wZXJhdG9yc1xuICAgICAgPyBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XG5cbiAgICBzd2l0Y2ggKGFsbG93ZWRPcGVyYXRvcnMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpYzpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuVGltZTpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNOdW1lcmljT3BlcmF0b3I6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvcikge1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XG4gICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICB9O1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLldpdGhpbiA9IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfTtcbiAgICAgIGlmIChpbmNsdWRlQ29udGFpbnMpIHtcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xuICAgICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWZmZWN0aXZlT3BlcmF0b3JzO1xuICB9XG5cbiAgcHVibGljIGFkZEludGVyZmFjZUZpbHRlcihcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q/LFxuICAgIGdlb21ldHJ5TmFtZT8sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHBhcmVudExvZ2ljYWwgPSAnT3InXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xuICAgIGlmICghaWdvT2djRmlsdGVyT2JqZWN0KSB7XG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QgPSB7IG9wZXJhdG9yOiAnUHJvcGVydHlJc0VxdWFsVG8nIH07XG4gICAgfVxuICAgIGNvbnN0IGYgPSB7XG4gICAgICBwcm9wZXJ0eU5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgYWN0aXZlOiAnJyxcbiAgICAgIGZpbHRlcmlkOiB1dWlkKCksXG4gICAgICBzdGVwOiAnJyxcbiAgICAgIGJlZ2luOiAnJyxcbiAgICAgIGVuZDogJycsXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcbiAgICAgIGxvd2VyQm91bmRhcnk6ICcnLFxuICAgICAgdXBwZXJCb3VuZGFyeTogJycsXG4gICAgICBleHByZXNzaW9uOiAnJyxcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgd2lsZENhcmQ6ICcqJyxcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcbiAgICAgIGVzY2FwZUNoYXI6ICchJyxcbiAgICAgIG1hdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXG4gICAgICBpZ29TTlJDOiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogJycsXG4gICAgICBnZW9tZXRyeTogJycsXG4gICAgICB3a3RfZ2VvbWV0cnk6ICcnLFxuICAgICAgZXh0ZW50OiAnJyxcbiAgICAgIHNyc05hbWU6ICcnLFxuICAgICAgcGFyZW50TG9naWNhbDogJycsXG4gICAgICBsZXZlbDogMFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGYsXG4gICAgICB7XG4gICAgICAgIHBhcmVudExvZ2ljYWwsXG4gICAgICAgIGxldmVsLFxuICAgICAgICBnZW9tZXRyeU5hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlckFycmF5ID0gW107XG4gICAgaWYgKGZpbHRlck9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBmaWx0ZXJBcnJheS5wdXNoKFxuICAgICAgICAgIHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICBhY3RpdmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWx0ZXJBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxvZ2ljYWw6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcbiAgICAgICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBhY3RpdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0OiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcbiAgICBhY3RpdmUgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuZmlsdGVyaWRcbiAgICAgIDogdXVpZCgpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LmFjdGl2ZVxuICAgICAgOiBhY3RpdmU7XG5cbiAgICBjb25zdCBzcnNOYW1lID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdzcnNOYW1lJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LnNyc05hbWVcbiAgICAgIDogcHJvalxuICAgICAgICA/IHByb2ouZ2V0Q29kZSgpXG4gICAgICAgIDogJ0VQU0c6Mzg1Nyc7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBmaWx0ZXJpZCxcbiAgICAgICAgYWN0aXZlOiBzdGF0dXMsXG4gICAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJ2ZpeGVkRXh0ZW50JyxcbiAgICAgICAgc3JzTmFtZVxuICAgICAgfSxcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdCxcbiAgICAgIHsgZ2VvbWV0cnlOYW1lOiBmaWVsZE5hbWVHZW9tZXRyeSB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWJ1aWx0SWdvT2djRmlsdGVyT2JqZWN0RnJvbVNlcXVlbmNlKFxuICAgIHNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW11cbiAgKTogSWdvT2djRmlsdGVyT2JqZWN0IHtcbiAgICBpZiAoc2VxdWVuY2UgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgIGxldCBsYXN0UGFyZW50TG9naWNhbCA9IHNlcXVlbmNlWzBdLnBhcmVudExvZ2ljYWw7XG4gICAgICAgIGxldCBuZXh0RWxlbWVudDogYW55O1xuICAgICAgICBsZXQgbG9naWNhbEFycmF5ID0gW107XG4gICAgICAgIGxldCBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xuICAgICAgICBzZXF1ZW5jZS5mb3JFYWNoKCh1aUZpbHRlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCB1aUZpbHRlcik7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzZXF1ZW5jZS5pbmRleE9mKHVpRmlsdGVyKTtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHNlcXVlbmNlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5leHRFbGVtZW50ID0gc2VxdWVuY2VbaW5kZXggKyAxXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5hY3RpdmU7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuZmlsdGVyaWQ7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQucGFyZW50TG9naWNhbDtcbiAgICAgICAgICBsb2dpY2FsQXJyYXkucHVzaChlbGVtZW50KTtcblxuICAgICAgICAgIGlmIChzZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBlbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFBhcmVudExvZ2ljYWwgIT09IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWwpIHtcbiAgICAgICAgICAgIGlmIChsb2dpY2FsQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICdZb3UgbXVzdCBzZXQgYXQgJyArXG4gICAgICAgICAgICAgICAgICAnbGVhc3QgdHdvIG9wZXJhdG9yIGluIGEgbG9naWNhbCAoJyArXG4gICAgICAgICAgICAgICAgICBsYXN0UGFyZW50TG9naWNhbCArXG4gICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHsgbG9naWNhbDogbGFzdFBhcmVudExvZ2ljYWwsIGZpbHRlcnM6IGxvZ2ljYWxBcnJheSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGxvZ2ljYWxBcnJheSA9IFtsYXN0UHJvY2Vzc2VkRmlsdGVyXTtcbiAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgPSBuZXh0RWxlbWVudC5wYXJlbnRMb2dpY2FsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJZ29TZWxlY3RvcihzZWxlY3RvcnM6IElnb09nY1NlbGVjdG9yKTogSWdvT2djU2VsZWN0b3Ige1xuICAgIGlmIChcbiAgICAgIHNlbGVjdG9ycy5ncm91cHMuZXZlcnkoKGdyb3VwKSA9PiBncm91cC5jb21wdXRlZFNlbGVjdG9ycyAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHNlbGVjdG9ycztcbiAgICB9XG4gICAgbGV0IHNlbGVjdG9yOiBJZ29PZ2NTZWxlY3RvcjtcbiAgICBpZiAoc2VsZWN0b3JzLmdyb3VwcyAmJiBzZWxlY3RvcnMuYnVuZGxlcykge1xuICAgICAgaWYgKCFzZWxlY3RvcnMuYnVuZGxlcy5ldmVyeSgoYnVuZGxlKSA9PiBidW5kbGUuaWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBzZXQgYW4gaWQgZm9yIGVhY2ggb2YgeW91ciBidW5kbGVzJyk7XG4gICAgICB9XG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XG4gICAgICBzZWxlY3Rvci5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAudGl0bGUgPSBncm91cC50aXRsZSA/IGdyb3VwLnRpdGxlIDogZ3JvdXAubmFtZTtcbiAgICAgICAgZ3JvdXAuZW5hYmxlZCA9IGdyb3VwLmVuYWJsZWQgPyBncm91cC5lbmFibGVkIDogZmFsc2U7XG4gICAgICAgIGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzID0gT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgc2VsZWN0b3IuYnVuZGxlcy5maWx0ZXIoKGIpID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhiLmlkKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIXNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3VwcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcbiAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3IuYnVuZGxlcylcbiAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgYnVuZGxlczogc2VsZWN0b3JzIGFzIGFueSxcbiAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgICAgbmFtZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICAgICAgKSBhcyBPZ2NTZWxlY3RvckJ1bmRsZVtdXG4gICAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICAgIF0sXG4gICAgICAgIHNlbGVjdG9yVHlwZTogc2VsZWN0b3Iuc2VsZWN0b3JUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXNlbGVjdG9yLmdyb3Vwcy5maW5kKChzZWxlY3Rvckdyb3VwKSA9PiBzZWxlY3Rvckdyb3VwLmVuYWJsZWQpKSB7XG4gICAgICBzZWxlY3Rvci5ncm91cHNbMF0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxuICAgIGV4dGVudD86IEV4dGVudCxcbiAgICBwcm9qPzogb2xQcm9qZWN0aW9uXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgb2djRmlsdGVycyA9IG9wdGlvbnMub2djRmlsdGVycztcbiAgICBpZiAoIW9nY0ZpbHRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gJyc7XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzID0gJyc7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVycy5lbmFibGVkICYmXG4gICAgICAob2djRmlsdGVycy5wdXNoQnV0dG9ucyB8fFxuICAgICAgICBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgfHxcbiAgICAgICAgb2djRmlsdGVycy5zZWxlY3QgfHxcbiAgICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBsZXQgc2VsZWN0b3JzO1xuICAgICAgaWYgKG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5wdXNoQnV0dG9ucztcbiAgICAgICAgY29uc3QgcHVzaENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9ycyk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHB1c2hDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5jaGVja2JveGVzO1xuICAgICAgICBjb25zdCBjaGVja2JveENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNoZWNrYm94Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5yYWRpb0J1dHRvbnMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5yYWRpb0J1dHRvbnM7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcbiAgICAgICAgY29uc3QgcmFkaW9Db25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcmFkaW9Db25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnNlbGVjdCkge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnNlbGVjdDtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xuICAgICAgICBjb25zdCBzZWxlY3RDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygc2VsZWN0Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5hdXRvY29tcGxldGU7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gdGhpcy5idWlsZEZpbHRlcihcbiAgICAgICAgICBjb25kaXRpb25zLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBjb25kaXRpb25zWzBdXG4gICAgICAgICAgICA6IHsgbG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSxcbiAgICAgICAgICBleHRlbnQsXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIG9nY0ZpbHRlcnMuZmlsdGVycykge1xuICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgPSBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSB8fCBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICAgIGNvbnN0IGlnb0ZpbHRlcnMgPSBvZ2NGaWx0ZXJzLmZpbHRlcnM7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgIGlnb0ZpbHRlcnMsXG4gICAgICAgIGV4dGVudCxcbiAgICAgICAgcHJvaixcbiAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gb2djRmlsdGVycy5hZHZhbmNlZE9nY0ZpbHRlcnNcbiAgICAgID8gZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnNcbiAgICAgIDogZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvcjtcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd21zJykge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmcsXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLkxBWUVSU1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5mZWF0dXJlVHlwZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlclF1ZXJ5U3RyaW5nO1xuICB9XG5cbiAgcHVibGljIHZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzLmJ1bmRsZXMuZm9yRWFjaCgoYnVuZGxlKSA9PiB7XG4gICAgICBpZiAoIWJ1bmRsZS5tdWx0aXBsZSAmJiBidW5kbGUuc2VsZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRzID0gYnVuZGxlLnNlbGVjdG9ycy5yZWR1Y2UoXG4gICAgICAgICAgKGxpc3QsIGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICBmaWx0ZXIuZW5hYmxlZCA9PT0gdHJ1ZSA/IGxpc3QuY29uY2F0KGluZGV4KSA6IGxpc3QsXG4gICAgICAgICAgW11cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBlbmFibGVkcy5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgZW5hYmxlZHMuZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGJ1bmRsZS5zZWxlY3RvcnNbaW5kZXhdLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RvcnM7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVyczogT2djRmlsdGVyc09wdGlvbnMsIHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9ycyA9IHRoaXMuY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9ycyk7XG4gICAgY29uc3Qgc2VsZWN0b3JCdW5kbGUgPSBzZWxlY3RvcnMuZ3JvdXBzLmZpbmQoXG4gICAgICAoZykgPT4gZy5lbmFibGVkXG4gICAgKS5jb21wdXRlZFNlbGVjdG9ycztcbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgc2VsZWN0b3JCdW5kbGUubWFwKChidW5kbGUpID0+IHtcbiAgICAgIGNvbnN0IGJ1bmRsZUNvbmRpdGlvbiA9IFtdO1xuICAgICAgY29uc3Qgc2VsZWN0b3JzVHlwZSA9IGJ1bmRsZS5zZWxlY3RvcnMgYXMgYW55O1xuICAgICAgaWYgKCFzZWxlY3RvcnNUeXBlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNlbGVjdG9yc1R5cGVcbiAgICAgICAgLmZpbHRlcigob2djc2VsZWN0b3IpID0+IG9nY3NlbGVjdG9yLmVuYWJsZWQgPT09IHRydWUpXG4gICAgICAgIC5mb3JFYWNoKChlbmFibGVkU2VsZWN0b3IpID0+XG4gICAgICAgICAgYnVuZGxlQ29uZGl0aW9uLnB1c2goZW5hYmxlZFNlbGVjdG9yLmZpbHRlcnMpXG4gICAgICAgICk7XG4gICAgICBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICBsb2dpY2FsOiBidW5kbGUubG9naWNhbCxcbiAgICAgICAgICBmaWx0ZXJzOiBidW5kbGVDb25kaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgb2djRmlsdGVycy5zZWxlY3QgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUgPSBzZWxlY3RvcnM7XG4gICAgfVxuICAgIHJldHVybiBjb25kaXRpb25zO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICBwcm9jZXNzZWRGaWx0ZXI6IHN0cmluZyxcbiAgICBsYXllcnNPclR5cGVuYW1lczogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBhcHBsaWVkRmlsdGVyID0gJyc7XG4gICAgaWYgKHByb2Nlc3NlZEZpbHRlci5sZW5ndGggPT09IDAgJiYgbGF5ZXJzT3JUeXBlbmFtZXMuaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgICAgYXBwbGllZEZpbHRlciA9IHByb2Nlc3NlZEZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF5ZXJzT3JUeXBlbmFtZXMuc3BsaXQoJywnKS5mb3JFYWNoKChsYXllck9yVHlwZW5hbWVzKSA9PiB7XG4gICAgICAgIGFwcGxpZWRGaWx0ZXIgPSBgJHthcHBsaWVkRmlsdGVyfSgke3Byb2Nlc3NlZEZpbHRlci5yZXBsYWNlKFxuICAgICAgICAgICdmaWx0ZXI9JyxcbiAgICAgICAgICAnJ1xuICAgICAgICApfSlgO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGFwcGxpZWRGaWx0ZXIgPSBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoL1xcKFxcKS9nLCAnJyk7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPVxuICAgICAgYXBwbGllZEZpbHRlci5sZW5ndGggPiAwXG4gICAgICAgID8gYXBwbGllZEZpbHRlci5yZXBsYWNlKCdmaWx0ZXI9JywgJycpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZUZpbHRlck9wdGlvbkRhdGUodmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdub3cnKSB8fFxuICAgICAgdmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9kYXknKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VEYXRlT3BlcmF0aW9uKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIHRvIHBhcnNlIGRhdGUgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAgICogZXhlbXBsZSAndG9kYXkgKyAxIGRheXMnIG9yICdub3cgKyAxIHllYXJzJ1xuICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nIGRhdGVcbiAgICogQHJldHVybnMgZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZURhdGVPcGVyYXRpb24odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0aW9uU3BsaXR0ZWQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgbGVmdE9wZXJhbmQgPSBvcGVyYXRpb25TcGxpdHRlZFswXTtcbiAgICBjb25zdCBvcGVyYXRvciA9IFsnKycsICctJ10uaW5jbHVkZXMob3BlcmF0aW9uU3BsaXR0ZWRbMV0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzFdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodE9wZXJhbmQgPSAvXlswLTldKiQvLnRlc3Qob3BlcmF0aW9uU3BsaXR0ZWRbMl0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzJdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodFVuaXRPcGVyYW5kID0gKFxuICAgICAgWyd5ZWFycycsICdtb250aHMnLCAnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdzZWNvbmRzJ10uaW5jbHVkZXMoXG4gICAgICAgIG9wZXJhdGlvblNwbGl0dGVkWzNdXG4gICAgICApXG4gICAgICAgID8gb3BlcmF0aW9uU3BsaXR0ZWRbM11cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICApIGFzIG1vbWVudC5EdXJhdGlvbklucHV0QXJnMjtcblxuICAgIGlmICghb3BlcmF0b3IgfHwgIXJpZ2h0VW5pdE9wZXJhbmQgfHwgIXJpZ2h0T3BlcmFuZCkge1xuICAgICAgcmV0dXJuIGxlZnRPcGVyYW5kID09PSAnbm93J1xuICAgICAgICA/IG1vbWVudCgpLmZvcm1hdCgpXG4gICAgICAgIDogbW9tZW50KCkuZW5kT2YoJ2RheScpLmZvcm1hdCgpO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRvciA9PT0gJysnKSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KCkuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKS5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKVxuICAgICAgICAgICAgLmZvcm1hdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KClcbiAgICAgICAgICAgIC5zdWJ0cmFjdChwYXJzZUludChyaWdodE9wZXJhbmQsIDEwKSwgcmlnaHRVbml0T3BlcmFuZClcbiAgICAgICAgICAgIC5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuc3VidHJhY3QocGFyc2VJbnQocmlnaHRPcGVyYW5kLCAxMCksIHJpZ2h0VW5pdE9wZXJhbmQpXG4gICAgICAgICAgICAuZm9ybWF0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
750
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdoRCxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBYTdFLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGNBQWMsR0FBZ0MsRUFBRSxDQUFDO0lBQ2xELFNBQVMsR0FBRztRQUNqQixDQUFDLGlCQUFpQixDQUFDLGlCQUEyQixDQUFDLEVBQUU7WUFDL0MsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsRUFBRTtTQUNsQjtRQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxFQUFFO1NBQ2xCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxjQUF3QixDQUFDLEVBQUU7WUFDNUMsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLHFCQUErQixDQUFDLEVBQUU7WUFDbkQsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3QyxDQUFDLEVBQUU7WUFDNUQsT0FBTyxFQUFFLEtB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QyxLQUFLLENBQUM7cUJBQ1osUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7cUJBQ3RELE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYmplY3RVdGlscywgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xGb3JtYXRXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvciwgT2djRmlsdGVyT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHtcbiAgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgSWdvT2djU2VsZWN0b3IsXG4gIE9nY0ZpbHRlcixcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcbiAgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJlxuICAgICAgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVyc09wdGlvbnMucmFkaW9CdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCB8fFxuICAgICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogRXh0ZW50LFxuICAgIHByb2o/OiBvbFByb2plY3Rpb24sXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIGxldCBvdXJCYm94RmlsdGVyO1xuICAgIGxldCBlbmFibGVCYm94OiBib29sZWFuO1xuICAgIGlmICgvaW50ZXJzZWN0c3xjb250YWluc3x3aXRoaW4vZ2kudGVzdChKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSkpIHtcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5hYmxlQmJveCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWVsZE5hbWVHZW9tZXRyeSA9XG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lXG4gICAgICAgICAgOiBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICB9XG4gICAgaWYgKGV4dGVudCAmJiBmaWx0ZXJzKSB7XG4gICAgICBvdXJCYm94RmlsdGVyID0gb2xmaWx0ZXIuYmJveChmaWVsZE5hbWVHZW9tZXRyeSwgZXh0ZW50LCBwcm9qLmdldENvZGUoKSk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJBc3NlbWJseTogT2djRmlsdGVyO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgcHJvalxuICAgICAgKTtcbiAgICAgIGlmIChleHRlbnQgJiYgZW5hYmxlQmJveCkge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcbiAgICAgICAgICBvdXJCYm94RmlsdGVyLFxuICAgICAgICAgIHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2Jib3g9JyArIGV4dGVudC5qb2luKCcsJykgKyAnLCcgKyBwcm9qLmdldENvZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB3ZnNPcHRpb25zOiBXcml0ZUdldEZlYXR1cmVPcHRpb25zID0ge1xuICAgICAgc3JzTmFtZTogJycsXG4gICAgICBmZWF0dXJlTlM6ICcnLFxuICAgICAgZmVhdHVyZVByZWZpeDogJycsXG4gICAgICBmZWF0dXJlVHlwZXM6IFsnZmVhdHVyZVR5cGVzJ10sXG4gICAgICBmaWx0ZXI6IGZpbHRlckFzc2VtYmx5LFxuICAgICAgb3V0cHV0Rm9ybWF0OiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnlcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgb2xGb3JtYXRXRlMoKS53cml0ZUdldEZlYXR1cmUod2ZzT3B0aW9ucyk7XG4gICAgY29uc3Qgc3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhxdWVyeSk7XG4gICAgY29uc3QgcmVnZXhwMSA9IC90eXBlbmFtZXMgKj18dHlwZW5hbWUgKj1cXFwiZmVhdHVyZVR5cGVzXFxcIiAqPi9naTtcbiAgICBjb25zdCByZWdleHAyID0gLzxcXC9RdWVyeT48XFwvR2V0RmVhdHVyZT4vZ2k7XG5cbiAgICByZXR1cm4gJ2ZpbHRlcj0nICsgc3RyLnNwbGl0KHJlZ2V4cDEpWzFdLnNwbGl0KHJlZ2V4cDIpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidW5kbGVGaWx0ZXIoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IFtdO1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgbG9naWNhbEFycmF5LnB1c2godGhpcy5idW5kbGVGaWx0ZXIoZWxlbWVudCwgb3B0aW9ucykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbG9naWNhbEFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdsb2dpY2FsJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9wZXJhdG9yOiBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGxvZ2ljYWxBcnJheTogdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVyT2JqZWN0LmZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpbHRlcihcbiAgICBmaWx0ZXJPcHRpb25zLFxuICAgIG9wdGlvbnM/OiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2djRmlsdGVyIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlck9wdGlvbnMub3BlcmF0b3I7XG4gICAgY29uc3QgbG9naWNhbEFycmF5ID0gZmlsdGVyT3B0aW9ucy5sb2dpY2FsQXJyYXk7XG5cbiAgICBjb25zdCB3ZnNQcm9wZXJ0eU5hbWUgPSBmaWx0ZXJPcHRpb25zLnByb3BlcnR5TmFtZTtcbiAgICBjb25zdCB3ZnNQYXR0ZXJuID0gZmlsdGVyT3B0aW9ucy5wYXR0ZXJuO1xuICAgIGNvbnN0IHdmc01hdGNoQ2FzZSA9IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA/IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA6IHRydWU7XG4gICAgY29uc3Qgd2ZzV2lsZENhcmQgPSBmaWx0ZXJPcHRpb25zLndpbGRDYXJkID8gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA6ICcqJztcbiAgICBjb25zdCB3ZnNTaW5nbGVDaGFyID0gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc2luZ2xlQ2hhclxuICAgICAgOiAnLic7XG4gICAgY29uc3Qgd2ZzRXNjYXBlQ2hhciA9IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLmVzY2FwZUNoYXJcbiAgICAgIDogJyEnO1xuXG4gICAgY29uc3Qgd2ZzTG93ZXJCb3VuZGFyeSA9IGZpbHRlck9wdGlvbnMubG93ZXJCb3VuZGFyeTtcbiAgICBjb25zdCB3ZnNVcHBlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy51cHBlckJvdW5kYXJ5O1xuXG4gICAgY29uc3Qgd2ZzR2VvbWV0cnlOYW1lID0gZmlsdGVyT3B0aW9ucy5nZW9tZXRyeU5hbWU7XG4gICAgY29uc3Qgd2ZzRXh0ZW50ID0gZmlsdGVyT3B0aW9ucy5leHRlbnQ7XG4gICAgY29uc3Qgd2ZzV2t0R2VvbWV0cnkgPSBmaWx0ZXJPcHRpb25zLndrdF9nZW9tZXRyeTtcbiAgICBjb25zdCB3ZnNTcnNOYW1lID0gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxuICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIGNvbnN0IHdmc0JlZ2luID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmJlZ2luLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWluRGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgY29uc3Qgd2ZzRW5kID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmVuZCxcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heERhdGUgOiB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgY29uc3Qgd2ZzRXhwcmVzc2lvbiA9IGZpbHRlck9wdGlvbnMuZXhwcmVzc2lvbjtcblxuICAgIGxldCBnZW9tZXRyeTogb2xHZW9tZXRyeTtcbiAgICBpZiAod2ZzV2t0R2VvbWV0cnkpIHtcbiAgICAgIGNvbnN0IHdrdCA9IG5ldyBvbEZvcm1hdFdLVCgpO1xuICAgICAgZ2VvbWV0cnkgPSB3a3QucmVhZEdlb21ldHJ5KHdmc1drdEdlb21ldHJ5LCB7XG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lLFxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogd2ZzU3JzTmFtZSB8fCAnRVBTRzozODU3J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChvcGVyYXRvci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkJCT1gudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmJib3god2ZzR2VvbWV0cnlOYW1lLCB3ZnNFeHRlbnQsIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2Vlbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmV0d2VlbihcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzTG93ZXJCb3VuZGFyeSB8fCAxZTQwICogLTEsXG4gICAgICAgICAgd2ZzVXBwZXJCb3VuZGFyeSB8fCAxZTQwXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5jb250YWlucyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5kdXJpbmcod2ZzUHJvcGVydHlOYW1lLCB3ZnNCZWdpbiwgd2ZzRW5kKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uLCB3ZnNNYXRjaENhc2UpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0cy50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaW50ZXJzZWN0cyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc051bGwudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmlzTnVsbCh3ZnNQcm9wZXJ0eU5hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxlc3NUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2UudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxpa2UoXG4gICAgICAgICAgd2ZzUHJvcGVydHlOYW1lLFxuICAgICAgICAgIHdmc1BhdHRlcm5cbiAgICAgICAgICAgID8gd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhcilcbiAgICAgICAgICAgIDogd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcbiAgICAgICAgICB3ZnNFc2NhcGVDaGFyLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90RXF1YWxUbyhcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzRXhwcmVzc2lvbixcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci53aXRoaW4od2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICAvLyBMT0dJQ0FMXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkFuZC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYW5kLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5vci5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Ob3QudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBnZW9tZXRyeU5hbWUsXG4gICAgbG9naWNhbCA9ICcnLFxuICAgIGxldmVsID0gLTFcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxuICAgICAgICAgIHRoaXMuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgbG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICBsZXZlbCA9IGxldmVsICsgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFkZEludGVyZmFjZUZpbHRlcihmaWx0ZXJPYmplY3QsIGdlb21ldHJ5TmFtZSwgbGV2ZWwsIGxvZ2ljYWwpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcXVlbmNlO1xuICB9XG5cbiAgcHVibGljIGNvbXB1dGVBbGxvd2VkT3BlcmF0b3JzKFxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGVcbiAgKSB7XG4gICAgbGV0IGVmZmVjdGl2ZU9wZXJhdG9yczoge30gPSB7fTtcbiAgICBsZXQgYWxsb3dlZE9wZXJhdG9ycztcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xuICAgIGxldCBpbmNsdWRlQ29udGFpbnM6IGJvb2xlYW47XG5cbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xuICAgICAgY29uc3Qgc3JjRmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IHByb3BlcnR5TmFtZSk7XG4gICAgICBhbGxvd2VkT3BlcmF0b3JzID1cbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA/IHNyY0ZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlXG4gICAgICAgICAgOiBkZWZhdWx0T3BlcmF0b3JzVHlwZTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRPcGVyYXRvcnNUeXBlID0gZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWwudG9Mb3dlckNhc2UoKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGluY2x1ZGVDb250YWlucyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvd2VkT3BlcmF0b3JzID0gYWxsb3dlZE9wZXJhdG9yc1xuICAgICAgPyBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XG5cbiAgICBzd2l0Y2ggKGFsbG93ZWRPcGVyYXRvcnMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpYzpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuVGltZTpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNOdW1lcmljT3BlcmF0b3I6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvcikge1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XG4gICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICB9O1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLldpdGhpbiA9IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfTtcbiAgICAgIGlmIChpbmNsdWRlQ29udGFpbnMpIHtcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xuICAgICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWZmZWN0aXZlT3BlcmF0b3JzO1xuICB9XG5cbiAgcHVibGljIGFkZEludGVyZmFjZUZpbHRlcihcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q/LFxuICAgIGdlb21ldHJ5TmFtZT8sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHBhcmVudExvZ2ljYWwgPSAnT3InXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xuICAgIGlmICghaWdvT2djRmlsdGVyT2JqZWN0KSB7XG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QgPSB7IG9wZXJhdG9yOiAnUHJvcGVydHlJc0VxdWFsVG8nIH07XG4gICAgfVxuICAgIGNvbnN0IGYgPSB7XG4gICAgICBwcm9wZXJ0eU5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgYWN0aXZlOiAnJyxcbiAgICAgIGZpbHRlcmlkOiB1dWlkKCksXG4gICAgICBzdGVwOiAnJyxcbiAgICAgIGJlZ2luOiAnJyxcbiAgICAgIGVuZDogJycsXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcbiAgICAgIGxvd2VyQm91bmRhcnk6ICcnLFxuICAgICAgdXBwZXJCb3VuZGFyeTogJycsXG4gICAgICBleHByZXNzaW9uOiAnJyxcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgd2lsZENhcmQ6ICcqJyxcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcbiAgICAgIGVzY2FwZUNoYXI6ICchJyxcbiAgICAgIG1hdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXG4gICAgICBpZ29TTlJDOiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogJycsXG4gICAgICBnZW9tZXRyeTogJycsXG4gICAgICB3a3RfZ2VvbWV0cnk6ICcnLFxuICAgICAgZXh0ZW50OiAnJyxcbiAgICAgIHNyc05hbWU6ICcnLFxuICAgICAgcGFyZW50TG9naWNhbDogJycsXG4gICAgICBsZXZlbDogMFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGYsXG4gICAgICB7XG4gICAgICAgIHBhcmVudExvZ2ljYWwsXG4gICAgICAgIGxldmVsLFxuICAgICAgICBnZW9tZXRyeU5hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlckFycmF5ID0gW107XG4gICAgaWYgKGZpbHRlck9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBmaWx0ZXJBcnJheS5wdXNoKFxuICAgICAgICAgIHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICBhY3RpdmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWx0ZXJBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxvZ2ljYWw6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcbiAgICAgICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBhY3RpdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0OiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcbiAgICBhY3RpdmUgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuZmlsdGVyaWRcbiAgICAgIDogdXVpZCgpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LmFjdGl2ZVxuICAgICAgOiBhY3RpdmU7XG5cbiAgICBjb25zdCBzcnNOYW1lID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdzcnNOYW1lJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LnNyc05hbWVcbiAgICAgIDogcHJvalxuICAgICAgICA/IHByb2ouZ2V0Q29kZSgpXG4gICAgICAgIDogJ0VQU0c6Mzg1Nyc7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBmaWx0ZXJpZCxcbiAgICAgICAgYWN0aXZlOiBzdGF0dXMsXG4gICAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJ2ZpeGVkRXh0ZW50JyxcbiAgICAgICAgc3JzTmFtZVxuICAgICAgfSxcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdCxcbiAgICAgIHsgZ2VvbWV0cnlOYW1lOiBmaWVsZE5hbWVHZW9tZXRyeSB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWJ1aWx0SWdvT2djRmlsdGVyT2JqZWN0RnJvbVNlcXVlbmNlKFxuICAgIHNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW11cbiAgKTogSWdvT2djRmlsdGVyT2JqZWN0IHtcbiAgICBpZiAoc2VxdWVuY2UgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgIGxldCBsYXN0UGFyZW50TG9naWNhbCA9IHNlcXVlbmNlWzBdLnBhcmVudExvZ2ljYWw7XG4gICAgICAgIGxldCBuZXh0RWxlbWVudDogYW55O1xuICAgICAgICBsZXQgbG9naWNhbEFycmF5ID0gW107XG4gICAgICAgIGxldCBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xuICAgICAgICBzZXF1ZW5jZS5mb3JFYWNoKCh1aUZpbHRlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCB1aUZpbHRlcik7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzZXF1ZW5jZS5pbmRleE9mKHVpRmlsdGVyKTtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHNlcXVlbmNlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5leHRFbGVtZW50ID0gc2VxdWVuY2VbaW5kZXggKyAxXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5hY3RpdmU7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuZmlsdGVyaWQ7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQucGFyZW50TG9naWNhbDtcbiAgICAgICAgICBsb2dpY2FsQXJyYXkucHVzaChlbGVtZW50KTtcblxuICAgICAgICAgIGlmIChzZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBlbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFBhcmVudExvZ2ljYWwgIT09IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWwpIHtcbiAgICAgICAgICAgIGlmIChsb2dpY2FsQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICdZb3UgbXVzdCBzZXQgYXQgJyArXG4gICAgICAgICAgICAgICAgICAnbGVhc3QgdHdvIG9wZXJhdG9yIGluIGEgbG9naWNhbCAoJyArXG4gICAgICAgICAgICAgICAgICBsYXN0UGFyZW50TG9naWNhbCArXG4gICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHsgbG9naWNhbDogbGFzdFBhcmVudExvZ2ljYWwsIGZpbHRlcnM6IGxvZ2ljYWxBcnJheSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGxvZ2ljYWxBcnJheSA9IFtsYXN0UHJvY2Vzc2VkRmlsdGVyXTtcbiAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgPSBuZXh0RWxlbWVudC5wYXJlbnRMb2dpY2FsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJZ29TZWxlY3RvcihzZWxlY3RvcnM6IElnb09nY1NlbGVjdG9yKTogSWdvT2djU2VsZWN0b3Ige1xuICAgIGlmIChcbiAgICAgIHNlbGVjdG9ycy5ncm91cHMuZXZlcnkoKGdyb3VwKSA9PiBncm91cC5jb21wdXRlZFNlbGVjdG9ycyAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHNlbGVjdG9ycztcbiAgICB9XG4gICAgbGV0IHNlbGVjdG9yOiBJZ29PZ2NTZWxlY3RvcjtcbiAgICBpZiAoc2VsZWN0b3JzLmdyb3VwcyAmJiBzZWxlY3RvcnMuYnVuZGxlcykge1xuICAgICAgaWYgKCFzZWxlY3RvcnMuYnVuZGxlcy5ldmVyeSgoYnVuZGxlKSA9PiBidW5kbGUuaWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBzZXQgYW4gaWQgZm9yIGVhY2ggb2YgeW91ciBidW5kbGVzJyk7XG4gICAgICB9XG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XG4gICAgICBzZWxlY3Rvci5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAudGl0bGUgPSBncm91cC50aXRsZSA/IGdyb3VwLnRpdGxlIDogZ3JvdXAubmFtZTtcbiAgICAgICAgZ3JvdXAuZW5hYmxlZCA9IGdyb3VwLmVuYWJsZWQgPyBncm91cC5lbmFibGVkIDogZmFsc2U7XG4gICAgICAgIGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzID0gT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgc2VsZWN0b3IuYnVuZGxlcy5maWx0ZXIoKGIpID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhiLmlkKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIXNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3VwcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcbiAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3IuYnVuZGxlcylcbiAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgYnVuZGxlczogc2VsZWN0b3JzIGFzIGFueSxcbiAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgICAgbmFtZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICAgICAgKSBhcyBPZ2NTZWxlY3RvckJ1bmRsZVtdXG4gICAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICAgIF0sXG4gICAgICAgIHNlbGVjdG9yVHlwZTogc2VsZWN0b3Iuc2VsZWN0b3JUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXNlbGVjdG9yLmdyb3Vwcy5maW5kKChzZWxlY3Rvckdyb3VwKSA9PiBzZWxlY3Rvckdyb3VwLmVuYWJsZWQpKSB7XG4gICAgICBzZWxlY3Rvci5ncm91cHNbMF0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxuICAgIGV4dGVudD86IEV4dGVudCxcbiAgICBwcm9qPzogb2xQcm9qZWN0aW9uXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgb2djRmlsdGVycyA9IG9wdGlvbnMub2djRmlsdGVycztcbiAgICBpZiAoIW9nY0ZpbHRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gJyc7XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzID0gJyc7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVycy5lbmFibGVkICYmXG4gICAgICAob2djRmlsdGVycy5wdXNoQnV0dG9ucyB8fFxuICAgICAgICBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgfHxcbiAgICAgICAgb2djRmlsdGVycy5zZWxlY3QgfHxcbiAgICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBsZXQgc2VsZWN0b3JzO1xuICAgICAgaWYgKG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5wdXNoQnV0dG9ucztcbiAgICAgICAgY29uc3QgcHVzaENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9ycyk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHB1c2hDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5jaGVja2JveGVzO1xuICAgICAgICBjb25zdCBjaGVja2JveENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNoZWNrYm94Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5yYWRpb0J1dHRvbnMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5yYWRpb0J1dHRvbnM7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcbiAgICAgICAgY29uc3QgcmFkaW9Db25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcmFkaW9Db25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnNlbGVjdCkge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnNlbGVjdDtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xuICAgICAgICBjb25zdCBzZWxlY3RDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygc2VsZWN0Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5hdXRvY29tcGxldGU7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIG9nY0ZpbHRlcnMuZmlsdGVycyAmJlxuICAgICAgICAnb3BlcmF0b3InIGluIG9nY0ZpbHRlcnMuZmlsdGVycyAmJlxuICAgICAgICBvZ2NGaWx0ZXJzLmZpbHRlcnMub3BlcmF0b3IudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICBPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICBvZ2NGaWx0ZXJzLmZpbHRlcnMuYWN0aXZlICYmXG4gICAgICAgIG9nY0ZpbHRlcnMuaW50ZXJmYWNlT2djRmlsdGVycz8ubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChvZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnNbMF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gdGhpcy5idWlsZEZpbHRlcihcbiAgICAgICAgICBjb25kaXRpb25zLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBjb25kaXRpb25zWzBdXG4gICAgICAgICAgICA6IHsgbG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSxcbiAgICAgICAgICBleHRlbnQsXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIG9nY0ZpbHRlcnMuZmlsdGVycykge1xuICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgPSBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSB8fCBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICAgIGNvbnN0IGlnb0ZpbHRlcnMgPSBvZ2NGaWx0ZXJzLmZpbHRlcnM7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgIGlnb0ZpbHRlcnMsXG4gICAgICAgIGV4dGVudCxcbiAgICAgICAgcHJvaixcbiAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gb2djRmlsdGVycy5hZHZhbmNlZE9nY0ZpbHRlcnNcbiAgICAgID8gZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnNcbiAgICAgIDogZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvcjtcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd21zJykge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmcsXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLkxBWUVSU1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5mZWF0dXJlVHlwZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlclF1ZXJ5U3RyaW5nO1xuICB9XG5cbiAgcHVibGljIHZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzLmJ1bmRsZXMuZm9yRWFjaCgoYnVuZGxlKSA9PiB7XG4gICAgICBpZiAoIWJ1bmRsZS5tdWx0aXBsZSAmJiBidW5kbGUuc2VsZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRzID0gYnVuZGxlLnNlbGVjdG9ycy5yZWR1Y2UoXG4gICAgICAgICAgKGxpc3QsIGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICBmaWx0ZXIuZW5hYmxlZCA9PT0gdHJ1ZSA/IGxpc3QuY29uY2F0KGluZGV4KSA6IGxpc3QsXG4gICAgICAgICAgW11cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBlbmFibGVkcy5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgZW5hYmxlZHMuZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGJ1bmRsZS5zZWxlY3RvcnNbaW5kZXhdLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RvcnM7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVyczogT2djRmlsdGVyc09wdGlvbnMsIHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9ycyA9IHRoaXMuY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9ycyk7XG4gICAgY29uc3Qgc2VsZWN0b3JCdW5kbGUgPSBzZWxlY3RvcnMuZ3JvdXBzLmZpbmQoXG4gICAgICAoZykgPT4gZy5lbmFibGVkXG4gICAgKS5jb21wdXRlZFNlbGVjdG9ycztcbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgc2VsZWN0b3JCdW5kbGUubWFwKChidW5kbGUpID0+IHtcbiAgICAgIGNvbnN0IGJ1bmRsZUNvbmRpdGlvbiA9IFtdO1xuICAgICAgY29uc3Qgc2VsZWN0b3JzVHlwZSA9IGJ1bmRsZS5zZWxlY3RvcnMgYXMgYW55O1xuICAgICAgaWYgKCFzZWxlY3RvcnNUeXBlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNlbGVjdG9yc1R5cGVcbiAgICAgICAgLmZpbHRlcigob2djc2VsZWN0b3IpID0+IG9nY3NlbGVjdG9yLmVuYWJsZWQgPT09IHRydWUpXG4gICAgICAgIC5mb3JFYWNoKChlbmFibGVkU2VsZWN0b3IpID0+XG4gICAgICAgICAgYnVuZGxlQ29uZGl0aW9uLnB1c2goZW5hYmxlZFNlbGVjdG9yLmZpbHRlcnMpXG4gICAgICAgICk7XG4gICAgICBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICBsb2dpY2FsOiBidW5kbGUubG9naWNhbCxcbiAgICAgICAgICBmaWx0ZXJzOiBidW5kbGVDb25kaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgb2djRmlsdGVycy5zZWxlY3QgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUgPSBzZWxlY3RvcnM7XG4gICAgfVxuICAgIHJldHVybiBjb25kaXRpb25zO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICBwcm9jZXNzZWRGaWx0ZXI6IHN0cmluZyxcbiAgICBsYXllcnNPclR5cGVuYW1lczogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBhcHBsaWVkRmlsdGVyID0gJyc7XG4gICAgaWYgKHByb2Nlc3NlZEZpbHRlci5sZW5ndGggPT09IDAgJiYgbGF5ZXJzT3JUeXBlbmFtZXMuaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgICAgYXBwbGllZEZpbHRlciA9IHByb2Nlc3NlZEZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF5ZXJzT3JUeXBlbmFtZXMuc3BsaXQoJywnKS5mb3JFYWNoKChsYXllck9yVHlwZW5hbWVzKSA9PiB7XG4gICAgICAgIGFwcGxpZWRGaWx0ZXIgPSBgJHthcHBsaWVkRmlsdGVyfSgke3Byb2Nlc3NlZEZpbHRlci5yZXBsYWNlKFxuICAgICAgICAgICdmaWx0ZXI9JyxcbiAgICAgICAgICAnJ1xuICAgICAgICApfSlgO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGFwcGxpZWRGaWx0ZXIgPSBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoL1xcKFxcKS9nLCAnJyk7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPVxuICAgICAgYXBwbGllZEZpbHRlci5sZW5ndGggPiAwXG4gICAgICAgID8gYXBwbGllZEZpbHRlci5yZXBsYWNlKCdmaWx0ZXI9JywgJycpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZUZpbHRlck9wdGlvbkRhdGUodmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdub3cnKSB8fFxuICAgICAgdmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9kYXknKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VEYXRlT3BlcmF0aW9uKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIHRvIHBhcnNlIGRhdGUgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAgICogZXhlbXBsZSAndG9kYXkgKyAxIGRheXMnIG9yICdub3cgKyAxIHllYXJzJ1xuICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nIGRhdGVcbiAgICogQHJldHVybnMgZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZURhdGVPcGVyYXRpb24odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0aW9uU3BsaXR0ZWQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgbGVmdE9wZXJhbmQgPSBvcGVyYXRpb25TcGxpdHRlZFswXTtcbiAgICBjb25zdCBvcGVyYXRvciA9IFsnKycsICctJ10uaW5jbHVkZXMob3BlcmF0aW9uU3BsaXR0ZWRbMV0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzFdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodE9wZXJhbmQgPSAvXlswLTldKiQvLnRlc3Qob3BlcmF0aW9uU3BsaXR0ZWRbMl0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzJdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodFVuaXRPcGVyYW5kID0gKFxuICAgICAgWyd5ZWFycycsICdtb250aHMnLCAnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdzZWNvbmRzJ10uaW5jbHVkZXMoXG4gICAgICAgIG9wZXJhdGlvblNwbGl0dGVkWzNdXG4gICAgICApXG4gICAgICAgID8gb3BlcmF0aW9uU3BsaXR0ZWRbM11cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICApIGFzIG1vbWVudC5EdXJhdGlvbklucHV0QXJnMjtcblxuICAgIGlmICghb3BlcmF0b3IgfHwgIXJpZ2h0VW5pdE9wZXJhbmQgfHwgIXJpZ2h0T3BlcmFuZCkge1xuICAgICAgcmV0dXJuIGxlZnRPcGVyYW5kID09PSAnbm93J1xuICAgICAgICA/IG1vbWVudCgpLmZvcm1hdCgpXG4gICAgICAgIDogbW9tZW50KCkuZW5kT2YoJ2RheScpLmZvcm1hdCgpO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRvciA9PT0gJysnKSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KCkuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKS5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKVxuICAgICAgICAgICAgLmZvcm1hdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KClcbiAgICAgICAgICAgIC5zdWJ0cmFjdChwYXJzZUludChyaWdodE9wZXJhbmQsIDEwKSwgcmlnaHRVbml0T3BlcmFuZClcbiAgICAgICAgICAgIC5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuc3VidHJhY3QocGFyc2VJbnQocmlnaHRPcGVyYW5kLCAxMCksIHJpZ2h0VW5pdE9wZXJhbmQpXG4gICAgICAgICAgICAuZm9ybWF0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/fesm2022/igo2-geo.mjs
CHANGED
|
@@ -2737,6 +2737,14 @@ class OgcFilterWriter {
|
|
|
2737
2737
|
conditions.push(condition);
|
|
2738
2738
|
}
|
|
2739
2739
|
}
|
|
2740
|
+
if (ogcFilters.filters &&
|
|
2741
|
+
'operator' in ogcFilters.filters &&
|
|
2742
|
+
ogcFilters.filters.operator.toLowerCase() ===
|
|
2743
|
+
OgcFilterOperator.During.toLowerCase() &&
|
|
2744
|
+
ogcFilters.filters.active &&
|
|
2745
|
+
ogcFilters.interfaceOgcFilters?.length > 0) {
|
|
2746
|
+
conditions.push(ogcFilters.interfaceOgcFilters[0]);
|
|
2747
|
+
}
|
|
2740
2748
|
if (conditions.length >= 1) {
|
|
2741
2749
|
filterQueryStringSelector = this.buildFilter(conditions.length === 1
|
|
2742
2750
|
? conditions[0]
|
|
@@ -17040,7 +17048,7 @@ class OgcFilterTimeComponent {
|
|
|
17040
17048
|
else {
|
|
17041
17049
|
this.endValue = value;
|
|
17042
17050
|
this.onlyYearEnd = this.endValue.getFullYear();
|
|
17043
|
-
dateStringFromYearNotime = `${this.onlyYearEnd}-
|
|
17051
|
+
dateStringFromYearNotime = `${this.onlyYearEnd}-12-31`;
|
|
17044
17052
|
}
|
|
17045
17053
|
// call service with string date without time
|
|
17046
17054
|
this.changeProperty.next({
|