nuxeo-development-framework 3.0.0 → 3.0.1

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.
@@ -3,7 +3,7 @@ import * as i0 from "@angular/core";
3
3
  export class IconService {
4
4
  constructor() { }
5
5
  getFileIcon(document, dataType) {
6
- var _a;
6
+ var _a, _b, _c, _d;
7
7
  let thumb = 'assets/drive-icons/genericfile.png';
8
8
  if (dataType === 'document') {
9
9
  try {
@@ -35,7 +35,7 @@ export class IconService {
35
35
  //(document.contextParameters.thumbnail.url) ? document.contextParameters.thumbnail.url : 'assets/drive-icons/video.png';
36
36
  }
37
37
  else if ((document.properties.file || document.properties['file:content'])['mime-type'].includes('image')) {
38
- thumb = (document.contextParameters.thumbnail) ? document.contextParameters.thumbnail.url : 'assets/drive-icons/photo.png';
38
+ thumb = ((_b = document === null || document === void 0 ? void 0 : document.contextParameters) === null || _b === void 0 ? void 0 : _b.thumbnail) ? (_d = (_c = document === null || document === void 0 ? void 0 : document.contextParameters) === null || _c === void 0 ? void 0 : _c.thumbnail) === null || _d === void 0 ? void 0 : _d.url : 'assets/drive-icons/photo.png';
39
39
  }
40
40
  else if ((document.properties.file || document.properties['file:content'])['mime-type'].includes('zip')) {
41
41
  thumb = 'assets/drive-icons/zip.png';
@@ -137,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
137
137
  type: Injectable,
138
138
  args: [{ providedIn: 'root' }]
139
139
  }], ctorParameters: function () { return []; } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uL2ljb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sV0FBVztJQUNwQixnQkFBZ0IsQ0FBQztJQUdqQixXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVM7O1FBQzNCLElBQUksS0FBSyxHQUFHLG9DQUFvQyxDQUFDO1FBQ2pELElBQUksUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUN6QixJQUFJO2dCQUNBLElBQUksQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsSUFBSSxNQUFLLGVBQWUsRUFBRTtvQkFDcEMsSUFBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7d0JBQzlDLEtBQUssR0FBRyw0QkFBNEIsQ0FBQztxQkFDeEM7eUJBQU0sSUFBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxNQUFNLEVBQUU7d0JBQ25ELEtBQUssR0FBRyxxQ0FBcUMsQ0FBQztxQkFDakQ7aUJBQ0o7cUJBQU0sSUFBSSxDQUFBLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE1BQU0sMENBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFFBQVEsS0FBSSxJQUFJLEVBQUU7b0JBQ2xGLEtBQUssR0FBRywrQkFBK0IsQ0FBQztpQkFFM0M7cUJBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxJ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LElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ25DLEtBQUssR0FBRywrQkFBK0IsQ0FBQzthQUMzQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNoQyxLQUFLLEdBQUcsNEJBQTRCLENBQUM7YUFDeEM7aUJBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDaEMsS0FBSyxHQUFHLDRCQUE0QixDQUFDO2FBQ3hDO2lCQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ2hDLEtBQUssR0FBRyw0QkFBNEIsQ0FBQzthQUN4QztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNsQyxLQUFLLEdBQUcsOEJBQThCLENBQUM7YUFDMUM7U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNqQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O3dHQXRHUSxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNOzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBJY29uU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHJcbiAgICBnZXRGaWxlSWNvbihkb2N1bWVudCwgZGF0YVR5cGU/KSB7XHJcbiAgICAgICAgbGV0IHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9nZW5lcmljZmlsZS5wbmcnO1xyXG4gICAgICAgIGlmIChkYXRhVHlwZSA9PT0gJ2RvY3VtZW50Jykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50Py50eXBlID09PSAnRG9jdW1lbnRUeXBlZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZihkb2N1bWVudC5wcm9wZXJ0aWVzLmNvbnRlbnRUeXBlZSA9PT0gJ0ZvbGRlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL2JveC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihkb2N1bWVudC5wcm9wZXJ0aWVzLmNvbnRlbnRUeXBlZSA9PT0gJ0ZpbGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9maWxlVGVtcGxhdGUucG5nJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50Py5mYWNldHM/LmluZGV4T2YoJ0ZvbGRlcmlzaCcpID4gLTEgfHwgZG9jdW1lbnQ/LmlzRm9sZGVyID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvZm9sZGVyLnBuZyc7XHJcblxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3BkZicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3BkZi5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3Bvd2VycG9pbnQnKSB8fCAoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3ByZXNlbnRhdGlvbm1sJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvcHB0eC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3dvcmQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9kb2N4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnc2hlZXQnKSB8fCAoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ2V4Y2VsJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMveGxzeC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3ZpZGVvJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9IChkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwpID8gZG9jdW1lbnQuY29udGV4dFBhcmFtZXRlcnMudGh1bWJuYWlsLnVybCA6ICdhc3NldHMvZHJpdmUtaWNvbnMvdmlkZW8ucG5nJztcclxuICAgICAgICAgICAgICAgICAgICAvLyhkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsKSA/IGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbC51cmwgOiAnYXNzZXRzL2RyaXZlLWljb25zL3ZpZGVvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnaW1hZ2UnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gKGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbCkgPyBkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsIDonYXNzZXRzL2RyaXZlLWljb25zL3Bob3RvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnemlwJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvemlwLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gdGh1bWI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09ICdiYXRjaCcpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3BkZicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3BkZi5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3Bvd2VycG9pbnQnKSB8fCAoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3ByZXNlbnRhdGlvbm1sJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvcHB0eC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3dvcmQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9kb2N4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnc2hlZXQnKSB8fCAoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ2V4Y2VsJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMveGxzeC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3ZpZGVvJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9IChkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwpID8gZG9jdW1lbnQuY29udGV4dFBhcmFtZXRlcnMudGh1bWJuYWlsLnVybCA6ICdhc3NldHMvZHJpdmUtaWNvbnMvdmlkZW8ucG5nJztcclxuICAgICAgICAgICAgICAgICAgICAvLyhkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsKSA/IGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbC51cmwgOiAnYXNzZXRzL2RyaXZlLWljb25zL3ZpZGVvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnaW1hZ2UnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gKGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbCkgPyBkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsIDonYXNzZXRzL2RyaXZlLWljb25zL3Bob3RvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnemlwJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvemlwLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gdGh1bWI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGlmIGRhdGEgdHlwZSB3YXMgZmlsZSB0aGF0IGp1c3QgdXBsb2FkZWQgdGhyb3VnaHQgZmlsZSBtYW5nZXJcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICgoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCdwZGYnKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvcGRmLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ3Bvd2VycG9pbnQnKSB8fCAoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCdwcmVzZW50YXRpb25tbCcpKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvcHB0eC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCd3b3JkJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL2RvY3gucG5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50LnR5cGUgJiYgZG9jdW1lbnQudHlwZS5pbmNsdWRlcygnc2hlZXQnKSB8fCAoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCdleGNlbCcpKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMveGxzeC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCd2aWRlbycpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRodW1iID1kb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy92aWRlby5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCdpbWFnZScpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9waG90by5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYiA9IHRodW1iO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHVtYjtcclxuICAgIH1cclxuICAgIGdldEFyY2hpdmVkRG9jdW1lbnRJY29uKGRvY3VtZW50LCBkYXRhVHlwZT8pIHtcclxuICAgICAgICBsZXQgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3NpdGUucG5nJztcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQ/LnR5cGUgPT09ICdTdG9yZScpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9zdG9yZS5wbmcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnR5cGUgPT09ICdEcmF3ZXInKSB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvZHJhd2VyLnBuZyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQudHlwZSA9PT0gJ1JvdycpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9yb3cucG5nJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC50eXBlID09PSAnQmF5Jykge1xyXG4gICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL2JheS5wbmcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnR5cGUgPT09ICdCb3gnKSB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvYm94LnBuZyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQudHlwZSA9PT0gJ1NoZWxmJykge1xyXG4gICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3NoZWxmLnBuZyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRodW1iID0gdGh1bWI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHVtYjtcclxuICAgIH1cclxufVxyXG4iXX0=
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaXNwbGF5LXN1aXRhYmxlLWljb24vZGlzcGxheS1zdWl0YWJsZS1pY29uL2ljb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sV0FBVztJQUNwQixnQkFBZ0IsQ0FBQztJQUdqQixXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVM7O1FBQzNCLElBQUksS0FBSyxHQUFHLG9DQUFvQyxDQUFDO1FBQ2pELElBQUksUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUN6QixJQUFJO2dCQUNBLElBQUksQ0FBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsSUFBSSxNQUFLLGVBQWUsRUFBRTtvQkFDcEMsSUFBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7d0JBQzlDLEtBQUssR0FBRyw0QkFBNEIsQ0FBQztxQkFDeEM7eUJBQU0sSUFBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksS0FBSyxNQUFNLEVBQUU7d0JBQ25ELEtBQUssR0FBRyxxQ0FBcUMsQ0FBQztxQkFDakQ7aUJBQ0o7cUJBQU0sSUFBSSxDQUFBLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE1BQU0sMENBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFFBQVEsS0FBSSxJQUFJLEVBQUU7b0JBQ2xGLEtBQUssR0FBRywrQkFBK0IsQ0FBQztpQkFFM0M7cUJBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxJ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SUFBSSxNQUFLLE9BQU8sRUFBRTtnQkFDNUIsS0FBSyxHQUFHLDhCQUE4QixDQUFDO2FBQzFDO2lCQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ25DLEtBQUssR0FBRywrQkFBK0IsQ0FBQzthQUMzQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNoQyxLQUFLLEdBQUcsNEJBQTRCLENBQUM7YUFDeEM7aUJBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDaEMsS0FBSyxHQUFHLDRCQUE0QixDQUFDO2FBQ3hDO2lCQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQ2hDLEtBQUssR0FBRyw0QkFBNEIsQ0FBQzthQUN4QztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNsQyxLQUFLLEdBQUcsOEJBQThCLENBQUM7YUFDMUM7U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNqQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O3dHQXRHUSxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNOzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBJY29uU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuXHJcbiAgICBnZXRGaWxlSWNvbihkb2N1bWVudCwgZGF0YVR5cGU/KSB7XHJcbiAgICAgICAgbGV0IHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9nZW5lcmljZmlsZS5wbmcnO1xyXG4gICAgICAgIGlmIChkYXRhVHlwZSA9PT0gJ2RvY3VtZW50Jykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50Py50eXBlID09PSAnRG9jdW1lbnRUeXBlZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZihkb2N1bWVudC5wcm9wZXJ0aWVzLmNvbnRlbnRUeXBlZSA9PT0gJ0ZvbGRlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL2JveC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihkb2N1bWVudC5wcm9wZXJ0aWVzLmNvbnRlbnRUeXBlZSA9PT0gJ0ZpbGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9maWxlVGVtcGxhdGUucG5nJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50Py5mYWNldHM/LmluZGV4T2YoJ0ZvbGRlcmlzaCcpID4gLTEgfHwgZG9jdW1lbnQ/LmlzRm9sZGVyID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvZm9sZGVyLnBuZyc7XHJcblxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3BkZicpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3BkZi5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3Bvd2VycG9pbnQnKSB8fCAoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3ByZXNlbnRhdGlvbm1sJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvcHB0eC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3dvcmQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9kb2N4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnc2hlZXQnKSB8fCAoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ2V4Y2VsJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMveGxzeC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQucHJvcGVydGllcy5maWxlIHx8IGRvY3VtZW50LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddKVsnbWltZS10eXBlJ10uaW5jbHVkZXMoJ3ZpZGVvJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9IChkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwpID8gZG9jdW1lbnQuY29udGV4dFBhcmFtZXRlcnMudGh1bWJuYWlsLnVybCA6ICdhc3NldHMvZHJpdmUtaWNvbnMvdmlkZW8ucG5nJztcclxuICAgICAgICAgICAgICAgICAgICAvLyhkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsKSA/IGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbC51cmwgOiAnYXNzZXRzL2RyaXZlLWljb25zL3ZpZGVvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnaW1hZ2UnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gKGRvY3VtZW50Py5jb250ZXh0UGFyYW1ldGVycz8udGh1bWJuYWlsKSA/IGRvY3VtZW50Py5jb250ZXh0UGFyYW1ldGVycz8udGh1bWJuYWlsPy51cmwgOidhc3NldHMvZHJpdmUtaWNvbnMvcGhvdG8ucG5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50LnByb3BlcnRpZXMuZmlsZSB8fCBkb2N1bWVudC5wcm9wZXJ0aWVzWydmaWxlOmNvbnRlbnQnXSlbJ21pbWUtdHlwZSddLmluY2x1ZGVzKCd6aXAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy96aXAucG5nJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGh1bWIgPSB0aHVtYjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gJ2JhdGNoJykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygncGRmJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvcGRmLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygncG93ZXJwb2ludCcpIHx8IChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygncHJlc2VudGF0aW9ubWwnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9wcHR4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnd29yZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL2RvY3gucG5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50LnByb3BlcnRpZXMuZmlsZSB8fCBkb2N1bWVudC5wcm9wZXJ0aWVzWydmaWxlOmNvbnRlbnQnXSlbJ21pbWUtdHlwZSddLmluY2x1ZGVzKCdzaGVldCcpIHx8IChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygnZXhjZWwnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy94bHN4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC5wcm9wZXJ0aWVzLmZpbGUgfHwgZG9jdW1lbnQucHJvcGVydGllc1snZmlsZTpjb250ZW50J10pWydtaW1lLXR5cGUnXS5pbmNsdWRlcygndmlkZW8nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gKGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbCkgPyBkb2N1bWVudC5jb250ZXh0UGFyYW1ldGVycy50aHVtYm5haWwudXJsIDogJ2Fzc2V0cy9kcml2ZS1pY29ucy92aWRlby5wbmcnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vKGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbC51cmwpID8gZG9jdW1lbnQuY29udGV4dFBhcmFtZXRlcnMudGh1bWJuYWlsLnVybCA6ICdhc3NldHMvZHJpdmUtaWNvbnMvdmlkZW8ucG5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50LnByb3BlcnRpZXMuZmlsZSB8fCBkb2N1bWVudC5wcm9wZXJ0aWVzWydmaWxlOmNvbnRlbnQnXSlbJ21pbWUtdHlwZSddLmluY2x1ZGVzKCdpbWFnZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAoZG9jdW1lbnQuY29udGV4dFBhcmFtZXRlcnMudGh1bWJuYWlsKSA/IGRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbC51cmwgOidhc3NldHMvZHJpdmUtaWNvbnMvcGhvdG8ucG5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50LnByb3BlcnRpZXMuZmlsZSB8fCBkb2N1bWVudC5wcm9wZXJ0aWVzWydmaWxlOmNvbnRlbnQnXSlbJ21pbWUtdHlwZSddLmluY2x1ZGVzKCd6aXAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy96aXAucG5nJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGh1bWIgPSB0aHVtYjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gaWYgZGF0YSB0eXBlIHdhcyBmaWxlIHRoYXQganVzdCB1cGxvYWRlZCB0aHJvdWdodCBmaWxlIG1hbmdlclxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ3BkZicpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9wZGYucG5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50LnR5cGUgJiYgZG9jdW1lbnQudHlwZS5pbmNsdWRlcygncG93ZXJwb2ludCcpIHx8IChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ3ByZXNlbnRhdGlvbm1sJykpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9wcHR4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ3dvcmQnKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvZG9jeC5wbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQudHlwZSAmJiBkb2N1bWVudC50eXBlLmluY2x1ZGVzKCdzaGVldCcpIHx8IChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ2V4Y2VsJykpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy94bHN4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ3ZpZGVvJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGh1bWIgPWRvY3VtZW50LmNvbnRleHRQYXJhbWV0ZXJzLnRodW1ibmFpbC51cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3ZpZGVvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkb2N1bWVudC50eXBlICYmIGRvY3VtZW50LnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3Bob3RvLnBuZyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gdGh1bWI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRodW1iO1xyXG4gICAgfVxyXG4gICAgZ2V0QXJjaGl2ZWREb2N1bWVudEljb24oZG9jdW1lbnQsIGRhdGFUeXBlPykge1xyXG4gICAgICAgIGxldCB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvc2l0ZS5wbmcnO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudD8udHlwZSA9PT0gJ1N0b3JlJykge1xyXG4gICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3N0b3JlLnBuZyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQudHlwZSA9PT0gJ0RyYXdlcicpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9kcmF3ZXIucG5nJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC50eXBlID09PSAnUm93Jykge1xyXG4gICAgICAgICAgICAgICAgdGh1bWIgPSAnYXNzZXRzL2RyaXZlLWljb25zL3Jvdy5wbmcnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnR5cGUgPT09ICdCYXknKSB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvYmF5LnBuZyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQudHlwZSA9PT0gJ0JveCcpIHtcclxuICAgICAgICAgICAgICAgIHRodW1iID0gJ2Fzc2V0cy9kcml2ZS1pY29ucy9ib3gucG5nJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC50eXBlID09PSAnU2hlbGYnKSB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYiA9ICdhc3NldHMvZHJpdmUtaWNvbnMvc2hlbGYucG5nJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGh1bWIgPSB0aHVtYjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRodW1iO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,264 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../../shared-services/file-manager.service";
4
+ import * as i2 from "../../../../shared-services/user.service";
5
+ import * as i3 from "../../../custom-toastr/services/custom-toastr.service";
6
+ import * as i4 from "../../../../Core/services/user/user-preferences.service";
7
+ import * as i5 from "@angular/material/icon";
8
+ import * as i6 from "@angular/material/progress-bar";
9
+ import * as i7 from "@angular/material/checkbox";
10
+ import * as i8 from "../../../display-suitable-icon/display-suitable-icon/display-suitable-icon.component";
11
+ import * as i9 from "@angular/material/tooltip";
12
+ import * as i10 from "@angular/common";
13
+ import * as i11 from "@angular/forms";
14
+ import * as i12 from "@ngx-translate/core";
15
+ export class ClipboardComponent {
16
+ constructor(fileManagerService, userService, customToastrService, userPreferenceService) {
17
+ this.fileManagerService = fileManagerService;
18
+ this.userService = userService;
19
+ this.customToastrService = customToastrService;
20
+ this.userPreferenceService = userPreferenceService;
21
+ this.onClipboardClose = new EventEmitter();
22
+ this.onRefreshFolderTree = new EventEmitter();
23
+ this.clipboardItems = []; // array of id to items in clipboard
24
+ this.preventedGroups = [];
25
+ this.clipboardDocments = []; // array of documents with full details of items in clipboard
26
+ this.enableCopy = false;
27
+ this.enableMove = false;
28
+ this.clipboardLoading = false;
29
+ this.documentSelectedInClipboard = [];
30
+ }
31
+ ngOnInit() {
32
+ this.refreshClipSubscription = this.fileManagerService.onRefreshClipboard.subscribe(res => {
33
+ this.openClipboard();
34
+ });
35
+ this.openClipboard();
36
+ }
37
+ ngOnDestroy() {
38
+ this.refreshClipSubscription ? this.refreshClipSubscription.unsubscribe() : null;
39
+ }
40
+ closeClipboard() {
41
+ this.onClipboardClose.emit();
42
+ this.clipboardDocments = [];
43
+ }
44
+ openClipboard() {
45
+ this.enableCopy = false;
46
+ this.enableMove = false;
47
+ this.clipboardLoading = true;
48
+ if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] && this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] !== '08112021') {
49
+ // get accepted childerns for my current folder
50
+ // if (this.subtypesService.storedSubtypes[this.myCurrecntFolderData.entity.uid]) {
51
+ // this.myTargetFolderAcceptedChildrens = this.subtypesService.storedSubtypes[this.myCurrecntFolderData.entity.uid];
52
+ // } else {
53
+ this.fileManagerService.getClipboardAcceptedTypes(this.myCurrecntFolderData.entity.uid).subscribe(res => {
54
+ this.myTargetFolderAcceptedChildrens = res;
55
+ }, error => {
56
+ this.clipboardLoading = false;
57
+ this.clipboardDocments = [];
58
+ });
59
+ // }
60
+ }
61
+ if (this.clipboardItems.length > 0) {
62
+ this.fileManagerService.getClipboardDocuments(this.clipboardItems).subscribe(res => {
63
+ res.map(document => {
64
+ document['canCopyToTarget'] = (this.canPerformActionInsideTarget(document) && this.checkIfNotTheSameParent(document) && document.canCopy);
65
+ document['canMoveToTarget'] = (this.canPerformActionInsideTarget(document) && this.checkIfNotTheSameParent(document) && document.canMove);
66
+ });
67
+ this.clipboardDocments = res;
68
+ console.log(this.clipboardDocments);
69
+ this.clipboardLoading = false;
70
+ });
71
+ }
72
+ else {
73
+ this.clipboardDocments = [];
74
+ this.clipboardLoading = false;
75
+ }
76
+ }
77
+ // prevent copying or moving the file to its same place since it is prevented
78
+ // prevent copying or moving the folder inside it self
79
+ checkIfNotTheSameParent(document) {
80
+ // let directory = this.getCurrentDirectory();
81
+ if (document.parentRef !== this.directory.dataItem.id && document.uid !== this.directory.dataItem.id) {
82
+ return true;
83
+ }
84
+ else {
85
+ return false;
86
+ }
87
+ }
88
+ deletefromClipboard(document) {
89
+ let myindex = -1;
90
+ this.clipboardItems.map((id, index) => {
91
+ if (document.uid === id) {
92
+ myindex = index;
93
+ }
94
+ });
95
+ this.clipboardItems.splice(myindex, 1);
96
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', "TOASTER.removed_from_clipboard");
97
+ // let directory = this.getCurrentDirectory();
98
+ // let id =
99
+ // directory.dataItem === undefined
100
+ // ? this.mainFolder
101
+ // : this.getCurrentFolderId(directory);
102
+ // this.reinitializeFolderTree(id, directory);
103
+ this.onRefreshFolderTree.emit();
104
+ this.openClipboard();
105
+ this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
106
+ }
107
+ // function to check if i can perform action on that target folder or not
108
+ canPerformActionInsideTarget(document) {
109
+ var _a;
110
+ //check if target is 'other' type folder or dms folder
111
+ if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] === '08112021' && !this.checkIfInPreventedGroups(this.myCurrecntFolderData.entity.path)) {
112
+ // if my folder is from type others and not in prevented groups
113
+ return true;
114
+ }
115
+ else if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] && this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] !== '08112021') {
116
+ //if my folder has code and was not other type folder then check for accepted chilrdrn for that folder to contain this file type
117
+ if (document.isFile === 'File') {
118
+ if (this.myTargetFolderAcceptedChildrens.contextParameters &&
119
+ this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children && Array.isArray(this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children) &&
120
+ this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children.indexOf(document.properties['gdoc:documentTypeCode']) > -1) {
121
+ return true;
122
+ }
123
+ else {
124
+ return false;
125
+ }
126
+ }
127
+ else {
128
+ if (this.myTargetFolderAcceptedChildrens.contextParameters &&
129
+ this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children && Array.isArray(this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children) &&
130
+ ((_a = this.myTargetFolderAcceptedChildrens.contextParameters) === null || _a === void 0 ? void 0 : _a.accepted_children.indexOf(document.properties['dmsfolder:documentTypeCode'])) > -1) {
131
+ return true;
132
+ }
133
+ else {
134
+ return false;
135
+ }
136
+ }
137
+ }
138
+ else {
139
+ // prevent action to this target
140
+ return false;
141
+ }
142
+ }
143
+ // function to check if this path not belong to group that is prevented from creating folder of type others
144
+ checkIfInPreventedGroups(path) {
145
+ // if in prevented froup rturn true else return false
146
+ console.log(path);
147
+ let myDepartment = this.userService.getUserDepartmentFromPath(path);
148
+ let exist = this.preventedGroups.indexOf(myDepartment) > -1 ? true : false;
149
+ return exist;
150
+ }
151
+ copyFromInsideClipboard() {
152
+ let clipboardSelectedItems = [];
153
+ let clipboardSelectedItemsLength = 0;
154
+ // seperate selected items in seperate array
155
+ this.clipboardDocments.map((doc, index) => {
156
+ // can't copy file in the same place it exist and can't copy folder inside it self
157
+ if (doc.isSelected && doc.parentRef !== this.directory.dataItem.id && doc.uid !== this.directory.dataItem.id) {
158
+ clipboardSelectedItems.push(doc.uid);
159
+ }
160
+ });
161
+ if (clipboardSelectedItems.length > 0) {
162
+ this.clipboardLoading = true;
163
+ // this.currentPath = '';
164
+ this.fileManagerService
165
+ .copyTo({ id: this.directory.dataItem.id, name: this.directory.dataItem.name }, clipboardSelectedItems.toString())
166
+ .subscribe((res) => {
167
+ // remove selected items from clipboard after action is done
168
+ this.removeItemsAfterActionDone(clipboardSelectedItems);
169
+ this.clipboardLoading = false;
170
+ this.onClipboardClose.emit();
171
+ this.onRefreshFolderTree.emit();
172
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_COPIED');
173
+ }, (err) => {
174
+ this.clipboardLoading = false;
175
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_ERROR');
176
+ });
177
+ }
178
+ else {
179
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_DESTINATION_ERROR');
180
+ }
181
+ }
182
+ moveFromInsideClipboard() {
183
+ let clipboardSelectedItems = [];
184
+ let clipboardSelectedItemsLength = 0;
185
+ // seperate selected items in seperate array
186
+ this.clipboardDocments.map((doc, index) => {
187
+ // can't move file in the same place it exist and can't move folder inside it self
188
+ if (doc.isSelected && doc.parentRef !== this.directory.dataItem.id && doc.uid !== this.directory.dataItem.id) {
189
+ clipboardSelectedItems.push(doc.uid);
190
+ }
191
+ });
192
+ if (clipboardSelectedItems.length > 0) {
193
+ this.clipboardLoading = true;
194
+ this.fileManagerService
195
+ .moveTo({ id: this.directory.dataItem.id, name: this.directory.dataItem.name }, clipboardSelectedItems.toString())
196
+ .subscribe((res) => {
197
+ // remove selected items from clipboard after action is done
198
+ this.removeItemsAfterActionDone(clipboardSelectedItems);
199
+ this.clipboardLoading = false;
200
+ this.onClipboardClose.emit();
201
+ this.onRefreshFolderTree.emit();
202
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_MOVED');
203
+ }, (err) => {
204
+ this.clipboardLoading = false;
205
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_ERROR');
206
+ });
207
+ }
208
+ else
209
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_DESTINATION_ERROR');
210
+ }
211
+ removeItemsAfterActionDone(selectedItems) {
212
+ this.clipboardItems = this.clipboardItems.filter(function (el) {
213
+ return !selectedItems.includes(el);
214
+ });
215
+ this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
216
+ }
217
+ checking() {
218
+ this.enableCopy = false;
219
+ this.enableMove = false;
220
+ this.documentSelectedInClipboard = [];
221
+ // console.log(this.clipboardDocments);
222
+ this.clipboardDocments.map(document => {
223
+ // wokring with only selected documents
224
+ if (document.isSelected === true) {
225
+ // document['canCopyToTarget'] = (this.canPerformActionInsideTarget(document) && document.canCopy);
226
+ // document['canMoveToTarget'] = (this.canPerformActionInsideTarget(document) && document.canMove)
227
+ this.documentSelectedInClipboard.push(document);
228
+ }
229
+ });
230
+ if (this.documentSelectedInClipboard.length > 0) {
231
+ this.enableCopy = this.documentSelectedInClipboard.every(item => {
232
+ return item.canCopyToTarget === true;
233
+ });
234
+ this.enableMove = this.documentSelectedInClipboard.every(item => {
235
+ return item.canMoveToTarget === true;
236
+ });
237
+ }
238
+ console.log(this.documentSelectedInClipboard);
239
+ }
240
+ }
241
+ ClipboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ClipboardComponent, deps: [{ token: i1.FileManagerService }, { token: i2.UserService }, { token: i3.CustomToastrService }, { token: i4.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component });
242
+ ClipboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ClipboardComponent, selector: "lib-clipboard", inputs: { clipboardItems: "clipboardItems", myCurrecntFolderData: "myCurrecntFolderData", preventedGroups: "preventedGroups", directory: "directory" }, outputs: { onClipboardClose: "onClipboardClose", onRefreshFolderTree: "onRefreshFolderTree" }, ngImport: i0, template: "<div class=\"clipboard-side-section relative\">\n\n <div class=\"p-3 h-full\">\n <div class=\"clipboard-header flex justify-between items-center border-b-2\">\n <span class=\"flex text-gray-500 font-bold items-center\">\n <span class=\"text-4xl bi bi-clipboard\"></span>\n <span class=\"mx-2 text-xl\">{{'clipboard' | translate}}</span>\n </span>\n <mat-icon class=\"close-icon text-gray-500 cursor-pointer\" (click)=\"closeClipboard()\"\n [matTooltip]=\"'BUTTONS.CLOSE' | translate\">close</mat-icon>\n </div>\n <!-- <div class=\"h-full font-bold d-flex justify-center items-center\" *ngIf=\"clipboardLoading\">\n {{ \"loading\" | translate }}\n </div> -->\n <div class=\"w-full h-px bg-gray-200 mb-3\" *ngIf=\"clipboardLoading\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <div class=\"clipboard-content flex flex-col justify-between items-between\">\n <div class=\"h-full flex justify-center items-center text-gray-500\"\n *ngIf=\"clipboardDocments.length === 0\">{{'no_clipboard_items' | translate}}</div>\n\n <div class=\"px-2 h-5/6 overflow-y-auto\" *ngIf=\"clipboardDocments.length > 0\">\n <div class=\"border-b-2\" *ngFor=\"let document of clipboardDocments\">\n <div class=\"py-1 w-82 flex items-center justify-between\">\n <div class=\"flex items-center w-5/6\">\n <mat-checkbox [(ngModel)]=\"document.isSelected\" (change)=\"checking()\"> </mat-checkbox>\n <div class=\"flex w-full\">\n <!-- <title-with-icon class=\"w-1/6 -my-1.5\" [context]=\"document\"\n [showTitle]=\"false\"></title-with-icon> -->\n <app-display-suitable-icon class=\"mx-1\" [data]=\"document\" [size]=\"'40px'\"></app-display-suitable-icon>\n\n <!-- -->\n <div *ngIf=\"document.isFile === 'File'\"\n class=\"justify-center flex flex-col flex-1 flex-grow-0 w-5/6\">\n <div class=\"text-base text-gray-500 font-bold truncate\"\n [title]=\"document.properties?.['file:content']?.['name']\"\n [alt]=\"document.properties?.['file:content']?.['name']\">\n {{document['title']}}\n </div>\n <div class=\"text-gray-500 text-sm text-nowrap\">\n {{((document.properties?.['file:content']?.['length']) / (1024 *\n 1024)).toFixed(2) }}\n MB\n </div>\n </div>\n <div class=\"\n d-flex\n items-center\n text-base text-gray-500\n font-bold\n \" *ngIf=\"document.isFile === 'Folder'\">\n {{ document?.title }}\n </div>\n </div>\n </div>\n <span [matTooltip]=\"'BUTTONS.REMOVE_CLIPBOARD' | translate\"\n class=\"cursor-pointer w-5 h-5 rounded-full border-2 flex justify-center items-center border-gray-500 \"\n (click)=\"deletefromClipboard(document)\">\n <span class=\"text-gray-500 bi bi-x text-lg flex items-center\"></span>\n </span>\n </div>\n <div class=\"text-md text-gray-500 text-center my-2\">\n <span *ngIf=\"document.canCopyToTarget && !document.canMoveToTarget\">{{'can_copy_only' |\n translate}}</span>\n <span *ngIf=\"!document.canCopyToTarget && document.canMoveToTarget\">{{'can_move_only' |\n translate}}</span>\n <span *ngIf=\"document.canCopyToTarget && document.canMoveToTarget\">{{'can_copy_and_move' |\n translate}}</span>\n <span\n *ngIf=\"!document.canCopyToTarget && !document.canMoveToTarget\">{{'can_not_copy_and_move'\n | translate}}</span>\n </div>\n </div>\n\n </div>\n <div class=\"h-1/6 flex w-full justify-center items-center\">\n <button class=\"submission-button mx-2\" [disabled]=\"!enableCopy\"\n (click)=\"copyFromInsideClipboard()\">{{'BUTTONS.COPY' | translate}}</button>\n <button class=\"submission-button mx-2\" [disabled]=\"!enableMove\"\n (click)=\"moveFromInsideClipboard()\">{{'BUTTONS.MOVE' | translate}}</button>\n </div>\n </div>\n </div>\n\n <div class=\"bg-transparent absolute top-0 bottom-0 left-0 right-0 \" *ngIf=\"clipboardLoading\">\n\n </div>\n</div>", styles: [".clipboard-side-section{width:0px;overflow-x:hidden;height:91vh;background-color:#fff;overflow:hidden;border:1px solid lightgray;z-index:999;transition:.1s ease-in-out;border-bottom:none}.clipboard-side-section .clipboard-header{height:60px}.clipboard-side-section .clipboard-content{height:calc(100% - 60px)}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i8.DisplaySuitableIconComponent, selector: "app-display-suitable-icon", inputs: ["data", "size", "dataType", "archive"] }], directives: [{ type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ClipboardComponent, decorators: [{
244
+ type: Component,
245
+ args: [{
246
+ selector: 'lib-clipboard',
247
+ templateUrl: './clipboard.component.html',
248
+ styleUrls: ['./clipboard.component.scss'],
249
+ encapsulation: ViewEncapsulation.None
250
+ }]
251
+ }], ctorParameters: function () { return [{ type: i1.FileManagerService }, { type: i2.UserService }, { type: i3.CustomToastrService }, { type: i4.UserPreferencesService }]; }, propDecorators: { onClipboardClose: [{
252
+ type: Output
253
+ }], onRefreshFolderTree: [{
254
+ type: Output
255
+ }], clipboardItems: [{
256
+ type: Input
257
+ }], myCurrecntFolderData: [{
258
+ type: Input
259
+ }], preventedGroups: [{
260
+ type: Input
261
+ }], directory: [{
262
+ type: Input
263
+ }] } });
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWE3RyxNQUFNLE9BQU8sa0JBQWtCO0lBaUI3QixZQUFvQixrQkFBc0MsRUFDaEQsV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLHFCQUE2QztRQUhuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQWxCN0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0Qyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLG1CQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1FBRXpELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRzlCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQyxDQUFDLDZEQUE2RDtRQUNyRixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxL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QUNuRyxrR0FBa0c7Z0JBQ2xHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OytHQXhRVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw0U0NiL0IsaTJLQXVGTTsyRkQxRU8sa0JBQWtCO2tCQU45QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzBNQUdXLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL2ZpbGUtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkLXNlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21Ub2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXRvYXN0ci9zZXJ2aWNlcy9jdXN0b20tdG9hc3RyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdXNlci91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jbGlwYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2xpcGJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2xpcGJvYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBPdXRwdXQoKSBvbkNsaXBib2FyZENsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25SZWZyZXNoRm9sZGVyVHJlZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBjbGlwYm9hcmRJdGVtcyA9IFtdOyAvLyBhcnJheSBvZiBpZCB0byBpdGVtcyBpbiBjbGlwYm9hcmRcbiAgQElucHV0KCkgbXlDdXJyZWNudEZvbGRlckRhdGE7XG4gIEBJbnB1dCgpIHByZXZlbnRlZEdyb3VwcyA9IFtdO1xuICBASW5wdXQoKSBkaXJlY3Rvcnk7XG5cbiAgY2xpcGJvYXJkRG9jbWVudHMgPSBbXTsgLy8gYXJyYXkgb2YgZG9jdW1lbnRzIHdpdGggZnVsbCBkZXRhaWxzIG9mIGl0ZW1zIGluIGNsaXBib2FyZFxuICBlbmFibGVDb3B5ID0gZmFsc2U7XG4gIGVuYWJsZU1vdmUgPSBmYWxzZTtcbiAgY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICBkb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQgPSBbXTtcbiAgbXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucztcbiAgcmVmcmVzaENsaXBTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlTWFuYWdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaENsaXBTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5vblJlZnJlc2hDbGlwYm9hcmQuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLm9wZW5DbGlwYm9hcmQoKTtcbiAgICB9KVxuICAgIHRoaXMub3BlbkNsaXBib2FyZCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoQ2xpcFN1YnNjcmlwdGlvbiA/IHRoaXMucmVmcmVzaENsaXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6IG51bGw7XG4gIH1cbiAgY2xvc2VDbGlwYm9hcmQoKSB7XG4gICAgdGhpcy5vbkNsaXBib2FyZENsb3NlLmVtaXQoKTtcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzID0gW107XG4gIH1cblxuICBvcGVuQ2xpcGJvYXJkKCkge1xuICAgIHRoaXMuZW5hYmxlQ29weSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlTW92ZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMubXlDdXJyZWNudEZvbGRlckRhdGEuZW50aXR5LnByb3BlcnRpZXNbJ2Rtc2ZvbGRlcjpkb2N1bWVudFR5cGVDb2RlJ10gJiYgdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAhPT0gJzA4MTEyMDIxJykge1xuICAgICAgLy8gZ2V0IGFjY2VwdGVkIGNoaWxkZXJucyBmb3IgbXkgY3VycmVudCBmb2xkZXJcbiAgICAgIC8vIGlmICh0aGlzLnN1YnR5cGVzU2VydmljZS5zdG9yZWRTdWJ0eXBlc1t0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS51aWRdKSB7XG4gICAgICAvLyAgICAgdGhpcy5teVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zID0gdGhpcy5zdWJ0eXBlc1NlcnZpY2Uuc3RvcmVkU3VidHlwZXNbdGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkudWlkXTtcbiAgICAgIC8vIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbGVNYW5hZ2VyU2VydmljZS5nZXRDbGlwYm9hcmRBY2NlcHRlZFR5cGVzKHRoaXMubXlDdXJyZWNudEZvbGRlckRhdGEuZW50aXR5LnVpZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucyA9IHJlcztcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkRG9jbWVudHMgPSBbXTtcbiAgICAgIH0pXG4gICAgICAvLyB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNsaXBib2FyZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlLmdldENsaXBib2FyZERvY3VtZW50cyh0aGlzLmNsaXBib2FyZEl0ZW1zKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgcmVzLm1hcChkb2N1bWVudCA9PiB7XG4gICAgICAgICAgZG9jdW1lbnRbJ2NhbkNvcHlUb1RhcmdldCddID0gKHRoaXMuY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkgJiYgdGhpcy5jaGVja0lmTm90VGhlU2FtZVBhcmVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuY2FuQ29weSk7XG4gICAgICAgICAgZG9jdW1lbnRbJ2Nhbk1vdmVUb1RhcmdldCddID0gKHRoaXMuY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkgJiYgdGhpcy5jaGVja0lmTm90VGhlU2FtZVBhcmVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuY2FuTW92ZSlcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IHJlcztcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5jbGlwYm9hcmREb2NtZW50cyk7XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cyA9IFtdO1xuICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJldmVudCBjb3B5aW5nIG9yIG1vdmluZyB0aGUgZmlsZSB0byBpdHMgc2FtZSBwbGFjZSBzaW5jZSBpdCBpcyBwcmV2ZW50ZWQgXG4gIC8vIHByZXZlbnQgY29weWluZyBvciBtb3ZpbmcgdGhlIGZvbGRlciBpbnNpZGUgaXQgc2VsZlxuICBjaGVja0lmTm90VGhlU2FtZVBhcmVudChkb2N1bWVudCkge1xuICAgIC8vIGxldCBkaXJlY3RvcnkgPSB0aGlzLmdldEN1cnJlbnREaXJlY3RvcnkoKTtcbiAgICBpZiAoZG9jdW1lbnQucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2N1bWVudC51aWQgIT09IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLmlkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBkZWxldGVmcm9tQ2xpcGJvYXJkKGRvY3VtZW50KSB7XG4gICAgbGV0IG15aW5kZXggPSAtMTtcbiAgICB0aGlzLmNsaXBib2FyZEl0ZW1zLm1hcCgoaWQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZG9jdW1lbnQudWlkID09PSBpZCkge1xuICAgICAgICBteWluZGV4ID0gaW5kZXhcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuY2xpcGJvYXJkSXRlbXMuc3BsaWNlKG15aW5kZXgsIDEpO1xuICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5yZW1vdmVkX2Zyb21fY2xpcGJvYXJkXCIpO1xuICAgIC8vIGxldCBkaXJlY3RvcnkgPSB0aGlzLmdldEN1cnJlbnREaXJlY3RvcnkoKTtcbiAgICAvLyBsZXQgaWQgPVxuICAgIC8vICAgICBkaXJlY3RvcnkuZGF0YUl0ZW0gPT09IHVuZGVmaW5lZFxuICAgIC8vICAgICAgICAgPyB0aGlzLm1haW5Gb2xkZXJcbiAgICAvLyAgICAgICAgIDogdGhpcy5nZXRDdXJyZW50Rm9sZGVySWQoZGlyZWN0b3J5KTtcbiAgICAvLyB0aGlzLnJlaW5pdGlhbGl6ZUZvbGRlclRyZWUoaWQsIGRpcmVjdG9yeSk7XG4gICAgdGhpcy5vblJlZnJlc2hGb2xkZXJUcmVlLmVtaXQoKTtcbiAgICB0aGlzLm9wZW5DbGlwYm9hcmQoKTtcbiAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5zZXQoJ2NsaXBib2FyZEl0ZW1zJywgSlNPTi5zdHJpbmdpZnkodGhpcy5jbGlwYm9hcmRJdGVtcykpO1xuICB9XG5cbiAgLy8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgaSBjYW4gcGVyZm9ybSBhY3Rpb24gb24gdGhhdCB0YXJnZXQgZm9sZGVyIG9yIG5vdCBcbiAgY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkge1xuICAgIC8vY2hlY2sgaWYgdGFyZ2V0IGlzICdvdGhlcicgdHlwZSBmb2xkZXIgb3IgZG1zIGZvbGRlclxuICAgIGlmICh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddID09PSAnMDgxMTIwMjEnICYmICF0aGlzLmNoZWNrSWZJblByZXZlbnRlZEdyb3Vwcyh0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wYXRoKSkge1xuICAgICAgLy8gaWYgbXkgZm9sZGVyIGlzIGZyb20gdHlwZSBvdGhlcnMgYW5kIG5vdCBpbiBwcmV2ZW50ZWQgZ3JvdXBzXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5teUN1cnJlY250Rm9sZGVyRGF0YS5lbnRpdHkucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSAmJiB0aGlzLm15Q3VycmVjbnRGb2xkZXJEYXRhLmVudGl0eS5wcm9wZXJ0aWVzWydkbXNmb2xkZXI6ZG9jdW1lbnRUeXBlQ29kZSddICE9PSAnMDgxMTIwMjEnKSB7XG4gICAgICAvL2lmIG15IGZvbGRlciBoYXMgY29kZSBhbmQgd2FzIG5vdCBvdGhlciB0eXBlIGZvbGRlciB0aGVuIGNoZWNrIGZvciBhY2NlcHRlZCBjaGlscmRybiBmb3IgdGhhdCBmb2xkZXIgdG8gY29udGFpbiB0aGlzIGZpbGUgdHlwZVxuICAgICAgaWYgKGRvY3VtZW50LmlzRmlsZSA9PT0gJ0ZpbGUnKSB7XG4gICAgICAgIGlmICh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMgJiZcbiAgICAgICAgICB0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMuYWNjZXB0ZWRfY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheSh0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnMuYWNjZXB0ZWRfY2hpbGRyZW4pICYmXG4gICAgICAgICAgdGhpcy5teVRhcmdldEZvbGRlckFjY2VwdGVkQ2hpbGRyZW5zLmNvbnRleHRQYXJhbWV0ZXJzLmFjY2VwdGVkX2NoaWxkcmVuLmluZGV4T2YoZG9jdW1lbnQucHJvcGVydGllc1snZ2RvYzpkb2N1bWVudFR5cGVDb2RlJ10pID4gLTEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycyAmJlxuICAgICAgICAgIHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KHRoaXMubXlUYXJnZXRGb2xkZXJBY2NlcHRlZENoaWxkcmVucy5jb250ZXh0UGFyYW1ldGVycy5hY2NlcHRlZF9jaGlsZHJlbikgJiZcbiAgICAgICAgICB0aGlzLm15VGFyZ2V0Rm9sZGVyQWNjZXB0ZWRDaGlsZHJlbnMuY29udGV4dFBhcmFtZXRlcnM/LmFjY2VwdGVkX2NoaWxkcmVuLmluZGV4T2YoZG9jdW1lbnQucHJvcGVydGllc1snZG1zZm9sZGVyOmRvY3VtZW50VHlwZUNvZGUnXSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHByZXZlbnQgYWN0aW9uIHRvIHRoaXMgdGFyZ2V0IFxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gIH1cblxuICAvLyBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGlzIHBhdGggbm90IGJlbG9uZyB0byBncm91cCB0aGF0IGlzIHByZXZlbnRlZCBmcm9tIGNyZWF0aW5nIGZvbGRlciBvZiB0eXBlIG90aGVyc1xuICBjaGVja0lmSW5QcmV2ZW50ZWRHcm91cHMocGF0aCkge1xuICAgIC8vIGlmIGluIHByZXZlbnRlZCBmcm91cCBydHVybiB0cnVlIGVsc2UgcmV0dXJuIGZhbHNlXG4gICAgY29uc29sZS5sb2cocGF0aCk7XG4gICAgbGV0IG15RGVwYXJ0bWVudCA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRlcGFydG1lbnRGcm9tUGF0aChwYXRoKTtcbiAgICBsZXQgZXhpc3QgPSB0aGlzLnByZXZlbnRlZEdyb3Vwcy5pbmRleE9mKG15RGVwYXJ0bWVudCkgPiAtMSA/IHRydWUgOiBmYWxzZTtcbiAgICByZXR1cm4gZXhpc3Q7XG4gIH1cblxuICBjb3B5RnJvbUluc2lkZUNsaXBib2FyZCgpIHtcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIGxldCBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zTGVuZ3RoID0gMDtcbiAgICAvLyBzZXBlcmF0ZSBzZWxlY3RlZCBpdGVtcyBpbiBzZXBlcmF0ZSBhcnJheSBcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xuICAgICAgLy8gY2FuJ3QgY29weSBmaWxlIGluIHRoZSBzYW1lIHBsYWNlIGl0IGV4aXN0IGFuZCBjYW4ndCBjb3B5IGZvbGRlciBpbnNpZGUgaXQgc2VsZiBcbiAgICAgIGlmIChkb2MuaXNTZWxlY3RlZCAmJiBkb2MucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2MudWlkICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCkge1xuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNsaXBib2FyZFNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIC8vICAgIHRoaXMuY3VycmVudFBhdGggPSAnJztcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXG4gICAgICAgIC5jb3B5VG8oeyBpZDogdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQsIG5hbWU6IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLm5hbWUgfSwgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy50b1N0cmluZygpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBpdGVtcyBmcm9tIGNsaXBib2FyZCBhZnRlciBhY3Rpb24gaXMgZG9uZVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtc0FmdGVyQWN0aW9uRG9uZShjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vbkNsaXBib2FyZENsb3NlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRm9sZGVyVHJlZS5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcbiAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfQ09QSUVEJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXG4gICAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAgICdUT0FTVEVSLkVSUk9SJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfQ09QSUVEX0VSUk9SJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VzdG9tVG9hc3RyU2VydmljZS5zaG93KFxuICAgICAgICAnZXJyb3InLFxuICAgICAgICAnVE9BU1RFUi5FUlJPUicsXG4gICAgICAgICdUT0FTVEVSLkRPQ1VNRU5UX0NPUElFRF9ERVNUSU5BVElPTl9FUlJPUidcbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxuICBtb3ZlRnJvbUluc2lkZUNsaXBib2FyZCgpIHtcbiAgICBsZXQgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIGxldCBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zTGVuZ3RoID0gMDtcbiAgICAvLyBzZXBlcmF0ZSBzZWxlY3RlZCBpdGVtcyBpbiBzZXBlcmF0ZSBhcnJheSBcbiAgICB0aGlzLmNsaXBib2FyZERvY21lbnRzLm1hcCgoZG9jLCBpbmRleCkgPT4ge1xuICAgICAgLy8gY2FuJ3QgbW92ZSBmaWxlIGluIHRoZSBzYW1lIHBsYWNlIGl0IGV4aXN0IGFuZCBjYW4ndCBtb3ZlIGZvbGRlciBpbnNpZGUgaXQgc2VsZiBcbiAgICAgIGlmIChkb2MuaXNTZWxlY3RlZCAmJiBkb2MucGFyZW50UmVmICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCAmJiBkb2MudWlkICE9PSB0aGlzLmRpcmVjdG9yeS5kYXRhSXRlbS5pZCkge1xuICAgICAgICBjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zLnB1c2goZG9jLnVpZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNsaXBib2FyZFNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmlsZU1hbmFnZXJTZXJ2aWNlXG4gICAgICAgIC5tb3ZlVG8oeyBpZDogdGhpcy5kaXJlY3RvcnkuZGF0YUl0ZW0uaWQsIG5hbWU6IHRoaXMuZGlyZWN0b3J5LmRhdGFJdGVtLm5hbWUgfSwgY2xpcGJvYXJkU2VsZWN0ZWRJdGVtcy50b1N0cmluZygpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBpdGVtcyBmcm9tIGNsaXBib2FyZCBhZnRlciBhY3Rpb24gaXMgZG9uZVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtc0FmdGVyQWN0aW9uRG9uZShjbGlwYm9hcmRTZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5vbkNsaXBib2FyZENsb3NlLmVtaXQoKTtcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRm9sZGVyVHJlZS5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcbiAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAnVE9BU1RFUi5TVUNDRVNTJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRUQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvYXN0clNlcnZpY2Uuc2hvdyhcbiAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgJ1RPQVNURVIuRVJST1InLFxuICAgICAgICAgICAgICAnVE9BU1RFUi5ET0NVTUVOVF9NT1ZFRF9FUlJPUidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZVxuICAgICAgdGhpcy5jdXN0b21Ub2FzdHJTZXJ2aWNlLnNob3coXG4gICAgICAgICdlcnJvcicsXG4gICAgICAgICdUT0FTVEVSLkVSUk9SJyxcbiAgICAgICAgJ1RPQVNURVIuRE9DVU1FTlRfTU9WRURfREVTVElOQVRJT05fRVJST1InXG4gICAgICApO1xuICB9XG5cbiAgcmVtb3ZlSXRlbXNBZnRlckFjdGlvbkRvbmUoc2VsZWN0ZWRJdGVtcykge1xuICAgIHRoaXMuY2xpcGJvYXJkSXRlbXMgPSB0aGlzLmNsaXBib2FyZEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgIHJldHVybiAhc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhlbCk7XG4gICAgfSk7XG4gICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2Uuc2V0KCdjbGlwYm9hcmRJdGVtcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2xpcGJvYXJkSXRlbXMpKTtcbiAgfVxuXG4gIGNoZWNraW5nKCkge1xuICAgIHRoaXMuZW5hYmxlQ29weSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlTW92ZSA9IGZhbHNlO1xuICAgIHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkID0gW107XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jbGlwYm9hcmREb2NtZW50cyk7XG4gICAgdGhpcy5jbGlwYm9hcmREb2NtZW50cy5tYXAoZG9jdW1lbnQgPT4ge1xuICAgICAgLy8gd29rcmluZyB3aXRoIG9ubHkgc2VsZWN0ZWQgZG9jdW1lbnRzIFxuICAgICAgaWYgKGRvY3VtZW50LmlzU2VsZWN0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgLy8gZG9jdW1lbnRbJ2NhbkNvcHlUb1RhcmdldCddID0gKHRoaXMuY2FuUGVyZm9ybUFjdGlvbkluc2lkZVRhcmdldChkb2N1bWVudCkgJiYgZG9jdW1lbnQuY2FuQ29weSk7XG4gICAgICAgIC8vIGRvY3VtZW50WydjYW5Nb3ZlVG9UYXJnZXQnXSA9ICh0aGlzLmNhblBlcmZvcm1BY3Rpb25JbnNpZGVUYXJnZXQoZG9jdW1lbnQpICYmIGRvY3VtZW50LmNhbk1vdmUpXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZWxlY3RlZEluQ2xpcGJvYXJkLnB1c2goZG9jdW1lbnQpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5lbmFibGVDb3B5ID0gdGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQuZXZlcnkoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLmNhbkNvcHlUb1RhcmdldCA9PT0gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICB0aGlzLmVuYWJsZU1vdmUgPSB0aGlzLmRvY3VtZW50U2VsZWN0ZWRJbkNsaXBib2FyZC5ldmVyeShpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2FuTW92ZVRvVGFyZ2V0ID09PSB0cnVlO1xuICAgICAgfSlcbiAgICB9XG4gICAgY29uc29sZS5sb2codGhpcy5kb2N1bWVudFNlbGVjdGVkSW5DbGlwYm9hcmQpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjbGlwYm9hcmQtc2lkZS1zZWN0aW9uIHJlbGF0aXZlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC0zIGgtZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpcGJvYXJkLWhlYWRlciBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IHRleHQtZ3JheS01MDAgZm9udC1ib2xkIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC00eGwgYmkgYmktY2xpcGJvYXJkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMiB0ZXh0LXhsXCI+e3snY2xpcGJvYXJkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2UtaWNvbiB0ZXh0LWdyYXktNTAwIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlQ2xpcGJvYXJkKClcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidCVVRUT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImgtZnVsbCBmb250LWJvbGQgZC1mbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiY2xpcGJvYXJkTG9hZGluZ1wiPlxuICAgICAgICAgICAge3sgXCJsb2FkaW5nXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtcHggYmctZ3JheS0yMDAgbWItM1wiICpuZ0lmPVwiY2xpcGJvYXJkTG9hZGluZ1wiPlxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpcGJvYXJkLWNvbnRlbnQgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtYmV0d2VlblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB0ZXh0LWdyYXktNTAwXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNsaXBib2FyZERvY21lbnRzLmxlbmd0aCA9PT0gMFwiPnt7J25vX2NsaXBib2FyZF9pdGVtcycgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBoLTUvNiBvdmVyZmxvdy15LWF1dG9cIiAqbmdJZj1cImNsaXBib2FyZERvY21lbnRzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWItMlwiICpuZ0Zvcj1cImxldCBkb2N1bWVudCBvZiBjbGlwYm9hcmREb2NtZW50c1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMSB3LTgyIGZsZXggIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3LTUvNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJkb2N1bWVudC5pc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJjaGVja2luZygpXCI+IDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aXRsZS13aXRoLWljb24gY2xhc3M9XCJ3LTEvNiAtbXktMS41XCIgW2NvbnRleHRdPVwiZG9jdW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiPjwvdGl0bGUtd2l0aC1pY29uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWRpc3BsYXktc3VpdGFibGUtaWNvbiBjbGFzcz1cIm14LTFcIiBbZGF0YV09XCJkb2N1bWVudFwiIFtzaXplXT1cIic0MHB4J1wiPjwvYXBwLWRpc3BsYXktc3VpdGFibGUtaWNvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRvY3VtZW50LmlzRmlsZSA9PT0gJ0ZpbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianVzdGlmeS1jZW50ZXIgZmxleCBmbGV4LWNvbCBmbGV4LTEgZmxleC1ncm93LTAgdy01LzZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ncmF5LTUwMCBmb250LWJvbGQgdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJkb2N1bWVudC5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJkb2N1bWVudC5wcm9wZXJ0aWVzPy5bJ2ZpbGU6Y29udGVudCddPy5bJ25hbWUnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZG9jdW1lbnRbJ3RpdGxlJ119fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXNtIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soKGRvY3VtZW50LnByb3BlcnRpZXM/LlsnZmlsZTpjb250ZW50J10/LlsnbGVuZ3RoJ10pIC8gKDEwMjQgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQpKS50b0ZpeGVkKDIpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLWNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYmFzZSB0ZXh0LWdyYXktNTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1ib2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAqbmdJZj1cImRvY3VtZW50LmlzRmlsZSA9PT0gJ0ZvbGRlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRvY3VtZW50Py50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW21hdFRvb2x0aXBdPVwiJ0JVVFRPTlMuUkVNT1ZFX0NMSVBCT0FSRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdy01IGgtNSByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgYm9yZGVyLWdyYXktNTAwIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZWZyb21DbGlwYm9hcmQoZG9jdW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNTAwIGJpIGJpLXggdGV4dC1sZyBmbGV4IGl0ZW1zLWNlbnRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIHRleHQtZ3JheS01MDAgdGV4dC1jZW50ZXIgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb2N1bWVudC5jYW5Db3B5VG9UYXJnZXQgJiYgIWRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9jb3B5X29ubHknIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWRvY3VtZW50LmNhbkNvcHlUb1RhcmdldCAmJiBkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fbW92ZV9vbmx5JyB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvY3VtZW50LmNhbkNvcHlUb1RhcmdldCAmJiBkb2N1bWVudC5jYW5Nb3ZlVG9UYXJnZXRcIj57eydjYW5fY29weV9hbmRfbW92ZScgfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkb2N1bWVudC5jYW5Db3B5VG9UYXJnZXQgJiYgIWRvY3VtZW50LmNhbk1vdmVUb1RhcmdldFwiPnt7J2Nhbl9ub3RfY29weV9hbmRfbW92ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xLzYgZmxleCB3LWZ1bGwganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uIG14LTJcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZUNvcHlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weUZyb21JbnNpZGVDbGlwYm9hcmQoKVwiPnt7J0JVVFRPTlMuQ09QWScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiBteC0yXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVNb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVGcm9tSW5zaWRlQ2xpcGJvYXJkKClcIj57eydCVVRUT05TLk1PVkUnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJiZy10cmFuc3BhcmVudCBhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCBsZWZ0LTAgcmlnaHQtMCBcIiAqbmdJZj1cImNsaXBib2FyZExvYWRpbmdcIj5cblxuICAgIDwvZGl2PlxuPC9kaXY+Il19