@bizdoc/core 1.14.0-next.11 → 1.14.0-next.14

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.
Files changed (45) hide show
  1. package/assets/themes/dark.min.css +78 -1
  2. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +2 -2
  3. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +120 -59
  4. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +52 -34
  5. package/esm2020/lib/admin/form/form.service.mjs +20 -3
  6. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  7. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +4 -2
  8. package/esm2020/lib/chat/conversation.component.mjs +2 -2
  9. package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
  10. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +3 -3
  11. package/esm2020/lib/core/slots/router.service.mjs +1 -4
  12. package/esm2020/lib/core/translate.service.mjs +5 -5
  13. package/esm2020/lib/core/translations.mjs +9 -3
  14. package/esm2020/lib/cube/accum/accum.component.mjs +1 -1
  15. package/esm2020/lib/cube/chart/chart.component.mjs +1 -1
  16. package/esm2020/lib/cube/matrix/table.component.mjs +3 -3
  17. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -4
  18. package/esm2020/lib/cube/pivot/pivot.component.mjs +15 -19
  19. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
  20. package/esm2020/lib/modules/chart.module.mjs +12 -10
  21. package/esm2020/lib/modules/dayjs.module.mjs +2 -2
  22. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  23. package/esm2020/lib/modules/pivot.module.mjs +3 -2
  24. package/esm2020/lib/modules/spreadsheet.module.mjs +5 -3
  25. package/esm2020/lib/modules/texteditor.module.mjs +4 -4
  26. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +2 -3
  27. package/esm2020/lib/views/cube/cube-base.mjs +2 -2
  28. package/esm2020/lib/views/cube/parallel.component.mjs +3 -2
  29. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  30. package/esm2020/public-api.mjs +1 -1
  31. package/fesm2015/bizdoc-core.mjs +218 -130
  32. package/fesm2015/bizdoc-core.mjs.map +1 -1
  33. package/fesm2020/bizdoc-core.mjs +218 -130
  34. package/fesm2020/bizdoc-core.mjs.map +1 -1
  35. package/lib/admin/document-trace/document-trace.component.d.ts +33 -18
  36. package/lib/admin/document-trace/trace-element.component.d.ts +22 -8
  37. package/lib/admin/form/form.service.d.ts +19 -2
  38. package/lib/admin/form/workflow/workflow.component.d.ts +2 -1
  39. package/lib/core/slots/router.service.d.ts +2 -1
  40. package/lib/core/translations.d.ts +6 -0
  41. package/lib/modules/chart.module.d.ts +1 -1
  42. package/lib/views/cube/cube-base.d.ts +1 -1
  43. package/lib/views/cube/sum.component.d.ts +1 -1
  44. package/package.json +1 -1
  45. package/public-api.d.ts +1 -1
@@ -338,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
338
338
  }], palettes: [{
339
339
  type: Input
340
340
  }] } });
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUFFLEtBQUssRUFBdUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBZSxXQUFXLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQU0xRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVUvQyxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLGtCQUFrQjtJQXNHN0IsaUJBQWlCO0lBQ2pCLFlBQW9CLFFBQXFCLEVBQy9CLEdBQWtCLEVBQVUsVUFBNEIsRUFBVSxRQUF3QixFQUFVLFdBQXVCO1FBRGpILGFBQVEsR0FBUixRQUFRLENBQWE7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTVEbEgsWUFBTyxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFD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SztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFYSxPQUFPO3NCQUF6QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDYSxhQUFhO3NCQUEvQixNQUFNO2dCQUdFLEVBQUU7c0JBRFYsV0FBVztnQkFRRCxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0LCBTZXJpZXNNb2RlbCwgQ3Jvc3NoYWlyU2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1jaGFydHMnO1xyXG5pbXBvcnQgeyBBeGlzTW9kZWwsIENoYXJ0QXJlYU1vZGVsLCBUb29sdGlwU2V0dGluZ3NNb2RlbCwgTGVnZW5kU2V0dGluZ3NNb2RlbCwgSVBvaW50RXZlbnRBcmdzLCBJVG9vbHRpcFJlbmRlckV2ZW50QXJncyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEludGVybmF0aW9uYWxpemF0aW9uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWJhc2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgV29ya2Jvb2sgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZXhjZWwtZXhwb3J0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvd29ya3NoZWV0JztcclxuaW1wb3J0IHsgUm93IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvcm93JztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydC9zcmMvY29sdW1uJztcclxuaW1wb3J0IHsgRk9OVF9GQU1JTFkgfSBmcm9tICcuLi8uLi9jb3JlL2NvbG9ycyc7XHJcbmltcG9ydCB7IEFYRVNfQ09ERV9ESVZJREVSLCBBWEVTX0xBQkVMX0RJVklERVIsIEN1YmVTZXJ2aWNlLCBlcnJSZXNvdXJjZSwgU2VyaWVzIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIENoYXJ0VHlwZSwgQ3ViZSwgWUF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU2NvcGVUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtY2hhcnQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2N1YmUtdmlldydcclxuICB9XHJcbn0pXHJcbi8qKiBjaGFydCBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQ3ViZUNoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ3ViZVZpZXdlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICB3aWR0aDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICBjdWJlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3hBeGlzOiBzdHJpbmdbXTtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHB1YmxpYyBnZXQgeEF4aXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3hBeGlzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgeEF4aXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLl94QXhpcyA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXJpZXM/OiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IHNlcmllcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VyaWVzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2VyaWVzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9zZXJpZXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICAgIGVsc2UgdGhpcy5fc2VyaWVzID0gbnVsbDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaW5kaWNlcz86IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBnZXQgaW5kaWNlcygpOiBzdHJpbmdbXSB8IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5kaWNlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGluZGljZXModmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuX2luZGljZXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICAgIGVsc2UgdGhpcy5faW5kaWNlcyA9IG51bGw7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVycz86IEF4ZXNNYXA7XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2hhcnRUeXBlPzogQ2hhcnRUeXBlO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5kaWNlc0NoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxuICBASW5wdXQoKSBzY29wZTogU2NvcGVUeXBlO1xyXG4gIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBleHBsb3JlOiBFdmVudEVtaXR0ZXI8QXhpc0NsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQEhvc3RCaW5kaW5nKClcclxuICByZWFkb25seSBpZCA9IGBjdWJlLWNoYXJ0LSR7Q3ViZUNoYXJ0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgY2hhcnQ6IENoYXJ0O1xyXG4gIHByaXZhdGUgX3BhbGV0dGVzID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gIHB1YmxpYyBnZXQgcGFsZXR0ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFsZXR0ZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYWxldHRlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fcGFsZXR0ZXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgcmVhZG9ubHkgZW5hYmxlUnRsID0gdGhpcy5fc2Vzc2lvbi5pbnZlcnNlO1xyXG4gIHJlYWRvbmx5IGxlZ2VuZFNldHRpbmdzOiBMZWdlbmRTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgaXNJbnZlcnNlZDogdGhpcy5lbmFibGVSdGwsXHJcbiAgICBtYXJnaW46IHtcclxuICAgICAgdG9wOiA1XHJcbiAgICB9LFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBwcmltYXJ5WEF4aXM6IEF4aXNNb2RlbCA9IHtcclxuICAgIHZhbHVlVHlwZTogJ0NhdGVnb3J5JyxcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IHByaW1hcnlZQXhpczogQXhpc01vZGVsID0ge1xyXG4gICAgbGFiZWxTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgY2hhcnRBcmVhOiBDaGFydEFyZWFNb2RlbCA9IHtcclxuICAgIGJvcmRlcjoge1xyXG4gICAgICB3aWR0aDogMFxyXG4gICAgfSxcclxuICAgIG9wYWNpdHk6IDBcclxuICB9O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgZW5hYmxlQW5pbWF0aW9uOiBmYWxzZSxcclxuICAgIGJvcmRlcjogeyB3aWR0aDogMCB9LFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBjcm9zc2hhaXI6IENyb3NzaGFpclNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBlbmFibGU6IGZhbHNlLFxyXG4gICAgbGluZVR5cGU6ICdWZXJ0aWNhbCdcclxuICB9O1xyXG4gIHRoZW1lOiAnTWF0ZXJpYWwnIHwgJ01hdGVyaWFsRGFyaycgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgcHJpdmF0ZSBfZGF0YTogU2VyaWVzW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAvKiogY2hhcnQgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgICAgICAgdGhpcy5wYWxldHRlcyA9IF9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSkgfHwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5jdXJyZW5jeUNvZGUgPSB0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZTtcclxuICAgIGlmICh0aGlzLmNoYXJ0VHlwZSA9PT0gJ0xpbmUnIHx8IHRoaXMuY2hhcnRUeXBlID09PSAnU3BsaW5lJylcclxuICAgICAgdGhpcy5jcm9zc2hhaXIuZW5hYmxlID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl9jdWJlLnlBeGlzKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fY3ViZS55QXhpcy50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnTnVtYmVyJzpcclxuICAgICAgICAgIHRoaXMucHJpbWFyeVlBeGlzLmxhYmVsRm9ybWF0ID0gJ24wJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ05vbmUnOlxyXG4gICAgICAgICAgdGhpcy5wcmltYXJ5WUF4aXMubWF4aW11bUxhYmVscyA9IDA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5wcmltYXJ5WUF4aXMubGFiZWxGb3JtYXQgPSAnYzAnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wcmltYXJ5WUF4aXMudGl0bGUgPSB0aGlzLl9jdWJlLnlBeGlzLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnByaW1hcnlZQXhpcy5sYWJlbEZvcm1hdCA9IHRoaXMuY3VycmVuY3lDb2RlID8gJ2MwJyA6ICduMCc7XHJcbiAgICB0aGlzLmV4ZWN1dGUoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSAmJiAhY2hhbmdlc1snZmlsdGVycyddLmZpcnN0Q2hhbmdlKVxyXG4gICAgICB0aGlzLmV4ZWN1dGUoKTtcclxuICAgIGVsc2VcclxuICAgICAgaWYgKGNoYW5nZXNbJ2hlaWdodCddKVxyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIHRoaXMuY2hhcnQgJiYgdGhpcy5jaGFydC5jaGFydFJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZSgpIHtcclxuICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLCB0aGlzLnhBeGlzLCB7XHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcywgc2VyaWVzOiB0aGlzLnNlcmllcyxcclxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgfSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9kYXRhID0gcjtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9LCAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoZXJyUmVzb3VyY2UoZSkpO1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgY29uc3Qgc2VyaWVzID0gdGhpcy5fZGF0YS5tYXAocyA9PiB7XHJcbiAgICAgIGlmIChzLmluZGV4KVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB4TmFtZTogJ25hbWUnLFxyXG4gICAgICAgICAgeU5hbWU6ICd5JyxcclxuICAgICAgICAgIG5hbWU6IHMudGl0bGUsXHJcbiAgICAgICAgICBkYXRhU291cmNlOiBzLnBvaW50cyxcclxuICAgICAgICAgIHR5cGU6IHRoaXMuaW5kaWNlc0NoYXJ0VHlwZSB8fCAnU3BsaW5lJyxcclxuICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgZmlsbDogdGhpcy5fc2Vzc2lvbi5nZXRQcmltZXJ5KCksXHJcbiAgICAgICAgICBzdGFja2luZ0dyb3VwOiAnaW5kZXgnLFxyXG4gICAgICAgICAgZW1wdHlQb2ludFNldHRpbmdzOiB7IG1vZGU6ICdaZXJvJyB9LFxyXG4gICAgICAgICAgbWFya2VyOiB7XHJcbiAgICAgICAgICAgIHZpc2libGU6ICF0aGlzLmluZGljZXNDaGFydFR5cGUgfHwgdGhpcy5pbmRpY2VzQ2hhcnRUeXBlID09PSAnTGluZScgfHwgdGhpcy5pbmRpY2VzQ2hhcnRUeXBlID09PSAnU3BsaW5lJyxcclxuICAgICAgICAgICAgc2hhcGU6ICdEaWFtb25kJyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMCxcclxuICAgICAgICAgICAgd2lkdGg6IDEwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBhcyBTZXJpZXNNb2RlbDtcclxuICAgICAgZWxzZSByZXR1cm4ge1xyXG4gICAgICAgIHhOYW1lOiAnbmFtZScsXHJcbiAgICAgICAgeU5hbWU6ICd5JyxcclxuICAgICAgICBuYW1lOiBzLnRpdGxlLFxyXG4gICAgICAgIGRhdGFTb3VyY2U6IHMucG9pbnRzLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlIHx8ICdDb2x1bW4nLFxyXG4gICAgICAgIG1hcmtlcjoge1xyXG4gICAgICAgICAgdmlzaWJsZTogIXRoaXMuY2hhcnRUeXBlIHx8IHRoaXMuY2hhcnRUeXBlID09PSAnTGluZScgfHwgdGhpcy5jaGFydFR5cGUgPT09ICdTcGxpbmUnLFxyXG4gICAgICAgICAgaGVpZ2h0OiAxMCxcclxuICAgICAgICAgIHdpZHRoOiAxMFxyXG4gICAgICAgIH1cclxuICAgICAgfSBhcyBTZXJpZXNNb2RlbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5sZWdlbmRTZXR0aW5ncy52aXNpYmxlID0gc2VyaWVzLmxlbmd0aCA+IDE7XHJcbiAgICB0aGlzLmNoYXJ0ICYmIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xyXG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh7XHJcbiAgICAgIGxlZ2VuZFNldHRpbmdzOiB0aGlzLmxlZ2VuZFNldHRpbmdzLFxyXG4gICAgICBwcmltYXJ5WEF4aXM6IHRoaXMucHJpbWFyeVhBeGlzLFxyXG4gICAgICBwcmltYXJ5WUF4aXM6IHRoaXMucHJpbWFyeVlBeGlzLFxyXG4gICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxyXG4gICAgICB1c2VHcm91cGluZ1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgcGFsZXR0ZXM6IHRoaXMucGFsZXR0ZXMsXHJcbiAgICAgIGN1cnJlbmN5Q29kZTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIHRvb2x0aXBSZW5kZXI6IHRoaXMudG9vbHRpcFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICBzZWxlY3Rpb25Nb2RlOiAnUG9pbnQnLFxyXG4gICAgICBwb2ludENsaWNrOiB0aGlzLnBvaW50Q2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgdG9vbHRpcDogdGhpcy50b29sdGlwLFxyXG4gICAgICBjaGFydEFyZWE6IHRoaXMuY2hhcnRBcmVhLFxyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IGFzIHN0cmluZyxcclxuICAgICAgY3Jvc3NoYWlyOiB0aGlzLmNyb3NzaGFpcixcclxuICAgICAgZW5hYmxlUnRsOiB0aGlzLmVuYWJsZVJ0bCxcclxuICAgICAgc2VyaWVzLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgdG9vbHRpcFJlbmRlcihlOiBJVG9vbHRpcFJlbmRlckV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgZS50ZXh0ID0gdGhpcy5faW50bC5mb3JtYXROdW1iZXIoZS5wb2ludC55IGFzIG51bWJlciwge1xyXG4gICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIGZvcm1hdDogdGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0c1xyXG4gICAgfSk7XHJcbiAgfTtcclxuICBwb2ludENsaWNrKGV2dDogSVBvaW50RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCBheGVzOiB7IFtheGlzOiBzdHJpbmddOiBhbnkgfSA9IHt9LFxyXG4gICAgICBzZXJpZSA9IHRoaXMuX2RhdGFbZXZ0LnNlcmllc0luZGV4XSxcclxuICAgICAgeyBpbmRleCwgbmFtZSwgcG9pbnRzIH0gPSBzZXJpZTtcclxuICAgIGlmICh0aGlzLnNlcmllcyAmJiB0aGlzLnNlcmllcy5sZW5ndGggJiYgIWluZGV4KVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VyaWVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGF4ZXNbdGhpcy5zZXJpZXNbaV1dID0gbmFtZS5zcGxpdChBWEVTX0NPREVfRElWSURFUilbaV07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMueEF4aXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgeCA9IHBvaW50c1tldnQucG9pbnRJbmRleF0ueDtcclxuICAgICAgYXhlc1t0aGlzLnhBeGlzW2ldXSA9IHguc3BsaXQoQVhFU19DT0RFX0RJVklERVIpW2ldO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICB9XHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdFxyXG4gICAgICBudW1iZXJGb3JtYXQgPSB0aGlzLl9zZXJ2aWNlLm51bWJlckZvcm1hdCxcclxuICAgICAgd29ya3NoZWV0cyA9IFtdO1xyXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBjb25zdCBjZWxscyA9IHRoaXMuX3hBeGlzLm1hcCgoeCwgaSkgPT4gKHtcclxuICAgICAgICBpbmRleDogaSArIDEsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuX2N1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB4KS50aXRsZSxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgYm9sZDogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSBhcyBDZWxsKSk7XHJcbiAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgIGluZGV4OiB0aGlzLl94QXhpcy5sZW5ndGggKyAxLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWYWx1ZScpLFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBib2xkOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGFzIENlbGwpO1xyXG4gICAgICBjb25zdCByb3dzID0gW3tcclxuICAgICAgICBpbmRleDogMSxcclxuICAgICAgICBjZWxsc1xyXG4gICAgICB9IGFzIFJvd107XHJcbiAgICAgIHMucG9pbnRzLmZvckVhY2goKHAsIGkpID0+IHtcclxuICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuX3hBeGlzLm1hcCgoXywgaikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaW5kZXg6IGogKyAxLFxyXG4gICAgICAgICAgICB2YWx1ZTogcC5uYW1lLnNwbGl0KEFYRVNfTEFCRUxfRElWSURFUilbal1cclxuICAgICAgICAgIH0gYXMgQ2VsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgICAgaW5kZXg6IHRoaXMuX3hBeGlzLmxlbmd0aCArIDEsXHJcbiAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICBudW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgIGhBbGlnbjogJ3JpZ2h0J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHZhbHVlOiBwLnlcclxuICAgICAgICB9IGFzIENlbGwpO1xyXG4gICAgICAgIHJvd3MucHVzaChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaW5kZXg6IGkgKyAyLFxyXG4gICAgICAgICAgICBjZWxsc1xyXG4gICAgICAgICAgfSBhcyBSb3cpXHJcbiAgICAgIH0pXHJcbiAgICAgIHdvcmtzaGVldHMucHVzaChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBlbmFibGVSdGw6IHRoaXMuZW5hYmxlUnRsLFxyXG4gICAgICAgICAgbmFtZTogcy50aXRsZSxcclxuICAgICAgICAgIGNvbHVtbnM6IFsuLi50aGlzLl94QXhpcy5tYXAoKF8sIGkpID0+ICh7IGluZGV4OiBpICsgMSwgd2lkdGg6IDI1MCB9IGFzIENvbHVtbikpXHJcbiAgICAgICAgICAgICwgeyBpbmRleDogdGhpcy5feEF4aXMubGVuZ3RoICsgMSB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHJvd3NcclxuICAgICAgICB9IGFzIFdvcmtzaGVldFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBib29rID0gbmV3IFdvcmtib29rKFxyXG4gICAgICB7XHJcbiAgICAgICAgd29ya3NoZWV0cyxcclxuICAgICAgfSxcclxuICAgICAgJ3hsc3gnXHJcbiAgICApO1xyXG4gICAgYm9vay5zYXZlKGAke3RpdGxlfS54bHN4YCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFydCAmJiB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgQ2VsbCB7IH1cclxuIl19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUFFLEtBQUssRUFBdUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBZSxXQUFXLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQU0xRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVUvQyxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLGtCQUFrQjtJQXNHN0IsaUJBQWlCO0lBQ2pCLFlBQW9CLFFBQXFCLEVBQy9CLEdBQWtCLEVBQVUsVUFBNEIsRUFBVSxRQUF3QixFQUFVLFdBQXVCO1FBRGpILGFBQVEsR0FBUixRQUFRLENBQWE7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQTVEbEgsWUFBTyxHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFD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SztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFYSxPQUFPO3NCQUF6QixNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDYSxhQUFhO3NCQUEvQixNQUFNO2dCQUdFLEVBQUU7c0JBRFYsV0FBVztnQkFRRCxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0LCBTZXJpZXNNb2RlbCwgQ3Jvc3NoYWlyU2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1jaGFydHMnO1xyXG5pbXBvcnQgeyBBeGlzTW9kZWwsIENoYXJ0QXJlYU1vZGVsLCBUb29sdGlwU2V0dGluZ3NNb2RlbCwgTGVnZW5kU2V0dGluZ3NNb2RlbCwgSVBvaW50RXZlbnRBcmdzLCBJVG9vbHRpcFJlbmRlckV2ZW50QXJncyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvbiB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1iYXNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFdvcmtib29rIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWV4Y2VsLWV4cG9ydCc7XHJcbmltcG9ydCB7IFdvcmtzaGVldCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL3dvcmtzaGVldCc7XHJcbmltcG9ydCB7IFJvdyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL3Jvdyc7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQvc3JjL2NvbHVtbic7XHJcbmltcG9ydCB7IEZPTlRfRkFNSUxZIH0gZnJvbSAnLi4vLi4vY29yZS9jb2xvcnMnO1xyXG5pbXBvcnQgeyBBWEVTX0NPREVfRElWSURFUiwgQVhFU19MQUJFTF9ESVZJREVSLCBDdWJlU2VydmljZSwgZXJyUmVzb3VyY2UsIFNlcmllcyB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4aXNDbGlja0V2ZW50LCBDdWJlVmlld2VyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDaGFydFR5cGUsIEN1YmUsIFlBeGlzIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFNjb3BlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdjdWJlLXZpZXcnXHJcbiAgfVxyXG59KVxyXG4vKiogY2hhcnQgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEN1YmVDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEN1YmVWaWV3ZXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpXHJcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZSE6IHN0cmluZztcclxuICBwcml2YXRlIF94QXhpczogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICBwdWJsaWMgZ2V0IHhBeGlzKCk6IHN0cmluZ1tdIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl94QXhpcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHhBeGlzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgdGhpcy5feEF4aXMgPSBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2VyaWVzPzogc3RyaW5nW107XHJcbiAgcHVibGljIGdldCBzZXJpZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlcmllcyh2YWx1ZTogc3RyaW5nW10gfCBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5fc2VyaWVzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgICBlbHNlIHRoaXMuX3NlcmllcyA9IG51bGw7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXTtcclxuICBwdWJsaWMgZ2V0IGluZGljZXMoKTogc3RyaW5nW10gfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGljZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmRpY2VzKHZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB0aGlzLl9pbmRpY2VzID0gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XHJcbiAgICBlbHNlIHRoaXMuX2luZGljZXMgPSBudWxsO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgeUF4aXM/OiBZQXhpcztcclxuICBASW5wdXQoKVxyXG4gIGNoYXJ0VHlwZT86IENoYXJ0VHlwZTtcclxuICBASW5wdXQoKVxyXG4gIGluZGljZXNDaGFydFR5cGU/OiBDaGFydFR5cGU7XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZXhwbG9yZTogRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBsb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIEBIb3N0QmluZGluZygpXHJcbiAgcmVhZG9ubHkgaWQgPSBgY3ViZS1jaGFydC0ke0N1YmVDaGFydENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG4gIGNoYXJ0OiBDaGFydDtcclxuICBwcml2YXRlIF9wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICBwdWJsaWMgZ2V0IHBhbGV0dGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhbGV0dGVzO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcGFsZXR0ZXModmFsdWUpIHtcclxuICAgIHRoaXMuX3BhbGV0dGVzID0gdmFsdWU7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGVuYWJsZVJ0bCA9IHRoaXMuX3Nlc3Npb24uaW52ZXJzZTtcclxuICByZWFkb25seSBsZWdlbmRTZXR0aW5nczogTGVnZW5kU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGlzSW52ZXJzZWQ6IHRoaXMuZW5hYmxlUnRsLFxyXG4gICAgbWFyZ2luOiB7XHJcbiAgICAgIHRvcDogNVxyXG4gICAgfSxcclxuICAgIHRleHRTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVhBeGlzOiBBeGlzTW9kZWwgPSB7XHJcbiAgICB2YWx1ZVR5cGU6ICdDYXRlZ29yeScsXHJcbiAgICBsYWJlbFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfTtcclxuICByZWFkb25seSBwcmltYXJ5WUF4aXM6IEF4aXNNb2RlbCA9IHtcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICAgIH1cclxuICB9O1xyXG4gIHJlYWRvbmx5IGNoYXJ0QXJlYTogQ2hhcnRBcmVhTW9kZWwgPSB7XHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgd2lkdGg6IDBcclxuICAgIH0sXHJcbiAgICBvcGFjaXR5OiAwXHJcbiAgfTtcclxuICByZWFkb25seSB0b29sdGlwOiBUb29sdGlwU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZTogdHJ1ZSxcclxuICAgIGVuYWJsZUFuaW1hdGlvbjogZmFsc2UsXHJcbiAgICBib3JkZXI6IHsgd2lkdGg6IDAgfSxcclxuICAgIHRleHRTdHlsZToge1xyXG4gICAgICBmb250RmFtaWx5OiBGT05UX0ZBTUlMWVxyXG4gICAgfVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgY3Jvc3NoYWlyOiBDcm9zc2hhaXJTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICAgIGxpbmVUeXBlOiAnVmVydGljYWwnXHJcbiAgfTtcclxuICB0aGVtZTogJ01hdGVyaWFsJyB8ICdNYXRlcmlhbERhcmsnID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gIHByaXZhdGUgX2RhdGE6IFNlcmllc1tdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGw6IEludGVybmF0aW9uYWxpemF0aW9uID0gbmV3IEludGVybmF0aW9uYWxpemF0aW9uKCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIGNoYXJ0IGN0b3IgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLCBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBfc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuXHJcbiAgICAgIHN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICAgIHRoaXMucGFsZXR0ZXMgPSBfc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuY3VycmVuY3lDb2RlID0gdGhpcy5fY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICBpZiAodGhpcy5jaGFydFR5cGUgPT09ICdMaW5lJyB8fCB0aGlzLmNoYXJ0VHlwZSA9PT0gJ1NwbGluZScpXHJcbiAgICAgIHRoaXMuY3Jvc3NoYWlyLmVuYWJsZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5fY3ViZS55QXhpcykge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuX2N1YmUueUF4aXMudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ051bWJlcic6XHJcbiAgICAgICAgICB0aGlzLnByaW1hcnlZQXhpcy5sYWJlbEZvcm1hdCA9ICduMCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdOb25lJzpcclxuICAgICAgICAgIHRoaXMucHJpbWFyeVlBeGlzLm1heGltdW1MYWJlbHMgPSAwO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHRoaXMucHJpbWFyeVlBeGlzLmxhYmVsRm9ybWF0ID0gJ2MwJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucHJpbWFyeVlBeGlzLnRpdGxlID0gdGhpcy5fY3ViZS55QXhpcy50aXRsZTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5wcmltYXJ5WUF4aXMubGFiZWxGb3JtYXQgPSB0aGlzLmN1cnJlbmN5Q29kZSA/ICdjMCcgOiAnbjAnO1xyXG4gICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10gJiYgIWNoYW5nZXNbJ2ZpbHRlcnMnXS5maXJzdENoYW5nZSlcclxuICAgICAgdGhpcy5leGVjdXRlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSlcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICB0aGlzLmNoYXJ0ICYmIHRoaXMuY2hhcnQuY2hhcnRSZXNpemUoKTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFuZ2UuZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uuc2VyaWVzKHRoaXMuY3ViZSwgdGhpcy54QXhpcywge1xyXG4gICAgICBpbmRpY2VzOiB0aGlzLmluZGljZXMsIHNlcmllczogdGhpcy5zZXJpZXMsXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVcclxuICAgIH0pLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5fZGF0YSA9IHI7XHJcbiAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgfSwgKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLmVycm9yKGVyclJlc291cmNlKGUpKTtcclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIGNvbnN0IHNlcmllcyA9IHRoaXMuX2RhdGEubWFwKHMgPT4ge1xyXG4gICAgICBpZiAocy5pbmRleClcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgeE5hbWU6ICduYW1lJyxcclxuICAgICAgICAgIHlOYW1lOiAneScsXHJcbiAgICAgICAgICBuYW1lOiBzLnRpdGxlLFxyXG4gICAgICAgICAgZGF0YVNvdXJjZTogcy5wb2ludHMsXHJcbiAgICAgICAgICB0eXBlOiB0aGlzLmluZGljZXNDaGFydFR5cGUgfHwgJ1NwbGluZScsXHJcbiAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgIGZpbGw6IHRoaXMuX3Nlc3Npb24uZ2V0UHJpbWVyeSgpLFxyXG4gICAgICAgICAgc3RhY2tpbmdHcm91cDogJ2luZGV4JyxcclxuICAgICAgICAgIGVtcHR5UG9pbnRTZXR0aW5nczogeyBtb2RlOiAnWmVybycgfSxcclxuICAgICAgICAgIG1hcmtlcjoge1xyXG4gICAgICAgICAgICB2aXNpYmxlOiAhdGhpcy5pbmRpY2VzQ2hhcnRUeXBlIHx8IHRoaXMuaW5kaWNlc0NoYXJ0VHlwZSA9PT0gJ0xpbmUnIHx8IHRoaXMuaW5kaWNlc0NoYXJ0VHlwZSA9PT0gJ1NwbGluZScsXHJcbiAgICAgICAgICAgIHNoYXBlOiAnRGlhbW9uZCcsXHJcbiAgICAgICAgICAgIGhlaWdodDogMTAsXHJcbiAgICAgICAgICAgIHdpZHRoOiAxMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gYXMgU2VyaWVzTW9kZWw7XHJcbiAgICAgIGVsc2UgcmV0dXJuIHtcclxuICAgICAgICB4TmFtZTogJ25hbWUnLFxyXG4gICAgICAgIHlOYW1lOiAneScsXHJcbiAgICAgICAgbmFtZTogcy50aXRsZSxcclxuICAgICAgICBkYXRhU291cmNlOiBzLnBvaW50cyxcclxuICAgICAgICB0eXBlOiB0aGlzLmNoYXJ0VHlwZSB8fCAnQ29sdW1uJyxcclxuICAgICAgICBtYXJrZXI6IHtcclxuICAgICAgICAgIHZpc2libGU6ICF0aGlzLmNoYXJ0VHlwZSB8fCB0aGlzLmNoYXJ0VHlwZSA9PT0gJ0xpbmUnIHx8IHRoaXMuY2hhcnRUeXBlID09PSAnU3BsaW5lJyxcclxuICAgICAgICAgIGhlaWdodDogMTAsXHJcbiAgICAgICAgICB3aWR0aDogMTBcclxuICAgICAgICB9XHJcbiAgICAgIH0gYXMgU2VyaWVzTW9kZWw7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGVnZW5kU2V0dGluZ3MudmlzaWJsZSA9IHNlcmllcy5sZW5ndGggPiAxO1xyXG4gICAgdGhpcy5jaGFydCAmJiB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQoe1xyXG4gICAgICBsZWdlbmRTZXR0aW5nczogdGhpcy5sZWdlbmRTZXR0aW5ncyxcclxuICAgICAgcHJpbWFyeVhBeGlzOiB0aGlzLnByaW1hcnlYQXhpcyxcclxuICAgICAgcHJpbWFyeVlBeGlzOiB0aGlzLnByaW1hcnlZQXhpcyxcclxuICAgICAgZW5hYmxlRXhwb3J0OiB0cnVlLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICB0aGVtZTogdGhpcy50aGVtZSxcclxuICAgICAgdXNlR3JvdXBpbmdTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIHBhbGV0dGVzOiB0aGlzLnBhbGV0dGVzLFxyXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICB0b29sdGlwUmVuZGVyOiB0aGlzLnRvb2x0aXBSZW5kZXIuYmluZCh0aGlzKSxcclxuICAgICAgc2VsZWN0aW9uTW9kZTogJ1BvaW50JyxcclxuICAgICAgcG9pbnRDbGljazogdGhpcy5wb2ludENsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcclxuICAgICAgY2hhcnRBcmVhOiB0aGlzLmNoYXJ0QXJlYSxcclxuICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCBhcyBzdHJpbmcsXHJcbiAgICAgIGNyb3NzaGFpcjogdGhpcy5jcm9zc2hhaXIsXHJcbiAgICAgIGVuYWJsZVJ0bDogdGhpcy5lbmFibGVSdGwsXHJcbiAgICAgIHNlcmllcyxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIHRvb2x0aXBSZW5kZXIoZTogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGUudGV4dCA9IHRoaXMuX2ludGwuZm9ybWF0TnVtYmVyKGUucG9pbnQueSBhcyBudW1iZXIsIHtcclxuICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICBmb3JtYXQ6IHRoaXMuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nLFxyXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHNcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgcG9pbnRDbGljayhldnQ6IElQb2ludEV2ZW50QXJncykge1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogYW55IH0gPSB7fSxcclxuICAgICAgc2VyaWUgPSB0aGlzLl9kYXRhW2V2dC5zZXJpZXNJbmRleF0sXHJcbiAgICAgIHsgaW5kZXgsIG5hbWUsIHBvaW50cyB9ID0gc2VyaWU7XHJcbiAgICBpZiAodGhpcy5zZXJpZXMgJiYgdGhpcy5zZXJpZXMubGVuZ3RoICYmICFpbmRleClcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlcmllcy5sZW5ndGg7IGkrKylcclxuICAgICAgICBheGVzW3RoaXMuc2VyaWVzW2ldXSA9IG5hbWUuc3BsaXQoQVhFU19DT0RFX0RJVklERVIpW2ldO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnhBeGlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHggPSBwb2ludHNbZXZ0LnBvaW50SW5kZXhdLng7XHJcbiAgICAgIGF4ZXNbdGhpcy54QXhpc1tpXV0gPSB4LnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXggfSk7XHJcbiAgfVxyXG4gIGV4cG9ydFRvRXhjZWwodGl0bGU6IHN0cmluZykge1xyXG4gICAgY29uc3RcclxuICAgICAgbnVtYmVyRm9ybWF0ID0gdGhpcy5fc2VydmljZS5udW1iZXJGb3JtYXQsXHJcbiAgICAgIHdvcmtzaGVldHMgPSBbXTtcclxuICAgIHRoaXMuX2RhdGEuZm9yRWFjaChzID0+IHtcclxuICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLl94QXhpcy5tYXAoKHgsIGkpID0+ICh7XHJcbiAgICAgICAgaW5kZXg6IGkgKyAxLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0geCkudGl0bGUsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIGJvbGQ6IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH0gYXMgQ2VsbCkpO1xyXG4gICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICBpbmRleDogdGhpcy5feEF4aXMubGVuZ3RoICsgMSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnVmFsdWUnKSxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgYm9sZDogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSBhcyBDZWxsKTtcclxuICAgICAgY29uc3Qgcm93cyA9IFt7XHJcbiAgICAgICAgaW5kZXg6IDEsXHJcbiAgICAgICAgY2VsbHNcclxuICAgICAgfSBhcyBSb3ddO1xyXG4gICAgICBzLnBvaW50cy5mb3JFYWNoKChwLCBpKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLl94QXhpcy5tYXAoKF8sIGopID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGluZGV4OiBqICsgMSxcclxuICAgICAgICAgICAgdmFsdWU6IHAubmFtZS5zcGxpdChBWEVTX0xBQkVMX0RJVklERVIpW2pdXHJcbiAgICAgICAgICB9IGFzIENlbGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgICAgIGluZGV4OiB0aGlzLl94QXhpcy5sZW5ndGggKyAxLFxyXG4gICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICBoQWxpZ246ICdyaWdodCdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB2YWx1ZTogcC55XHJcbiAgICAgICAgfSBhcyBDZWxsKTtcclxuICAgICAgICByb3dzLnB1c2goXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGluZGV4OiBpICsgMixcclxuICAgICAgICAgICAgY2VsbHNcclxuICAgICAgICAgIH0gYXMgUm93KVxyXG4gICAgICB9KVxyXG4gICAgICB3b3Jrc2hlZXRzLnB1c2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZW5hYmxlUnRsOiB0aGlzLmVuYWJsZVJ0bCxcclxuICAgICAgICAgIG5hbWU6IHMudGl0bGUsXHJcbiAgICAgICAgICBjb2x1bW5zOiBbLi4udGhpcy5feEF4aXMubWFwKChfLCBpKSA9PiAoeyBpbmRleDogaSArIDEsIHdpZHRoOiAyNTAgfSBhcyBDb2x1bW4pKVxyXG4gICAgICAgICAgICAsIHsgaW5kZXg6IHRoaXMuX3hBeGlzLmxlbmd0aCArIDEgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICByb3dzXHJcbiAgICAgICAgfSBhcyBXb3Jrc2hlZXRcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAge1xyXG4gICAgICAgIHdvcmtzaGVldHMsXHJcbiAgICAgIH0sXHJcbiAgICAgICd4bHN4J1xyXG4gICAgKTtcclxuICAgIGJvb2suc2F2ZShgJHt0aXRsZX0ueGxzeGApO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhcnQgJiYgdGhpcy5jaGFydC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIENlbGwgeyB9XHJcbiJdfQ==
@@ -447,10 +447,10 @@ export class CubeMatrixComponent {
447
447
  }
448
448
  }
449
449
  CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }, { token: i4.TranslateService }, { token: i5.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
450
- CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { seriesTotalLabel: "seriesTotalLabel", xAxisTotalLabel: "xAxisTotalLabel", _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _series: ["series", "_series"], _indices: ["indices", "_indices"], indexAt: "indexAt", placeAt: "placeAt", scope: "scope", sum: "sum", filters: "filters", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"_move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-header-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\"\r\n (mouseenter)=\"_move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\"\r\n [class.cube-index]=\"row.index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"_move(-2, y )\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\"\r\n (mouseenter)=\"_move(x + 1, y )\">\r\n <span *ngIf=\"data[row.key][column.key] !== '0'; else zero\" \r\n [class.explorable]=\"interactive && column.explorable !== false && row.explorable !== false\"\r\n (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"_move(-1, y )\">\r\n {{ data[row.key]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-footer-row\">\r\n <td class=\"mat-footer-cell\">{{seriesTotalLabel}}</td>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-footer-cell figure\"\r\n (mouseenter)=\"_move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-footer-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>0</ng-template>\r\n", styles: [".explorable{cursor:pointer}.cube-table{width:100%;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td,.cube-table th{padding-right:8px}\n"], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [matrixAnimation] });
450
+ CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CubeMatrixComponent, selector: "bizdoc-cube-matrix", inputs: { seriesTotalLabel: "seriesTotalLabel", xAxisTotalLabel: "xAxisTotalLabel", _cube: ["cube", "_cube"], _xAxis: ["xAxis", "_xAxis"], _series: ["series", "_series"], _indices: ["indices", "_indices"], indexAt: "indexAt", placeAt: "placeAt", scope: "scope", sum: "sum", filters: "filters", loading: "loading", interactive: "interactive" }, outputs: { onExplore: "explore", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "tableElement", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"_move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-header-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\"\r\n (mouseenter)=\"_move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\"\r\n [class.cube-index]=\"row.index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"_move(-2, y )\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\"\r\n (mouseenter)=\"_move(x + 1, y )\">\r\n <span *ngIf=\"data[row.key][column.key] !== '0'; else zero\" \r\n [class.explorable]=\"interactive && column.explorable !== false && row.explorable !== false\"\r\n (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"_move(-1, y )\">\r\n {{ data[row.key]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-footer-row\">\r\n <td class=\"mat-footer-cell\">{{seriesTotalLabel}}</td>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-footer-cell figure\"\r\n (mouseenter)=\"_move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-footer-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>0</ng-template>\r\n", styles: [".explorable{cursor:pointer}.cube-table{width:100%;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td,.cube-table th{padding-right:8px}.cube-table tfoot tr td{border-bottom:none}\n"], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [matrixAnimation] });
451
451
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CubeMatrixComponent, decorators: [{
452
452
  type: Component,
453
- args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"_move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-header-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\"\r\n (mouseenter)=\"_move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\"\r\n [class.cube-index]=\"row.index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"_move(-2, y )\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\"\r\n (mouseenter)=\"_move(x + 1, y )\">\r\n <span *ngIf=\"data[row.key][column.key] !== '0'; else zero\" \r\n [class.explorable]=\"interactive && column.explorable !== false && row.explorable !== false\"\r\n (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"_move(-1, y )\">\r\n {{ data[row.key]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-footer-row\">\r\n <td class=\"mat-footer-cell\">{{seriesTotalLabel}}</td>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-footer-cell figure\"\r\n (mouseenter)=\"_move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-footer-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>0</ng-template>\r\n", styles: [".explorable{cursor:pointer}.cube-table{width:100%;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td,.cube-table th{padding-right:8px}\n"] }]
453
+ args: [{ selector: 'bizdoc-cube-matrix', animations: [matrixAnimation], template: "<table #table class=\"mat-table cube-table\" (mouseleave)=\"_move(-1, -1)\" *ngIf=\"data\">\r\n <thead>\r\n <!-- headers -->\r\n <tr class=\"mat-header-row\">\r\n <th></th>\r\n <th *ngFor=\"let column of columns; let x = index\"\r\n (mouseenter)=\"_move(x + 1, -2)\" class=\"mat-header-cell\">\r\n {{ column.value }}\r\n </th>\r\n <th class=\"mat-header-cell\">{{xAxisTotalLabel}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- rows -->\r\n <tr *ngFor=\"let row of rows; let y = index\" class=\"mat-row\"\r\n [class.cube-index]=\"row.index\">\r\n <th class=\"mat-header-cell\" (mouseenter)=\"_move(-2, y )\">{{ row.value }}</th>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-cell figure\"\r\n (mouseenter)=\"_move(x + 1, y )\">\r\n <span *ngIf=\"data[row.key][column.key] !== '0'; else zero\" \r\n [class.explorable]=\"interactive && column.explorable !== false && row.explorable !== false\"\r\n (click)=\"explore(column, row)\">\r\n {{ data[row.key][column.key] }}\r\n </span>\r\n </td>\r\n <th class=\"mat-cell figure\" (mouseenter)=\"_move(-1, y )\">\r\n {{ data[row.key]['_total'] }}\r\n </th>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <!-- footer -->\r\n <tr class=\"mat-footer-row\">\r\n <td class=\"mat-footer-cell\">{{seriesTotalLabel}}</td>\r\n <td *ngFor=\"let column of columns; let x = index\" class=\"mat-footer-cell figure\"\r\n (mouseenter)=\"_move(x + 1, -2)\"\r\n [class.negative-figure]=\"totals[column.key].startsWith('-')\">\r\n <ng-container *ngIf=\"totals[column.key] !== undefined\">\r\n {{ totals[column.key] }}\r\n </ng-container>\r\n </td>\r\n <th class=\"mat-footer-cell figure\">{{ totals['_grand'] }}</th>\r\n </tr>\r\n </tfoot>\r\n</table>\r\n<ng-template #zero>0</ng-template>\r\n", styles: [".explorable{cursor:pointer}.cube-table{width:100%;table-layout:fixed}.cube-table th{cursor:default}.cube-table th.figure{font-weight:500}.cube-table td,.cube-table th{padding-right:8px}.cube-table tfoot tr td{border-bottom:none}\n"] }]
454
454
  }], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.CubeService }, { type: i3.SessionService }, { type: i4.TranslateService }, { type: i5.DatasourceService }]; }, propDecorators: { tableElement: [{
455
455
  type: ViewChild,
456
456
  args: ['table']
@@ -490,4 +490,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
490
490
  }], loadingChange: [{
491
491
  type: Output
492
492
  }] } });
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUEwQixNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFlLFdBQVcsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBS25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFLeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFFL0MsMkJBQTJCO0FBTzNCLE1BQU0sT0FBTyxtQkFBbUI7SUFtRTlCLFlBQ1UsR0FBa0IsRUFDbEIsUUFBcUIsRUFDckIsUUFBd0IsRUFDeEIsVUFBNEIsRUFDNUIsR0FBc0I7UUFKdEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNs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Z0JBQ1QsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ1MsS0FBSztzQkFBbkIsS0FBSzt1QkFBQyxNQUFNO2dCQUNHLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFDRyxPQUFPO3NCQUF2QixLQUFLO3VCQUFDLFFBQVE7Z0JBRWYsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBR2hCLE9BQU87c0JBRE4sS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVPLEdBQUc7c0JBQWYsS0FBSztnQkEwQkcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFLSyxXQUFXO3NCQURyQixLQUFLO2dCQUlzQixTQUFTO3NCQUFwQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ0UsYUFBYTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgZm9ybWF0UGVyY2VudCwgZm9ybWF0TnVtYmVyLCBnZXRDdXJyZW5jeVN5bWJvbCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBXb3JrYm9vaywgV29ya3NoZWV0LCBSb3csIENvbHVtbiB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBlcnJSZXNvdXJjZSwgU2VyaWVzIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEF4aXNUeXBlLCBDdWJlLCBDdWJlQXhpcywgQ3ViZUluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBtYXRyaXhBbmltYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4aXNDbGlja0V2ZW50IH0gZnJvbSAnLi4vZGVjbGFyYXRpb25zJztcclxuXHJcbmNvbnN0IExPQURJTkdfREVMQVkgPSAyMDAsIFNVTV9QUkVGSVggPSAnX3N1bSc7XHJcblxyXG4vKiogY3ViZSBtYXRyaXggY29tcG9uZW50Ki9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1tYXRyaXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbWF0cml4QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcmVhZG9ubHkgUFJFQ0lTSU9OID0gdGhpcy5fc2VydmljZS5kaWdpdHNJbmZvO1xyXG4gIHJlYWRvbmx5IExBTkdVQUdFID0gdGhpcy5fc2Vzc2lvbi5sYW5ndWFnZTtcclxuICBDVVJSRU5DWTogc3RyaW5nO1xyXG4gIFNZTUJPTDogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUYWJsZUVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgpIHNlcmllc1RvdGFsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB4QXhpc1RvdGFsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoJ2N1YmUnKSBfY3ViZT86IHN0cmluZztcclxuICBASW5wdXQoJ3hBeGlzJykgX3hBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VyaWVzJykgX3NlcmllcyE6IHN0cmluZztcclxuICBASW5wdXQoJ2luZGljZXMnKVxyXG4gIF9pbmRpY2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBpbmRleEF0OiAnc2VyaWVzJyB8ICd4QXhpcycgPSAnc2VyaWVzJztcclxuICBASW5wdXQoKVxyXG4gIHBsYWNlQXQ6ICdsZWFkaW5nJyB8ICd0cmFpbGluZycgPSAnbGVhZGluZyc7XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBwcml2YXRlIF9zdW06IFN1bVNldHRpbmdzW107XHJcbiAgQElucHV0KCkgc2V0IHN1bSh2YWw6IFN1bVNldHRpbmdzIHwgU3VtU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHZhbCkgdGhpcy5fc3VtID0gKGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdKS5cclxuICAgICAgbWFwKHN1bSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlO1xyXG4gICAgICAgIGlmIChzdW0udmFsdWUpXHJcbiAgICAgICAgICB2YWx1ZSA9IHN1bS52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIGVsc2UgaWYgKHN1bS5jYWxjdWxhdGUpXHJcbiAgICAgICAgICBzd2l0Y2ggKHN1bS5jYWxjdWxhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gJ00nICsgKCcwJyArIChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpKS5zbGljZSgtMik7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5jZWlsKChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSAvIDMpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FjY3VtdWxhdGUnOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gJ34nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5zdW0sXHJcbiAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBASW5wdXQoKSBmaWx0ZXJzOiBBeGVzTWFwO1xyXG4gIHByaXZhdGUgX2ludGVyYWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gIHB1YmxpYyBnZXQgaW50ZXJhY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3RpdmU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbnRlcmFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faW50ZXJhY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuICBAT3V0cHV0KCdleHBsb3JlJykgcmVhZG9ubHkgb25FeHBsb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxBeGlzQ2xpY2tFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICByb3dzOiBIZWFkZXJJbmZvW107XHJcbiAgY29sdW1uczogSGVhZGVySW5mb1tdO1xyXG4gIGluZGljZXM6IEN1YmVJbmRleFtdID0gW107XHJcbiAgZGF0YTogeyBbc2VyaWVzOiBzdHJpbmddOiB7IFt4QXhpczogc3RyaW5nXTogc3RyaW5nOyB9OyB9O1xyXG4gIHRvdGFsczogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlciB9O1xyXG4gIGN1YmU6IEN1YmU7XHJcbiAgeEF4aXM6IEN1YmVBeGlzO1xyXG4gIHNlcmllczogQ3ViZUF4aXM7XHJcbiAgcHJpdmF0ZSBfZGF0YTogRGF0YU1hcDtcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueT47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydfY3ViZSddKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLl9jdWJlKTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgICB0aGlzLlNZTUJPTCA9IGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuQ1VSUkVOQ1ksICduYXJyb3cnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jdWJlKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgICB0aGlzLlNZTUJPTCA9IGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuQ1VSUkVOQ1ksICduYXJyb3cnKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydfaW5kaWNlcyddICYmIHRoaXMuX2luZGljZXMpXHJcbiAgICAgIHRoaXMuaW5kaWNlcyA9IHRoaXMuY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IGlzQXJyYXkodGhpcy5faW5kaWNlcykgPyB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xIDogdGhpcy5faW5kaWNlcyA9PT0gaS5uYW1lKTtcclxuICAgIGlmIChjaGFuZ2VzWydfeEF4aXMnXSB8fCBjaGFuZ2VzWydfc2VyaWVzJ10pIHtcclxuICAgICAgdGhpcy54QXhpcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3hBeGlzKTtcclxuICAgICAgdGhpcy5zZXJpZXMgPSB0aGlzLmN1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLl9zZXJpZXMpO1xyXG4gICAgICB0aGlzLmRhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlID0gZm9ya0pvaW4odGhpcy5fZHMuYWxsKHRoaXMuc2VyaWVzLmRhdGFUeXBlKS5waXBlKHRhcChyID0+XHJcbiAgICAgICAgdGhpcy5yb3dzID0gclxyXG4gICAgICApKSxcclxuICAgICAgICB0aGlzLl9kcy5hbGwodGhpcy54QXhpcy5kYXRhVHlwZSkucGlwZSh0YXAoYyA9PlxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zID0gY1xyXG4gICAgICAgICkpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2FkZGluZGljZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5fc3VtICYmIHRoaXMuX2FkZHN1bWhlYWRlcnMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZGluZGljZXMoKSB7XHJcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5pbmRleEF0ID09PSAneEF4aXMnID8gdGhpcy5jb2x1bW5zIDogdGhpcy5yb3dzO1xyXG4gICAgdGhpcy5pbmRpY2VzLmZvckVhY2goKHgsIGkpID0+IHtcclxuICAgICAgY29uc3QgaGVhZGVyID0ge1xyXG4gICAgICAgIGtleTogeC5uYW1lLFxyXG4gICAgICAgIHZhbHVlOiB4LnRpdGxlLFxyXG4gICAgICAgIGluZGV4OiB4LFxyXG4gICAgICAgIGFjY3VtdWxhdGU6IHguYWNjdW11bGF0ZVxyXG4gICAgICB9IGFzIEhlYWRlckluZm87XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlQXQgPT09ICd0cmFpbGluZycpXHJcbiAgICAgICAgY29sbGVjdGlvbi5wdXNoKGhlYWRlcik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb2xsZWN0aW9uLnNwbGljZShpLCAwLCBoZWFkZXIpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWRkc3VtaGVhZGVycygpIHtcclxuICAgIHRoaXMuX3N1bS5mb3JFYWNoKChzLCBpKSA9PiB7XHJcbiAgICAgIGxldCB7IHZhbHVlLCBheGlzIH0gPSBzO1xyXG4gICAgICBjb25zdCBoZWFkZXIgPSB7XHJcbiAgICAgICAga2V5OiBTVU1fUFJFRklYICsgaSxcclxuICAgICAgICB2YWx1ZTogcy50aXRsZSxcclxuICAgICAgICBhY2N1bXVsYXRlOiAhaXNGdW5jdGlvbihzLmNhbGN1bGF0ZSkgJiYgcy5jYWxjdWxhdGUgIT09ICdhY2N1bXVsYXRlJyxcclxuICAgICAgICBleHBsb3JhYmxlOiAhaXNGdW5jdGlvbihzLmNhbGN1bGF0ZSkgJiYgcy5leHBsb3JhYmxlICE9PSBmYWxzZSxcclxuICAgICAgICBwcmVjaXNpb246IHMucHJlY2lzaW9uLFxyXG4gICAgICAgIHN1bTogc1xyXG4gICAgICB9IGFzIEhlYWRlckluZm87XHJcbiAgICAgIGxldCBqID0gMDtcclxuICAgICAgaWYgKGF4aXMgPT09ICd4QXhpcycpIHtcclxuICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbHVtbnNbal0ua2V5ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMuc3BsaWNlKGogKyAxLCAwLCBoZWFkZXIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGorKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGogPT09IHRoaXMuY29sdW1ucy5sZW5ndGgpXHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChoZWFkZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHdoaWxlIChqIDwgdGhpcy5yb3dzLmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMucm93c1tqXS5rZXkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93cy5zcGxpY2UoaiArIDEsIDAsIGhlYWRlcik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaisrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PT0gdGhpcy5yb3dzLmxlbmd0aClcclxuICAgICAgICAgIHRoaXMucm93cy5wdXNoKGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHByb2dyZXNzVGFzayA9IHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gdHJ1ZSlcclxuICAgICAgLCBMT0FESU5HX0RFTEFZKTtcclxuICAgIHRoaXMuX3ByZXBhcmUudGhlbigoKSA9PlxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUubmFtZSwgdGhpcy5feEF4aXMsIHtcclxuICAgICAgICBzZXJpZXM6IHRoaXMuX3NlcmllcyxcclxuICAgICAgICBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcclxuICAgICAgICBpbnZlcnNlSW5kaWNlczogdGhpcy5pbmRleEF0ID09PSAneEF4aXMnLFxyXG4gICAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICAgIH0pLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fc2VyaWFsaXplKHIpO1xyXG4gICAgICAgIHRoaXMuX2Nsb25lKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N1bSAmJiB0aGlzLl9jYWxjdWxhdGVzdW0oZGF0YSk7XHJcbiAgICAgICAgdGhpcy5fdG90YWxzKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N0cmluZ2lmeShkYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIGFueTtcclxuICAgICAgICBjbGVhclRpbWVvdXQocHJvZ3Jlc3NUYXNrKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UubmV4dCh0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgICAgKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlcnJSZXNvdXJjZShlKSk7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQocHJvZ3Jlc3NUYXNrKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5uZXh0KHRoaXMubG9hZGluZyA9IGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lcnJvcihlKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2VyaWFsaXplKHNlcmllczogU2VyaWVzW10pIHtcclxuICAgIGNvbnN0IGQgPSB7fTtcclxuICAgIHNlcmllcy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBpZiAocy5pbmRleCkge1xyXG4gICAgICAgIGlmICh0aGlzLmluZGV4QXQgPT09ICd4QXhpcycpXHJcbiAgICAgICAgICBzLnBvaW50cy5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcm93ID0gZFtwLnhdO1xyXG4gICAgICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgICAgICByb3cgPSBkW3AueF0gPSB7fTtcclxuICAgICAgICAgICAgcm93W3MuaW5kZXhdID0gcC55O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSBkW3MuaW5kZXhdID0ge307XHJcbiAgICAgICAgICBzLnBvaW50cy5mb3JFYWNoKHAgPT4gcm93W3AueF0gPSBwLnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gZFtzLm5hbWVdID0ge307XHJcbiAgICAgICAgcy5wb2ludHMuZm9yRWFjaChwID0+IHJvd1twLnhdID0gcC55KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb25lKGRhdGEpIHtcclxuICAgIHRoaXMuX2RhdGEgPSB7fTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBjb25zdCBrZXkgPSByLmtleTtcclxuICAgICAgaWYgKCFkYXRhW2tleV0pIGRhdGFba2V5XSA9IHt9O1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2RhdGFba2V5XSA9IHt9LCBkYXRhW2tleV0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RvdGFscyhkYXRhOiBEYXRhTWFwKSB7XHJcbiAgICBsZXQgZ3JhbmQgPSAwO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGFyb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgaWYgKGRhdGFyb3cpIHtcclxuICAgICAgICBsZXQgY29sdW1uVG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgaWYgKGMuYWNjdW11bGF0ZSA9PT0gZmFsc2UgfHwgYy5zdW0gIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgICAgbGV0IHZhbCA9IGRhdGFyb3dbYy5rZXldO1xyXG4gICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBjb2x1bW5Ub3RhbCArPSB0aGlzLmluZGljZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuaW5kZXhBdCAhPT0gJ3hBeGlzJyB8fFxyXG4gICAgICAgICAgICAgIGMuaW5kZXggIT09IHVuZGVmaW5lZCA/IHZhbCA6IC12YWw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGF0YXJvd1snX3RvdGFsJ10gPSB0aGlzLl9mb3JtYXQoY29sdW1uVG90YWwsIHIpO1xyXG4gICAgICAgIGlmICghci5zdW0pXHJcbiAgICAgICAgICBncmFuZCArPSB0aGlzLmluZGljZXMubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBdCA9PT0gJ3hBeGlzJyB8fFxyXG4gICAgICAgICAgICByLmluZGV4ICE9PSB1bmRlZmluZWQgPyBjb2x1bW5Ub3RhbCA6IC1jb2x1bW5Ub3RhbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZGF0YVtyLmtleV0gPSB7XHJcbiAgICAgICAgICAnX3RvdGFsJzogJzAnIGFzIGFueVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHRvdGFscyA9IGRhdGFbJ190b3RhbCddID0gdGhpcy50b3RhbHMgPSB7fTtcclxuICAgIHRvdGFsc1snX2dyYW5kJ10gPSB0aGlzLl9mb3JtYXQoZ3JhbmQpO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGxldCByb3dUb3RhbCA9IDA7XHJcbiAgICAgIHRoaXMucm93cy5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgaWYgKHJvdy5hY2N1bXVsYXRlID09PSBmYWxzZSB8fCByb3cuc3VtICE9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW3Jvdy5rZXldW2Mua2V5XTtcclxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICByb3dUb3RhbCArPSB0aGlzLmluZGljZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuaW5kZXhBdCA9PT0gJ3hBeGlzJyB8fFxyXG4gICAgICAgICAgICByb3cuaW5kZXggIT09IHVuZGVmaW5lZCA/IHZhbCA6IC12YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0b3RhbHNbYy5rZXldID0gdGhpcy5fZm9ybWF0KHJvd1RvdGFsLCBjKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWxjdWxhdGVzdW0oZGF0YTogRGF0YU1hcCkge1xyXG4gICAgdGhpcy5fc3VtLmZvckVhY2goKHMsIGkpID0+IHtcclxuICAgICAgY29uc3QgeyBheGlzLCB2YWx1ZSwgY2FsY3VsYXRlIH0gPSBzO1xyXG4gICAgICBjb25zdCBuYW1lID0gU1VNX1BSRUZJWCArIGk7XHJcbiAgICAgIGlmIChheGlzID09PSAneEF4aXMnKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBpZiAoci5hY2N1bXVsYXRlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgY29uc3QgZGF0YXJvdyA9IGRhdGFbci5rZXldO1xyXG4gICAgICAgICAgaWYgKCFkYXRhcm93KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5pbmRleCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSBjb2x1bW4ua2V5O1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnN1bSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyBDYWxjdWxhdGVGbikoci5rZXksIHRoaXMuX2RhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSBkYXRhcm93W2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhcm93W25hbWVdID0gc3VtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBkYXRhcm93ID0gZGF0YVtuYW1lXSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IHJvdyBvZiB0aGlzLnJvd3MpIHtcclxuICAgICAgICAgICAgaWYgKHJvdy5pbmRleCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSByb3cua2V5O1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IChjYWxjdWxhdGUgYXMgQ2FsY3VsYXRlRm4pKHJvdy5rZXksIHRoaXMuX2RhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhcm93ID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICghZGF0YXJvdykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5zdW0pIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBkYXRhcm93W2NvbHVtbi5rZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbCAhPSB1bmRlZmluZWQpIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IGRhdGFyb3dbY29sdW1uLmtleV07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFyb3dbY29sdW1uLmtleV0gPSBzdW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9zdHJpbmdpZnkoZGF0YTogRGF0YU1hcCkge1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIGNvbnN0IHhBeGlzID0gci5rZXksIHNlcmllcyA9IGMua2V5O1xyXG4gICAgICAgIGlmIChjLnN1bSkgZGF0YVt4QXhpc11bc2VyaWVzXSA9IHRoaXMuX2Zvcm1hdChkYXRhW3hBeGlzXVtzZXJpZXNdLCBjLnN1bSk7XHJcbiAgICAgICAgZWxzZSBpZiAoci5zdW0pIGRhdGFbeEF4aXNdW3Nlcmllc10gPSB0aGlzLl9mb3JtYXQoZGF0YVt4QXhpc11bc2VyaWVzXSwgci5zdW0pO1xyXG4gICAgICAgIGVsc2UgZGF0YVt4QXhpc11bc2VyaWVzXSA9XHJcbiAgICAgICAgICBmb3JtYXROdW1iZXIoZGF0YVt4QXhpc11bc2VyaWVzXSB8fCAwLCB0aGlzLkxBTkdVQUdFLCB0aGlzLlBSRUNJU0lPTikgYXMgYW55O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9mb3JtYXQodmFsLCBvcHRpb25zPzogeyBmb3JtYXQ/OiBzdHJpbmcsIHByZWNpc2lvbj86IHN0cmluZyB9KTogYW55IHtcclxuICAgIGlmICh2YWwgPT09IDApIHJldHVybiAnMCc7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdwZXJjZW50JylcclxuICAgICAgICByZXR1cm4gZm9ybWF0UGVyY2VudCh2YWwsIHRoaXMuTEFOR1VBR0UsIG9wdGlvbnMucHJlY2lzaW9uIHx8IHRoaXMuUFJFQ0lTSU9OKTtcclxuICAgICAgZWxzZSBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdjdXJyZW5jeScpXHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KHZhbCwgdGhpcy5MQU5HVUFHRSwgdGhpcy5TWU1CT0wsIHRoaXMuQ1VSUkVOQ1ksIG9wdGlvbnMucHJlY2lzaW9uIHx8IHRoaXMuUFJFQ0lTSU9OKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLkNVUlJFTkNZKVxyXG4gICAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3kodmFsLCB0aGlzLkxBTkdVQUdFLCB0aGlzLlNZTUJPTCwgdGhpcy5DVVJSRU5DWSwgdGhpcy5QUkVDSVNJT04pO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKHZhbCwgdGhpcy5MQU5HVUFHRSwgdGhpcy5QUkVDSVNJT04pO1xyXG4gIH1cclxuICBleHBsb3JlKGNvbHVtbjogSGVhZGVySW5mbywgcm93OiBIZWFkZXJJbmZvKSB7XHJcbiAgICBpZiAoIXRoaXMuaW50ZXJhY3RpdmUgfHwgY29sdW1uLmV4cGxvcmFibGUgPT09IGZhbHNlIHx8IHJvdy5leHBsb3JhYmxlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgbGV0IHg6IEF4aXNUeXBlLCBzZXJpZXM6IEF4aXNUeXBlLCBpbmRleDtcclxuICAgIGNvbnN0IGF4ZXMgPSB7IC4uLnRoaXMuZmlsdGVycyB9IGFzIEF4ZXNNYXA7XHJcbiAgICBpZiAoIWNvbHVtbi5zdW0pXHJcbiAgICAgIHggPSBjb2x1bW4ua2V5O1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB7IHZhbHVlLCBjYWxjdWxhdGUgfSA9IGNvbHVtbi5zdW07XHJcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHJldHVybjtcclxuICAgICAgeCA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICBmb3IgKGxldCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5zdW0pXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBsZXQga2V5ID0gY29sdW1uLmtleTtcclxuICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBheGVzW3RoaXMueEF4aXMubmFtZV0gPSB4O1xyXG4gICAgaWYgKHJvdy5pbmRleClcclxuICAgICAgaW5kZXggPSByb3cuaW5kZXgubmFtZTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAocm93LnN1bSkge1xyXG4gICAgICAgIGxldCB7IHZhbHVlLCBjYWxjdWxhdGUgfSA9IHJvdy5zdW07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkgcmV0dXJuO1xyXG4gICAgICAgIHNlcmllcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgIGZvciAobGV0IHJvdyBvZiB0aGlzLnJvd3MpIHtcclxuICAgICAgICAgIGlmIChyb3cuc3VtKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIGxldCBrZXkgPSByb3cua2V5O1xyXG4gICAgICAgICAgc2VyaWVzLnB1c2goa2V5KTtcclxuICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHNlcmllcyA9IHJvdy5rZXk7XHJcbiAgICAgIGF4ZXNbdGhpcy5zZXJpZXMubmFtZV0gPSBzZXJpZXM7XHJcbiAgICAgIGluZGV4ID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICB9XHJcbiAgZXhwb3J0KCkge1xyXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gdGhpcy5fc2VydmljZS5udW1iZXJGb3JtYXQsXHJcbiAgICAgIGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gIWMuc3VtKSxcclxuICAgICAgY2VsbHMgPSBbXSBhcyBDZWxsW10sXHJcbiAgICAgIHJvd3MgPSBbeyBpbmRleDogMSwgY2VsbHMgfV07XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGMsIGopID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICBpbmRleDogaiArIDIsXHJcbiAgICAgIHZhbHVlOiBjLnZhbHVlLCBzdHlsZTogeyBib2xkOiB0cnVlIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnJvd3MuZmlsdGVyKHIgPT4gIXIuc3VtKS5mb3JFYWNoKChyLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhW3Iua2V5XSxcclxuICAgICAgICBjZWxscyA9IFt7IGluZGV4OiAxLCB2YWx1ZTogci52YWx1ZSwgc3R5bGU6IHsgYm9sZDogdHJ1ZSB9IH1dIGFzIENlbGxbXTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjLCBqKSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBpbmRleDogaiArIDIsXHJcbiAgICAgICAgdmFsdWU6IGRhdGEgJiYgZGF0YVtjLmtleV0gIT09IHVuZGVmaW5lZCA/IGRhdGFbYy5rZXldIDogMCxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgaEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgIH1cclxuICAgICAgfSBhcyBDZWxsKSk7XHJcbiAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgaW5kZXg6IGkgKyAyLFxyXG4gICAgICAgIGNlbGxzXHJcbiAgICAgIH0gYXMgUm93KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAge1xyXG4gICAgICAgIHdvcmtzaGVldHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZW5hYmxlUnRsOiB0aGlzLl9zZXNzaW9uLmludmVyc2UsXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpLFxyXG4gICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMTUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgIHJvd3MsXHJcbiAgICAgICAgICB9IGFzIFdvcmtzaGVldCxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICAneGxzeCdcclxuICAgICk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLm5hbWVPZih0aGlzLmZpbHRlcnMsIHRoaXMuY3ViZS5uYW1lKS5zdWJzY3JpYmUobiA9PlxyXG4gICAgICBib29rLnNhdmUoYCR7biB8fCB0aGlzLl90cmFuc2xhdGUuZ2V0KCdNYXRyaXgnKX0ueGxzeGApKTtcclxuICB9XHJcbiAgX21vdmUoeCwgeSkge1xyXG4gICAgbGV0IHJvd0luZGV4ID0gMDtcclxuICAgIGZvciAobGV0IGIgPSAwOyBiIDwgdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Qm9kaWVzLmxlbmd0aDsgYisrKSB7XHJcbiAgICAgIGxldCB0Qm9keSA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5pdGVtKGIpO1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHRCb2R5LnJvd3MubGVuZ3RoOyByKyspIHtcclxuICAgICAgICBsZXQgcm93ID0gdEJvZHkucm93cy5pdGVtKHIpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgICAgaWYgKGMgPT09IHgpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IHkpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC15Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC15Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd0luZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRGb290ID0gdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Rm9vdCwgcm93ID0gdEZvb3Qucm93c1swXTtcclxuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByb3cuY2VsbHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXgnKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbnR5cGUgRGF0YU1hcCA9IHsgW3Nlcmllczogc3RyaW5nXTogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlcjsgfTsgfTtcclxuXHJcbmV4cG9ydCB0eXBlIFN1bVNldHRpbmdzID0ge1xyXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGF4aXM6ICdzZXJpZXMnIHwgJ3hBeGlzJztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGZvcm1hdD86ICdwZXJjZW50JyB8ICdjdXJyZW5jeScgfCAnbnVtYmVyJztcclxuICBwcmVjaXNpb24/OiBzdHJpbmc7XHJcbiAgYWNjdW11bGF0ZT86IGJvb2xlYW47XHJcbiAgZXhwbG9yYWJsZT86IGJvb2xlYW47XHJcbiAgY2FsY3VsYXRlPzogJ3F1YXJ0ZXInIHwgJ3llYXInIHwgJ21vbnRoJyB8ICdhY2N1bXVsYXRlJyB8IENhbGN1bGF0ZUZuO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ2FsY3VsYXRlRm4ge1xyXG4gICh2YWx1ZTogc3RyaW5nLCBkYXRhOiB7IFtzZXJpZXM6IHN0cmluZ106IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXI7IH07IH0pOiBudW1iZXI7XHJcbn1cclxuXHJcbnR5cGUgSGVhZGVySW5mbyA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG4gIHByZWNpc2lvbj86IHN0cmluZztcclxuICBleHBsb3JhYmxlPzogYm9vbGVhbjtcclxuICBhY2N1bXVsYXRlPzogYm9vbGVhbjtcclxuICBzdW0/OiBTdW1TZXR0aW5ncztcclxuICBpbmRleD86IEN1YmVJbmRleDtcclxufTtcclxuaW50ZXJmYWNlIENlbGwgeyB9XHJcbiIsIjx0YWJsZSAjdGFibGUgY2xhc3M9XCJtYXQtdGFibGUgY3ViZS10YWJsZVwiIChtb3VzZWxlYXZlKT1cIl9tb3ZlKC0xLCAtMSlcIiAqbmdJZj1cImRhdGFcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8IS0tIGhlYWRlcnMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtaGVhZGVyLXJvd1wiPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiXHJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJfbW92ZSh4ICsgMSwgLTIpXCIgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj5cclxuICAgICAgICB7eyBjb2x1bW4udmFsdWUgfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+e3t4QXhpc1RvdGFsTGFiZWx9fTwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGhlYWQ+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSByb3dzIC0tPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IHkgPSBpbmRleFwiIGNsYXNzPVwibWF0LXJvd1wiXHJcbiAgICAgICAgW2NsYXNzLmN1YmUtaW5kZXhdPVwicm93LmluZGV4XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIl9tb3ZlKC0yLCB5IClcIj57eyByb3cudmFsdWUgfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIlxyXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwiX21vdmUoeCArIDEsIHkgKVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSAhPT0gJzAnOyBlbHNlIHplcm9cIiBcclxuICAgICAgICAgIFtjbGFzcy5leHBsb3JhYmxlXT1cImludGVyYWN0aXZlICYmIGNvbHVtbi5leHBsb3JhYmxlICE9PSBmYWxzZSAmJiByb3cuZXhwbG9yYWJsZSAhPT0gZmFsc2VcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImV4cGxvcmUoY29sdW1uLCByb3cpXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJfbW92ZSgtMSwgeSApXCI+XHJcbiAgICAgICAge3sgZGF0YVtyb3cua2V5XVsnX3RvdGFsJ10gfX1cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGZvb3Q+XHJcbiAgICA8IS0tIGZvb3RlciAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1mb290ZXItcm93XCI+XHJcbiAgICAgIDx0ZCBjbGFzcz1cIm1hdC1mb290ZXItY2VsbFwiPnt7c2VyaWVzVG90YWxMYWJlbH19PC90ZD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWZvb3Rlci1jZWxsIGZpZ3VyZVwiXHJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJfbW92ZSh4ICsgMSwgLTIpXCJcclxuICAgICAgICAgIFtjbGFzcy5uZWdhdGl2ZS1maWd1cmVdPVwidG90YWxzW2NvbHVtbi5rZXldLnN0YXJ0c1dpdGgoJy0nKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbHNbY29sdW1uLmtleV0gIT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAge3sgdG90YWxzW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1mb290ZXItY2VsbCBmaWd1cmVcIj57eyB0b3RhbHNbJ19ncmFuZCddIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Zm9vdD5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICN6ZXJvPjA8L25nLXRlbXBsYXRlPlxyXG4iXX0=
493
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUEwQixNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFlLFdBQVcsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBS25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFLeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFFL0MsMkJBQTJCO0FBTzNCLE1BQU0sT0FBTyxtQkFBbUI7SUFtRTlCLFlBQ1UsR0FBa0IsRUFDbEIsUUFBcUIsRUFDckIsUUFBd0IsRUFDeEIsVUFBNEIsRUFDNUIsR0FBc0I7UUFKdEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNs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Z0JBQ1QsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ1MsS0FBSztzQkFBbkIsS0FBSzt1QkFBQyxNQUFNO2dCQUNHLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFDRyxPQUFPO3NCQUF2QixLQUFLO3VCQUFDLFFBQVE7Z0JBRWYsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBR2hCLE9BQU87c0JBRE4sS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVPLEdBQUc7c0JBQWYsS0FBSztnQkEwQkcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFLSyxXQUFXO3NCQURyQixLQUFLO2dCQUlzQixTQUFTO3NCQUFwQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ0UsYUFBYTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgZm9ybWF0UGVyY2VudCwgZm9ybWF0TnVtYmVyLCBnZXRDdXJyZW5jeVN5bWJvbCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBXb3JrYm9vaywgV29ya3NoZWV0LCBSb3csIENvbHVtbiB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1leGNlbC1leHBvcnQnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlLCBlcnJSZXNvdXJjZSwgU2VyaWVzIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEF4aXNUeXBlLCBDdWJlLCBDdWJlQXhpcywgQ3ViZUluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBtYXRyaXhBbmltYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBTY29wZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4aXNDbGlja0V2ZW50IH0gZnJvbSAnLi4vZGVjbGFyYXRpb25zJztcclxuXHJcbmNvbnN0IExPQURJTkdfREVMQVkgPSAyMDAsIFNVTV9QUkVGSVggPSAnX3N1bSc7XHJcblxyXG4vKiogY3ViZSBtYXRyaXggY29tcG9uZW50Ki9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1tYXRyaXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbWF0cml4QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcmVhZG9ubHkgUFJFQ0lTSU9OID0gdGhpcy5fc2VydmljZS5kaWdpdHNJbmZvO1xyXG4gIHJlYWRvbmx5IExBTkdVQUdFID0gdGhpcy5fc2Vzc2lvbi5sYW5ndWFnZTtcclxuICBDVVJSRU5DWTogc3RyaW5nO1xyXG4gIFNZTUJPTDogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGVFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUYWJsZUVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgpIHNlcmllc1RvdGFsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB4QXhpc1RvdGFsTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoJ2N1YmUnKSBfY3ViZT86IHN0cmluZztcclxuICBASW5wdXQoJ3hBeGlzJykgX3hBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VyaWVzJykgX3NlcmllcyE6IHN0cmluZztcclxuICBASW5wdXQoJ2luZGljZXMnKVxyXG4gIF9pbmRpY2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBpbmRleEF0OiAnc2VyaWVzJyB8ICd4QXhpcycgPSAnc2VyaWVzJztcclxuICBASW5wdXQoKVxyXG4gIHBsYWNlQXQ6ICdsZWFkaW5nJyB8ICd0cmFpbGluZycgPSAnbGVhZGluZyc7XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBwcml2YXRlIF9zdW06IFN1bVNldHRpbmdzW107XHJcbiAgQElucHV0KCkgc2V0IHN1bSh2YWw6IFN1bVNldHRpbmdzIHwgU3VtU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHZhbCkgdGhpcy5fc3VtID0gKGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdKS5cclxuICAgICAgbWFwKHN1bSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlO1xyXG4gICAgICAgIGlmIChzdW0udmFsdWUpXHJcbiAgICAgICAgICB2YWx1ZSA9IHN1bS52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIGVsc2UgaWYgKHN1bS5jYWxjdWxhdGUpXHJcbiAgICAgICAgICBzd2l0Y2ggKHN1bS5jYWxjdWxhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gJ00nICsgKCcwJyArIChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpKS5zbGljZSgtMik7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5jZWlsKChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSAvIDMpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FjY3VtdWxhdGUnOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gJ34nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5zdW0sXHJcbiAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBASW5wdXQoKSBmaWx0ZXJzOiBBeGVzTWFwO1xyXG4gIHByaXZhdGUgX2ludGVyYWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gIHB1YmxpYyBnZXQgaW50ZXJhY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3RpdmU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbnRlcmFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faW50ZXJhY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuICBAT3V0cHV0KCdleHBsb3JlJykgcmVhZG9ubHkgb25FeHBsb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxBeGlzQ2xpY2tFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbG9hZGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICByb3dzOiBIZWFkZXJJbmZvW107XHJcbiAgY29sdW1uczogSGVhZGVySW5mb1tdO1xyXG4gIGluZGljZXM6IEN1YmVJbmRleFtdID0gW107XHJcbiAgZGF0YTogeyBbc2VyaWVzOiBzdHJpbmddOiB7IFt4QXhpczogc3RyaW5nXTogc3RyaW5nOyB9OyB9O1xyXG4gIHRvdGFsczogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlciB9O1xyXG4gIGN1YmU6IEN1YmU7XHJcbiAgeEF4aXM6IEN1YmVBeGlzO1xyXG4gIHNlcmllczogQ3ViZUF4aXM7XHJcbiAgcHJpdmF0ZSBfZGF0YTogRGF0YU1hcDtcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueT47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydfY3ViZSddKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLl9jdWJlKTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgICB0aGlzLlNZTUJPTCA9IGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuQ1VSUkVOQ1ksICduYXJyb3cnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jdWJlKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgICB0aGlzLlNZTUJPTCA9IGdldEN1cnJlbmN5U3ltYm9sKHRoaXMuQ1VSUkVOQ1ksICduYXJyb3cnKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydfaW5kaWNlcyddICYmIHRoaXMuX2luZGljZXMpXHJcbiAgICAgIHRoaXMuaW5kaWNlcyA9IHRoaXMuY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IGlzQXJyYXkodGhpcy5faW5kaWNlcykgPyB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xIDogdGhpcy5faW5kaWNlcyA9PT0gaS5uYW1lKTtcclxuICAgIGlmIChjaGFuZ2VzWydfeEF4aXMnXSB8fCBjaGFuZ2VzWydfc2VyaWVzJ10pIHtcclxuICAgICAgdGhpcy54QXhpcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3hBeGlzKTtcclxuICAgICAgdGhpcy5zZXJpZXMgPSB0aGlzLmN1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLl9zZXJpZXMpO1xyXG4gICAgICB0aGlzLmRhdGEgPSBudWxsO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlID0gZm9ya0pvaW4odGhpcy5fZHMuYWxsKHRoaXMuc2VyaWVzLmRhdGFUeXBlKS5waXBlKHRhcChyID0+XHJcbiAgICAgICAgdGhpcy5yb3dzID0gclxyXG4gICAgICApKSxcclxuICAgICAgICB0aGlzLl9kcy5hbGwodGhpcy54QXhpcy5kYXRhVHlwZSkucGlwZSh0YXAoYyA9PlxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zID0gY1xyXG4gICAgICAgICkpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuX2FkZGluZGljZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5fc3VtICYmIHRoaXMuX2FkZHN1bWhlYWRlcnMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZGluZGljZXMoKSB7XHJcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5pbmRleEF0ID09PSAneEF4aXMnID8gdGhpcy5jb2x1bW5zIDogdGhpcy5yb3dzO1xyXG4gICAgdGhpcy5pbmRpY2VzLmZvckVhY2goKHgsIGkpID0+IHtcclxuICAgICAgY29uc3QgaGVhZGVyID0ge1xyXG4gICAgICAgIGtleTogeC5uYW1lLFxyXG4gICAgICAgIHZhbHVlOiB4LnRpdGxlLFxyXG4gICAgICAgIGluZGV4OiB4LFxyXG4gICAgICAgIGFjY3VtdWxhdGU6IHguYWNjdW11bGF0ZVxyXG4gICAgICB9IGFzIEhlYWRlckluZm87XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlQXQgPT09ICd0cmFpbGluZycpXHJcbiAgICAgICAgY29sbGVjdGlvbi5wdXNoKGhlYWRlcik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb2xsZWN0aW9uLnNwbGljZShpLCAwLCBoZWFkZXIpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWRkc3VtaGVhZGVycygpIHtcclxuICAgIHRoaXMuX3N1bS5mb3JFYWNoKChzLCBpKSA9PiB7XHJcbiAgICAgIGxldCB7IHZhbHVlLCBheGlzIH0gPSBzO1xyXG4gICAgICBjb25zdCBoZWFkZXIgPSB7XHJcbiAgICAgICAga2V5OiBTVU1fUFJFRklYICsgaSxcclxuICAgICAgICB2YWx1ZTogcy50aXRsZSxcclxuICAgICAgICBhY2N1bXVsYXRlOiAhaXNGdW5jdGlvbihzLmNhbGN1bGF0ZSkgJiYgcy5jYWxjdWxhdGUgIT09ICdhY2N1bXVsYXRlJyxcclxuICAgICAgICBleHBsb3JhYmxlOiAhaXNGdW5jdGlvbihzLmNhbGN1bGF0ZSkgJiYgcy5leHBsb3JhYmxlICE9PSBmYWxzZSxcclxuICAgICAgICBwcmVjaXNpb246IHMucHJlY2lzaW9uLFxyXG4gICAgICAgIHN1bTogc1xyXG4gICAgICB9IGFzIEhlYWRlckluZm87XHJcbiAgICAgIGxldCBqID0gMDtcclxuICAgICAgaWYgKGF4aXMgPT09ICd4QXhpcycpIHtcclxuICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbHVtbnNbal0ua2V5ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMuc3BsaWNlKGogKyAxLCAwLCBoZWFkZXIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGorKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGogPT09IHRoaXMuY29sdW1ucy5sZW5ndGgpXHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChoZWFkZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHdoaWxlIChqIDwgdGhpcy5yb3dzLmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMucm93c1tqXS5rZXkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93cy5zcGxpY2UoaiArIDEsIDAsIGhlYWRlcik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaisrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PT0gdGhpcy5yb3dzLmxlbmd0aClcclxuICAgICAgICAgIHRoaXMucm93cy5wdXNoKGhlYWRlcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHByb2dyZXNzVGFzayA9IHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gdHJ1ZSlcclxuICAgICAgLCBMT0FESU5HX0RFTEFZKTtcclxuICAgIHRoaXMuX3ByZXBhcmUudGhlbigoKSA9PlxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUubmFtZSwgdGhpcy5feEF4aXMsIHtcclxuICAgICAgICBzZXJpZXM6IHRoaXMuX3NlcmllcyxcclxuICAgICAgICBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcclxuICAgICAgICBpbnZlcnNlSW5kaWNlczogdGhpcy5pbmRleEF0ID09PSAneEF4aXMnLFxyXG4gICAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICAgIH0pLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fc2VyaWFsaXplKHIpO1xyXG4gICAgICAgIHRoaXMuX2Nsb25lKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N1bSAmJiB0aGlzLl9jYWxjdWxhdGVzdW0oZGF0YSk7XHJcbiAgICAgICAgdGhpcy5fdG90YWxzKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N0cmluZ2lmeShkYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIGFueTtcclxuICAgICAgICBjbGVhclRpbWVvdXQocHJvZ3Jlc3NUYXNrKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UubmV4dCh0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgICAgKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlcnJSZXNvdXJjZShlKSk7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQocHJvZ3Jlc3NUYXNrKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5uZXh0KHRoaXMubG9hZGluZyA9IGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5lcnJvcihlKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2VyaWFsaXplKHNlcmllczogU2VyaWVzW10pIHtcclxuICAgIGNvbnN0IGQgPSB7fTtcclxuICAgIHNlcmllcy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBpZiAocy5pbmRleCkge1xyXG4gICAgICAgIGlmICh0aGlzLmluZGV4QXQgPT09ICd4QXhpcycpXHJcbiAgICAgICAgICBzLnBvaW50cy5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcm93ID0gZFtwLnhdO1xyXG4gICAgICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgICAgICByb3cgPSBkW3AueF0gPSB7fTtcclxuICAgICAgICAgICAgcm93W3MuaW5kZXhdID0gcC55O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSBkW3MuaW5kZXhdID0ge307XHJcbiAgICAgICAgICBzLnBvaW50cy5mb3JFYWNoKHAgPT4gcm93W3AueF0gPSBwLnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gZFtzLm5hbWVdID0ge307XHJcbiAgICAgICAgcy5wb2ludHMuZm9yRWFjaChwID0+IHJvd1twLnhdID0gcC55KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb25lKGRhdGEpIHtcclxuICAgIHRoaXMuX2RhdGEgPSB7fTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBjb25zdCBrZXkgPSByLmtleTtcclxuICAgICAgaWYgKCFkYXRhW2tleV0pIGRhdGFba2V5XSA9IHt9O1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2RhdGFba2V5XSA9IHt9LCBkYXRhW2tleV0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RvdGFscyhkYXRhOiBEYXRhTWFwKSB7XHJcbiAgICBsZXQgZ3JhbmQgPSAwO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGFyb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgaWYgKGRhdGFyb3cpIHtcclxuICAgICAgICBsZXQgY29sdW1uVG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgaWYgKGMuYWNjdW11bGF0ZSA9PT0gZmFsc2UgfHwgYy5zdW0gIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgICAgbGV0IHZhbCA9IGRhdGFyb3dbYy5rZXldO1xyXG4gICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBjb2x1bW5Ub3RhbCArPSB0aGlzLmluZGljZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuaW5kZXhBdCAhPT0gJ3hBeGlzJyB8fFxyXG4gICAgICAgICAgICAgIGMuaW5kZXggIT09IHVuZGVmaW5lZCA/IHZhbCA6IC12YWw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGF0YXJvd1snX3RvdGFsJ10gPSB0aGlzLl9mb3JtYXQoY29sdW1uVG90YWwsIHIpO1xyXG4gICAgICAgIGlmICghci5zdW0pXHJcbiAgICAgICAgICBncmFuZCArPSB0aGlzLmluZGljZXMubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXhBdCA9PT0gJ3hBeGlzJyB8fFxyXG4gICAgICAgICAgICByLmluZGV4ICE9PSB1bmRlZmluZWQgPyBjb2x1bW5Ub3RhbCA6IC1jb2x1bW5Ub3RhbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZGF0YVtyLmtleV0gPSB7XHJcbiAgICAgICAgICAnX3RvdGFsJzogJzAnIGFzIGFueVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHRvdGFscyA9IGRhdGFbJ190b3RhbCddID0gdGhpcy50b3RhbHMgPSB7fTtcclxuICAgIHRvdGFsc1snX2dyYW5kJ10gPSB0aGlzLl9mb3JtYXQoZ3JhbmQpO1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGxldCByb3dUb3RhbCA9IDA7XHJcbiAgICAgIHRoaXMucm93cy5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgaWYgKHJvdy5hY2N1bXVsYXRlID09PSBmYWxzZSB8fCByb3cuc3VtICE9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBjb25zdCB2YWwgPSBkYXRhW3Jvdy5rZXldW2Mua2V5XTtcclxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICByb3dUb3RhbCArPSB0aGlzLmluZGljZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuaW5kZXhBdCA9PT0gJ3hBeGlzJyB8fFxyXG4gICAgICAgICAgICByb3cuaW5kZXggIT09IHVuZGVmaW5lZCA/IHZhbCA6IC12YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0b3RhbHNbYy5rZXldID0gdGhpcy5fZm9ybWF0KHJvd1RvdGFsLCBjKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWxjdWxhdGVzdW0oZGF0YTogRGF0YU1hcCkge1xyXG4gICAgdGhpcy5fc3VtLmZvckVhY2goKHMsIGkpID0+IHtcclxuICAgICAgY29uc3QgeyBheGlzLCB2YWx1ZSwgY2FsY3VsYXRlIH0gPSBzO1xyXG4gICAgICBjb25zdCBuYW1lID0gU1VNX1BSRUZJWCArIGk7XHJcbiAgICAgIGlmIChheGlzID09PSAneEF4aXMnKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBpZiAoci5hY2N1bXVsYXRlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgY29uc3QgZGF0YXJvdyA9IGRhdGFbci5rZXldO1xyXG4gICAgICAgICAgaWYgKCFkYXRhcm93KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi5pbmRleCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSBjb2x1bW4ua2V5O1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnN1bSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyBDYWxjdWxhdGVGbikoci5rZXksIHRoaXMuX2RhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSBkYXRhcm93W2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhcm93W25hbWVdID0gc3VtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBkYXRhcm93ID0gZGF0YVtuYW1lXSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgICAgIGZvciAobGV0IHJvdyBvZiB0aGlzLnJvd3MpIHtcclxuICAgICAgICAgICAgaWYgKHJvdy5pbmRleCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSByb3cua2V5O1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IChjYWxjdWxhdGUgYXMgQ2FsY3VsYXRlRm4pKHJvdy5rZXksIHRoaXMuX2RhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhcm93ID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICghZGF0YXJvdykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi5zdW0pIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBkYXRhcm93W2NvbHVtbi5rZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbCAhPSB1bmRlZmluZWQpIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IGRhdGFyb3dbY29sdW1uLmtleV07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFyb3dbY29sdW1uLmtleV0gPSBzdW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9zdHJpbmdpZnkoZGF0YTogRGF0YU1hcCkge1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgIGNvbnN0IHhBeGlzID0gci5rZXksIHNlcmllcyA9IGMua2V5O1xyXG4gICAgICAgIGlmIChjLnN1bSkgZGF0YVt4QXhpc11bc2VyaWVzXSA9IHRoaXMuX2Zvcm1hdChkYXRhW3hBeGlzXVtzZXJpZXNdLCBjLnN1bSk7XHJcbiAgICAgICAgZWxzZSBpZiAoci5zdW0pIGRhdGFbeEF4aXNdW3Nlcmllc10gPSB0aGlzLl9mb3JtYXQoZGF0YVt4QXhpc11bc2VyaWVzXSwgci5zdW0pO1xyXG4gICAgICAgIGVsc2UgZGF0YVt4QXhpc11bc2VyaWVzXSA9XHJcbiAgICAgICAgICBmb3JtYXROdW1iZXIoZGF0YVt4QXhpc11bc2VyaWVzXSB8fCAwLCB0aGlzLkxBTkdVQUdFLCB0aGlzLlBSRUNJU0lPTikgYXMgYW55O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9mb3JtYXQodmFsLCBvcHRpb25zPzogeyBmb3JtYXQ/OiBzdHJpbmcsIHByZWNpc2lvbj86IHN0cmluZyB9KTogYW55IHtcclxuICAgIGlmICh2YWwgPT09IDApIHJldHVybiAnMCc7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdwZXJjZW50JylcclxuICAgICAgICByZXR1cm4gZm9ybWF0UGVyY2VudCh2YWwsIHRoaXMuTEFOR1VBR0UsIG9wdGlvbnMucHJlY2lzaW9uIHx8IHRoaXMuUFJFQ0lTSU9OKTtcclxuICAgICAgZWxzZSBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdjdXJyZW5jeScpXHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KHZhbCwgdGhpcy5MQU5HVUFHRSwgdGhpcy5TWU1CT0wsIHRoaXMuQ1VSUkVOQ1ksIG9wdGlvbnMucHJlY2lzaW9uIHx8IHRoaXMuUFJFQ0lTSU9OKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLkNVUlJFTkNZKVxyXG4gICAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3kodmFsLCB0aGlzLkxBTkdVQUdFLCB0aGlzLlNZTUJPTCwgdGhpcy5DVVJSRU5DWSwgdGhpcy5QUkVDSVNJT04pO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKHZhbCwgdGhpcy5MQU5HVUFHRSwgdGhpcy5QUkVDSVNJT04pO1xyXG4gIH1cclxuICBleHBsb3JlKGNvbHVtbjogSGVhZGVySW5mbywgcm93OiBIZWFkZXJJbmZvKSB7XHJcbiAgICBpZiAoIXRoaXMuaW50ZXJhY3RpdmUgfHwgY29sdW1uLmV4cGxvcmFibGUgPT09IGZhbHNlIHx8IHJvdy5leHBsb3JhYmxlID09PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgbGV0IHg6IEF4aXNUeXBlLCBzZXJpZXM6IEF4aXNUeXBlLCBpbmRleDtcclxuICAgIGNvbnN0IGF4ZXMgPSB7IC4uLnRoaXMuZmlsdGVycyB9IGFzIEF4ZXNNYXA7XHJcbiAgICBpZiAoIWNvbHVtbi5zdW0pXHJcbiAgICAgIHggPSBjb2x1bW4ua2V5O1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB7IHZhbHVlLCBjYWxjdWxhdGUgfSA9IGNvbHVtbi5zdW07XHJcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHJldHVybjtcclxuICAgICAgeCA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICBmb3IgKGxldCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5zdW0pXHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICBsZXQga2V5ID0gY29sdW1uLmtleTtcclxuICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBheGVzW3RoaXMueEF4aXMubmFtZV0gPSB4O1xyXG4gICAgaWYgKHJvdy5pbmRleClcclxuICAgICAgaW5kZXggPSByb3cuaW5kZXgubmFtZTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAocm93LnN1bSkge1xyXG4gICAgICAgIGxldCB7IHZhbHVlLCBjYWxjdWxhdGUgfSA9IHJvdy5zdW07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkgcmV0dXJuO1xyXG4gICAgICAgIHNlcmllcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgIGZvciAobGV0IHJvdyBvZiB0aGlzLnJvd3MpIHtcclxuICAgICAgICAgIGlmIChyb3cuc3VtKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIGxldCBrZXkgPSByb3cua2V5O1xyXG4gICAgICAgICAgc2VyaWVzLnB1c2goa2V5KTtcclxuICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHNlcmllcyA9IHJvdy5rZXk7XHJcbiAgICAgIGF4ZXNbdGhpcy5zZXJpZXMubmFtZV0gPSBzZXJpZXM7XHJcbiAgICAgIGluZGV4ID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoeyBheGVzLCBpbmRleCB9KTtcclxuICB9XHJcbiAgZXhwb3J0KCkge1xyXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gdGhpcy5fc2VydmljZS5udW1iZXJGb3JtYXQsXHJcbiAgICAgIGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gIWMuc3VtKSxcclxuICAgICAgY2VsbHMgPSBbXSBhcyBDZWxsW10sXHJcbiAgICAgIHJvd3MgPSBbeyBpbmRleDogMSwgY2VsbHMgfV07XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGMsIGopID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICBpbmRleDogaiArIDIsXHJcbiAgICAgIHZhbHVlOiBjLnZhbHVlLCBzdHlsZTogeyBib2xkOiB0cnVlIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnJvd3MuZmlsdGVyKHIgPT4gIXIuc3VtKS5mb3JFYWNoKChyLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhW3Iua2V5XSxcclxuICAgICAgICBjZWxscyA9IFt7IGluZGV4OiAxLCB2YWx1ZTogci52YWx1ZSwgc3R5bGU6IHsgYm9sZDogdHJ1ZSB9IH1dIGFzIENlbGxbXTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjLCBqKSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBpbmRleDogaiArIDIsXHJcbiAgICAgICAgdmFsdWU6IGRhdGEgJiYgZGF0YVtjLmtleV0gIT09IHVuZGVmaW5lZCA/IGRhdGFbYy5rZXldIDogMCxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgaEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgIH1cclxuICAgICAgfSBhcyBDZWxsKSk7XHJcbiAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgaW5kZXg6IGkgKyAyLFxyXG4gICAgICAgIGNlbGxzXHJcbiAgICAgIH0gYXMgUm93KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYm9vayA9IG5ldyBXb3JrYm9vayhcclxuICAgICAge1xyXG4gICAgICAgIHdvcmtzaGVldHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZW5hYmxlUnRsOiB0aGlzLl9zZXNzaW9uLmludmVyc2UsXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpLFxyXG4gICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLm1hcCgoXywgaSkgPT4gKHsgaW5kZXg6IGkgKyAxLCB3aWR0aDogMTUwIH0gYXMgQ29sdW1uKSksXHJcbiAgICAgICAgICAgIHJvd3MsXHJcbiAgICAgICAgICB9IGFzIFdvcmtzaGVldCxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICAneGxzeCdcclxuICAgICk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLm5hbWVPZih0aGlzLmZpbHRlcnMsIHRoaXMuY3ViZS5uYW1lKS5zdWJzY3JpYmUobiA9PlxyXG4gICAgICBib29rLnNhdmUoYCR7biB8fCB0aGlzLl90cmFuc2xhdGUuZ2V0KCdNYXRyaXgnKX0ueGxzeGApKTtcclxuICB9XHJcbiAgX21vdmUoeCwgeSkge1xyXG4gICAgbGV0IHJvd0luZGV4ID0gMDtcclxuICAgIGZvciAobGV0IGIgPSAwOyBiIDwgdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Qm9kaWVzLmxlbmd0aDsgYisrKSB7XHJcbiAgICAgIGxldCB0Qm9keSA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5pdGVtKGIpO1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHRCb2R5LnJvd3MubGVuZ3RoOyByKyspIHtcclxuICAgICAgICBsZXQgcm93ID0gdEJvZHkucm93cy5pdGVtKHIpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgICAgaWYgKGMgPT09IHgpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC14Jyk7XHJcbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IHkpXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC15Jyk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC15Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd0luZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRGb290ID0gdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Rm9vdCwgcm93ID0gdEZvb3Qucm93c1swXTtcclxuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByb3cuY2VsbHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxscy5pdGVtKGMpO1xyXG4gICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXgnKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbnR5cGUgRGF0YU1hcCA9IHsgW3Nlcmllczogc3RyaW5nXTogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlcjsgfTsgfTtcclxuXHJcbmV4cG9ydCB0eXBlIFN1bVNldHRpbmdzID0ge1xyXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGF4aXM6ICdzZXJpZXMnIHwgJ3hBeGlzJztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGZvcm1hdD86ICdwZXJjZW50JyB8ICdjdXJyZW5jeScgfCAnbnVtYmVyJztcclxuICBwcmVjaXNpb24/OiBzdHJpbmc7XHJcbiAgYWNjdW11bGF0ZT86IGJvb2xlYW47XHJcbiAgZXhwbG9yYWJsZT86IGJvb2xlYW47XHJcbiAgY2FsY3VsYXRlPzogJ3F1YXJ0ZXInIHwgJ3llYXInIHwgJ21vbnRoJyB8ICdhY2N1bXVsYXRlJyB8IENhbGN1bGF0ZUZuO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ2FsY3VsYXRlRm4ge1xyXG4gICh2YWx1ZTogc3RyaW5nLCBkYXRhOiB7IFtzZXJpZXM6IHN0cmluZ106IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXI7IH07IH0pOiBudW1iZXI7XHJcbn1cclxuXHJcbnR5cGUgSGVhZGVySW5mbyA9IHtcclxuICBrZXk6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG4gIHByZWNpc2lvbj86IHN0cmluZztcclxuICBleHBsb3JhYmxlPzogYm9vbGVhbjtcclxuICBhY2N1bXVsYXRlPzogYm9vbGVhbjtcclxuICBzdW0/OiBTdW1TZXR0aW5ncztcclxuICBpbmRleD86IEN1YmVJbmRleDtcclxufTtcclxuaW50ZXJmYWNlIENlbGwgeyB9XHJcbiIsIjx0YWJsZSAjdGFibGUgY2xhc3M9XCJtYXQtdGFibGUgY3ViZS10YWJsZVwiIChtb3VzZWxlYXZlKT1cIl9tb3ZlKC0xLCAtMSlcIiAqbmdJZj1cImRhdGFcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8IS0tIGhlYWRlcnMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtaGVhZGVyLXJvd1wiPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiXHJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJfbW92ZSh4ICsgMSwgLTIpXCIgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIj5cclxuICAgICAgICB7eyBjb2x1bW4udmFsdWUgfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+e3t4QXhpc1RvdGFsTGFiZWx9fTwvdGg+XHJcbiAgICA8L3RyPlxyXG4gIDwvdGhlYWQ+XHJcbiAgPHRib2R5PlxyXG4gICAgPCEtLSByb3dzIC0tPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93czsgbGV0IHkgPSBpbmRleFwiIGNsYXNzPVwibWF0LXJvd1wiXHJcbiAgICAgICAgW2NsYXNzLmN1YmUtaW5kZXhdPVwicm93LmluZGV4XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIl9tb3ZlKC0yLCB5IClcIj57eyByb3cudmFsdWUgfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIlxyXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwiX21vdmUoeCArIDEsIHkgKVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSAhPT0gJzAnOyBlbHNlIHplcm9cIiBcclxuICAgICAgICAgIFtjbGFzcy5leHBsb3JhYmxlXT1cImludGVyYWN0aXZlICYmIGNvbHVtbi5leHBsb3JhYmxlICE9PSBmYWxzZSAmJiByb3cuZXhwbG9yYWJsZSAhPT0gZmFsc2VcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImV4cGxvcmUoY29sdW1uLCByb3cpXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJfbW92ZSgtMSwgeSApXCI+XHJcbiAgICAgICAge3sgZGF0YVtyb3cua2V5XVsnX3RvdGFsJ10gfX1cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGZvb3Q+XHJcbiAgICA8IS0tIGZvb3RlciAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1mb290ZXItcm93XCI+XHJcbiAgICAgIDx0ZCBjbGFzcz1cIm1hdC1mb290ZXItY2VsbFwiPnt7c2VyaWVzVG90YWxMYWJlbH19PC90ZD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWZvb3Rlci1jZWxsIGZpZ3VyZVwiXHJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJfbW92ZSh4ICsgMSwgLTIpXCJcclxuICAgICAgICAgIFtjbGFzcy5uZWdhdGl2ZS1maWd1cmVdPVwidG90YWxzW2NvbHVtbi5rZXldLnN0YXJ0c1dpdGgoJy0nKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbHNbY29sdW1uLmtleV0gIT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAge3sgdG90YWxzW2NvbHVtbi5rZXldIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1mb290ZXItY2VsbCBmaWd1cmVcIj57eyB0b3RhbHNbJ19ncmFuZCddIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Zm9vdD5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICN6ZXJvPjA8L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -36,7 +36,6 @@ export class CubeParallelComponent {
36
36
  this._palettes = value;
37
37
  }
38
38
  ngOnChanges(changes) {
39
- delete this.filters[this.xAxis];
40
39
  this._cube = this._session.profile.cubes.find(c => c.name === this.cube) || this._session.profile.cubes[0];
41
40
  this.format = (this._cube.currencyCode ? 'c' : 'n') + this._service.fractionDigits;
42
41
  if (changes['filters'])
@@ -131,10 +130,10 @@ export class CubeParallelComponent {
131
130
  }
132
131
  }
133
132
  CubeParallelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CubeParallelComponent, deps: [{ token: i1.PromptService }, { token: i2.CubeService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
134
- CubeParallelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CubeParallelComponent, selector: "bizdoc-cube-parallel", inputs: { filters: "filters", xAxis: "xAxis", series: "series", indices: "indices", cube: "cube", size: "size", chartType: "chartType", scope: "scope", palettes: "palettes" }, outputs: { onExplore: "explore" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px' [type]='s.chartType' [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\" xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\" [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"], components: [{ type: i4.SparklineComponent, selector: "ejs-sparkline", inputs: ["axisSettings", "border", "containerArea", "dataLabelSettings", "dataSource", "enablePersistence", "enableRtl", "endPointColor", "fill", "format", "height", "highPointColor", "lineWidth", "locale", "lowPointColor", "markerSettings", "negativePointColor", "opacity", "padding", "palette", "query", "rangeBandSettings", "rangePadding", "startPointColor", "theme", "tiePointColor", "tooltipSettings", "type", "useGroupingSeparator", "valueType", "width", "xName", "yName"], outputs: ["axisRendering", "dataLabelRendering", "load", "loaded", "markerRendering", "pointRegionMouseClick", "pointRegionMouseMove", "pointRendering", "resize", "seriesRendering", "sparklineMouseClick", "sparklineMouseMove", "tooltipInitialize"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
133
+ CubeParallelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CubeParallelComponent, selector: "bizdoc-cube-parallel", inputs: { filters: "filters", xAxis: "xAxis", series: "series", indices: "indices", cube: "cube", size: "size", chartType: "chartType", scope: "scope", palettes: "palettes" }, outputs: { onExplore: "explore" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px'\r\n [type]='s.chartType'\r\n [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\"\r\n xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\"\r\n [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [theme]=\"theme\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"], components: [{ type: i4.SparklineComponent, selector: "ejs-sparkline", inputs: ["axisSettings", "border", "containerArea", "dataLabelSettings", "dataSource", "enablePersistence", "enableRtl", "endPointColor", "fill", "format", "height", "highPointColor", "lineWidth", "locale", "lowPointColor", "markerSettings", "negativePointColor", "opacity", "padding", "palette", "query", "rangeBandSettings", "rangePadding", "startPointColor", "theme", "tiePointColor", "tooltipSettings", "type", "useGroupingSeparator", "valueType", "width", "xName", "yName"], outputs: ["axisRendering", "dataLabelRendering", "load", "loaded", "markerRendering", "pointRegionMouseClick", "pointRegionMouseMove", "pointRendering", "resize", "seriesRendering", "sparklineMouseClick", "sparklineMouseMove", "tooltipInitialize"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
135
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CubeParallelComponent, decorators: [{
136
135
  type: Component,
137
- args: [{ selector: 'bizdoc-cube-parallel', template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px' [type]='s.chartType' [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\" xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\" [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"] }]
136
+ args: [{ selector: 'bizdoc-cube-parallel', template: "<div *ngIf=\"items.length\" class=\"row\">\r\n <div *ngFor=\"let s of items\" class=\"element\">\r\n <ejs-sparkline [width]='width' height='100px'\r\n [type]='s.chartType'\r\n [id]=\"s.data.name\"\r\n [dataSource]=\"s.data.points\"\r\n xName=\"name\"\r\n yName=\"y\" [palette]=\"s.palette\"\r\n [format]=\"format\"\r\n valueType=\"Category\"\r\n [enableRtl]=\"enableRtl\"\r\n [border]=\"s.border\"\r\n [fill]=\"s.fill\"\r\n [theme]=\"theme\"\r\n [axisSettings]=\"axisSettings\"\r\n [markerSettings]=\"s.markerSettings\"\r\n (pointRegionMouseClick)=\"sprklineClick(s, $event)\"\r\n [tooltipSettings]=\"s.tooltipSettings\">\r\n </ejs-sparkline>\r\n <h4 class=\"mat-h4\">{{s.data.title}}</h4>\r\n </div>\r\n</div>\r\n", styles: [":host{padding:8px}.element{display:flex;flex-direction:column;align-items:center;flex:1 1 auto}\n"] }]
138
137
  }], ctorParameters: function () { return [{ type: i1.PromptService }, { type: i2.CubeService }, { type: i3.SessionService }]; }, propDecorators: { filters: [{
139
138
  type: Input
140
139
  }], xAxis: [{
@@ -157,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
157
156
  }], palettes: [{
158
157
  type: Input
159
158
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3BhcmFsbGVsL3BhcmFsbGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9wYXJhbGxlbC9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxXQUFXLEVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUU5QixNQUFNO0FBTU4sTUFBTSxPQUNFLHFCQUFxQjtJQTBDM0IsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUEzQnpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN0RCxVQUFLLEdBQWdDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEYsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBUWhELFVBQUssR0FBVyxFQUFFLENBQUM7UUFFVixp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S0FBSztzQkFESixLQUFLO2dCQUdHLFNBQVM7c0JBRGpCLE1BQU07dUJBQUMsU0FBUztnQkFRTixRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEF4aXNTZXR0aW5nc01vZGVsLCBJUG9pbnRSZWdpb25FdmVudEFyZ3MsIExpbmVTZXR0aW5nc01vZGVsLCBTcGFya2xpbmVUeXBlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2hhcnRzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVhFU19DT0RFX0RJVklERVIsIEN1YmVTZXJ2aWNlLCBlcnJSZXNvdXJjZSwgU2VyaWVzIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJdGVtIH0gZnJvbSAnLi9pdGVtJztcclxuaW1wb3J0IHsgU2NvcGVUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuLyoqICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtcGFyYWxsZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ3BhcmFsbGVsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgQ3ViZVBhcmFsbGVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzOiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgeEF4aXMhOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIHNlcmllcyE6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5kaWNlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgY2hhcnRUeXBlPzogU3BhcmtsaW5lVHlwZTtcclxuICBASW5wdXQoKVxyXG4gIHNjb3BlPzogU2NvcGVUeXBlO1xyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKVxyXG4gIHJlYWRvbmx5IG9uRXhwbG9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXhwbG9yZUV2ZW50PigpO1xyXG4gIHRoZW1lOiAnTWF0ZXJpYWwnIHwgJ01hdGVyaWFsRGFyaycgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnTWF0ZXJpYWxEYXJrJyA6ICdNYXRlcmlhbCc7XHJcbiAgcHJpdmF0ZSBfcGFsZXR0ZXMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgcHVibGljIGdldCBwYWxldHRlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wYWxldHRlcztcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHBhbGV0dGVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9wYWxldHRlcyA9IHZhbHVlO1xyXG4gIH1cclxuICBpdGVtczogSXRlbVtdID0gW107XHJcbiAgZm9ybWF0OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgYXhpc1NldHRpbmdzID0ge1xyXG4gICAgbGluZVNldHRpbmdzOiB7XHJcbiAgICB9IGFzIExpbmVTZXR0aW5nc01vZGVsLFxyXG4gIH0gYXMgQXhpc1NldHRpbmdzTW9kZWw7XHJcbiAgd2lkdGg6IHN0cmluZyA9ICcxNTBweCc7XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kYXRhOiBTZXJpZXNbXTtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIHJlYWRvbmx5IGVuYWJsZVJ0bCA9IHRoaXMuX3Nlc3Npb24uaW52ZXJzZTtcclxuICBwcml2YXRlIF9wcmltYXJ5ID0gdGhpcy5fc2Vzc2lvbi5wcmltZXJ5UGFsZXR0ZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG4gICAgdGhpcy5fbG9hZGluZy5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUob2sgPT4gdGhpcy5sb2FkaW5nID0gb2spO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBkZWxldGUgdGhpcy5maWx0ZXJzW3RoaXMueEF4aXMgYXMgc3RyaW5nXTtcclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKSB8fCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXNbMF07XHJcbiAgICB0aGlzLmZvcm1hdCA9ICh0aGlzLl9jdWJlLmN1cnJlbmN5Q29kZSA/ICdjJyA6ICduJykgKyB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzO1xyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSkgdGhpcy5faW5pdGlhbGl6ZSgpO1xyXG4gICAgZWxzZSBpZiAoY2hhbmdlc1snc2l6ZSddICYmIHRoaXMuaXRlbXMubGVuZ3RoKSB0aGlzLndpZHRoID0gTWF0aC5yb3VuZCh0aGlzLnNpemUgLyB0aGlzLml0ZW1zLmxlbmd0aCkgKyAncHgnO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nlc3Npb24udGhlbWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLlxyXG4gICAgICBzdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbERhcmsnIDogJ01hdGVyaWFsJztcclxuICAgICAgICB0aGlzLl9wcmltYXJ5ID0gdGhpcy5fc2Vzc2lvbi5wcmltZXJ5UGFsZXR0ZTtcclxuICAgICAgICB0aGlzLl9wYWxldHRlcyA9IHRoaXMuX3Nlc3Npb24uYWNjZW50UGFsZXR0ZTtcclxuICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9pbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5fbG9hZGluZy5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5fY3ViZS5uYW1lLCB0aGlzLnhBeGlzLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIGluZGljZXM6IHRoaXMuaW5kaWNlcyxcclxuICAgICAgZ3JvdXBJbmRpY2VzOiB0cnVlLFxyXG4gICAgICBzY29wZTogdGhpcy5zY29wZVxyXG4gICAgfSkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9kYXRhID0gcjtcclxuICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGgpIHRoaXMud2lkdGggPSBNYXRoLm1heChNYXRoLnJvdW5kKHRoaXMuc2l6ZSAvIHRoaXMuaXRlbXMubGVuZ3RoKSwgMTUwKSArICdweCc7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9LCAoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5fc2IuZXJyb3IoZXJyUmVzb3VyY2UoZSkpO1xyXG4gICAgICB0aGlzLl9sb2FkaW5nLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIGNvbnN0IGNvbG9yTWFwID0ge307XHJcbiAgICBsZXQgY29sb3JJbmRleCA9IDA7XHJcblxyXG4gICAgbGV0IG9yaWdpbmFsWEF4aXMgPSB0aGlzLmZpbHRlcnNbaXNBcnJheSh0aGlzLnhBeGlzKSA/IHRoaXMueEF4aXNbMF0gOiB0aGlzLnhBeGlzXSBhcyBzdHJpbmcgfCBzdHJpbmdbXSxcclxuICAgICAgb3JpZ2luYWxTZXJpZXMgPSB0aGlzLmZpbHRlcnNbaXNBcnJheSh0aGlzLnNlcmllcykgPyB0aGlzLnNlcmllc1swXSA6IHRoaXMuc2VyaWVzXSBhcyBzdHJpbmcgfCBzdHJpbmdbXTtcclxuXHJcbiAgICBpZiAoIWlzQXJyYXkob3JpZ2luYWxYQXhpcykpXHJcbiAgICAgIG9yaWdpbmFsWEF4aXMgPSBbb3JpZ2luYWxYQXhpc107XHJcbiAgICBpZiAoIWlzQXJyYXkob3JpZ2luYWxTZXJpZXMpKVxyXG4gICAgICBvcmlnaW5hbFNlcmllcyA9IFtvcmlnaW5hbFNlcmllc107XHJcbiAgICBsZXQgbWF4ID0gMDtcclxuICAgIHRoaXMuX2RhdGEuZm9yRWFjaChzID0+IHtcclxuICAgICAgaWYgKHMucG9pbnRzLmxlbmd0aCA8IDIpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjb25zdCBwYWxldHRlcyA9IFtdO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMucG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHBvaW50ID0gcy5wb2ludHNbaV0sIGNvbG9yID0gY29sb3JNYXBbcG9pbnQueF07XHJcbiAgICAgICAgaWYgKCFjb2xvcikge1xyXG4gICAgICAgICAgY29sb3IgPSBjb2xvck1hcFtwb2ludC54XSA9XHJcbiAgICAgICAgICAgIHMuaW5kZXhcclxuICAgICAgICAgICAgICB8fCAoIXRoaXMuaW5kaWNlcyAmJiBvcmlnaW5hbFhBeGlzLmluZGV4T2YocG9pbnQueCkgPiAtMVxyXG4gICAgICAgICAgICAgICAgJiYgb3JpZ2luYWxTZXJpZXMuaW5kZXhPZihzLm5hbWUpID4gLTEpXHJcbiAgICAgICAgICAgICAgPyB0aGlzLl9wcmltYXJ5W2NvbG9ySW5kZXhdIDogdGhpcy5fcGFsZXR0ZXNbY29sb3JJbmRleF07XHJcbiAgICAgICAgICBjb2xvckluZGV4Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhbGV0dGVzLnB1c2goY29sb3IpO1xyXG4gICAgICAgIGlmIChwb2ludC55ID4gbWF4KVxyXG4gICAgICAgICAgbWF4ID0gcG9pbnQueTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW1zLnB1c2gobmV3IEl0ZW0odGhpcy5jaGFydFR5cGUgfHwgJ1BpZScsXHJcbiAgICAgICAgcywgcGFsZXR0ZXMsIHMuaW5kZXggPyB0aGlzLl9wcmltYXJ5WzZdIDpcclxuICAgICAgICB0aGlzLl9wYWxldHRlc1s2XSkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmF4aXNTZXR0aW5ncy5tYXhZID0gbWF4O1xyXG4gIH1cclxuICBzcHJrbGluZUNsaWNrKGl0ZW06IEl0ZW0sIGV2dDogSVBvaW50UmVnaW9uRXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCBuYW1lID0gaXRlbS5kYXRhLm5hbWUsXHJcbiAgICAgIHggPSBpdGVtLmRhdGEucG9pbnRzW2V2dC5wb2ludEluZGV4XS54LCBpbmRleCA9IGl0ZW0uZGF0YS5pbmRleDtcclxuICAgIGNvbnN0IGF4ZXM6IHsgW2F4aXM6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICBsZXQgeyB4QXhpcywgc2VyaWVzIH0gPSB0aGlzO1xyXG4gICAgaWYgKCFpc0FycmF5KHhBeGlzKSkgeEF4aXMgPSBbeEF4aXNdO1xyXG4gICAgaWYgKCFpc0FycmF5KHNlcmllcykpIHhBeGlzID0gW3Nlcmllc107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKylcclxuICAgICAgYXhlc1tzZXJpZXNbaV1dID0gbmFtZS5zcGxpdChBWEVTX0NPREVfRElWSURFUilbaV07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhBeGlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGF4ZXNbeEF4aXNbaV1dID0geC5zcGxpdChBWEVTX0NPREVfRElWSURFUilbaV07XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRXhwbG9yZS5lbWl0KHtcclxuICAgICAgYXhlczogeyAuLi50aGlzLmZpbHRlcnMsIC4uLmF4ZXMgfSxcclxuICAgICAgaW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fbG9hZGluZy5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxvcmVFdmVudCB7XHJcbiAgYXhlczogQXhlc01hcDtcclxuICBpbmRleD86IHN0cmluZztcclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiaXRlbXMubGVuZ3RoXCIgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBzIG9mIGl0ZW1zXCIgY2xhc3M9XCJlbGVtZW50XCI+XHJcbiAgICA8ZWpzLXNwYXJrbGluZSBbd2lkdGhdPSd3aWR0aCcgaGVpZ2h0PScxMDBweCcgW3R5cGVdPSdzLmNoYXJ0VHlwZScgW2lkXT1cInMuZGF0YS5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInMuZGF0YS5wb2ludHNcIiB4TmFtZT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgeU5hbWU9XCJ5XCIgW3BhbGV0dGVdPVwicy5wYWxldHRlXCIgW2Zvcm1hdF09XCJmb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgdmFsdWVUeXBlPVwiQ2F0ZWdvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgW2VuYWJsZVJ0bF09XCJlbmFibGVSdGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW2JvcmRlcl09XCJzLmJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICBbZmlsbF09XCJzLmZpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW2F4aXNTZXR0aW5nc109XCJheGlzU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgW21hcmtlclNldHRpbmdzXT1cInMubWFya2VyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgKHBvaW50UmVnaW9uTW91c2VDbGljayk9XCJzcHJrbGluZUNsaWNrKHMsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBTZXR0aW5nc109XCJzLnRvb2x0aXBTZXR0aW5nc1wiPlxyXG4gICAgPC9lanMtc3BhcmtsaW5lPlxyXG4gICAgPGg0IGNsYXNzPVwibWF0LWg0XCI+e3tzLmRhdGEudGl0bGV9fTwvaDQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL3BhcmFsbGVsL3BhcmFsbGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9wYXJhbGxlbC9wYXJhbGxlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxXQUFXLEVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7OztBQUU5QixNQUFNO0FBTU4sTUFBTSxPQUNFLHFCQUFxQjtJQTBDM0IsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUEzQnpCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUN0RCxVQUFLLEdBQWdDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEYsY0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBUWhELFVBQUssR0FBVyxFQUFFLENBQUM7UUFFVixp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UUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBeGlzU2V0dGluZ3NNb2RlbCwgSVBvaW50UmVnaW9uRXZlbnRBcmdzLCBMaW5lU2V0dGluZ3NNb2RlbCwgU3BhcmtsaW5lVHlwZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0cyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFYRVNfQ09ERV9ESVZJREVSLCBDdWJlU2VydmljZSwgZXJyUmVzb3VyY2UsIFNlcmllcyB9IGZyb20gJy4uLy4uL2N1YmUvY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4vaXRlbSc7XHJcbmltcG9ydCB7IFNjb3BlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbi8qKiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXBhcmFsbGVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFyYWxsZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydwYXJhbGxlbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIEN1YmVQYXJhbGxlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgZmlsdGVyczogQXhlc01hcDtcclxuICBASW5wdXQoKVxyXG4gIHhBeGlzITogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KClcclxuICBzZXJpZXMhOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIGluZGljZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIGN1YmU6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNpemU6IG51bWJlcjtcclxuICBASW5wdXQoKVxyXG4gIGNoYXJ0VHlwZT86IFNwYXJrbGluZVR5cGU7XHJcbiAgQElucHV0KClcclxuICBzY29wZT86IFNjb3BlVHlwZTtcclxuICBAT3V0cHV0KCdleHBsb3JlJylcclxuICByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV4cGxvcmVFdmVudD4oKTtcclxuICB0aGVtZTogJ01hdGVyaWFsJyB8ICdNYXRlcmlhbERhcmsnID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gIHByaXZhdGUgX3BhbGV0dGVzID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gIHB1YmxpYyBnZXQgcGFsZXR0ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFsZXR0ZXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBwYWxldHRlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fcGFsZXR0ZXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgaXRlbXM6IEl0ZW1bXSA9IFtdO1xyXG4gIGZvcm1hdDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IGF4aXNTZXR0aW5ncyA9IHtcclxuICAgIGxpbmVTZXR0aW5nczoge1xyXG4gICAgfSBhcyBMaW5lU2V0dGluZ3NNb2RlbCxcclxuICB9IGFzIEF4aXNTZXR0aW5nc01vZGVsO1xyXG4gIHdpZHRoOiBzdHJpbmcgPSAnMTUwcHgnO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfZGF0YTogU2VyaWVzW107XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICByZWFkb25seSBlbmFibGVSdGwgPSB0aGlzLl9zZXNzaW9uLmludmVyc2U7XHJcbiAgcHJpdmF0ZSBfcHJpbWFyeSA9IHRoaXMuX3Nlc3Npb24ucHJpbWVyeVBhbGV0dGU7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpIHtcclxuICAgIHRoaXMuX2xvYWRpbmcucGlwZShkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKG9rID0+IHRoaXMubG9hZGluZyA9IG9rKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLmN1YmUpIHx8IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIHRoaXMuZm9ybWF0ID0gKHRoaXMuX2N1YmUuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nKSArIHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHM7XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddKSB0aGlzLl9pbml0aWFsaXplKCk7XHJcbiAgICBlbHNlIGlmIChjaGFuZ2VzWydzaXplJ10gJiYgdGhpcy5pdGVtcy5sZW5ndGgpIHRoaXMud2lkdGggPSBNYXRoLnJvdW5kKHRoaXMuc2l6ZSAvIHRoaXMuaXRlbXMubGVuZ3RoKSArICdweCc7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuXHJcbiAgICAgIHN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICB0aGlzLnRoZW1lID0gdC5kYXJrID8gJ01hdGVyaWFsRGFyaycgOiAnTWF0ZXJpYWwnO1xyXG4gICAgICAgIHRoaXMuX3ByaW1hcnkgPSB0aGlzLl9zZXNzaW9uLnByaW1lcnlQYWxldHRlO1xyXG4gICAgICAgIHRoaXMuX3BhbGV0dGVzID0gdGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlO1xyXG4gICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2luaXRpYWxpemUoKSB7XHJcbiAgICB0aGlzLl9sb2FkaW5nLm5leHQodHJ1ZSk7XHJcbiAgICBjb25zdCBmaWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMgfTtcclxuXHJcbiAgICB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLl9jdWJlLm5hbWUsIHRoaXMueEF4aXMsIHtcclxuICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcclxuICAgICAgZmlsdGVycyxcclxuICAgICAgaW5kaWNlczogdGhpcy5pbmRpY2VzLFxyXG4gICAgICBncm91cEluZGljZXM6IHRydWUsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICB9KS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgIHRoaXMuX2RhdGEgPSByO1xyXG4gICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCkgdGhpcy53aWR0aCA9IE1hdGgubWF4KE1hdGgucm91bmQodGhpcy5zaXplIC8gdGhpcy5pdGVtcy5sZW5ndGgpLCAxNTApICsgJ3B4JztcclxuICAgICAgdGhpcy5fbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgIH0sIChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLl9zYi5lcnJvcihlcnJSZXNvdXJjZShlKSk7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgY29uc3QgY29sb3JNYXAgPSB7fTtcclxuICAgIGxldCBjb2xvckluZGV4ID0gMDtcclxuXHJcbiAgICBsZXQgb3JpZ2luYWxYQXhpcyA9IHRoaXMuZmlsdGVyc1tpc0FycmF5KHRoaXMueEF4aXMpID8gdGhpcy54QXhpc1swXSA6IHRoaXMueEF4aXNdIGFzIHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgICBvcmlnaW5hbFNlcmllcyA9IHRoaXMuZmlsdGVyc1tpc0FycmF5KHRoaXMuc2VyaWVzKSA/IHRoaXMuc2VyaWVzWzBdIDogdGhpcy5zZXJpZXNdIGFzIHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuICAgIGlmICghaXNBcnJheShvcmlnaW5hbFhBeGlzKSlcclxuICAgICAgb3JpZ2luYWxYQXhpcyA9IFtvcmlnaW5hbFhBeGlzXTtcclxuICAgIGlmICghaXNBcnJheShvcmlnaW5hbFNlcmllcykpXHJcbiAgICAgIG9yaWdpbmFsU2VyaWVzID0gW29yaWdpbmFsU2VyaWVzXTtcclxuICAgIGxldCBtYXggPSAwO1xyXG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICBpZiAocy5wb2ludHMubGVuZ3RoIDwgMilcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNvbnN0IHBhbGV0dGVzID0gW107XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5wb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnQgPSBzLnBvaW50c1tpXSwgY29sb3IgPSBjb2xvck1hcFtwb2ludC54XTtcclxuICAgICAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgICAgICBjb2xvciA9IGNvbG9yTWFwW3BvaW50LnhdID1cclxuICAgICAgICAgICAgcy5pbmRleFxyXG4gICAgICAgICAgICAgIHx8ICghdGhpcy5pbmRpY2VzICYmIG9yaWdpbmFsWEF4aXMuaW5kZXhPZihwb2ludC54KSA+IC0xXHJcbiAgICAgICAgICAgICAgICAmJiBvcmlnaW5hbFNlcmllcy5pbmRleE9mKHMubmFtZSkgPiAtMSlcclxuICAgICAgICAgICAgICA/IHRoaXMuX3ByaW1hcnlbY29sb3JJbmRleF0gOiB0aGlzLl9wYWxldHRlc1tjb2xvckluZGV4XTtcclxuICAgICAgICAgIGNvbG9ySW5kZXgrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFsZXR0ZXMucHVzaChjb2xvcik7XHJcbiAgICAgICAgaWYgKHBvaW50LnkgPiBtYXgpXHJcbiAgICAgICAgICBtYXggPSBwb2ludC55O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChuZXcgSXRlbSh0aGlzLmNoYXJ0VHlwZSB8fCAnUGllJyxcclxuICAgICAgICBzLCBwYWxldHRlcywgcy5pbmRleCA/IHRoaXMuX3ByaW1hcnlbNl0gOlxyXG4gICAgICAgIHRoaXMuX3BhbGV0dGVzWzZdKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXhpc1NldHRpbmdzLm1heFkgPSBtYXg7XHJcbiAgfVxyXG4gIHNwcmtsaW5lQ2xpY2soaXRlbTogSXRlbSwgZXZ0OiBJUG9pbnRSZWdpb25FdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IG5hbWUgPSBpdGVtLmRhdGEubmFtZSxcclxuICAgICAgeCA9IGl0ZW0uZGF0YS5wb2ludHNbZXZ0LnBvaW50SW5kZXhdLngsIGluZGV4ID0gaXRlbS5kYXRhLmluZGV4O1xyXG4gICAgY29uc3QgYXhlczogeyBbYXhpczogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIGxldCB7IHhBeGlzLCBzZXJpZXMgfSA9IHRoaXM7XHJcbiAgICBpZiAoIWlzQXJyYXkoeEF4aXMpKSB4QXhpcyA9IFt4QXhpc107XHJcbiAgICBpZiAoIWlzQXJyYXkoc2VyaWVzKSkgeEF4aXMgPSBbc2VyaWVzXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICBheGVzW3Nlcmllc1tpXV0gPSBuYW1lLnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeEF4aXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYXhlc1t4QXhpc1tpXV0gPSB4LnNwbGl0KEFYRVNfQ09ERV9ESVZJREVSKVtpXTtcclxuICAgIH1cclxuICAgIHRoaXMub25FeHBsb3JlLmVtaXQoe1xyXG4gICAgICBheGVzOiB7IC4uLnRoaXMuZmlsdGVycywgLi4uYXhlcyB9LFxyXG4gICAgICBpbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9sb2FkaW5nLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhwbG9yZUV2ZW50IHtcclxuICBheGVzOiBBeGVzTWFwO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJpdGVtcy5sZW5ndGhcIiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IHMgb2YgaXRlbXNcIiBjbGFzcz1cImVsZW1lbnRcIj5cclxuICAgIDxlanMtc3BhcmtsaW5lIFt3aWR0aF09J3dpZHRoJyBoZWlnaHQ9JzEwMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgW3R5cGVdPSdzLmNoYXJ0VHlwZSdcclxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJzLmRhdGEubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJzLmRhdGEucG9pbnRzXCJcclxuICAgICAgICAgICAgICAgICAgIHhOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICB5TmFtZT1cInlcIiBbcGFsZXR0ZV09XCJzLnBhbGV0dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJmb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgdmFsdWVUeXBlPVwiQ2F0ZWdvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgW2VuYWJsZVJ0bF09XCJlbmFibGVSdGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW2JvcmRlcl09XCJzLmJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICBbZmlsbF09XCJzLmZpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW3RoZW1lXT1cInRoZW1lXCJcclxuICAgICAgICAgICAgICAgICAgIFtheGlzU2V0dGluZ3NdPVwiYXhpc1NldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgIFttYXJrZXJTZXR0aW5nc109XCJzLm1hcmtlclNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgIChwb2ludFJlZ2lvbk1vdXNlQ2xpY2spPVwic3Bya2xpbmVDbGljayhzLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIFt0b29sdGlwU2V0dGluZ3NdPVwicy50b29sdGlwU2V0dGluZ3NcIj5cclxuICAgIDwvZWpzLXNwYXJrbGluZT5cclxuICAgIDxoNCBjbGFzcz1cIm1hdC1oNFwiPnt7cy5kYXRhLnRpdGxlfX08L2g0PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19