keevo-components 1.5.155 → 1.5.156

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.
@@ -50,10 +50,11 @@ export class FormService {
50
50
  static openDialog(dialogService, componentType, callBackFunction, paramsDialog) {
51
51
  const ref = dialogService.open(componentType, {
52
52
  closable: paramsDialog?.closable || false,
53
- maximizable: paramsDialog?.maximizable || true,
53
+ maximizable: paramsDialog?.maximizable || false,
54
54
  height: paramsDialog?.height || 'auto',
55
55
  width: paramsDialog?.width,
56
56
  styleClass: paramsDialog?.styleClass,
57
+ showHeader: true,
57
58
  data: { id: paramsDialog?.id, popup: paramsDialog?.popup || true }
58
59
  });
59
60
  ref.onClose.subscribe((data) => {
@@ -61,25 +62,6 @@ export class FormService {
61
62
  callBackFunction(data);
62
63
  });
63
64
  }
64
- // static openDialog(
65
- // dialogService: DialogService,
66
- // componentType: Type<any>,
67
- // callBackFunction: Function,
68
- // id?: any,
69
- // width?: string,
70
- // height?: string
71
- // ) {
72
- // const ref = dialogService.open(componentType, {
73
- // width: width,
74
- // height: height,
75
- // closable: false,
76
- // maximizable: true,
77
- // data: { id: id, popup: true }
78
- // });
79
- // ref.onClose.subscribe((data: any) => {
80
- // if (data) callBackFunction(data);
81
- // });
82
- // }
83
65
  static setControlValue(formGroup, controName, value) {
84
66
  formGroup?.controls[controName]?.setValue(value);
85
67
  }
@@ -99,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
99
81
  providedIn: 'root'
100
82
  }]
101
83
  }] });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBZ0JqRCxNQUFNLE9BQU8sV0FBVztJQUV0QixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQW9CLEVBQUUsVUFBa0I7UUFDNUQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQW9CLEVBQUUsVUFBa0IsRUFBRSxLQUFXO1FBQ2pGLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBb0IsRUFBRSxVQUFrQjtRQUMzRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFJLFNBQW9CLEVBQUUsVUFBa0I7UUFDN0QsT0FBVSxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxTQUFrQjtRQUM5RSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFD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UUFBUTtJQUNSLElBQUk7SUFFSixNQUFNLENBQUMsZUFBZSxDQUFDLFNBQW9CLEVBQUUsVUFBa0IsRUFBRSxLQUFVO1FBQ3pFLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQW9CLEVBQUUsVUFBa0IsRUFBRSxVQUE4QztRQUMzRyxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBb0IsRUFBRSxVQUFrQjtRQUM3RCxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDNUQsQ0FBQzs7d0dBekdVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9iamVjdFNlcnZpY2UgfSBmcm9tICcuL29iamVjdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHBhcmFtc0RpYWxvZyB7XHJcbiAgaWQ/OiBhbnk7XHJcbiAgY2xvc2FibGU/OiBib29sZWFuO1xyXG4gIG1heGltaXphYmxlPzogYm9vbGVhbjtcclxuICBwb3B1cD86IGJvb2xlYW47XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIHN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcclxuXHJcbiAgc3RhdGljIGRpc2FibGVDb250cm9sKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb250cm9OYW1lOiBzdHJpbmcpIHtcclxuICAgIGZvcm1Hcm91cD8uY29udHJvbHNbY29udHJvTmFtZV0/LmRpc2FibGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkaXNhYmxlQW5kQ2xlYXJDb250cm9sKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb250cm9OYW1lOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XHJcbiAgICB0aGlzLmRpc2FibGVDb250cm9sKGZvcm1Hcm91cCwgY29udHJvTmFtZSk7XHJcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShmb3JtR3JvdXAsIGNvbnRyb05hbWUsIG51bGwgfHwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGVuYWJsZUNvbnRyb2woZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZykge1xyXG4gICAgZm9ybUdyb3VwPy5jb250cm9sc1tjb250cm9OYW1lXT8uZW5hYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0Rm9ybVZhbHVlPFQ+KGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb250cm9OYW1lOiBzdHJpbmcpOiBUIHtcclxuICAgIHJldHVybiA8VD5mb3JtR3JvdXA/LmNvbnRyb2xzW2NvbnRyb05hbWVdPy52YWx1ZTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBoYXNDb250cm9sRXJyb3IoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb2w6IHN0cmluZywgZXJyb3JDb2RlPzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IGZvcm1Hcm91cC5nZXQoY29udHJvbCk7XHJcbiAgICBsZXQgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIWZvcm1Db250cm9sKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoZXJyb3JDb2RlKSBoYXNFcnJvciA9IGZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yQ29kZSk7XHJcbiAgICBlbHNlIGhhc0Vycm9yID0gZm9ybUNvbnRyb2wuZXJyb3JzID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBoYXNFcnJvciAmJiBmb3JtQ29udHJvbC50b3VjaGVkO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGludmFsaWRGb3JtKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBub3RpZmljYXRpb24/OiBhbnkpIHtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XHJcblxyXG4gICAga2V5cy5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2tdO1xyXG5cclxuICAgICAgaWYgKG5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgIGlmIChub3RpZmljYXRpb24/Lml0ZW0yKSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtID0gT2JqZWN0U2VydmljZS5maW5kT2JqZWN0KG5vdGlmaWNhdGlvbi5pdGVtMiwgJ3Byb3BlcnR5Jywgayk7XHJcbiAgICAgICAgICBpZiAoaXRlbSkgY29udHJvbC5zZXRFcnJvcnMoeyBiYWNrZW5kRXJyb3I6IHRydWUsIGVycm9NZXNzYWdlOiBpdGVtLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IE9iamVjdFNlcnZpY2UuZmluZE9iamVjdChub3RpZmljYXRpb24sICdrZXknLCBrKTtcclxuICAgICAgICAgIGlmIChpdGVtKSBjb250cm9sLnNldEVycm9ycyh7IGJhY2tlbmRFcnJvcjogdHJ1ZSwgZXJyb01lc3NhZ2U6IGl0ZW0ubWVzc2FnZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghY29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBvcGVuRGlhbG9nKFxyXG4gICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PixcclxuICAgIGNhbGxCYWNrRnVuY3Rpb246IEZ1bmN0aW9uLFxyXG4gICAgcGFyYW1zRGlhbG9nPzogcGFyYW1zRGlhbG9nXHJcbiAgKSB7XHJcbiAgICBjb25zdCByZWYgPSBkaWFsb2dTZXJ2aWNlLm9wZW4oY29tcG9uZW50VHlwZSwge1xyXG4gICAgICBjbG9zYWJsZTogcGFyYW1zRGlhbG9nPy5jbG9zYWJsZSB8fCBmYWxzZSxcclxuICAgICAgbWF4aW1pemFibGU6IHBhcmFtc0RpYWxvZz8ubWF4aW1pemFibGUgfHwgdHJ1ZSxcclxuICAgICAgaGVpZ2h0OiBwYXJhbXNEaWFsb2c/LmhlaWdodCB8fCAnYXV0bycsXHJcbiAgICAgIHdpZHRoOiBwYXJhbXNEaWFsb2c/LndpZHRoLFxyXG4gICAgICBzdHlsZUNsYXNzOiBwYXJhbXNEaWFsb2c/LnN0eWxlQ2xhc3MsXHJcbiAgICAgIGRhdGE6IHsgaWQ6IHBhcmFtc0RpYWxvZz8uaWQsIHBvcHVwOiBwYXJhbXNEaWFsb2c/LnBvcHVwIHx8IHRydWUgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIGNhbGxCYWNrRnVuY3Rpb24oZGF0YSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHN0YXRpYyBvcGVuRGlhbG9nKFxyXG4gIC8vICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAvLyAgIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PixcclxuICAvLyAgIGNhbGxCYWNrRnVuY3Rpb246IEZ1bmN0aW9uLFxyXG4gIC8vICAgaWQ/OiBhbnksXHJcbiAgLy8gICB3aWR0aD86IHN0cmluZyxcclxuICAvLyAgIGhlaWdodD86IHN0cmluZ1xyXG4gIC8vICkge1xyXG4gIC8vICAgY29uc3QgcmVmID0gZGlhbG9nU2VydmljZS5vcGVuKGNvbXBvbmVudFR5cGUsIHtcclxuICAvLyAgICAgd2lkdGg6IHdpZHRoLFxyXG4gIC8vICAgICBoZWlnaHQ6IGhlaWdodCxcclxuICAvLyAgICAgY2xvc2FibGU6IGZhbHNlLFxyXG4gIC8vICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAvLyAgICAgZGF0YTogeyBpZDogaWQsIHBvcHVwOiB0cnVlIH1cclxuICAvLyAgIH0pO1xyXG5cclxuICAvLyAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgLy8gICAgIGlmIChkYXRhKSBjYWxsQmFja0Z1bmN0aW9uKGRhdGEpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBzdGF0aWMgc2V0Q29udHJvbFZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb250cm9OYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIGZvcm1Hcm91cD8uY29udHJvbHNbY29udHJvTmFtZV0/LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBzZXRWYWxpZGF0b3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb250cm9OYW1lOiBzdHJpbmcsIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwpIHtcclxuICAgIGZvcm1Hcm91cD8uY29udHJvbHNbY29udHJvTmFtZV0/LnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICBmb3JtR3JvdXA/LmNvbnRyb2xzW2NvbnRyb05hbWVdPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2xlYXJWYWxpZGF0b3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb250cm9OYW1lOiBzdHJpbmcpIHtcclxuICAgIGZvcm1Hcm91cD8uY29udHJvbHNbY29udHJvTmFtZV0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcbn1cclxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBZ0JqRCxNQUFNLE9BQU8sV0FBVztJQUV0QixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQW9CLEVBQUUsVUFBa0I7UUFDNUQsU0FBUyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQW9CLEVBQUUsVUFBa0IsRUFBRSxLQUFXO1FBQ2pGLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBb0IsRUFBRSxVQUFrQjtRQUMzRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFJLFNBQW9CLEVBQUUsVUFBa0I7UUFDN0QsT0FBVSxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxTQUFrQjtRQUM5RSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFD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RSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFvQixFQUFFLFVBQWtCO1FBQzdELFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztJQUM1RCxDQUFDOzt3R0FyRlUsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JqZWN0U2VydmljZSB9IGZyb20gJy4vb2JqZWN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgcGFyYW1zRGlhbG9nIHtcclxuICBpZD86IGFueTtcclxuICBjbG9zYWJsZT86IGJvb2xlYW47XHJcbiAgbWF4aW1pemFibGU/OiBib29sZWFuO1xyXG4gIHBvcHVwPzogYm9vbGVhbjtcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgc3R5bGVDbGFzcz86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xyXG5cclxuICBzdGF0aWMgZGlzYWJsZUNvbnRyb2woZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZykge1xyXG4gICAgZm9ybUdyb3VwPy5jb250cm9sc1tjb250cm9OYW1lXT8uZGlzYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpc2FibGVBbmRDbGVhckNvbnRyb2woZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcclxuICAgIHRoaXMuZGlzYWJsZUNvbnRyb2woZm9ybUdyb3VwLCBjb250cm9OYW1lKTtcclxuICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGZvcm1Hcm91cCwgY29udHJvTmFtZSwgbnVsbCB8fCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZW5hYmxlQ29udHJvbChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29udHJvTmFtZTogc3RyaW5nKSB7XHJcbiAgICBmb3JtR3JvdXA/LmNvbnRyb2xzW2NvbnRyb05hbWVdPy5lbmFibGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtVmFsdWU8VD4oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZyk6IFQge1xyXG4gICAgcmV0dXJuIDxUPmZvcm1Hcm91cD8uY29udHJvbHNbY29udHJvTmFtZV0/LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGhhc0NvbnRyb2xFcnJvcihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY29udHJvbDogc3RyaW5nLCBlcnJvckNvZGU/OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChjb250cm9sKTtcclxuICAgIGxldCBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHJldHVybiBmYWxzZTtcclxuICAgIGlmIChlcnJvckNvZGUpIGhhc0Vycm9yID0gZm9ybUNvbnRyb2wuaGFzRXJyb3IoZXJyb3JDb2RlKTtcclxuICAgIGVsc2UgaGFzRXJyb3IgPSBmb3JtQ29udHJvbC5lcnJvcnMgPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIGhhc0Vycm9yICYmIGZvcm1Db250cm9sLnRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaW52YWxpZEZvcm0oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIG5vdGlmaWNhdGlvbj86IGFueSkge1xyXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcclxuXHJcbiAgICBrZXlzLmZvckVhY2goayA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNba107XHJcblxyXG4gICAgICBpZiAobm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgaWYgKG5vdGlmaWNhdGlvbj8uaXRlbTIpIHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBPYmplY3RTZXJ2aWNlLmZpbmRPYmplY3Qobm90aWZpY2F0aW9uLml0ZW0yLCAncHJvcGVydHknLCBrKTtcclxuICAgICAgICAgIGlmIChpdGVtKSBjb250cm9sLnNldEVycm9ycyh7IGJhY2tlbmRFcnJvcjogdHJ1ZSwgZXJyb01lc3NhZ2U6IGl0ZW0ubWVzc2FnZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtID0gT2JqZWN0U2VydmljZS5maW5kT2JqZWN0KG5vdGlmaWNhdGlvbiwgJ2tleScsIGspO1xyXG4gICAgICAgICAgaWYgKGl0ZW0pIGNvbnRyb2wuc2V0RXJyb3JzKHsgYmFja2VuZEVycm9yOiB0cnVlLCBlcnJvTWVzc2FnZTogaXRlbS5tZXNzYWdlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFjb250cm9sLnZhbGlkKSB7XHJcbiAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIG9wZW5EaWFsb2coXHJcbiAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgY29tcG9uZW50VHlwZTogVHlwZTxhbnk+LFxyXG4gICAgY2FsbEJhY2tGdW5jdGlvbjogRnVuY3Rpb24sXHJcbiAgICBwYXJhbXNEaWFsb2c/OiBwYXJhbXNEaWFsb2dcclxuICApIHtcclxuICAgIGNvbnN0IHJlZiA9IGRpYWxvZ1NlcnZpY2Uub3Blbihjb21wb25lbnRUeXBlLCB7XHJcbiAgICAgIGNsb3NhYmxlOiBwYXJhbXNEaWFsb2c/LmNsb3NhYmxlIHx8IGZhbHNlLFxyXG4gICAgICBtYXhpbWl6YWJsZTogcGFyYW1zRGlhbG9nPy5tYXhpbWl6YWJsZSB8fCBmYWxzZSxcclxuICAgICAgaGVpZ2h0OiBwYXJhbXNEaWFsb2c/LmhlaWdodCB8fCAnYXV0bycsXHJcbiAgICAgIHdpZHRoOiBwYXJhbXNEaWFsb2c/LndpZHRoLFxyXG4gICAgICBzdHlsZUNsYXNzOiBwYXJhbXNEaWFsb2c/LnN0eWxlQ2xhc3MsXHJcbiAgICAgIHNob3dIZWFkZXI6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgaWQ6IHBhcmFtc0RpYWxvZz8uaWQsIHBvcHVwOiBwYXJhbXNEaWFsb2c/LnBvcHVwIHx8IHRydWUgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIGNhbGxCYWNrRnVuY3Rpb24oZGF0YSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBzZXRDb250cm9sVmFsdWUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgZm9ybUdyb3VwPy5jb250cm9sc1tjb250cm9OYW1lXT8uc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNldFZhbGlkYXRvcnMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZywgdmFsaWRhdG9yczogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgbnVsbCkge1xyXG4gICAgZm9ybUdyb3VwPy5jb250cm9sc1tjb250cm9OYW1lXT8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgIGZvcm1Hcm91cD8uY29udHJvbHNbY29udHJvTmFtZV0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjbGVhclZhbGlkYXRvcnMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbnRyb05hbWU6IHN0cmluZykge1xyXG4gICAgZm9ybUdyb3VwPy5jb250cm9sc1tjb250cm9OYW1lXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -6,17 +6,19 @@ import * as i2 from "@angular/common";
6
6
  import * as i3 from "primeng/api";
7
7
  import * as i4 from "primeng/button";
8
8
  import * as i5 from "primeng/card";
9
- import * as i6 from "primeng/tooltip";
10
- import * as i7 from "primeng/dialog";
11
- import * as i8 from "primeng/divider";
12
- import * as i9 from "primeng/dropdown";
13
- import * as i10 from "primeng/overlaypanel";
14
- import * as i11 from "primeng/ripple";
15
- import * as i12 from "primeng/sidebar";
16
- import * as i13 from "primeng/styleclass";
17
- import * as i14 from "primeng/breadcrumb";
18
- import * as i15 from "@angular/forms";
19
- import * as i16 from "../buttons/button-success/button-success.component";
9
+ import * as i6 from "primeng/confirmdialog";
10
+ import * as i7 from "primeng/tooltip";
11
+ import * as i8 from "primeng/dialog";
12
+ import * as i9 from "primeng/divider";
13
+ import * as i10 from "primeng/dropdown";
14
+ import * as i11 from "primeng/overlaypanel";
15
+ import * as i12 from "primeng/ripple";
16
+ import * as i13 from "primeng/sidebar";
17
+ import * as i14 from "primeng/toast";
18
+ import * as i15 from "primeng/styleclass";
19
+ import * as i16 from "primeng/breadcrumb";
20
+ import * as i17 from "@angular/forms";
21
+ import * as i18 from "../buttons/button-success/button-success.component";
20
22
  export class MenuComponent {
21
23
  onWindowResize() {
22
24
  this.heigthCard = Number(document.getElementById('page-content')?.offsetHeight);
@@ -87,14 +89,16 @@ export class MenuComponent {
87
89
  // return breadcrumbs;
88
90
  // }
89
91
  getBreadcrumbs(url = '', breadcrumbs = []) {
90
- if (!url) {
91
- return breadcrumbs;
92
+ if (!url || url === '/') {
93
+ return breadcrumbs.length > 0 ? breadcrumbs : [{ label: 'Home', routerLink: '/' }];
92
94
  }
93
95
  const segments = url.split('/').filter(segment => segment !== '');
94
96
  let currentUrl = '';
95
97
  for (const segment of segments) {
96
98
  currentUrl += `/${segment}`;
97
99
  breadcrumbs.push({ label: segment, routerLink: currentUrl });
100
+ }
101
+ if (breadcrumbs.length > 0) {
98
102
  breadcrumbs.forEach(item => {
99
103
  let labelSegments = item.label.split('-');
100
104
  labelSegments = labelSegments.map((segment, index) => {
@@ -202,10 +206,10 @@ export class MenuComponent {
202
206
  }
203
207
  }
204
208
  MenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
205
- MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: MenuComponent, selector: "kv-menu", inputs: { menuCompleto: "menuCompleto", licencas: "licencas", licencaSelecionada: "licencaSelecionada", logoImage: "logoImage", nomeUsuario: "nomeUsuario", breadCrumbs: "breadCrumbs" }, outputs: { licencaChange: "licencaChange", gerenciarKeePassEvent: "gerenciarKeePassEvent", sairEvent: "sairEvent", expandMenuEmit: "expandMenuEmit" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "sidebarRef", first: true, predicate: ["sidebarRef"], descendants: true }, { propertyName: "sistemasPanel", first: true, predicate: ["sistemasPanel"], descendants: true }, { propertyName: "meusDadosPanel", first: true, predicate: ["meusDadosPanel"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\r\n\r\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\r\n\r\n <p-sidebar\r\n #sidebarRef\r\n [visible]=\"true\"\r\n [showCloseIcon]=\"false\"\r\n [modal]=\"false\"\r\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\r\n >\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\r\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\r\n >\r\n <img\r\n *ngIf=\"expandMenu\"\r\n alt=\"Card\"\r\n [src]=\"logoImage\"\r\n width=\"150\"\r\n />\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"toggleMenu()\"\r\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n menu\r\n </i>\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\r\n >\r\n <div\r\n class=\"flex flex-column cursor-pointer\"\r\n *ngIf=\"expandMenu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n >\r\n <span\r\n class=\"text-sm font-semibold mr-2\"\r\n [pTooltip]=\"this.licencaSelecionada.razaosocial\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n {{MascaraNomeLicenca(this.licencaSelecionada.razaosocial)}}\r\n </span>\r\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cnpj)}}</span>\r\n </div>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n [pTooltip]=\"'Alterar Licen\u00E7a'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n sync_alt\r\n </i>\r\n </button>\r\n\r\n </div>\r\n <p-divider type=\"solid\"></p-divider>\r\n </div>\r\n\r\n <div\r\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\r\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\r\n style=\"overflow-y: auto;\"\r\n >\r\n <!-- menus -->\r\n <li *ngFor=\"let menu of menus\">\r\n <!-- menu que n\u00E3o tem filho -->\r\n <a\r\n (click)=\"callRoute(menu.link)\"\r\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\r\n pRipple\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n [tooltipPosition]=\"'right'\"\r\n class=\"{{verificarPaginaSelecionada(menu.link)}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n >\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </a>\r\n <!-- menu com filho -->\r\n <div *ngIf=\"menu.menupai\">\r\n <a\r\n pRipple\r\n pStyleClass=\"@next\"\r\n enterClass=\"hidden\"\r\n enterActiveClass=\"slidedown\"\r\n leaveToClass=\"hidden\"\r\n leaveActiveClass=\"slideup\"\r\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [tooltipPosition]=\"'right'\"\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\r\n >\r\n <div class=\"flex flex-row align-items-center\">\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </div>\r\n <i\r\n class=\"pi pi-chevron-down text-blue-900 mr-1\"\r\n *ngIf=\"expandMenu\"\r\n ></i>\r\n </a>\r\n\r\n <!-- filhos -->\r\n <div\r\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\r\n >\r\n <li *ngFor=\"\r\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu)\r\n \">\r\n <a\r\n *ngIf=\"expandMenu\"\r\n (click)=\"callRoute(filho.link)\"\r\n pRipple\r\n class=\"{{verificarPaginaSelecionada(filho.link)}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\r\n >\r\n <i\r\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\r\n *ngIf=\"filho.icone && filho.icone !== ''\"\r\n ></i>\r\n <span\r\n class=\"text-base text-blue-900 ml-4\"\r\n *ngIf=\"expandMenu\"\r\n >{{ filho.descricaomenu }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n</ng-template>\r\n</p-sidebar>\r\n\r\n\r\n<div\r\n class=\"w-auto h-screen page-content overflow-y-hidden\"\r\n id=\"page-content\"\r\n>\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\r\n <div *ngIf=\"breadCrumbs\">\r\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{ retornarTituloBreadCrumbs(breadCrumbItems[breadCrumbItems.length -\r\n 1].label)}}</p>\r\n <p-breadcrumb\r\n *ngIf=\"widthCard > 400\"\r\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\r\n [model]=\"breadCrumbItems\"\r\n [style]=\"{backgroundColor: '#d4d3d3'}\"\r\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\r\n ></p-breadcrumb>\r\n </div>\r\n\r\n <div *ngIf=\"!breadCrumbs\"></div>\r\n\r\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"sistemasPanel.toggle($event)\"\r\n [pTooltip]=\"'Sistemas'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n apps\r\n </i>\r\n </button>\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"meusDadosPanel.toggle($event)\"\r\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n person\r\n </i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n <p-card\r\n class=\"card-container\"\r\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\r\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\r\n >\r\n <div class=\"card-container w-full\">\r\n <ng-content></ng-content>\r\n </div>\r\n </p-card>\r\n\r\n</div>\r\n\r\n\r\n</div>\r\n\r\n<p-overlayPanel\r\n #sistemasPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Sistemas</p>\r\n <div\r\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\r\n style=\"width: 250px; height: 100%;\"\r\n >\r\n <button\r\n *ngFor=\"let menu of menuCompleto\"\r\n pButton\r\n pRipple\r\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\r\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\r\n [pTooltip]=\"menu.sistema.descricaosistema\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <!-- <img\r\n alt=\"logo\"\r\n style=\"width: 2rem; height: 2rem;\"\r\n /> -->\r\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\r\n\r\n </button>\r\n\r\n\r\n <!-- <p-button styleClass=\"p-button-outlined\">\r\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\r\n <span class=\"ml-2 font-bold\">PrimeNG</span>\r\n </p-button> -->\r\n\r\n </div>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<p-overlayPanel\r\n #meusDadosPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\r\n <div class=\"mt-5 mb-3\">\r\n\r\n </div>\r\n\r\n <p-button\r\n icon=\"pi pi-lock\"\r\n label=\"Ger\u00EAnciar KeevoPass\"\r\n (onClick)=\"gerenciarKeePass($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n [disabled]=\"true\"\r\n ></p-button>\r\n <p-button\r\n icon=\"pi pi-sign-out\"\r\n label=\"Sair\"\r\n (onClick)=\"sair($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n ></p-button>\r\n </ng-template>\r\n\r\n</p-overlayPanel>\r\n\r\n<p-dialog\r\n [(visible)]=\"visibleDialogLicenca\"\r\n [modal]=\"true\"\r\n [draggable]=\"false\"\r\n header=\"Trocar Licen\u00E7a\"\r\n [style]=\"{width: '50vh' }\"\r\n>\r\n <div class=\"flex flex-column align-items-end\">\r\n\r\n <div class=\"w-full\">\r\n <p-dropdown\r\n styleClass=\"w-full\"\r\n [options]=\"licencasOptions\"\r\n [(ngModel)]=\"licencaSelected\"\r\n optionLabel=\"descricao\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <kv-button-success\r\n [label]=\"'Salvar'\"\r\n class=\"mt-2\"\r\n (onClick)=\"setLicenca()\"\r\n ></kv-button-success>\r\n\r\n </div>\r\n\r\n</p-dialog>", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px}.page-content{background:linear-gradient(to bottom,#d4d3d3 20%,#ffffff 30%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{font-weight:700}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i5.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i8.Divider, selector: "p-divider", inputs: ["styleClass", "style", "layout", "type", "align"] }, { kind: "component", type: i9.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i10.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i11.Ripple, selector: "[pRipple]" }, { kind: "component", type: i12.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i13.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }, { kind: "component", type: i14.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i15.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i16.ButtonSuccessComponent, selector: "kv-button-success" }] });
209
+ MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: MenuComponent, selector: "kv-menu", inputs: { menuCompleto: "menuCompleto", licencas: "licencas", licencaSelecionada: "licencaSelecionada", logoImage: "logoImage", nomeUsuario: "nomeUsuario", breadCrumbs: "breadCrumbs" }, outputs: { licencaChange: "licencaChange", gerenciarKeePassEvent: "gerenciarKeePassEvent", sairEvent: "sairEvent", expandMenuEmit: "expandMenuEmit" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, viewQueries: [{ propertyName: "sidebarRef", first: true, predicate: ["sidebarRef"], descendants: true }, { propertyName: "sistemasPanel", first: true, predicate: ["sistemasPanel"], descendants: true }, { propertyName: "meusDadosPanel", first: true, predicate: ["meusDadosPanel"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\r\n\r\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\r\n\r\n <p-sidebar\r\n #sidebarRef\r\n [visible]=\"true\"\r\n [showCloseIcon]=\"false\"\r\n [modal]=\"false\"\r\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\r\n >\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\r\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\r\n >\r\n <img\r\n *ngIf=\"expandMenu\"\r\n alt=\"Card\"\r\n [src]=\"logoImage\"\r\n width=\"150\"\r\n />\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"toggleMenu()\"\r\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n menu\r\n </i>\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\r\n >\r\n <div\r\n class=\"flex flex-column cursor-pointer\"\r\n *ngIf=\"expandMenu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n >\r\n <span\r\n class=\"text-sm font-semibold mr-2\"\r\n [pTooltip]=\"this.licencaSelecionada.razaosocial\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n {{MascaraNomeLicenca(this.licencaSelecionada.razaosocial)}}\r\n </span>\r\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cnpj)}}</span>\r\n </div>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n [pTooltip]=\"'Alterar Licen\u00E7a'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n sync_alt\r\n </i>\r\n </button>\r\n\r\n </div>\r\n <p-divider type=\"solid\"></p-divider>\r\n </div>\r\n\r\n <div\r\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\r\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\r\n style=\"overflow-y: auto;\"\r\n >\r\n <!-- menus -->\r\n <li *ngFor=\"let menu of menus\">\r\n <!-- menu que n\u00E3o tem filho -->\r\n <a\r\n (click)=\"callRoute(menu.link)\"\r\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\r\n pRipple\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n [tooltipPosition]=\"'right'\"\r\n class=\"{{verificarPaginaSelecionada(menu.link)}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n >\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </a>\r\n <!-- menu com filho -->\r\n <div *ngIf=\"menu.menupai\">\r\n <a\r\n pRipple\r\n pStyleClass=\"@next\"\r\n enterClass=\"hidden\"\r\n enterActiveClass=\"slidedown\"\r\n leaveToClass=\"hidden\"\r\n leaveActiveClass=\"slideup\"\r\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [tooltipPosition]=\"'right'\"\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\r\n >\r\n <div class=\"flex flex-row align-items-center\">\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </div>\r\n <i\r\n class=\"pi pi-chevron-down text-blue-900 mr-1\"\r\n *ngIf=\"expandMenu\"\r\n ></i>\r\n </a>\r\n\r\n <!-- filhos -->\r\n <div\r\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\r\n >\r\n <li *ngFor=\"\r\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu)\r\n \">\r\n <a\r\n *ngIf=\"expandMenu\"\r\n (click)=\"callRoute(filho.link)\"\r\n pRipple\r\n class=\"{{verificarPaginaSelecionada(filho.link)}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\r\n >\r\n <i\r\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\r\n *ngIf=\"filho.icone && filho.icone !== ''\"\r\n ></i>\r\n <span\r\n class=\"text-base text-blue-900 ml-4\"\r\n *ngIf=\"expandMenu\"\r\n >{{ filho.descricaomenu }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n</ng-template>\r\n</p-sidebar>\r\n\r\n\r\n<div\r\n class=\"w-auto h-screen page-content overflow-y-hidden\"\r\n id=\"page-content\"\r\n>\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\r\n <div *ngIf=\"breadCrumbs\">\r\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{ retornarTituloBreadCrumbs(breadCrumbItems[breadCrumbItems.length -\r\n 1].label)}}</p>\r\n <p-breadcrumb\r\n *ngIf=\"widthCard > 400\"\r\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\r\n [model]=\"breadCrumbItems\"\r\n [style]=\"{backgroundColor: '#d4d3d3'}\"\r\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\r\n ></p-breadcrumb>\r\n </div>\r\n\r\n <div *ngIf=\"!breadCrumbs\"></div>\r\n\r\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"sistemasPanel.toggle($event)\"\r\n [pTooltip]=\"'Sistemas'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n apps\r\n </i>\r\n </button>\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"meusDadosPanel.toggle($event)\"\r\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n person\r\n </i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n <p-card\r\n class=\"card-container\"\r\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\r\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\r\n >\r\n <div class=\"card-container w-full\">\r\n <ng-content></ng-content>\r\n </div>\r\n </p-card>\r\n\r\n</div>\r\n\r\n\r\n</div>\r\n\r\n<p-overlayPanel\r\n #sistemasPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Sistemas</p>\r\n <div\r\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\r\n style=\"width: 250px; height: 100%;\"\r\n >\r\n <button\r\n *ngFor=\"let menu of menuCompleto\"\r\n pButton\r\n pRipple\r\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\r\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\r\n [pTooltip]=\"menu.sistema.descricaosistema\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <!-- <img\r\n alt=\"logo\"\r\n style=\"width: 2rem; height: 2rem;\"\r\n /> -->\r\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\r\n\r\n </button>\r\n\r\n\r\n <!-- <p-button styleClass=\"p-button-outlined\">\r\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\r\n <span class=\"ml-2 font-bold\">PrimeNG</span>\r\n </p-button> -->\r\n\r\n </div>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<p-overlayPanel\r\n #meusDadosPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\r\n <div class=\"mt-5 mb-3\">\r\n\r\n </div>\r\n\r\n <p-button\r\n icon=\"pi pi-lock\"\r\n label=\"Ger\u00EAnciar KeevoPass\"\r\n (onClick)=\"gerenciarKeePass($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n [disabled]=\"true\"\r\n ></p-button>\r\n <p-button\r\n icon=\"pi pi-sign-out\"\r\n label=\"Sair\"\r\n (onClick)=\"sair($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n ></p-button>\r\n </ng-template>\r\n\r\n</p-overlayPanel>\r\n\r\n<p-dialog\r\n [(visible)]=\"visibleDialogLicenca\"\r\n [modal]=\"true\"\r\n [draggable]=\"false\"\r\n header=\"Trocar Licen\u00E7a\"\r\n [style]=\"{width: '50vh' }\"\r\n>\r\n <div class=\"flex flex-column align-items-end\">\r\n\r\n <div class=\"w-full\">\r\n <p-dropdown\r\n styleClass=\"w-full\"\r\n [options]=\"licencasOptions\"\r\n [(ngModel)]=\"licencaSelected\"\r\n optionLabel=\"descricao\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <kv-button-success\r\n [label]=\"'Salvar'\"\r\n class=\"mt-2\"\r\n (onClick)=\"setLicenca()\"\r\n ></kv-button-success>\r\n\r\n </div>\r\n\r\n</p-dialog>\r\n\r\n<p-confirmDialog\r\n [style]=\"{width: '40vw'}\"\r\n [baseZIndex]=\"10000\"\r\n rejectButtonStyleClass=\"p-button-text\">\r\n</p-confirmDialog>\r\n\r\n<p-toast></p-toast>", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px}.page-content{background:linear-gradient(to bottom,#d4d3d3 20%,#ffffff 30%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{font-weight:700}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i5.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: i6.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i8.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i9.Divider, selector: "p-divider", inputs: ["styleClass", "style", "layout", "type", "align"] }, { kind: "component", type: i10.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i11.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i12.Ripple, selector: "[pRipple]" }, { kind: "component", type: i13.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i14.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i15.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }, { kind: "component", type: i16.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i18.ButtonSuccessComponent, selector: "kv-button-success" }] });
206
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MenuComponent, decorators: [{
207
211
  type: Component,
208
- args: [{ selector: 'kv-menu', template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\r\n\r\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\r\n\r\n <p-sidebar\r\n #sidebarRef\r\n [visible]=\"true\"\r\n [showCloseIcon]=\"false\"\r\n [modal]=\"false\"\r\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\r\n >\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\r\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\r\n >\r\n <img\r\n *ngIf=\"expandMenu\"\r\n alt=\"Card\"\r\n [src]=\"logoImage\"\r\n width=\"150\"\r\n />\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"toggleMenu()\"\r\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n menu\r\n </i>\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\r\n >\r\n <div\r\n class=\"flex flex-column cursor-pointer\"\r\n *ngIf=\"expandMenu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n >\r\n <span\r\n class=\"text-sm font-semibold mr-2\"\r\n [pTooltip]=\"this.licencaSelecionada.razaosocial\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n {{MascaraNomeLicenca(this.licencaSelecionada.razaosocial)}}\r\n </span>\r\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cnpj)}}</span>\r\n </div>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n [pTooltip]=\"'Alterar Licen\u00E7a'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n sync_alt\r\n </i>\r\n </button>\r\n\r\n </div>\r\n <p-divider type=\"solid\"></p-divider>\r\n </div>\r\n\r\n <div\r\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\r\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\r\n style=\"overflow-y: auto;\"\r\n >\r\n <!-- menus -->\r\n <li *ngFor=\"let menu of menus\">\r\n <!-- menu que n\u00E3o tem filho -->\r\n <a\r\n (click)=\"callRoute(menu.link)\"\r\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\r\n pRipple\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n [tooltipPosition]=\"'right'\"\r\n class=\"{{verificarPaginaSelecionada(menu.link)}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n >\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </a>\r\n <!-- menu com filho -->\r\n <div *ngIf=\"menu.menupai\">\r\n <a\r\n pRipple\r\n pStyleClass=\"@next\"\r\n enterClass=\"hidden\"\r\n enterActiveClass=\"slidedown\"\r\n leaveToClass=\"hidden\"\r\n leaveActiveClass=\"slideup\"\r\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [tooltipPosition]=\"'right'\"\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\r\n >\r\n <div class=\"flex flex-row align-items-center\">\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </div>\r\n <i\r\n class=\"pi pi-chevron-down text-blue-900 mr-1\"\r\n *ngIf=\"expandMenu\"\r\n ></i>\r\n </a>\r\n\r\n <!-- filhos -->\r\n <div\r\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\r\n >\r\n <li *ngFor=\"\r\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu)\r\n \">\r\n <a\r\n *ngIf=\"expandMenu\"\r\n (click)=\"callRoute(filho.link)\"\r\n pRipple\r\n class=\"{{verificarPaginaSelecionada(filho.link)}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\r\n >\r\n <i\r\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\r\n *ngIf=\"filho.icone && filho.icone !== ''\"\r\n ></i>\r\n <span\r\n class=\"text-base text-blue-900 ml-4\"\r\n *ngIf=\"expandMenu\"\r\n >{{ filho.descricaomenu }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n</ng-template>\r\n</p-sidebar>\r\n\r\n\r\n<div\r\n class=\"w-auto h-screen page-content overflow-y-hidden\"\r\n id=\"page-content\"\r\n>\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\r\n <div *ngIf=\"breadCrumbs\">\r\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{ retornarTituloBreadCrumbs(breadCrumbItems[breadCrumbItems.length -\r\n 1].label)}}</p>\r\n <p-breadcrumb\r\n *ngIf=\"widthCard > 400\"\r\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\r\n [model]=\"breadCrumbItems\"\r\n [style]=\"{backgroundColor: '#d4d3d3'}\"\r\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\r\n ></p-breadcrumb>\r\n </div>\r\n\r\n <div *ngIf=\"!breadCrumbs\"></div>\r\n\r\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"sistemasPanel.toggle($event)\"\r\n [pTooltip]=\"'Sistemas'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n apps\r\n </i>\r\n </button>\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"meusDadosPanel.toggle($event)\"\r\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n person\r\n </i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n <p-card\r\n class=\"card-container\"\r\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\r\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\r\n >\r\n <div class=\"card-container w-full\">\r\n <ng-content></ng-content>\r\n </div>\r\n </p-card>\r\n\r\n</div>\r\n\r\n\r\n</div>\r\n\r\n<p-overlayPanel\r\n #sistemasPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Sistemas</p>\r\n <div\r\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\r\n style=\"width: 250px; height: 100%;\"\r\n >\r\n <button\r\n *ngFor=\"let menu of menuCompleto\"\r\n pButton\r\n pRipple\r\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\r\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\r\n [pTooltip]=\"menu.sistema.descricaosistema\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <!-- <img\r\n alt=\"logo\"\r\n style=\"width: 2rem; height: 2rem;\"\r\n /> -->\r\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\r\n\r\n </button>\r\n\r\n\r\n <!-- <p-button styleClass=\"p-button-outlined\">\r\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\r\n <span class=\"ml-2 font-bold\">PrimeNG</span>\r\n </p-button> -->\r\n\r\n </div>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<p-overlayPanel\r\n #meusDadosPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\r\n <div class=\"mt-5 mb-3\">\r\n\r\n </div>\r\n\r\n <p-button\r\n icon=\"pi pi-lock\"\r\n label=\"Ger\u00EAnciar KeevoPass\"\r\n (onClick)=\"gerenciarKeePass($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n [disabled]=\"true\"\r\n ></p-button>\r\n <p-button\r\n icon=\"pi pi-sign-out\"\r\n label=\"Sair\"\r\n (onClick)=\"sair($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n ></p-button>\r\n </ng-template>\r\n\r\n</p-overlayPanel>\r\n\r\n<p-dialog\r\n [(visible)]=\"visibleDialogLicenca\"\r\n [modal]=\"true\"\r\n [draggable]=\"false\"\r\n header=\"Trocar Licen\u00E7a\"\r\n [style]=\"{width: '50vh' }\"\r\n>\r\n <div class=\"flex flex-column align-items-end\">\r\n\r\n <div class=\"w-full\">\r\n <p-dropdown\r\n styleClass=\"w-full\"\r\n [options]=\"licencasOptions\"\r\n [(ngModel)]=\"licencaSelected\"\r\n optionLabel=\"descricao\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <kv-button-success\r\n [label]=\"'Salvar'\"\r\n class=\"mt-2\"\r\n (onClick)=\"setLicenca()\"\r\n ></kv-button-success>\r\n\r\n </div>\r\n\r\n</p-dialog>", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px}.page-content{background:linear-gradient(to bottom,#d4d3d3 20%,#ffffff 30%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{font-weight:700}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}\n"] }]
212
+ args: [{ selector: 'kv-menu', template: "<div class=\"flex flex-row overflow-y-hidden w- full-container\">\r\n\r\n <div [style]=\"{minWidth: expandMenu ? '300px' : '60px'}\"></div>\r\n\r\n <p-sidebar\r\n #sidebarRef\r\n [visible]=\"true\"\r\n [showCloseIcon]=\"false\"\r\n [modal]=\"false\"\r\n [style]=\"{width: expandMenu ? '300px' : '60px'}\"\r\n >\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-column {{expandMenu ? 'mx-1' : 'mx-1'}}\">\r\n <div class=\"flex flex-column gap-2 justify-content-between flex-shrink-0 mx-2\">\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}} py-3\"\r\n >\r\n <img\r\n *ngIf=\"expandMenu\"\r\n alt=\"Card\"\r\n [src]=\"logoImage\"\r\n width=\"150\"\r\n />\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"toggleMenu()\"\r\n [pTooltip]=\"expandMenu ? 'Ocutar Menu' : 'Expandir Menu'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n menu\r\n </i>\r\n </button>\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center {{expandMenu ? 'justify-content-between' : 'justify-content-center'}}\"\r\n >\r\n <div\r\n class=\"flex flex-column cursor-pointer\"\r\n *ngIf=\"expandMenu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n >\r\n <span\r\n class=\"text-sm font-semibold mr-2\"\r\n [pTooltip]=\"this.licencaSelecionada.razaosocial\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n {{MascaraNomeLicenca(this.licencaSelecionada.razaosocial)}}\r\n </span>\r\n <span class=\"text-sm mt-1\">{{MascaraCnpj(this.licencaSelecionada.cnpj)}}</span>\r\n </div>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text padding-style h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu\"\r\n (click)=\"visibleDialogLicenca = !visibleDialogLicenca\"\r\n [pTooltip]=\"'Alterar Licen\u00E7a'\"\r\n [tooltipPosition]=\"'right'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n sync_alt\r\n </i>\r\n </button>\r\n\r\n </div>\r\n <p-divider type=\"solid\"></p-divider>\r\n </div>\r\n\r\n <div\r\n class=\"list-none m-0 card-container {{expandMenu ? 'mx-1' : ''}}\"\r\n [style.max-height]=\"(heigthCard - 220) + 'px'\"\r\n style=\"overflow-y: auto;\"\r\n >\r\n <!-- menus -->\r\n <li *ngFor=\"let menu of menus\">\r\n <!-- menu que n\u00E3o tem filho -->\r\n <a\r\n (click)=\"callRoute(menu.link)\"\r\n *ngIf=\"!menu.menupai && menu.idmenupai == 0\"\r\n pRipple\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n [tooltipPosition]=\"'right'\"\r\n class=\"{{verificarPaginaSelecionada(menu.link)}} menu-option flex align-items-center no-underline {{!expandMenu ? 'justify-content-center' : ''}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n >\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </a>\r\n <!-- menu com filho -->\r\n <div *ngIf=\"menu.menupai\">\r\n <a\r\n pRipple\r\n pStyleClass=\"@next\"\r\n enterClass=\"hidden\"\r\n enterActiveClass=\"slidedown\"\r\n leaveToClass=\"hidden\"\r\n leaveActiveClass=\"slideup\"\r\n class=\"menu-option flex align-items-center {{!expandMenu ? 'justify-content-center' : 'justify-content-between'}} cursor-pointer border-round text-700 hover:bg-green-600 hover:text-white transition-duration-150 transition-colors p-ripple\"\r\n [tooltipPosition]=\"'right'\"\r\n [pTooltip]=\"!expandMenu ? menu.descricaomenu : ''\"\r\n (click)=\"!expandMenu ? expandMenu = !expandMenu : ''\"\r\n >\r\n <div class=\"flex flex-row align-items-center\">\r\n\r\n <i\r\n class=\"material-symbols-outlined icon-menu {{expandMenu ? 'ml-1 mr-2' : ''}}\"\r\n *ngIf=\"menu.icone && menu.icone !== ''\"\r\n >\r\n {{ menu.icone }}\r\n </i>\r\n <span\r\n class=\"text-base text-blue-900 font-medium\"\r\n *ngIf=\"expandMenu\"\r\n >{{ menu.descricaomenu }}</span>\r\n </div>\r\n <i\r\n class=\"pi pi-chevron-down text-blue-900 mr-1\"\r\n *ngIf=\"expandMenu\"\r\n ></i>\r\n </a>\r\n\r\n <!-- filhos -->\r\n <div\r\n class=\"list-none py-0 pl-3 pr-0 m-0 hidden overflow-y-hidden transition-all transition-duration-400 transition-ease-in-out\"\r\n >\r\n <li *ngFor=\"\r\n let filho of retornarMenuFilhos(menu.idsistema, menu.idmenu)\r\n \">\r\n <a\r\n *ngIf=\"expandMenu\"\r\n (click)=\"callRoute(filho.link)\"\r\n pRipple\r\n class=\"{{verificarPaginaSelecionada(filho.link)}} menu-option flex align-items-center no-underline cursor-pointer border-round text-700 hover:bg-green-600 transition-duration-150 transition-colors p-ripple p-2\"\r\n >\r\n <i\r\n class=\"pi pi-chart-line mr-2 ml-1 adjust-icon-menu\"\r\n *ngIf=\"filho.icone && filho.icone !== ''\"\r\n ></i>\r\n <span\r\n class=\"text-base text-blue-900 ml-4\"\r\n *ngIf=\"expandMenu\"\r\n >{{ filho.descricaomenu }}</span>\r\n </a>\r\n </li>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n</ng-template>\r\n</p-sidebar>\r\n\r\n\r\n<div\r\n class=\"w-auto h-screen page-content overflow-y-hidden\"\r\n id=\"page-content\"\r\n>\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between m-3\">\r\n <div *ngIf=\"breadCrumbs\">\r\n <p class=\"text-xl font-semibold text-blue-900 breadcrumb-title\">{{ retornarTituloBreadCrumbs(breadCrumbItems[breadCrumbItems.length -\r\n 1].label)}}</p>\r\n <p-breadcrumb\r\n *ngIf=\"widthCard > 400\"\r\n styleClass=\"border-none p-0 flex align-items-center h-2rem !important;\"\r\n [model]=\"breadCrumbItems\"\r\n [style]=\"{backgroundColor: '#d4d3d3'}\"\r\n (onItemClick)=\"callRoute($event.item.routerLink, true)\"\r\n ></p-breadcrumb>\r\n </div>\r\n\r\n <div *ngIf=\"!breadCrumbs\"></div>\r\n\r\n <div class=\"w-auto flex flex-row align-items-center gap-2\">\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"sistemasPanel.toggle($event)\"\r\n [pTooltip]=\"'Sistemas'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n apps\r\n </i>\r\n </button>\r\n <button\r\n pButton\r\n class=\"p-button-rounded p-button-text h-2rem w-2rem hover:bg-green-600 hover:text-white icon-menu padding-style\"\r\n (click)=\"meusDadosPanel.toggle($event)\"\r\n [pTooltip]=\"'Menu do Usu\u00E1rio'\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <i class=\"material-symbols-outlined\">\r\n person\r\n </i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n <p-card\r\n class=\"card-container\"\r\n styleClass=\"m-3 border-noround overflow-y-auto card-container\"\r\n [style]=\"{height: heigthCard - ajustarHeigthCard() + 'px'}\"\r\n >\r\n <div class=\"card-container w-full\">\r\n <ng-content></ng-content>\r\n </div>\r\n </p-card>\r\n\r\n</div>\r\n\r\n\r\n</div>\r\n\r\n<p-overlayPanel\r\n #sistemasPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Sistemas</p>\r\n <div\r\n class=\"flex flex-row flex-wrap gap-2 align-items-center justify-content-center mt-5 mb-3\"\r\n style=\"width: 250px; height: 100%;\"\r\n >\r\n <button\r\n *ngFor=\"let menu of menuCompleto\"\r\n pButton\r\n pRipple\r\n class=\"btn-sistema-2 btn-sistema hover-btn-cor-padrao remove-focus h-4rem w-4rem\"\r\n (click)=\"definirMenusPorSistema(menu.sistema.idsistema)\"\r\n [pTooltip]=\"menu.sistema.descricaosistema\"\r\n [tooltipPosition]=\"'left'\"\r\n >\r\n <!-- <img\r\n alt=\"logo\"\r\n style=\"width: 2rem; height: 2rem;\"\r\n /> -->\r\n {{ menu.sistema.nomesistema.charAt(0).toUpperCase() }}\r\n\r\n </button>\r\n\r\n\r\n <!-- <p-button styleClass=\"p-button-outlined\">\r\n <img alt=\"logo\" src=\"https://primefaces.org/cdn/primeng/images/primeng-icon.svg\" style=\"width: 1.5rem\" />\r\n <span class=\"ml-2 font-bold\">PrimeNG</span>\r\n </p-button> -->\r\n\r\n </div>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<p-overlayPanel\r\n #meusDadosPanel\r\n [showTransitionOptions]=\"'350ms ease-out'\"\r\n [hideTransitionOptions]=\"'250ms ease-in'\"\r\n>\r\n\r\n <ng-template pTemplate=\"container\">\r\n\r\n <p class=\"title-style mt-3\">Ol\u00E1, {{nomeUsuario ? nomeUsuario.split(' ')[0] : 'Usu\u00E1rio'}} !</p>\r\n <div class=\"mt-5 mb-3\">\r\n\r\n </div>\r\n\r\n <p-button\r\n icon=\"pi pi-lock\"\r\n label=\"Ger\u00EAnciar KeevoPass\"\r\n (onClick)=\"gerenciarKeePass($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n [disabled]=\"true\"\r\n ></p-button>\r\n <p-button\r\n icon=\"pi pi-sign-out\"\r\n label=\"Sair\"\r\n (onClick)=\"sair($event)\"\r\n styleClass=\"border-noround w-full p-button-text text-blue-900\"\r\n ></p-button>\r\n </ng-template>\r\n\r\n</p-overlayPanel>\r\n\r\n<p-dialog\r\n [(visible)]=\"visibleDialogLicenca\"\r\n [modal]=\"true\"\r\n [draggable]=\"false\"\r\n header=\"Trocar Licen\u00E7a\"\r\n [style]=\"{width: '50vh' }\"\r\n>\r\n <div class=\"flex flex-column align-items-end\">\r\n\r\n <div class=\"w-full\">\r\n <p-dropdown\r\n styleClass=\"w-full\"\r\n [options]=\"licencasOptions\"\r\n [(ngModel)]=\"licencaSelected\"\r\n optionLabel=\"descricao\"\r\n ></p-dropdown>\r\n </div>\r\n\r\n <kv-button-success\r\n [label]=\"'Salvar'\"\r\n class=\"mt-2\"\r\n (onClick)=\"setLicenca()\"\r\n ></kv-button-success>\r\n\r\n </div>\r\n\r\n</p-dialog>\r\n\r\n<p-confirmDialog\r\n [style]=\"{width: '40vw'}\"\r\n [baseZIndex]=\"10000\"\r\n rejectButtonStyleClass=\"p-button-text\">\r\n</p-confirmDialog>\r\n\r\n<p-toast></p-toast>", styles: [".material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:1em;display:inline-block;width:1em;height:1em;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}::ng-deep .p-button:focus{box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}::ng-deep .p-overlaypanel .p-overlaypanel-content{padding:0}::ng-deep .hover-btn-cor-padrao.p-button:enabled:hover{background:#0c3e66;border-color:#002542}.p-button.p-button-icon-only.p-button-rounded{background:#0c3e66;border-color:#002542}::ng-deep .remove-focus:focus{border:none}::ng-deep .p-sidebar .p-sidebar-content{padding:0}::ng-deep .sidebar-header-sistema.p-sidebar .p-sidebar-header{padding-top:.5rem;padding-right:0;padding-bottom:0;padding-left:0;display:block}.btn-sistema{display:flex;align-items:center;justify-content:center;background-color:#0c3e66;font-size:20px}::ng-deep .p-sidebar .p-sidebar-header{padding:0rem!important}::ng-deep body{margin:0!important}::ng-deep .p-breadcrumb ul li.p-breadcrumb-chevron{position:relative;top:3px}.page-content{background:linear-gradient(to bottom,#d4d3d3 20%,#ffffff 30%)}*{margin:0}p .item-menu{color:#0c3e66;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .p-breadcrumb ul li:last-child .p-menuitem-text{font-weight:700}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#0c3e66!important;font-weight:500}span,.breadcrumb-title{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}::ng-deep .card-container{overflow-x:hidden}::ng-deep .card-container::-webkit-scrollbar{width:6px}::ng-deep .card-container::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .card-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .card-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .card-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.title-style{position:relative;top:10px;margin-left:20px;font-size:25px;color:#002542;border-bottom:2px solid green;font-weight:600;display:inline}::ng-deep p-sidebar .p-sidebar-content{overflow-y:hidden}::ng-deep p-dialog .p-dialog-content{overflow-y:unset}.icon-menu{color:#002542;display:flex;justify-content:center;align-items:center}::ng-deep .padding-style{padding:15px!important}::ng-deep .menu-option{padding:15px 5px!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text{color:#183462!important;opacity:.95;font-weight:500;font-size:.8rem!important}::ng-deep .p-breadcrumb ul li .p-menuitem-link .p-menuitem-text:hover{opacity:.7}.pl-3{padding-left:0rem!important}::ng-deep svg.p-icon{width:.7rem;height:1rem}\n"] }]
209
213
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i1.ActivatedRoute }]; }, propDecorators: { menuCompleto: [{
210
214
  type: Input
211
215
  }], licencas: [{
@@ -239,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
239
243
  type: HostListener,
240
244
  args: ['window:resize', ['$event']]
241
245
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszSCxPQUFPLEVBQWtCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEUsTUFBTSxPQUFPLGFBQWE7SUFpQ3hCLGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBb0IsR0FBc0IsRUFBWSxNQUFjLEVBQVUsS0FBcUI7UUFBL0UsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFyQzFGLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxhQUFRLEdBQWtCLEVBQUUsQ0FBQTtRQUk1QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU1Qixr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RUFBMEU7SUFDMUUsb0JBQW9CO0lBQ3BCLElBQUk7SUFFSix5QkFBeUIsQ0FBQyxHQUFXO1FBRW5DLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDN0I7UUFFRCxJQUFJLGFBQWEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUViLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OzBHQTVPVSxhQUFhOzhGQUFiLGFBQWEsa3ZCQ2IxQiwyb1hBaVVXOzJGRHBURSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7MEpBTVYsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWtCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0csY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBaUIzQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1lbnVDb21wbGV0b01vZGVsIH0gZnJvbSAnLi4vYXBpL21vZGVscy9tZW51L21lbnVjb21wbGV0by5tb2RlbCc7XHJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBtZW51TW9kZWwgfSBmcm9tICcuLi9hcGkvbW9kZWxzL21lbnUvbWVudS5tb2RlbCc7XHJcbmltcG9ydCB7IG1hc3Rlck1vZGVsIH0gZnJvbSAnLi4vYXBpL21vZGVscy9tZW51L21hc3Rlci5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbWVudUNvbXBsZXRvOiBtZW51Q29tcGxldG9Nb2RlbFtdID0gW107XHJcbiAgQElucHV0KCkgbGljZW5jYXM6IG1hc3Rlck1vZGVsW10gPSBbXVxyXG4gIEBJbnB1dCgpIGxpY2VuY2FTZWxlY2lvbmFkYSE6IG1hc3Rlck1vZGVsO1xyXG4gIEBJbnB1dCgpIGxvZ29JbWFnZSE6IGFueTtcclxuICBASW5wdXQoKSBub21lVXN1YXJpbyE6IHN0cmluZztcclxuICBASW5wdXQoKSBicmVhZENydW1iczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgbGljZW5jYUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGdlcmVuY2lhcktlZVBhc3NFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNhaXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cGFuZE1lbnVFbWl0OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NpZGViYXJSZWYnKSBzaWRlYmFyUmVmITogU2lkZWJhcjtcclxuICBAVmlld0NoaWxkKCdzaXN0ZW1hc1BhbmVsJykgc2lzdGVtYXNQYW5lbCE6IE92ZXJsYXlQYW5lbDtcclxuICBAVmlld0NoaWxkKCdtZXVzRGFkb3NQYW5lbCcpIG1ldXNEYWRvc1BhbmVsITogT3ZlcmxheVBhbmVsO1xyXG5cclxuICBsaWNlbmNhc09wdGlvbnM6IHsgaWQ6IG51bWJlciwgZGVzY3JpY2FvOiBzdHJpbmcsIGNucGo6IHN0cmluZyB9W10gPSBbXVxyXG4gIGxpY2VuY2FTZWxlY3RlZCE6IHsgaWQ6IG51bWJlciwgZGVzY3JpY2FvOiBzdHJpbmcsIGNucGo6IHN0cmluZyB9O1xyXG5cclxuICBtZW51c0ZpbHRyYWRvczogbWVudUNvbXBsZXRvTW9kZWxbXSA9IFtdO1xyXG4gIG1lbnVzOiBtZW51TW9kZWxbXSA9IFtdO1xyXG5cclxuICBicmVhZENydW1iSXRlbXM6IHsgbGFiZWw6IHN0cmluZywgcm91dGVyTGluazogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICBoZWlndGhDYXJkITogbnVtYmVyO1xyXG4gIHdpZHRoQ2FyZCE6IG51bWJlcjtcclxuICBleHBhbmRNZW51OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgdmlzaWJsZURpYWxvZ0xpY2VuY2E6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLmhlaWd0aENhcmQgPSBOdW1iZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtY29udGVudCcpPy5vZmZzZXRIZWlnaHQpO1xyXG4gICAgdGhpcy53aWR0aENhcmQgPSBOdW1iZXIod2luZG93LmlubmVyV2lkdGgpIC0gKHRoaXMuZXhwYW5kTWVudSA/IDMzMyA6IDkzKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmFyTGljZW5jYXMoKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0V2ZW50byBkZSBuYXZlZ2HDp8OjbzonLCBldmVudCk7IFxyXG4gICAgICAgIHRoaXMuYnJlYWRDcnVtYkl0ZW1zID0gdGhpcy5nZXRCcmVhZGNydW1icyhldmVudC51cmwpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYnJlYWRDcnVtYkl0ZW1zIC0+XCIsIHRoaXMuYnJlYWRDcnVtYkl0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5oZWlndGhDYXJkID0gTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWNvbnRlbnQnKT8ub2Zmc2V0SGVpZ2h0KTtcclxuICAgIHRoaXMud2lkdGhDYXJkID0gTnVtYmVyKHdpbmRvdy5pbm5lcldpZHRoKSAtICh0aGlzLmV4cGFuZE1lbnUgPyAzMzMgOiA5Myk7XHJcbiAgfVxyXG5cclxuICBjb25maWd1cmFyTGljZW5jYXMoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0TGljZW5jYSgpLCAxNTAwKVxyXG5cclxuICAgIHRoaXMubGljZW5jYXMuZm9yRWFjaCgoeCwgaSkgPT4ge1xyXG4gICAgICB0aGlzLmxpY2VuY2FzT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICBpZDogaSxcclxuICAgICAgICBkZXNjcmljYW86IHgucmF6YW9zb2NpYWwsXHJcbiAgICAgICAgY25wajogeC5jbnBqXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIHZhciBsaWNlbmNhID0gdGhpcy5saWNlbmNhc09wdGlvbnMuZmluZCgoeCkgPT4geC5jbnBqID09IHRoaXMubGljZW5jYVNlbGVjaW9uYWRhLmNucGopO1xyXG5cclxuICAgIGlmIChsaWNlbmNhICE9IHVuZGVmaW5lZClcclxuICAgICAgdGhpcy5saWNlbmNhU2VsZWN0ZWQgPSBsaWNlbmNhO1xyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBnZXRCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGUsIHVybDogc3RyaW5nID0gJycsIGJyZWFkY3J1bWJzOiB7IGxhYmVsOiBzdHJpbmcsIHJvdXRlckxpbms6IHN0cmluZyB9W10gPSBbXSk6IHsgbGFiZWw6IHN0cmluZywgcm91dGVyTGluazogc3RyaW5nIH1bXSB7XHJcbiAgLy8gICBjb25zdCBjaGlsZHJlblJvdXRlcyA9IHJvdXRlLmNoaWxkcmVuO1xyXG4gIC8vICAgY29uc29sZS5sb2coXCJjaGlsZHJlblJvdXRlcyAtPlwiLCBjaGlsZHJlblJvdXRlcylcclxuXHJcbiAgLy8gICBpZiAoY2hpbGRyZW5Sb3V0ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgLy8gICAgIHJldHVybiBicmVhZGNydW1icztcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBmb3IgKGNvbnN0IGNoaWxkUm91dGUgb2YgY2hpbGRyZW5Sb3V0ZXMpIHtcclxuICAvLyAgICAgY29uc3Qgcm91dGVVcmwgPSBjaGlsZFJvdXRlLnNuYXBzaG90LnVybC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcclxuXHJcbiAgLy8gICAgIGlmIChyb3V0ZVVybCAhPT0gJycpIHtcclxuICAvLyAgICAgICB1cmwgKz0gYC8ke3JvdXRlVXJsfWA7XHJcbiAgLy8gICAgIH1cclxuXHJcbiAgLy8gICAgIGNvbnN0IGJyZWFkY3J1bWJMYWJlbCA9IGNoaWxkUm91dGUuc25hcHNob3QuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG4gIC8vICAgICBpZiAoYnJlYWRjcnVtYkxhYmVsKSB7XHJcbiAgLy8gICAgICAgYnJlYWRjcnVtYnMucHVzaCh7IGxhYmVsOiBicmVhZGNydW1iTGFiZWwsIHJvdXRlckxpbms6IHVybCB9KTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgdGhpcy5nZXRCcmVhZGNydW1icyhjaGlsZFJvdXRlLCB1cmwsIGJyZWFkY3J1bWJzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBjb25zb2xlLmxvZyhcIkJSRUFEQ1JVTUJTIC0+XCIsIGJyZWFkY3J1bWJzKVxyXG4gIC8vICAgcmV0dXJuIGJyZWFkY3J1bWJzO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnModXJsOiBzdHJpbmcgPSAnJywgYnJlYWRjcnVtYnM6IHsgbGFiZWw6IHN0cmluZywgcm91dGVyTGluazogc3RyaW5nIH1bXSA9IFtdKTogeyBsYWJlbDogc3RyaW5nLCByb3V0ZXJMaW5rOiBzdHJpbmcgfVtdIHtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHJldHVybiBicmVhZGNydW1icztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWdtZW50cyA9IHVybC5zcGxpdCgnLycpLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQgIT09ICcnKTsgXHJcblxyXG4gICAgbGV0IGN1cnJlbnRVcmwgPSAnJztcclxuICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xyXG4gICAgICBjdXJyZW50VXJsICs9IGAvJHtzZWdtZW50fWA7XHJcbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goeyBsYWJlbDogc2VnbWVudCwgcm91dGVyTGluazogY3VycmVudFVybCB9KTtcclxuXHJcbiAgICAgIGJyZWFkY3J1bWJzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsU2VnbWVudHMgPSBpdGVtLmxhYmVsLnNwbGl0KCctJyk7XHJcbiAgICAgICAgbGFiZWxTZWdtZW50cyA9IGxhYmVsU2VnbWVudHMubWFwKChzZWdtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8gc2VnbWVudC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHNlZ21lbnQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSA6IHNlZ21lbnQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXRlbS5sYWJlbCA9IGxhYmVsU2VnbWVudHMuam9pbignICcpOyBcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBicmVhZGNydW1icztcclxuICB9XHJcblxyXG4gIGNsb3NlQ2FsbGJhY2soZTogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2lkZWJhclJlZi5jbG9zZShlKTtcclxuICB9XHJcblxyXG4gIE1hc2NhcmFOb21lTGljZW5jYShub21lTGljZW5jYTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChub21lTGljZW5jYSkge1xyXG4gICAgICBpZiAobm9tZUxpY2VuY2EubGVuZ3RoID4gMjQpXHJcbiAgICAgICAgcmV0dXJuIG5vbWVMaWNlbmNhLnN1YnN0cmluZygwLCAyNCkgKyAnLi4uJztcclxuICAgICAgZWxzZSByZXR1cm4gbm9tZUxpY2VuY2E7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgTWFzY2FyYUNucGooY25wajogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNucGpMaW1wbyA9IGNucGoucmVwbGFjZSgvXFxEL2csICcnKTtcclxuXHJcbiAgICByZXR1cm4gY25wakxpbXBvLnJlcGxhY2UoXHJcbiAgICAgIC9eKFxcZHsyfSkoXFxkezN9KShcXGR7M30pKFxcZHs0fSkoXFxkezJ9KSQvLFxyXG4gICAgICAnJDEuJDIuJDMvJDQtJDUnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVmaW5pck1lbnVzUG9yU2lzdGVtYShpZHNpc3RlbWE6IG51bWJlcikge1xyXG4gICAgdGhpcy5tZW51cyA9XHJcbiAgICAgIHRoaXMubWVudUNvbXBsZXRvLmZpbmQoKHgpID0+IHguc2lzdGVtYS5pZHNpc3RlbWEgPT0gaWRzaXN0ZW1hKT8ubWVudXMgfHxcclxuICAgICAgW107XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5tZW51cywgJ21lbnVzJylcclxuICAgIGNvbnNvbGUubG9nKHRoaXMubWVudUNvbXBsZXRvLCAnbWVudUNvbXBsZXRvJylcclxuICAgIGNvbnNvbGUubG9nKHRoaXMubWVudXNbMF0ubWVudXBhaSwgJ21lbnVwYWknKVxyXG5cclxuICAgIGlmICh0aGlzLm1lbnVzWzBdLm1lbnVwYWkpIHtcclxuICAgICAgdmFyIGZpbGhvcyA9IHRoaXMucmV0b3JuYXJNZW51RmlsaG9zKHRoaXMubWVudXNbMF0uaWRzaXN0ZW1hLCB0aGlzLm1lbnVzWzBdLmlkbWVudSk7XHJcbiAgICAgIGlmIChmaWxob3MgIT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIHRoaXMuY2FsbFJvdXRlKGZpbGhvc1swXS5saW5rLCB0cnVlKVxyXG4gICAgfSBlbHNlIHRoaXMuY2FsbFJvdXRlKHRoaXMubWVudXNbMF0ubGluaywgdHJ1ZSlcclxuXHJcbiAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgcmV0b3JuYXJNZW51RmlsaG9zKGlkc2lzdGVtYTogbnVtYmVyLCBpZG1lbnU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMubWVudUNvbXBsZXRvXHJcbiAgICAgIC5maW5kKCh4KSA9PiB4LnNpc3RlbWEuaWRzaXN0ZW1hID09IGlkc2lzdGVtYSlcclxuICAgICAgPy5tZW51cy5maWx0ZXIoKHgpID0+IHguaWRtZW51cGFpID09IGlkbWVudSk7XHJcbiAgfVxyXG5cclxuICBjYWxsUm91dGUoZTogYW55LCBleHBhbmQ/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWV4cGFuZClcclxuICAgICAgIXRoaXMuZXhwYW5kTWVudSA/IHRoaXMuZXhwYW5kTWVudSA9ICF0aGlzLmV4cGFuZE1lbnUgOiAnJ1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChlKVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudSgpIHtcclxuICAgIHRoaXMuZXhwYW5kTWVudSA9ICF0aGlzLmV4cGFuZE1lbnU7XHJcbiAgICB0aGlzLmV4cGFuZE1lbnVFdmVudCgpXHJcbiAgfVxyXG5cclxuICBzZXRMaWNlbmNhKCkge1xyXG4gICAgdmFyIGxpY2VuY2EgPSB0aGlzLmxpY2VuY2FzLmZpbmQoKGxpY2VuY2EpID0+IGxpY2VuY2EuY25waiA9PSB0aGlzLmxpY2VuY2FTZWxlY3RlZC5jbnBqKTtcclxuICAgIGlmIChsaWNlbmNhKSB0aGlzLmxpY2VuY2FTZWxlY2lvbmFkYSA9IGxpY2VuY2E7XHJcblxyXG4gICAgdGhpcy52aXNpYmxlRGlhbG9nTGljZW5jYSA9IGZhbHNlXHJcblxyXG4gICAgdGhpcy5saWNlbmNhQ2hhbmdlLmVtaXQodGhpcy5saWNlbmNhU2VsZWNpb25hZGEpO1xyXG5cclxuICAgIHRoaXMuZGVmaW5pck1lbnVzUG9yU2lzdGVtYSh0aGlzLm1lbnVDb21wbGV0b1swXT8uc2lzdGVtYS5pZHNpc3RlbWEpXHJcbiAgfVxyXG5cclxuICBnZXJlbmNpYXJLZWVQYXNzKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2lzdGVtYXNQYW5lbC5oaWRlKCk7XHJcbiAgICB0aGlzLmdlcmVuY2lhcktlZVBhc3NFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgc2FpcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xyXG4gICAgdGhpcy5zYWlyRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIGV4cGFuZE1lbnVFdmVudCgpIHtcclxuICAgIHRoaXMuZXhwYW5kTWVudUVtaXQuZW1pdCh0aGlzLmV4cGFuZE1lbnUpO1xyXG4gIH1cclxuXHJcbiAgYWp1c3RhckhlaWd0aENhcmQoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLndpZHRoQ2FyZCA+IDQwMCkge1xyXG4gICAgICBpZiAodGhpcy5icmVhZENydW1icykgcmV0dXJuIDEwNVxyXG4gICAgICBlbHNlIHJldHVybiA4NVxyXG4gICAgfSBlbHNlIHJldHVybiA4M1xyXG4gIH1cclxuXHJcbiAgdmVyaWZpY2FyUGFnaW5hU2VsZWNpb25hZGEobGluazogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMobGluaykpIHJldHVybiAnYmctZ3JlZW4tNjAwJ1xyXG4gICAgZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICAvLyByZXRvcm5hclRpdHVsb0JyZWFkQ3J1bWJzKGxhYmVsOiBhbnkpOiBzdHJpbmcge1xyXG4gIC8vICAgaWYgKGxhYmVsKVxyXG4gIC8vICAgICByZXR1cm4gdGhpcy5icmVhZENydW1iSXRlbXNbdGhpcy5icmVhZENydW1iSXRlbXMubGVuZ3RoIC0gMV0/LmxhYmVsXHJcbiAgLy8gICBlbHNlIHJldHVybiAnJztcclxuICAvLyB9XHJcblxyXG4gIHJldG9ybmFyVGl0dWxvQnJlYWRDcnVtYnMoc3RyOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAoc3RyLmluY2x1ZGVzKCctJykpIHtcclxuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJy0nLCAnICcpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBwcmltZWlyYUxldHJhID0gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG5cclxuICAgIHN0ci5zbGljZSgxKTtcclxuXHJcbiAgICByZXR1cm4gcHJpbWVpcmFMZXRyYTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgb3ZlcmZsb3cteS1oaWRkZW4gdy0gZnVsbC1jb250YWluZXJcIj5cclxuXHJcbiAgPGRpdiBbc3R5bGVdPVwie21pbldpZHRoOiBleHBhbmRNZW51ID8gJzMwMHB4JyA6ICc2MHB4J31cIj48L2Rpdj5cclxuXHJcbiAgPHAtc2lkZWJhclxyXG4gICAgI3NpZGViYXJSZWZcclxuICAgIFt2aXNpYmxlXT1cInRydWVcIlxyXG4gICAgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIlxyXG4gICAgW21vZGFsXT1cImZhbHNlXCJcclxuICAgIFtzdHlsZV09XCJ7d2lkdGg6IGV4cGFuZE1lbnUgPyAnMzAwcHgnIDogJzYwcHgnfVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRsZXNzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIHt7ZXhwYW5kTWVudSA/ICdteC0xJyA6ICdteC0xJ319XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1zaHJpbmstMCBteC0yXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIge3tleHBhbmRNZW51ID8gJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJyA6ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ319IHB5LTNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJleHBhbmRNZW51XCJcclxuICAgICAgICAgICAgICBhbHQ9XCJDYXJkXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cImxvZ29JbWFnZVwiXHJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxNTBcIlxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwYWRkaW5nLXN0eWxlIGgtMnJlbSB3LTJyZW0gaG92ZXI6YmctZ3JlZW4tNjAwIGhvdmVyOnRleHQtd2hpdGUgaWNvbi1tZW51XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZXhwYW5kTWVudSA/ICdPY3V0YXIgTWVudScgOiAnRXhwYW5kaXIgTWVudSdcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAgICAgIG1lbnVcclxuICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIHt7ZXhwYW5kTWVudSA/ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbicgOiAnanVzdGlmeS1jb250ZW50LWNlbnRlcid9fVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZpc2libGVEaWFsb2dMaWNlbmNhID0gIXZpc2libGVEaWFsb2dMaWNlbmNhXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCBtci0yXCJcclxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0aGlzLmxpY2VuY2FTZWxlY2lvbmFkYS5yYXphb3NvY2lhbFwiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7TWFzY2FyYU5vbWVMaWNlbmNhKHRoaXMubGljZW5jYVNlbGVjaW9uYWRhLnJhemFvc29jaWFsKX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBtdC0xXCI+e3tNYXNjYXJhQ25waih0aGlzLmxpY2VuY2FTZWxlY2lvbmFkYS5jbnBqKX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcGFkZGluZy1zdHlsZSBoLTJyZW0gdy0ycmVtIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIGljb24tbWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZpc2libGVEaWFsb2dMaWNlbmNhID0gIXZpc2libGVEaWFsb2dMaWNlbmNhXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FsdGVyYXIgTGljZW7Dp2EnXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICBzeW5jX2FsdFxyXG4gICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8cC1kaXZpZGVyIHR5cGU9XCJzb2xpZFwiPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxpc3Qtbm9uZSBtLTAgIGNhcmQtY29udGFpbmVyIHt7ZXhwYW5kTWVudSA/ICdteC0xJyA6ICcnfX1cIlxyXG4gICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwiKGhlaWd0aENhcmQgLSAyMjApICsgJ3B4J1wiXHJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGF1dG87XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIG1lbnVzIC0tPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtZW51IG9mIG1lbnVzXCI+XHJcbiAgICAgICAgICAgIDwhLS0gbWVudSBxdWUgbsOjbyB0ZW0gZmlsaG8gLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbGxSb3V0ZShtZW51LmxpbmspXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFtZW51Lm1lbnVwYWkgJiYgbWVudS5pZG1lbnVwYWkgPT0gMFwiXHJcbiAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIhZXhwYW5kTWVudSA/IG1lbnUuZGVzY3JpY2FvbWVudSA6ICcnXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwie3t2ZXJpZmljYXJQYWdpbmFTZWxlY2lvbmFkYShtZW51LmxpbmspfX0gbWVudS1vcHRpb24gZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbm8tdW5kZXJsaW5lIHt7IWV4cGFuZE1lbnUgPyAnanVzdGlmeS1jb250ZW50LWNlbnRlcicgOiAnJ319IGN1cnNvci1wb2ludGVyIGJvcmRlci1yb3VuZCB0ZXh0LTcwMCBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZVwiXHJcbiAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLW1lbnUge3tleHBhbmRNZW51ID8gJ21sLTEgbXItMicgOiAnJ319XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5pY29uZSAmJiBtZW51Lmljb25lICE9PSAnJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgbWVudS5pY29uZSB9fVxyXG4gICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ibHVlLTkwMCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnVcIlxyXG4gICAgICAgICAgICAgID57eyBtZW51LmRlc2NyaWNhb21lbnUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPCEtLSBtZW51IGNvbSBmaWxobyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm1lbnUubWVudXBhaVwiPlxyXG4gICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICBwU3R5bGVDbGFzcz1cIkBuZXh0XCJcclxuICAgICAgICAgICAgICAgIGVudGVyQ2xhc3M9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgZW50ZXJBY3RpdmVDbGFzcz1cInNsaWRlZG93blwiXHJcbiAgICAgICAgICAgICAgICBsZWF2ZVRvQ2xhc3M9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgbGVhdmVBY3RpdmVDbGFzcz1cInNsaWRldXBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LW9wdGlvbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB7eyFleHBhbmRNZW51ID8gJ2p1c3RpZnktY29udGVudC1jZW50ZXInIDogJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJ319IGN1cnNvci1wb2ludGVyIGJvcmRlci1yb3VuZCB0ZXh0LTcwMCBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZVwiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIiFleHBhbmRNZW51ID8gbWVudS5kZXNjcmljYW9tZW51IDogJydcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFleHBhbmRNZW51ID8gZXhwYW5kTWVudSA9ICFleHBhbmRNZW51IDogJydcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaWNvbi1tZW51IHt7ZXhwYW5kTWVudSA/ICdtbC0xIG1yLTInIDogJyd9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51Lmljb25lICYmIG1lbnUuaWNvbmUgIT09ICcnXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG1lbnUuaWNvbmUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1iYXNlIHRleHQtYmx1ZS05MDAgZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgID57eyBtZW51LmRlc2NyaWNhb21lbnUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkgcGktY2hldnJvbi1kb3duIHRleHQtYmx1ZS05MDAgbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudVwiXHJcbiAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLSBmaWxob3MgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LW5vbmUgcHktMCBwbC0zIHByLTAgbS0wIGhpZGRlbiBvdmVyZmxvdy15LWhpZGRlbiB0cmFuc2l0aW9uLWFsbCB0cmFuc2l0aW9uLWR1cmF0aW9uLTQwMCB0cmFuc2l0aW9uLWVhc2UtaW4tb3V0XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICA8bGkgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IGZpbGhvIG9mIHJldG9ybmFyTWVudUZpbGhvcyhtZW51Lmlkc2lzdGVtYSwgbWVudS5pZG1lbnUpXHJcbiAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbGxSb3V0ZShmaWxoby5saW5rKVwiXHJcbiAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwie3t2ZXJpZmljYXJQYWdpbmFTZWxlY2lvbmFkYShmaWxoby5saW5rKX19IG1lbnUtb3B0aW9uIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlciBib3JkZXItcm91bmQgdGV4dC03MDAgaG92ZXI6YmctZ3JlZW4tNjAwIHRyYW5zaXRpb24tZHVyYXRpb24tMTUwIHRyYW5zaXRpb24tY29sb3JzIHAtcmlwcGxlIHAtMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwaSBwaS1jaGFydC1saW5lIG1yLTIgbWwtMSBhZGp1c3QtaWNvbi1tZW51XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsaG8uaWNvbmUgJiYgZmlsaG8uaWNvbmUgIT09ICcnXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYmFzZSB0ZXh0LWJsdWUtOTAwIG1sLTRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJleHBhbmRNZW51XCJcclxuICAgICAgICAgICAgICA+e3sgZmlsaG8uZGVzY3JpY2FvbWVudSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXNpZGViYXI+XHJcblxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwidy1hdXRvIGgtc2NyZWVuIHBhZ2UtY29udGVudCBvdmVyZmxvdy15LWhpZGRlblwiXHJcbiAgaWQ9XCJwYWdlLWNvbnRlbnRcIlxyXG4+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtLTNcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJicmVhZENydW1ic1wiPlxyXG4gICAgICA8cCBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWJsdWUtOTAwIGJyZWFkY3J1bWItdGl0bGVcIj57eyByZXRvcm5hclRpdHVsb0JyZWFkQ3J1bWJzKGJyZWFkQ3J1bWJJdGVtc1ticmVhZENydW1iSXRlbXMubGVuZ3RoIC1cclxuICAgICAgICAgMV0ubGFiZWwpfX08L3A+XHJcbiAgICAgIDxwLWJyZWFkY3J1bWJcclxuICAgICAgICAqbmdJZj1cIndpZHRoQ2FyZCA+IDQwMFwiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cImJvcmRlci1ub25lIHAtMCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBoLTJyZW0gIWltcG9ydGFudDtcIlxyXG4gICAgICAgIFttb2RlbF09XCJicmVhZENydW1iSXRlbXNcIlxyXG4gICAgICAgIFtzdHlsZV09XCJ7YmFja2dyb3VuZENvbG9yOiAnI2Q0ZDNkMyd9XCJcclxuICAgICAgICAob25JdGVtQ2xpY2spPVwiY2FsbFJvdXRlKCRldmVudC5pdGVtLnJvdXRlckxpbmssIHRydWUpXCJcclxuICAgICAgPjwvcC1icmVhZGNydW1iPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFicmVhZENydW1ic1wiPjwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LWF1dG8gZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBoLTJyZW0gdy0ycmVtIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIGljb24tbWVudSBwYWRkaW5nLXN0eWxlXCJcclxuICAgICAgICAoY2xpY2spPVwic2lzdGVtYXNQYW5lbC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgW3BUb29sdGlwXT1cIidTaXN0ZW1hcydcIlxyXG4gICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2xlZnQnXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgYXBwc1xyXG4gICAgICAgIDwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgaC0ycmVtIHctMnJlbSBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSBpY29uLW1lbnUgcGFkZGluZy1zdHlsZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm1ldXNEYWRvc1BhbmVsLnRvZ2dsZSgkZXZlbnQpXCJcclxuICAgICAgICBbcFRvb2x0aXBdPVwiJ01lbnUgZG8gVXN1w6FyaW8nXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgIHBlcnNvblxyXG4gICAgICAgIDwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxwLWNhcmRcclxuICAgIGNsYXNzPVwiY2FyZC1jb250YWluZXJcIlxyXG4gICAgc3R5bGVDbGFzcz1cIm0tMyBib3JkZXItbm9yb3VuZCBvdmVyZmxvdy15LWF1dG8gY2FyZC1jb250YWluZXJcIlxyXG4gICAgW3N0eWxlXT1cIntoZWlnaHQ6IGhlaWd0aENhcmQgLSBhanVzdGFySGVpZ3RoQ2FyZCgpICsgJ3B4J31cIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRhaW5lciB3LWZ1bGxcIj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLWNhcmQ+XHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcbjxwLW92ZXJsYXlQYW5lbFxyXG4gICNzaXN0ZW1hc1BhbmVsXHJcbiAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCInMzUwbXMgZWFzZS1vdXQnXCJcclxuICBbaGlkZVRyYW5zaXRpb25PcHRpb25zXT1cIicyNTBtcyBlYXNlLWluJ1wiXHJcbj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRhaW5lclwiPlxyXG5cclxuICAgIDxwIGNsYXNzPVwidGl0bGUtc3R5bGUgbXQtM1wiPlNpc3RlbWFzPC9wPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTUgbWItM1wiXHJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDEwMCU7XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBtZW51IG9mIG1lbnVDb21wbGV0b1wiXHJcbiAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgIHBSaXBwbGVcclxuICAgICAgICBjbGFzcz1cImJ0bi1zaXN0ZW1hLTIgYnRuLXNpc3RlbWEgaG92ZXItYnRuLWNvci1wYWRyYW8gcmVtb3ZlLWZvY3VzIGgtNHJlbSB3LTRyZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJkZWZpbmlyTWVudXNQb3JTaXN0ZW1hKG1lbnUuc2lzdGVtYS5pZHNpc3RlbWEpXCJcclxuICAgICAgICBbcFRvb2x0aXBdPVwibWVudS5zaXN0ZW1hLmRlc2NyaWNhb3Npc3RlbWFcIlxyXG4gICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2xlZnQnXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gPGltZ1xyXG4gICAgICAgICAgYWx0PVwibG9nb1wiXHJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiAycmVtOyBoZWlnaHQ6IDJyZW07XCJcclxuICAgICAgICAvPiAtLT5cclxuICAgICAgICB7eyBtZW51LnNpc3RlbWEubm9tZXNpc3RlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgfX1cclxuXHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuXHJcbiAgICAgIDwhLS0gPHAtYnV0dG9uIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiPlxyXG4gICAgICAgIDxpbWcgYWx0PVwibG9nb1wiIHNyYz1cImh0dHBzOi8vcHJpbWVmYWNlcy5vcmcvY2RuL3ByaW1lbmcvaW1hZ2VzL3ByaW1lbmctaWNvbi5zdmdcIiBzdHlsZT1cIndpZHRoOiAxLjVyZW1cIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMiBmb250LWJvbGRcIj5QcmltZU5HPC9zcGFuPlxyXG4gICAgPC9wLWJ1dHRvbj4gLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLW92ZXJsYXlQYW5lbD5cclxuXHJcbjxwLW92ZXJsYXlQYW5lbFxyXG4gICNtZXVzRGFkb3NQYW5lbFxyXG4gIFtzaG93VHJhbnNpdGlvbk9wdGlvbnNdPVwiJzM1MG1zIGVhc2Utb3V0J1wiXHJcbiAgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCInMjUwbXMgZWFzZS1pbidcIlxyXG4+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250YWluZXJcIj5cclxuXHJcbiAgICA8cCBjbGFzcz1cInRpdGxlLXN0eWxlIG10LTNcIj5PbMOhLCB7e25vbWVVc3VhcmlvID8gbm9tZVVzdWFyaW8uc3BsaXQoJyAnKVswXSA6ICdVc3XDoXJpbyd9fSAhPC9wPlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTUgbWItM1wiPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBpY29uPVwicGkgcGktbG9ja1wiXHJcbiAgICAgIGxhYmVsPVwiR2Vyw6puY2lhciBLZWV2b1Bhc3NcIlxyXG4gICAgICAob25DbGljayk9XCJnZXJlbmNpYXJLZWVQYXNzKCRldmVudClcIlxyXG4gICAgICBzdHlsZUNsYXNzPVwiYm9yZGVyLW5vcm91bmQgdy1mdWxsIHAtYnV0dG9uLXRleHQgdGV4dC1ibHVlLTkwMFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgID48L3AtYnV0dG9uPlxyXG4gICAgPHAtYnV0dG9uXHJcbiAgICAgIGljb249XCJwaSBwaS1zaWduLW91dFwiXHJcbiAgICAgIGxhYmVsPVwiU2FpclwiXHJcbiAgICAgIChvbkNsaWNrKT1cInNhaXIoJGV2ZW50KVwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXItbm9yb3VuZCB3LWZ1bGwgcC1idXR0b24tdGV4dCB0ZXh0LWJsdWUtOTAwXCJcclxuICAgID48L3AtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPHAtZGlhbG9nXHJcbiAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlRGlhbG9nTGljZW5jYVwiXHJcbiAgW21vZGFsXT1cInRydWVcIlxyXG4gIFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxyXG4gIGhlYWRlcj1cIlRyb2NhciBMaWNlbsOnYVwiXHJcbiAgW3N0eWxlXT1cInt3aWR0aDogJzUwdmgnIH1cIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtZW5kXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICA8cC1kcm9wZG93blxyXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cImxpY2VuY2FzT3B0aW9uc1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJsaWNlbmNhU2VsZWN0ZWRcIlxyXG4gICAgICAgIG9wdGlvbkxhYmVsPVwiZGVzY3JpY2FvXCJcclxuICAgICAgPjwvcC1kcm9wZG93bj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxrdi1idXR0b24tc3VjY2Vzc1xyXG4gICAgICBbbGFiZWxdPVwiJ1NhbHZhcidcIlxyXG4gICAgICBjbGFzcz1cIm10LTJcIlxyXG4gICAgICAob25DbGljayk9XCJzZXRMaWNlbmNhKClcIlxyXG4gICAgPjwva3YtYnV0dG9uLXN1Y2Nlc3M+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC9wLWRpYWxvZz4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszSCxPQUFPLEVBQWtCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sYUFBYTtJQWlDeEIsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFvQixHQUFzQixFQUFZLE1BQWMsRUFBVSxLQUFxQjtRQUEvRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFZLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQXJDMUYsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBa0IsRUFBRSxDQUFBO1FBSTVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTVC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Z0JBQ0csY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBaUIzQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IG1lbnVDb21wbGV0b01vZGVsIH0gZnJvbSAnLi4vYXBpL21vZGVscy9tZW51L21lbnVjb21wbGV0by5tb2RlbCc7XHJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICdwcmltZW5nL3NpZGViYXInO1xyXG5pbXBvcnQgeyBtZW51TW9kZWwgfSBmcm9tICcuLi9hcGkvbW9kZWxzL21lbnUvbWVudS5tb2RlbCc7XHJcbmltcG9ydCB7IG1hc3Rlck1vZGVsIH0gZnJvbSAnLi4vYXBpL21vZGVscy9tZW51L21hc3Rlci5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPdmVybGF5UGFuZWwgfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbWVudUNvbXBsZXRvOiBtZW51Q29tcGxldG9Nb2RlbFtdID0gW107XHJcbiAgQElucHV0KCkgbGljZW5jYXM6IG1hc3Rlck1vZGVsW10gPSBbXVxyXG4gIEBJbnB1dCgpIGxpY2VuY2FTZWxlY2lvbmFkYSE6IG1hc3Rlck1vZGVsO1xyXG4gIEBJbnB1dCgpIGxvZ29JbWFnZSE6IGFueTtcclxuICBASW5wdXQoKSBub21lVXN1YXJpbyE6IHN0cmluZztcclxuICBASW5wdXQoKSBicmVhZENydW1iczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgbGljZW5jYUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGdlcmVuY2lhcktlZVBhc3NFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNhaXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cGFuZE1lbnVFbWl0OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NpZGViYXJSZWYnKSBzaWRlYmFyUmVmITogU2lkZWJhcjtcclxuICBAVmlld0NoaWxkKCdzaXN0ZW1hc1BhbmVsJykgc2lzdGVtYXNQYW5lbCE6IE92ZXJsYXlQYW5lbDtcclxuICBAVmlld0NoaWxkKCdtZXVzRGFkb3NQYW5lbCcpIG1ldXNEYWRvc1BhbmVsITogT3ZlcmxheVBhbmVsO1xyXG5cclxuICBsaWNlbmNhc09wdGlvbnM6IHsgaWQ6IG51bWJlciwgZGVzY3JpY2FvOiBzdHJpbmcsIGNucGo6IHN0cmluZyB9W10gPSBbXVxyXG4gIGxpY2VuY2FTZWxlY3RlZCE6IHsgaWQ6IG51bWJlciwgZGVzY3JpY2FvOiBzdHJpbmcsIGNucGo6IHN0cmluZyB9O1xyXG5cclxuICBtZW51c0ZpbHRyYWRvczogbWVudUNvbXBsZXRvTW9kZWxbXSA9IFtdO1xyXG4gIG1lbnVzOiBtZW51TW9kZWxbXSA9IFtdO1xyXG5cclxuICBicmVhZENydW1iSXRlbXM6IHsgbGFiZWw6IHN0cmluZywgcm91dGVyTGluazogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICBoZWlndGhDYXJkITogbnVtYmVyO1xyXG4gIHdpZHRoQ2FyZCE6IG51bWJlcjtcclxuICBleHBhbmRNZW51OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgdmlzaWJsZURpYWxvZ0xpY2VuY2E6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLmhlaWd0aENhcmQgPSBOdW1iZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtY29udGVudCcpPy5vZmZzZXRIZWlnaHQpO1xyXG4gICAgdGhpcy53aWR0aENhcmQgPSBOdW1iZXIod2luZG93LmlubmVyV2lkdGgpIC0gKHRoaXMuZXhwYW5kTWVudSA/IDMzMyA6IDkzKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25maWd1cmFyTGljZW5jYXMoKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0V2ZW50byBkZSBuYXZlZ2HDp8OjbzonLCBldmVudCk7IFxyXG4gICAgICAgIHRoaXMuYnJlYWRDcnVtYkl0ZW1zID0gdGhpcy5nZXRCcmVhZGNydW1icyhldmVudC51cmwpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYnJlYWRDcnVtYkl0ZW1zIC0+XCIsIHRoaXMuYnJlYWRDcnVtYkl0ZW1zKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5oZWlndGhDYXJkID0gTnVtYmVyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWNvbnRlbnQnKT8ub2Zmc2V0SGVpZ2h0KTtcclxuICAgIHRoaXMud2lkdGhDYXJkID0gTnVtYmVyKHdpbmRvdy5pbm5lcldpZHRoKSAtICh0aGlzLmV4cGFuZE1lbnUgPyAzMzMgOiA5Myk7XHJcbiAgfVxyXG5cclxuICBjb25maWd1cmFyTGljZW5jYXMoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0TGljZW5jYSgpLCAxNTAwKVxyXG5cclxuICAgIHRoaXMubGljZW5jYXMuZm9yRWFjaCgoeCwgaSkgPT4ge1xyXG4gICAgICB0aGlzLmxpY2VuY2FzT3B0aW9ucy5wdXNoKHtcclxuICAgICAgICBpZDogaSxcclxuICAgICAgICBkZXNjcmljYW86IHgucmF6YW9zb2NpYWwsXHJcbiAgICAgICAgY25wajogeC5jbnBqXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIHZhciBsaWNlbmNhID0gdGhpcy5saWNlbmNhc09wdGlvbnMuZmluZCgoeCkgPT4geC5jbnBqID09IHRoaXMubGljZW5jYVNlbGVjaW9uYWRhLmNucGopO1xyXG5cclxuICAgIGlmIChsaWNlbmNhICE9IHVuZGVmaW5lZClcclxuICAgICAgdGhpcy5saWNlbmNhU2VsZWN0ZWQgPSBsaWNlbmNhO1xyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBnZXRCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGUsIHVybDogc3RyaW5nID0gJycsIGJyZWFkY3J1bWJzOiB7IGxhYmVsOiBzdHJpbmcsIHJvdXRlckxpbms6IHN0cmluZyB9W10gPSBbXSk6IHsgbGFiZWw6IHN0cmluZywgcm91dGVyTGluazogc3RyaW5nIH1bXSB7XHJcbiAgLy8gICBjb25zdCBjaGlsZHJlblJvdXRlcyA9IHJvdXRlLmNoaWxkcmVuO1xyXG4gIC8vICAgY29uc29sZS5sb2coXCJjaGlsZHJlblJvdXRlcyAtPlwiLCBjaGlsZHJlblJvdXRlcylcclxuXHJcbiAgLy8gICBpZiAoY2hpbGRyZW5Sb3V0ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgLy8gICAgIHJldHVybiBicmVhZGNydW1icztcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBmb3IgKGNvbnN0IGNoaWxkUm91dGUgb2YgY2hpbGRyZW5Sb3V0ZXMpIHtcclxuICAvLyAgICAgY29uc3Qgcm91dGVVcmwgPSBjaGlsZFJvdXRlLnNuYXBzaG90LnVybC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcclxuXHJcbiAgLy8gICAgIGlmIChyb3V0ZVVybCAhPT0gJycpIHtcclxuICAvLyAgICAgICB1cmwgKz0gYC8ke3JvdXRlVXJsfWA7XHJcbiAgLy8gICAgIH1cclxuXHJcbiAgLy8gICAgIGNvbnN0IGJyZWFkY3J1bWJMYWJlbCA9IGNoaWxkUm91dGUuc25hcHNob3QuZGF0YVsnYnJlYWRjcnVtYiddO1xyXG4gIC8vICAgICBpZiAoYnJlYWRjcnVtYkxhYmVsKSB7XHJcbiAgLy8gICAgICAgYnJlYWRjcnVtYnMucHVzaCh7IGxhYmVsOiBicmVhZGNydW1iTGFiZWwsIHJvdXRlckxpbms6IHVybCB9KTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgdGhpcy5nZXRCcmVhZGNydW1icyhjaGlsZFJvdXRlLCB1cmwsIGJyZWFkY3J1bWJzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBjb25zb2xlLmxvZyhcIkJSRUFEQ1JVTUJTIC0+XCIsIGJyZWFkY3J1bWJzKVxyXG4gIC8vICAgcmV0dXJuIGJyZWFkY3J1bWJzO1xyXG4gIC8vIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnModXJsOiBzdHJpbmcgPSAnJywgYnJlYWRjcnVtYnM6IHsgbGFiZWw6IHN0cmluZywgcm91dGVyTGluazogc3RyaW5nIH1bXSA9IFtdKTogeyBsYWJlbDogc3RyaW5nLCByb3V0ZXJMaW5rOiBzdHJpbmcgfVtdIHtcclxuXHJcbiAgICBpZiAoIXVybCB8fCB1cmwgPT09ICcvJykge1xyXG4gICAgICByZXR1cm4gYnJlYWRjcnVtYnMubGVuZ3RoID4gMCA/IGJyZWFkY3J1bWJzIDogW3sgbGFiZWw6ICdIb21lJywgcm91dGVyTGluazogJy8nIH1dO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgY29uc3Qgc2VnbWVudHMgPSB1cmwuc3BsaXQoJy8nKS5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50ICE9PSAnJyk7IFxyXG4gIFxyXG4gICAgbGV0IGN1cnJlbnRVcmwgPSAnJztcclxuICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xyXG4gICAgICBjdXJyZW50VXJsICs9IGAvJHtzZWdtZW50fWA7XHJcbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goeyBsYWJlbDogc2VnbWVudCwgcm91dGVyTGluazogY3VycmVudFVybCB9KTtcclxuICAgIH1cclxuICBcclxuICAgIGlmIChicmVhZGNydW1icy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGJyZWFkY3J1bWJzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsU2VnbWVudHMgPSBpdGVtLmxhYmVsLnNwbGl0KCctJyk7XHJcbiAgICAgICAgbGFiZWxTZWdtZW50cyA9IGxhYmVsU2VnbWVudHMubWFwKChzZWdtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8gc2VnbWVudC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHNlZ21lbnQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSA6IHNlZ21lbnQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXRlbS5sYWJlbCA9IGxhYmVsU2VnbWVudHMuam9pbignICcpOyBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnJlYWRjcnVtYnM7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNhbGxiYWNrKGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnNpZGViYXJSZWYuY2xvc2UoZSk7XHJcbiAgfVxyXG5cclxuICBNYXNjYXJhTm9tZUxpY2VuY2Eobm9tZUxpY2VuY2E6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAobm9tZUxpY2VuY2EpIHtcclxuICAgICAgaWYgKG5vbWVMaWNlbmNhLmxlbmd0aCA+IDI0KVxyXG4gICAgICAgIHJldHVybiBub21lTGljZW5jYS5zdWJzdHJpbmcoMCwgMjQpICsgJy4uLic7XHJcbiAgICAgIGVsc2UgcmV0dXJuIG5vbWVMaWNlbmNhO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIE1hc2NhcmFDbnBqKGNucGo6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjbnBqTGltcG8gPSBjbnBqLnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcblxyXG4gICAgcmV0dXJuIGNucGpMaW1wby5yZXBsYWNlKFxyXG4gICAgICAvXihcXGR7Mn0pKFxcZHszfSkoXFxkezN9KShcXGR7NH0pKFxcZHsyfSkkLyxcclxuICAgICAgJyQxLiQyLiQzLyQ0LSQ1J1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlZmluaXJNZW51c1BvclNpc3RlbWEoaWRzaXN0ZW1hOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWVudXMgPVxyXG4gICAgICB0aGlzLm1lbnVDb21wbGV0by5maW5kKCh4KSA9PiB4LnNpc3RlbWEuaWRzaXN0ZW1hID09IGlkc2lzdGVtYSk/Lm1lbnVzIHx8XHJcbiAgICAgIFtdO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKHRoaXMubWVudXMsICdtZW51cycpXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLm1lbnVDb21wbGV0bywgJ21lbnVDb21wbGV0bycpXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLm1lbnVzWzBdLm1lbnVwYWksICdtZW51cGFpJylcclxuXHJcbiAgICBpZiAodGhpcy5tZW51c1swXS5tZW51cGFpKSB7XHJcbiAgICAgIHZhciBmaWxob3MgPSB0aGlzLnJldG9ybmFyTWVudUZpbGhvcyh0aGlzLm1lbnVzWzBdLmlkc2lzdGVtYSwgdGhpcy5tZW51c1swXS5pZG1lbnUpO1xyXG4gICAgICBpZiAoZmlsaG9zICE9IHVuZGVmaW5lZClcclxuICAgICAgICB0aGlzLmNhbGxSb3V0ZShmaWxob3NbMF0ubGluaywgdHJ1ZSlcclxuICAgIH0gZWxzZSB0aGlzLmNhbGxSb3V0ZSh0aGlzLm1lbnVzWzBdLmxpbmssIHRydWUpXHJcblxyXG4gICAgdGhpcy5zaXN0ZW1hc1BhbmVsLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIHJldG9ybmFyTWVudUZpbGhvcyhpZHNpc3RlbWE6IG51bWJlciwgaWRtZW51OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLm1lbnVDb21wbGV0b1xyXG4gICAgICAuZmluZCgoeCkgPT4geC5zaXN0ZW1hLmlkc2lzdGVtYSA9PSBpZHNpc3RlbWEpXHJcbiAgICAgID8ubWVudXMuZmlsdGVyKCh4KSA9PiB4LmlkbWVudXBhaSA9PSBpZG1lbnUpO1xyXG4gIH1cclxuXHJcbiAgY2FsbFJvdXRlKGU6IGFueSwgZXhwYW5kPzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFleHBhbmQpXHJcbiAgICAgICF0aGlzLmV4cGFuZE1lbnUgPyB0aGlzLmV4cGFuZE1lbnUgPSAhdGhpcy5leHBhbmRNZW51IDogJydcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoZSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICB0aGlzLmV4cGFuZE1lbnUgPSAhdGhpcy5leHBhbmRNZW51O1xyXG4gICAgdGhpcy5leHBhbmRNZW51RXZlbnQoKVxyXG4gIH1cclxuXHJcbiAgc2V0TGljZW5jYSgpIHtcclxuICAgIHZhciBsaWNlbmNhID0gdGhpcy5saWNlbmNhcy5maW5kKChsaWNlbmNhKSA9PiBsaWNlbmNhLmNucGogPT0gdGhpcy5saWNlbmNhU2VsZWN0ZWQuY25waik7XHJcbiAgICBpZiAobGljZW5jYSkgdGhpcy5saWNlbmNhU2VsZWNpb25hZGEgPSBsaWNlbmNhO1xyXG5cclxuICAgIHRoaXMudmlzaWJsZURpYWxvZ0xpY2VuY2EgPSBmYWxzZVxyXG5cclxuICAgIHRoaXMubGljZW5jYUNoYW5nZS5lbWl0KHRoaXMubGljZW5jYVNlbGVjaW9uYWRhKTtcclxuXHJcbiAgICB0aGlzLmRlZmluaXJNZW51c1BvclNpc3RlbWEodGhpcy5tZW51Q29tcGxldG9bMF0/LnNpc3RlbWEuaWRzaXN0ZW1hKVxyXG4gIH1cclxuXHJcbiAgZ2VyZW5jaWFyS2VlUGFzcyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNpc3RlbWFzUGFuZWwuaGlkZSgpO1xyXG4gICAgdGhpcy5nZXJlbmNpYXJLZWVQYXNzRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIHNhaXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaXN0ZW1hc1BhbmVsLmhpZGUoKTtcclxuICAgIHRoaXMuc2FpckV2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBleHBhbmRNZW51RXZlbnQoKSB7XHJcbiAgICB0aGlzLmV4cGFuZE1lbnVFbWl0LmVtaXQodGhpcy5leHBhbmRNZW51KTtcclxuICB9XHJcblxyXG4gIGFqdXN0YXJIZWlndGhDYXJkKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy53aWR0aENhcmQgPiA0MDApIHtcclxuICAgICAgaWYgKHRoaXMuYnJlYWRDcnVtYnMpIHJldHVybiAxMDVcclxuICAgICAgZWxzZSByZXR1cm4gODVcclxuICAgIH0gZWxzZSByZXR1cm4gODNcclxuICB9XHJcblxyXG4gIHZlcmlmaWNhclBhZ2luYVNlbGVjaW9uYWRhKGxpbms6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKGxpbmspKSByZXR1cm4gJ2JnLWdyZWVuLTYwMCdcclxuICAgIGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gcmV0b3JuYXJUaXR1bG9CcmVhZENydW1icyhsYWJlbDogYW55KTogc3RyaW5nIHtcclxuICAvLyAgIGlmIChsYWJlbClcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYnJlYWRDcnVtYkl0ZW1zW3RoaXMuYnJlYWRDcnVtYkl0ZW1zLmxlbmd0aCAtIDFdPy5sYWJlbFxyXG4gIC8vICAgZWxzZSByZXR1cm4gJyc7XHJcbiAgLy8gfVxyXG5cclxuICByZXRvcm5hclRpdHVsb0JyZWFkQ3J1bWJzKHN0cjogc3RyaW5nKSB7XHJcblxyXG4gICAgaWYgKHN0ci5pbmNsdWRlcygnLScpKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCctJywgJyAnKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcHJpbWVpcmFMZXRyYSA9IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuXHJcbiAgICBzdHIuc2xpY2UoMSk7XHJcblxyXG4gICAgcmV0dXJuIHByaW1laXJhTGV0cmE7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG92ZXJmbG93LXktaGlkZGVuIHctIGZ1bGwtY29udGFpbmVyXCI+XHJcblxyXG4gIDxkaXYgW3N0eWxlXT1cInttaW5XaWR0aDogZXhwYW5kTWVudSA/ICczMDBweCcgOiAnNjBweCd9XCI+PC9kaXY+XHJcblxyXG4gIDxwLXNpZGViYXJcclxuICAgICNzaWRlYmFyUmVmXHJcbiAgICBbdmlzaWJsZV09XCJ0cnVlXCJcclxuICAgIFtzaG93Q2xvc2VJY29uXT1cImZhbHNlXCJcclxuICAgIFttb2RhbF09XCJmYWxzZVwiXHJcbiAgICBbc3R5bGVdPVwie3dpZHRoOiBleHBhbmRNZW51ID8gJzMwMHB4JyA6ICc2MHB4J31cIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkbGVzc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiB7e2V4cGFuZE1lbnUgPyAnbXgtMScgOiAnbXgtMSd9fVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0yIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtc2hyaW5rLTAgbXgtMlwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIHt7ZXhwYW5kTWVudSA/ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbicgOiAnanVzdGlmeS1jb250ZW50LWNlbnRlcid9fSBweS0zXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudVwiXHJcbiAgICAgICAgICAgICAgYWx0PVwiQ2FyZFwiXHJcbiAgICAgICAgICAgICAgW3NyY109XCJsb2dvSW1hZ2VcIlxyXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTUwXCJcclxuICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcGFkZGluZy1zdHlsZSBoLTJyZW0gdy0ycmVtIGhvdmVyOmJnLWdyZWVuLTYwMCBob3Zlcjp0ZXh0LXdoaXRlIGljb24tbWVudVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImV4cGFuZE1lbnUgPyAnT2N1dGFyIE1lbnUnIDogJ0V4cGFuZGlyIE1lbnUnXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidyaWdodCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICBtZW51XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7e2V4cGFuZE1lbnUgPyAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nIDogJ2p1c3RpZnktY29udGVudC1jZW50ZXInfX1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ2aXNpYmxlRGlhbG9nTGljZW5jYSA9ICF2aXNpYmxlRGlhbG9nTGljZW5jYVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgbXItMlwiXHJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwidGhpcy5saWNlbmNhU2VsZWNpb25hZGEucmF6YW9zb2NpYWxcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7e01hc2NhcmFOb21lTGljZW5jYSh0aGlzLmxpY2VuY2FTZWxlY2lvbmFkYS5yYXphb3NvY2lhbCl9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gbXQtMVwiPnt7TWFzY2FyYUNucGoodGhpcy5saWNlbmNhU2VsZWNpb25hZGEuY25wail9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHBhZGRpbmctc3R5bGUgaC0ycmVtIHctMnJlbSBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSBpY29uLW1lbnVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ2aXNpYmxlRGlhbG9nTGljZW5jYSA9ICF2aXNpYmxlRGlhbG9nTGljZW5jYVwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBbHRlcmFyIExpY2Vuw6dhJ1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAgc3luY19hbHRcclxuICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHAtZGl2aWRlciB0eXBlPVwic29saWRcIj48L3AtZGl2aWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LW5vbmUgbS0wICBjYXJkLWNvbnRhaW5lciB7e2V4cGFuZE1lbnUgPyAnbXgtMScgOiAnJ319XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIihoZWlndGhDYXJkIC0gMjIwKSArICdweCdcIlxyXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvO1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBtZW51cyAtLT5cclxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51c1wiPlxyXG4gICAgICAgICAgICA8IS0tIG1lbnUgcXVlIG7Do28gdGVtIGZpbGhvIC0tPlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjYWxsUm91dGUobWVudS5saW5rKVwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhbWVudS5tZW51cGFpICYmIG1lbnUuaWRtZW51cGFpID09IDBcIlxyXG4gICAgICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiIWV4cGFuZE1lbnUgPyBtZW51LmRlc2NyaWNhb21lbnUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInt7dmVyaWZpY2FyUGFnaW5hU2VsZWNpb25hZGEobWVudS5saW5rKX19IG1lbnUtb3B0aW9uIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vLXVuZGVybGluZSB7eyFleHBhbmRNZW51ID8gJ2p1c3RpZnktY29udGVudC1jZW50ZXInIDogJyd9fSBjdXJzb3ItcG9pbnRlciBib3JkZXItcm91bmQgdGV4dC03MDAgaG92ZXI6YmctZ3JlZW4tNjAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1kdXJhdGlvbi0xNTAgdHJhbnNpdGlvbi1jb2xvcnMgcC1yaXBwbGVcIlxyXG4gICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaWNvbi1tZW51IHt7ZXhwYW5kTWVudSA/ICdtbC0xIG1yLTInIDogJyd9fVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUuaWNvbmUgJiYgbWVudS5pY29uZSAhPT0gJydcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG1lbnUuaWNvbmUgfX1cclxuICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1iYXNlIHRleHQtYmx1ZS05MDAgZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJleHBhbmRNZW51XCJcclxuICAgICAgICAgICAgICA+e3sgbWVudS5kZXNjcmljYW9tZW51IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwhLS0gbWVudSBjb20gZmlsaG8gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZW51Lm1lbnVwYWlcIj5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgcFN0eWxlQ2xhc3M9XCJAbmV4dFwiXHJcbiAgICAgICAgICAgICAgICBlbnRlckNsYXNzPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgIGVudGVyQWN0aXZlQ2xhc3M9XCJzbGlkZWRvd25cIlxyXG4gICAgICAgICAgICAgICAgbGVhdmVUb0NsYXNzPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgIGxlYXZlQWN0aXZlQ2xhc3M9XCJzbGlkZXVwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1vcHRpb24gZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIge3shZXhwYW5kTWVudSA/ICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2Vlbid9fSBjdXJzb3ItcG9pbnRlciBib3JkZXItcm91bmQgdGV4dC03MDAgaG92ZXI6YmctZ3JlZW4tNjAwIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1kdXJhdGlvbi0xNTAgdHJhbnNpdGlvbi1jb2xvcnMgcC1yaXBwbGVcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIhZXhwYW5kTWVudSA/IG1lbnUuZGVzY3JpY2FvbWVudSA6ICcnXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCIhZXhwYW5kTWVudSA/IGV4cGFuZE1lbnUgPSAhZXhwYW5kTWVudSA6ICcnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbWVudSB7e2V4cGFuZE1lbnUgPyAnbWwtMSBtci0yJyA6ICcnfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWVudS5pY29uZSAmJiBtZW51Lmljb25lICE9PSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBtZW51Lmljb25lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYmFzZSB0ZXh0LWJsdWUtOTAwIGZvbnQtbWVkaXVtXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgbWVudS5kZXNjcmljYW9tZW51IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBpIHBpLWNoZXZyb24tZG93biB0ZXh0LWJsdWUtOTAwIG1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnVcIlxyXG4gICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gZmlsaG9zIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ub25lIHB5LTAgcGwtMyBwci0wIG0tMCBoaWRkZW4gb3ZlcmZsb3cteS1oaWRkZW4gdHJhbnNpdGlvbi1hbGwgdHJhbnNpdGlvbi1kdXJhdGlvbi00MDAgdHJhbnNpdGlvbi1lYXNlLWluLW91dFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPGxpICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgIGxldCBmaWxobyBvZiByZXRvcm5hck1lbnVGaWxob3MobWVudS5pZHNpc3RlbWEsIG1lbnUuaWRtZW51KVxyXG4gICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAqbmdJZj1cImV4cGFuZE1lbnVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjYWxsUm91dGUoZmlsaG8ubGluaylcIlxyXG4gICAgICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgICAgICBjbGFzcz1cInt7dmVyaWZpY2FyUGFnaW5hU2VsZWNpb25hZGEoZmlsaG8ubGluayl9fSBtZW51LW9wdGlvbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBuby11bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLXJvdW5kIHRleHQtNzAwIGhvdmVyOmJnLWdyZWVuLTYwMCB0cmFuc2l0aW9uLWR1cmF0aW9uLTE1MCB0cmFuc2l0aW9uLWNvbG9ycyBwLXJpcHBsZSBwLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGkgcGktY2hhcnQtbGluZSBtci0yIG1sLTEgYWRqdXN0LWljb24tbWVudVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZpbGhvLmljb25lICYmIGZpbGhvLmljb25lICE9PSAnJ1wiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJhc2UgdGV4dC1ibHVlLTkwMCBtbC00XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kTWVudVwiXHJcbiAgICAgICAgICAgICAgPnt7IGZpbGhvLmRlc2NyaWNhb21lbnUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwvcC1zaWRlYmFyPlxyXG5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cInctYXV0byBoLXNjcmVlbiBwYWdlLWNvbnRlbnQgb3ZlcmZsb3cteS1oaWRkZW5cIlxyXG4gIGlkPVwicGFnZS1jb250ZW50XCJcclxuPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbS0zXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYnJlYWRDcnVtYnNcIj5cclxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ibHVlLTkwMCBicmVhZGNydW1iLXRpdGxlXCI+e3sgcmV0b3JuYXJUaXR1bG9CcmVhZENydW1icyhicmVhZENydW1iSXRlbXNbYnJlYWRDcnVtYkl0ZW1zLmxlbmd0aCAtXHJcbiAgICAgICAgIDFdLmxhYmVsKX19PC9wPlxyXG4gICAgICA8cC1icmVhZGNydW1iXHJcbiAgICAgICAgKm5nSWY9XCJ3aWR0aENhcmQgPiA0MDBcIlxyXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJib3JkZXItbm9uZSBwLTAgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaC0ycmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICBbbW9kZWxdPVwiYnJlYWRDcnVtYkl0ZW1zXCJcclxuICAgICAgICBbc3R5bGVdPVwie2JhY2tncm91bmRDb2xvcjogJyNkNGQzZDMnfVwiXHJcbiAgICAgICAgKG9uSXRlbUNsaWNrKT1cImNhbGxSb3V0ZSgkZXZlbnQuaXRlbS5yb3V0ZXJMaW5rLCB0cnVlKVwiXHJcbiAgICAgID48L3AtYnJlYWRjcnVtYj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhYnJlYWRDcnVtYnNcIj48L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidy1hdXRvIGZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgaC0ycmVtIHctMnJlbSBob3ZlcjpiZy1ncmVlbi02MDAgaG92ZXI6dGV4dC13aGl0ZSBpY29uLW1lbnUgcGFkZGluZy1zdHlsZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNpc3RlbWFzUGFuZWwudG9nZ2xlKCRldmVudClcIlxyXG4gICAgICAgIFtwVG9vbHRpcF09XCInU2lzdGVtYXMnXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgIGFwcHNcclxuICAgICAgICA8L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IGgtMnJlbSB3LTJyZW0gaG92ZXI6YmctZ3JlZW4tNjAwIGhvdmVyOnRleHQtd2hpdGUgaWNvbi1tZW51IHBhZGRpbmctc3R5bGVcIlxyXG4gICAgICAgIChjbGljayk9XCJtZXVzRGFkb3NQYW5lbC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgW3BUb29sdGlwXT1cIidNZW51IGRvIFVzdcOhcmlvJ1wiXHJcbiAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICBwZXJzb25cclxuICAgICAgICA8L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8cC1jYXJkXHJcbiAgICBjbGFzcz1cImNhcmQtY29udGFpbmVyXCJcclxuICAgIHN0eWxlQ2xhc3M9XCJtLTMgYm9yZGVyLW5vcm91bmQgb3ZlcmZsb3cteS1hdXRvIGNhcmQtY29udGFpbmVyXCJcclxuICAgIFtzdHlsZV09XCJ7aGVpZ2h0OiBoZWlndGhDYXJkIC0gYWp1c3RhckhlaWd0aENhcmQoKSArICdweCd9XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250YWluZXIgdy1mdWxsXCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC1jYXJkPlxyXG5cclxuPC9kaXY+XHJcblxyXG5cclxuPC9kaXY+XHJcblxyXG48cC1vdmVybGF5UGFuZWxcclxuICAjc2lzdGVtYXNQYW5lbFxyXG4gIFtzaG93VHJhbnNpdGlvbk9wdGlvbnNdPVwiJzM1MG1zIGVhc2Utb3V0J1wiXHJcbiAgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCInMjUwbXMgZWFzZS1pbidcIlxyXG4+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250YWluZXJcIj5cclxuXHJcbiAgICA8cCBjbGFzcz1cInRpdGxlLXN0eWxlIG10LTNcIj5TaXN0ZW1hczwvcD5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01IG1iLTNcIlxyXG4gICAgICBzdHlsZT1cIndpZHRoOiAyNTBweDsgaGVpZ2h0OiAxMDAlO1wiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51Q29tcGxldG9cIlxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgY2xhc3M9XCJidG4tc2lzdGVtYS0yIGJ0bi1zaXN0ZW1hIGhvdmVyLWJ0bi1jb3ItcGFkcmFvIHJlbW92ZS1mb2N1cyBoLTRyZW0gdy00cmVtXCJcclxuICAgICAgICAoY2xpY2spPVwiZGVmaW5pck1lbnVzUG9yU2lzdGVtYShtZW51LnNpc3RlbWEuaWRzaXN0ZW1hKVwiXHJcbiAgICAgICAgW3BUb29sdGlwXT1cIm1lbnUuc2lzdGVtYS5kZXNjcmljYW9zaXN0ZW1hXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgID5cclxuICAgICAgICA8IS0tIDxpbWdcclxuICAgICAgICAgIGFsdD1cImxvZ29cIlxyXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMnJlbTsgaGVpZ2h0OiAycmVtO1wiXHJcbiAgICAgICAgLz4gLS0+XHJcbiAgICAgICAge3sgbWVudS5zaXN0ZW1hLm5vbWVzaXN0ZW1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpIH19XHJcblxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcblxyXG4gICAgICA8IS0tIDxwLWJ1dHRvbiBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIj5cclxuICAgICAgICA8aW1nIGFsdD1cImxvZ29cIiBzcmM9XCJodHRwczovL3ByaW1lZmFjZXMub3JnL2Nkbi9wcmltZW5nL2ltYWdlcy9wcmltZW5nLWljb24uc3ZnXCIgc3R5bGU9XCJ3aWR0aDogMS41cmVtXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTIgZm9udC1ib2xkXCI+UHJpbWVORzwvc3Bhbj5cclxuICAgIDwvcC1idXR0b24+IC0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvcC1vdmVybGF5UGFuZWw+XHJcblxyXG48cC1vdmVybGF5UGFuZWxcclxuICAjbWV1c0RhZG9zUGFuZWxcclxuICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIiczNTBtcyBlYXNlLW91dCdcIlxyXG4gIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiJzI1MG1zIGVhc2UtaW4nXCJcclxuPlxyXG5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGFpbmVyXCI+XHJcblxyXG4gICAgPHAgY2xhc3M9XCJ0aXRsZS1zdHlsZSBtdC0zXCI+T2zDoSwge3tub21lVXN1YXJpbyA/IG5vbWVVc3VhcmlvLnNwbGl0KCcgJylbMF0gOiAnVXN1w6FyaW8nfX0gITwvcD5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC01IG1iLTNcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8cC1idXR0b25cclxuICAgICAgaWNvbj1cInBpIHBpLWxvY2tcIlxyXG4gICAgICBsYWJlbD1cIkdlcsOqbmNpYXIgS2Vldm9QYXNzXCJcclxuICAgICAgKG9uQ2xpY2spPVwiZ2VyZW5jaWFyS2VlUGFzcygkZXZlbnQpXCJcclxuICAgICAgc3R5bGVDbGFzcz1cImJvcmRlci1ub3JvdW5kIHctZnVsbCBwLWJ1dHRvbi10ZXh0IHRleHQtYmx1ZS05MDBcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICA+PC9wLWJ1dHRvbj5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBpY29uPVwicGkgcGktc2lnbi1vdXRcIlxyXG4gICAgICBsYWJlbD1cIlNhaXJcIlxyXG4gICAgICAob25DbGljayk9XCJzYWlyKCRldmVudClcIlxyXG4gICAgICBzdHlsZUNsYXNzPVwiYm9yZGVyLW5vcm91bmQgdy1mdWxsIHAtYnV0dG9uLXRleHQgdGV4dC1ibHVlLTkwMFwiXHJcbiAgICA+PC9wLWJ1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9wLW92ZXJsYXlQYW5lbD5cclxuXHJcbjxwLWRpYWxvZ1xyXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZURpYWxvZ0xpY2VuY2FcIlxyXG4gIFttb2RhbF09XCJ0cnVlXCJcclxuICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcclxuICBoZWFkZXI9XCJUcm9jYXIgTGljZW7Dp2FcIlxyXG4gIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZoJyB9XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgPHAtZHJvcGRvd25cclxuICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCJcclxuICAgICAgICBbb3B0aW9uc109XCJsaWNlbmNhc09wdGlvbnNcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwibGljZW5jYVNlbGVjdGVkXCJcclxuICAgICAgICBvcHRpb25MYWJlbD1cImRlc2NyaWNhb1wiXHJcbiAgICAgID48L3AtZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8a3YtYnV0dG9uLXN1Y2Nlc3NcclxuICAgICAgW2xhYmVsXT1cIidTYWx2YXInXCJcclxuICAgICAgY2xhc3M9XCJtdC0yXCJcclxuICAgICAgKG9uQ2xpY2spPVwic2V0TGljZW5jYSgpXCJcclxuICAgID48L2t2LWJ1dHRvbi1zdWNjZXNzPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbjwvcC1kaWFsb2c+XHJcblxyXG48cC1jb25maXJtRGlhbG9nXHJcbiAgW3N0eWxlXT1cInt3aWR0aDogJzQwdncnfVwiXHJcbiAgW2Jhc2VaSW5kZXhdPVwiMTAwMDBcIlxyXG4gIHJlamVjdEJ1dHRvblN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCI+XHJcbjwvcC1jb25maXJtRGlhbG9nPlxyXG5cclxuPHAtdG9hc3Q+PC9wLXRvYXN0PiJdfQ==