ngx-rs-ant 1.3.7 → 1.3.8

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.
@@ -14,7 +14,6 @@ export declare class FileCellTemplateComponent {
14
14
  constructor(service: DataGridService, domSanitizer: DomSanitizer);
15
15
  ngOnInit(): void;
16
16
  download(): void;
17
- getFileSize(size: number): string;
18
17
  static ɵfac: i0.ɵɵFactoryDeclaration<FileCellTemplateComponent, never>;
19
18
  static ɵcmp: i0.ɵɵComponentDeclaration<FileCellTemplateComponent, "rs-file-cell-template", never, { "table": "table"; "oid": "oid"; }, {}, never, never, false, never>;
20
19
  }
@@ -314,6 +314,7 @@ export class DataGridFactory {
314
314
  cssClass: 'cell-vertical-middle',
315
315
  allowHeaderFiltering: false,
316
316
  allowFiltering: false,
317
+ allowSorting: false,
317
318
  visible: field.visible,
318
319
  fixed: field.fixed
319
320
  };
@@ -406,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
406
407
  providedIn: 'root'
407
408
  }]
408
409
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
409
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9kYXRhLWdyaWQvZGF0YS1ncmlkLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU01QixZQUFPLEdBQVE7WUFDckIsTUFBTSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7YUFDcEU7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQzthQUNwRTtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsZ0JBQWdCLEVBQUUsRUFBRTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7YUFDL0Q7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xC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Q0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQXZZVSxlQUFlO2dIQUFmLGVBQWUsY0FGZCxNQUFNOzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEN1c3RvbVN0b3JlIGZyb20gXCJkZXZleHRyZW1lL2RhdGEvY3VzdG9tX3N0b3JlXCI7XHJcbmltcG9ydCB7bGFzdFZhbHVlRnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0NvbHVtbn0gZnJvbSBcImRldmV4dHJlbWUvdWkvZGF0YV9ncmlkXCI7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtEYXRhR3JpZFNlcnZpY2V9IGZyb20gXCIuL2RhdGEtZ3JpZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhR3JpZEZhY3Rvcnkge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlID0gbmV3IERhdGFHcmlkU2VydmljZShodHRwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VydmljZSE6IERhdGFHcmlkU2VydmljZTtcclxuXHJcbiAgcHJpdmF0ZSB0eXBlTWFwOiBhbnkgPSB7XHJcbiAgICBTVFJJTkc6IHtcclxuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJ2NvbnRhaW5zJywgJ3N0YXJ0c3dpdGgnLCAnZW5kc3dpdGgnLCAnPScsICc8PiddXHJcbiAgICB9LFxyXG4gICAgVEVYVDoge1xyXG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnY29udGFpbnMnLCAnc3RhcnRzd2l0aCcsICdlbmRzd2l0aCcsICc9JywgJzw+J11cclxuICAgIH0sXHJcbiAgICBCT09MRUFOOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFtdXHJcbiAgICB9LFxyXG4gICAgSU5URUdFUjoge1xyXG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPScsICc8PicsICc+JywgJz49JywgJzwnLCAnPD0nLCAnYmV0d2VlbiddXHJcbiAgICB9LFxyXG4gICAgRE9VQkxFOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWyc9JywgJzw+JywgJz4nLCAnPj0nLCAnPCcsICc8PScsICdiZXR3ZWVuJ11cclxuICAgIH0sXHJcbiAgICBEQVRFOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnZGF0ZScsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPScsICc8PicsICc+JywgJz49JywgJzwnLCAnPD0nLCAnYmV0d2VlbiddLFxyXG4gICAgICBmb3JtYXQ6ICd5eXl5L01NL2RkJ1xyXG4gICAgfSxcclxuICAgIERBVEVUSU1FOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnZGF0ZXRpbWUnLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz4nLCAnPCcsICdiZXR3ZWVuJ10sXHJcbiAgICAgIGZvcm1hdDogJ3l5eXkvTU0vZGQgSEg6bW06c3MnXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIG1ha2VEYXRhR3JpZENvbHVtbnModGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCB2aWV3OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuc2VydmljZS5nZXRNZXRhZGF0YUJ5Vmlldyh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldyB8fCAnJykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgY29uc3QgY29sdW1ucyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBmaWVsZCBvZiByZXNwb25zZS5kYXRhLmNvbHVtbnMpIHtcclxuICAgICAgICBsZXQgY29sdW1uOiBhbnk7XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdGSUxFJzpcclxuICAgICAgICAgICAgY29sdW1uID0ge1xyXG4gICAgICAgICAgICAgIGRhdGFGaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgICAgICBjYXB0aW9uOiBmaWVsZC5jYXB0aW9uLFxyXG4gICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgIGNzc0NsYXNzOiAnY2VsbC12ZXJ0aWNhbC1taWRkbGUnLFxyXG4gICAgICAgICAgICAgIGFsbG93SGVhZGVyRmlsdGVyaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd0ZpbHRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYWxsb3dTb3J0aW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICBjZWxsVGVtcGxhdGU6ICdmaWxlQ2VsbFRlbXBsYXRlJyxcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlLFxyXG4gICAgICAgICAgICAgIGZpeGVkOiBmaWVsZC5maXhlZFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ05PUk1BTCc6XHJcbiAgICAgICAgICAgIGNvbHVtbiA9IHtcclxuICAgICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgY2FwdGlvbjogZmllbGQuY2FwdGlvbixcclxuICAgICAgICAgICAgICBkYXRhVHlwZTogdGhpcy50eXBlTWFwW2ZpZWxkLmRhdGFUeXBlXS5kYXRhVHlwZSxcclxuICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcclxuICAgICAgICAgICAgICBjc3NDbGFzczogJ2NlbGwtdmVydGljYWwtbWlkZGxlJyxcclxuICAgICAgICAgICAgICBhbGxvd0hlYWRlckZpbHRlcmluZzogdHJ1ZSxcclxuICAgICAgICAgICAgICBoZWFkZXJGaWx0ZXI6IHtcclxuICAgICAgICAgICAgICAgIGFsbG93U2VsZWN0QWxsOiBmYWxzZVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZmlsdGVyT3BlcmF0aW9uczogdGhpcy50eXBlTWFwW2ZpZWxkLmRhdGFUeXBlXS5maWx0ZXJPcGVyYXRpb25zLFxyXG4gICAgICAgICAgICAgIGZvcm1hdDogdGhpcy50eXBlTWFwW2ZpZWxkLmRhdGFUeXBlXS5mb3JtYXQsXHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZSxcclxuICAgICAgICAgICAgICBmaXhlZDogZmllbGQuZml4ZWRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkLmlzUHJpbWFyeUtleSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbi5pbnN0YW5jZUluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICB0ZW5hbnQsXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcclxuICAgICAgICAgICAgICBjYXNlICdCT09MRUFOJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0hlYWRlckZpbHRlcmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLmFsaWdubWVudCA9ICdjZW50ZXInO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLnRydWVUZXh0ID0gJ+aYryc7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uZmFsc2VUZXh0ID0gJ+WQpic7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlICdEQVRFJzpcclxuICAgICAgICAgICAgICBjYXNlICdEQVRFVElNRSc6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVNvdXJjZS5ncm91cC5sZW5ndGggPSAzO1xyXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFTb3VyY2UucG9zdFByb2Nlc3MgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKCh5ZWFyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHllYXIudGV4dCA9IHllYXIua2V5ICsgJ+W5tCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB5ZWFyLml0ZW1zLmZvckVhY2goKG1vbnRoOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGgudGV4dCA9IG1vbnRoLmtleSArICfmnIgnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aC5pdGVtcy5mb3JFYWNoKChkYXk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRheS50ZXh0ID0gZGF5LmtleSArICfml6UnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRheS5pdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudW5zaGlmdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnKOepuueZvSknXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnRE9VQkxFJzpcclxuICAgICAgICAgICAgICBjYXNlICdJTlRFR0VSJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IChvcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLnBvc3RQcm9jZXNzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudW5zaGlmdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnKOepuueZvSknXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnX18nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnU1RSSU5HJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IChvcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLnBvc3RQcm9jZXNzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudW5zaGlmdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnKOepuueZvSknXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnX18nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5jb25maWcuY29uc3RyYWludC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ1VTRVInOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi51c2VySW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3VzZXJDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldFVzZXJDb2x1bW5EYXRhU291cmNlKHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3LCBmaWVsZC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jb25maWcuY29uc3RyYWludC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmFsbG93RmlsdGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubG9va3VwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVc2VyQ29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcjogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6ICd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IENvbHVtbiwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICc9JywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJ2NvbnRhaW5zJywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmRhdGFGaWVsZCA9ICdfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVc2VyX2Rpc3BsYXlOYW1lJztcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IGFueSwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gJ2hlYWRlckZpbHRlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVXNlcl91c2VybmFtZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uLm5hbWUsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVzZXJfdXNlcm5hbWUnLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSAnVU5JVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLnVuaXRJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAndW5pdENlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0VW5pdENvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYWxsb3dGaWx0ZXJpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5sb29rdXAgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldFVuaXRDb2x1bW5EYXRhU291cmNlKHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3LCBmaWVsZC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVFeHByOiAndmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcjogJ3RleHQnXHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSBmdW5jdGlvbiAodGhpczogQ29sdW1uLCBmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55LCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJz0nLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnY29udGFpbnMnLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVuaXRfZGlzcGxheU5hbWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSBmdW5jdGlvbiAodGhpczogQ29sdW1uLCBmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55LCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSAnaGVhZGVyRmlsdGVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZCA9ICdfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVbml0X25hbWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbi5uYW1lLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWydfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVbml0X25hbWUnLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSAnQ1VTVE9NJzpcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRDb25zdHJhaW50Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSwgZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubG9va3VwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29uc3RyYWludEVudHJpZXMoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVFeHByOiAnc3RvcmUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6ICdkaXNwbGF5J1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmZpbHRlck9wZXJhdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IENvbHVtbiwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICc9JywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJ2NvbnRhaW5zJywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICdtdWx0aXBsZVZhbHVlQ2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3RleHRDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnVEVYVCc6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uYWxsb3dIZWFkZXJGaWx0ZXJpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IDI0MDtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAndGV4dENlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ1JFTEFUSU9OJzpcclxuICAgICAgICAgICAgY29sdW1uID0ge1xyXG4gICAgICAgICAgICAgIGRhdGFGaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgICAgICBjYXB0aW9uOiBmaWVsZC5jYXB0aW9uLFxyXG4gICAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcclxuICAgICAgICAgICAgICBjc3NDbGFzczogJ2NlbGwtdmVydGljYWwtbWlkZGxlJyxcclxuICAgICAgICAgICAgICBhbGxvd0hlYWRlckZpbHRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYWxsb3dGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgZml4ZWQ6IGZpZWxkLmZpeGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbHVtbi5pbnN0YW5jZUluZm8gPSB7XHJcbiAgICAgICAgICAgICAgdGVuYW50LFxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogZmllbGQudGFyZ2V0Q2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgIGtleTogZmllbGQubmFtZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnJlbGF0aW9uVHlwZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ01BTllfVE9fT05FJzpcclxuICAgICAgICAgICAgICBjYXNlICdPTkVfVE9fT05FJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0ZpbHRlcmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uZmlsdGVyT3BlcmF0aW9ucyA9IFsnPSddO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAnbXVsdGlwbGVWYWx1ZUNlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQubmV4dChjb2x1bW5zKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYWtlRGF0YUdyaWREYXRhU291cmNlKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgdmlldzogYW55LCBleHRyYUZpbHRlcjogYW55LCBkYXRhR3JpZE5hbWU/OiBzdHJpbmcpOiBDdXN0b21TdG9yZSB7XHJcbiAgICByZXR1cm4gbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAga2V5OiAnb2lkJyxcclxuICAgICAgYnlLZXk6IChrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRPbmUodGVuYW50LCBjbGFzc05hbWUsIGtleSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSkpKTtcclxuICAgICAgfSxcclxuICAgICAgbG9hZDogKGxvYWRPcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZGF0YUZpZWxkKSB7XHJcbiAgICAgICAgICAvLyDmnKrph43lhploZWFkZXJGaWx0ZXLnmoRkYXRhU291cmNl5pe277yMaGVhZGVyRmlsdGVy5Lya6LCD55SobG9hZOaWueazleWKoOi9veetm+mAieagke+8jOmHjeWGmeivpeaWueazleafpeivouivpeihqOaJgOacieaVsOaNrlxyXG4gICAgICAgICAgLy8g6K+l5pa55byP5a2Y5Zyo6aOO6Zmp77yM5peg5rOV6K+G5Yir5LiA5a6a5piv6YCa6L+HaGVhZGVyRmlsdGVy6L+H5ruk5omN5a2Y5ZyoZGF0YUZpZWxk5Y+C5pWwXHJcbiAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgbG9hZE9wdGlvbnMuZGF0YUZpZWxkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJhbXMgPSAnPyc7XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNraXAgfHwgbG9hZE9wdGlvbnMudGFrZSkge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdvZmZzZXQ9JyArIGxvYWRPcHRpb25zLnNraXA7XHJcbiAgICAgICAgICBwYXJhbXMgKz0gJyZsaW1pdD0nICsgbG9hZE9wdGlvbnMudGFrZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdsaW1pdD0wJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IHRydWU7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHRoaXNTb3J0IG9mIGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgICAgaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcmb3JkZXJCeT0nICsgdGhpc1NvcnQuc2VsZWN0b3I7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcsJyArIHRoaXNTb3J0LnNlbGVjdG9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzU29ydC5kZXNjKSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcgZGVzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbHRlcjtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZmlsdGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIgPSBsb2FkT3B0aW9ucy5maWx0ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRyYUZpbHRlcikge1xyXG4gICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSBbZmlsdGVyLCAnYW5kJywgZXh0cmFGaWx0ZXJdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyID0gZXh0cmFGaWx0ZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmZpbHRlcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJhbXMgKz0gJyZ2aWV3PScgKyB2aWV3IHx8ICcnO1xyXG4gICAgICAgIGlmIChkYXRhR3JpZE5hbWUpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmRhdGFHcmlkTmFtZT0nICsgZGF0YUdyaWROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0TWFueSh0ZW5hbnQsIGNsYXNzTmFtZSwgcGFyYW1zKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9kYXRhLWdyaWQvZGF0YS1ncmlkLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU01QixZQUFPLEdBQVE7WUFDckIsTUFBTSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7YUFDcEU7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQzthQUNwRTtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsZ0JBQWdCLEVBQUUsRUFBRTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7YUFDL0Q7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xC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QkFDM0M7Z0JBQ0QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzs0R0F4WVUsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDdXN0b21TdG9yZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL2N1c3RvbV9zdG9yZVwiO1xyXG5pbXBvcnQge2xhc3RWYWx1ZUZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtDb2x1bW59IGZyb20gXCJkZXZleHRyZW1lL3VpL2RhdGFfZ3JpZFwiO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RGF0YUdyaWRTZXJ2aWNlfSBmcm9tIFwiLi9kYXRhLWdyaWQuc2VydmljZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRGYWN0b3J5IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBEYXRhR3JpZFNlcnZpY2UoaHR0cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlcnZpY2UhOiBEYXRhR3JpZFNlcnZpY2U7XHJcblxyXG4gIHByaXZhdGUgdHlwZU1hcDogYW55ID0ge1xyXG4gICAgU1RSSU5HOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxyXG4gICAgfSxcclxuICAgIFRFWFQ6IHtcclxuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJ2NvbnRhaW5zJywgJ3N0YXJ0c3dpdGgnLCAnZW5kc3dpdGgnLCAnPScsICc8PiddXHJcbiAgICB9LFxyXG4gICAgQk9PTEVBTjoge1xyXG4gICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbXVxyXG4gICAgfSxcclxuICAgIElOVEVHRVI6IHtcclxuICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxyXG4gICAgfSxcclxuICAgIERPVUJMRToge1xyXG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPScsICc8PicsICc+JywgJz49JywgJzwnLCAnPD0nLCAnYmV0d2VlbiddXHJcbiAgICB9LFxyXG4gICAgREFURToge1xyXG4gICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXSxcclxuICAgICAgZm9ybWF0OiAneXl5eS9NTS9kZCdcclxuICAgIH0sXHJcbiAgICBEQVRFVElNRToge1xyXG4gICAgICBkYXRhVHlwZTogJ2RhdGV0aW1lJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWyc+JywgJzwnLCAnYmV0d2VlbiddLFxyXG4gICAgICBmb3JtYXQ6ICd5eXl5L01NL2RkIEhIOm1tOnNzJ1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBtYWtlRGF0YUdyaWRDb2x1bW5zKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgdmlldzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TWV0YWRhdGFCeVZpZXcodGVuYW50LCBjbGFzc05hbWUsIHZpZXcgfHwgJycpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgZmllbGQgb2YgcmVzcG9uc2UuZGF0YS5jb2x1bW5zKSB7XHJcbiAgICAgICAgbGV0IGNvbHVtbjogYW55O1xyXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnRklMRSc6XHJcbiAgICAgICAgICAgIGNvbHVtbiA9IHtcclxuICAgICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgY2FwdGlvbjogZmllbGQuY2FwdGlvbixcclxuICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBjc3NDbGFzczogJ2NlbGwtdmVydGljYWwtbWlkZGxlJyxcclxuICAgICAgICAgICAgICBhbGxvd0hlYWRlckZpbHRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYWxsb3dGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93U29ydGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlOiAnZmlsZUNlbGxUZW1wbGF0ZScsXHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZSxcclxuICAgICAgICAgICAgICBmaXhlZDogZmllbGQuZml4ZWRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdOT1JNQUwnOlxyXG4gICAgICAgICAgICBjb2x1bW4gPSB7XHJcbiAgICAgICAgICAgICAgZGF0YUZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXHJcbiAgICAgICAgICAgICAgZGF0YVR5cGU6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZGF0YVR5cGUsXHJcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgY3NzQ2xhc3M6ICdjZWxsLXZlcnRpY2FsLW1pZGRsZScsXHJcbiAgICAgICAgICAgICAgYWxsb3dIZWFkZXJGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgICAgICAgICAgaGVhZGVyRmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICBhbGxvd1NlbGVjdEFsbDogZmFsc2VcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZmlsdGVyT3BlcmF0aW9ucyxcclxuICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZm9ybWF0LFxyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgZml4ZWQ6IGZpZWxkLmZpeGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5pc1ByaW1hcnlLZXkpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4uaW5zdGFuY2VJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgdGVuYW50LFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmRhdGFUeXBlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnQk9PTEVBTic6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uYWxsb3dIZWFkZXJGaWx0ZXJpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGlnbm1lbnQgPSAnY2VudGVyJztcclxuICAgICAgICAgICAgICAgIGNvbHVtbi50cnVlVGV4dCA9ICfmmK8nO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLmZhbHNlVGV4dCA9ICflkKYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnREFURSc6XHJcbiAgICAgICAgICAgICAgY2FzZSAnREFURVRJTUUnOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0gKG9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFTb3VyY2UuZ3JvdXAubGVuZ3RoID0gMztcclxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLnBvc3RQcm9jZXNzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoeWVhcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB5ZWFyLnRleHQgPSB5ZWFyLmtleSArICflubQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgeWVhci5pdGVtcy5mb3JFYWNoKChtb250aDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoLnRleHQgPSBtb250aC5rZXkgKyAn5pyIJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguaXRlbXMuZm9yRWFjaCgoZGF5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXkudGV4dCA9IGRheS5rZXkgKyAn5pelJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXkuaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyjnqbrnmb0pJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ0RPVUJMRSc6XHJcbiAgICAgICAgICAgICAgY2FzZSAnSU5URUdFUic6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVNvdXJjZS5wb3N0UHJvY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyjnqbrnmb0pJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ1NUUklORyc6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVNvdXJjZS5wb3N0UHJvY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyjnqbrnmb0pJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4udXNlckluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICd1c2VyQ2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVc2VyQ29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0ZpbHRlcmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxvb2t1cCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0VXNlckNvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnPScsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICdjb250YWlucycsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVXNlcl9kaXNwbGF5TmFtZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09ICdoZWFkZXJGaWx0ZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVzZXJfdXNlcm5hbWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbi5uYW1lLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWydfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVc2VyX3VzZXJuYW1lJywgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ1VOSVQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi51bml0SW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3VuaXRDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldFVuaXRDb2x1bW5EYXRhU291cmNlKHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3LCBmaWVsZC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jb25maWcuY29uc3RyYWludC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmFsbG93RmlsdGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubG9va3VwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVbml0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcjogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6ICd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IENvbHVtbiwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICc9JywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJ2NvbnRhaW5zJywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmRhdGFGaWVsZCA9ICdfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVbml0X2Rpc3BsYXlOYW1lJztcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IENvbHVtbiwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gJ2hlYWRlckZpbHRlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVW5pdF9uYW1lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW4ubmFtZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnb3InLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVW5pdF9uYW1lJywgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ0NVU1RPTSc6XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29uc3RyYWludENvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUsIGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxvb2t1cCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldENvbnN0cmFpbnRFbnRyaWVzKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcjogJ3N0b3JlJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAnZGlzcGxheSdcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5maWx0ZXJPcGVyYXRpb25zID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnPScsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICdjb250YWlucycsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAnbXVsdGlwbGVWYWx1ZUNlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICd0ZXh0Q2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ1RFWFQnOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmFsbG93SGVhZGVyRmlsdGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4ud2lkdGggPSAyNDA7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3RleHRDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdSRUxBVElPTic6XHJcbiAgICAgICAgICAgIGNvbHVtbiA9IHtcclxuICAgICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgY2FwdGlvbjogZmllbGQuY2FwdGlvbixcclxuICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgY3NzQ2xhc3M6ICdjZWxsLXZlcnRpY2FsLW1pZGRsZScsXHJcbiAgICAgICAgICAgICAgYWxsb3dIZWFkZXJGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93RmlsdGVyaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd1NvcnRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgZml4ZWQ6IGZpZWxkLmZpeGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbHVtbi5pbnN0YW5jZUluZm8gPSB7XHJcbiAgICAgICAgICAgICAgdGVuYW50LFxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogZmllbGQudGFyZ2V0Q2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgIGtleTogZmllbGQubmFtZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnJlbGF0aW9uVHlwZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ01BTllfVE9fT05FJzpcclxuICAgICAgICAgICAgICBjYXNlICdPTkVfVE9fT05FJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0ZpbHRlcmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uZmlsdGVyT3BlcmF0aW9ucyA9IFsnPSddO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAnbXVsdGlwbGVWYWx1ZUNlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQubmV4dChjb2x1bW5zKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYWtlRGF0YUdyaWREYXRhU291cmNlKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgdmlldzogYW55LCBleHRyYUZpbHRlcjogYW55LCBkYXRhR3JpZE5hbWU/OiBzdHJpbmcpOiBDdXN0b21TdG9yZSB7XHJcbiAgICByZXR1cm4gbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAga2V5OiAnb2lkJyxcclxuICAgICAgYnlLZXk6IChrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRPbmUodGVuYW50LCBjbGFzc05hbWUsIGtleSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSkpKTtcclxuICAgICAgfSxcclxuICAgICAgbG9hZDogKGxvYWRPcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZGF0YUZpZWxkKSB7XHJcbiAgICAgICAgICAvLyDmnKrph43lhploZWFkZXJGaWx0ZXLnmoRkYXRhU291cmNl5pe277yMaGVhZGVyRmlsdGVy5Lya6LCD55SobG9hZOaWueazleWKoOi9veetm+mAieagke+8jOmHjeWGmeivpeaWueazleafpeivouivpeihqOaJgOacieaVsOaNrlxyXG4gICAgICAgICAgLy8g6K+l5pa55byP5a2Y5Zyo6aOO6Zmp77yM5peg5rOV6K+G5Yir5LiA5a6a5piv6YCa6L+HaGVhZGVyRmlsdGVy6L+H5ruk5omN5a2Y5ZyoZGF0YUZpZWxk5Y+C5pWwXHJcbiAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgbG9hZE9wdGlvbnMuZGF0YUZpZWxkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJhbXMgPSAnPyc7XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNraXAgfHwgbG9hZE9wdGlvbnMudGFrZSkge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdvZmZzZXQ9JyArIGxvYWRPcHRpb25zLnNraXA7XHJcbiAgICAgICAgICBwYXJhbXMgKz0gJyZsaW1pdD0nICsgbG9hZE9wdGlvbnMudGFrZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdsaW1pdD0wJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IHRydWU7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHRoaXNTb3J0IG9mIGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgICAgaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcmb3JkZXJCeT0nICsgdGhpc1NvcnQuc2VsZWN0b3I7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcsJyArIHRoaXNTb3J0LnNlbGVjdG9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzU29ydC5kZXNjKSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcgZGVzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbHRlcjtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZmlsdGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIgPSBsb2FkT3B0aW9ucy5maWx0ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRyYUZpbHRlcikge1xyXG4gICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSBbZmlsdGVyLCAnYW5kJywgZXh0cmFGaWx0ZXJdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyID0gZXh0cmFGaWx0ZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmZpbHRlcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJhbXMgKz0gJyZ2aWV3PScgKyB2aWV3IHx8ICcnO1xyXG4gICAgICAgIGlmIChkYXRhR3JpZE5hbWUpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmRhdGFHcmlkTmFtZT0nICsgZGF0YUdyaWROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0TWFueSh0ZW5hbnQsIGNsYXNzTmFtZSwgcGFyYW1zKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { file_type_icon, format_file_size } from "../../util/utils";
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../data-grid.service";
4
5
  import * as i2 from "@angular/platform-browser";
@@ -19,11 +20,11 @@ export class FileCellTemplateComponent {
19
20
  <table>
20
21
  <tr>
21
22
  <td style="text-align: right;">名称:</td>
22
- <td style="text-align: left;">${this.file.fileName}</td>
23
+ <td style="text-align: left;">${this.filename}</td>
23
24
  </tr>
24
25
  <tr>
25
26
  <td style="text-align: right;">大小:</td>
26
- <td style="text-align: left;">${this.getFileSize(this.file.fileSize)}</td>
27
+ <td style="text-align: left;">${format_file_size(this.file.fileSize)}</td>
27
28
  </tr>
28
29
  <tr>
29
30
  <td style="text-align: right;">时间:</td>
@@ -31,46 +32,7 @@ export class FileCellTemplateComponent {
31
32
  </tr>
32
33
  </table>
33
34
  `);
34
- const type = this.file.fileName.substring(this.file.fileName.lastIndexOf('.') + 1).toLocaleLowerCase();
35
- switch (type) {
36
- case 'xls':
37
- case 'xlsx':
38
- this.icon = 'excel';
39
- break;
40
- case 'doc':
41
- case 'docx':
42
- this.icon = 'word';
43
- break;
44
- case 'ppt':
45
- case 'pptx':
46
- this.icon = 'ppt';
47
- break;
48
- case 'pdf':
49
- this.icon = 'pdf';
50
- break;
51
- case 'txt':
52
- case 'csv':
53
- case 'xml':
54
- case 'json':
55
- case 'js':
56
- this.icon = 'text';
57
- break;
58
- case 'jpg':
59
- case 'jpeg':
60
- case 'png':
61
- case 'gif':
62
- this.icon = 'image';
63
- break;
64
- case 'zip':
65
- case 'rar':
66
- case '7z':
67
- case 'jar':
68
- this.icon = 'zip';
69
- break;
70
- default:
71
- this.icon = 'unknown';
72
- break;
73
- }
35
+ this.icon = file_type_icon(this.filename);
74
36
  // 重绘表格宽高
75
37
  setTimeout(() => {
76
38
  //this.table.resize();
@@ -84,16 +46,6 @@ export class FileCellTemplateComponent {
84
46
  this.loading = false;
85
47
  });
86
48
  }
87
- getFileSize(size) {
88
- const labels = ['b', 'Kb', 'Mb', 'Gb'];
89
- const count = labels.length - 1;
90
- let i = 0;
91
- while (i < count && size >= 1024) {
92
- size /= 1024;
93
- i++;
94
- }
95
- return Math.round(size * 100) / 100 + " " + labels[i];
96
- }
97
49
  }
98
50
  FileCellTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, deps: [{ token: i1.DataGridService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
99
51
  FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { table: "table", oid: "oid" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\n {{filename}}\n <dx-tooltip [target]=\"fileBtn.instance.element()\"\n [position]=\"'top'\"\n [visible]=\"false\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\n </div>\n </dx-tooltip>\n</dx-button><br/>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
@@ -105,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
105
57
  }], oid: [{
106
58
  type: Input
107
59
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBUy9DLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEMsWUFBb0IsT0FBd0IsRUFBVSxZQUEwQjtRQUE1RCxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRmhGLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFJaEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDOzs7O3dEQUlQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTs7Ozt3REFJbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7Ozt3REFJcEMsSUFBSSxDQUFDLElB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QU1qQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEYXRhR3JpZFNlcnZpY2V9IGZyb20gXCIuLi9kYXRhLWdyaWQuc2VydmljZVwiO1xyXG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnMtZmlsZS1jZWxsLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLWNlbGwtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZUNlbGxUZW1wbGF0ZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICB0YWJsZTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgb2lkOiBhbnk7XHJcbiAgZmlsZTogYW55O1xyXG4gIGZpbGVuYW1lOiBhbnk7XHJcbiAgY29udGVudDogYW55O1xyXG4gIGljb246IGFueTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogRGF0YUdyaWRTZXJ2aWNlLCBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0T25lKCdTJywgJ0F0dGFjaG1lbnQnLCB0aGlzLm9pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5maWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy5maWxlbmFtZSA9IHRoaXMuZmlsZS5maWxlTmFtZTtcclxuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYFxyXG4gICAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5ZCN56ew77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke3RoaXMuZmlsZS5maWxlTmFtZX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj7lpKflsI/vvJo8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPiR7dGhpcy5nZXRGaWxlU2l6ZSh0aGlzLmZpbGUuZmlsZVNpemUpfTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0O1wiPuaXtumXtO+8mjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+JHt0aGlzLmZpbGUubW9kaWZ5VGltZX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICBgKTtcclxuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuZmlsZS5maWxlTmFtZS5zdWJzdHJpbmcodGhpcy5maWxlLmZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICd4bHMnOlxyXG4gICAgICAgIGNhc2UgJ3hsc3gnOlxyXG4gICAgICAgICAgdGhpcy5pY29uID0gJ2V4Y2VsJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RvYyc6XHJcbiAgICAgICAgY2FzZSAnZG9jeCc6XHJcbiAgICAgICAgICB0aGlzLmljb24gPSAnd29yZCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdwcHQnOlxyXG4gICAgICAgIGNhc2UgJ3BwdHgnOlxyXG4gICAgICAgICAgdGhpcy5pY29uID0gJ3BwdCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdwZGYnOlxyXG4gICAgICAgICAgdGhpcy5pY29uID0gJ3BkZic7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0eHQnOlxyXG4gICAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgY2FzZSAneG1sJzpcclxuICAgICAgICBjYXNlICdqc29uJzpcclxuICAgICAgICBjYXNlICdqcyc6XHJcbiAgICAgICAgICB0aGlzLmljb24gPSAndGV4dCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdqcGcnOlxyXG4gICAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgY2FzZSAnZ2lmJzpcclxuICAgICAgICAgIHRoaXMuaWNvbiA9ICdpbWFnZSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd6aXAnOlxyXG4gICAgICAgIGNhc2UgJ3Jhcic6XHJcbiAgICAgICAgY2FzZSAnN3onOlxyXG4gICAgICAgIGNhc2UgJ2phcic6XHJcbiAgICAgICAgICB0aGlzLmljb24gPSAnemlwJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLmljb24gPSAndW5rbm93bic7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAvLyDph43nu5jooajmoLzlrr3pq5hcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy90aGlzLnRhYmxlLnJlc2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5kb3dubG9hZEF0dGFjaG1lbnQodGhpcy5vaWQsIHRoaXMuZmlsZW5hbWUsICgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEZpbGVTaXplKHNpemU6IG51bWJlcikge1xyXG4gICAgY29uc3QgbGFiZWxzID0gWydiJywgJ0tiJywgJ01iJywgJ0diJ107XHJcbiAgICBjb25zdCBjb3VudCA9IGxhYmVscy5sZW5ndGggLSAxO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCBjb3VudCAmJiBzaXplID49IDEwMjQpIHtcclxuICAgICAgc2l6ZSAvPSAxMDI0O1xyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZChzaXplICogMTAwKSAvIDEwMCArIFwiIFwiICsgbGFiZWxzW2ldO1xyXG4gIH1cclxufVxyXG4iLCI8ZHgtYnV0dG9uICNmaWxlQnRuIHR5cGU9XCJkZWZhdWx0XCIgc3R5bGluZ01vZGU9XCJ0ZXh0XCI+XG4gIDxpIGNsYXNzPVwiY29hc3QtaWNvbi1maWxlLXt7aWNvbn19XCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA0cHg7XCI+PC9pPlxuICB7e2ZpbGVuYW1lfX1cbiAgPGR4LXRvb2x0aXAgW3RhcmdldF09XCJmaWxlQnRuLmluc3RhbmNlLmVsZW1lbnQoKVwiXG4gICAgICAgICAgICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXG4gICAgICAgICAgICAgIFt2aXNpYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3Nob3dFdmVudF09XCInY2xpY2snXCI+XG4gICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxuICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2Rpdj5cbiAgICAgIDxkeC1idXR0b24gdHlwZT1cImRlZmF1bHRcIiBzdHlsaW5nTW9kZT1cInRleHRcIiBpY29uPVwiY29hc3QtaWNvbiBjb2FzdC1pY29uLWRvd25sb2FkXCIgdGV4dD1cIuS4i+i9vVwiXG4gICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImRvd25sb2FkKClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPjwvZHgtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2R4LXRvb2x0aXA+XG48L2R4LWJ1dHRvbj48YnIvPlxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9maWxlLWNlbGwtdGVtcGxhdGUvZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7OztBQU9sRSxNQUFNLE9BQU8seUJBQXlCO0lBV3BDLFlBQW9CLE9BQXdCLEVBQVUsWUFBMEI7UUFBNUQsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUZoRixZQUFPLEdBQUcsS0FBSyxDQUFDO0lBSWhCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQzs7Ozt3REFJUCxJQUFJLENBQUMsUUFBUTs7Ozt3REFJYixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7Ozt3REFJcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVOzs7T0FHckUsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLFNBQVM7WUFDVCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDNUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzSEFqRFUseUJBQXlCOzBHQUF6Qix5QkFBeUIscUdDVnRDLGlwQkFjQTsyRkRKYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO2lJQU1qQyxLQUFLO3NCQURKLEtBQUs7Z0JBR04sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEYXRhR3JpZFNlcnZpY2V9IGZyb20gXCIuLi9kYXRhLWdyaWQuc2VydmljZVwiO1xyXG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtmaWxlX3R5cGVfaWNvbiwgZm9ybWF0X2ZpbGVfc2l6ZX0gZnJvbSBcIi4uLy4uL3V0aWwvdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnMtZmlsZS1jZWxsLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1jZWxsLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLWNlbGwtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZUNlbGxUZW1wbGF0ZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICB0YWJsZTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgb2lkOiBhbnk7XHJcbiAgZmlsZTogYW55O1xyXG4gIGZpbGVuYW1lOiBhbnk7XHJcbiAgY29udGVudDogYW55O1xyXG4gIGljb246IGFueTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogRGF0YUdyaWRTZXJ2aWNlLCBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0T25lKCdTJywgJ0F0dGFjaG1lbnQnLCB0aGlzLm9pZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAgICAgdGhpcy5maWxlID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgdGhpcy5maWxlbmFtZSA9IHRoaXMuZmlsZS5maWxlTmFtZTtcclxuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoYFxyXG4gICAgICAgICAgICAgICAgPHRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5ZCN56ew77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke3RoaXMuZmlsZW5hbWV9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+5aSn5bCP77yaPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj4ke2Zvcm1hdF9maWxlX3NpemUodGhpcy5maWxlLmZpbGVTaXplKX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj7ml7bpl7TvvJo8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPiR7dGhpcy5maWxlLm1vZGlmeVRpbWV9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgYCk7XHJcbiAgICAgIHRoaXMuaWNvbiA9IGZpbGVfdHlwZV9pY29uKHRoaXMuZmlsZW5hbWUpO1xyXG4gICAgICAvLyDph43nu5jooajmoLzlrr3pq5hcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy90aGlzLnRhYmxlLnJlc2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkLmVtaXQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5kb3dubG9hZEF0dGFjaG1lbnQodGhpcy5vaWQsIHRoaXMuZmlsZW5hbWUsICgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGR4LWJ1dHRvbiAjZmlsZUJ0biB0eXBlPVwiZGVmYXVsdFwiIHN0eWxpbmdNb2RlPVwidGV4dFwiPlxuICA8aSBjbGFzcz1cImNvYXN0LWljb24tZmlsZS17e2ljb259fVwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNHB4O1wiPjwvaT5cbiAge3tmaWxlbmFtZX19XG4gIDxkeC10b29sdGlwIFt0YXJnZXRdPVwiZmlsZUJ0bi5pbnN0YW5jZS5lbGVtZW50KClcIlxuICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiJ3RvcCdcIlxuICAgICAgICAgICAgICBbdmlzaWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtzaG93RXZlbnRdPVwiJ2NsaWNrJ1wiPlxuICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9kaXY+XG4gICAgICA8ZHgtYnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgc3R5bGluZ01vZGU9XCJ0ZXh0XCIgaWNvbj1cImNvYXN0LWljb24gY29hc3QtaWNvbi1kb3dubG9hZFwiIHRleHQ9XCLkuIvovb1cIlxuICAgICAgICAgICAgICAgICAob25DbGljayk9XCJkb3dubG9hZCgpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj48L2R4LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9keC10b29sdGlwPlxuPC9keC1idXR0b24+PGJyLz5cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import notify from "devextreme/ui/notify";
2
+ import { formatDate } from "@angular/common";
2
3
  export function notify_error(message) {
3
4
  notify({
4
5
  displayTime: 12000,
@@ -32,6 +33,56 @@ export function notify_success(message) {
32
33
  position: 'top right'
33
34
  });
34
35
  }
36
+ export function format_date(date, locale) {
37
+ return formatDate(date, 'yyyy/MM/dd', locale, 'GMT+8');
38
+ }
39
+ export function format_datetime(date, locale) {
40
+ return formatDate(date, 'yyyy/MM/dd HH:mm:ss', locale, 'GMT+8');
41
+ }
42
+ export function file_type_icon(name) {
43
+ const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
44
+ switch (type) {
45
+ case 'xls':
46
+ case 'xlsx':
47
+ return 'excel';
48
+ case 'doc':
49
+ case 'docx':
50
+ return 'word';
51
+ case 'ppt':
52
+ case 'pptx':
53
+ return 'ppt';
54
+ case 'pdf':
55
+ return 'pdf';
56
+ case 'txt':
57
+ case 'csv':
58
+ case 'xml':
59
+ case 'json':
60
+ case 'js':
61
+ return 'text';
62
+ case 'jpg':
63
+ case 'jpeg':
64
+ case 'png':
65
+ case 'gif':
66
+ return 'image';
67
+ case 'zip':
68
+ case 'rar':
69
+ case '7z':
70
+ case 'jar':
71
+ return 'zip';
72
+ default:
73
+ return 'unknown';
74
+ }
75
+ }
76
+ export function format_file_size(size) {
77
+ const labels = ['b', 'Kb', 'Mb', 'Gb'];
78
+ const count = labels.length - 1;
79
+ let i = 0;
80
+ while (i < count && size >= 1024) {
81
+ size /= 1024;
82
+ i++;
83
+ }
84
+ return Math.round(size * 100) / 100 + " " + labels[i];
85
+ }
35
86
  export async function validate(validator) {
36
87
  return new Promise(resolve => {
37
88
  const validateResult = validator.instance.validate();
@@ -95,4 +146,4 @@ export async function validate_group(validationGroup) {
95
146
  }
96
147
  });
97
148
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy91dGlsL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBRzFDLE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBZTtJQUMxQyxNQUFNLENBQUM7UUFDTCxXQUFXLEVBQUUsS0FBSztRQUNsQixPQUFPO1FBQ1AsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsT0FBTztLQUNmLEVBQUU7UUFDRCxTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsY0FBYztLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE1BQU0sQ0FBQztRQUNMLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU87UUFDUCxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxPQUFPO0tBQ2YsRUFBRTtRQUNELFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFFBQVEsRUFBRSxjQUFjO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQWU7SUFDNUMsTUFBTSxDQUFDO1FBQ0wsV0FBVyxFQUFFLElBQUk7UUFDakIsT0FBTztRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLE9BQU87S0FDZixFQUFFO1FBQ0QsU0FBUyxFQUFFLFdBQVc7UUFDdEIsUUFBUSxFQUFFLFdBQVc7S0FDdEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDLFNBQStCO0lBQzVELE9BQU8sSUFBSSxPQUFPLENBQVUsT0FBTyxDQUFDLEVBQUU7UUFDcEMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEI7UUFDRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDZjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLGVBQTJDO0lBQzlFLE1BQU0sR0FBRyxHQUFJLGVBQXVCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUMzRCxJQUFJLFVBQVUsQ0FBQztJQUNmLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztJQUNuQyxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQ25DLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxJQUFJLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUM1QyxPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUMxQixJQUFJLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQ2hCLE9BQU8sVUFBVSxDQUFDO2lCQUNuQjthQUNGO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFDRixPQUFPLElBQUksT0FBTyxDQUFVLE9BQU8sQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDM0IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFTLENBQUEsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkYsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQjtRQUNELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDdkMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO29CQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2Y7cUJBQU07b0JBQ0wsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFTLENBQUEsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzNFLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNmO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vdGlmeSBmcm9tIFwiZGV2ZXh0cmVtZS91aS9ub3RpZnlcIjtcclxuaW1wb3J0IHtEeFZhbGlkYXRpb25Hcm91cENvbXBvbmVudCwgRHhWYWxpZGF0b3JDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBub3RpZnlfZXJyb3IobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgbm90aWZ5KHtcclxuICAgIGRpc3BsYXlUaW1lOiAxMjAwMCxcclxuICAgIG1lc3NhZ2UsXHJcbiAgICB0eXBlOiAnZXJyb3InLFxyXG4gICAgd2lkdGg6ICczMDBweCdcclxuICB9LCB7XHJcbiAgICBkaXJlY3Rpb246ICd1cC1wdXNoJyxcclxuICAgIHBvc2l0aW9uOiAnYm90dG9tIHJpZ2h0J1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbm90aWZ5X3dhcm5pbmcobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgbm90aWZ5KHtcclxuICAgIGRpc3BsYXlUaW1lOiA4MDAwLFxyXG4gICAgbWVzc2FnZSxcclxuICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgIHdpZHRoOiAnMzAwcHgnXHJcbiAgfSwge1xyXG4gICAgZGlyZWN0aW9uOiAndXAtcHVzaCcsXHJcbiAgICBwb3NpdGlvbjogJ2JvdHRvbSByaWdodCdcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmeV9zdWNjZXNzKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gIG5vdGlmeSh7XHJcbiAgICBkaXNwbGF5VGltZTogNDAwMCxcclxuICAgIG1lc3NhZ2UsXHJcbiAgICB0eXBlOiAnc3VjY2VzcycsXHJcbiAgICB3aWR0aDogJzMwMHB4J1xyXG4gIH0sIHtcclxuICAgIGRpcmVjdGlvbjogJ2Rvd24tcHVzaCcsXHJcbiAgICBwb3NpdGlvbjogJ3RvcCByaWdodCdcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlKHZhbGlkYXRvcjogRHhWYWxpZGF0b3JDb21wb25lbnQpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzb2x2ZSA9PiB7XHJcbiAgICBjb25zdCB2YWxpZGF0ZVJlc3VsdCA9IHZhbGlkYXRvci5pbnN0YW5jZS52YWxpZGF0ZSgpO1xyXG4gICAgaWYgKCF2YWxpZGF0ZVJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbGlkYXRlUmVzdWx0LnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgIHZhbGlkYXRlUmVzdWx0LmNvbXBsZXRlPy50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZV9ncm91cCh2YWxpZGF0aW9uR3JvdXA6IER4VmFsaWRhdGlvbkdyb3VwQ29tcG9uZW50KSB7XHJcbiAgY29uc3QgdG9wID0gKHZhbGlkYXRpb25Hcm91cCBhcyBhbnkpLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICBsZXQgc291cmNlTm9kZTtcclxuICBjb25zdCB0YXJnZXRDbGFzc05hbWUgPSAnZHgtZmllbGQnO1xyXG4gIGNvbnN0IGZpbmRUYXJnZXROb2RlID0gKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgc291cmNlTm9kZSA9IG5vZGU7XHJcbiAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICBpZiAobm9kZS5jbGFzc0xpc3QuY29udGFpbnModGFyZ2V0Q2xhc3NOYW1lKSkge1xyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKG5vZGUgPT09IHRvcCkge1xyXG4gICAgICAgICAgcmV0dXJuIHNvdXJjZU5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzb2x2ZSA9PiB7XHJcbiAgICBjb25zdCB2YWxpZGF0ZVJlc3VsdCA9IHZhbGlkYXRpb25Hcm91cC5pbnN0YW5jZS52YWxpZGF0ZSgpO1xyXG4gICAgaWYgKCF2YWxpZGF0ZVJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgIGNvbnN0IGJyb2tlbkVsZW1lbnQgPSAodmFsaWRhdGVSZXN1bHQuYnJva2VuUnVsZXM/LlswXSBhcyBhbnkpLnZhbGlkYXRvci5lbGVtZW50KCk7XHJcbiAgICAgIGZpbmRUYXJnZXROb2RlKGJyb2tlbkVsZW1lbnQpLnNjcm9sbEludG9WaWV3KCk7XHJcbiAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbGlkYXRlUmVzdWx0LnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgIHZhbGlkYXRlUmVzdWx0LmNvbXBsZXRlPy50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnJva2VuRWxlbWVudCA9IChyZXN1bHQuYnJva2VuUnVsZXM/LlswXSBhcyBhbnkpLnZhbGlkYXRvci5lbGVtZW50KCk7XHJcbiAgICAgICAgICBmaW5kVGFyZ2V0Tm9kZShicm9rZW5FbGVtZW50KS5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIl19
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy91dGlsL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQWU7SUFDMUMsTUFBTSxDQUFDO1FBQ0wsV0FBVyxFQUFFLEtBQUs7UUFDbEIsT0FBTztRQUNQLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLE9BQU87S0FDZixFQUFFO1FBQ0QsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLGNBQWM7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZTtJQUM1QyxNQUFNLENBQUM7UUFDTCxXQUFXLEVBQUUsSUFBSTtRQUNqQixPQUFPO1FBQ1AsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsT0FBTztLQUNmLEVBQUU7UUFDRCxTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsY0FBYztLQUN6QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE1BQU0sQ0FBQztRQUNMLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU87UUFDUCxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxPQUFPO0tBQ2YsRUFBRTtRQUNELFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFFBQVEsRUFBRSxXQUFXO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVUsRUFBRSxNQUFjO0lBQ3BELE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVUsRUFBRSxNQUFjO0lBQ3hELE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzRSxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNO1lBQ1QsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU07WUFDVCxPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssTUFBTTtZQUNULE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxLQUFLO1lBQ1IsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssSUFBSTtZQUNQLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssS0FBSztZQUNSLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssS0FBSztZQUNSLE9BQU8sS0FBSyxDQUFDO1FBQ2Y7WUFDRSxPQUFPLFNBQVMsQ0FBQztLQUNwQjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBWTtJQUMzQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLE9BQU8sQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1FBQ2hDLElBQUksSUFBSSxJQUFJLENBQUM7UUFDYixDQUFDLEVBQUUsQ0FBQztLQUNMO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBQUMsU0FBK0I7SUFDNUQsT0FBTyxJQUFJLE9BQU8sQ0FBVSxPQUFPLENBQUMsRUFBRTtRQUNwQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQjtRQUNELElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDdkMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO29CQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2Y7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNmO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsZUFBMkM7SUFDOUUsTUFBTSxHQUFHLEdBQUksZUFBdUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQzNELElBQUksVUFBVSxDQUFDO0lBQ2YsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDO0lBQ25DLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7UUFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPLElBQUksRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQzFCLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDaEIsT0FBTyxVQUFVLENBQUM7aUJBQ25CO2FBQ0Y7U0FDRjtJQUNILENBQUMsQ0FBQztJQUNGLE9BQU8sSUFBSSxPQUFPLENBQVUsT0FBTyxDQUFDLEVBQUU7UUFDcEMsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUMzQixNQUFNLGFBQWEsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQVMsQ0FBQSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRixjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN2QyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUM1QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDZjtxQkFBTTtvQkFDTCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQVMsQ0FBQSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDM0UsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMvQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2Y7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm90aWZ5IGZyb20gXCJkZXZleHRyZW1lL3VpL25vdGlmeVwiO1xyXG5pbXBvcnQge0R4VmFsaWRhdGlvbkdyb3VwQ29tcG9uZW50LCBEeFZhbGlkYXRvckNvbXBvbmVudH0gZnJvbSBcImRldmV4dHJlbWUtYW5ndWxhclwiO1xyXG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBub3RpZnlfZXJyb3IobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgbm90aWZ5KHtcclxuICAgIGRpc3BsYXlUaW1lOiAxMjAwMCxcclxuICAgIG1lc3NhZ2UsXHJcbiAgICB0eXBlOiAnZXJyb3InLFxyXG4gICAgd2lkdGg6ICczMDBweCdcclxuICB9LCB7XHJcbiAgICBkaXJlY3Rpb246ICd1cC1wdXNoJyxcclxuICAgIHBvc2l0aW9uOiAnYm90dG9tIHJpZ2h0J1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbm90aWZ5X3dhcm5pbmcobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgbm90aWZ5KHtcclxuICAgIGRpc3BsYXlUaW1lOiA4MDAwLFxyXG4gICAgbWVzc2FnZSxcclxuICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgIHdpZHRoOiAnMzAwcHgnXHJcbiAgfSwge1xyXG4gICAgZGlyZWN0aW9uOiAndXAtcHVzaCcsXHJcbiAgICBwb3NpdGlvbjogJ2JvdHRvbSByaWdodCdcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmeV9zdWNjZXNzKG1lc3NhZ2U6IHN0cmluZykge1xyXG4gIG5vdGlmeSh7XHJcbiAgICBkaXNwbGF5VGltZTogNDAwMCxcclxuICAgIG1lc3NhZ2UsXHJcbiAgICB0eXBlOiAnc3VjY2VzcycsXHJcbiAgICB3aWR0aDogJzMwMHB4J1xyXG4gIH0sIHtcclxuICAgIGRpcmVjdGlvbjogJ2Rvd24tcHVzaCcsXHJcbiAgICBwb3NpdGlvbjogJ3RvcCByaWdodCdcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdF9kYXRlKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGZvcm1hdERhdGUoZGF0ZSwgJ3l5eXkvTU0vZGQnLCBsb2NhbGUsICdHTVQrOCcpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0X2RhdGV0aW1lKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGZvcm1hdERhdGUoZGF0ZSwgJ3l5eXkvTU0vZGQgSEg6bW06c3MnLCBsb2NhbGUsICdHTVQrOCcpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZmlsZV90eXBlX2ljb24obmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgdHlwZSA9IG5hbWUuc3Vic3RyaW5nKG5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICd4bHMnOlxyXG4gICAgY2FzZSAneGxzeCc6XHJcbiAgICAgIHJldHVybiAnZXhjZWwnO1xyXG4gICAgY2FzZSAnZG9jJzpcclxuICAgIGNhc2UgJ2RvY3gnOlxyXG4gICAgICByZXR1cm4gJ3dvcmQnO1xyXG4gICAgY2FzZSAncHB0JzpcclxuICAgIGNhc2UgJ3BwdHgnOlxyXG4gICAgICByZXR1cm4gJ3BwdCc7XHJcbiAgICBjYXNlICdwZGYnOlxyXG4gICAgICByZXR1cm4gJ3BkZic7XHJcbiAgICBjYXNlICd0eHQnOlxyXG4gICAgY2FzZSAnY3N2JzpcclxuICAgIGNhc2UgJ3htbCc6XHJcbiAgICBjYXNlICdqc29uJzpcclxuICAgIGNhc2UgJ2pzJzpcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIGNhc2UgJ2pwZyc6XHJcbiAgICBjYXNlICdqcGVnJzpcclxuICAgIGNhc2UgJ3BuZyc6XHJcbiAgICBjYXNlICdnaWYnOlxyXG4gICAgICByZXR1cm4gJ2ltYWdlJztcclxuICAgIGNhc2UgJ3ppcCc6XHJcbiAgICBjYXNlICdyYXInOlxyXG4gICAgY2FzZSAnN3onOlxyXG4gICAgY2FzZSAnamFyJzpcclxuICAgICAgcmV0dXJuICd6aXAnO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuICd1bmtub3duJztcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRfZmlsZV9zaXplKHNpemU6IG51bWJlcikge1xyXG4gIGNvbnN0IGxhYmVscyA9IFsnYicsICdLYicsICdNYicsICdHYiddO1xyXG4gIGNvbnN0IGNvdW50ID0gbGFiZWxzLmxlbmd0aCAtIDE7XHJcbiAgbGV0IGkgPSAwO1xyXG4gIHdoaWxlIChpIDwgY291bnQgJiYgc2l6ZSA+PSAxMDI0KSB7XHJcbiAgICBzaXplIC89IDEwMjQ7XHJcbiAgICBpKys7XHJcbiAgfVxyXG4gIHJldHVybiBNYXRoLnJvdW5kKHNpemUgKiAxMDApIC8gMTAwICsgXCIgXCIgKyBsYWJlbHNbaV07XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZSh2YWxpZGF0b3I6IER4VmFsaWRhdG9yQ29tcG9uZW50KSB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSB2YWxpZGF0b3IuaW5zdGFuY2UudmFsaWRhdGUoKTtcclxuICAgIGlmICghdmFsaWRhdGVSZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0ZVJlc3VsdC5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xyXG4gICAgICB2YWxpZGF0ZVJlc3VsdC5jb21wbGV0ZT8udGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVfZ3JvdXAodmFsaWRhdGlvbkdyb3VwOiBEeFZhbGlkYXRpb25Hcm91cENvbXBvbmVudCkge1xyXG4gIGNvbnN0IHRvcCA9ICh2YWxpZGF0aW9uR3JvdXAgYXMgYW55KS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgbGV0IHNvdXJjZU5vZGU7XHJcbiAgY29uc3QgdGFyZ2V0Q2xhc3NOYW1lID0gJ2R4LWZpZWxkJztcclxuICBjb25zdCBmaW5kVGFyZ2V0Tm9kZSA9IChub2RlOiBhbnkpID0+IHtcclxuICAgIHNvdXJjZU5vZGUgPSBub2RlO1xyXG4gICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKHRhcmdldENsYXNzTmFtZSkpIHtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xyXG4gICAgICAgIGlmIChub2RlID09PSB0b3ApIHtcclxuICAgICAgICAgIHJldHVybiBzb3VyY2VOb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KHJlc29sdmUgPT4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSB2YWxpZGF0aW9uR3JvdXAuaW5zdGFuY2UudmFsaWRhdGUoKTtcclxuICAgIGlmICghdmFsaWRhdGVSZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICBjb25zdCBicm9rZW5FbGVtZW50ID0gKHZhbGlkYXRlUmVzdWx0LmJyb2tlblJ1bGVzPy5bMF0gYXMgYW55KS52YWxpZGF0b3IuZWxlbWVudCgpO1xyXG4gICAgICBmaW5kVGFyZ2V0Tm9kZShicm9rZW5FbGVtZW50KS5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICh2YWxpZGF0ZVJlc3VsdC5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xyXG4gICAgICB2YWxpZGF0ZVJlc3VsdC5jb21wbGV0ZT8udGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGJyb2tlbkVsZW1lbnQgPSAocmVzdWx0LmJyb2tlblJ1bGVzPy5bMF0gYXMgYW55KS52YWxpZGF0b3IuZWxlbWVudCgpO1xyXG4gICAgICAgICAgZmluZFRhcmdldE5vZGUoYnJva2VuRWxlbWVudCkuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbiJdfQ==