ngx-aur-mat-table 13.0.4 → 13.0.5

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9tb2RlbC9Db2x1bW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL1RhYmxlUm93XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnPFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC60L7Qu9C+0L3QvtC6XHJcbiAgICovXHJcbiAgY29sdW1uc0NmZzogQ29sdW1uQ29uZmlnPFQ+W10sXHJcblxyXG4gIC8qKlxyXG4gICAqINCd0LDRgdGC0YDQvtC50LrQsCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC/0L7RgNGP0LTQutC+0LLQvtCz0L4g0LjQvdC00LXQutGB0LAg0YHRgtGA0L7QutC4INCyINGC0LDQsdC70LjRhtC1XHJcbiAgICovXHJcbiAgaW5kZXhDZmc/OiBJbmRleENvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgtGA0L7QutC4INC/0L7QuNGB0LrQsCDQsiDRgtCw0LHQu9C40YbQtVxyXG4gICAqL1xyXG4gIGZpbHRlckNmZz86IEZpbHRlckNvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LrQvdC+0L/QvtC6INC00LvRjyDRgdC+0LLQtdGA0YjQtdC90LjRjyDQtNC10LnRgdGC0LLQuNC5INGBINC+0LHRitC60YLQvtC8INCyINGB0YLRgNC+0LrQtVxyXG4gICAqL1xyXG4gIGFjdGlvbkNmZz86IEFjdGlvbkNvbmZpZzxUPixcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGH0LXQutCx0L7QutGB0L7QslxyXG4gICAqL1xyXG4gIHNlbGVjdGlvbkNmZz86IFNlbGVjdGlvbkNvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC/0LDQs9C40L3QsNGG0LjQuCDRgtCw0LHQu9C40YbRi1xyXG4gICAqL1xyXG4gIHBhZ2VhYmxlQ2ZnPzogUGFnaW5hdGlvbkNvbmZpZyxcclxuICBjbGlja0NmZz86IENsaWNrQ29uZmlnLFxyXG4gIHN0aWNreUNmZz86IFN0aWNreUNvbmZpZyxcclxuICB0YWJsZVZpZXc/OiBUYWJsZVZpZXcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIFNob3cgcG9pbnRlciBvbiBob3ZlcmVkIHJvd1xyXG4gICAqL1xyXG4gIHBvaW50ZXI/OiBib29sZWFuO1xyXG4gIGhpZ2hsaWdodENsaWNrZWQ/OiBEZWNvclN0eWxlcztcclxuXHJcbiAgLyoqXHJcbiAgICogZGVmYXVsdCBmYWxzZVxyXG4gICAqIGZhbHNlINC/0LXRgNCy0L7QtSDQuCDQstGC0L7RgNC+0LUg0L3QsNC20LDRgtC40LUg0LPQtdC90LXRgNC40YDRg9C10YIg0YHQvtCx0YvRgtC40LUg0YEg0Y3RgtC+0Lkg0YHRgtGA0L7QutC+0Lkg0LLRi9C00LXQu9C10L3QuNC1INGB0L4g0YHRgtGA0L7QutC4INC90LUg0YHQvdC40LzQsNC10YLRgdGPXHJcbiAgICpcclxuICAgKiDQtdGB0LvQuCB0cnVlINC/0LXRgNCy0L7QtSDQvdCw0LbQsNGC0LjQtSDQs9C10L3QtdGA0LjRgNGD0LXRgiDRgdC+0LHRi9GC0LjQtSDRgSDRjdGC0L7QuSDRgdGC0YDQvtC60L7QuSwg0LLRgtC+0YDQvtC1INC90LDQttCw0YLQuNC1INCy0LXRgNC90LXRgiB1bmRlZmluZWQsXHJcbiAgICog0L/QtdGA0LLQvtC1INC90LDQttCw0YLQuNC1INCy0YvQtNC10LvRj9C10YIg0YHRgtGA0L7QutGDINCy0YLQvtGA0L7QtSDQvtGC0LzQtdC90Y/QtdGCINCy0YvQtNC10LvQtdC90LjQtVxyXG4gICAqL1xyXG4gIGNhbmNlbGFibGU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlY29yU3R5bGVzIHtcclxuICBjb2xvcj86IHN0cmluZztcclxuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xyXG4gIGJvcmRlcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5Db25maWc8VD4ge1xyXG4gIC8qKiBjb2x1bW4gdGl0bGUgdGV4dCAqL1xyXG4gIG5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqIGNvbHVtbiBrZXkgaW4gZGF0YSBzb3VyY2UgKi9cclxuICBrZXk6IHN0cmluZztcclxuXHJcbiAgLyoqIHJldHVybiB2YWx1ZSB0byBzYXZlIGluIE1hdFRhYmxlRGF0YVNvdXJjZSAqL1xyXG4gIHZhbHVlQ29udmVydGVyOiAodmFsdWU6IFQpID0+IGFueTtcclxuICBzb3J0PzogU29ydENvbmZpZzxUPjtcclxuICBoZWFkZXJWaWV3PzogQ29sdW1uVmlldzxzdHJpbmc+O1xyXG4gIHZhbHVlVmlldz86IENvbHVtblZpZXc8KHZhbHVlOiBUYWJsZVJvdzxUPikgPT4gc3RyaW5nPjtcclxuICB0b3RhbENvbnZlcnRlcj86ICh2YWx1ZTogVGFibGVSb3c8VD5bXSkgPT4gYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRvdGFsUm93VmlldyB7XHJcbiAgc3R5bGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvblZpZXc8VD4ge1xyXG4gIC8qKiBpY29uIG5hbWUgKi9cclxuICBuYW1lOiBUO1xyXG5cclxuICAvKiogaWNvbiBjb2xvciBkZWZhdWx0IGJsYWNrICovXHJcbiAgY29sb3I/OiBUO1xyXG5cclxuICAvKiogaWNvbiB0b29sdGlwIGlmIG51bGwgZGlzYWJsZWQgKi9cclxuICB0b29sdGlwPzogVDtcclxuXHJcbiAgcG9zaXRpb24/OiAncmlnaHQnIHwgJ2xlZnQnO1xyXG5cclxuICB3cmFwcGVyPzogSWNvbldyYXBwZXI8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvbldyYXBwZXI8VD4ge1xyXG4gIGNvbG9yOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlVmlldzxUPiB7XHJcbiAgc3JjOiBUO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIGhlaWdodD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXh0VmlldzxUPiB7XHJcbiAgLyoqIGRlZmF1bHQgdHJ1ZSovXHJcbiAgc2hvdz86IGJvb2xlYW47XHJcbiAgLyoqIHRvb2x0aXAgKi9cclxuICB0b29sdGlwPzogVDtcclxuICBjb2xvcj86IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uVmlldzxUPiB7XHJcblxyXG4gIC8qKiBzZXR0aW5ncyBmb3IgaWNvbiBpbiBjb2x1bW4gKi9cclxuICBpY29uPzogSWNvblZpZXc8VD47XHJcblxyXG4gIGltYWdlPzogSW1hZ2VWaWV3PFQ+XHJcblxyXG4gIHRleHQ/OiBUZXh0VmlldzxUPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTb3J0Q29uZmlnPFQ+IHtcclxuICBlbmFibGU6IGJvb2xlYW47XHJcbiAgcG9zaXRpb24/OiAncmlnaHQnIHwgJ2xlZnQnO1xyXG5cclxuICAvKipcclxuICAgKiBjb2x1bW4ga2V5XHJcbiAgICovXHJcbiAgY3VzdG9tU29ydD86IChkYXRhOiBUYWJsZVJvdzxUPiwga2V5OiBzdHJpbmcpID0+IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbmRleENvbmZpZyB7XHJcbiAgZW5hYmxlOiBib29sZWFuLFxyXG5cclxuICAvKiog0YHQvNC10YnQtdC90LjQtSDQtNC70Y8g0L/QtdGA0LLQvtCz0L4g0LjQvdC00LXQutGB0LAg0L3QsNC/0YDQuNC80LXRgCAxINGH0YLQvtCx0Ysg0L3Rg9C80LXRgNCw0YbQuNGPINC90LDRh9Cw0LvQsNGB0Ywg0YEgMSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQvtGCINC90YPQu9GPICovXHJcbiAgb2Zmc2V0PzogbnVtYmVyLFxyXG5cclxuICBoZWFkZXJDb2x1bW4/OiBDb2x1bW5WaWV3PHN0cmluZz5cclxuXHJcbiAgLyoqINC90LDQt9Cy0LDQvdC40LUg0LTQu9GPINC60L7Qu9C+0L3QutC4LCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAnJyovXHJcbiAgbmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25maWcge1xyXG4gIGVuYWJsZTogYm9vbGVhbjtcclxuICBsYWJlbD86IHN0cmluZztcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Db25maWc8VD4ge1xyXG4gIGVuYWJsZT86IGJvb2xlYW47XHJcbiAgYWN0aW9uczogQWN0aW9uPCh2YWx1ZTogVCkgPT4gc3RyaW5nPltdO1xyXG4gIHBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbjxUPiB7XHJcbiAgYWN0aW9uOiBUO1xyXG4gIGljb246IEljb25WaWV3PFQ+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkNvbmZpZyB7XHJcbiAgcG9zaXRpb24/OiAnc3RhcnQnIHwgJ2VuZCc7XHJcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIHNob3dTZWxlY3RlZENvdW50PzogYm9vbGVhbjtcclxuICBlbmFibGU6IGJvb2xlYW47XHJcbiAgYWN0aW9ucz86IEFjdGlvbjxzdHJpbmc+W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgZW5hYmxlOiBib29sZWFuO1xyXG4gIHNpemVzPzogbnVtYmVyW107XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBzdHlsZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdGlja3lDb25maWcge1xyXG4gIGhlYWRlcj86IGJvb2xlYW47XHJcbiAgdG90YWw/OiBib29sZWFuO1xyXG4gIHN1YkZvb3Rlcj86IGJvb2xlYW47XHJcbiAgc3ViRm9vdGVyUGFnaW5hdGlvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVWaWV3IHtcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgbWluSGVpZ2h0Pzogc3RyaW5nO1xyXG4gIG1heEhlaWdodD86IHN0cmluZztcclxuICB0b3RhbFJvd1ZpZXc/OiBUb3RhbFJvd1ZpZXc7XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9tb2RlbC9Db2x1bW5Db25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuL1RhYmxlUm93XCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnPFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC60L7Qu9C+0L3QvtC6XHJcbiAgICovXHJcbiAgY29sdW1uc0NmZzogQ29sdW1uQ29uZmlnPFQ+W10sXHJcblxyXG4gIC8qKlxyXG4gICAqINCd0LDRgdGC0YDQvtC50LrQsCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC/0L7RgNGP0LTQutC+0LLQvtCz0L4g0LjQvdC00LXQutGB0LAg0YHRgtGA0L7QutC4INCyINGC0LDQsdC70LjRhtC1XHJcbiAgICovXHJcbiAgaW5kZXhDZmc/OiBJbmRleENvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgtGA0L7QutC4INC/0L7QuNGB0LrQsCDQsiDRgtCw0LHQu9C40YbQtVxyXG4gICAqL1xyXG4gIGZpbHRlckNmZz86IEZpbHRlckNvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LrQvdC+0L/QvtC6INC00LvRjyDRgdC+0LLQtdGA0YjQtdC90LjRjyDQtNC10LnRgdGC0LLQuNC5INGBINC+0LHRitC60YLQvtC8INCyINGB0YLRgNC+0LrQtVxyXG4gICAqL1xyXG4gIGFjdGlvbkNmZz86IEFjdGlvbkNvbmZpZzxUPixcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGH0LXQutCx0L7QutGB0L7QslxyXG4gICAqL1xyXG4gIHNlbGVjdGlvbkNmZz86IFNlbGVjdGlvbkNvbmZpZyxcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QsNGB0YLRgNC+0LnQutCwINC/0LDQs9C40L3QsNGG0LjQuCDRgtCw0LHQu9C40YbRi1xyXG4gICAqL1xyXG4gIHBhZ2VhYmxlQ2ZnPzogUGFnaW5hdGlvbkNvbmZpZyxcclxuICBjbGlja0NmZz86IENsaWNrQ29uZmlnLFxyXG4gIHN0aWNreUNmZz86IFN0aWNreUNvbmZpZyxcclxuICB0YWJsZVZpZXc/OiBUYWJsZVZpZXcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIFNob3cgcG9pbnRlciBvbiBob3ZlcmVkIHJvd1xyXG4gICAqL1xyXG4gIHBvaW50ZXI/OiBib29sZWFuO1xyXG4gIGhpZ2hsaWdodENsaWNrZWQ/OiBEZWNvclN0eWxlcztcclxuXHJcbiAgLyoqXHJcbiAgICogZGVmYXVsdCBmYWxzZVxyXG4gICAqIGZhbHNlINC/0LXRgNCy0L7QtSDQuCDQstGC0L7RgNC+0LUg0L3QsNC20LDRgtC40LUg0LPQtdC90LXRgNC40YDRg9C10YIg0YHQvtCx0YvRgtC40LUg0YEg0Y3RgtC+0Lkg0YHRgtGA0L7QutC+0Lkg0LLRi9C00LXQu9C10L3QuNC1INGB0L4g0YHRgtGA0L7QutC4INC90LUg0YHQvdC40LzQsNC10YLRgdGPXHJcbiAgICpcclxuICAgKiDQtdGB0LvQuCB0cnVlINC/0LXRgNCy0L7QtSDQvdCw0LbQsNGC0LjQtSDQs9C10L3QtdGA0LjRgNGD0LXRgiDRgdC+0LHRi9GC0LjQtSDRgSDRjdGC0L7QuSDRgdGC0YDQvtC60L7QuSwg0LLRgtC+0YDQvtC1INC90LDQttCw0YLQuNC1INCy0LXRgNC90LXRgiB1bmRlZmluZWQsXHJcbiAgICog0L/QtdGA0LLQvtC1INC90LDQttCw0YLQuNC1INCy0YvQtNC10LvRj9C10YIg0YHRgtGA0L7QutGDINCy0YLQvtGA0L7QtSDQvtGC0LzQtdC90Y/QtdGCINCy0YvQtNC10LvQtdC90LjQtVxyXG4gICAqL1xyXG4gIGNhbmNlbGFibGU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlY29yU3R5bGVzIHtcclxuICBjb2xvcj86IHN0cmluZztcclxuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xyXG4gIGJvcmRlcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5Db25maWc8VD4ge1xyXG4gIC8qKiBjb2x1bW4gdGl0bGUgdGV4dCAqL1xyXG4gIG5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqIGNvbHVtbiBrZXkgaW4gZGF0YSBzb3VyY2UgKi9cclxuICBrZXk6IHN0cmluZztcclxuXHJcbiAgLyoqIHJldHVybiB2YWx1ZSB0byBzYXZlIGluIE1hdFRhYmxlRGF0YVNvdXJjZSAqL1xyXG4gIHZhbHVlQ29udmVydGVyOiAodmFsdWU6IFQpID0+IGFueTtcclxuICBzb3J0PzogU29ydENvbmZpZzxUPjtcclxuICBoZWFkZXJWaWV3PzogQ29sdW1uVmlldzxzdHJpbmc+O1xyXG4gIHZhbHVlVmlldz86IENvbHVtblZpZXc8KHZhbHVlOiBUYWJsZVJvdzxUPikgPT4gc3RyaW5nPjtcclxuICB0b3RhbENvbnZlcnRlcj86ICh2YWx1ZTogVGFibGVSb3c8VD5bXSkgPT4gYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRvdGFsUm93VmlldyB7XHJcbiAgc3R5bGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvblZpZXc8VD4ge1xyXG4gIC8qKiBpY29uIG5hbWUgKi9cclxuICBuYW1lOiBUO1xyXG5cclxuICAvKiogaWNvbiBjb2xvciBkZWZhdWx0IGJsYWNrICovXHJcbiAgY29sb3I/OiBUO1xyXG5cclxuICAvKiogaWNvbiB0b29sdGlwIGlmIG51bGwgZGlzYWJsZWQgKi9cclxuICB0b29sdGlwPzogVDtcclxuXHJcbiAgcG9zaXRpb24/OiAncmlnaHQnIHwgJ2xlZnQnO1xyXG5cclxuICB3cmFwcGVyPzogSWNvbldyYXBwZXI8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvbldyYXBwZXI8VD4ge1xyXG4gIGNvbG9yOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlVmlldzxUPiB7XHJcbiAgc3JjOiBUO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIGhlaWdodD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXh0VmlldzxUPiB7XHJcbiAgLyoqIGRlZmF1bHQgdHJ1ZSovXHJcbiAgc2hvdz86IGJvb2xlYW47XHJcbiAgLyoqIHRvb2x0aXAgKi9cclxuICB0b29sdGlwPzogVDtcclxuICBjb2xvcj86IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uVmlldzxUPiB7XHJcblxyXG4gIC8qKiBzZXR0aW5ncyBmb3IgaWNvbiBpbiBjb2x1bW4gKi9cclxuICBpY29uPzogSWNvblZpZXc8VD47XHJcblxyXG4gIGltYWdlPzogSW1hZ2VWaWV3PFQ+XHJcblxyXG4gIHRleHQ/OiBUZXh0VmlldzxUPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTb3J0Q29uZmlnPFQ+IHtcclxuICBlbmFibGU6IGJvb2xlYW47XHJcbiAgcG9zaXRpb24/OiAncmlnaHQnIHwgJ2xlZnQnO1xyXG5cclxuICAvKipcclxuICAgKiBjb2x1bW4ga2V5XHJcbiAgICovXHJcbiAgY3VzdG9tU29ydD86IChkYXRhOiBUYWJsZVJvdzxUPiwga2V5OiBzdHJpbmcpID0+IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbmRleENvbmZpZyB7XHJcbiAgZW5hYmxlOiBib29sZWFuLFxyXG5cclxuICAvKiog0YHQvNC10YnQtdC90LjQtSDQtNC70Y8g0L/QtdGA0LLQvtCz0L4g0LjQvdC00LXQutGB0LAg0L3QsNC/0YDQuNC80LXRgCAxINGH0YLQvtCx0Ysg0L3Rg9C80LXRgNCw0YbQuNGPINC90LDRh9Cw0LvQsNGB0Ywg0YEgMSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQvtGCINC90YPQu9GPICovXHJcbiAgb2Zmc2V0PzogbnVtYmVyLFxyXG5cclxuICBoZWFkZXJDb2x1bW4/OiBDb2x1bW5WaWV3PHN0cmluZz5cclxuXHJcbiAgLyoqINC90LDQt9Cy0LDQvdC40LUg0LTQu9GPINC60L7Qu9C+0L3QutC4LCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAnJyovXHJcbiAgbmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25maWcge1xyXG4gIGVuYWJsZTogYm9vbGVhbjtcclxuICBsYWJlbD86IHN0cmluZztcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Db25maWc8VD4ge1xyXG4gIGVuYWJsZT86IGJvb2xlYW47XHJcbiAgYWN0aW9uczogQWN0aW9uPCh2YWx1ZTogVCkgPT4gc3RyaW5nPltdO1xyXG4gIHBvc2l0aW9uPzogJ3N0YXJ0JyB8ICdlbmQnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbjxUPiB7XHJcbiAgYWN0aW9uOiBUO1xyXG4gIGljb246IEljb25WaWV3PFQ+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkNvbmZpZyB7XHJcbiAgcG9zaXRpb24/OiAnc3RhcnQnIHwgJ2VuZCc7XHJcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIHNob3dTZWxlY3RlZENvdW50PzogYm9vbGVhbjtcclxuICAvLyBkZWZhdWx0OiB0cnVlLCDQv9C+0LrQsNC30YvQstCw0YLRjFxyXG4gIHNob3dUb3RhbENvdW50Pzpib29sZWFuO1xyXG4gIGVuYWJsZTogYm9vbGVhbjtcclxuICBhY3Rpb25zPzogQWN0aW9uPHN0cmluZz5bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29uZmlnIHtcclxuICBlbmFibGU6IGJvb2xlYW47XHJcbiAgc2l6ZXM/OiBudW1iZXJbXTtcclxuICBzaXplPzogbnVtYmVyO1xyXG4gIHN0eWxlPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0aWNreUNvbmZpZyB7XHJcbiAgaGVhZGVyPzogYm9vbGVhbjtcclxuICB0b3RhbD86IGJvb2xlYW47XHJcbiAgc3ViRm9vdGVyPzogYm9vbGVhbjtcclxuICBzdWJGb290ZXJQYWdpbmF0aW9uPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVZpZXcge1xyXG4gIGhlaWdodD86IHN0cmluZztcclxuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XHJcbiAgbWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHRvdGFsUm93Vmlldz86IFRvdGFsUm93VmlldztcclxufVxyXG4iXX0=
@@ -251,7 +251,7 @@ export class NgxAurMatTableComponent {
251
251
  }
252
252
  }
253
253
  NgxAurMatTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
254
- NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{ selectionProvider.selection.selected.length }}/{{ tableDataSource.filteredData.length }})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\" >\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\" [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": i12.DataPropertyGetterPipe }, animations: [
254
+ NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n (\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ tableDataSource.filteredData.length }}</span>\r\n )\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row\r\n *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i4.ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3.MatCellDef, selector: "[matCellDef]" }, { type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": i12.DataPropertyGetterPipe }, animations: [
255
255
  trigger('detailExpand', [
256
256
  state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
257
257
  state(ExpandState.EXPANDED, style({ height: '*' })),
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
266
266
  state(ExpandState.EXPANDED, style({ height: '*' })),
267
267
  transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
268
268
  ]),
269
- ], template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{ selectionProvider.selection.selected.length }}/{{ tableDataSource.filteredData.length }})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\" >\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\" [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"] }]
269
+ ], template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n (\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ tableDataSource.filteredData.length }}</span>\r\n )\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row\r\n *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"] }]
270
270
  }], ctorParameters: function () { return []; }, propDecorators: { displayColumns: [{
271
271
  type: Input
272
272
  }], subFooterRowTemplate: [{
@@ -313,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
313
313
  }], highlight: [{
314
314
  type: Input
315
315
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUFFLFlBQVksRUFDdkIsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLE9BQU8sRUFBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RixPQUFPLEVBQWMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUVyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0YsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVB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SCxLQUFLO3NCQUE1QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBRzdCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR29DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFSixPQUFPO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRXhCLElBQUk7c0JBQWIsTUFBTTtnQkFHRyxXQUFXO3NCQUFwQixNQUFNO2dCQUlHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUlHLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQXdCRSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29sdW1uVmlldywgVGFibGVDb25maWd9IGZyb20gJy4vbW9kZWwvQ29sdW1uQ29uZmlnJztcclxuaW1wb3J0IHtNYXRTb3J0LCBTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7U2VsZWN0aW9uUHJvdmlkZXIsIFNlbGVjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1NlbGVjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtBY3Rpb25FdmVudCwgUm93QWN0aW9uUHJvdmlkZXIsIFJvd0FjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1Jvd0FjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSBcIi4vbW9kZWwvVGFibGVSb3dcIjtcclxuaW1wb3J0IHtUYWJsZVZpZXdGYWN0b3J5fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVZpZXdGYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5kZXhQcm92aWRlciwgSW5kZXhQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSW5kZXhQcm92aWRlclwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25Qcm92aWRlciwgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9QYWdpbmF0aW9uUHJvdmlkZXJcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeVwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb2x1bW5zRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL0Rpc3BsYXlDb2x1bW5zRmFjdG9yeVwiO1xyXG5pbXBvcnQge0VtcHR5VmFsdWV9IGZyb20gXCIuL21vZGVsL0VtcHR5VmFsdWVcIjtcclxuaW1wb3J0IHtUb3RhbFJvd1Byb3ZpZGVyLCBUb3RhbFJvd1Byb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9Ub3RhbFJvd1Byb3ZpZGVyXCI7XHJcbmltcG9ydCB7Tmd4QXVyRmlsdGVyc30gZnJvbSBcIi4vZmlsdGVycy9OZ3hBdXJGaWx0ZXJzXCI7XHJcbmltcG9ydCB7Tmd4QXVyTWF0VGFibGVQdWJsaWN9IGZyb20gXCIuL25neC1hdXItbWF0LXRhYmxlLXB1YmxpY1wiO1xyXG5pbXBvcnQge09mZnNldFV0aWx9IGZyb20gXCIuL3V0aWxzL29mZnNldC51dGlsXCI7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQge05neFRhYmxlU3ViRm9vdGVyUm93RGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmUvbmd4LXRhYmxlLXN1Yi1mb290ZXItcm93LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge1NlbGVjdGlvbk1vZGVsfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodENvbnRhaW5lcjxUPiB7XHJcbiAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PZmZzZXQge1xyXG4gIGxlZnQ6IG51bWJlcixcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGtleTogc3RyaW5nXHJcbn1cclxuXHJcbmVudW0gRXhwYW5kU3RhdGUge1xyXG4gIENPTExBUFNFRCA9ICdjb2xsYXBzZWQnLFxyXG4gIEVYUEFOREVEID0gJ2V4cGFuZGVkJ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcbiAgICAgIHN0YXRlKEV4cGFuZFN0YXRlLkNPTExBUFNFRCwgc3R5bGUoe2hlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnfSkpLFxyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5FWFBBTkRFRCwgc3R5bGUoe2hlaWdodDogJyonfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKGAke0V4cGFuZFN0YXRlLkVYUEFOREVEfSA8PT4gJHtFeHBhbmRTdGF0ZS5DT0xMQVBTRUR9YCwgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgTmd4QXVyTWF0VGFibGVQdWJsaWM8VD4ge1xyXG5cclxuICBleHBhbmRlZFN0YXRlRW51bSA9IEV4cGFuZFN0YXRlO1xyXG5cclxuICBwdWJsaWMgdGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUYWJsZVJvdzxUPj4oW10pO1xyXG4gIF9kaXNwbGF5Q29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBfY3VzdG9tRGlzcGxheUNvbHVtbnNFbmFibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBkaXNwbGF5Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKGNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBbLi4uY29sdW1uc107XHJcbiAgICAgIHRoaXMuX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCA9IGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGFibGVWaWV3OiBNYXA8c3RyaW5nLCBDb2x1bW5WaWV3PHN0cmluZz4+W10gPSBbXTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChOZ3hUYWJsZVN1YkZvb3RlclJvd0RpcmVjdGl2ZSkgc3ViRm9vdGVyUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZHJlbigncm93TGluaycsIHtyZWFkOiBFbGVtZW50UmVmfSkgcm93czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgdGFibGU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZzogVGFibGVDb25maWc8VD47XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogVFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGV4dGVuZGVkUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7c3RhdGljOiBmYWxzZX0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHtzdGF0aWM6IHRydWV9KSBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgc29ydDogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBhY3Rpb25zXHJcbiAgQE91dHB1dCgpIG9uUm93QWN0aW9uOiBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4oKTtcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBzZWxlY3QgZXZlbnRcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZFJvd3NBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFRbXT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25Nb2RlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uTW9kZWw8VD4+KCk7XHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZmlsdGVyZWQgcm93c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcbiAgcHJpdmF0ZSBwcmV2Q29sdW1uT2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBbXTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgcmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IEVtcHR5VmFsdWUuUkVTSVpFX09CU0VSVkVSO1xyXG5cclxuICBzZWxlY3Rpb25Qcm92aWRlcjogU2VsZWN0aW9uUHJvdmlkZXI8VD4gPSBuZXcgU2VsZWN0aW9uUHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICByb3dBY3Rpb25zUHJvdmlkZXI6IFJvd0FjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFJvd0FjdGlvblByb3ZpZGVyRHVtbXk8VD4oKTtcclxuXHJcbiAgaW5kZXhQcm92aWRlcjogSW5kZXhQcm92aWRlciA9IG5ldyBJbmRleFByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcGFnaW5hdGlvblByb3ZpZGVyOiBQYWdpbmF0aW9uUHJvdmlkZXIgPSBuZXcgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgdG90YWxSb3dQcm92aWRlcjogVG90YWxSb3dQcm92aWRlcjxUPiA9IG5ldyBUb3RhbFJvd1Byb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgaGlnaGxpZ2h0ZWQ6IFQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgY3VzdG9tU29ydEZ1bmN0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCAoZGF0YTogVGFibGVSb3c8VD4sIGtleTogc3RyaW5nKSA9PiBhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyU3RvcmFnZSA9IG5ldyBNYXA8c3RyaW5nLCBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4+KCk7XHJcblxyXG4gIC8v0LfQvdCw0YfQtdC90LjQtSDQv9C10YDQtdC00LDQtdGC0YHRjyDQsiDQutC+0L3RgtC10LnQvdC10YDQtSDQuNC90LDRh9C1IE9uQ2hhbmdlINC90LUg0LLQuNC00LjRgiDQuNC30LzQtdC90LXQvdC40Lkg0LrQvtCz0LTQsCDQv9C10YDQtdC00LDRjtGC0YHRjyDQvtC00LjQvdCw0LrQvtCy0YvQtSDQt9C90LDRh9C10L3QuNC1INC4INC/0L7QtNGB0LLQtdGC0LrQsCDRgdGC0YDQvtC60Lgg0L3QtSDQvtGC0LrQu9GO0YfQsNC10YLRgdGPXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICgoY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgdGhpcy50YWJsZURhdGEpIHx8IChjaGFuZ2VzWydkaXNwbGF5Q29sdW1ucyddICYmIHRoaXMuX2Rpc3BsYXlDb2x1bW5zKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2hpZ2hsaWdodCddICYmIHRoaXMuaGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKHRoaXMuaGlnaGxpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoVGFibGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uUHJvdmlkZXI/LnNlbGVjdGlvbj8uc2VsZWN0ZWQgPz8gW107XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGVEYXRhIHx8IFtdO1xyXG4gICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKHNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKGg6IEhpZ2hsaWdodENvbnRhaW5lcjxUPikge1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWQgPT09IGgudmFsdWUpIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gaC52YWx1ZTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLmZpbmRJbmRleChyb3cgPT4gcm93LnJvd1NyYyA9PT0gaC52YWx1ZSk7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzPy50b0FycmF5KClbaW5kZXhdPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxyXG4gICAgICAgICAgYmxvY2s6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBpbmxpbmU6IFwiY2VudGVyXCJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVDb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5pdCBpbnB1dHMgW3RhYmxlQ29uZmlnXSBpcyBtYW5kYXRvcnkhXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyB3ZSBuZWVkIHRoaXMsIGluIG9yZGVyIHRvIG1ha2UgcGFnaW5hdGlvbiB3b3JrIHdpdGggKm5nSWZcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKVxyXG4gICAgdGhpcy5pbml0U29ydGluZ0RhdGFBY2Nlc3NvcigpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCkpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRQYWdpbmF0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZGF0YSwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tU29ydEZ1bmN0aW9uID0gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21Tb3J0RnVuY3Rpb24gPyBjdXN0b21Tb3J0RnVuY3Rpb24oZGF0YSwga2V5KSA6IGRhdGFba2V5XTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uT2Zmc2V0cygpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKSB7XHJcbiAgICAgIGNvbnN0IG9mZnNldHM6IENvbHVtbk9mZnNldFtdID0gQXJyYXkuZnJvbSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGgnKSlcclxuICAgICAgICAubWFwKChjKSA9PiAoYyBhcyBIVE1MRWxlbWVudCkpXHJcbiAgICAgICAgLm1hcCgoYywgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICBsZWZ0OiBjLm9mZnNldExlZnQsXHJcbiAgICAgICAgICB3aWR0aDogYy5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgIGtleTogdGhpcy5fZGlzcGxheUNvbHVtbnNbaW5kZXhdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICBpZiAoT2Zmc2V0VXRpbC5hcmVOb3RFcXVhbCh0aGlzLnByZXZDb2x1bW5PZmZzZXRzLCBvZmZzZXRzKSkge1xyXG4gICAgICAgIHRoaXMucHJldkNvbHVtbk9mZnNldHMgPSBvZmZzZXRzO1xyXG4gICAgICAgIHRoaXMuY29sdW1uT2Zmc2V0cy5lbWl0KG9mZnNldHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVUYWJsZURhdGEoaW5pdFNlbGVjdGlvbjogVFtdID0gW10pIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSwgaW5pdFNlbGVjdGlvbilcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0LCB0aGlzLnNlbGVjdGlvbk1vZGVsKTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCkge1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXHJcbiAgICAgIC5maWx0ZXIoYyA9PiBjLnNvcnQgJiYgYy5zb3J0LmVuYWJsZSAmJiBjLnNvcnQuY3VzdG9tU29ydClcclxuICAgICAgLmZvckVhY2goYyA9PiB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuc2V0KGMua2V5LCBjLnNvcnQhLmN1c3RvbVNvcnQhKSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRhYmxlKCkge1xyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UgPSBNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5LmNvbnZlcnQodGhpcy50YWJsZURhdGEsIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZyk7XHJcbiAgICB0aGlzLnRhYmxlVmlldyA9IFRhYmxlVmlld0ZhY3RvcnkudG9WaWV3KHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEsIHRoaXMudGFibGVDb25maWcpXHJcbiAgICBpZiAoIXRoaXMuX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLl9kaXNwbGF5Q29sdW1ucyA9IERpc3BsYXlDb2x1bW5zRmFjdG9yeS5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNlYXJjaEZpbHRlcihldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2UuZGVsZXRlKGZpbHRlck5hbWUpO1xyXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyc0ludGVybmFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nLCBmaWx0ZXI6IE5neEF1ckZpbHRlcnMuQmFzZTxUPik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZpbHRlclN0b3JhZ2UuZ2V0KGZpbHRlck5hbWUpIHx8ICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSEuZXF1YWxzKGZpbHRlcikpKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5zZXQoZmlsdGVyTmFtZSwgZmlsdGVyKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVycygpIHtcclxuICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnNJbnRlcm5hbCgpIHtcclxuICAgIGNvbnN0IGZpbHRlckFjdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJTdG9yYWdlLnZhbHVlcygpXTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJBY3Rpb25zLmV2ZXJ5KGZpbHRlckFjdGlvbiA9PiBmaWx0ZXJBY3Rpb24uZmlsdGVyRm4oKShkYXRhKSk7XHJcbiAgICB9O1xyXG4gICAgLy8g0J/RgNC40LzQtdC90LXQvdC40LUg0YTQuNC70YzRgtGA0LDRhtC40LguINC90YPQttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRg9C90LjQutCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INGH0YLQvtCx0Ysg0YTQuNC70YzRgtGA0LDRhtC40Y8g0LfQsNC/0YPRgdGC0LjQu9Cw0YHRjFxyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gJ3RyaWdnZXItJyArIE1hdGgucmFuZG9tKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsdGVyZWRWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQodGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLm1hcChmID0+IGYucm93U3JjKSlcclxuICB9XHJcblxyXG4gIHNvcnRUYWJsZShzb3J0UGFyYW1ldGVyczogU29ydCkge1xyXG4gICAgdGhpcy5zb3J0LmVtaXQoc29ydFBhcmFtZXRlcnMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb246IHN0cmluZywgcm93czogVFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRSb3dzQWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd3N9KTtcclxuICB9XHJcblxyXG4gIGVtaXRSb3dBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvdzogVCwgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uUm93QWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd30pO1xyXG4gIH1cclxuXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5tYXN0ZXJUb2dnbGUoKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5pc0FsbFNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBjYXN0U3JjKHJvdzogYW55KTogVGFibGVSb3c8VD4ge1xyXG4gICAgcmV0dXJuIHJvdztcclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKHJvdzogVGFibGVSb3c8VD4pIHtcclxuICAgIGlmIChyb3cucm93U3JjICE9PSB0aGlzLmhpZ2hsaWdodGVkIHx8IChyb3cucm93U3JjID09PSB0aGlzLmhpZ2hsaWdodGVkICYmICF0aGlzLnRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5jYW5jZWxhYmxlKSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cucm93U3JjKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHJvdy5yb3dTcmM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh1bmRlZmluZWQpO1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGlvbk1vZGVsKCk6IFNlbGVjdGlvbk1vZGVsPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8g0J7RgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0L3QsNCx0LvRjtC00LXQvdC40LUg0L/RgNC4INGD0L3QuNGH0YLQvtC20LXQvdC40Lgg0LrQvtC80L/QvtC90LXQvdGC0LBcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIj5cclxuICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZ1wiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyB0YWJsZUNvbmZpZy5maWx0ZXJDZmc/LmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGFibGUgLS0+XHJcbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHRlbmRlZFJvd1RlbXBsYXRlICE9PSBudWxsXCJcclxuICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8uaGVpZ2h0XCJcclxuICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/Lm1heEhlaWdodFwiXHJcbiAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5taW5IZWlnaHRcIj5cclxuXHJcbiAgICAgIDwhLS0gICAgICAgIGluZGV4LWNvbHVtbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXhQcm92aWRlci5pc0VuYWJsZWRcIiBbbWF0Q29sdW1uRGVmXT1cImluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuXHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXcgW2NvbmZpZ109XCJpbmRleFByb3ZpZGVyLmhlYWRlclZpZXdcIj5cclxuICAgICAgICAgICAge3sgaW5kZXhQcm92aWRlci5uYW1lIH19XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIHt7IHJvd0luZGV4ICsgaW5kZXhQcm92aWRlci5vZmZzZXQgfX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUUpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tICAgICAgICBzZWxlY3Rpb24tY29sdW1uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJzZWxlY3Rpb25Qcm92aWRlci5DT0xVTU5fTkFNRVwiICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZz8uc2hvd1NlbGVjdGVkQ291bnQgJiYgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKClcIj5cclxuICAgICAgICAgICAgICAoe3sgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fS97eyB0YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLmxlbmd0aCB9fSlcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgdGFibGVDb25maWc/LnNlbGVjdGlvbkNmZz8uYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb24uYWN0aW9uLCBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uc2VsZWN0ZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmchLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmljb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi50b2dnbGUoY2FzdFNyYyhyb3cpLnJvd1NyYykgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2FzdFNyYyhyb3cpLnJvd1NyYylcIj5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIGFjdGlvbiBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dBY3Rpb25zUHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJyb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0Um93QWN0aW9uKGFjdGlvbi5hY3Rpb24sIGVsZW1lbnQucm93U3JjLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWN0aW9uLmljb24udG9vbHRpcCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygcm93QWN0aW9uc1Byb3ZpZGVyLmFjdGlvblZpZXcuZ2V0KGVsZW1lbnQuaWQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICB7eyBhY3Rpb24uaWNvbi5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSAgICB2YWx1ZS1pY29uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbkNvbmZpZyBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5Db25maWcua2V5XCI+XHJcblxyXG4gICAgICAgIDwhLS0gaWYgc29ydGFibGUgY29sdW1uIGhlYWRlciAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ29uZmlnLnNvcnQgJiYgY29sdW1uQ29uZmlnLnNvcnQuZW5hYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uQ29uZmlnLmtleVwiXHJcbiAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uQ29uZmlnLnNvcnQucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90U29ydGFibGU+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgIGhlYWRlciB2YWx1ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVmFsdWU+XHJcbiAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiY29sdW1uQ29uZmlnLmhlYWRlclZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uQ29uZmlnLm5hbWVcIj5cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gY29sdW1uIHZhbHVlINC/0L7Qu9GD0YfQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC60L7Qu9C+0L3QvtC6INC90YPQttC90L4g0YfQtdGA0LXQtyBnZXRWaWV3KHJvd0luZGV4LCBjb2x1bW5Db25maWcua2V5KSDRgtCw0Lwg0L3QsNGF0L7QtNGP0YLRgdGPINGD0LbQtVxyXG4gICAgICAgINC/0L7QtNCz0L7RgtC+0LLQu9C10L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8tLT5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXdcclxuICAgICAgICAgICAgW2NvbmZpZ109XCJ0YWJsZVZpZXdbZWxlbWVudC5pZF0/LmdldChjb2x1bW5Db25maWcua2V5KVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW5Db25maWcua2V5XCI+XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbkNvbmZpZy5rZXkpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9kaXNwbGF5Q29sdW1ucztcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydwb2ludGVyJzogdGFibGVDb25maWcuY2xpY2tDZmc/LnBvaW50ZXIgfHwgZmFsc2UsICduZXctY29sb3InOiBoaWdobGlnaHRlZD09PXJvdy5yb3dTcmMgJiYgdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvcn1cIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2NvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JvcmRlcic6IGhpZ2hsaWdodGVkID09PSByb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmJvcmRlciA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPCEtLWV4cGFuZGVkLXJvdy0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkUm93XCI+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwiZWxlbWVudC5yb3dTcmMgPT09IGhpZ2hsaWdodGVkID8gZXhwYW5kZWRTdGF0ZUVudW0uRVhQQU5ERUQgOiBleHBhbmRlZFN0YXRlRW51bS5DT0xMQVBTRURcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dGVuZGVkUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRlbmRlZFJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJleHBhbmRlZC1yb3dcIiAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZFJvdyddXCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1leHBhbmRlZC1yb3ctLT5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbFJvd1Byb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiX2Rpc3BsYXlDb2x1bW5zOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy50b3RhbFwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ0b3RhbFJvd1Byb3ZpZGVyLnN0eWxlXCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tc3ViLWZvb3Rlci1yb3ctLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdWJGb290ZXJSb3dcIj5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25neEF1clRhYmxlU3ViRm9vdGVyUm93XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YkZvb3RlclJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJbJ3N1YkZvb3RlclJvdyddOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5zdWJGb290ZXJcIj48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSAgICAgIHN1Yi1mb290ZXItcm93IEVORC0tPlxyXG5cclxuICAgICAgPCEtLXN1Yi1mb290ZXItcGFnaW5hdGlvbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YkZvb3RlclBhZ2luYXRpb25cIj5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiID5cclxuXHJcbiAgICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2luYXRpb25Qcm92aWRlci5zaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInRoaXMudGFibGVDb25maWc/LnBhZ2VhYmxlQ2ZnPy5zdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGaXJzdExhc3RCdXR0b25zPlxyXG4gICAgICAgICAgICA8L21hdC1wYWdpbmF0b3I+XHJcblxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2luYXRpb25Qcm92aWRlci5pc0VuYWJsZWRcIj5cclxuICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3ViRm9vdGVyUGFnaW5hdGlvbiddOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5zdWJGb290ZXJQYWdpbmF0aW9uXCIgW3N0eWxlXT1cInRoaXMudGFibGVDb25maWc/LnBhZ2VhYmxlQ2ZnPy5zdHlsZVwiPjwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tICAgICAgc3ViLWZvb3Rlci1wYWdpbmF0aW9uIEVORC0tPlxyXG4gICAgPC90YWJsZT5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuXHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb290ZXJDZWxsVGVtcGxhdGUgbGV0LWNvbHVtbk5hbWU+XHJcbiAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj5cclxuICAgIHt7IHRvdGFsUm93UHJvdmlkZXIudG90YWxzLmdldChjb2x1bW5OYW1lKSB8fCAnJyB9fVxyXG4gIDwvdGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUFFLFlBQVksRUFDdkIsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLE9BQU8sRUFBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RixPQUFPLEVBQWMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUVyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0YsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVB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SCxLQUFLO3NCQUE1QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBRzdCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR29DLFlBQVk7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFFSixPQUFPO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRXhCLElBQUk7c0JBQWIsTUFBTTtnQkFHRyxXQUFXO3NCQUFwQixNQUFNO2dCQUlHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUlHLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQXdCRSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29sdW1uVmlldywgVGFibGVDb25maWd9IGZyb20gJy4vbW9kZWwvQ29sdW1uQ29uZmlnJztcclxuaW1wb3J0IHtNYXRTb3J0LCBTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7U2VsZWN0aW9uUHJvdmlkZXIsIFNlbGVjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1NlbGVjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtBY3Rpb25FdmVudCwgUm93QWN0aW9uUHJvdmlkZXIsIFJvd0FjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1Jvd0FjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSBcIi4vbW9kZWwvVGFibGVSb3dcIjtcclxuaW1wb3J0IHtUYWJsZVZpZXdGYWN0b3J5fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVZpZXdGYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5kZXhQcm92aWRlciwgSW5kZXhQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSW5kZXhQcm92aWRlclwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25Qcm92aWRlciwgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9QYWdpbmF0aW9uUHJvdmlkZXJcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeVwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb2x1bW5zRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL0Rpc3BsYXlDb2x1bW5zRmFjdG9yeVwiO1xyXG5pbXBvcnQge0VtcHR5VmFsdWV9IGZyb20gXCIuL21vZGVsL0VtcHR5VmFsdWVcIjtcclxuaW1wb3J0IHtUb3RhbFJvd1Byb3ZpZGVyLCBUb3RhbFJvd1Byb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9Ub3RhbFJvd1Byb3ZpZGVyXCI7XHJcbmltcG9ydCB7Tmd4QXVyRmlsdGVyc30gZnJvbSBcIi4vZmlsdGVycy9OZ3hBdXJGaWx0ZXJzXCI7XHJcbmltcG9ydCB7Tmd4QXVyTWF0VGFibGVQdWJsaWN9IGZyb20gXCIuL25neC1hdXItbWF0LXRhYmxlLXB1YmxpY1wiO1xyXG5pbXBvcnQge09mZnNldFV0aWx9IGZyb20gXCIuL3V0aWxzL29mZnNldC51dGlsXCI7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xyXG5pbXBvcnQge05neFRhYmxlU3ViRm9vdGVyUm93RGlyZWN0aXZlfSBmcm9tIFwiLi9kaXJlY3RpdmUvbmd4LXRhYmxlLXN1Yi1mb290ZXItcm93LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge1NlbGVjdGlvbk1vZGVsfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodENvbnRhaW5lcjxUPiB7XHJcbiAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5PZmZzZXQge1xyXG4gIGxlZnQ6IG51bWJlcixcclxuICB3aWR0aDogbnVtYmVyLFxyXG4gIGtleTogc3RyaW5nXHJcbn1cclxuXHJcbmVudW0gRXhwYW5kU3RhdGUge1xyXG4gIENPTExBUFNFRCA9ICdjb2xsYXBzZWQnLFxyXG4gIEVYUEFOREVEID0gJ2V4cGFuZGVkJ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcbiAgICAgIHN0YXRlKEV4cGFuZFN0YXRlLkNPTExBUFNFRCwgc3R5bGUoe2hlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnfSkpLFxyXG4gICAgICBzdGF0ZShFeHBhbmRTdGF0ZS5FWFBBTkRFRCwgc3R5bGUoe2hlaWdodDogJyonfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKGAke0V4cGFuZFN0YXRlLkVYUEFOREVEfSA8PT4gJHtFeHBhbmRTdGF0ZS5DT0xMQVBTRUR9YCwgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgTmd4QXVyTWF0VGFibGVQdWJsaWM8VD4ge1xyXG5cclxuICBleHBhbmRlZFN0YXRlRW51bSA9IEV4cGFuZFN0YXRlO1xyXG5cclxuICBwdWJsaWMgdGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUYWJsZVJvdzxUPj4oW10pO1xyXG4gIF9kaXNwbGF5Q29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBfY3VzdG9tRGlzcGxheUNvbHVtbnNFbmFibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBkaXNwbGF5Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKGNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5fZGlzcGxheUNvbHVtbnMgPSBbLi4uY29sdW1uc107XHJcbiAgICAgIHRoaXMuX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCA9IGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGFibGVWaWV3OiBNYXA8c3RyaW5nLCBDb2x1bW5WaWV3PHN0cmluZz4+W10gPSBbXTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChOZ3hUYWJsZVN1YkZvb3RlclJvd0RpcmVjdGl2ZSkgc3ViRm9vdGVyUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgQFZpZXdDaGlsZHJlbigncm93TGluaycsIHtyZWFkOiBFbGVtZW50UmVmfSkgcm93czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgdGFibGU6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZzogVGFibGVDb25maWc8VD47XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogVFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGV4dGVuZGVkUm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7c3RhdGljOiBmYWxzZX0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHtzdGF0aWM6IHRydWV9KSBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgc29ydDogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBhY3Rpb25zXHJcbiAgQE91dHB1dCgpIG9uUm93QWN0aW9uOiBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4oKTtcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBzZWxlY3QgZXZlbnRcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZFJvd3NBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFRbXT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25Nb2RlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uTW9kZWw8VD4+KCk7XHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZmlsdGVyZWQgcm93c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcbiAgcHJpdmF0ZSBwcmV2Q29sdW1uT2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBbXTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgcmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IEVtcHR5VmFsdWUuUkVTSVpFX09CU0VSVkVSO1xyXG5cclxuICBzZWxlY3Rpb25Qcm92aWRlcjogU2VsZWN0aW9uUHJvdmlkZXI8VD4gPSBuZXcgU2VsZWN0aW9uUHJvdmlkZXJEdW1teSgpO1xyXG5cclxuICByb3dBY3Rpb25zUHJvdmlkZXI6IFJvd0FjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFJvd0FjdGlvblByb3ZpZGVyRHVtbXk8VD4oKTtcclxuXHJcbiAgaW5kZXhQcm92aWRlcjogSW5kZXhQcm92aWRlciA9IG5ldyBJbmRleFByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcGFnaW5hdGlvblByb3ZpZGVyOiBQYWdpbmF0aW9uUHJvdmlkZXIgPSBuZXcgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgdG90YWxSb3dQcm92aWRlcjogVG90YWxSb3dQcm92aWRlcjxUPiA9IG5ldyBUb3RhbFJvd1Byb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgaGlnaGxpZ2h0ZWQ6IFQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgY3VzdG9tU29ydEZ1bmN0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCAoZGF0YTogVGFibGVSb3c8VD4sIGtleTogc3RyaW5nKSA9PiBhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyU3RvcmFnZSA9IG5ldyBNYXA8c3RyaW5nLCBOZ3hBdXJGaWx0ZXJzLkJhc2U8VD4+KCk7XHJcblxyXG4gIC8v0LfQvdCw0YfQtdC90LjQtSDQv9C10YDQtdC00LDQtdGC0YHRjyDQsiDQutC+0L3RgtC10LnQvdC10YDQtSDQuNC90LDRh9C1IE9uQ2hhbmdlINC90LUg0LLQuNC00LjRgiDQuNC30LzQtdC90LXQvdC40Lkg0LrQvtCz0LTQsCDQv9C10YDQtdC00LDRjtGC0YHRjyDQvtC00LjQvdCw0LrQvtCy0YvQtSDQt9C90LDRh9C10L3QuNC1INC4INC/0L7QtNGB0LLQtdGC0LrQsCDRgdGC0YDQvtC60Lgg0L3QtSDQvtGC0LrQu9GO0YfQsNC10YLRgdGPXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICgoY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgdGhpcy50YWJsZURhdGEpIHx8IChjaGFuZ2VzWydkaXNwbGF5Q29sdW1ucyddICYmIHRoaXMuX2Rpc3BsYXlDb2x1bW5zKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2hpZ2hsaWdodCddICYmIHRoaXMuaGlnaGxpZ2h0KSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKHRoaXMuaGlnaGxpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoVGFibGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uUHJvdmlkZXI/LnNlbGVjdGlvbj8uc2VsZWN0ZWQgPz8gW107XHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGVEYXRhIHx8IFtdO1xyXG4gICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKHNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSGlnaGxpZ2h0Q2hhbmdlKGg6IEhpZ2hsaWdodENvbnRhaW5lcjxUPikge1xyXG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWQgPT09IGgudmFsdWUpIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gaC52YWx1ZTtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLmZpbmRJbmRleChyb3cgPT4gcm93LnJvd1NyYyA9PT0gaC52YWx1ZSk7XHJcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yb3dzPy50b0FycmF5KClbaW5kZXhdPy5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxyXG4gICAgICAgICAgYmxvY2s6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBpbmxpbmU6IFwiY2VudGVyXCJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVDb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5pdCBpbnB1dHMgW3RhYmxlQ29uZmlnXSBpcyBtYW5kYXRvcnkhXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyB3ZSBuZWVkIHRoaXMsIGluIG9yZGVyIHRvIG1ha2UgcGFnaW5hdGlvbiB3b3JrIHdpdGggKm5nSWZcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKVxyXG4gICAgdGhpcy5pbml0U29ydGluZ0RhdGFBY2Nlc3NvcigpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCkpO1xyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5PZmZzZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRQYWdpbmF0b3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFibGVEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZGF0YSwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tU29ydEZ1bmN0aW9uID0gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21Tb3J0RnVuY3Rpb24gPyBjdXN0b21Tb3J0RnVuY3Rpb24oZGF0YSwga2V5KSA6IGRhdGFba2V5XTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uT2Zmc2V0cygpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKSB7XHJcbiAgICAgIGNvbnN0IG9mZnNldHM6IENvbHVtbk9mZnNldFtdID0gQXJyYXkuZnJvbSh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGgnKSlcclxuICAgICAgICAubWFwKChjKSA9PiAoYyBhcyBIVE1MRWxlbWVudCkpXHJcbiAgICAgICAgLm1hcCgoYywgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICBsZWZ0OiBjLm9mZnNldExlZnQsXHJcbiAgICAgICAgICB3aWR0aDogYy5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgIGtleTogdGhpcy5fZGlzcGxheUNvbHVtbnNbaW5kZXhdXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICBpZiAoT2Zmc2V0VXRpbC5hcmVOb3RFcXVhbCh0aGlzLnByZXZDb2x1bW5PZmZzZXRzLCBvZmZzZXRzKSkge1xyXG4gICAgICAgIHRoaXMucHJldkNvbHVtbk9mZnNldHMgPSBvZmZzZXRzO1xyXG4gICAgICAgIHRoaXMuY29sdW1uT2Zmc2V0cy5lbWl0KG9mZnNldHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVUYWJsZURhdGEoaW5pdFNlbGVjdGlvbjogVFtdID0gW10pIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5yb3dBY3Rpb25zUHJvdmlkZXIgPSBSb3dBY3Rpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZylcclxuICAgICAgLmFkZEFjdGlvbkNvbHVtbih0aGlzLl9kaXNwbGF5Q29sdW1ucylcclxuICAgICAgLnNldFZpZXcodGhpcy50YWJsZURhdGFTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IFNlbGVjdGlvblByb3ZpZGVyLmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSwgaW5pdFNlbGVjdGlvbilcclxuICAgICAgLmFkZENoZWNrYm94Q29sdW1uKHRoaXMuX2Rpc3BsYXlDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0LCB0aGlzLnNlbGVjdGlvbk1vZGVsKTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG5cclxuICAgIHRoaXMuZW1pdEZpbHRlcmVkVmFsdWVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCkge1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXHJcbiAgICAgIC5maWx0ZXIoYyA9PiBjLnNvcnQgJiYgYy5zb3J0LmVuYWJsZSAmJiBjLnNvcnQuY3VzdG9tU29ydClcclxuICAgICAgLmZvckVhY2goYyA9PiB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuc2V0KGMua2V5LCBjLnNvcnQhLmN1c3RvbVNvcnQhKSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRhYmxlKCkge1xyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UgPSBNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5LmNvbnZlcnQodGhpcy50YWJsZURhdGEsIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZyk7XHJcbiAgICB0aGlzLnRhYmxlVmlldyA9IFRhYmxlVmlld0ZhY3RvcnkudG9WaWV3KHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEsIHRoaXMudGFibGVDb25maWcpXHJcbiAgICBpZiAoIXRoaXMuX2N1c3RvbURpc3BsYXlDb2x1bW5zRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLl9kaXNwbGF5Q29sdW1ucyA9IERpc3BsYXlDb2x1bW5zRmFjdG9yeS5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVNlYXJjaEZpbHRlcihldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5lbWl0RmlsdGVyZWRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JhZ2UuZGVsZXRlKGZpbHRlck5hbWUpO1xyXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyc0ludGVybmFsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nLCBmaWx0ZXI6IE5neEF1ckZpbHRlcnMuQmFzZTxUPik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZpbHRlclN0b3JhZ2UuZ2V0KGZpbHRlck5hbWUpIHx8ICghdGhpcy5maWx0ZXJTdG9yYWdlLmdldChmaWx0ZXJOYW1lKSEuZXF1YWxzKGZpbHRlcikpKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5zZXQoZmlsdGVyTmFtZSwgZmlsdGVyKTtcclxuICAgICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVycygpIHtcclxuICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnNJbnRlcm5hbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnNJbnRlcm5hbCgpIHtcclxuICAgIGNvbnN0IGZpbHRlckFjdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJTdG9yYWdlLnZhbHVlcygpXTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJBY3Rpb25zLmV2ZXJ5KGZpbHRlckFjdGlvbiA9PiBmaWx0ZXJBY3Rpb24uZmlsdGVyRm4oKShkYXRhKSk7XHJcbiAgICB9O1xyXG4gICAgLy8g0J/RgNC40LzQtdC90LXQvdC40LUg0YTQuNC70YzRgtGA0LDRhtC40LguINC90YPQttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRg9C90LjQutCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INGH0YLQvtCx0Ysg0YTQuNC70YzRgtGA0LDRhtC40Y8g0LfQsNC/0YPRgdGC0LjQu9Cw0YHRjFxyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gJ3RyaWdnZXItJyArIE1hdGgucmFuZG9tKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsdGVyZWRWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQodGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLm1hcChmID0+IGYucm93U3JjKSlcclxuICB9XHJcblxyXG4gIHNvcnRUYWJsZShzb3J0UGFyYW1ldGVyczogU29ydCkge1xyXG4gICAgdGhpcy5zb3J0LmVtaXQoc29ydFBhcmFtZXRlcnMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb246IHN0cmluZywgcm93czogVFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRSb3dzQWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd3N9KTtcclxuICB9XHJcblxyXG4gIGVtaXRSb3dBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvdzogVCwgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uUm93QWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd30pO1xyXG4gIH1cclxuXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5tYXN0ZXJUb2dnbGUoKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5pc0FsbFNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBjYXN0U3JjKHJvdzogYW55KTogVGFibGVSb3c8VD4ge1xyXG4gICAgcmV0dXJuIHJvdztcclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKHJvdzogVGFibGVSb3c8VD4pIHtcclxuICAgIGlmIChyb3cucm93U3JjICE9PSB0aGlzLmhpZ2hsaWdodGVkIHx8IChyb3cucm93U3JjID09PSB0aGlzLmhpZ2hsaWdodGVkICYmICF0aGlzLnRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5jYW5jZWxhYmxlKSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cucm93U3JjKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHJvdy5yb3dTcmM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh1bmRlZmluZWQpO1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGlvbk1vZGVsKCk6IFNlbGVjdGlvbk1vZGVsPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8g0J7RgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0L3QsNCx0LvRjtC00LXQvdC40LUg0L/RgNC4INGD0L3QuNGH0YLQvtC20LXQvdC40Lgg0LrQvtC80L/QvtC90LXQvdGC0LBcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF1ci1tYXQtdGFibGVcIj5cclxuICA8bmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gRmlsdGVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLmZpbHRlckNmZ1wiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyB0YWJsZUNvbmZpZy5maWx0ZXJDZmc/LmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGFibGUgLS0+XHJcbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHRlbmRlZFJvd1RlbXBsYXRlICE9PSBudWxsXCJcclxuICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFTb3VyY2VcIlxyXG4gICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8uaGVpZ2h0XCJcclxuICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/Lm1heEhlaWdodFwiXHJcbiAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5taW5IZWlnaHRcIj5cclxuXHJcbiAgICAgIDwhLS0gICAgICAgIGluZGV4LWNvbHVtbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXhQcm92aWRlci5pc0VuYWJsZWRcIiBbbWF0Q29sdW1uRGVmXT1cImluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuXHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXcgW2NvbmZpZ109XCJpbmRleFByb3ZpZGVyLmhlYWRlclZpZXdcIj5cclxuICAgICAgICAgICAge3sgaW5kZXhQcm92aWRlci5uYW1lIH19XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIHt7IHJvd0luZGV4ICsgaW5kZXhQcm92aWRlci5vZmZzZXQgfX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGluZGV4UHJvdmlkZXIuQ09MVU1OX05BTUUpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tICAgICAgICBzZWxlY3Rpb24tY29sdW1uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJzZWxlY3Rpb25Qcm92aWRlci5DT0xVTU5fTkFNRVwiICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZz8uc2hvd1NlbGVjdGVkQ291bnQgJiYgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKClcIj5cclxuICAgICAgICAgICAgICAoXHJcbiAgICAgICAgICAgICAge3sgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnLnNlbGVjdGlvbkNmZz8uc2hvd1RvdGFsQ291bnQgIT09IGZhbHNlXCI+L3t7IHRhYmxlRGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgdGFibGVDb25maWc/LnNlbGVjdGlvbkNmZz8uYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb24uYWN0aW9uLCBzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uc2VsZWN0ZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmchLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAge3sgYWN0aW9uLmljb24ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi50b2dnbGUoY2FzdFNyYyhyb3cpLnJvd1NyYykgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2FzdFNyYyhyb3cpLnJvd1NyYylcIj5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIGFjdGlvbiBjb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dBY3Rpb25zUHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJyb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWl0Um93QWN0aW9uKGFjdGlvbi5hY3Rpb24sIGVsZW1lbnQucm93U3JjLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWN0aW9uLmljb24udG9vbHRpcCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygcm93QWN0aW9uc1Byb3ZpZGVyLmFjdGlvblZpZXcuZ2V0KGVsZW1lbnQuaWQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmljb24uY29sb3JcIj5cclxuICAgICAgICAgICAgICB7eyBhY3Rpb24uaWNvbi5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiByb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSAgICB2YWx1ZS1pY29uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbkNvbmZpZyBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zQ2ZnXCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW5Db25maWcua2V5XCI+XHJcblxyXG4gICAgICAgIDwhLS0gaWYgc29ydGFibGUgY29sdW1uIGhlYWRlciAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uQ29uZmlnLnNvcnQgJiYgY29sdW1uQ29uZmlnLnNvcnQuZW5hYmxlOyBlbHNlIG5vdFNvcnRhYmxlXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uQ29uZmlnLmtleVwiXHJcbiAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uQ29uZmlnLnNvcnQucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90U29ydGFibGU+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSAgICAgIGhlYWRlciB2YWx1ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVmFsdWU+XHJcbiAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiY29sdW1uQ29uZmlnLmhlYWRlclZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sdW1uQ29uZmlnLm5hbWVcIj5cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gY29sdW1uIHZhbHVlINC/0L7Qu9GD0YfQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC60L7Qu9C+0L3QvtC6INC90YPQttC90L4g0YfQtdGA0LXQtyBnZXRWaWV3KHJvd0luZGV4LCBjb2x1bW5Db25maWcua2V5KSDRgtCw0Lwg0L3QsNGF0L7QtNGP0YLRgdGPINGD0LbQtVxyXG4gICAgICAgINC/0L7QtNCz0L7RgtC+0LLQu9C10L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8tLT5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDtcIj5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXdcclxuICAgICAgICAgICAgW2NvbmZpZ109XCJ0YWJsZVZpZXdbZWxlbWVudC5pZF0/LmdldChjb2x1bW5Db25maWcua2V5KVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW5Db25maWcua2V5XCI+XHJcbiAgICAgICAgICA8L2xpYi1jb2x1bW4tdmlldz5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbkNvbmZpZy5rZXkpIHx8ICcnIH19XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZGlzcGxheUNvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9kaXNwbGF5Q29sdW1ucztcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKHJvdylcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydwb2ludGVyJzogdGFibGVDb25maWcuY2xpY2tDZmc/LnBvaW50ZXIgfHwgZmFsc2UsICduZXctY29sb3InOiBoaWdobGlnaHRlZD09PXJvdy5yb3dTcmMgJiYgdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvcn1cIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2NvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmNvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5iYWNrZ3JvdW5kIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgJ2JvcmRlcic6IGhpZ2hsaWdodGVkID09PSByb3cucm93U3JjPyB0YWJsZUNvbmZpZz8uY2xpY2tDZmc/LmhpZ2hsaWdodENsaWNrZWQ/LmJvcmRlciA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPCEtLWV4cGFuZGVkLXJvdy0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkUm93XCI+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cIl9kaXNwbGF5Q29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgW0BkZXRhaWxFeHBhbmRdPVwiZWxlbWVudC5yb3dTcmMgPT09IGhpZ2hsaWdodGVkID8gZXhwYW5kZWRTdGF0ZUVudW0uRVhQQU5ERUQgOiBleHBhbmRlZFN0YXRlRW51bS5DT0xMQVBTRURcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dGVuZGVkUm93VGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGVsZW1lbnR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRlbmRlZFJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJleHBhbmRlZC1yb3dcIiAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZFJvdyddXCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS1leHBhbmRlZC1yb3ctLT5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbFJvd1Byb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiX2Rpc3BsYXlDb2x1bW5zOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy50b3RhbFwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ0b3RhbFJvd1Byb3ZpZGVyLnN0eWxlXCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tc3ViLWZvb3Rlci1yb3ctLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdWJGb290ZXJSb3dcIj5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25neEF1clRhYmxlU3ViRm9vdGVyUm93XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YkZvb3RlclJvd1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJbJ3N1YkZvb3RlclJvdyddOyBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5zdWJGb290ZXJcIj48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSAgICAgIHN1Yi1mb290ZXItcm93IEVORC0tPlxyXG5cclxuICAgICAgPCEtLXN1Yi1mb290ZXItcGFnaW5hdGlvbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInN1YkZvb3RlclBhZ2luYXRpb25cIj5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiX2Rpc3BsYXlDb2x1bW5zLmxlbmd0aFwiPlxyXG5cclxuICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwidGhpcy50YWJsZUNvbmZpZz8ucGFnZWFibGVDZmc/LnN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGaXJzdExhc3RCdXR0b25zPlxyXG4gICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCI+XHJcbiAgICAgICAgPHRyIG1hdC1mb290ZXItcm93XHJcbiAgICAgICAgICAgICptYXRGb290ZXJSb3dEZWY9XCJbJ3N1YkZvb3RlclBhZ2luYXRpb24nXTsgc3RpY2t5OiB0aGlzLnRhYmxlQ29uZmlnLnN0aWNreUNmZz8uc3ViRm9vdGVyUGFnaW5hdGlvblwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ0aGlzLnRhYmxlQ29uZmlnPy5wYWdlYWJsZUNmZz8uc3R5bGVcIj48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSAgICAgIHN1Yi1mb290ZXItcGFnaW5hdGlvbiBFTkQtLT5cclxuICAgIDwvdGFibGU+XHJcbiAgICA8IS0tIFBhZ2luYXRpb24gLS0+XHJcblxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyQ2VsbFRlbXBsYXRlIGxldC1jb2x1bW5OYW1lPlxyXG4gIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uTmFtZSkgfHwgJycgfX1cclxuICA8L3RkPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -762,7 +762,7 @@ class NgxAurMatTableComponent {
762
762
  }
763
763
  }
764
764
  NgxAurMatTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
765
- NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{ selectionProvider.selection.selected.length }}/{{ tableDataSource.filteredData.length }})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\" >\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\" [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3$1.MatCellDef, selector: "[matCellDef]" }, { type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": DataPropertyGetterPipe }, animations: [
765
+ NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { displayColumns: "displayColumns", tableConfig: "tableConfig", tableData: "tableData", extendedRowTemplate: "extendedRowTemplate", highlight: "highlight" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onSelectedRowsAction: "onSelectedRowsAction", selectionModel: "selectionModel", onRowClick: "onRowClick", onFilter: "onFilter", columnOffsets: "columnOffsets" }, queries: [{ propertyName: "subFooterRowTemplate", first: true, predicate: NgxTableSubFooterRowDirective, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "rows", predicate: ["rowLink"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n (\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ tableDataSource.filteredData.length }}</span>\r\n )\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row\r\n *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: ColumnViewComponent, selector: "lib-column-view", inputs: ["config", "value"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i3$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1$1.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i3$1.MatCellDef, selector: "[matCellDef]" }, { type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i3$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i3$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "dataPropertyGetter": DataPropertyGetterPipe }, animations: [
766
766
  trigger('detailExpand', [
767
767
  state(ExpandState.COLLAPSED, style({ height: '0px', minHeight: '0' })),
768
768
  state(ExpandState.EXPANDED, style({ height: '*' })),
@@ -777,7 +777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
777
777
  state(ExpandState.EXPANDED, style({ height: '*' })),
778
778
  transition(`${ExpandState.EXPANDED} <=> ${ExpandState.COLLAPSED}`, animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
779
779
  ]),
780
- ], template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n ({{ selectionProvider.selection.selected.length }}/{{ tableDataSource.filteredData.length }})\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\" >\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\" [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"] }]
780
+ ], template: "<div class=\"aur-mat-table\">\r\n <ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"tableConfig.filterCfg\">\r\n <mat-form-field>\r\n <mat-label>{{ tableConfig.filterCfg?.label }}</mat-label>\r\n <input matInput (keyup)=\"applySearchFilter($event)\"\r\n placeholder=\"{{tableConfig.filterCfg?.placeholder}}\"\r\n style=\"font-size: 18px;\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table #table mat-table matSort\r\n [multiTemplateDataRows]=\"extendedRowTemplate !== null\"\r\n [dataSource]=\"tableDataSource\"\r\n (matSortChange)=\"sortTable($event)\"\r\n [style.height]=\"tableConfig.tableView?.height\"\r\n [style.max-height]=\"tableConfig.tableView?.maxHeight\"\r\n [style.min-height]=\"tableConfig.tableView?.minHeight\">\r\n\r\n <!-- index-column-->\r\n <ng-container *ngIf=\"indexProvider.isEnabled\" [matColumnDef]=\"indexProvider.COLUMN_NAME\">\r\n\r\n <th mat-header-cell *matHeaderCellDef>\r\n <lib-column-view [config]=\"indexProvider.headerView\">\r\n {{ indexProvider.name }}\r\n </lib-column-view>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element; let rowIndex = index\">\r\n {{ rowIndex + indexProvider.offset }}\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(indexProvider.COLUMN_NAME) || '' }}\r\n </td>\r\n </ng-container>\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider.isEnabled\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"flex-container\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"tableConfig.selectionCfg?.showSelectedCount && selectionProvider.selection.hasValue()\">\r\n (\r\n {{ selectionProvider.selection.selected.length }}\r\n <span\r\n *ngIf=\"tableConfig.selectionCfg?.showTotalCount !== false\">/{{ tableDataSource.filteredData.length }}</span>\r\n )\r\n </div>\r\n\r\n <div *ngIf=\"selectionProvider.selection.hasValue() && tableConfig?.selectionCfg?.actions\">\r\n <button mat-icon-button\r\n (click)=\"emitSelectedRowsAction(action.action, selectionProvider.selection.selected)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of tableConfig.selectionCfg!.actions\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(castSrc(row).rowSrc) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(castSrc(row).rowSrc)\">\r\n </mat-checkbox>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider.isEnabled\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element.rowSrc, $event)\"\r\n [matTooltip]=\"action.icon.tooltip || ''\"\r\n *ngFor=\"let action of rowActionsProvider.actionView.get(element.id)\">\r\n <mat-icon [style.color]=\"action.icon.color\">\r\n {{ action.icon.name }}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n\r\n <ng-container *ngTemplateOutlet=\"footerCellTemplate; context: {$implicit: rowActionsProvider.COLUMN_NAME}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- value-icon-->\r\n <ng-container *ngFor=\"let columnConfig of tableConfig.columnsCfg\" [matColumnDef]=\"columnConfig.key\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"columnConfig.sort && columnConfig.sort.enable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"columnConfig.key\"\r\n [arrowPosition]=\"columnConfig.sort.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <lib-column-view [config]=\"columnConfig.headerView\"\r\n [value]=\"columnConfig.name\">\r\n </lib-column-view>\r\n </ng-template>\r\n\r\n <!-- column value \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u043D\u0443\u0436\u043D\u043E \u0447\u0435\u0440\u0435\u0437 getView(rowIndex, columnConfig.key) \u0442\u0430\u043C \u043D\u0430\u0445\u043E\u0434\u044F\u0442\u0441\u044F \u0443\u0436\u0435\r\n \u043F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F-->\r\n <td mat-cell *matCellDef=\"let element;\">\r\n <lib-column-view\r\n [config]=\"tableView[element.id]?.get(columnConfig.key)\"\r\n [value]=\"element | dataPropertyGetter: columnConfig.key\">\r\n </lib-column-view>\r\n </td>\r\n\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnConfig.key) || '' }}\r\n </td>\r\n\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.header\"></tr>\r\n <tr mat-row #rowLink\r\n *matRowDef=\"let row; columns: _displayColumns;\"\r\n (click)=\"rowClick(row)\"\r\n [ngClass]=\"{'pointer': tableConfig.clickCfg?.pointer || false, 'new-color': highlighted===row.rowSrc && tableConfig?.clickCfg?.highlightClicked?.color}\"\r\n [ngStyle]=\"{\r\n 'color': highlighted===row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.color : undefined,\r\n 'background-color': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.background : undefined,\r\n 'border': highlighted === row.rowSrc? tableConfig?.clickCfg?.highlightClicked?.border : undefined\r\n }\">\r\n </tr>\r\n\r\n <!--expanded-row-->\r\n <ng-container matColumnDef=\"expandedRow\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"_displayColumns.length\">\r\n <div class=\"row-detail\"\r\n [@detailExpand]=\"element.rowSrc === highlighted ? expandedStateEnum.EXPANDED : expandedStateEnum.COLLAPSED\">\r\n <ng-container *ngTemplateOutlet=\"extendedRowTemplate; context: {$implicit: element}\"></ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extendedRowTemplate\">\r\n <tr mat-row class=\"expanded-row\" *matRowDef=\"let row; columns: ['expandedRow']\"></tr>\r\n </ng-container>\r\n <!--expanded-row-->\r\n\r\n <ng-container *ngIf=\"totalRowProvider.isEnabled\">\r\n <tr mat-footer-row *matFooterRowDef=\"_displayColumns; sticky: this.tableConfig.stickyCfg?.total\"\r\n [style]=\"totalRowProvider.style\"></tr>\r\n </ng-container>\r\n\r\n <!--sub-footer-row-->\r\n <ng-container matColumnDef=\"subFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n <ng-container>\r\n <ng-content select=\"[ngxAurTableSubFooterRow]\"></ng-content>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"subFooterRowTemplate\">\r\n <tr mat-footer-row *matFooterRowDef=\"['subFooterRow']; sticky: this.tableConfig.stickyCfg?.subFooter\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-row END-->\r\n\r\n <!--sub-footer-pagination-->\r\n <ng-container matColumnDef=\"subFooterPagination\">\r\n <td mat-footer-cell *matFooterCellDef [attr.colspan]=\"_displayColumns.length\">\r\n\r\n <mat-paginator [pageSizeOptions]=\"paginationProvider.sizes\"\r\n [pageSize]=\"paginationProvider.size\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"paginationProvider.isEnabled\">\r\n <tr mat-footer-row\r\n *matFooterRowDef=\"['subFooterPagination']; sticky: this.tableConfig.stickyCfg?.subFooterPagination\"\r\n [style]=\"this.tableConfig?.pageableCfg?.style\"></tr>\r\n </ng-container>\r\n <!-- sub-footer-pagination END-->\r\n </table>\r\n <!-- Pagination -->\r\n\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #footerCellTemplate let-columnName>\r\n <td mat-footer-cell *matFooterCellDef>\r\n {{ totalRowProvider.totals.get(columnName) || '' }}\r\n </td>\r\n</ng-template>\r\n", styles: [".aur-mat-table table{width:100%;border-collapse:collapse}.aur-mat-table th,td{padding-right:10px!important}.aur-mat-table .new-color td.mat-cell,.aur-mat-table .new-color td.mat-footer-cell{color:inherit}.aur-mat-table mat-form-field{width:100%}.aur-mat-table .text-right{text-align:right!important}.aur-mat-table .pointer:hover{background-color:#f2f2f2;cursor:pointer}.aur-mat-table .flex-container{display:flex;align-items:center}.aur-mat-table .expanded-row{height:0}.aur-mat-table .row-detail{overflow:hidden;display:flex}.aur-mat-table .clear-bottom-border{border-bottom:none}\n"] }]
781
781
  }], ctorParameters: function () { return []; }, propDecorators: { displayColumns: [{
782
782
  type: Input
783
783
  }], subFooterRowTemplate: [{