@ai-table/grid 0.0.69 → 0.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/components/cell-views/select/option.component.d.ts.map +1 -1
  2. package/components/drag/drag.component.d.ts.map +1 -1
  3. package/esm2022/components/cell-views/select/option.component.mjs +1 -1
  4. package/esm2022/components/drag/drag.component.mjs +11 -4
  5. package/esm2022/grid-base.component.mjs +3 -7
  6. package/esm2022/grid.component.mjs +50 -40
  7. package/esm2022/pipes/grid.pipe.mjs +1 -1
  8. package/esm2022/renderer/components/action-icon.component.mjs +1 -1
  9. package/esm2022/renderer/components/text.component.mjs +1 -1
  10. package/esm2022/renderer/creations/create-cells.mjs +1 -1
  11. package/esm2022/types/cell.mjs +1 -1
  12. package/esm2022/types/component-config.mjs +1 -1
  13. package/esm2022/utils/clear-cells.mjs +23 -0
  14. package/esm2022/utils/clipboard/paste.mjs +19 -21
  15. package/esm2022/utils/common.mjs +1 -1
  16. package/esm2022/utils/field/model/attachment.mjs +2 -4
  17. package/esm2022/utils/field/model/date.mjs +3 -4
  18. package/esm2022/utils/field/model/link.mjs +3 -3
  19. package/esm2022/utils/field/model/member.mjs +2 -3
  20. package/esm2022/utils/field/model/number.mjs +2 -4
  21. package/esm2022/utils/field/model/progress.mjs +2 -3
  22. package/esm2022/utils/field/model/rate.mjs +4 -5
  23. package/esm2022/utils/field/model/rich-text.mjs +2 -4
  24. package/esm2022/utils/field/model/select.mjs +2 -4
  25. package/esm2022/utils/field/model/text.mjs +3 -3
  26. package/esm2022/utils/field/operate.mjs +2 -3
  27. package/esm2022/utils/index.mjs +2 -1
  28. package/fesm2022/ai-table-grid.mjs +104 -71
  29. package/fesm2022/ai-table-grid.mjs.map +1 -1
  30. package/grid-base.component.d.ts +1 -1
  31. package/grid-base.component.d.ts.map +1 -1
  32. package/grid.component.d.ts +3 -0
  33. package/grid.component.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/pipes/grid.pipe.d.ts +1 -2
  36. package/pipes/grid.pipe.d.ts.map +1 -1
  37. package/renderer/components/action-icon.component.d.ts.map +1 -1
  38. package/types/cell.d.ts +1 -2
  39. package/types/cell.d.ts.map +1 -1
  40. package/types/component-config.d.ts +1 -2
  41. package/types/component-config.d.ts.map +1 -1
  42. package/utils/clear-cells.d.ts +4 -0
  43. package/utils/clear-cells.d.ts.map +1 -0
  44. package/utils/clipboard/paste.d.ts.map +1 -1
  45. package/utils/common.d.ts.map +1 -1
  46. package/utils/field/model/attachment.d.ts +1 -2
  47. package/utils/field/model/attachment.d.ts.map +1 -1
  48. package/utils/field/model/date.d.ts +1 -2
  49. package/utils/field/model/date.d.ts.map +1 -1
  50. package/utils/field/model/link.d.ts.map +1 -1
  51. package/utils/field/model/member.d.ts.map +1 -1
  52. package/utils/field/model/number.d.ts +1 -2
  53. package/utils/field/model/number.d.ts.map +1 -1
  54. package/utils/field/model/progress.d.ts +1 -2
  55. package/utils/field/model/progress.d.ts.map +1 -1
  56. package/utils/field/model/rate.d.ts +1 -2
  57. package/utils/field/model/rate.d.ts.map +1 -1
  58. package/utils/field/model/rich-text.d.ts +1 -2
  59. package/utils/field/model/rich-text.d.ts.map +1 -1
  60. package/utils/field/model/select.d.ts +1 -2
  61. package/utils/field/model/select.d.ts.map +1 -1
  62. package/utils/field/model/text.d.ts.map +1 -1
  63. package/utils/field/operate.d.ts.map +1 -1
  64. package/utils/index.d.ts +1 -0
  65. package/utils/index.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"option.component.d.ts","sourceRoot":"","sources":["../../../../../packages/grid/src/components/cell-views/select/option.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;;AAE9F,qBAWa,qBAAqB;IAC9B,KAAK,oDAAkC;IAEvC,aAAa,2DAAyC;IAEtD,WAAW,2DAER;IAEH,wBAAwB,kCAA4B;yCAT3C,qBAAqB;2CAArB,qBAAqB;CAUjC"}
1
+ {"version":3,"file":"option.component.d.ts","sourceRoot":"","sources":["../../../../../packages/grid/src/components/cell-views/select/option.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;;AAG9F,qBAWa,qBAAqB;IAC9B,KAAK,oDAAkC;IAEvC,aAAa,2DAAyC;IAEtD,WAAW,2DAER;IAEH,wBAAwB,kCAA4B;yCAT3C,qBAAqB;2CAArB,qBAAqB;CAUjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"drag.component.d.ts","sourceRoot":"","sources":["../../../../packages/grid/src/components/drag/drag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAU,SAAS,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AACrI,OAAO,EAAE,WAAW,EAAY,MAAM,iBAAiB,CAAC;;AAMxD,qBASa,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAC1D,OAAO,wDAAyB;IAEhC,OAAO,CAAC,2BAA2B,CAAuC;IAE1E,OAAO,CAAC,OAAO,CAAqB;IAEpC,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,CAAmC;IAEtE,OAAO,CAAC,IAAI,CAAe;IAE3B,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,kBAAkB,CAAyC;IAEnE,OAAO,CAAC,WAAW,CAAiC;IAEpD,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,eAAe,CAAC,CAAa;;IAMrC,QAAQ;IAKR,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,mBAAmB;IAwC3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,YAAY;IAoEpB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,kBAAkB;IAI1B,WAAW;yCAzTF,oBAAoB;2CAApB,oBAAoB;CAmUhC"}
1
+ {"version":3,"file":"drag.component.d.ts","sourceRoot":"","sources":["../../../../packages/grid/src/components/drag/drag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAU,SAAS,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AACrI,OAAO,EAAE,WAAW,EAAY,MAAM,iBAAiB,CAAC;;AAMxD,qBASa,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAC1D,OAAO,wDAAyB;IAEhC,OAAO,CAAC,2BAA2B,CAAuC;IAE1E,OAAO,CAAC,OAAO,CAAqB;IAEpC,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,CAAmC;IAEtE,OAAO,CAAC,IAAI,CAAe;IAE3B,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,kBAAkB,CAAyC;IAEnE,OAAO,CAAC,WAAW,CAAiC;IAEpD,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,eAAe,CAAC,CAAa;;IAMrC,QAAQ;IAKR,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,mBAAmB;IAwC3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,YAAY;IA0EpB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,kBAAkB;IAI1B,WAAW;yCA/TF,oBAAoB;2CAApB,oBAAoB;CAyUhC"}
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25
25
  '[class.select-option-tag]': 'optionStyle === AITableSelectOptionStyle.tag'
26
26
  }, imports: [ThyTag, ThyIcon, ThyTooltipModule, ThyDot, ThyFlexibleText], template: "@if (displayOption(); as displayOption) {\n @switch (optionStyle()) {\n @case (AITableSelectOptionStyle.dot) {\n @if (displayOption.bg_color || displayOption.color; as color) {\n <thy-dot [thyColor]=\"color\" [thySize]=\"'md'\" class=\"mr-2\"></thy-dot>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n @case (AITableSelectOptionStyle.tag) {\n @if (displayOption.bg_color || displayOption.color || 'default'; as color) {\n <thy-tag thyTheme=\"fill\" thyShape=\"pill\" [thyColor]=\"color\">\n @if (displayOption['icon']) {\n <thy-icon class=\"text-white\" [thyIconName]=\"displayOption['icon']\"></thy-icon>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n </thy-tag>\n }\n }\n @case (AITableSelectOptionStyle.piece) {\n @if (displayOption.bg_color || displayOption.color; as color) {\n <thy-dot thyShape=\"square\" [thyColor]=\"color\" [thySize]=\"'md'\" class=\"mr-2\"></thy-dot>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n @default {\n @if (displayOption['icon']) {\n <thy-icon [thyIconName]=\"displayOption['icon']\" [style.color]=\"displayOption.color\"></thy-icon>\n }\n <span thyFlexibleText [thyTooltipContent]=\"displayOption.text\">{{ displayOption.text }}</span>\n }\n }\n}\n" }]
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvbXBvbmVudHMvY2VsbC12aWV3cy9zZWxlY3Qvb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvbXBvbmVudHMvY2VsbC12aWV3cy9zZWxlY3Qvb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFxQyx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWE5RixNQUFNLE9BQU8scUJBQXFCO0lBWGxDO1FBWUksVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7UUFFdkMsa0JBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF1QixDQUFDO1FBRXRELGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFRLElBQUksQ0FBQyxLQUFLLEVBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7UUFFSCw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztLQUN2RDsrR0FWWSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwwZUNuQmxDLDBxREFnQ0EsNENEZmMsTUFBTSxnSkFBRSxPQUFPLHFNQUFFLGdCQUFnQiwrQkFBRSxNQUFNLGdJQUFFLGVBQWU7OzRGQUUzRCxxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQiwyQkFBMkIsRUFBRSw4Q0FBOEM7cUJBQzlFLFdBQ1EsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeURvdCB9IGZyb20gJ25neC10ZXRoeXMvZG90JztcbmltcG9ydCB7IFRoeUZsZXhpYmxlVGV4dCB9IGZyb20gJ25neC10ZXRoeXMvZmxleGlibGUtdGV4dCc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeVRhZyB9IGZyb20gJ25neC10ZXRoeXMvdGFnJztcbmltcG9ydCB7IFRoeVRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkLCBBSVRhYmxlU2VsZWN0T3B0aW9uLCBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQUlUYWJsZVNlbGVjdEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzZWxlY3Qtb3B0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdzZWxlY3Qtb3B0aW9uIHRoeS10ZXh0JyxcbiAgICAgICAgJ1tjbGFzcy5zZWxlY3Qtb3B0aW9uLXRhZ10nOiAnb3B0aW9uU3R5bGUgPT09IEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS50YWcnXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbVGh5VGFnLCBUaHlJY29uLCBUaHlUb29sdGlwTW9kdWxlLCBUaHlEb3QsIFRoeUZsZXhpYmxlVGV4dF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uQ29tcG9uZW50IHtcbiAgICBmaWVsZCA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVGaWVsZD4oKTtcblxuICAgIGRpc3BsYXlPcHRpb24gPSBpbnB1dC5yZXF1aXJlZDxBSVRhYmxlU2VsZWN0T3B0aW9uPigpO1xuXG4gICAgb3B0aW9uU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAodGhpcy5maWVsZCgpIGFzIEFJVGFibGVTZWxlY3RGaWVsZCkuc2V0dGluZ3Mub3B0aW9uX3N0eWxlIHx8IEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS50ZXh0O1xuICAgIH0pO1xuXG4gICAgQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlID0gQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlO1xufVxuIiwiQGlmIChkaXNwbGF5T3B0aW9uKCk7IGFzIGRpc3BsYXlPcHRpb24pIHtcbiAgICBAc3dpdGNoIChvcHRpb25TdHlsZSgpKSB7XG4gICAgICAgIEBjYXNlIChBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUuZG90KSB7XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXlPcHRpb24uYmdfY29sb3IgfHwgZGlzcGxheU9wdGlvbi5jb2xvcjsgYXMgY29sb3IpIHtcbiAgICAgICAgICAgICAgICA8dGh5LWRvdCBbdGh5Q29sb3JdPVwiY29sb3JcIiBbdGh5U2l6ZV09XCInbWQnXCIgY2xhc3M9XCJtci0yXCI+PC90aHktZG90PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gdGh5RmxleGlibGVUZXh0IFt0aHlUb29sdGlwQ29udGVudF09XCJkaXNwbGF5T3B0aW9uLnRleHRcIj57eyBkaXNwbGF5T3B0aW9uLnRleHQgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS50YWcpIHtcbiAgICAgICAgICAgIEBpZiAoZGlzcGxheU9wdGlvbi5iZ19jb2xvciB8fCBkaXNwbGF5T3B0aW9uLmNvbG9yIHx8ICdkZWZhdWx0JzsgYXMgY29sb3IpIHtcbiAgICAgICAgICAgICAgICA8dGh5LXRhZyB0aHlUaGVtZT1cImZpbGxcIiB0aHlTaGFwZT1cInBpbGxcIiBbdGh5Q29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNwbGF5T3B0aW9uWydpY29uJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInRleHQtd2hpdGVcIiBbdGh5SWNvbk5hbWVdPVwiZGlzcGxheU9wdGlvblsnaWNvbiddXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cImRpc3BsYXlPcHRpb24udGV4dFwiPnt7IGRpc3BsYXlPcHRpb24udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RoeS10YWc+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS5waWVjZSkge1xuICAgICAgICAgICAgQGlmIChkaXNwbGF5T3B0aW9uLmJnX2NvbG9yIHx8IGRpc3BsYXlPcHRpb24uY29sb3I7IGFzIGNvbG9yKSB7XG4gICAgICAgICAgICAgICAgPHRoeS1kb3QgdGh5U2hhcGU9XCJzcXVhcmVcIiBbdGh5Q29sb3JdPVwiY29sb3JcIiBbdGh5U2l6ZV09XCInbWQnXCIgY2xhc3M9XCJtci0yXCI+PC90aHktZG90PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gdGh5RmxleGlibGVUZXh0IFt0aHlUb29sdGlwQ29udGVudF09XCJkaXNwbGF5T3B0aW9uLnRleHRcIj57eyBkaXNwbGF5T3B0aW9uLnRleHQgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgQGlmIChkaXNwbGF5T3B0aW9uWydpY29uJ10pIHtcbiAgICAgICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImRpc3BsYXlPcHRpb25bJ2ljb24nXVwiIFtzdHlsZS5jb2xvcl09XCJkaXNwbGF5T3B0aW9uLmNvbG9yXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwiZGlzcGxheU9wdGlvbi50ZXh0XCI+e3sgZGlzcGxheU9wdGlvbi50ZXh0IH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgfVxufVxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvbXBvbmVudHMvY2VsbC12aWV3cy9zZWxlY3Qvb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvbXBvbmVudHMvY2VsbC12aWV3cy9zZWxlY3Qvb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFxQyx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWM5RixNQUFNLE9BQU8scUJBQXFCO0lBWGxDO1FBWUksVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7UUFFdkMsa0JBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF1QixDQUFDO1FBRXRELGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFRLElBQUksQ0FBQyxLQUFLLEVBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7UUFFSCw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztLQUN2RDsrR0FWWSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwwZUNwQmxDLDBxREFnQ0EsNENEZGMsTUFBTSxnSkFBRSxPQUFPLHFNQUFFLGdCQUFnQiwrQkFBRSxNQUFNLGdJQUFFLGVBQWU7OzRGQUUzRCxxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQiwyQkFBMkIsRUFBRSw4Q0FBOEM7cUJBQzlFLFdBQ1EsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeURvdCB9IGZyb20gJ25neC10ZXRoeXMvZG90JztcbmltcG9ydCB7IFRoeUZsZXhpYmxlVGV4dCB9IGZyb20gJ25neC10ZXRoeXMvZmxleGlibGUtdGV4dCc7XG5pbXBvcnQgeyBUaHlJY29uIH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeVRhZyB9IGZyb20gJ25neC10ZXRoeXMvdGFnJztcbmltcG9ydCB7IFRoeVRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkLCBBSVRhYmxlU2VsZWN0T3B0aW9uLCBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQUlUYWJsZVNlbGVjdEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NlbGVjdC1vcHRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3NlbGVjdC1vcHRpb24gdGh5LXRleHQnLFxuICAgICAgICAnW2NsYXNzLnNlbGVjdC1vcHRpb24tdGFnXSc6ICdvcHRpb25TdHlsZSA9PT0gQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLnRhZydcbiAgICB9LFxuICAgIGltcG9ydHM6IFtUaHlUYWcsIFRoeUljb24sIFRoeVRvb2x0aXBNb2R1bGUsIFRoeURvdCwgVGh5RmxleGlibGVUZXh0XVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RPcHRpb25Db21wb25lbnQge1xuICAgIGZpZWxkID0gaW5wdXQucmVxdWlyZWQ8QUlUYWJsZUZpZWxkPigpO1xuXG4gICAgZGlzcGxheU9wdGlvbiA9IGlucHV0LnJlcXVpcmVkPEFJVGFibGVTZWxlY3RPcHRpb24+KCk7XG5cbiAgICBvcHRpb25TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmZpZWxkKCkgYXMgQUlUYWJsZVNlbGVjdEZpZWxkKS5zZXR0aW5ncy5vcHRpb25fc3R5bGUgfHwgQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLnRleHQ7XG4gICAgfSk7XG5cbiAgICBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUgPSBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGU7XG59XG4iLCJAaWYgKGRpc3BsYXlPcHRpb24oKTsgYXMgZGlzcGxheU9wdGlvbikge1xuICAgIEBzd2l0Y2ggKG9wdGlvblN0eWxlKCkpIHtcbiAgICAgICAgQGNhc2UgKEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZS5kb3QpIHtcbiAgICAgICAgICAgIEBpZiAoZGlzcGxheU9wdGlvbi5iZ19jb2xvciB8fCBkaXNwbGF5T3B0aW9uLmNvbG9yOyBhcyBjb2xvcikge1xuICAgICAgICAgICAgICAgIDx0aHktZG90IFt0aHlDb2xvcl09XCJjb2xvclwiIFt0aHlTaXplXT1cIidtZCdcIiBjbGFzcz1cIm1yLTJcIj48L3RoeS1kb3Q+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cImRpc3BsYXlPcHRpb24udGV4dFwiPnt7IGRpc3BsYXlPcHRpb24udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLnRhZykge1xuICAgICAgICAgICAgQGlmIChkaXNwbGF5T3B0aW9uLmJnX2NvbG9yIHx8IGRpc3BsYXlPcHRpb24uY29sb3IgfHwgJ2RlZmF1bHQnOyBhcyBjb2xvcikge1xuICAgICAgICAgICAgICAgIDx0aHktdGFnIHRoeVRoZW1lPVwiZmlsbFwiIHRoeVNoYXBlPVwicGlsbFwiIFt0aHlDb2xvcl09XCJjb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRpc3BsYXlPcHRpb25bJ2ljb24nXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwidGV4dC13aGl0ZVwiIFt0aHlJY29uTmFtZV09XCJkaXNwbGF5T3B0aW9uWydpY29uJ11cIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwiZGlzcGxheU9wdGlvbi50ZXh0XCI+e3sgZGlzcGxheU9wdGlvbi50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGh5LXRhZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQUlUYWJsZVNlbGVjdE9wdGlvblN0eWxlLnBpZWNlKSB7XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXlPcHRpb24uYmdfY29sb3IgfHwgZGlzcGxheU9wdGlvbi5jb2xvcjsgYXMgY29sb3IpIHtcbiAgICAgICAgICAgICAgICA8dGh5LWRvdCB0aHlTaGFwZT1cInNxdWFyZVwiIFt0aHlDb2xvcl09XCJjb2xvclwiIFt0aHlTaXplXT1cIidtZCdcIiBjbGFzcz1cIm1yLTJcIj48L3RoeS1kb3Q+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cImRpc3BsYXlPcHRpb24udGV4dFwiPnt7IGRpc3BsYXlPcHRpb24udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXlPcHRpb25bJ2ljb24nXSkge1xuICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiZGlzcGxheU9wdGlvblsnaWNvbiddXCIgW3N0eWxlLmNvbG9yXT1cImRpc3BsYXlPcHRpb24uY29sb3JcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gdGh5RmxleGlibGVUZXh0IFt0aHlUb29sdGlwQ29udGVudF09XCJkaXNwbGF5T3B0aW9uLnRleHRcIj57eyBkaXNwbGF5T3B0aW9uLnRleHQgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -106,12 +106,13 @@ export class AITableDragComponent {
106
106
  const pointerX = moveX + sourceColumnStartX;
107
107
  // 拖拽中心点
108
108
  const dragCenter = sourceColumnWidth / 2;
109
+ const rectLeft = pointerX - (isSourceColumnFrozen ? 0 : scroll.x);
109
110
  this.setRectStyles({
110
111
  cursor: 'move',
111
112
  width: `${width}px`,
112
113
  height: '100%',
113
114
  top: '0',
114
- left: `${pointerX - (isSourceColumnFrozen ? 0 : scroll.x)}px`
115
+ left: `${rectLeft}px`
115
116
  });
116
117
  const lastColumnOffset = coordinate.getColumnOffset(coordinate.columnCount - 1);
117
118
  const lastColumnWidth = coordinate.getColumnWidth(coordinate.columnCount - 1);
@@ -128,9 +129,15 @@ export class AITableDragComponent {
128
129
  isLastColumn) {
129
130
  let lineLeft = targetColumnStartX - scroll.x;
130
131
  const lineForFrozenX = lineLeft - frozenColumnWidth - aiTable.context.rowHeadWidth();
132
+ const rectDistanceFrozenX = rectLeft - frozenColumnWidth - aiTable.context.rowHeadWidth();
131
133
  if (lineForFrozenX < 0) {
132
- lineLeft = coordinate.getColumnOffset(0);
133
- targetColumnIndex = 0;
134
+ if (Math.abs(rectDistanceFrozenX) > dragCenter) {
135
+ lineLeft = coordinate.getColumnOffset(0);
136
+ targetColumnIndex = 0;
137
+ }
138
+ else {
139
+ return;
140
+ }
134
141
  }
135
142
  this.setAuxiliaryLineStyles({
136
143
  width: '2px',
@@ -290,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
290
297
  class: 'ai-table-drag-container'
291
298
  }, template: "<div class=\"rect\"></div>\n<div class=\"auxiliary-line\"></div>" }]
292
299
  }], ctorParameters: () => [] });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFZakcsTUFBTSxPQUFPLG9CQUFvQjtJQTZCN0I7UUE1QkEsWUFBTyxHQUFHLE1BQU0sRUFBZSxDQUFDO1FBRXhCLGdDQUEyQixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRWxFLFlBQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEMsZUFBVSxHQUE0QixNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQU05RCxnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFFdkMsdUJBQWtCLEdBQW9DLElBQUksQ0FBQztRQUUzRCxnQkFBVyxHQUE0QixJQUFJLENBQUM7UUFJNUMscUJBQWdCLEdBQVEsSUFBSSxDQUFDO1FBRTdCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU92QyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBRSxDQUFDO0lBQ3pGLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFhLEVBQUUsRUFBRTtZQUNsRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTdDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUNsQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDbEYsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQixPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDakUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLENBQUM7WUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHFCQUFxQjtRQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFFcEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkUsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU8sVUFBVSxDQUFDLENBQWEsRUFBRSxJQUFzQjtRQUNwRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0RCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1YsS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBQyxXQUFXO2dCQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxNQUFNO1FBQ2QsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBc0IsRUFBRSxLQUFhO1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFXLENBQUM7UUFDcEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxPQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN4RSxNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6RSxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RSxrQ0FBa0M7UUFDbEMsTUFBTSxvQkFBb0IsR0FBRyxpQkFBaUIsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztRQUM1QyxRQUFRO1FBQ1IsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDZixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxHQUFHLEtBQUssSUFBSTtZQUNuQixNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFLEdBQUcsUUFBUSxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ2hFLENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU5RSxJQUFJLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDdEgsSUFBSSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkUsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLFNBQVM7UUFDVCxJQUFJLFFBQVEsR0FBRyxVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsZUFBZSxFQUFFLENBQUM7WUFDN0QsaUJBQWlCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxrQkFBa0IsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7WUFDeEQsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFDSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixHQUFHLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwSCxZQUFZLEVBQ2QsQ0FBQztZQUNDLElBQUksUUFBUSxHQUFHLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDN0MsTUFBTSxjQUFjLEdBQUcsUUFBUSxHQUFHLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxPQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLFFBQVEsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLE1BQU07Z0JBQ2QsR0FBRyxFQUFFLENBQUM7Z0JBQ04sSUFBSSxFQUFFLEdBQUcsUUFBUSxJQUFJO2FBQ3hCLENBQUMsQ0FBQztZQUNILGlCQUFpQjtZQUNqQixJQUFJLGlCQUFpQixHQUFHLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hDLGlCQUFpQixJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3BCLFdBQVcsRUFBRSxpQkFBaUI7Z0JBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDeEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxRixDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQXNCLEVBQUUsS0FBYTtRQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDekQsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsT0FBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDeEUsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEcsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9FLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVcsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLGtCQUFrQixDQUFDO1FBQzVDLE1BQU0sVUFBVSxHQUFHLFFBQVEsR0FBRyxDQUFDLGlCQUFpQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxJQUFJLEdBQUcsR0FBRyxVQUFVLEdBQUcsaUJBQWlCLElBQUksQ0FBQztRQUNuRCxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDeEIsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSTtTQUNQLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDMUIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUMvRCxDQUFDO0lBQ04sQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFzQixFQUFFLEtBQWE7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQztRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVcsQ0FBQztRQUVwQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxPQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQU0sQ0FBQztRQUMxRCxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEUsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDZixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxHQUFHLGVBQWUsSUFBSTtZQUM5QixHQUFHLEVBQUUsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSTtZQUMvQixJQUFJLEVBQUUsR0FBRztTQUNaLENBQUMsQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUMxRSxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLGVBQWUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUNJLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLGNBQWMsR0FBRyxjQUFjLElBQUksY0FBYyxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDNUYsQ0FBQyxjQUFjLEdBQUcsY0FBYyxJQUFJLGNBQWMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0UsT0FBTyxHQUFHLDBCQUEwQixHQUFHLFVBQVUsSUFBSSxVQUFVO1lBQy9ELE9BQU8sR0FBRyxVQUFVLENBQUMsZUFBZSxHQUFHLFVBQVUsRUFDbkQsQ0FBQztZQUNDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDeEIsS0FBSyxFQUFFLGVBQWUsNEJBQTRCLEtBQUs7Z0JBQ3ZELE1BQU0sRUFBRSxHQUFHLFVBQVUsSUFBSTtnQkFDekIsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJO2dCQUNuQixJQUFJLEVBQUUsR0FBRyw0QkFBNEIsSUFBSTthQUM1QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNmLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixXQUFXLEVBQUUsY0FBYzthQUM5QixDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2YsS0FBSyxFQUFFLEdBQUc7WUFDVixNQUFNLEVBQUUsR0FBRztZQUNYLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFLEdBQUc7U0FDWixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFDeEIsS0FBSyxFQUFFLEdBQUc7WUFDVixNQUFNLEVBQUUsR0FBRztZQUNYLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFLEdBQUc7U0FDWixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsTUFBYSxFQUFFLFVBQWUsRUFBRSxJQUFzQjtRQUM3RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssSUFBSSxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBZTtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQTJCO1FBQzdDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUEyQjtRQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQzsrR0FsVVEsb0JBQW9CO21HQUFwQixvQkFBb0IsK0pDaEJqQyxrRUFDa0M7OzRGRGVyQixvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUseUJBQXlCO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdFbmREYXRhLCBEcmFnVHlwZSB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNSU5fQ09MVU1OX1dJRFRIIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dyaWQnO1xuaW1wb3J0IHsgQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFibGUnO1xuaW1wb3J0IHsgQUlUYWJsZURyYWdTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWRyYWcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcmFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdhaS10YWJsZS1kcmFnLWNvbnRhaW5lcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVEcmFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGRyYWdFbmQgPSBvdXRwdXQ8RHJhZ0VuZERhdGE+KCk7XG5cbiAgICBwcml2YXRlIGFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSA9IGluamVjdChBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZW5kZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICBwcml2YXRlIHJlY3QhOiBIVE1MRWxlbWVudDtcblxuICAgIHByaXZhdGUgYXV4aWxpYXJ5TGluZSE6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBkcmFnZ2VkRGF0YTogRHJhZ0VuZERhdGEgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgbW91c2VTdGFydFBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgYWlUYWJsZURyYWc6IEFJVGFibGVEcmFnU3RhdGUgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgdGltZXIhOiBudW1iZXIgfCBudWxsO1xuXG4gICAgcHJpdmF0ZSBtb3VzZURvd25UaW1lb3V0OiBhbnkgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBpc0RyYWdnaW5nRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBtb3VzZWRvd25MaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBtb3VzZW1vdmVMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBtb3VzZXVwTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB0aGlzLmhhbmRsZURyYWdTdGF0ZUNoYW5nZSgpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0RWxlbWVudHMoKTtcbiAgICAgICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yZWN0JykhO1xuICAgICAgICB0aGlzLmF1eGlsaWFyeUxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYXV4aWxpYXJ5LWxpbmUnKSE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdXNlZG93bkxpc3RlbmVyID0gdGhpcy5yZW5kZXIyLmxpc3Rlbignd2luZG93JywgJ21vdXNlZG93bicsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlU3RhcnRQb3NpdGlvbiA9IHsgeDogZS54LCB5OiBlLnkgfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VEb3duVGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm1vdXNlRG93blRpbWVvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3VzZURvd25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXIyLmxpc3Rlbignd2luZG93JywgJ21vdXNlbW92ZScsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50aW1lciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWlUYWJsZURyYWcgJiYgdGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVEcmFnKGUsIHRoaXMuYWlUYWJsZURyYWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyMi5saXN0ZW4oJ3dpbmRvdycsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VEb3duVGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm1vdXNlRG93blRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMubW91c2VEb3duVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW91c2VTdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZURyYWcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEcmFnRW5kKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRHJhZ1N0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkcmFnID0gdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuYWlUYWJsZS5kcmFnU3RhdGU/LigpO1xuXG4gICAgICAgIGlmICghZHJhZykge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlRHJhZyA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZHJhZy50eXBlID09PSBEcmFnVHlwZS5ub25lIHx8ICF0aGlzLnJlY3QgfHwgIXRoaXMuYXV4aWxpYXJ5TGluZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5haVRhYmxlRHJhZyA9IGRyYWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnKGU6IE1vdXNlRXZlbnQsIGRyYWc6IEFJVGFibGVEcmFnU3RhdGUpIHtcbiAgICAgICAgaWYgKGRyYWcudHlwZSA9PT0gRHJhZ1R5cGUubm9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVN0eWxlKCdibG9jaycpO1xuICAgICAgICBjb25zdCBtb3ZlWCA9IGUueCAtICh0aGlzLm1vdXNlU3RhcnRQb3NpdGlvbj8ueCB8fCAwKTtcbiAgICAgICAgY29uc3QgbW92ZVkgPSBlLnkgLSAodGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24/LnkgfHwgMCk7XG4gICAgICAgIHN3aXRjaCAoZHJhZy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLmZpZWxkOlxuICAgICAgICAgICAgICAgIHRoaXMubW92aW5nQ29sdW1uKGRyYWcsIG1vdmVYKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUucmVjb3JkOlxuICAgICAgICAgICAgICAgIHRoaXMubW92aW5nUmVjb3JkKGRyYWcsIG1vdmVZKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUuY29sdW1uV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZpbmdDb2x1bW5XaWR0aChkcmFnLCBtb3ZlWCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmluZ0NvbHVtbihkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFpVGFibGUgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZSA9IGRyYWcuY29vcmRpbmF0ZSE7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGFpVGFibGUuZ3JpZERhdGEoKS5maWVsZHM7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5jYWxjdWxhdGVEcmFnV2lkdGgoZmllbGRzLCBjb29yZGluYXRlLCBkcmFnKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlQ29sdW1uc0luZGV4TWFwKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbkluZGV4ID0gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChkcmFnLnNvdXJjZUlkcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUhKSB8fCAwO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5TdGFydFggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIC8vIFRPRE86IOebruWJjem7mOiupOesrOS4gOWIl+S4uuWGu+e7k+WIl++8jOWQjuacn+aUr+aMgeiuvue9ruWGu+e7k+WIl+mcgOimgeWkhOeQhlxuICAgICAgICBjb25zdCBpc1NvdXJjZUNvbHVtbkZyb3plbiA9IHNvdXJjZUNvbHVtbkluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCBmcm96ZW5Db2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoMCk7XG4gICAgICAgIGNvbnN0IHBvaW50ZXJYID0gbW92ZVggKyBzb3VyY2VDb2x1bW5TdGFydFg7XG4gICAgICAgIC8vIOaLluaLveS4reW/g+eCuVxuICAgICAgICBjb25zdCBkcmFnQ2VudGVyID0gc291cmNlQ29sdW1uV2lkdGggLyAyO1xuICAgICAgICB0aGlzLnNldFJlY3RTdHlsZXMoe1xuICAgICAgICAgICAgY3Vyc29yOiAnbW92ZScsXG4gICAgICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgICAgIGxlZnQ6IGAke3BvaW50ZXJYIC0gKGlzU291cmNlQ29sdW1uRnJvemVuID8gMCA6IHNjcm9sbC54KX1weGBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbGFzdENvbHVtbk9mZnNldCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KGNvb3JkaW5hdGUuY29sdW1uQ291bnQgLSAxKTtcbiAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb29yZGluYXRlLmNvbHVtbkNvdW50IC0gMSk7XG5cbiAgICAgICAgbGV0IHRhcmdldENvbHVtbkluZGV4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5TdGFydEluZGV4KHBvaW50ZXJYICsgKGlzU291cmNlQ29sdW1uRnJvemVuID8gc2Nyb2xsLnggOiAwKSArIGRyYWdDZW50ZXIpO1xuICAgICAgICBsZXQgdGFyZ2V0Q29sdW1uU3RhcnRYID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQodGFyZ2V0Q29sdW1uSW5kZXgpO1xuICAgICAgICBsZXQgaXNMYXN0Q29sdW1uID0gZmFsc2U7XG4gICAgICAgIC8vIOWkhOeQhuacgOWQjuS4gOWIl1xuICAgICAgICBpZiAocG9pbnRlclggKyBkcmFnQ2VudGVyID4gbGFzdENvbHVtbk9mZnNldCArIGxhc3RDb2x1bW5XaWR0aCkge1xuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uSW5kZXggPSBjb29yZGluYXRlLmNvbHVtbkNvdW50O1xuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uU3RhcnRYID0gbGFzdENvbHVtbk9mZnNldCArIGxhc3RDb2x1bW5XaWR0aDtcbiAgICAgICAgICAgIGlzTGFzdENvbHVtbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRhcmdldENvbHVtbkluZGV4ID49IDAgJiYgKHRhcmdldENvbHVtbkluZGV4IC0gc291cmNlQ29sdW1uSW5kZXggPiAxIHx8IHRhcmdldENvbHVtbkluZGV4IC0gc291cmNlQ29sdW1uSW5kZXggPCAwKSkgfHxcbiAgICAgICAgICAgIGlzTGFzdENvbHVtblxuICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBsaW5lTGVmdCA9IHRhcmdldENvbHVtblN0YXJ0WCAtIHNjcm9sbC54O1xuICAgICAgICAgICAgY29uc3QgbGluZUZvckZyb3plblggPSBsaW5lTGVmdCAtIGZyb3plbkNvbHVtbldpZHRoIC0gYWlUYWJsZS5jb250ZXh0IS5yb3dIZWFkV2lkdGgoKTtcbiAgICAgICAgICAgIGlmIChsaW5lRm9yRnJvemVuWCA8IDApIHtcbiAgICAgICAgICAgICAgICBsaW5lTGVmdCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KDApO1xuICAgICAgICAgICAgICAgIHRhcmdldENvbHVtbkluZGV4ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcycHgnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICBsZWZ0OiBgJHtsaW5lTGVmdH1weGBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8g5ZCR5Y+z56e75Yqo55uu5qCH5Zyo55uu5qCH5YiX55qE5YmN5LiA5YiXXG4gICAgICAgICAgICBpZiAodGFyZ2V0Q29sdW1uSW5kZXggPiBzb3VyY2VDb2x1bW5JbmRleCkge1xuICAgICAgICAgICAgICAgIHRhcmdldENvbHVtbkluZGV4IC09IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRyYWdnZWREYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLmZpZWxkLFxuICAgICAgICAgICAgICAgIHRhcmdldEluZGV4OiB0YXJnZXRDb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICBmaWVsZElkczogZHJhZy5zb3VyY2VJZHMsXG4gICAgICAgICAgICAgICAgZmllbGRzSW5kZXg6IEFycmF5LmZyb20oZHJhZy5zb3VyY2VJZHMpLm1hcCgoaWQpID0+IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoaWQpIHx8IDApXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZERhdGEgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZpbmdDb2x1bW5XaWR0aChkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0Q3Vyc29yU3R5bGUoJ2NvbC1yZXNpemUnKTtcbiAgICAgICAgY29uc3QgYWlUYWJsZSA9IHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmFpVGFibGU7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5JbmRleE1hcCA9IGFpVGFibGUuY29udGV4dCEudmlzaWJsZUNvbHVtbnNJbmRleE1hcCgpO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5JbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoZHJhZy5zb3VyY2VJZHMudmFsdWVzKCkubmV4dCgpLnZhbHVlISkgfHwgMDtcbiAgICAgICAgY29uc3Qgc291cmNlQ29sdW1uU3RhcnRYID0gZHJhZy5jb29yZGluYXRlIS5nZXRDb2x1bW5PZmZzZXQoc291cmNlQ29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5XaWR0aCA9IGRyYWcuY29vcmRpbmF0ZSEuZ2V0Q29sdW1uV2lkdGgoc291cmNlQ29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgcG9pbnRlclggPSBtb3ZlWCArIHNvdXJjZUNvbHVtblN0YXJ0WDtcbiAgICAgICAgY29uc3QgY29sUmVzaXplWCA9IHBvaW50ZXJYIC0gKHNvdXJjZUNvbHVtbkluZGV4ID09PSAwID8gMCA6IHNjcm9sbC54KTtcbiAgICAgICAgY29uc3QgbGVmdCA9IGAke2NvbFJlc2l6ZVggKyBzb3VyY2VDb2x1bW5XaWR0aH1weGA7XG4gICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzJweCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHRvcDogJzAnLFxuICAgICAgICAgICAgbGVmdFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IHtcbiAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgZmllbGRJZHM6IGRyYWcuc291cmNlSWRzLFxuICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KE1JTl9DT0xVTU5fV0lEVEgsIHNvdXJjZUNvbHVtbldpZHRoICsgbW92ZVgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZpbmdSZWNvcmQoZHJhZzogQUlUYWJsZURyYWdTdGF0ZSwgbW92ZVk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBhaVRhYmxlID0gdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuYWlUYWJsZTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsID0gZHJhZy5zY3JvbGwgfHwgeyB4OiAwLCB5OiAwIH07XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGUgPSBkcmFnLmNvb3JkaW5hdGUhO1xuXG4gICAgICAgIGNvbnN0IHZpc2libGVSb3dJbmRleE1hcCA9IGFpVGFibGUuY29udGV4dCEudmlzaWJsZVJvd3NJbmRleE1hcCgpO1xuICAgICAgICBjb25zdCBzb3VyY2VSb3dJZCA9IGRyYWcuc291cmNlSWRzLnZhbHVlcygpLm5leHQoKS52YWx1ZSE7XG4gICAgICAgIGNvbnN0IHNvdXJjZVJvd0luZGV4ID0gdmlzaWJsZVJvd0luZGV4TWFwLmdldChzb3VyY2VSb3dJZCkgfHwgMDtcbiAgICAgICAgY29uc3Qgc291cmNlUm93U3RhcnRZID0gY29vcmRpbmF0ZS5nZXRSb3dPZmZzZXQoc291cmNlUm93SW5kZXgpO1xuICAgICAgICBjb25zdCBzb3VyY2VSb3dIZWlnaHQgPSBjb29yZGluYXRlLmdldFJvd0hlaWdodChzb3VyY2VSb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IHBvaW50ZXJZID0gc291cmNlUm93U3RhcnRZICsgbW92ZVk7XG4gICAgICAgIHRoaXMuc2V0UmVjdFN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiBgJHtzb3VyY2VSb3dIZWlnaHR9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHtwb2ludGVyWSAtIHNjcm9sbC55fXB4YCxcbiAgICAgICAgICAgIGxlZnQ6ICcwJ1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZHJhZ0NlbnRlciA9IHNvdXJjZVJvd0hlaWdodCAvIDI7XG4gICAgICAgIGNvbnN0IHRhcmdldFJvd0luZGV4ID0gY29vcmRpbmF0ZS5nZXRSb3dTdGFydEluZGV4KHBvaW50ZXJZICsgZHJhZ0NlbnRlcik7XG4gICAgICAgIGNvbnN0IHRhcmdldFJvd1N0YXJ0WSA9IGNvb3JkaW5hdGUuZ2V0Um93T2Zmc2V0KHRhcmdldFJvd0luZGV4KTtcbiAgICAgICAgY29uc3QgbGluZVRvcCA9IHRhcmdldFJvd1N0YXJ0WSAtIHNjcm9sbC55O1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gMjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKCh0YXJnZXRSb3dJbmRleCA+PSAwICYmIHNvdXJjZVJvd0luZGV4ID4gdGFyZ2V0Um93SW5kZXggJiYgc291cmNlUm93SW5kZXggLSB0YXJnZXRSb3dJbmRleCA+IDApIHx8XG4gICAgICAgICAgICAgICAgKHNvdXJjZVJvd0luZGV4IDwgdGFyZ2V0Um93SW5kZXggJiYgdGFyZ2V0Um93SW5kZXggLSBzb3VyY2VSb3dJbmRleCA+IDEpKSAmJlxuICAgICAgICAgICAgbGluZVRvcCA+IEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hUIC0gbGluZUhlaWdodCAmJiAvLyDpmZDliLblj6/op4bojIPlm7TlhoVcbiAgICAgICAgICAgIGxpbmVUb3AgPCBjb29yZGluYXRlLmNvbnRhaW5lckhlaWdodCAtIGxpbmVIZWlnaHRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNldEF1eGlsaWFyeUxpbmVTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBgY2FsYygxMDAlIC0gJHtBSV9UQUJMRV9ST1dfRFJBR19JQ09OX1dJRFRIfXB4KWAsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBgJHtsaW5lSGVpZ2h0fXB4YCxcbiAgICAgICAgICAgICAgICB0b3A6IGAke2xpbmVUb3B9cHhgLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGAke0FJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEh9cHhgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogRHJhZ1R5cGUucmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlY29yZElkczogZHJhZy5zb3VyY2VJZHMsXG4gICAgICAgICAgICAgICAgdGFyZ2V0SW5kZXg6IHRhcmdldFJvd0luZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZERhdGEgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnRW5kKCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2VkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnRW5kLmVtaXQoeyAuLi50aGlzLmRyYWdnZWREYXRhIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJEcmFnU3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyRHJhZ1N0YXRlKCkge1xuICAgICAgICB0aGlzLnNldERpc3BsYXlTdHlsZSgnbm9uZScpO1xuICAgICAgICB0aGlzLnNldFJlY3RTdHlsZXMoe1xuICAgICAgICAgICAgd2lkdGg6ICcwJyxcbiAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICBsZWZ0OiAnMCdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzAnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgICAgIGxlZnQ6ICcwJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVEcmFnV2lkdGgoZmllbGRzOiBhbnlbXSwgY29vcmRpbmF0ZTogYW55LCBkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpZHRoID0gMDtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRyYWcuc291cmNlSWRzLmhhcyhmaWVsZC5faWQpKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggKz0gY29vcmRpbmF0ZS5jb2x1bW5JbmRpY2VzU2l6ZU1hcFtpbmRleF0gfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERpc3BsYXlTdHlsZShkaXNwbGF5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsIGRpc3BsYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q3Vyc29yU3R5bGUoY3Vyc29yOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3Vyc29yJywgY3Vyc29yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlY3RTdHlsZXMoc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHN0eWxlcykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMucmVjdCwgcHJvcCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEF1eGlsaWFyeUxpbmVTdHlsZXMoc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHN0eWxlcykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuYXV4aWxpYXJ5TGluZSwgcHJvcCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0QXV4aWxpYXJ5TGluZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRBdXhpbGlhcnlMaW5lU3R5bGVzKHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAnMCcsIGxlZnQ6ICcwJyB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubW91c2Vkb3duTGlzdGVuZXIpIHRoaXMubW91c2Vkb3duTGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIpIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMubW91c2V1cExpc3RlbmVyKSB0aGlzLm1vdXNldXBMaXN0ZW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlY3RcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhdXhpbGlhcnktbGluZVwiPjwvZGl2PiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFZakcsTUFBTSxPQUFPLG9CQUFvQjtJQTZCN0I7UUE1QkEsWUFBTyxHQUFHLE1BQU0sRUFBZSxDQUFDO1FBRXhCLGdDQUEyQixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRWxFLFlBQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEMsZUFBVSxHQUE0QixNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQU05RCxnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFFdkMsdUJBQWtCLEdBQW9DLElBQUksQ0FBQztRQUUzRCxnQkFBVyxHQUE0QixJQUFJLENBQUM7UUFJNUMscUJBQWdCLEdBQVEsSUFBSSxDQUFDO1FBRTdCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU92QyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFB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RCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQzsrR0F4VVEsb0JBQW9CO21HQUFwQixvQkFBb0IsK0pDaEJqQyxrRUFDa0M7OzRGRGVyQixvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUseUJBQXlCO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdFbmREYXRhLCBEcmFnVHlwZSB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNSU5fQ09MVU1OX1dJRFRIIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dyaWQnO1xuaW1wb3J0IHsgQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsIEFJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFibGUnO1xuaW1wb3J0IHsgQUlUYWJsZURyYWdTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWRyYWcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcmFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdhaS10YWJsZS1kcmFnLWNvbnRhaW5lcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVEcmFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGRyYWdFbmQgPSBvdXRwdXQ8RHJhZ0VuZERhdGE+KCk7XG5cbiAgICBwcml2YXRlIGFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSA9IGluamVjdChBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZW5kZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICBwcml2YXRlIHJlY3QhOiBIVE1MRWxlbWVudDtcblxuICAgIHByaXZhdGUgYXV4aWxpYXJ5TGluZSE6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBkcmFnZ2VkRGF0YTogRHJhZ0VuZERhdGEgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgbW91c2VTdGFydFBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgYWlUYWJsZURyYWc6IEFJVGFibGVEcmFnU3RhdGUgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgdGltZXIhOiBudW1iZXIgfCBudWxsO1xuXG4gICAgcHJpdmF0ZSBtb3VzZURvd25UaW1lb3V0OiBhbnkgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBpc0RyYWdnaW5nRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBtb3VzZWRvd25MaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBtb3VzZW1vdmVMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBtb3VzZXVwTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB0aGlzLmhhbmRsZURyYWdTdGF0ZUNoYW5nZSgpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0RWxlbWVudHMoKTtcbiAgICAgICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yZWN0JykhO1xuICAgICAgICB0aGlzLmF1eGlsaWFyeUxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYXV4aWxpYXJ5LWxpbmUnKSE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vdXNlZG93bkxpc3RlbmVyID0gdGhpcy5yZW5kZXIyLmxpc3Rlbignd2luZG93JywgJ21vdXNlZG93bicsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlU3RhcnRQb3NpdGlvbiA9IHsgeDogZS54LCB5OiBlLnkgfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VEb3duVGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm1vdXNlRG93blRpbWVvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3VzZURvd25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXIyLmxpc3Rlbignd2luZG93JywgJ21vdXNlbW92ZScsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZ0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50aW1lciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWlUYWJsZURyYWcgJiYgdGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVEcmFnKGUsIHRoaXMuYWlUYWJsZURyYWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyMi5saXN0ZW4oJ3dpbmRvdycsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubW91c2VEb3duVGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm1vdXNlRG93blRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMubW91c2VEb3duVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW91c2VTdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZURyYWcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEcmFnRW5kKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRHJhZ1N0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkcmFnID0gdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuYWlUYWJsZS5kcmFnU3RhdGU/LigpO1xuXG4gICAgICAgIGlmICghZHJhZykge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlRHJhZyA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZHJhZy50eXBlID09PSBEcmFnVHlwZS5ub25lIHx8ICF0aGlzLnJlY3QgfHwgIXRoaXMuYXV4aWxpYXJ5TGluZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5haVRhYmxlRHJhZyA9IGRyYWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnKGU6IE1vdXNlRXZlbnQsIGRyYWc6IEFJVGFibGVEcmFnU3RhdGUpIHtcbiAgICAgICAgaWYgKGRyYWcudHlwZSA9PT0gRHJhZ1R5cGUubm9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVN0eWxlKCdibG9jaycpO1xuICAgICAgICBjb25zdCBtb3ZlWCA9IGUueCAtICh0aGlzLm1vdXNlU3RhcnRQb3NpdGlvbj8ueCB8fCAwKTtcbiAgICAgICAgY29uc3QgbW92ZVkgPSBlLnkgLSAodGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24/LnkgfHwgMCk7XG4gICAgICAgIHN3aXRjaCAoZHJhZy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLmZpZWxkOlxuICAgICAgICAgICAgICAgIHRoaXMubW92aW5nQ29sdW1uKGRyYWcsIG1vdmVYKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUucmVjb3JkOlxuICAgICAgICAgICAgICAgIHRoaXMubW92aW5nUmVjb3JkKGRyYWcsIG1vdmVZKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUuY29sdW1uV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZpbmdDb2x1bW5XaWR0aChkcmFnLCBtb3ZlWCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmluZ0NvbHVtbihkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFpVGFibGUgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZSA9IGRyYWcuY29vcmRpbmF0ZSE7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGFpVGFibGUuZ3JpZERhdGEoKS5maWVsZHM7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5jYWxjdWxhdGVEcmFnV2lkdGgoZmllbGRzLCBjb29yZGluYXRlLCBkcmFnKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlQ29sdW1uc0luZGV4TWFwKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbkluZGV4ID0gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChkcmFnLnNvdXJjZUlkcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUhKSB8fCAwO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5TdGFydFggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIC8vIFRPRE86IOebruWJjem7mOiupOesrOS4gOWIl+S4uuWGu+e7k+WIl++8jOWQjuacn+aUr+aMgeiuvue9ruWGu+e7k+WIl+mcgOimgeWkhOeQhlxuICAgICAgICBjb25zdCBpc1NvdXJjZUNvbHVtbkZyb3plbiA9IHNvdXJjZUNvbHVtbkluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCBmcm96ZW5Db2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoMCk7XG4gICAgICAgIGNvbnN0IHBvaW50ZXJYID0gbW92ZVggKyBzb3VyY2VDb2x1bW5TdGFydFg7XG4gICAgICAgIC8vIOaLluaLveS4reW/g+eCuVxuICAgICAgICBjb25zdCBkcmFnQ2VudGVyID0gc291cmNlQ29sdW1uV2lkdGggLyAyO1xuICAgICAgICBjb25zdCByZWN0TGVmdCA9IHBvaW50ZXJYIC0gKGlzU291cmNlQ29sdW1uRnJvemVuID8gMCA6IHNjcm9sbC54KTtcbiAgICAgICAgdGhpcy5zZXRSZWN0U3R5bGVzKHtcbiAgICAgICAgICAgIGN1cnNvcjogJ21vdmUnLFxuICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICBsZWZ0OiBgJHtyZWN0TGVmdH1weGBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbGFzdENvbHVtbk9mZnNldCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KGNvb3JkaW5hdGUuY29sdW1uQ291bnQgLSAxKTtcbiAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChjb29yZGluYXRlLmNvbHVtbkNvdW50IC0gMSk7XG5cbiAgICAgICAgbGV0IHRhcmdldENvbHVtbkluZGV4ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5TdGFydEluZGV4KHBvaW50ZXJYICsgKGlzU291cmNlQ29sdW1uRnJvemVuID8gc2Nyb2xsLnggOiAwKSArIGRyYWdDZW50ZXIpO1xuICAgICAgICBsZXQgdGFyZ2V0Q29sdW1uU3RhcnRYID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQodGFyZ2V0Q29sdW1uSW5kZXgpO1xuICAgICAgICBsZXQgaXNMYXN0Q29sdW1uID0gZmFsc2U7XG4gICAgICAgIC8vIOWkhOeQhuacgOWQjuS4gOWIl1xuICAgICAgICBpZiAocG9pbnRlclggKyBkcmFnQ2VudGVyID4gbGFzdENvbHVtbk9mZnNldCArIGxhc3RDb2x1bW5XaWR0aCkge1xuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uSW5kZXggPSBjb29yZGluYXRlLmNvbHVtbkNvdW50O1xuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uU3RhcnRYID0gbGFzdENvbHVtbk9mZnNldCArIGxhc3RDb2x1bW5XaWR0aDtcbiAgICAgICAgICAgIGlzTGFzdENvbHVtbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRhcmdldENvbHVtbkluZGV4ID49IDAgJiYgKHRhcmdldENvbHVtbkluZGV4IC0gc291cmNlQ29sdW1uSW5kZXggPiAxIHx8IHRhcmdldENvbHVtbkluZGV4IC0gc291cmNlQ29sdW1uSW5kZXggPCAwKSkgfHxcbiAgICAgICAgICAgIGlzTGFzdENvbHVtblxuICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBsaW5lTGVmdCA9IHRhcmdldENvbHVtblN0YXJ0WCAtIHNjcm9sbC54O1xuICAgICAgICAgICAgY29uc3QgbGluZUZvckZyb3plblggPSBsaW5lTGVmdCAtIGZyb3plbkNvbHVtbldpZHRoIC0gYWlUYWJsZS5jb250ZXh0IS5yb3dIZWFkV2lkdGgoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3REaXN0YW5jZUZyb3plblggPSByZWN0TGVmdCAtIGZyb3plbkNvbHVtbldpZHRoIC0gYWlUYWJsZS5jb250ZXh0IS5yb3dIZWFkV2lkdGgoKTtcbiAgICAgICAgICAgIGlmIChsaW5lRm9yRnJvemVuWCA8IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMocmVjdERpc3RhbmNlRnJvemVuWCkgPiBkcmFnQ2VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVMZWZ0ID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5PZmZzZXQoMCk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldENvbHVtbkluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRBdXhpbGlhcnlMaW5lU3R5bGVzKHtcbiAgICAgICAgICAgICAgICB3aWR0aDogJzJweCcsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGAke2xpbmVMZWZ0fXB4YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyDlkJHlj7Pnp7vliqjnm67moIflnKjnm67moIfliJfnmoTliY3kuIDliJdcbiAgICAgICAgICAgIGlmICh0YXJnZXRDb2x1bW5JbmRleCA+IHNvdXJjZUNvbHVtbkluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0Q29sdW1uSW5kZXggLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZERhdGEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogRHJhZ1R5cGUuZmllbGQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0SW5kZXg6IHRhcmdldENvbHVtbkluZGV4LFxuICAgICAgICAgICAgICAgIGZpZWxkSWRzOiBkcmFnLnNvdXJjZUlkcyxcbiAgICAgICAgICAgICAgICBmaWVsZHNJbmRleDogQXJyYXkuZnJvbShkcmFnLnNvdXJjZUlkcykubWFwKChpZCkgPT4gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChpZCkgfHwgMClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0QXV4aWxpYXJ5TGluZSgpO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmluZ0NvbHVtbldpZHRoKGRyYWc6IEFJVGFibGVEcmFnU3RhdGUsIG1vdmVYOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXRDdXJzb3JTdHlsZSgnY29sLXJlc2l6ZScpO1xuICAgICAgICBjb25zdCBhaVRhYmxlID0gdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuYWlUYWJsZTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlQ29sdW1uc0luZGV4TWFwKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbkluZGV4ID0gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChkcmFnLnNvdXJjZUlkcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUhKSB8fCAwO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5TdGFydFggPSBkcmFnLmNvb3JkaW5hdGUhLmdldENvbHVtbk9mZnNldChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbldpZHRoID0gZHJhZy5jb29yZGluYXRlIS5nZXRDb2x1bW5XaWR0aChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbCA9IGRyYWcuc2Nyb2xsIHx8IHsgeDogMCwgeTogMCB9O1xuICAgICAgICBjb25zdCBwb2ludGVyWCA9IG1vdmVYICsgc291cmNlQ29sdW1uU3RhcnRYO1xuICAgICAgICBjb25zdCBjb2xSZXNpemVYID0gcG9pbnRlclggLSAoc291cmNlQ29sdW1uSW5kZXggPT09IDAgPyAwIDogc2Nyb2xsLngpO1xuICAgICAgICBjb25zdCBsZWZ0ID0gYCR7Y29sUmVzaXplWCArIHNvdXJjZUNvbHVtbldpZHRofXB4YDtcbiAgICAgICAgdGhpcy5zZXRBdXhpbGlhcnlMaW5lU3R5bGVzKHtcbiAgICAgICAgICAgIHdpZHRoOiAnMnB4JyxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICBsZWZ0XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdnZWREYXRhID0ge1xuICAgICAgICAgICAgdHlwZTogRHJhZ1R5cGUuY29sdW1uV2lkdGgsXG4gICAgICAgICAgICBmaWVsZElkczogZHJhZy5zb3VyY2VJZHMsXG4gICAgICAgICAgICB3aWR0aDogTWF0aC5tYXgoTUlOX0NPTFVNTl9XSURUSCwgc291cmNlQ29sdW1uV2lkdGggKyBtb3ZlWClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmluZ1JlY29yZChkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFpVGFibGUgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZSA9IGRyYWcuY29vcmRpbmF0ZSE7XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZVJvd0luZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlUm93c0luZGV4TWFwKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZVJvd0lkID0gZHJhZy5zb3VyY2VJZHMudmFsdWVzKCkubmV4dCgpLnZhbHVlITtcbiAgICAgICAgY29uc3Qgc291cmNlUm93SW5kZXggPSB2aXNpYmxlUm93SW5kZXhNYXAuZ2V0KHNvdXJjZVJvd0lkKSB8fCAwO1xuICAgICAgICBjb25zdCBzb3VyY2VSb3dTdGFydFkgPSBjb29yZGluYXRlLmdldFJvd09mZnNldChzb3VyY2VSb3dJbmRleCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZVJvd0hlaWdodCA9IGNvb3JkaW5hdGUuZ2V0Um93SGVpZ2h0KHNvdXJjZVJvd0luZGV4KTtcbiAgICAgICAgY29uc3QgcG9pbnRlclkgPSBzb3VyY2VSb3dTdGFydFkgKyBtb3ZlWTtcbiAgICAgICAgdGhpcy5zZXRSZWN0U3R5bGVzKHtcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6IGAke3NvdXJjZVJvd0hlaWdodH1weGAsXG4gICAgICAgICAgICB0b3A6IGAke3BvaW50ZXJZIC0gc2Nyb2xsLnl9cHhgLFxuICAgICAgICAgICAgbGVmdDogJzAnXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkcmFnQ2VudGVyID0gc291cmNlUm93SGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgdGFyZ2V0Um93SW5kZXggPSBjb29yZGluYXRlLmdldFJvd1N0YXJ0SW5kZXgocG9pbnRlclkgKyBkcmFnQ2VudGVyKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Um93U3RhcnRZID0gY29vcmRpbmF0ZS5nZXRSb3dPZmZzZXQodGFyZ2V0Um93SW5kZXgpO1xuICAgICAgICBjb25zdCBsaW5lVG9wID0gdGFyZ2V0Um93U3RhcnRZIC0gc2Nyb2xsLnk7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAyO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoKHRhcmdldFJvd0luZGV4ID49IDAgJiYgc291cmNlUm93SW5kZXggPiB0YXJnZXRSb3dJbmRleCAmJiBzb3VyY2VSb3dJbmRleCAtIHRhcmdldFJvd0luZGV4ID4gMCkgfHxcbiAgICAgICAgICAgICAgICAoc291cmNlUm93SW5kZXggPCB0YXJnZXRSb3dJbmRleCAmJiB0YXJnZXRSb3dJbmRleCAtIHNvdXJjZVJvd0luZGV4ID4gMSkpICYmXG4gICAgICAgICAgICBsaW5lVG9wID4gQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQgLSBsaW5lSGVpZ2h0ICYmIC8vIOmZkOWItuWPr+inhuiMg+WbtOWGhVxuICAgICAgICAgICAgbGluZVRvcCA8IGNvb3JkaW5hdGUuY29udGFpbmVySGVpZ2h0IC0gbGluZUhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGBjYWxjKDEwMCUgLSAke0FJX1RBQkxFX1JPV19EUkFHX0lDT05fV0lEVEh9cHgpYCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGAke2xpbmVIZWlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIHRvcDogYCR7bGluZVRvcH1weGAsXG4gICAgICAgICAgICAgICAgbGVmdDogYCR7QUlfVEFCTEVfUk9XX0RSQUdfSUNPTl9XSURUSH1weGBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEcmFnVHlwZS5yZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVjb3JkSWRzOiBkcmFnLnNvdXJjZUlkcyxcbiAgICAgICAgICAgICAgICB0YXJnZXRJbmRleDogdGFyZ2V0Um93SW5kZXhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0QXV4aWxpYXJ5TGluZSgpO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZURyYWdFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdnZWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdFbmQuZW1pdCh7IC4uLnRoaXMuZHJhZ2dlZERhdGEgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhckRyYWdTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJEcmFnU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuc2V0RGlzcGxheVN0eWxlKCdub25lJyk7XG4gICAgICAgIHRoaXMuc2V0UmVjdFN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzAnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgICAgIGxlZnQ6ICcwJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRBdXhpbGlhcnlMaW5lU3R5bGVzKHtcbiAgICAgICAgICAgIHdpZHRoOiAnMCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICAgIHRvcDogJzAnLFxuICAgICAgICAgICAgbGVmdDogJzAnXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdnZWREYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURyYWdXaWR0aChmaWVsZHM6IGFueVtdLCBjb29yZGluYXRlOiBhbnksIGRyYWc6IEFJVGFibGVEcmFnU3RhdGUpOiBudW1iZXIge1xuICAgICAgICBsZXQgd2lkdGggPSAwO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZHJhZy5zb3VyY2VJZHMuaGFzKGZpZWxkLl9pZCkpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCArPSBjb29yZGluYXRlLmNvbHVtbkluZGljZXNTaXplTWFwW2luZGV4XSB8fCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGlzcGxheVN0eWxlKGRpc3BsYXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgZGlzcGxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDdXJzb3JTdHlsZShjdXJzb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXJzb3InLCBjdXJzb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UmVjdFN0eWxlcyhzdHlsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGVzKS5mb3JFYWNoKChbcHJvcCwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5yZWN0LCBwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyhzdHlsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGVzKS5mb3JFYWNoKChbcHJvcCwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5hdXhpbGlhcnlMaW5lLCBwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRBdXhpbGlhcnlMaW5lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEF1eGlsaWFyeUxpbmVTdHlsZXMoeyB3aWR0aDogMCwgaGVpZ2h0OiAwLCB0b3A6ICcwJywgbGVmdDogJzAnIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5tb3VzZWRvd25MaXN0ZW5lcikgdGhpcy5tb3VzZWRvd25MaXN0ZW5lcigpO1xuICAgICAgICBpZiAodGhpcy5tb3VzZW1vdmVMaXN0ZW5lcikgdGhpcy5tb3VzZW1vdmVMaXN0ZW5lcigpO1xuICAgICAgICBpZiAodGhpcy5tb3VzZXVwTGlzdGVuZXIpIHRoaXMubW91c2V1cExpc3RlbmVyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmVjdFwiPjwvZGl2PlxuPGRpdiBjbGFzcz1cImF1eGlsaWFyeS1saW5lXCI+PC9kaXY+Il19
@@ -83,12 +83,8 @@ export class AITableGridBase {
83
83
  this.aiTableGridFieldService.initAIFieldConfig(this.aiFieldConfig());
84
84
  AI_TABLE_GRID_FIELD_SERVICE_MAP.set(this.aiTable, this.aiTableGridFieldService);
85
85
  }
86
- addRecord() {
87
- const records = this.aiTable.gridData().records;
88
- const recordCount = records.length;
89
- this.aiAddRecord.emit({
90
- originId: recordCount > 0 ? records[records.length - 1]._id : ''
91
- });
86
+ addRecord(options) {
87
+ this.aiAddRecord.emit(options || {});
92
88
  }
93
89
  selectRecord(recordId) {
94
90
  this.aiTableGridSelectionService.selectRecord(recordId);
@@ -146,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
146
142
  changeDetection: ChangeDetectionStrategy.OnPush
147
143
  }]
148
144
  }] });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFJVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBTUgsZ0JBQWdCLEVBR2hCLHdCQUF3QixFQU0zQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSzNFLE9BQU8sRUFBcUIsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sUUFBUSxDQUFDOztBQVE5RSxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9JLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO1FBRTdDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRTNDLG9CQUFlLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBd0IsQ0FBQztRQUV6RCx1QkFBa0IsR0FBRyxLQUFLLEVBQWtELENBQUM7UUFFN0Usa0JBQWEsR0FBRyxLQUFLLEVBQWlCLENBQUM7UUFFdkMsZUFB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QyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDTCxDQUFDOytHQW5LUSxlQUFlO21HQUFmLGVBQWUsNnJFQUpkLEVBQUU7OzRGQUlILGVBQWU7a0JBTjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFNpZ25hbCxcbiAgICBXcml0YWJsZVNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEQkxfQ0xJQ0tfRURJVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBBZGRGaWVsZE9wdGlvbnMsXG4gICAgQWRkUmVjb3JkT3B0aW9ucyxcbiAgICBBSVRhYmxlRmllbGQsXG4gICAgQUlUYWJsZUZpZWxkcyxcbiAgICBBSVRhYmxlRmllbGRzU2l6ZU1hcCxcbiAgICBBSVRhYmxlRmllbGRUeXBlLFxuICAgIEFJVGFibGVSZWNvcmRzLFxuICAgIEFJVGFibGVSZWZlcmVuY2VzLFxuICAgIEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZSxcbiAgICBBSVRhYmxlVmFsdWUsXG4gICAgTW92ZUZpZWxkT3B0aW9ucyxcbiAgICBNb3ZlUmVjb3JkT3B0aW9ucyxcbiAgICBTZXRGaWVsZFdpZHRoT3B0aW9ucyxcbiAgICBVcGRhdGVGaWVsZFZhbHVlT3B0aW9uc1xufSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlfVEFCTEVfR1JJRF9GSUVMRF9TRVJWSUNFX01BUCwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBSUZpZWxkQ29uZmlnLCBBSVRhYmxlRmllbGRNZW51SXRlbSwgQUlUYWJsZUNvbnRleHRNZW51SXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkU2V0dGluZyB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLb0V2ZW50T2JqZWN0T3V0cHV0IH0gZnJvbSAnLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7IEFJVGFibGVHcmlkSTE4bktleSB9IGZyb20gJy4vdXRpbHMvaTE4bic7XG5pbXBvcnQgeyBBSVBsdWdpbiwgQUlUYWJsZSwgY3JlYXRlQUlUYWJsZSwgY3JlYXRlRGVmYXVsdEZpZWxkIH0gZnJvbSAnLi9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1ncmlkLWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVHcmlkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgYWlSZWNvcmRzID0gbW9kZWwucmVxdWlyZWQ8QUlUYWJsZVJlY29yZHM+KCk7XG5cbiAgICBhaUZpZWxkcyA9IG1vZGVsLnJlcXVpcmVkPEFJVGFibGVGaWVsZHM+KCk7XG5cbiAgICBhaUZpZWxkc1NpemVNYXAgPSBtb2RlbC5yZXF1aXJlZDxBSVRhYmxlRmllbGRzU2l6ZU1hcD4oKTtcblxuICAgIGFpQ29udGV4dE1lbnVJdGVtcyA9IGlucHV0PChhaVRhYmxlOiBBSVRhYmxlKSA9PiBBSVRhYmxlQ29udGV4dE1lbnVJdGVtW10+KCk7XG5cbiAgICBhaUZpZWxkQ29uZmlnID0gaW5wdXQ8QUlGaWVsZENvbmZpZz4oKTtcblxuICAgIGFpUmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBhaVJvd0RyYWdEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIGFpUGx1Z2lucyA9IGlucHV0PEFJUGx1Z2luW10+KCk7XG5cbiAgICBhaVJlZmVyZW5jZXMgPSBpbnB1dC5yZXF1aXJlZDxBSVRhYmxlUmVmZXJlbmNlcz4oKTtcblxuICAgIGFpQnVpbGRSZW5kZXJEYXRhRm4gPSBpbnB1dDwoYWlUYWJsZTogQUlUYWJsZSkgPT4gQUlUYWJsZVZhbHVlPigpO1xuXG4gICAgYWlHZXRJMThuVGV4dEJ5S2V5ID0gaW5wdXQ8KGtleTogQUlUYWJsZUdyaWRJMThuS2V5IHwgc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICBhaUtleXdvcmRzID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgQUlUYWJsZUZpZWxkVHlwZSA9IEFJVGFibGVGaWVsZFR5cGU7XG5cbiAgICBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUgPSBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGU7XG5cbiAgICBhaVRhYmxlITogQUlUYWJsZTtcblxuICAgIGlzU2VsZWN0ZWRBbGwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRSZWNvcmRzLnNpemUgPT09IHRoaXMuYWlSZWNvcmRzKCkubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgYWlUYWJsZUluaXRpYWxpemVkID0gb3V0cHV0PEFJVGFibGU+KCk7XG5cbiAgICBhaUFkZFJlY29yZCA9IG91dHB1dDxBZGRSZWNvcmRPcHRpb25zPigpO1xuXG4gICAgYWlBZGRGaWVsZCA9IG91dHB1dDxBZGRGaWVsZE9wdGlvbnM+KCk7XG5cbiAgICBhaU1vdmVGaWVsZCA9IG91dHB1dDxNb3ZlRmllbGRPcHRpb25zPigpO1xuXG4gICAgYWlVcGRhdGVGaWVsZFZhbHVlID0gb3V0cHV0PFVwZGF0ZUZpZWxkVmFsdWVPcHRpb25zPigpO1xuXG4gICAgYWlTZXRGaWVsZCA9IG91dHB1dDxBSVRhYmxlRmllbGQ+KCk7XG5cbiAgICBhaVNldEZpZWxkV2lkdGggPSBvdXRwdXQ8U2V0RmllbGRXaWR0aE9wdGlvbnM+KCk7XG5cbiAgICBhaU1vdmVSZWNvcmRzID0gb3V0cHV0PE1vdmVSZWNvcmRPcHRpb25zPigpO1xuXG4gICAgYWlDbGljayA9IG91dHB1dDxLb0V2ZW50T2JqZWN0T3V0cHV0PE1vdXNlRXZlbnQ+PigpO1xuXG4gICAgYWlEYkNsaWNrID0gb3V0cHV0PEtvRXZlbnRPYmplY3RPdXRwdXQ8TW91c2VFdmVudD4+KCk7XG5cbiAgICBmaWVsZE1lbnVzOiBTaWduYWw8QUlUYWJsZUZpZWxkTWVudUl0ZW1bXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTWVudXNGbiA9IHRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZE1lbnVzO1xuICAgICAgICBpZiAoZmllbGRNZW51c0ZuICYmIHRoaXMuYWlUYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkTWVudXNGbih0aGlzLmFpVGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcblxuICAgIG1vdXNlb3ZlclJlZiE6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGdyaWREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFpVGFibGUucmVjb3Jkc1dpbGxIaWRkZW4oKTtcbiAgICAgICAgaWYgKHRoaXMuYWlCdWlsZFJlbmRlckRhdGFGbiAmJiB0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4oKSAmJiB0aGlzLmFpVGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4oKSEodGhpcy5haVRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVjb3JkczogdGhpcy5haVJlY29yZHMoKSxcbiAgICAgICAgICAgIGZpZWxkczogdGhpcy5haUZpZWxkcygpLFxuICAgICAgICAgICAgZmllbGRzU2l6ZU1hcDogdGhpcy5haUZpZWxkc1NpemVNYXAoKVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCBhaVRhYmxlR3JpZEZpZWxkU2VydmljZSA9IGluamVjdChBSVRhYmxlR3JpZEZpZWxkU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0QUlUYWJsZSgpO1xuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgaW5pdEFJVGFibGUoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZSA9IGNyZWF0ZUFJVGFibGUodGhpcy5haVJlY29yZHMsIHRoaXMuYWlGaWVsZHMsIHRoaXMuZ3JpZERhdGEpO1xuICAgICAgICBpZiAodGhpcy5haUdldEkxOG5UZXh0QnlLZXkoKSkge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlLmdldEkxOG5UZXh0QnlLZXkgPSB0aGlzLmFpR2V0STE4blRleHRCeUtleSgpIGFzIChrZXk6IEFJVGFibGVHcmlkSTE4bktleSB8IHN0cmluZykgPT4gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWlQbHVnaW5zKCk/LmZvckVhY2goKHBsdWdpbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlID0gcGx1Z2luKHRoaXMuYWlUYWJsZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFpVGFibGVJbml0aWFsaXplZC5lbWl0KHRoaXMuYWlUYWJsZSk7XG4gICAgfVxuXG4gICAgaW5pdFNlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLmFpVGFibGUsIHRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZFJlbmRlcmVycyk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmluaXRpYWxpemUodGhpcy5haVRhYmxlKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5yZWdpc3RlckV2ZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UuaW5pdEFJRmllbGRDb25maWcodGhpcy5haUZpZWxkQ29uZmlnKCkpO1xuICAgICAgICBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQLnNldCh0aGlzLmFpVGFibGUsIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UpO1xuICAgIH1cblxuICAgIGFkZFJlY29yZCgpIHtcbiAgICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuYWlUYWJsZS5ncmlkRGF0YSgpLnJlY29yZHM7XG4gICAgICAgIGNvbnN0IHJlY29yZENvdW50ID0gcmVjb3Jkcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuYWlBZGRSZWNvcmQuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5JZDogcmVjb3JkQ291bnQgPiAwID8gcmVjb3Jkc1tyZWNvcmRzLmxlbmd0aCAtIDFdLl9pZCA6ICcnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGVjdFJlY29yZChyZWNvcmRJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdFJlY29yZChyZWNvcmRJZCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlU2VsZWN0QWxsKGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UudG9nZ2xlU2VsZWN0QWxsKGNoZWNrZWQpO1xuICAgIH1cblxuICAgIGFkZEZpZWxkKGdyaWRDb2x1bW5CbGFuaz86IEhUTUxFbGVtZW50LCBwb3NpdGlvbj86IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSkge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGNyZWF0ZURlZmF1bHRGaWVsZCh0aGlzLmFpVGFibGUsIEFJVGFibGVGaWVsZFR5cGUudGV4dCk7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSB0aGlzLmFpVGFibGVHcmlkRmllbGRTZXJ2aWNlLmVkaXRGaWVsZFByb3BlcnR5KHRoaXMuYWlUYWJsZSwge1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBpc1VwZGF0ZTogZmFsc2UsXG4gICAgICAgICAgICBvcmlnaW46IGdyaWRDb2x1bW5CbGFuayEsXG4gICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHBvcG92ZXJSZWYgJiYgIXRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZFNldHRpbmdDb21wb25lbnQpIHtcbiAgICAgICAgICAgIChwb3BvdmVyUmVmLmNvbXBvbmVudEluc3RhbmNlIGFzIEFJVGFibGVGaWVsZFNldHRpbmcpLmFkZEZpZWxkLnN1YnNjcmliZSgoZGVmYXVsdFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncmlkRGF0YSgpLmZpZWxkcztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZENvdW50ID0gZmllbGRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLmFpQWRkRmllbGQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbklkOiBmaWVsZENvdW50ID4gMCA/IGZpZWxkc1tmaWVsZHMubGVuZ3RoIC0gMV0uX2lkIDogJycsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3Vic2NyaWJlRXZlbnRzKCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmRibENsaWNrRXZlbnQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRibENsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5tb3VzZWRvd25FdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShtZXJnZVdpdGgodGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5nbG9iYWxNb3VzZWRvd25FdmVudCQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS51cGRhdGVTZWxlY3QoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRibENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGNlbGxEb20gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuZ3JpZC1jZWxsJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBjZWxsRG9tICYmIChjZWxsRG9tLmdldEF0dHJpYnV0ZSgndHlwZScpISBhcyBBSVRhYmxlRmllbGRUeXBlKTtcbiAgICAgICAgaWYgKHR5cGUgJiYgREJMX0NMSUNLX0VESVRfVFlQRS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5vcGVuRWRpdChjZWxsRG9tKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFJVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBTUgsZ0JBQWdCLEVBR2hCLHdCQUF3QixFQU0zQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSzNFLE9BQU8sRUFBcUIsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sUUFBUSxDQUFDOztBQVE5RSxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9JLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO1FBRTdDLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRTNDLG9CQUFlLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBd0IsQ0FBQztRQUV6RCx1QkFBa0IsR0FBRyxLQUFLLEVBQWtELENBQUM7UUFFN0Usa0JBQWEsR0FBRyxLQUFLLEVBQWlCLENBQUM7UUFFdkMsZUFB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UUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIFNpZ25hbCxcbiAgICBXcml0YWJsZVNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEQkxfQ0xJQ0tfRURJVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBBZGRGaWVsZE9wdGlvbnMsXG4gICAgQWRkUmVjb3JkT3B0aW9ucyxcbiAgICBBSVRhYmxlRmllbGQsXG4gICAgQUlUYWJsZUZpZWxkcyxcbiAgICBBSVRhYmxlRmllbGRzU2l6ZU1hcCxcbiAgICBBSVRhYmxlRmllbGRUeXBlLFxuICAgIEFJVGFibGVSZWNvcmRzLFxuICAgIEFJVGFibGVSZWZlcmVuY2VzLFxuICAgIEFJVGFibGVTZWxlY3RPcHRpb25TdHlsZSxcbiAgICBBSVRhYmxlVmFsdWUsXG4gICAgTW92ZUZpZWxkT3B0aW9ucyxcbiAgICBNb3ZlUmVjb3JkT3B0aW9ucyxcbiAgICBTZXRGaWVsZFdpZHRoT3B0aW9ucyxcbiAgICBVcGRhdGVGaWVsZFZhbHVlT3B0aW9uc1xufSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRFdmVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlfVEFCTEVfR1JJRF9GSUVMRF9TRVJWSUNFX01BUCwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBSUZpZWxkQ29uZmlnLCBBSVRhYmxlRmllbGRNZW51SXRlbSwgQUlUYWJsZUNvbnRleHRNZW51SXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkU2V0dGluZyB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLb0V2ZW50T2JqZWN0T3V0cHV0IH0gZnJvbSAnLi9hbmd1bGFyLWtvbnZhJztcbmltcG9ydCB7IEFJVGFibGVHcmlkSTE4bktleSB9IGZyb20gJy4vdXRpbHMvaTE4bic7XG5pbXBvcnQgeyBBSVBsdWdpbiwgQUlUYWJsZSwgY3JlYXRlQUlUYWJsZSwgY3JlYXRlRGVmYXVsdEZpZWxkIH0gZnJvbSAnLi9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1ncmlkLWJhc2UnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFJVGFibGVHcmlkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgYWlSZWNvcmRzID0gbW9kZWwucmVxdWlyZWQ8QUlUYWJsZVJlY29yZHM+KCk7XG5cbiAgICBhaUZpZWxkcyA9IG1vZGVsLnJlcXVpcmVkPEFJVGFibGVGaWVsZHM+KCk7XG5cbiAgICBhaUZpZWxkc1NpemVNYXAgPSBtb2RlbC5yZXF1aXJlZDxBSVRhYmxlRmllbGRzU2l6ZU1hcD4oKTtcblxuICAgIGFpQ29udGV4dE1lbnVJdGVtcyA9IGlucHV0PChhaVRhYmxlOiBBSVRhYmxlKSA9PiBBSVRhYmxlQ29udGV4dE1lbnVJdGVtW10+KCk7XG5cbiAgICBhaUZpZWxkQ29uZmlnID0gaW5wdXQ8QUlGaWVsZENvbmZpZz4oKTtcblxuICAgIGFpUmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBhaVJvd0RyYWdEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIGFpUGx1Z2lucyA9IGlucHV0PEFJUGx1Z2luW10+KCk7XG5cbiAgICBhaVJlZmVyZW5jZXMgPSBpbnB1dC5yZXF1aXJlZDxBSVRhYmxlUmVmZXJlbmNlcz4oKTtcblxuICAgIGFpQnVpbGRSZW5kZXJEYXRhRm4gPSBpbnB1dDwoYWlUYWJsZTogQUlUYWJsZSkgPT4gQUlUYWJsZVZhbHVlPigpO1xuXG4gICAgYWlHZXRJMThuVGV4dEJ5S2V5ID0gaW5wdXQ8KGtleTogQUlUYWJsZUdyaWRJMThuS2V5IHwgc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICBhaUtleXdvcmRzID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgQUlUYWJsZUZpZWxkVHlwZSA9IEFJVGFibGVGaWVsZFR5cGU7XG5cbiAgICBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGUgPSBBSVRhYmxlU2VsZWN0T3B0aW9uU3R5bGU7XG5cbiAgICBhaVRhYmxlITogQUlUYWJsZTtcblxuICAgIGlzU2VsZWN0ZWRBbGwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRSZWNvcmRzLnNpemUgPT09IHRoaXMuYWlSZWNvcmRzKCkubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgYWlUYWJsZUluaXRpYWxpemVkID0gb3V0cHV0PEFJVGFibGU+KCk7XG5cbiAgICBhaUFkZFJlY29yZCA9IG91dHB1dDxBZGRSZWNvcmRPcHRpb25zPigpO1xuXG4gICAgYWlBZGRGaWVsZCA9IG91dHB1dDxBZGRGaWVsZE9wdGlvbnM+KCk7XG5cbiAgICBhaU1vdmVGaWVsZCA9IG91dHB1dDxNb3ZlRmllbGRPcHRpb25zPigpO1xuXG4gICAgYWlVcGRhdGVGaWVsZFZhbHVlID0gb3V0cHV0PFVwZGF0ZUZpZWxkVmFsdWVPcHRpb25zPigpO1xuXG4gICAgYWlTZXRGaWVsZCA9IG91dHB1dDxBSVRhYmxlRmllbGQ+KCk7XG5cbiAgICBhaVNldEZpZWxkV2lkdGggPSBvdXRwdXQ8U2V0RmllbGRXaWR0aE9wdGlvbnM+KCk7XG5cbiAgICBhaU1vdmVSZWNvcmRzID0gb3V0cHV0PE1vdmVSZWNvcmRPcHRpb25zPigpO1xuXG4gICAgYWlDbGljayA9IG91dHB1dDxLb0V2ZW50T2JqZWN0T3V0cHV0PE1vdXNlRXZlbnQ+PigpO1xuXG4gICAgYWlEYkNsaWNrID0gb3V0cHV0PEtvRXZlbnRPYmplY3RPdXRwdXQ8TW91c2VFdmVudD4+KCk7XG5cbiAgICBmaWVsZE1lbnVzOiBTaWduYWw8QUlUYWJsZUZpZWxkTWVudUl0ZW1bXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTWVudXNGbiA9IHRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZE1lbnVzO1xuICAgICAgICBpZiAoZmllbGRNZW51c0ZuICYmIHRoaXMuYWlUYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkTWVudXNGbih0aGlzLmFpVGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcblxuICAgIG1vdXNlb3ZlclJlZiE6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGdyaWREYXRhID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFpVGFibGUucmVjb3Jkc1dpbGxIaWRkZW4oKTtcbiAgICAgICAgaWYgKHRoaXMuYWlCdWlsZFJlbmRlckRhdGFGbiAmJiB0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4oKSAmJiB0aGlzLmFpVGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFpQnVpbGRSZW5kZXJEYXRhRm4oKSEodGhpcy5haVRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVjb3JkczogdGhpcy5haVJlY29yZHMoKSxcbiAgICAgICAgICAgIGZpZWxkczogdGhpcy5haUZpZWxkcygpLFxuICAgICAgICAgICAgZmllbGRzU2l6ZU1hcDogdGhpcy5haUZpZWxkc1NpemVNYXAoKVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCBhaVRhYmxlR3JpZEZpZWxkU2VydmljZSA9IGluamVjdChBSVRhYmxlR3JpZEZpZWxkU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0QUlUYWJsZSgpO1xuICAgICAgICB0aGlzLmluaXRTZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgaW5pdEFJVGFibGUoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZSA9IGNyZWF0ZUFJVGFibGUodGhpcy5haVJlY29yZHMsIHRoaXMuYWlGaWVsZHMsIHRoaXMuZ3JpZERhdGEpO1xuICAgICAgICBpZiAodGhpcy5haUdldEkxOG5UZXh0QnlLZXkoKSkge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlLmdldEkxOG5UZXh0QnlLZXkgPSB0aGlzLmFpR2V0STE4blRleHRCeUtleSgpIGFzIChrZXk6IEFJVGFibGVHcmlkSTE4bktleSB8IHN0cmluZykgPT4gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWlQbHVnaW5zKCk/LmZvckVhY2goKHBsdWdpbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlID0gcGx1Z2luKHRoaXMuYWlUYWJsZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFpVGFibGVJbml0aWFsaXplZC5lbWl0KHRoaXMuYWlUYWJsZSk7XG4gICAgfVxuXG4gICAgaW5pdFNlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLmFpVGFibGUsIHRoaXMuYWlGaWVsZENvbmZpZygpPy5maWVsZFJlbmRlcmVycyk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmluaXRpYWxpemUodGhpcy5haVRhYmxlKTtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5yZWdpc3RlckV2ZW50cyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UuaW5pdEFJRmllbGRDb25maWcodGhpcy5haUZpZWxkQ29uZmlnKCkpO1xuICAgICAgICBBSV9UQUJMRV9HUklEX0ZJRUxEX1NFUlZJQ0VfTUFQLnNldCh0aGlzLmFpVGFibGUsIHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UpO1xuICAgIH1cblxuICAgIGFkZFJlY29yZChvcHRpb25zPzogQWRkUmVjb3JkT3B0aW9ucykge1xuICAgICAgICB0aGlzLmFpQWRkUmVjb3JkLmVtaXQob3B0aW9ucyB8fCB7fSk7XG4gICAgfVxuXG4gICAgc2VsZWN0UmVjb3JkKHJlY29yZElkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0UmVjb3JkKHJlY29yZElkKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTZWxlY3RBbGwoY2hlY2tlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS50b2dnbGVTZWxlY3RBbGwoY2hlY2tlZCk7XG4gICAgfVxuXG4gICAgYWRkRmllbGQoZ3JpZENvbHVtbkJsYW5rPzogSFRNTEVsZW1lbnQsIHBvc2l0aW9uPzogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gY3JlYXRlRGVmYXVsdEZpZWxkKHRoaXMuYWlUYWJsZSwgQUlUYWJsZUZpZWxkVHlwZS50ZXh0KTtcbiAgICAgICAgY29uc3QgcG9wb3ZlclJlZiA9IHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2UuZWRpdEZpZWxkUHJvcGVydHkodGhpcy5haVRhYmxlLCB7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIGlzVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgICAgIG9yaWdpbjogZ3JpZENvbHVtbkJsYW5rISxcbiAgICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocG9wb3ZlclJlZiAmJiAhdGhpcy5haUZpZWxkQ29uZmlnKCk/LmZpZWxkU2V0dGluZ0NvbXBvbmVudCkge1xuICAgICAgICAgICAgKHBvcG92ZXJSZWYuY29tcG9uZW50SW5zdGFuY2UgYXMgQUlUYWJsZUZpZWxkU2V0dGluZykuYWRkRmllbGQuc3Vic2NyaWJlKChkZWZhdWx0VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyaWREYXRhKCkuZmllbGRzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkQ291bnQgPSBmaWVsZHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuYWlBZGRGaWVsZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luSWQ6IGZpZWxkQ291bnQgPiAwID8gZmllbGRzW2ZpZWxkcy5sZW5ndGggLSAxXS5faWQgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdWJzY3JpYmVFdmVudHMoKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuZGJsQ2xpY2tFdmVudCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGJsQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm1vdXNlZG93bkV2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKG1lcmdlV2l0aCh0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmdsb2JhbE1vdXNlZG93bkV2ZW50JCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnVwZGF0ZVNlbGVjdChldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgY2VsbERvbSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5ncmlkLWNlbGwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgdHlwZSA9IGNlbGxEb20gJiYgKGNlbGxEb20uZ2V0QXR0cmlidXRlKCd0eXBlJykhIGFzIEFJVGFibGVGaWVsZFR5cGUpO1xuICAgICAgICBpZiAodHlwZSAmJiBEQkxfQ0xJQ0tfRURJVF9UWVBFLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm9wZW5FZGl0KGNlbGxEb20pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19