@litigiovirtual/ius-design-components 1.0.73 → 1.0.75

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.
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
112
112
  }], buttonClicked: [{
113
113
  type: Output
114
114
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBWXBGLE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFTVyxpQkFBWSxHQUFHLE9BQU8sQ0FBQztRQUl2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUVyQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkQsVUFBSyxHQUFnQixTQUFTLENBQUM7S0FrRmhDO0lBL0VDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMs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QUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxDQUFDOzhCQU12RCxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSWNvbk1kQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1tZC9pY29uLW1kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDaXJjbGVDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nLWNpcmNsZS9sb2FkaW5nLWNpcmNsZS5jb21wb25lbnQnO1xyXG5cclxudHlwZSBCdXR0b25SZXN1bHQgPSAnc3VjY2VzcycgfCAnZXJyb3InIHwgdW5kZWZpbmVkO1xyXG50eXBlIEJ1dHRvblN0YXRlID0gJ2RlZmF1bHQnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdkaXNhYmxlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2l1cy1idXR0b24tZHluYW1pYycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMb2FkaW5nQ2lyY2xlQ29tcG9uZW50LCBJY29uTWRDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZHluYW1pYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkR5bmFtaWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGxhYmVsRGVmYXVsdCA9ICdMYWJlbCc7XHJcbiAgQElucHV0KCkgbGFiZWxTdWNjZXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhYmVsRXJyb3I/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlc3VsdDogQnV0dG9uUmVzdWx0O1xyXG5cclxuICBASW5wdXQoKSBhdXRvUmVzZXQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGF1dG9SZXNldERlbGF5ID0gMTUwMDtcclxuXHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHN0YXRlOiBCdXR0b25TdGF0ZSA9ICdkZWZhdWx0JztcclxuICBwcml2YXRlIHJlc2V0VGltZXI6IGFueTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMubGFiZWxTdWNjZXNzKSB7XHJcbiAgICAgIHRoaXMubGFiZWxTdWNjZXNzID0gdGhpcy5sYWJlbERlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubGFiZWxFcnJvcikge1xyXG4gICAgICB0aGlzLmxhYmVsRXJyb3IgPSB0aGlzLmxhYmVsRGVmYXVsdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIC8vIDEpIGRpc2FibGVkIG1hbmRhIHRvZG8gYSAnZGlzYWJsZWQnXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKCdkaXNhYmxlZCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMikgbG9hZGluZyBnb2JpZXJuYSBtaWVudHJhcyBlcyB0cnVlXHJcbiAgICBpZiAoY2hhbmdlc1snbG9hZGluZyddKSB7XHJcbiAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKCdsb2FkaW5nJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGxvYWRpbmcg4oaSIGZhbHNlOiBtaXJhciByZXN1bHRcclxuICAgICAgICB0aGlzLmFwcGx5UmVzdWx0U3RhdGUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAzKSBTaSBjYW1iacOzICdyZXN1bHQnIHkgbm8gZXN0YW1vcyBjYXJnYW5kbywgYXBsaWNhclxyXG4gICAgaWYgKGNoYW5nZXNbJ3Jlc3VsdCddICYmICF0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgdGhpcy5hcHBseVJlc3VsdFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gNCkgZmFsbGJhY2tcclxuICAgIGlmICghdGhpcy5sb2FkaW5nICYmICF0aGlzLnJlc3VsdCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKCdkZWZhdWx0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVJlc3VsdFN0YXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVzdWx0ID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnc3VjY2VzcycpO1xyXG4gICAgICB0aGlzLmFybUF1dG9SZXNldCgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc3VsdCA9PT0gJ2Vycm9yJykge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKCdlcnJvcicpO1xyXG4gICAgICB0aGlzLmFybUF1dG9SZXNldCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZGVmYXVsdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJtQXV0b1Jlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclRpbWVyKCk7XHJcbiAgICBpZiAoIXRoaXMuYXV0b1Jlc2V0KSByZXR1cm47XHJcbiAgICB0aGlzLnJlc2V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZGVmYXVsdCcpO1xyXG4gICAgfSwgdGhpcy5hdXRvUmVzZXREZWxheSk7XHJcbiAgfVxyXG5cclxuICBjbGVhclRpbWVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVzZXRUaW1lcikge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNldFRpbWVyKTtcclxuICAgICAgdGhpcy5yZXNldFRpbWVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFN0YXRlKHM6IEJ1dHRvblN0YXRlKSB7XHJcbiAgICB0aGlzLnN0YXRlID0gcztcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2xvYWRpbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdkaXNhYmxlZCcpIHJldHVybjtcclxuICAgIHRoaXMuYnV0dG9uQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJUaW1lcigpO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIGNsYXNzPVwiaXVzLWJ0blwiIFthdHRyLmRhdGEtc3RhdGVdPVwic3RhdGVcIiBbZGlzYWJsZWRdPVwic3RhdGUgPT09ICdkaXNhYmxlZCcgfHwgc3RhdGUgPT09ICdsb2FkaW5nJ1wiXHJcbiAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxyXG4gIEBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgQGNhc2UgKCdsb2FkaW5nJykge1xyXG4gIDxpdXMtbG9hZGluZy1jaXJjbGU+PC9pdXMtbG9hZGluZy1jaXJjbGU+XHJcbiAgfVxyXG4gIEBjYXNlICgnc3VjY2VzcycpIHtcclxuICA8aXVzLWljb24tbWQgaWNvbk5hbWU9XCJpY29uLWNoZWNrLWNpcmNsZVwiPjwvaXVzLWljb24tbWQ+XHJcbiAgPHNwYW4+e3sgbGFiZWxTdWNjZXNzIH19PC9zcGFuPlxyXG4gIH1cclxuICBAY2FzZSAoJ2Vycm9yJykge1xyXG4gIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24tZXJyb3JcIj48L2l1cy1pY29uLW1kPlxyXG4gIDxzcGFuPnt7IGxhYmVsRXJyb3IgfX08L3NwYW4+XHJcbiAgfVxyXG4gIEBkZWZhdWx0IHtcclxuICA8c3Bhbj57eyBsYWJlbERlZmF1bHQgfX08L3NwYW4+XHJcbiAgfVxyXG4gIH1cclxuPC9idXR0b24+Il19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBWXBGLE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFTVyxpQkFBWSxHQUFHLE9BQU8sQ0FBQztRQUl2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUVyQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkQsVUFBSyxHQUFnQixTQUFTLENBQUM7S0FrRmhDO0lBL0VDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMs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QUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxDQUFDOzhCQU12RCxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSWNvbk1kQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1tZC9pY29uLW1kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDaXJjbGVDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nLWNpcmNsZS9sb2FkaW5nLWNpcmNsZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgQnV0dG9uUmVzdWx0ID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8IHVuZGVmaW5lZDtcclxudHlwZSBCdXR0b25TdGF0ZSA9ICdkZWZhdWx0JyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnZGlzYWJsZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLWR5bmFtaWMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9hZGluZ0NpcmNsZUNvbXBvbmVudCwgSWNvbk1kQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2J1dHRvbi1keW5hbWljLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdXR0b25EeW5hbWljQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBsYWJlbERlZmF1bHQgPSAnTGFiZWwnO1xyXG4gIEBJbnB1dCgpIGxhYmVsU3VjY2Vzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBsYWJlbEVycm9yPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZXN1bHQ6IEJ1dHRvblJlc3VsdDtcclxuXHJcbiAgQElucHV0KCkgYXV0b1Jlc2V0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhdXRvUmVzZXREZWxheSA9IDE1MDA7XHJcblxyXG4gIEBPdXRwdXQoKSBidXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBzdGF0ZTogQnV0dG9uU3RhdGUgPSAnZGVmYXVsdCc7XHJcbiAgcHJpdmF0ZSByZXNldFRpbWVyOiBhbnk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmxhYmVsU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLmxhYmVsU3VjY2VzcyA9IHRoaXMubGFiZWxEZWZhdWx0O1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmxhYmVsRXJyb3IpIHtcclxuICAgICAgdGhpcy5sYWJlbEVycm9yID0gdGhpcy5sYWJlbERlZmF1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvLyAxKSBkaXNhYmxlZCBtYW5kYSB0b2RvIGEgJ2Rpc2FibGVkJ1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIpIGxvYWRpbmcgZ29iaWVybmEgbWllbnRyYXMgZXMgdHJ1ZVxyXG4gICAgaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSgnbG9hZGluZycpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBsb2FkaW5nIOKGkiBmYWxzZTogbWlyYXIgcmVzdWx0XHJcbiAgICAgICAgdGhpcy5hcHBseVJlc3VsdFN0YXRlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMykgU2kgY2FtYmnDsyAncmVzdWx0JyB5IG5vIGVzdGFtb3MgY2FyZ2FuZG8sIGFwbGljYXJcclxuICAgIGlmIChjaGFuZ2VzWydyZXN1bHQnXSAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlSZXN1bHRTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDQpIGZhbGxiYWNrXHJcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAhdGhpcy5yZXN1bHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZGVmYXVsdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlSZXN1bHRTdGF0ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdCA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ3N1Y2Nlc3MnKTtcclxuICAgICAgdGhpcy5hcm1BdXRvUmVzZXQoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZXN1bHQgPT09ICdlcnJvcicpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZXJyb3InKTtcclxuICAgICAgdGhpcy5hcm1BdXRvUmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2RlZmF1bHQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFybUF1dG9SZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJUaW1lcigpO1xyXG4gICAgaWYgKCF0aGlzLmF1dG9SZXNldCkgcmV0dXJuO1xyXG4gICAgdGhpcy5yZXNldFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2RlZmF1bHQnKTtcclxuICAgIH0sIHRoaXMuYXV0b1Jlc2V0RGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJUaW1lcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlc2V0VGltZXIpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzZXRUaW1lcik7XHJcbiAgICAgIHRoaXMucmVzZXRUaW1lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTdGF0ZShzOiBCdXR0b25TdGF0ZSkge1xyXG4gICAgdGhpcy5zdGF0ZSA9IHM7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdsb2FkaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnZGlzYWJsZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyVGltZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvbiBjbGFzcz1cIml1cy1idG5cIiBbYXR0ci5kYXRhLXN0YXRlXT1cInN0YXRlXCIgW2Rpc2FibGVkXT1cInN0YXRlID09PSAnZGlzYWJsZWQnIHx8IHN0YXRlID09PSAnbG9hZGluZydcIlxyXG4gIChjbGljayk9XCJvbkNsaWNrKClcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cclxuICBAc3dpdGNoIChzdGF0ZSkge1xyXG4gIEBjYXNlICgnbG9hZGluZycpIHtcclxuICA8aXVzLWxvYWRpbmctY2lyY2xlPjwvaXVzLWxvYWRpbmctY2lyY2xlPlxyXG4gIH1cclxuICBAY2FzZSAoJ3N1Y2Nlc3MnKSB7XHJcbiAgPGl1cy1pY29uLW1kIGljb25OYW1lPVwiaWNvbi1jaGVjay1jaXJjbGVcIj48L2l1cy1pY29uLW1kPlxyXG4gIDxzcGFuPnt7IGxhYmVsU3VjY2VzcyB9fTwvc3Bhbj5cclxuICB9XHJcbiAgQGNhc2UgKCdlcnJvcicpIHtcclxuICA8aXVzLWljb24tbWQgaWNvbk5hbWU9XCJpY29uLWVycm9yXCI+PC9pdXMtaWNvbi1tZD5cclxuICA8c3Bhbj57eyBsYWJlbEVycm9yIH19PC9zcGFuPlxyXG4gIH1cclxuICBAZGVmYXVsdCB7XHJcbiAgPHNwYW4+e3sgbGFiZWxEZWZhdWx0IH19PC9zcGFuPlxyXG4gIH1cclxuICB9XHJcbjwvYnV0dG9uPiJdfQ==
@@ -0,0 +1,234 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, Output, EventEmitter, computed, signal, ViewChild } from '@angular/core';
3
+ import { PopoverDirective } from '../directives/popover.directive';
4
+ import * as i0 from "@angular/core";
5
+ export class IusChartsBarGroupedComponent {
6
+ constructor(zone) {
7
+ this.zone = zone;
8
+ this.data = [];
9
+ this.legendPosition = 'bottom';
10
+ // Márgenes (left = ancho panel eje Y)
11
+ this.margin = { top: 24, right: 16, bottom: 34, left: 40 };
12
+ // Layout X fijo
13
+ this.barWidth = 11;
14
+ this.barGap = 2;
15
+ this.groupGap = 40;
16
+ this.outerGap = 18;
17
+ // Estilo barra
18
+ this.barRadius = 5;
19
+ this.ticks = 5;
20
+ // Fallbacks si no hay tamaño CSS externo
21
+ this.width = 640;
22
+ this.size = 320;
23
+ this.maxLabelChars = 10;
24
+ this.barClick = new EventEmitter();
25
+ // Estado
26
+ this._bars = signal([]);
27
+ this._groups = signal([]);
28
+ this._series = signal([]);
29
+ this._colors = signal({});
30
+ this._yMax = signal(0);
31
+ this._paneH = signal(0); // alto real del panel superior
32
+ this._plotW = signal(0); // ancho visible del plot
33
+ this._plotWidth = signal(0); // ancho virtual del SVG derecho
34
+ this._groupCenters = signal([]);
35
+ this._barStripes = signal([]);
36
+ this.bars = computed(() => this._bars());
37
+ this.groups = computed(() => this._groups());
38
+ this.series = computed(() => this._series());
39
+ this.colors = computed(() => this._colors());
40
+ this.yScaleMax = computed(() => this._yMax());
41
+ this.chartHeight = computed(() => this._paneH() || this.size); // ← altura para ambos SVG
42
+ this.plotWidth = computed(() => this._plotWidth());
43
+ this.groupCenters = computed(() => this._groupCenters());
44
+ this.barStripes = computed(() => this._barStripes());
45
+ this.innerHeight = computed(() => Math.max(this.chartHeight() - this.margin.top - this.margin.bottom, 0));
46
+ // viewBox por SVG
47
+ this.axisViewBox = computed(() => `0 0 ${this.margin.left} ${this.chartHeight()}`);
48
+ this.plotViewBox = computed(() => `0 0 ${this.plotWidth()} ${this.chartHeight()}`);
49
+ this.Math = Math;
50
+ }
51
+ ngAfterViewInit() {
52
+ // Medición inicial SIN esperar al primer tick del RO
53
+ this.measureNow();
54
+ // Observa alto (panes) y ancho visible (plotCtn)
55
+ this.ro = new ResizeObserver(() => {
56
+ this.zone.run(() => {
57
+ const changed = this.measureNow();
58
+ if (changed)
59
+ this.recalc();
60
+ });
61
+ });
62
+ this.ro.observe(this.panesRef.nativeElement);
63
+ this.ro.observe(this.plotCtn.nativeElement);
64
+ // Primer cálculo
65
+ this.recalc();
66
+ }
67
+ ngOnDestroy() { this.ro?.disconnect(); }
68
+ ngOnChanges() { this.recalc(); }
69
+ // Devuelve true si cambió algo.
70
+ measureNow() {
71
+ const paneH = Math.floor(this.panesRef?.nativeElement?.clientHeight || 0);
72
+ const plotW = Math.floor(this.plotCtn?.nativeElement?.clientWidth || 0);
73
+ let changed = false;
74
+ if (paneH && paneH !== this._paneH()) {
75
+ this._paneH.set(paneH);
76
+ changed = true;
77
+ }
78
+ if (plotW && plotW !== this._plotW()) {
79
+ this._plotW.set(plotW);
80
+ changed = true;
81
+ }
82
+ // Si no hay valores aún (por render temprano), usa fallbacks para no quedarte en 0
83
+ if (!this._paneH()) {
84
+ this._paneH.set(this.size);
85
+ changed = true;
86
+ }
87
+ if (!this._plotW()) {
88
+ this._plotW.set(this.width - this.margin.left);
89
+ changed = true;
90
+ }
91
+ return changed;
92
+ }
93
+ recalc() {
94
+ const cleaned = (this.data ?? []).map(g => ({
95
+ label: g.label,
96
+ items: (g.items ?? []).filter(i => Number(i?.value) >= 0)
97
+ })).filter(x => x.items.length > 0);
98
+ const groups = cleaned.map(g => g.label);
99
+ // series + orden
100
+ const seriesSet = new Set();
101
+ for (const g of cleaned)
102
+ for (const it of g.items)
103
+ seriesSet.add(it.label);
104
+ let series = Array.from(seriesSet);
105
+ if (this.seriesOrder?.length) {
106
+ const order = new Map(this.seriesOrder.map((k, idx) => [k, idx]));
107
+ series.sort((a, b) => (order.get(a) ?? 1e9) - (order.get(b) ?? 1e9));
108
+ }
109
+ // colores por serie
110
+ const palette = [
111
+ '#2167FF', // Info-500
112
+ '#0A2893', // Info-800
113
+ '#40CAE9', // Primary-400
114
+ '#5892FF', // Info-400
115
+ '#08A6DB', // Primary-500
116
+ '#C4DFFF', // Info-200
117
+ ];
118
+ const colorMap = {};
119
+ series.forEach((s, i) => colorMap[s] = palette[i % palette.length]);
120
+ // normalizar
121
+ const normalized = cleaned.map(g => {
122
+ const map = new Map(g.items.map(i => [i.label, i]));
123
+ const items = series.map(s => {
124
+ const i = map.get(s);
125
+ return { label: s, value: i?.value ?? 0, color: i?.color ?? colorMap[s] };
126
+ });
127
+ return { label: g.label, items };
128
+ });
129
+ // Y máx
130
+ const maxValue = Math.max(0, ...normalized.flatMap(g => g.items.map(i => i.value)));
131
+ const yMax = this.yMax && this.yMax > 0 ? this.yMax : this.niceMax(maxValue);
132
+ this._yMax.set(yMax);
133
+ // dimensiones visibles del panel derecho
134
+ const visibleW = this._plotW() || (this.width - this.margin.left);
135
+ // ===== Layout X con outerGap =====
136
+ const G = normalized.length;
137
+ const S = series.length;
138
+ const groupInnerWidth = S * this.barWidth + Math.max(0, S - 1) * this.barGap;
139
+ const innerNaturalWidth = Math.max(0, (this.outerGap * 2) + G * groupInnerWidth + Math.max(0, G - 1) * this.groupGap);
140
+ const innerVisibleWidth = Math.max(visibleW - this.margin.right, 0);
141
+ const innerVirtualWidth = Math.max(innerVisibleWidth, innerNaturalWidth);
142
+ const plotWidth = innerVirtualWidth + this.margin.right; // solo margen derecho en el SVG derecho
143
+ this._plotWidth.set(plotWidth);
144
+ // rects + franjas
145
+ const ih = this.innerHeight();
146
+ const bars = [];
147
+ const centers = [];
148
+ const stripes = [];
149
+ let cursor = this.outerGap;
150
+ normalized.forEach(g => {
151
+ const startX = cursor;
152
+ const center = startX + groupInnerWidth / 2;
153
+ centers.push(center);
154
+ g.items.forEach((it, si) => {
155
+ const x = startX + si * (this.barWidth + this.barGap);
156
+ // franja por barra
157
+ stripes.push({ x, width: this.barWidth });
158
+ const h = it.value <= 0 ? 0 : (it.value / yMax) * ih;
159
+ const y = this.margin.top + ih - h;
160
+ bars.push({
161
+ groupLabel: g.label,
162
+ seriesLabel: it.label,
163
+ value: it.value,
164
+ x, y,
165
+ width: this.barWidth,
166
+ height: h,
167
+ color: it.color ?? colorMap[it.label]
168
+ });
169
+ });
170
+ cursor += groupInnerWidth + this.groupGap;
171
+ });
172
+ this._bars.set(bars);
173
+ this._groups.set(groups);
174
+ this._series.set(series);
175
+ this._colors.set(colorMap);
176
+ this._groupCenters.set(centers);
177
+ this._barStripes.set(stripes);
178
+ }
179
+ niceMax(maxVal) {
180
+ if (maxVal <= 0)
181
+ return 1;
182
+ const exp = Math.floor(Math.log10(maxVal));
183
+ const base = Math.pow(10, exp);
184
+ const n = Math.ceil(maxVal / base);
185
+ const nice = n <= 2 ? 2 : n <= 5 ? 5 : 10;
186
+ return nice * base;
187
+ }
188
+ getY(value) {
189
+ const ih = this.innerHeight();
190
+ const max = this.yScaleMax();
191
+ return this.margin.top + ih - (value / max) * ih;
192
+ }
193
+ get yTicksArr() {
194
+ const max = this.yScaleMax();
195
+ const n = Math.max(2, this.ticks | 0);
196
+ const step = max / n;
197
+ const arr = [];
198
+ for (let i = 0; i <= n; i++)
199
+ arr.push(+((i * step)).toFixed(2));
200
+ return arr;
201
+ }
202
+ shortLabel(lbl) {
203
+ return lbl.length > this.maxLabelChars ? (lbl.slice(0, this.maxLabelChars - 1) + '…') : lbl;
204
+ }
205
+ formatTooltip(b) {
206
+ return `${b.groupLabel} — ${b.seriesLabel}: ${b.value}`;
207
+ }
208
+ onBarClick(b) {
209
+ this.barClick.emit({ group: b.groupLabel, series: b.seriesLabel, value: b.value });
210
+ }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IusChartsBarGroupedComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: IusChartsBarGroupedComponent, isStandalone: true, selector: "ius-charts-bar-grouped", inputs: { data: "data", legendPosition: "legendPosition", seriesOrder: "seriesOrder", maxLabelChars: "maxLabelChars" }, outputs: { barClick: "barClick" }, viewQueries: [{ propertyName: "panesRef", first: true, predicate: ["panes"], descendants: true, static: true }, { propertyName: "plotCtn", first: true, predicate: ["plotCtn"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-wrapper\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n <div class=\"panes\" #panes>\r\n <div class=\"axis-ctn\">\r\n <svg class=\"chart-axis\"\r\n [attr.viewBox]=\"axisViewBox()\"\r\n preserveAspectRatio=\"xMinYMin meet\"\r\n [style.width.px]=\"margin.left\"\r\n [style.height.px]=\"chartHeight()\">\r\n @for (t of yTicksArr; track t) {\r\n <text class=\"y-tick body-sm\"\r\n [attr.x]=\"margin.left - 6\"\r\n [attr.y]=\"getY(t)\"\r\n text-anchor=\"end\"\r\n dominant-baseline=\"middle\">\r\n {{ t }}\r\n </text>\r\n }\r\n </svg>\r\n </div>\r\n\r\n <div class=\"plot-ctn scrollable-small\" #plotCtn>\r\n <svg class=\"chart\"\r\n [attr.viewBox]=\"plotViewBox()\"\r\n preserveAspectRatio=\"xMinYMin meet\"\r\n [style.width.px]=\"plotWidth()\"\r\n [style.height.px]=\"chartHeight()\">\r\n\r\n @for (s of barStripes(); track s.x) {\r\n <rect class=\"bar-stripe\"\r\n [attr.x]=\"s.x\"\r\n [attr.y]=\"margin.top\"\r\n [attr.width]=\"s.width\"\r\n [attr.height]=\"innerHeight()\"></rect>\r\n }\r\n\r\n @for (t of yTicksArr; track t) {\r\n <line class=\"grid-line\"\r\n [attr.x1]=\"0\"\r\n [attr.x2]=\"plotWidth() - margin.right\"\r\n [attr.y1]=\"getY(t)\" [attr.y2]=\"getY(t)\"/>\r\n }\r\n\r\n @for (g of groups(); track g; let i = $index) {\r\n <text class=\"x-label body-sm\"\r\n [attr.x]=\"groupCenters()[i]\"\r\n [attr.y]=\"chartHeight() - margin.bottom + 22\"\r\n text-anchor=\"middle\">\r\n {{ shortLabel(g) }} <title>{{ g }}</title>\r\n </text>\r\n }\r\n\r\n @for (b of bars(); track b.groupLabel + '_' + b.seriesLabel) {\r\n <rect class=\"bar\"\r\n [attr.x]=\"b.x\"\r\n [attr.y]=\"b.y\"\r\n [attr.width]=\"b.width\"\r\n [attr.height]=\"Math.max(b.height, 0)\"\r\n [attr.fill]=\"b.color\"\r\n [attr.rx]=\"barRadius\"\r\n [attr.ry]=\"barRadius\"\r\n [iusPopoverContent]=\"formatTooltip(b)\"\r\n (click)=\"onBarClick(b)\"/>\r\n }\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-- Leyenda -->\r\n <div class=\"legend\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n @for (s of series(); track s) {\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"colors()[s]\"></span>\r\n <span class=\"label caption-sm\">{{ s }}</span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}:host{display:block;max-width:100%;min-height:0}.chart-wrapper{display:grid;grid-template-columns:1fr auto;column-gap:16px;height:100%;min-height:0;align-items:start}.chart-wrapper.bottom{grid-template-columns:1fr;grid-template-rows:1fr auto;row-gap:12px}.panes{display:grid;grid-template-columns:auto 1fr;height:100%;min-height:0}.axis-ctn{height:100%;min-height:0;overflow:hidden}.plot-ctn{width:100%;height:100%;min-height:0;overflow-x:auto;overflow-y:hidden}.chart-wrapper,.panes,.axis-ctn,.plot-ctn{min-height:0}.chart,.chart-axis{display:block}.grid-line{stroke:#1f293729;stroke-width:1;stroke-dasharray:3 3}.y-tick,.x-label{fill:#000000b3}.bar-stripe{fill:#d6dbed66;pointer-events:none}.bar{cursor:pointer;transition:opacity .15s ease,transform .15s ease;pointer-events:all}.bar:hover{opacity:.9}.bar:focus{outline:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}.legend{display:flex;justify-content:center;flex-direction:column;gap:8px;min-width:0}.legend.bottom{flex-direction:row;flex-wrap:wrap}.legend .legend-item{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}.legend .dot{width:8px;height:8px;border-radius:8px;flex:0 0 8px}.legend .label{color:#595959;min-width:0;overflow:hidden;text-overflow:ellipsis}.plot-ctn.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.plot-ctn.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.plot-ctn.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.plot-ctn.scrollable-small::-webkit-scrollbar-thumb{background-color:#bfbfbf;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PopoverDirective, selector: "[iusPopover], [iusPopoverTitle], [iusPopoverContent]", inputs: ["iusPopover", "iusPopoverTitle", "iusPopoverContent", "iusPopoverPosition", "iusPopoverOpenDelay", "iusPopoverCloseDelay"] }] }); }
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IusChartsBarGroupedComponent, decorators: [{
215
+ type: Component,
216
+ args: [{ selector: 'ius-charts-bar-grouped', standalone: true, imports: [CommonModule, PopoverDirective], template: "<div class=\"chart-wrapper\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n <div class=\"panes\" #panes>\r\n <div class=\"axis-ctn\">\r\n <svg class=\"chart-axis\"\r\n [attr.viewBox]=\"axisViewBox()\"\r\n preserveAspectRatio=\"xMinYMin meet\"\r\n [style.width.px]=\"margin.left\"\r\n [style.height.px]=\"chartHeight()\">\r\n @for (t of yTicksArr; track t) {\r\n <text class=\"y-tick body-sm\"\r\n [attr.x]=\"margin.left - 6\"\r\n [attr.y]=\"getY(t)\"\r\n text-anchor=\"end\"\r\n dominant-baseline=\"middle\">\r\n {{ t }}\r\n </text>\r\n }\r\n </svg>\r\n </div>\r\n\r\n <div class=\"plot-ctn scrollable-small\" #plotCtn>\r\n <svg class=\"chart\"\r\n [attr.viewBox]=\"plotViewBox()\"\r\n preserveAspectRatio=\"xMinYMin meet\"\r\n [style.width.px]=\"plotWidth()\"\r\n [style.height.px]=\"chartHeight()\">\r\n\r\n @for (s of barStripes(); track s.x) {\r\n <rect class=\"bar-stripe\"\r\n [attr.x]=\"s.x\"\r\n [attr.y]=\"margin.top\"\r\n [attr.width]=\"s.width\"\r\n [attr.height]=\"innerHeight()\"></rect>\r\n }\r\n\r\n @for (t of yTicksArr; track t) {\r\n <line class=\"grid-line\"\r\n [attr.x1]=\"0\"\r\n [attr.x2]=\"plotWidth() - margin.right\"\r\n [attr.y1]=\"getY(t)\" [attr.y2]=\"getY(t)\"/>\r\n }\r\n\r\n @for (g of groups(); track g; let i = $index) {\r\n <text class=\"x-label body-sm\"\r\n [attr.x]=\"groupCenters()[i]\"\r\n [attr.y]=\"chartHeight() - margin.bottom + 22\"\r\n text-anchor=\"middle\">\r\n {{ shortLabel(g) }} <title>{{ g }}</title>\r\n </text>\r\n }\r\n\r\n @for (b of bars(); track b.groupLabel + '_' + b.seriesLabel) {\r\n <rect class=\"bar\"\r\n [attr.x]=\"b.x\"\r\n [attr.y]=\"b.y\"\r\n [attr.width]=\"b.width\"\r\n [attr.height]=\"Math.max(b.height, 0)\"\r\n [attr.fill]=\"b.color\"\r\n [attr.rx]=\"barRadius\"\r\n [attr.ry]=\"barRadius\"\r\n [iusPopoverContent]=\"formatTooltip(b)\"\r\n (click)=\"onBarClick(b)\"/>\r\n }\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <!-- Leyenda -->\r\n <div class=\"legend\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n @for (s of series(); track s) {\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"colors()[s]\"></span>\r\n <span class=\"label caption-sm\">{{ s }}</span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}:host{display:block;max-width:100%;min-height:0}.chart-wrapper{display:grid;grid-template-columns:1fr auto;column-gap:16px;height:100%;min-height:0;align-items:start}.chart-wrapper.bottom{grid-template-columns:1fr;grid-template-rows:1fr auto;row-gap:12px}.panes{display:grid;grid-template-columns:auto 1fr;height:100%;min-height:0}.axis-ctn{height:100%;min-height:0;overflow:hidden}.plot-ctn{width:100%;height:100%;min-height:0;overflow-x:auto;overflow-y:hidden}.chart-wrapper,.panes,.axis-ctn,.plot-ctn{min-height:0}.chart,.chart-axis{display:block}.grid-line{stroke:#1f293729;stroke-width:1;stroke-dasharray:3 3}.y-tick,.x-label{fill:#000000b3}.bar-stripe{fill:#d6dbed66;pointer-events:none}.bar{cursor:pointer;transition:opacity .15s ease,transform .15s ease;pointer-events:all}.bar:hover{opacity:.9}.bar:focus{outline:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}.legend{display:flex;justify-content:center;flex-direction:column;gap:8px;min-width:0}.legend.bottom{flex-direction:row;flex-wrap:wrap}.legend .legend-item{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}.legend .dot{width:8px;height:8px;border-radius:8px;flex:0 0 8px}.legend .label{color:#595959;min-width:0;overflow:hidden;text-overflow:ellipsis}.plot-ctn.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.plot-ctn.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.plot-ctn.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.plot-ctn.scrollable-small::-webkit-scrollbar-thumb{background-color:#bfbfbf;border-radius:4px}\n"] }]
217
+ }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { data: [{
218
+ type: Input
219
+ }], legendPosition: [{
220
+ type: Input
221
+ }], seriesOrder: [{
222
+ type: Input
223
+ }], maxLabelChars: [{
224
+ type: Input
225
+ }], barClick: [{
226
+ type: Output
227
+ }], panesRef: [{
228
+ type: ViewChild,
229
+ args: ['panes', { static: true }]
230
+ }], plotCtn: [{
231
+ type: ViewChild,
232
+ args: ['plotCtn', { static: true }]
233
+ }] } });
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLWJhci1ncm91cGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2NoYXJ0cy1iYXItZ3JvdXBlZC9jaGFydHMtYmFyLWdyb3VwZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvY2hhcnRzLWJhci1ncm91cGVkL2NoYXJ0cy1iYXItZ3JvdXBlZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFDM0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQ3ZDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQTJCbkUsTUFBTSxPQUFPLDRCQUE0QjtJQW9FdkMsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFuRXZCLFNBQUksR0FBZSxFQUFFLENBQUM7UUFDdEIsbUJBQWMsR0FBdUIsUUFBUSxDQUFDO1FBR3ZELHNDQUFzQztRQUN0QyxXQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFdEQsZ0JBQWdCO1FBQ2hCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFZCxlQUFlO1FBQ2YsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUlkLFVBQUssR0FBRyxDQUFDLENBQUM7UUFFVix5Q0FBeUM7UUFDekMsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFNBQUksR0FBRyxHQUFHLENBQUM7UUFFRixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVsQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW9ELENBQUM7UUFPMUYsU0FBUztRQUNELFVBQUssR0FBRyxNQUFNLENBQVksRUFBRSxDQUFDLENBQUM7UUFDOUIsWUFBTyxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUMvQixZQUFPLEdBQUcsTUFBTSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFLLCtCQUErQjtRQUN2RCxXQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUsseUJBQXlCO1FBQ2pELGVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDeEQsa0JBQWEsR0FBRyxNQUFNLENBQVcsRUFBRSxDQUFDLENBQUM7UUFDckMsZ0JBQVcsR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFFckMsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwQyxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEMsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywwQkFBMEI7UUFDcEYsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNwRCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRWhELGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FDdkUsQ0FBQztRQUVGLGtCQUFrQjtRQUNULGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTlFLFNBQUksR0FBRyxJQUFJLENBQUM7SUFFZSxDQUFDO0lBRXJDLGVBQWU7UUFDYixxREFBcUQ7UUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxPQUFPO29CQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVDLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVcsS0FBVyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5QyxXQUFXLEtBQVcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0QyxnQ0FBZ0M7SUFDeEIsVUFBVTtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQUMsQ0FBQztRQUNqRixJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFBQyxDQUFDO1FBRWpGLG1GQUFtRjtRQUNuRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQUMsQ0FBQztRQUV2RixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUQsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxpQkFBaUI7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNwQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU87WUFBRSxLQUFLLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELG9CQUFvQjtRQUNwQixNQUFNLE9BQU8sR0FBRztZQUNkLFNBQVMsRUFBRSxXQUFXO1lBQ3RCLFNBQVMsRUFBRSxXQUFXO1lBQ3RCLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLFNBQVMsRUFBRSxXQUFXO1lBQ3RCLFNBQVMsRUFBRSxjQUFjO1lBQ3pCLFNBQVMsRUFBRSxXQUFXO1NBQ3ZCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVwRSxhQUFhO1FBQ2IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUTtRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJCLHlDQUF5QztRQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEUsb0NBQW9DO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDNUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN4QixNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM3RSxNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyx3Q0FBd0M7UUFDakcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0Isa0JBQWtCO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBYyxFQUFFLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFnQixFQUFFLENBQUM7UUFFaEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMzQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXJCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUN6QixNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXRELG1CQUFtQjtnQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBRTFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ1IsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLO29CQUNuQixXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUs7b0JBQ3JCLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztvQkFDZixDQUFDLEVBQUUsQ0FBQztvQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3BCLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUN0QyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxPQUFPLENBQUMsTUFBYztRQUM1QixJQUFJLE1BQU0sSUFBSSxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFhO1FBQ2hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzlGLENBQUM7SUFFRCxhQUFhLENBQUMsQ0FBVTtRQUN0QixPQUFPLEdBQUcsQ0FBQyxDQUFDLFVBQVUsTUFBTSxDQUFDLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVU7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQzsrR0FuUFUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsc2RDaEN6Qyw0dEdBNkVBLG8rRkRqRFksWUFBWSwrQkFBRSxnQkFBZ0I7OzRGQUk3Qiw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQzsyRUFLaEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFzQkcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUcrQixRQUFRO3NCQUE3QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ksT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcixcclxuICBPbkNoYW5nZXMsIGNvbXB1dGVkLCBzaWduYWwsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBOZ1pvbmVcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUG9wb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcG9wb3Zlci5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0IHR5cGUgQmFyU2VyaWVzSXRlbSA9IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlcjsgY29sb3I/OiBzdHJpbmcgfTtcclxuZXhwb3J0IHR5cGUgQmFyR3JvdXAgPSB7IGxhYmVsOiBzdHJpbmc7IGl0ZW1zOiBCYXJTZXJpZXNJdGVtW10gfTtcclxuXHJcbnR5cGUgU2VyaWVzQ29sb3JNYXAgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG5cclxudHlwZSBCYXJSZWN0ID0ge1xyXG4gIGdyb3VwTGFiZWw6IHN0cmluZztcclxuICBzZXJpZXNMYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgeDogbnVtYmVyO1xyXG4gIHk6IG51bWJlcjtcclxuICB3aWR0aDogbnVtYmVyO1xyXG4gIGhlaWdodDogbnVtYmVyO1xyXG4gIGNvbG9yOiBzdHJpbmc7XHJcbn07XHJcblxyXG50eXBlIEJhclN0cmlwZSA9IHsgeDogbnVtYmVyOyB3aWR0aDogbnVtYmVyIH07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2l1cy1jaGFydHMtYmFyLWdyb3VwZWQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlckRpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy1iYXItZ3JvdXBlZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnRzLWJhci1ncm91cGVkLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdXNDaGFydHNCYXJHcm91cGVkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGRhdGE6IEJhckdyb3VwW10gPSBbXTtcclxuICBASW5wdXQoKSBsZWdlbmRQb3NpdGlvbjogJ3JpZ2h0JyB8ICdib3R0b20nID0gJ2JvdHRvbSc7XHJcbiAgQElucHV0KCkgc2VyaWVzT3JkZXI/OiBzdHJpbmdbXTtcclxuXHJcbiAgLy8gTcOhcmdlbmVzIChsZWZ0ID0gYW5jaG8gcGFuZWwgZWplIFkpXHJcbiAgbWFyZ2luID0geyB0b3A6IDI0LCByaWdodDogMTYsIGJvdHRvbTogMzQsIGxlZnQ6IDQwIH07XHJcblxyXG4gIC8vIExheW91dCBYIGZpam9cclxuICBiYXJXaWR0aCA9IDExO1xyXG4gIGJhckdhcCA9IDI7XHJcbiAgZ3JvdXBHYXAgPSA0MDtcclxuICBvdXRlckdhcCA9IDE4O1xyXG5cclxuICAvLyBFc3RpbG8gYmFycmFcclxuICBiYXJSYWRpdXMgPSA1O1xyXG5cclxuICAvLyBFc2NhbGEgWVxyXG4gIHlNYXg/OiBudW1iZXI7XHJcbiAgdGlja3MgPSA1O1xyXG5cclxuICAvLyBGYWxsYmFja3Mgc2kgbm8gaGF5IHRhbWHDsW8gQ1NTIGV4dGVybm9cclxuICB3aWR0aCA9IDY0MDtcclxuICBzaXplID0gMzIwO1xyXG5cclxuICBASW5wdXQoKSBtYXhMYWJlbENoYXJzID0gMTA7XHJcblxyXG4gIEBPdXRwdXQoKSBiYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBncm91cDogc3RyaW5nOyBzZXJpZXM6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9PigpO1xyXG5cclxuICAvLyBSZWZzXHJcbiAgQFZpZXdDaGlsZCgncGFuZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYW5lc1JlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+OyAgIC8vIOKGkCBhbHRvIHJlYWwgKGVqZVkrcGxvdClcclxuICBAVmlld0NoaWxkKCdwbG90Q3RuJywgeyBzdGF0aWM6IHRydWUgfSkgcGxvdEN0biE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+OyAgICAgLy8g4oaQIGFuY2hvIHZpc2libGUgKHNjcm9sbClcclxuICBwcml2YXRlIHJvPzogUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gIC8vIEVzdGFkb1xyXG4gIHByaXZhdGUgX2JhcnMgPSBzaWduYWw8QmFyUmVjdFtdPihbXSk7XHJcbiAgcHJpdmF0ZSBfZ3JvdXBzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XHJcbiAgcHJpdmF0ZSBfc2VyaWVzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XHJcbiAgcHJpdmF0ZSBfY29sb3JzID0gc2lnbmFsPFNlcmllc0NvbG9yTWFwPih7fSk7XHJcbiAgcHJpdmF0ZSBfeU1heCA9IHNpZ25hbCgwKTtcclxuXHJcbiAgcHJpdmF0ZSBfcGFuZUggPSBzaWduYWwoMCk7ICAgICAvLyBhbHRvIHJlYWwgZGVsIHBhbmVsIHN1cGVyaW9yXHJcbiAgcHJpdmF0ZSBfcGxvdFcgPSBzaWduYWwoMCk7ICAgICAvLyBhbmNobyB2aXNpYmxlIGRlbCBwbG90XHJcbiAgcHJpdmF0ZSBfcGxvdFdpZHRoID0gc2lnbmFsKDApOyAvLyBhbmNobyB2aXJ0dWFsIGRlbCBTVkcgZGVyZWNob1xyXG4gIHByaXZhdGUgX2dyb3VwQ2VudGVycyA9IHNpZ25hbDxudW1iZXJbXT4oW10pO1xyXG4gIHByaXZhdGUgX2JhclN0cmlwZXMgPSBzaWduYWw8QmFyU3RyaXBlW10+KFtdKTtcclxuXHJcbiAgcmVhZG9ubHkgYmFycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2JhcnMoKSk7XHJcbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZ3JvdXBzKCkpO1xyXG4gIHJlYWRvbmx5IHNlcmllcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3NlcmllcygpKTtcclxuICByZWFkb25seSBjb2xvcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jb2xvcnMoKSk7XHJcbiAgcmVhZG9ubHkgeVNjYWxlTWF4ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5feU1heCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgY2hhcnRIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9wYW5lSCgpIHx8IHRoaXMuc2l6ZSk7IC8vIOKGkCBhbHR1cmEgcGFyYSBhbWJvcyBTVkdcclxuICByZWFkb25seSBwbG90V2lkdGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9wbG90V2lkdGgoKSk7XHJcbiAgcmVhZG9ubHkgZ3JvdXBDZW50ZXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZ3JvdXBDZW50ZXJzKCkpO1xyXG4gIHJlYWRvbmx5IGJhclN0cmlwZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9iYXJTdHJpcGVzKCkpO1xyXG5cclxuICByZWFkb25seSBpbm5lckhlaWdodCA9IGNvbXB1dGVkKCgpID0+XHJcbiAgICBNYXRoLm1heCh0aGlzLmNoYXJ0SGVpZ2h0KCkgLSB0aGlzLm1hcmdpbi50b3AgLSB0aGlzLm1hcmdpbi5ib3R0b20sIDApXHJcbiAgKTtcclxuXHJcbiAgLy8gdmlld0JveCBwb3IgU1ZHXHJcbiAgcmVhZG9ubHkgYXhpc1ZpZXdCb3ggPSBjb21wdXRlZCgoKSA9PiBgMCAwICR7dGhpcy5tYXJnaW4ubGVmdH0gJHt0aGlzLmNoYXJ0SGVpZ2h0KCl9YCk7XHJcbiAgcmVhZG9ubHkgcGxvdFZpZXdCb3ggPSBjb21wdXRlZCgoKSA9PiBgMCAwICR7dGhpcy5wbG90V2lkdGgoKX0gJHt0aGlzLmNoYXJ0SGVpZ2h0KCl9YCk7XHJcblxyXG4gIHJlYWRvbmx5IE1hdGggPSBNYXRoO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIE1lZGljacOzbiBpbmljaWFsIFNJTiBlc3BlcmFyIGFsIHByaW1lciB0aWNrIGRlbCBST1xyXG4gICAgdGhpcy5tZWFzdXJlTm93KCk7XHJcblxyXG4gICAgLy8gT2JzZXJ2YSBhbHRvIChwYW5lcykgeSBhbmNobyB2aXNpYmxlIChwbG90Q3RuKVxyXG4gICAgdGhpcy5ybyA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLm1lYXN1cmVOb3coKTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkgdGhpcy5yZWNhbGMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm8ub2JzZXJ2ZSh0aGlzLnBhbmVzUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5yby5vYnNlcnZlKHRoaXMucGxvdEN0bi5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICAvLyBQcmltZXIgY8OhbGN1bG9cclxuICAgIHRoaXMucmVjYWxjKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHsgdGhpcy5ybz8uZGlzY29ubmVjdCgpOyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQgeyB0aGlzLnJlY2FsYygpOyB9XHJcblxyXG4gIC8vIERldnVlbHZlIHRydWUgc2kgY2FtYmnDsyBhbGdvLlxyXG4gIHByaXZhdGUgbWVhc3VyZU5vdygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhbmVIID0gTWF0aC5mbG9vcih0aGlzLnBhbmVzUmVmPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHQgfHwgMCk7XHJcbiAgICBjb25zdCBwbG90VyA9IE1hdGguZmxvb3IodGhpcy5wbG90Q3RuPy5uYXRpdmVFbGVtZW50Py5jbGllbnRXaWR0aCB8fCAwKTtcclxuXHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHBhbmVIICYmIHBhbmVIICE9PSB0aGlzLl9wYW5lSCgpKSB7IHRoaXMuX3BhbmVILnNldChwYW5lSCk7IGNoYW5nZWQgPSB0cnVlOyB9XHJcbiAgICBpZiAocGxvdFcgJiYgcGxvdFcgIT09IHRoaXMuX3Bsb3RXKCkpIHsgdGhpcy5fcGxvdFcuc2V0KHBsb3RXKTsgY2hhbmdlZCA9IHRydWU7IH1cclxuXHJcbiAgICAvLyBTaSBubyBoYXkgdmFsb3JlcyBhw7puIChwb3IgcmVuZGVyIHRlbXByYW5vKSwgdXNhIGZhbGxiYWNrcyBwYXJhIG5vIHF1ZWRhcnRlIGVuIDBcclxuICAgIGlmICghdGhpcy5fcGFuZUgoKSkgeyB0aGlzLl9wYW5lSC5zZXQodGhpcy5zaXplKTsgY2hhbmdlZCA9IHRydWU7IH1cclxuICAgIGlmICghdGhpcy5fcGxvdFcoKSkgeyB0aGlzLl9wbG90Vy5zZXQodGhpcy53aWR0aCAtIHRoaXMubWFyZ2luLmxlZnQpOyBjaGFuZ2VkID0gdHJ1ZTsgfVxyXG5cclxuICAgIHJldHVybiBjaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWNhbGMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjbGVhbmVkID0gKHRoaXMuZGF0YSA/PyBbXSkubWFwKGcgPT4gKHtcclxuICAgICAgbGFiZWw6IGcubGFiZWwsXHJcbiAgICAgIGl0ZW1zOiAoZy5pdGVtcyA/PyBbXSkuZmlsdGVyKGkgPT4gTnVtYmVyKGk/LnZhbHVlKSA+PSAwKVxyXG4gICAgfSkpLmZpbHRlcih4ID0+IHguaXRlbXMubGVuZ3RoID4gMCk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBzID0gY2xlYW5lZC5tYXAoZyA9PiBnLmxhYmVsKTtcclxuXHJcbiAgICAvLyBzZXJpZXMgKyBvcmRlblxyXG4gICAgY29uc3Qgc2VyaWVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGcgb2YgY2xlYW5lZCkgZm9yIChjb25zdCBpdCBvZiBnLml0ZW1zKSBzZXJpZXNTZXQuYWRkKGl0LmxhYmVsKTtcclxuICAgIGxldCBzZXJpZXMgPSBBcnJheS5mcm9tKHNlcmllc1NldCk7XHJcbiAgICBpZiAodGhpcy5zZXJpZXNPcmRlcj8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG9yZGVyID0gbmV3IE1hcCh0aGlzLnNlcmllc09yZGVyLm1hcCgoaywgaWR4KSA9PiBbaywgaWR4XSkpO1xyXG4gICAgICBzZXJpZXMuc29ydCgoYSwgYikgPT4gKG9yZGVyLmdldChhKSA/PyAxZTkpIC0gKG9yZGVyLmdldChiKSA/PyAxZTkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjb2xvcmVzIHBvciBzZXJpZVxyXG4gICAgY29uc3QgcGFsZXR0ZSA9IFtcclxuICAgICAgJyMyMTY3RkYnLCAvLyBJbmZvLTUwMFxyXG4gICAgICAnIzBBMjg5MycsIC8vIEluZm8tODAwXHJcbiAgICAgICcjNDBDQUU5JywgLy8gUHJpbWFyeS00MDBcclxuICAgICAgJyM1ODkyRkYnLCAvLyBJbmZvLTQwMFxyXG4gICAgICAnIzA4QTZEQicsIC8vIFByaW1hcnktNTAwXHJcbiAgICAgICcjQzRERkZGJywgLy8gSW5mby0yMDBcclxuICAgIF07XHJcbiAgICBjb25zdCBjb2xvck1hcDogU2VyaWVzQ29sb3JNYXAgPSB7fTtcclxuICAgIHNlcmllcy5mb3JFYWNoKChzLCBpKSA9PiBjb2xvck1hcFtzXSA9IHBhbGV0dGVbaSAlIHBhbGV0dGUubGVuZ3RoXSk7XHJcblxyXG4gICAgLy8gbm9ybWFsaXphclxyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGNsZWFuZWQubWFwKGcgPT4ge1xyXG4gICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKGcuaXRlbXMubWFwKGkgPT4gW2kubGFiZWwsIGldKSk7XHJcbiAgICAgIGNvbnN0IGl0ZW1zID0gc2VyaWVzLm1hcChzID0+IHtcclxuICAgICAgICBjb25zdCBpID0gbWFwLmdldChzKTtcclxuICAgICAgICByZXR1cm4geyBsYWJlbDogcywgdmFsdWU6IGk/LnZhbHVlID8/IDAsIGNvbG9yOiBpPy5jb2xvciA/PyBjb2xvck1hcFtzXSB9O1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHsgbGFiZWw6IGcubGFiZWwsIGl0ZW1zIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBZIG3DoXhcclxuICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgoMCwgLi4ubm9ybWFsaXplZC5mbGF0TWFwKGcgPT4gZy5pdGVtcy5tYXAoaSA9PiBpLnZhbHVlKSkpO1xyXG4gICAgY29uc3QgeU1heCA9IHRoaXMueU1heCAmJiB0aGlzLnlNYXggPiAwID8gdGhpcy55TWF4IDogdGhpcy5uaWNlTWF4KG1heFZhbHVlKTtcclxuICAgIHRoaXMuX3lNYXguc2V0KHlNYXgpO1xyXG5cclxuICAgIC8vIGRpbWVuc2lvbmVzIHZpc2libGVzIGRlbCBwYW5lbCBkZXJlY2hvXHJcbiAgICBjb25zdCB2aXNpYmxlVyA9IHRoaXMuX3Bsb3RXKCkgfHwgKHRoaXMud2lkdGggLSB0aGlzLm1hcmdpbi5sZWZ0KTtcclxuXHJcbiAgICAvLyA9PT09PSBMYXlvdXQgWCBjb24gb3V0ZXJHYXAgPT09PT1cclxuICAgIGNvbnN0IEcgPSBub3JtYWxpemVkLmxlbmd0aDtcclxuICAgIGNvbnN0IFMgPSBzZXJpZXMubGVuZ3RoO1xyXG4gICAgY29uc3QgZ3JvdXBJbm5lcldpZHRoID0gUyAqIHRoaXMuYmFyV2lkdGggKyBNYXRoLm1heCgwLCBTIC0gMSkgKiB0aGlzLmJhckdhcDtcclxuICAgIGNvbnN0IGlubmVyTmF0dXJhbFdpZHRoID1cclxuICAgICAgTWF0aC5tYXgoMCwgKHRoaXMub3V0ZXJHYXAgKiAyKSArIEcgKiBncm91cElubmVyV2lkdGggKyBNYXRoLm1heCgwLCBHIC0gMSkgKiB0aGlzLmdyb3VwR2FwKTtcclxuXHJcbiAgICBjb25zdCBpbm5lclZpc2libGVXaWR0aCA9IE1hdGgubWF4KHZpc2libGVXIC0gdGhpcy5tYXJnaW4ucmlnaHQsIDApO1xyXG4gICAgY29uc3QgaW5uZXJWaXJ0dWFsV2lkdGggPSBNYXRoLm1heChpbm5lclZpc2libGVXaWR0aCwgaW5uZXJOYXR1cmFsV2lkdGgpO1xyXG4gICAgY29uc3QgcGxvdFdpZHRoID0gaW5uZXJWaXJ0dWFsV2lkdGggKyB0aGlzLm1hcmdpbi5yaWdodDsgLy8gc29sbyBtYXJnZW4gZGVyZWNobyBlbiBlbCBTVkcgZGVyZWNob1xyXG4gICAgdGhpcy5fcGxvdFdpZHRoLnNldChwbG90V2lkdGgpO1xyXG5cclxuICAgIC8vIHJlY3RzICsgZnJhbmphc1xyXG4gICAgY29uc3QgaWggPSB0aGlzLmlubmVySGVpZ2h0KCk7XHJcbiAgICBjb25zdCBiYXJzOiBCYXJSZWN0W10gPSBbXTtcclxuICAgIGNvbnN0IGNlbnRlcnM6IG51bWJlcltdID0gW107XHJcbiAgICBjb25zdCBzdHJpcGVzOiBCYXJTdHJpcGVbXSA9IFtdO1xyXG5cclxuICAgIGxldCBjdXJzb3IgPSB0aGlzLm91dGVyR2FwO1xyXG4gICAgbm9ybWFsaXplZC5mb3JFYWNoKGcgPT4ge1xyXG4gICAgICBjb25zdCBzdGFydFggPSBjdXJzb3I7XHJcbiAgICAgIGNvbnN0IGNlbnRlciA9IHN0YXJ0WCArIGdyb3VwSW5uZXJXaWR0aCAvIDI7XHJcbiAgICAgIGNlbnRlcnMucHVzaChjZW50ZXIpO1xyXG5cclxuICAgICAgZy5pdGVtcy5mb3JFYWNoKChpdCwgc2kpID0+IHtcclxuICAgICAgICBjb25zdCB4ID0gc3RhcnRYICsgc2kgKiAodGhpcy5iYXJXaWR0aCArIHRoaXMuYmFyR2FwKTtcclxuXHJcbiAgICAgICAgLy8gZnJhbmphIHBvciBiYXJyYVxyXG4gICAgICAgIHN0cmlwZXMucHVzaCh7IHgsIHdpZHRoOiB0aGlzLmJhcldpZHRoIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBoID0gaXQudmFsdWUgPD0gMCA/IDAgOiAoaXQudmFsdWUgLyB5TWF4KSAqIGloO1xyXG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1hcmdpbi50b3AgKyBpaCAtIGg7XHJcbiAgICAgICAgYmFycy5wdXNoKHtcclxuICAgICAgICAgIGdyb3VwTGFiZWw6IGcubGFiZWwsXHJcbiAgICAgICAgICBzZXJpZXNMYWJlbDogaXQubGFiZWwsXHJcbiAgICAgICAgICB2YWx1ZTogaXQudmFsdWUsXHJcbiAgICAgICAgICB4LCB5LFxyXG4gICAgICAgICAgd2lkdGg6IHRoaXMuYmFyV2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IGgsXHJcbiAgICAgICAgICBjb2xvcjogaXQuY29sb3IgPz8gY29sb3JNYXBbaXQubGFiZWxdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY3Vyc29yICs9IGdyb3VwSW5uZXJXaWR0aCArIHRoaXMuZ3JvdXBHYXA7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9iYXJzLnNldChiYXJzKTtcclxuICAgIHRoaXMuX2dyb3Vwcy5zZXQoZ3JvdXBzKTtcclxuICAgIHRoaXMuX3Nlcmllcy5zZXQoc2VyaWVzKTtcclxuICAgIHRoaXMuX2NvbG9ycy5zZXQoY29sb3JNYXApO1xyXG4gICAgdGhpcy5fZ3JvdXBDZW50ZXJzLnNldChjZW50ZXJzKTtcclxuICAgIHRoaXMuX2JhclN0cmlwZXMuc2V0KHN0cmlwZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuaWNlTWF4KG1heFZhbDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmIChtYXhWYWwgPD0gMCkgcmV0dXJuIDE7XHJcbiAgICBjb25zdCBleHAgPSBNYXRoLmZsb29yKE1hdGgubG9nMTAobWF4VmFsKSk7XHJcbiAgICBjb25zdCBiYXNlID0gTWF0aC5wb3coMTAsIGV4cCk7XHJcbiAgICBjb25zdCBuID0gTWF0aC5jZWlsKG1heFZhbCAvIGJhc2UpO1xyXG4gICAgY29uc3QgbmljZSA9IG4gPD0gMiA/IDIgOiBuIDw9IDUgPyA1IDogMTA7XHJcbiAgICByZXR1cm4gbmljZSAqIGJhc2U7XHJcbiAgfVxyXG5cclxuICBnZXRZKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgaWggPSB0aGlzLmlubmVySGVpZ2h0KCk7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLnlTY2FsZU1heCgpO1xyXG4gICAgcmV0dXJuIHRoaXMubWFyZ2luLnRvcCArIGloIC0gKHZhbHVlIC8gbWF4KSAqIGloO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHlUaWNrc0FycigpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLnlTY2FsZU1heCgpO1xyXG4gICAgY29uc3QgbiA9IE1hdGgubWF4KDIsIHRoaXMudGlja3MgfCAwKTtcclxuICAgIGNvbnN0IHN0ZXAgPSBtYXggLyBuO1xyXG4gICAgY29uc3QgYXJyOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbjsgaSsrKSBhcnIucHVzaCgrKChpICogc3RlcCkpLnRvRml4ZWQoMikpO1xyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcblxyXG4gIHNob3J0TGFiZWwobGJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxibC5sZW5ndGggPiB0aGlzLm1heExhYmVsQ2hhcnMgPyAobGJsLnNsaWNlKDAsIHRoaXMubWF4TGFiZWxDaGFycyAtIDEpICsgJ+KApicpIDogbGJsO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0VG9vbHRpcChiOiBCYXJSZWN0KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtiLmdyb3VwTGFiZWx9IOKAlCAke2Iuc2VyaWVzTGFiZWx9OiAke2IudmFsdWV9YDtcclxuICB9XHJcblxyXG4gIG9uQmFyQ2xpY2soYjogQmFyUmVjdCkge1xyXG4gICAgdGhpcy5iYXJDbGljay5lbWl0KHsgZ3JvdXA6IGIuZ3JvdXBMYWJlbCwgc2VyaWVzOiBiLnNlcmllc0xhYmVsLCB2YWx1ZTogYi52YWx1ZSB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNoYXJ0LXdyYXBwZXJcIiBbY2xhc3MuYm90dG9tXT1cImxlZ2VuZFBvc2l0aW9uID09PSAnYm90dG9tJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhbmVzXCIgI3BhbmVzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheGlzLWN0blwiPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hhcnQtYXhpc1wiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci52aWV3Qm94XT1cImF4aXNWaWV3Qm94KClcIlxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaW5ZTWluIG1lZXRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm1hcmdpbi5sZWZ0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY2hhcnRIZWlnaHQoKVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAodCBvZiB5VGlja3NBcnI7IHRyYWNrIHQpIHtcclxuICAgICAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwieS10aWNrIGJvZHktc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci54XT1cIm1hcmdpbi5sZWZ0IC0gNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnldPVwiZ2V0WSh0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYW5jaG9yPVwiZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0IH19XHJcbiAgICAgICAgICAgICAgICA8L3RleHQ+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxvdC1jdG4gc2Nyb2xsYWJsZS1zbWFsbFwiICNwbG90Q3RuPlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hhcnRcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIudmlld0JveF09XCJwbG90Vmlld0JveCgpXCJcclxuICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWluWU1pbiBtZWV0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJwbG90V2lkdGgoKVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNoYXJ0SGVpZ2h0KClcIj5cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChzIG9mIGJhclN0cmlwZXMoKTsgdHJhY2sgcy54KSB7XHJcbiAgICAgICAgICAgICAgICA8cmVjdCBjbGFzcz1cImJhci1zdHJpcGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci54XT1cInMueFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnldPVwibWFyZ2luLnRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cInMud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiaW5uZXJIZWlnaHQoKVwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yICh0IG9mIHlUaWNrc0FycjsgdHJhY2sgdCkge1xyXG4gICAgICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJncmlkLWxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci54MV09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIueDJdPVwicGxvdFdpZHRoKCkgLSBtYXJnaW4ucmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci55MV09XCJnZXRZKHQpXCIgW2F0dHIueTJdPVwiZ2V0WSh0KVwiLz5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChnIG9mIGdyb3VwcygpOyB0cmFjayBnOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ4LWxhYmVsIGJvZHktc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci54XT1cImdyb3VwQ2VudGVycygpW2ldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIueV09XCJjaGFydEhlaWdodCgpIC0gbWFyZ2luLmJvdHRvbSArIDIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzaG9ydExhYmVsKGcpIH19IDx0aXRsZT57eyBnIH19PC90aXRsZT5cclxuICAgICAgICAgICAgICAgIDwvdGV4dD5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChiIG9mIGJhcnMoKTsgdHJhY2sgYi5ncm91cExhYmVsICsgJ18nICsgYi5zZXJpZXNMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJiYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci54XT1cImIueFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnldPVwiYi55XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiYi53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJNYXRoLm1heChiLmhlaWdodCwgMClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cImIuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yeF09XCJiYXJSYWRpdXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yeV09XCJiYXJSYWRpdXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXVzUG9wb3ZlckNvbnRlbnRdPVwiZm9ybWF0VG9vbHRpcChiKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhckNsaWNrKGIpXCIvPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8IS0tIExleWVuZGEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCIgW2NsYXNzLmJvdHRvbV09XCJsZWdlbmRQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIj5cclxuICAgICAgICBAZm9yIChzIG9mIHNlcmllcygpOyB0cmFjayBzKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JzKClbc11cIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgY2FwdGlvbi1zbVwiPnt7IHMgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './charts-bar-grouped.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdXMtZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9jaGFydHMtYmFyLWdyb3VwZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2hhcnRzLWJhci1ncm91cGVkLmNvbXBvbmVudCc7XHJcblxyXG4iXX0=
@@ -110,11 +110,11 @@ export class ChartsDonutComponent {
110
110
  return `Gráfica de dona. Total ${this.total()}. ${parts.join('. ')}`;
111
111
  }
112
112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartsDonutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChartsDonutComponent, isStandalone: true, selector: "ius-charts-donut", inputs: { data: "data", size: "size", thickness: "thickness", gapDegrees: "gapDegrees", showLegend: "showLegend", legendPosition: "legendPosition", centerText: "centerText", sort: "sort" }, outputs: { sliceClick: "sliceClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"donut-wrapper\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n <svg\r\n class=\"donut\"\r\n role=\"img\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n [attr.viewBox]=\"viewBox()\">\r\n <!-- pista -->\r\n <circle\r\n class=\"track\"\r\n [attr.cx]=\"size/2\"\r\n [attr.cy]=\"size/2\"\r\n [attr.r]=\"radius()\"\r\n [attr.stroke-width]=\"thickness\"\r\n ></circle>\r\n\r\n <!-- slices como PATH (cada uno es su arco real) -->\r\n @for (s of slices(); track s.label) {\r\n <path\r\n class=\"slice\"\r\n [attr.d]=\"s.pathD\"\r\n fill=\"none\"\r\n [attr.stroke]=\"s.color\"\r\n [attr.stroke-width]=\"thickness\"\r\n stroke-linecap=\"butt\"\r\n [iusPopoverContent]=\"getPopoverText(s)\"\r\n (click)=\"onSliceClick(s)\"\r\n tabindex=\"0\"\r\n >\r\n </path>\r\n }\r\n\r\n <!-- centro -->\r\n <g>\r\n <text\r\n [attr.x]=\"size/2\"\r\n [attr.y]=\"size/2\"\r\n text-anchor=\"middle\"\r\n alignment-baseline=\"middle\"\r\n class=\"center-text\">\r\n {{ centerLabel }}\r\n </text>\r\n </g>\r\n </svg>\r\n\r\n @if (showLegend && slices().length) {\r\n <div class=\"legend scrollable-small\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n @for (s of slices(); track s.label) {\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"s.color\"></span>\r\n <span class=\"label caption-sm\" [iusPopoverContent]=\"s.value.toString() + ' - ' + s.label\">{{s.value}} - {{s.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}:host{display:block;max-width:100%;height:100%}.donut-wrapper{display:grid;grid-template-columns:auto 1fr;column-gap:16px;height:100%;align-items:stretch}.donut-wrapper.bottom{grid-template-columns:1fr;grid-template-rows:auto 1fr;row-gap:12px;align-items:stretch}.donut{display:block;max-width:100%;height:auto;align-self:center}.track{fill:none;stroke:#eef2f6}.slice{pointer-events:stroke;cursor:pointer;transition:opacity .15s ease,transform .15s ease}.slice:focus{outline:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}.slice:hover{opacity:.9}.center-text{fill:#595959;font-family:Rubik,sans-serif;font-size:1.5rem;font-weight:600}.legend{display:flex;flex-direction:column;gap:8px;padding-right:4px;min-width:0;overflow-x:hidden;overflow-y:auto;align-self:stretch;max-height:100%;min-height:0}.legend.bottom{flex-direction:row;flex-wrap:wrap;overflow-y:auto}.legend .legend-item{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}.legend .dot{width:8px;height:8px;border-radius:8px;flex:0 0 8px}.legend .label{color:#595959;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar-thumb{background-color:#08a6db;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PopoverDirective, selector: "[iusPopover], [iusPopoverTitle], [iusPopoverContent]", inputs: ["iusPopover", "iusPopoverTitle", "iusPopoverContent", "iusPopoverPosition", "iusPopoverOpenDelay", "iusPopoverCloseDelay"] }] }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChartsDonutComponent, isStandalone: true, selector: "ius-charts-donut", inputs: { data: "data", size: "size", thickness: "thickness", gapDegrees: "gapDegrees", showLegend: "showLegend", legendPosition: "legendPosition", centerText: "centerText", sort: "sort" }, outputs: { sliceClick: "sliceClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"donut-wrapper\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n <svg\r\n class=\"donut\"\r\n role=\"img\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n [attr.viewBox]=\"viewBox()\">\r\n <!-- pista -->\r\n <circle\r\n class=\"track\"\r\n [attr.cx]=\"size/2\"\r\n [attr.cy]=\"size/2\"\r\n [attr.r]=\"radius()\"\r\n [attr.stroke-width]=\"thickness\"\r\n ></circle>\r\n\r\n <!-- slices como PATH (cada uno es su arco real) -->\r\n @for (s of slices(); track s.label) {\r\n <path\r\n class=\"slice\"\r\n [attr.d]=\"s.pathD\"\r\n fill=\"none\"\r\n [attr.stroke]=\"s.color\"\r\n [attr.stroke-width]=\"thickness\"\r\n stroke-linecap=\"butt\"\r\n [iusPopoverContent]=\"getPopoverText(s)\"\r\n (click)=\"onSliceClick(s)\"\r\n tabindex=\"0\"\r\n >\r\n </path>\r\n }\r\n\r\n <!-- centro -->\r\n <g>\r\n <text\r\n [attr.x]=\"size/2\"\r\n [attr.y]=\"size/2\"\r\n text-anchor=\"middle\"\r\n alignment-baseline=\"middle\"\r\n class=\"center-text\">\r\n {{ centerLabel }}\r\n </text>\r\n </g>\r\n </svg>\r\n\r\n @if (showLegend && slices().length) {\r\n <div class=\"legend scrollable-small\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n @for (s of slices(); track s.label) {\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"s.color\"></span>\r\n <span class=\"label caption-sm\" [iusPopoverContent]=\"s.value.toString() + ' - ' + s.label\">{{s.value}} - {{s.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}:host{display:block;max-width:100%;height:100%}.donut-wrapper{display:grid;grid-template-columns:auto 1fr;column-gap:16px;height:100%;align-items:stretch}.donut-wrapper.bottom{grid-template-columns:1fr;grid-template-rows:auto 1fr;row-gap:12px;align-items:stretch}.donut{display:block;max-width:100%;height:auto;align-self:center}.track{fill:none;stroke:#eef2f6}.slice{pointer-events:stroke;cursor:pointer;transition:opacity .15s ease,transform .15s ease}.slice:focus{outline:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}.slice:hover{opacity:.9}.center-text{fill:#595959;font-family:Rubik,sans-serif;font-size:1.5rem;font-weight:600}.legend{display:flex;justify-content:center;flex-direction:column;gap:8px;padding-right:4px;min-width:0;overflow-x:hidden;overflow-y:auto;align-self:stretch;max-height:100%;min-height:0}.legend.bottom{flex-direction:row;flex-wrap:wrap;overflow-y:auto}.legend .legend-item{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}.legend .dot{width:8px;height:8px;border-radius:8px;flex:0 0 8px}.legend .label{color:#595959;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar-thumb{background-color:#08a6db;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PopoverDirective, selector: "[iusPopover], [iusPopoverTitle], [iusPopoverContent]", inputs: ["iusPopover", "iusPopoverTitle", "iusPopoverContent", "iusPopoverPosition", "iusPopoverOpenDelay", "iusPopoverCloseDelay"] }] }); }
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartsDonutComponent, decorators: [{
116
116
  type: Component,
117
- args: [{ selector: 'ius-charts-donut', standalone: true, imports: [CommonModule, PopoverDirective], template: "<div class=\"donut-wrapper\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n <svg\r\n class=\"donut\"\r\n role=\"img\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n [attr.viewBox]=\"viewBox()\">\r\n <!-- pista -->\r\n <circle\r\n class=\"track\"\r\n [attr.cx]=\"size/2\"\r\n [attr.cy]=\"size/2\"\r\n [attr.r]=\"radius()\"\r\n [attr.stroke-width]=\"thickness\"\r\n ></circle>\r\n\r\n <!-- slices como PATH (cada uno es su arco real) -->\r\n @for (s of slices(); track s.label) {\r\n <path\r\n class=\"slice\"\r\n [attr.d]=\"s.pathD\"\r\n fill=\"none\"\r\n [attr.stroke]=\"s.color\"\r\n [attr.stroke-width]=\"thickness\"\r\n stroke-linecap=\"butt\"\r\n [iusPopoverContent]=\"getPopoverText(s)\"\r\n (click)=\"onSliceClick(s)\"\r\n tabindex=\"0\"\r\n >\r\n </path>\r\n }\r\n\r\n <!-- centro -->\r\n <g>\r\n <text\r\n [attr.x]=\"size/2\"\r\n [attr.y]=\"size/2\"\r\n text-anchor=\"middle\"\r\n alignment-baseline=\"middle\"\r\n class=\"center-text\">\r\n {{ centerLabel }}\r\n </text>\r\n </g>\r\n </svg>\r\n\r\n @if (showLegend && slices().length) {\r\n <div class=\"legend scrollable-small\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n @for (s of slices(); track s.label) {\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"s.color\"></span>\r\n <span class=\"label caption-sm\" [iusPopoverContent]=\"s.value.toString() + ' - ' + s.label\">{{s.value}} - {{s.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}:host{display:block;max-width:100%;height:100%}.donut-wrapper{display:grid;grid-template-columns:auto 1fr;column-gap:16px;height:100%;align-items:stretch}.donut-wrapper.bottom{grid-template-columns:1fr;grid-template-rows:auto 1fr;row-gap:12px;align-items:stretch}.donut{display:block;max-width:100%;height:auto;align-self:center}.track{fill:none;stroke:#eef2f6}.slice{pointer-events:stroke;cursor:pointer;transition:opacity .15s ease,transform .15s ease}.slice:focus{outline:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}.slice:hover{opacity:.9}.center-text{fill:#595959;font-family:Rubik,sans-serif;font-size:1.5rem;font-weight:600}.legend{display:flex;flex-direction:column;gap:8px;padding-right:4px;min-width:0;overflow-x:hidden;overflow-y:auto;align-self:stretch;max-height:100%;min-height:0}.legend.bottom{flex-direction:row;flex-wrap:wrap;overflow-y:auto}.legend .legend-item{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}.legend .dot{width:8px;height:8px;border-radius:8px;flex:0 0 8px}.legend .label{color:#595959;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar-thumb{background-color:#08a6db;border-radius:4px}\n"] }]
117
+ args: [{ selector: 'ius-charts-donut', standalone: true, imports: [CommonModule, PopoverDirective], template: "<div class=\"donut-wrapper\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n <svg\r\n class=\"donut\"\r\n role=\"img\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n [attr.viewBox]=\"viewBox()\">\r\n <!-- pista -->\r\n <circle\r\n class=\"track\"\r\n [attr.cx]=\"size/2\"\r\n [attr.cy]=\"size/2\"\r\n [attr.r]=\"radius()\"\r\n [attr.stroke-width]=\"thickness\"\r\n ></circle>\r\n\r\n <!-- slices como PATH (cada uno es su arco real) -->\r\n @for (s of slices(); track s.label) {\r\n <path\r\n class=\"slice\"\r\n [attr.d]=\"s.pathD\"\r\n fill=\"none\"\r\n [attr.stroke]=\"s.color\"\r\n [attr.stroke-width]=\"thickness\"\r\n stroke-linecap=\"butt\"\r\n [iusPopoverContent]=\"getPopoverText(s)\"\r\n (click)=\"onSliceClick(s)\"\r\n tabindex=\"0\"\r\n >\r\n </path>\r\n }\r\n\r\n <!-- centro -->\r\n <g>\r\n <text\r\n [attr.x]=\"size/2\"\r\n [attr.y]=\"size/2\"\r\n text-anchor=\"middle\"\r\n alignment-baseline=\"middle\"\r\n class=\"center-text\">\r\n {{ centerLabel }}\r\n </text>\r\n </g>\r\n </svg>\r\n\r\n @if (showLegend && slices().length) {\r\n <div class=\"legend scrollable-small\" [class.bottom]=\"legendPosition === 'bottom'\">\r\n @for (s of slices(); track s.label) {\r\n <div class=\"legend-item\">\r\n <span class=\"dot\" [style.background]=\"s.color\"></span>\r\n <span class=\"label caption-sm\" [iusPopoverContent]=\"s.value.toString() + ' - ' + s.label\">{{s.value}} - {{s.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}:host{display:block;max-width:100%;height:100%}.donut-wrapper{display:grid;grid-template-columns:auto 1fr;column-gap:16px;height:100%;align-items:stretch}.donut-wrapper.bottom{grid-template-columns:1fr;grid-template-rows:auto 1fr;row-gap:12px;align-items:stretch}.donut{display:block;max-width:100%;height:auto;align-self:center}.track{fill:none;stroke:#eef2f6}.slice{pointer-events:stroke;cursor:pointer;transition:opacity .15s ease,transform .15s ease}.slice:focus{outline:none;filter:drop-shadow(0 0 2px rgba(0,0,0,.2))}.slice:hover{opacity:.9}.center-text{fill:#595959;font-family:Rubik,sans-serif;font-size:1.5rem;font-weight:600}.legend{display:flex;justify-content:center;flex-direction:column;gap:8px;padding-right:4px;min-width:0;overflow-x:hidden;overflow-y:auto;align-self:stretch;max-height:100%;min-height:0}.legend.bottom{flex-direction:row;flex-wrap:wrap;overflow-y:auto}.legend .legend-item{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}.legend .dot{width:8px;height:8px;border-radius:8px;flex:0 0 8px}.legend .label{color:#595959;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scrollable-small::-webkit-scrollbar{-webkit-appearance:none}.scrollable-small::-webkit-scrollbar:vertical{width:4px;height:32px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar:horizontal{height:5px;padding-top:2px;padding-bottom:2px}.scrollable-small::-webkit-scrollbar-thumb{background-color:#08a6db;border-radius:4px}\n"] }]
118
118
  }], propDecorators: { data: [{
119
119
  type: Input
120
120
  }], size: [{
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
134
134
  }], sliceClick: [{
135
135
  type: Output
136
136
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLWRvbnV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2NoYXJ0cy1kb251dC9jaGFydHMtZG9udXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvY2hhcnRzLWRvbnV0L2NoYXJ0cy1kb251dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQWtCbkUsTUFBTSxPQUFPLG9CQUFvQjtJQVBqQztRQVFXLFNBQUksR0FBZ0IsRUFBRSxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxHQUFHLENBQUMsQ0FBaUIsdUJBQXVCO1FBQ25ELGNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBYSxvQkFBb0I7UUFDaEQsZUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFhLHNDQUFzQztRQUNsRSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLG1CQUFjLEdBQXVCLE9BQU8sQ0FBQztRQUU3QyxTQUFJLEdBQUcsS0FBSyxDQUFDLENBQWUsb0NBQW9DO1FBRS9ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRXJELDBCQUEwQjtRQUNsQixZQUFPLEdBQUcsTUFBTSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN0QyxXQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFD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a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQzs4QkFLaEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBvcG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3BvcG92ZXIuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCB0eXBlIERvbnV0RGF0YSA9IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlcjsgY29sb3I/OiBzdHJpbmcgfTtcclxuXHJcbnR5cGUgU2xpY2VDb21wdXRlZCA9IERvbnV0RGF0YSAmIHtcclxuICBwZXJjZW50YWdlOiBudW1iZXI7XHJcbiAgcGF0aEQ6IHN0cmluZzsgICAvLyBwYXRoIGRlbCBhcmNvXHJcbiAgbWlkWDogbnVtYmVyOyAgICAvLyBwdW50byBtZWRpbyBkZWwgYXJjbyAocG9yIHNpIHNlIHF1aWVyZSBhbmNsYXIgYWjDrSlcclxuICBtaWRZOiBudW1iZXI7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2l1cy1jaGFydHMtZG9udXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlckRpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy1kb251dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnRzLWRvbnV0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXJ0c0RvbnV0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBkYXRhOiBEb251dERhdGFbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNpemUgPSAxODA7ICAgICAgICAgICAgICAgICAvLyB3aWR0aC9oZWlnaHQgZGVsIFNWR1xyXG4gIEBJbnB1dCgpIHRoaWNrbmVzcyA9IDE4OyAgICAgICAgICAgICAvLyBncm9zb3IgZGVsIGFuaWxsb1xyXG4gIEBJbnB1dCgpIGdhcERlZ3JlZXMgPSAwOyAgICAgICAgICAgICAvLyBzZXBhcmFjacOzbiBlbnRyZSBzZWdtZW50b3MgKGdyYWRvcylcclxuICBASW5wdXQoKSBzaG93TGVnZW5kID0gdHJ1ZTtcclxuICBASW5wdXQoKSBsZWdlbmRQb3NpdGlvbjogJ3JpZ2h0JyB8ICdib3R0b20nID0gJ3JpZ2h0JztcclxuICBASW5wdXQoKSBjZW50ZXJUZXh0Pzogc3RyaW5nIHwgbnVtYmVyOyAvLyBzb2JyZXNjcmliZSBlbCB0ZXh0byBjZW50cmFsXHJcbiAgQElucHV0KCkgc29ydCA9IGZhbHNlOyAgICAgICAgICAgICAgIC8vIG9yZGVuYSBzZWdtZW50b3MgcG9yIHZhbG9yIChkZXNjKVxyXG5cclxuICBAT3V0cHV0KCkgc2xpY2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RG9udXREYXRhPigpO1xyXG5cclxuICAvLyBzZcOxYWxlcyBwYXJhIHJlY2FsY3VsYXJcclxuICBwcml2YXRlIF9zbGljZXMgPSBzaWduYWw8U2xpY2VDb21wdXRlZFtdPihbXSk7XHJcbiAgcHJpdmF0ZSBfdG90YWwgPSBzaWduYWwoMCk7XHJcbiAgcHJpdmF0ZSBfY2lyYyA9IHNpZ25hbCgwKTtcclxuICBwcml2YXRlIF9yYWRpdXMgPSBzaWduYWwoMCk7XHJcblxyXG4gIHJlYWRvbmx5IHNsaWNlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3NsaWNlcygpKTtcclxuICByZWFkb25seSB0b3RhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3RvdGFsKCkpO1xyXG4gIHJlYWRvbmx5IHJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3JhZGl1cygpKTtcclxuICByZWFkb25seSBjaXJjdW1mZXJlbmNlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY2lyYygpKTtcclxuICByZWFkb25seSB2aWV3Qm94ID0gY29tcHV0ZWQoKCkgPT4gYDAgMCAke3RoaXMuc2l6ZX0gJHt0aGlzLnNpemV9YCk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xlYW5lZCA9ICh0aGlzLmRhdGEgPz8gW10pLmZpbHRlcihkID0+IE51bWJlcihkPy52YWx1ZSkgPiAwKTtcclxuICAgIGNvbnN0IHRvdGFsID0gY2xlYW5lZC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnZhbHVlLCAwKTtcclxuXHJcbiAgICBjb25zdCByYWRpdXMgPSB0aGlzLnNpemUgLyAyIC0gdGhpcy50aGlja25lc3MgLyAyO1xyXG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogcmFkaXVzO1xyXG4gICAgdGhpcy5fcmFkaXVzLnNldChyYWRpdXMpO1xyXG4gICAgdGhpcy5fY2lyYy5zZXQoY2lyY3VtZmVyZW5jZSk7XHJcblxyXG4gICAgLy8gc2luIGRhdG9zIHbDoWxpZG9zXHJcbiAgICBpZiAodG90YWwgPD0gMCkge1xyXG4gICAgICB0aGlzLl9zbGljZXMuc2V0KFtdKTtcclxuICAgICAgdGhpcy5fdG90YWwuc2V0KDApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcGFsZXRhIChyb3RhIHNpIG5vIGFsY2FuemEpXHJcbiAgICBjb25zdCBwYWxldHRlID0gW1xyXG4gICAgICAnIzIxNjdGRicsIC8vIEluZm8tNTAwXHJcbiAgICAgICcjMEEyODkzJywgLy8gSW5mby04MDBcclxuICAgICAgJyM0MENBRTknLCAvLyBQcmltYXJ5LTQwMFxyXG4gICAgICAnIzU4OTJGRicsIC8vIEluZm8tNDAwXHJcbiAgICAgICcjMDhBNkRCJywgLy8gUHJpbWFyeS01MDBcclxuICAgICAgJyNDNERGRkYnLCAvLyBJbmZvLTIwMFxyXG4gICAgXTtcclxuICAgIGxldCBwSW5kZXggPSAwO1xyXG4gICAgY29uc3QgYmFzZSA9IGNsZWFuZWQubWFwKGQgPT4gKHtcclxuICAgICAgLi4uZCxcclxuICAgICAgY29sb3I6IGQuY29sb3IgPz8gcGFsZXR0ZVtwSW5kZXgrKyAlIHBhbGV0dGUubGVuZ3RoXVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIG9yZGVuIG9wY2lvbmFsXHJcbiAgICBjb25zdCBkYXRhT3JkZXJlZCA9IHRoaXMuc29ydCA/IFsuLi5iYXNlXS5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSkgOiBiYXNlO1xyXG5cclxuICAgIC8vIGdlb21ldHLDrWEgYW5ndWxhclxyXG4gICAgY29uc3QgY3ggPSB0aGlzLnNpemUgLyAyO1xyXG4gICAgY29uc3QgY3kgPSB0aGlzLnNpemUgLyAyO1xyXG4gICAgY29uc3QgbiA9IGRhdGFPcmRlcmVkLmxlbmd0aDtcclxuICAgIGNvbnN0IGdhcCA9IE1hdGgubWF4KHRoaXMuZ2FwRGVncmVlcywgMCk7XHJcbiAgICBjb25zdCB1c2VmdWxEZWcgPSBNYXRoLm1heCgzNjAgLSBuICogZ2FwLCAwKTsgLy8gZXZpdGEgbmVnYXRpdm9zXHJcblxyXG4gICAgbGV0IGN1cnJlbnQgPSAtOTA7IC8vIGFycmFuY2EgYSBsYXMgMTIgZW4gcHVudG9cclxuICAgIGNvbnN0IHNsaWNlczogU2xpY2VDb21wdXRlZFtdID0gZGF0YU9yZGVyZWQubWFwKGQgPT4ge1xyXG4gICAgICBjb25zdCBmcmFjdGlvbiA9IGQudmFsdWUgLyB0b3RhbDtcclxuICAgICAgY29uc3Qgc3dlZXAgPSB1c2VmdWxEZWcgKiBmcmFjdGlvbjtcclxuXHJcbiAgICAgIC8vIGRlamFtb3MgbWVkaW8gZ2FwIGFudGVzIHkgZGVzcHXDqXMgZGVsIGFyY29cclxuICAgICAgY29uc3Qgc3RhcnREZWcgPSBjdXJyZW50ICsgZ2FwIC8gMjtcclxuICAgICAgY29uc3QgZW5kRGVnID0gc3RhcnREZWcgKyBzd2VlcDtcclxuXHJcbiAgICAgIGNvbnN0IHBhdGhEID0gdGhpcy5hcmNQYXRoKGN4LCBjeSwgcmFkaXVzLCBzdGFydERlZywgZW5kRGVnKTtcclxuICAgICAgY29uc3QgbWlkRGVnID0gc3RhcnREZWcgKyBzd2VlcCAvIDI7XHJcbiAgICAgIGNvbnN0IG1pZCA9IHRoaXMucG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgbWlkRGVnKTtcclxuXHJcbiAgICAgIC8vIGF2YW56YSBlbCBjdXJzb3IgYW5ndWxhciBwYXJhIGVsIHNpZ3VpZW50ZSBzbGljZVxyXG4gICAgICBjdXJyZW50ID0gZW5kRGVnICsgZ2FwIC8gMjtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZCxcclxuICAgICAgICBwZXJjZW50YWdlOiArKGZyYWN0aW9uICogMTAwKS50b0ZpeGVkKDIpLFxyXG4gICAgICAgIHBhdGhELFxyXG4gICAgICAgIG1pZFg6IG1pZC54LFxyXG4gICAgICAgIG1pZFk6IG1pZC55XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zbGljZXMuc2V0KHNsaWNlcyk7XHJcbiAgICB0aGlzLl90b3RhbC5zZXQodG90YWwpO1xyXG4gIH1cclxuXHJcbiAgLy8gPT09IGhlbHBlcnMgZGUgZ2VvbWV0csOtYSA9PT1cclxuICBwcml2YXRlIHBvbGFyVG9DYXJ0ZXNpYW4oY3g6IG51bWJlciwgY3k6IG51bWJlciwgcjogbnVtYmVyLCBkZWc6IG51bWJlcikge1xyXG4gICAgY29uc3QgcmFkID0gKGRlZyAqIE1hdGguUEkpIC8gMTgwO1xyXG4gICAgcmV0dXJuIHsgeDogY3ggKyByICogTWF0aC5jb3MocmFkKSwgeTogY3kgKyByICogTWF0aC5zaW4ocmFkKSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcmNQYXRoKGN4OiBudW1iZXIsIGN5OiBudW1iZXIsIHI6IG51bWJlciwgc3RhcnREZWc6IG51bWJlciwgZW5kRGVnOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByLCBzdGFydERlZyk7XHJcbiAgICBjb25zdCBlbmQgPSB0aGlzLnBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByLCBlbmREZWcpO1xyXG4gICAgY29uc3Qgc3dlZXAgPSBlbmREZWcgLSBzdGFydERlZztcclxuICAgIGNvbnN0IGxhcmdlQXJjRmxhZyA9IHN3ZWVwID4gMTgwID8gMSA6IDA7XHJcbiAgICAvLyBhcmNvIGhvcmFyaW8gKHN3ZWVwLWZsYWc9MSlcclxuICAgIHJldHVybiBgTSAke3N0YXJ0Lnh9ICR7c3RhcnQueX0gQSAke3J9ICR7cn0gMCAke2xhcmdlQXJjRmxhZ30gMSAke2VuZC54fSAke2VuZC55fWA7XHJcbiAgfVxyXG5cclxuICAvLyBldmVudG9zIC8gdXRpbGlkYWRlc1xyXG4gIG9uU2xpY2VDbGljayhzOiBTbGljZUNvbXB1dGVkKSB7XHJcbiAgICB0aGlzLnNsaWNlQ2xpY2suZW1pdCh7IGxhYmVsOiBzLmxhYmVsLCB2YWx1ZTogcy52YWx1ZSwgY29sb3I6IHMuY29sb3IgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2VudGVyTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmNlbnRlclRleHQgPz8gdGhpcy50b3RhbCgpfWA7XHJcbiAgfVxyXG5cclxuICBnZXRQb3BvdmVyVGV4dChzOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnRhZ2U6IG51bWJlciB9KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtzLmxhYmVsfTogJHtzLnZhbHVlfSAoJHtzLnBlcmNlbnRhZ2V9JSlgO1xyXG4gIH1cclxuXHJcbiAgLy8gYWNjZXNpYmlsaWRhZDogZGVzY3JpYmUgbGEgZG9uYVxyXG4gIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5zbGljZXMoKS5tYXAocyA9PiBgJHtzLmxhYmVsfTogJHtzLnZhbHVlfSAoJHtzLnBlcmNlbnRhZ2V9JSlgKTtcclxuICAgIHJldHVybiBgR3LDoWZpY2EgZGUgZG9uYS4gVG90YWwgJHt0aGlzLnRvdGFsKCl9LiAke3BhcnRzLmpvaW4oJy4gJyl9YDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRvbnV0LXdyYXBwZXJcIiBbY2xhc3MuYm90dG9tXT1cImxlZ2VuZFBvc2l0aW9uID09PSAnYm90dG9tJ1wiPlxyXG4gICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiZG9udXRcIlxyXG4gICAgICAgIHJvbGU9XCJpbWdcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcclxuICAgICAgICBbYXR0ci53aWR0aF09XCJzaXplXCJcclxuICAgICAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiXHJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94KClcIj5cclxuICAgICAgICA8IS0tIHBpc3RhIC0tPlxyXG4gICAgICAgIDxjaXJjbGVcclxuICAgICAgICBjbGFzcz1cInRyYWNrXCJcclxuICAgICAgICBbYXR0ci5jeF09XCJzaXplLzJcIlxyXG4gICAgICAgIFthdHRyLmN5XT1cInNpemUvMlwiXHJcbiAgICAgICAgW2F0dHIucl09XCJyYWRpdXMoKVwiXHJcbiAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInRoaWNrbmVzc1wiXHJcbiAgICAgICAgPjwvY2lyY2xlPlxyXG5cclxuICAgICAgICA8IS0tIHNsaWNlcyBjb21vIFBBVEggKGNhZGEgdW5vIGVzIHN1IGFyY28gcmVhbCkgLS0+XHJcbiAgICAgICAgQGZvciAocyBvZiBzbGljZXMoKTsgdHJhY2sgcy5sYWJlbCkge1xyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2xpY2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5kXT1cInMucGF0aERcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzLmNvbG9yXCJcclxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInRoaWNrbmVzc1wiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwiYnV0dFwiXHJcbiAgICAgICAgICAgIFtpdXNQb3BvdmVyQ29udGVudF09XCJnZXRQb3BvdmVyVGV4dChzKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNsaWNlQ2xpY2socylcIlxyXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIGNlbnRybyAtLT5cclxuICAgICAgICA8Zz5cclxuICAgICAgICAgICAgPHRleHRcclxuICAgICAgICAgICAgICAgIFthdHRyLnhdPVwic2l6ZS8yXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLnldPVwic2l6ZS8yXCJcclxuICAgICAgICAgICAgICAgIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcclxuICAgICAgICAgICAgICAgIGFsaWdubWVudC1iYXNlbGluZT1cIm1pZGRsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlbnRlci10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjZW50ZXJMYWJlbCB9fVxyXG4gICAgICAgICAgICA8L3RleHQ+XHJcbiAgICAgICAgPC9nPlxyXG4gICAgPC9zdmc+XHJcblxyXG4gICAgQGlmIChzaG93TGVnZW5kICYmIHNsaWNlcygpLmxlbmd0aCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBzY3JvbGxhYmxlLXNtYWxsXCIgW2NsYXNzLmJvdHRvbV09XCJsZWdlbmRQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIj5cclxuICAgICAgQGZvciAocyBvZiBzbGljZXMoKTsgdHJhY2sgcy5sYWJlbCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzLmNvbG9yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBjYXB0aW9uLXNtXCIgW2l1c1BvcG92ZXJDb250ZW50XT1cInMudmFsdWUudG9TdHJpbmcoKSArICcgLSAnICsgcy5sYWJlbFwiPnt7cy52YWx1ZX19IC0ge3tzLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLWRvbnV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2NoYXJ0cy1kb251dC9jaGFydHMtZG9udXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvY2hhcnRzLWRvbnV0L2NoYXJ0cy1kb251dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQWtCbkUsTUFBTSxPQUFPLG9CQUFvQjtJQVBqQztRQVFXLFNBQUksR0FBZ0IsRUFBRSxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxHQUFHLENBQUMsQ0FBaUIsdUJBQXVCO1FBQ25ELGNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBYSxvQkFBb0I7UUFDaEQsZUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFhLHNDQUFzQztRQUNsRSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLG1CQUFjLEdBQXVCLE9BQU8sQ0FBQztRQUU3QyxTQUFJLEdBQUcsS0FBSyxDQUFDLENBQWUsb0NBQW9DO1FBRS9ELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRXJELDBCQUEwQjtRQUNsQixZQUFPLEdBQUcsTUFBTSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN0QyxXQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFD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a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQzs4QkFLaEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBvcG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3BvcG92ZXIuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCB0eXBlIERvbnV0RGF0YSA9IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlcjsgY29sb3I/OiBzdHJpbmcgfTtcclxuXHJcbnR5cGUgU2xpY2VDb21wdXRlZCA9IERvbnV0RGF0YSAmIHtcclxuICBwZXJjZW50YWdlOiBudW1iZXI7XHJcbiAgcGF0aEQ6IHN0cmluZzsgICAvLyBwYXRoIGRlbCBhcmNvXHJcbiAgbWlkWDogbnVtYmVyOyAgICAvLyBwdW50byBtZWRpbyBkZWwgYXJjbyAocG9yIHNpIHNlIHF1aWVyZSBhbmNsYXIgYWjDrSlcclxuICBtaWRZOiBudW1iZXI7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2l1cy1jaGFydHMtZG9udXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlckRpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy1kb251dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnRzLWRvbnV0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXJ0c0RvbnV0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBkYXRhOiBEb251dERhdGFbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNpemUgPSAxODA7ICAgICAgICAgICAgICAgICAvLyB3aWR0aC9oZWlnaHQgZGVsIFNWR1xyXG4gIEBJbnB1dCgpIHRoaWNrbmVzcyA9IDE4OyAgICAgICAgICAgICAvLyBncm9zb3IgZGVsIGFuaWxsb1xyXG4gIEBJbnB1dCgpIGdhcERlZ3JlZXMgPSAwOyAgICAgICAgICAgICAvLyBzZXBhcmFjacOzbiBlbnRyZSBzZWdtZW50b3MgKGdyYWRvcylcclxuICBASW5wdXQoKSBzaG93TGVnZW5kID0gdHJ1ZTtcclxuICBASW5wdXQoKSBsZWdlbmRQb3NpdGlvbjogJ3JpZ2h0JyB8ICdib3R0b20nID0gJ3JpZ2h0JztcclxuICBASW5wdXQoKSBjZW50ZXJUZXh0Pzogc3RyaW5nIHwgbnVtYmVyOyAvLyBzb2JyZXNjcmliZSBlbCB0ZXh0byBjZW50cmFsXHJcbiAgQElucHV0KCkgc29ydCA9IGZhbHNlOyAgICAgICAgICAgICAgIC8vIG9yZGVuYSBzZWdtZW50b3MgcG9yIHZhbG9yIChkZXNjKVxyXG5cclxuICBAT3V0cHV0KCkgc2xpY2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RG9udXREYXRhPigpO1xyXG5cclxuICAvLyBzZcOxYWxlcyBwYXJhIHJlY2FsY3VsYXJcclxuICBwcml2YXRlIF9zbGljZXMgPSBzaWduYWw8U2xpY2VDb21wdXRlZFtdPihbXSk7XHJcbiAgcHJpdmF0ZSBfdG90YWwgPSBzaWduYWwoMCk7XHJcbiAgcHJpdmF0ZSBfY2lyYyA9IHNpZ25hbCgwKTtcclxuICBwcml2YXRlIF9yYWRpdXMgPSBzaWduYWwoMCk7XHJcblxyXG4gIHJlYWRvbmx5IHNsaWNlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3NsaWNlcygpKTtcclxuICByZWFkb25seSB0b3RhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3RvdGFsKCkpO1xyXG4gIHJlYWRvbmx5IHJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3JhZGl1cygpKTtcclxuICByZWFkb25seSBjaXJjdW1mZXJlbmNlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fY2lyYygpKTtcclxuICByZWFkb25seSB2aWV3Qm94ID0gY29tcHV0ZWQoKCkgPT4gYDAgMCAke3RoaXMuc2l6ZX0gJHt0aGlzLnNpemV9YCk7XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xlYW5lZCA9ICh0aGlzLmRhdGEgPz8gW10pLmZpbHRlcihkID0+IE51bWJlcihkPy52YWx1ZSkgPiAwKTtcclxuICAgIGNvbnN0IHRvdGFsID0gY2xlYW5lZC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnZhbHVlLCAwKTtcclxuXHJcbiAgICBjb25zdCByYWRpdXMgPSB0aGlzLnNpemUgLyAyIC0gdGhpcy50aGlja25lc3MgLyAyO1xyXG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogcmFkaXVzO1xyXG4gICAgdGhpcy5fcmFkaXVzLnNldChyYWRpdXMpO1xyXG4gICAgdGhpcy5fY2lyYy5zZXQoY2lyY3VtZmVyZW5jZSk7XHJcblxyXG4gICAgLy8gc2luIGRhdG9zIHbDoWxpZG9zXHJcbiAgICBpZiAodG90YWwgPD0gMCkge1xyXG4gICAgICB0aGlzLl9zbGljZXMuc2V0KFtdKTtcclxuICAgICAgdGhpcy5fdG90YWwuc2V0KDApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcGFsZXRhIChyb3RhIHNpIG5vIGFsY2FuemEpXHJcbiAgICBjb25zdCBwYWxldHRlID0gW1xyXG4gICAgICAnIzIxNjdGRicsIC8vIEluZm8tNTAwXHJcbiAgICAgICcjMEEyODkzJywgLy8gSW5mby04MDBcclxuICAgICAgJyM0MENBRTknLCAvLyBQcmltYXJ5LTQwMFxyXG4gICAgICAnIzU4OTJGRicsIC8vIEluZm8tNDAwXHJcbiAgICAgICcjMDhBNkRCJywgLy8gUHJpbWFyeS01MDBcclxuICAgICAgJyNDNERGRkYnLCAvLyBJbmZvLTIwMFxyXG4gICAgXTtcclxuICAgIGxldCBwSW5kZXggPSAwO1xyXG4gICAgY29uc3QgYmFzZSA9IGNsZWFuZWQubWFwKGQgPT4gKHtcclxuICAgICAgLi4uZCxcclxuICAgICAgY29sb3I6IGQuY29sb3IgPz8gcGFsZXR0ZVtwSW5kZXgrKyAlIHBhbGV0dGUubGVuZ3RoXVxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIG9yZGVuIG9wY2lvbmFsXHJcbiAgICBjb25zdCBkYXRhT3JkZXJlZCA9IHRoaXMuc29ydCA/IFsuLi5iYXNlXS5zb3J0KChhLCBiKSA9PiBiLnZhbHVlIC0gYS52YWx1ZSkgOiBiYXNlO1xyXG5cclxuICAgIC8vIGdlb21ldHLDrWEgYW5ndWxhclxyXG4gICAgY29uc3QgY3ggPSB0aGlzLnNpemUgLyAyO1xyXG4gICAgY29uc3QgY3kgPSB0aGlzLnNpemUgLyAyO1xyXG4gICAgY29uc3QgbiA9IGRhdGFPcmRlcmVkLmxlbmd0aDtcclxuICAgIGNvbnN0IGdhcCA9IE1hdGgubWF4KHRoaXMuZ2FwRGVncmVlcywgMCk7XHJcbiAgICBjb25zdCB1c2VmdWxEZWcgPSBNYXRoLm1heCgzNjAgLSBuICogZ2FwLCAwKTsgLy8gZXZpdGEgbmVnYXRpdm9zXHJcblxyXG4gICAgbGV0IGN1cnJlbnQgPSAtOTA7IC8vIGFycmFuY2EgYSBsYXMgMTIgZW4gcHVudG9cclxuICAgIGNvbnN0IHNsaWNlczogU2xpY2VDb21wdXRlZFtdID0gZGF0YU9yZGVyZWQubWFwKGQgPT4ge1xyXG4gICAgICBjb25zdCBmcmFjdGlvbiA9IGQudmFsdWUgLyB0b3RhbDtcclxuICAgICAgY29uc3Qgc3dlZXAgPSB1c2VmdWxEZWcgKiBmcmFjdGlvbjtcclxuXHJcbiAgICAgIC8vIGRlamFtb3MgbWVkaW8gZ2FwIGFudGVzIHkgZGVzcHXDqXMgZGVsIGFyY29cclxuICAgICAgY29uc3Qgc3RhcnREZWcgPSBjdXJyZW50ICsgZ2FwIC8gMjtcclxuICAgICAgY29uc3QgZW5kRGVnID0gc3RhcnREZWcgKyBzd2VlcDtcclxuXHJcbiAgICAgIGNvbnN0IHBhdGhEID0gdGhpcy5hcmNQYXRoKGN4LCBjeSwgcmFkaXVzLCBzdGFydERlZywgZW5kRGVnKTtcclxuICAgICAgY29uc3QgbWlkRGVnID0gc3RhcnREZWcgKyBzd2VlcCAvIDI7XHJcbiAgICAgIGNvbnN0IG1pZCA9IHRoaXMucG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgbWlkRGVnKTtcclxuXHJcbiAgICAgIC8vIGF2YW56YSBlbCBjdXJzb3IgYW5ndWxhciBwYXJhIGVsIHNpZ3VpZW50ZSBzbGljZVxyXG4gICAgICBjdXJyZW50ID0gZW5kRGVnICsgZ2FwIC8gMjtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZCxcclxuICAgICAgICBwZXJjZW50YWdlOiArKGZyYWN0aW9uICogMTAwKS50b0ZpeGVkKDIpLFxyXG4gICAgICAgIHBhdGhELFxyXG4gICAgICAgIG1pZFg6IG1pZC54LFxyXG4gICAgICAgIG1pZFk6IG1pZC55XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zbGljZXMuc2V0KHNsaWNlcyk7XHJcbiAgICB0aGlzLl90b3RhbC5zZXQodG90YWwpO1xyXG4gIH1cclxuXHJcbiAgLy8gPT09IGhlbHBlcnMgZGUgZ2VvbWV0csOtYSA9PT1cclxuICBwcml2YXRlIHBvbGFyVG9DYXJ0ZXNpYW4oY3g6IG51bWJlciwgY3k6IG51bWJlciwgcjogbnVtYmVyLCBkZWc6IG51bWJlcikge1xyXG4gICAgY29uc3QgcmFkID0gKGRlZyAqIE1hdGguUEkpIC8gMTgwO1xyXG4gICAgcmV0dXJuIHsgeDogY3ggKyByICogTWF0aC5jb3MocmFkKSwgeTogY3kgKyByICogTWF0aC5zaW4ocmFkKSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcmNQYXRoKGN4OiBudW1iZXIsIGN5OiBudW1iZXIsIHI6IG51bWJlciwgc3RhcnREZWc6IG51bWJlciwgZW5kRGVnOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByLCBzdGFydERlZyk7XHJcbiAgICBjb25zdCBlbmQgPSB0aGlzLnBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByLCBlbmREZWcpO1xyXG4gICAgY29uc3Qgc3dlZXAgPSBlbmREZWcgLSBzdGFydERlZztcclxuICAgIGNvbnN0IGxhcmdlQXJjRmxhZyA9IHN3ZWVwID4gMTgwID8gMSA6IDA7XHJcbiAgICAvLyBhcmNvIGhvcmFyaW8gKHN3ZWVwLWZsYWc9MSlcclxuICAgIHJldHVybiBgTSAke3N0YXJ0Lnh9ICR7c3RhcnQueX0gQSAke3J9ICR7cn0gMCAke2xhcmdlQXJjRmxhZ30gMSAke2VuZC54fSAke2VuZC55fWA7XHJcbiAgfVxyXG5cclxuICAvLyBldmVudG9zIC8gdXRpbGlkYWRlc1xyXG4gIG9uU2xpY2VDbGljayhzOiBTbGljZUNvbXB1dGVkKSB7XHJcbiAgICB0aGlzLnNsaWNlQ2xpY2suZW1pdCh7IGxhYmVsOiBzLmxhYmVsLCB2YWx1ZTogcy52YWx1ZSwgY29sb3I6IHMuY29sb3IgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2VudGVyTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmNlbnRlclRleHQgPz8gdGhpcy50b3RhbCgpfWA7XHJcbiAgfVxyXG5cclxuICBnZXRQb3BvdmVyVGV4dChzOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnRhZ2U6IG51bWJlciB9KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtzLmxhYmVsfTogJHtzLnZhbHVlfSAoJHtzLnBlcmNlbnRhZ2V9JSlgO1xyXG4gIH1cclxuXHJcbiAgLy8gYWNjZXNpYmlsaWRhZDogZGVzY3JpYmUgbGEgZG9uYVxyXG4gIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5zbGljZXMoKS5tYXAocyA9PiBgJHtzLmxhYmVsfTogJHtzLnZhbHVlfSAoJHtzLnBlcmNlbnRhZ2V9JSlgKTtcclxuICAgIHJldHVybiBgR3LDoWZpY2EgZGUgZG9uYS4gVG90YWwgJHt0aGlzLnRvdGFsKCl9LiAke3BhcnRzLmpvaW4oJy4gJyl9YDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRvbnV0LXdyYXBwZXJcIiBbY2xhc3MuYm90dG9tXT1cImxlZ2VuZFBvc2l0aW9uID09PSAnYm90dG9tJ1wiPlxyXG4gICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiZG9udXRcIlxyXG4gICAgICAgIHJvbGU9XCJpbWdcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcclxuICAgICAgICBbYXR0ci53aWR0aF09XCJzaXplXCJcclxuICAgICAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiXHJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94KClcIj5cclxuICAgICAgICA8IS0tIHBpc3RhIC0tPlxyXG4gICAgICAgIDxjaXJjbGVcclxuICAgICAgICBjbGFzcz1cInRyYWNrXCJcclxuICAgICAgICBbYXR0ci5jeF09XCJzaXplLzJcIlxyXG4gICAgICAgIFthdHRyLmN5XT1cInNpemUvMlwiXHJcbiAgICAgICAgW2F0dHIucl09XCJyYWRpdXMoKVwiXHJcbiAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInRoaWNrbmVzc1wiXHJcbiAgICAgICAgPjwvY2lyY2xlPlxyXG5cclxuICAgICAgICA8IS0tIHNsaWNlcyBjb21vIFBBVEggKGNhZGEgdW5vIGVzIHN1IGFyY28gcmVhbCkgLS0+XHJcbiAgICAgICAgQGZvciAocyBvZiBzbGljZXMoKTsgdHJhY2sgcy5sYWJlbCkge1xyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2xpY2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5kXT1cInMucGF0aERcIlxyXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzLmNvbG9yXCJcclxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInRoaWNrbmVzc1wiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwiYnV0dFwiXHJcbiAgICAgICAgICAgIFtpdXNQb3BvdmVyQ29udGVudF09XCJnZXRQb3BvdmVyVGV4dChzKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNsaWNlQ2xpY2socylcIlxyXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIGNlbnRybyAtLT5cclxuICAgICAgICA8Zz5cclxuICAgICAgICAgICAgPHRleHRcclxuICAgICAgICAgICAgICAgIFthdHRyLnhdPVwic2l6ZS8yXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLnldPVwic2l6ZS8yXCJcclxuICAgICAgICAgICAgICAgIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcclxuICAgICAgICAgICAgICAgIGFsaWdubWVudC1iYXNlbGluZT1cIm1pZGRsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlbnRlci10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjZW50ZXJMYWJlbCB9fVxyXG4gICAgICAgICAgICA8L3RleHQ+XHJcbiAgICAgICAgPC9nPlxyXG4gICAgPC9zdmc+XHJcblxyXG4gICAgQGlmIChzaG93TGVnZW5kICYmIHNsaWNlcygpLmxlbmd0aCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBzY3JvbGxhYmxlLXNtYWxsXCIgW2NsYXNzLmJvdHRvbV09XCJsZWdlbmRQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIj5cclxuICAgICAgQGZvciAocyBvZiBzbGljZXMoKTsgdHJhY2sgcy5sYWJlbCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzLmNvbG9yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBjYXB0aW9uLXNtXCIgW2l1c1BvcG92ZXJDb250ZW50XT1cInMudmFsdWUudG9TdHJpbmcoKSArICcgLSAnICsgcy5sYWJlbFwiPnt7cy52YWx1ZX19IC0ge3tzLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxuIl19