raise-common-lib 0.0.209 → 0.0.210

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 (75) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +18 -18
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/common-grid/index.component.js +2 -2
  7. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  8. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
  9. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +3 -3
  10. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  11. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  12. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  13. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  14. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  15. package/esm2015/lib/dashboard/pane-group-new.component.js +1 -1
  16. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  17. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
  18. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +2 -2
  19. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +3 -3
  20. package/esm5/lib/common-grid/index.component.js +2 -2
  21. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  22. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
  23. package/esm5/lib/dashboard/dialog-group/download/index.component.js +3 -3
  24. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  25. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  26. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  27. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  28. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  29. package/esm5/lib/dashboard/pane-group-new.component.js +1 -1
  30. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  31. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
  32. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +2 -2
  33. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +3 -3
  34. package/fesm2015/raise-common-lib.js +18 -18
  35. package/fesm2015/raise-common-lib.js.map +1 -1
  36. package/fesm5/raise-common-lib.js +18 -18
  37. package/fesm5/raise-common-lib.js.map +1 -1
  38. package/package.json +1 -1
  39. package/raise-common-lib.metadata.json +1 -1
  40. package/src/assets/img/arrow_right.svg +4 -4
  41. package/src/assets/img/calendar-disabled.svg +6 -6
  42. package/src/assets/img/calendar.svg +6 -6
  43. package/src/assets/img/calendar_arrow_down.svg +3 -3
  44. package/src/assets/img/calendar_arrow_left.svg +3 -3
  45. package/src/assets/img/calendar_arrow_right.svg +3 -3
  46. package/src/assets/img/calendar_arrow_up.svg +3 -3
  47. package/src/assets/img/checked-vector.svg +3 -3
  48. package/src/assets/img/dialog-close.svg +4 -4
  49. package/src/assets/img/dialog-grow.svg +6 -6
  50. package/src/assets/img/dialog-shrink.svg +6 -6
  51. package/src/assets/img/plus.svg +4 -4
  52. package/src/assets/img/search.svg +4 -4
  53. package/src/assets/img/shrink-icon.svg +6 -6
  54. package/src/assets/img/time-disabled.svg +4 -4
  55. package/src/assets/img/time.svg +4 -4
  56. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  57. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  58. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  59. package/src/assets/img/toolbar-action-combine.svg +4 -4
  60. package/src/assets/img/toolbar-action-edit.svg +4 -4
  61. package/src/assets/img/toolbar-action-expand.svg +7 -7
  62. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  63. package/src/assets/img/toolbar-action-lock.svg +6 -6
  64. package/src/assets/img/toolbar-action-preview.svg +7 -7
  65. package/src/assets/img/toolbar-action-publish.svg +5 -5
  66. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  67. package/src/assets/img/toolbar-action-rename.svg +7 -7
  68. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  69. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  70. package/src/assets/img/toolbar-action-settle.svg +7 -7
  71. package/src/assets/img/toolbar-action-share.svg +5 -5
  72. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  73. package/src/assets/img/toolbar-action-sync.svg +4 -4
  74. package/src/assets/img/toolbar-action-template.svg +6 -6
  75. package/src/assets/img/toolbar-action-workflow.svg +9 -9
@@ -614,7 +614,7 @@ export class CommonGridComponent {
614
614
  CommonGridComponent.decorators = [
615
615
  { type: Component, args: [{
616
616
  selector: "rs-common-grid",
617
- template: "<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"dataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"dataSource && dataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
617
+ template: "<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"dataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"dataSource && dataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n >\r\n <ng-template #headerTemplate let-data *ngIf=\"item.headerTemplate\">\r\n <div [innerHTML]=\"item.headerTemplate\"></div>\r\n </ng-template>\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
618
618
  styles: [""]
619
619
  }] }
620
620
  ];
@@ -795,4 +795,4 @@ if (false) {
795
795
  */
796
796
  CommonGridComponent.prototype.ref;
797
797
  }
798
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBUy9CLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFpRjlCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUVqQyxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLDJCQUEyQjs7O1FBRTlDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxFQUFFLENBQUM7O1FBRWhCLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQyxtQkFBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRWxDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFJaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBRyxxQkFBcUIsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLG1DQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUE0Qjs7SUFDNUIsK0NBQTJDOztJQUUzQyxnREFBaUQ7O0lBQ2pELDZDQUE4Qzs7SUFDOUMsMENBQTJDOztJQUMzQyw0Q0FBNkM7O0lBQzdDLDZDQUE4Qzs7SUFDOUMsNENBQTZDOztJQUM3Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsMENBQTJDOztJQUMzQywwQ0FBMkM7O0lBQzNDLDJDQUE0Qzs7SUFDNUMsd0NBQXlDOztJQUN6QyxrREFBbUQ7O0lBQ25ELDJDQUE0Qzs7SUFDNUMsc0NBQXVDOztJQUN2QyxzQ0FBdUM7O0lBQ3ZDLDJDQUE0Qzs7SUFFNUMsdUNBQWM7O0lBQ2QsMENBQW9COztJQUNwQix3Q0FBZTs7SUFDZix3Q0FBMkI7O0lBRTNCLDBDQUFtQjs7SUFrVm5CLHVDQVFFOzs7OztJQXhWVSxrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5pbXBvcnQgeyB0aW1lcyB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWlucHV0c1wiO1xyXG5pbXBvcnQgeyBJQWN0aW9uTWVudUl0ZW0sIElDb2x1bW5GaWVsZCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKFwiZ3JpZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgZ3JpZDogR3JpZENvbXBvbmVudDtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3ggPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZGVuTG9hZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aG9yaXplZCA9IHRydWU7IC8vIERhdGFzZXTmmK/lkKbmjojmnYPvvIzmnKrmjojmnYPliJnmmL7npLrmnYPpmZDplJnor6/mj5DnpLpcclxuICAvLyBvbmx5IHVzZSBmb3IgbG9jYWwgZGF0YSBwYWdpbmF0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0ZWREaWZmS2V5ID0gXCJcIjtcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gXCJcIjtcclxuICAvLyDov5nnjqnmhI/lv4XloavvvIzkuI3nhLZmaWx0ZXIgY29sdW1uQ2hvb3NlcumDveS8muaKpemUmVxyXG4gIEBJbnB1dCgpIGdyaWRJZCA9IFwiZ3JpZFwiO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZVNldHRpbmdzID0geyBtb2RlOiBcIkF1dG9cIiB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiBcIk1lbnVcIiB9O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgZmllbGRzOiBJQ29sdW1uRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcclxuICBASW5wdXQoKSBlZGl0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcGFnZVNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGFsbG93UGFnaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd1Jvd0RyYWdBbmREcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSBcIkVsbGlwc2lzV2l0aFRvb2x0aXBcIjtcclxuICBASW5wdXQoKSBjaGVja0JveFdpZHRoID0gMzI7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjaGlsZEdyaWQ7XHJcbiAgQElucHV0KCkgZnJvemVuQ29sdW1uczsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNvbHVtbkNob29zZXJTZXR0aW5ncztcclxuXHJcbiAgLyoqXHJcblx0ICogU2FtcGxlOiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIlByZXZpZXdcIixcclxuXHRcdFx0XHR0YXJnZXQ6IFwiLmUtY29udGVudFwiLFxyXG5cdFx0XHRcdGlkOiBcInByZXZpZXctaWNvblwiLFxyXG5cdFx0XHRcdGljb25Dc3M6IFwicHJldmlld1wiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dGV4dDogXCJEb3dubG9hZFwiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwiZG93bmxvYWQtaWNvblwiLFxyXG5cdFx0XHRcdGljb25Dc3M6IFwiZG93bmxvYWRcIixcclxuXHRcdFx0fVxyXG5cdFx0XVxyXG5cdFx055So5LqO5a6a5LmJcm935LitIOeCueWHu+S6i+S7tlxyXG5cdCAqL1xyXG4gIEBJbnB1dCgpIGNvbnRleHRNZW51SXRlbXM6IElBY3Rpb25NZW51SXRlbVtdID0gW107XHJcbiAgLy8gQElucHV0KCkgc2VsZWN0aW9uU2V0dGluZ3MgPSB7IGNoZWNrYm94T25seTogdHJ1ZSwgdHlwZTogXCJNdWx0aXBsZVwiIH07XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICB0eXBlOiBcIk11bHRpcGxlXCIsXHJcbiAgICAvLyBwZXJzaXN0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgY2hlY2tib3hPbmx5OiB0cnVlLFxyXG4gIH07XHJcbiAgQElucHV0KCkgYWx3YXlzU2hvd0NoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVmYXVsdFJlY29yZDogYW55O1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTeXN0ZW1Sb3c6IGJvb2xlYW4gPSBmYWxzZTsgLy8g56aB55SoSXNTeXRlbSA9IHRydWXnmoTmlbTooYxcclxuXHJcbiAgQE91dHB1dCgpIHJlY29yZERvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25Db21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Rlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Rlc2VsZWN0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25IYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeUNlbGxJbmZvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWNvcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQmVnaW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RhdGFCb3VuZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBleHBvcnRRdWVyeUNlbGxJbmZvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Ryb3AgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RyYWcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgc2VsZWN0SWQgPSBbXTtcclxuICBzdGFydFBhZ2luZyA9IGZhbHNlO1xyXG4gIGluZGV4TGlzdCA9IFtdO1xyXG4gIGNsYXNzTmFtZSA9IFwiZ3JpZC1sb2FkaW5nXCI7XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuTG9hZGVkKSB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLmdyaWRJZCA9XHJcbiAgICAgIHRoaXMuZ3JpZElkICsgRGF0ZS5ub3coKSArIFwiX1wiICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgNSk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4OyAvLyBvciBhIHVuaXF1ZSBpZGVudGlmaWVyIGluIHlvdXIgb2JqZWN0XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgJiYgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5hbGxvd1BhZ2luZyAmJlxyXG4gICAgICAgIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUubGVuZ3RoICYmXHJcbiAgICAgICAgIXRoaXMucGFnZVNldHRpbmdzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGFnZVNldHRpbmdzID1cclxuICAgICAgICAgIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUubGVuZ3RoID4gOVxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplczogW1wiQWxsXCIsIFwiMjVcIiwgXCI1MFwiLCBcIjEwMFwiXSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2xvYWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuYXV0aG9yaXplZCkge1xyXG4gICAgICAodGhpcy5ncmlkLmxvY2FsZU9iaiBhcyBhbnkpLmxvY2FsZVN0cmluZ3MuRW1wdHlSZWNvcmQgPVxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24uWU9VX0RPX05PVF9IQVZFX1RIRV9EQVRBU0VUX1BFUk1JU1NJT04gfHxcclxuICAgICAgICBcIllvdSBkb24ndCBoYXZlIHRoZSBkYXRhc2V0IHBlcm1pc3Npb24gdG8gdmlldyB0aGUgcmVjb3JkLlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2RhdGFCb3VuZChhcmdzOiBhbnkpIHtcclxuICAgIC8vIOaVtOS4que7hOS7tuWKoOi9veWujOaIkOaXtueahOWbnuiwg+WHveaVsFxyXG4gICAgdmFyIHBhZ2VyQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lLXBhZ2VyY29udGFpbmVyXCIpO1xyXG4gICAgaWYgKHBhZ2VyQ29udGFpbmVyKSB7XHJcbiAgICAgIHZhciBsaW5rRWxlbWVudHMgPSBwYWdlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmUtbGlua1wiKTtcclxuICAgICAgbGlua0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImhyZWZcIik7IC8vIFNNUDItMTAzMTAg5Yig6Zmk5YiG6aG15Zmo55qEaHJlZuWxnuaAp1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGFCb3VuZC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2V4cG9ydFF1ZXJ5Q2VsbEluZm8oYXJncykge1xyXG4gICAgdGhpcy5leHBvcnRRdWVyeUNlbGxJbmZvLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcm93RHJhZyhhcmdzKSB7XHJcbiAgICB0aGlzLnJvd0RyYWcuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yb3dEcmFnU3RhcnQoYXJncykge1xyXG4gICAgdGhpcy5yb3dEcmFnU3RhcnQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmREb3VibGVDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkRG91YmxlQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0Rlc2VsZWN0aW5nKCRldmVudCkge1xyXG4gICAgdGhpcy5yb3dEZXNlbGVjdGluZy5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG5cdCAqIFtzZWxlY3Rpb25TZXR0aW5nc109XCJ7IGNoZWNrYm94T25seTogdHJ1ZSB9XCJcclxuXHQgICBbc2hvd0NoZWNrQm94XT1cInRydWVcIlxyXG5cdCAgIOaOp+S7tuS9v+eUqOaXtu+8jOW/hemhu+mFjee9ruS4iumdouS4pOS4quWxnuaAp++8jOWQpuWIme+8jOWFqOmAieS8muWkseaViFxyXG5cdCAqL1xyXG4gIF9yb3dTZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgaWYgKCRldmVudC5kYXRhICYmICRldmVudC5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goJGV2ZW50LmRhdGEpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAodGhpcy5zdGFydFBhZ2luZykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IFtdO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IHRoaXMuc2VsZWN0SWQuZmlsdGVyKFxyXG4gICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5zZWxlY3RlZERpZmZLZXldICE9PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGVzZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfb25Db250ZXh0TWVudShhcmdzKSB7XHJcbiAgICB0aGlzLm9uQ29udGV4dE1lbnUuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25CZWdpbihhcmdzKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgIChhcmdzLnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzZWFyY2hpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PSBcImZpbHRlcmNob2ljZXJlcXVlc3RcIiB8fFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcnNlYXJjaGJlZ2luXCJcclxuICAgICkge1xyXG4gICAgICBhcmdzLmZpbHRlckNob2ljZUNvdW50ID0gMTUwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25CZWdpbi5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGtleXdvcmRzKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VhcmNoKGtleXdvcmRzKTtcclxuICB9XHJcbiAgc2VsZWN0Um93cyhpbmRleExpc3Q6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyhpbmRleExpc3QpO1xyXG4gIH1cclxuICBzZWxlY3RSb3coaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coaW5kZXgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50Vmlld1JlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9taXNlQ2VsbCgkZXZlbnQpIHtcclxuICAgIHRoaXMucXVlcnlDZWxsSW5mby5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudU9wZW4oYXJncz86IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YSA9IChhcmdzIGFzIEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB8IGFueSkucm93SW5mby5yb3dEYXRhO1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIGFyZ3MuY2FuY2VsID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVuYWJsZUl0ZW1zID0gW107XHJcbiAgICBsZXQgaGlkZUl0ZW1zID0gW107XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUucmVmcmVzaCgpOyAvLyDmr4/mrKHngrnlh7vmjInpkq7lvLnnqpfliY3pnIDlho3mrKHliJ3lp4vljJbnirbmgIEg5ZCm5YiZ5LiN5pu05paw77ybXHJcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogSUFjdGlvbk1lbnVJdGVtKSA9PiB7XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrmRpc2FibGVk55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmRpc2FibGVkIHx8XHJcbiAgICAgICAgKGRhdGEuZGlzYWJsZUl0ZW0gJiYgZGF0YS5kaXNhYmxlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBlbmFibGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKu6ZyA6KaBaGlkZeeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5pc0hpZGUgfHxcclxuICAgICAgICAoZGF0YS5oaWRlSXRlbSAmJiBkYXRhLmhpZGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGhpZGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhlbmFibGVJdGVtcywgZmFsc2UpO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhoaWRlSXRlbXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25IYW5kbGVyKCRldmVudCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlci5lbWl0KCRldmVudCk7XHJcbiAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hvb3NlUmVjb3JkcygpIHtcclxuICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkuZm9yRWFjaCgocm93OiBhbnksIGkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByb3cgJiZcclxuICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSByb3dbdGhpcy5zZWxlY3RlZERpZmZLZXldICYmXHJcbiAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKHRoaXMuaW5kZXhMaXN0KTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmRDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2goKTtcclxuICB9XHJcbiAgX3Jvd1NlbGVjdGluZyhlKSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZy5lbWl0KGUpO1xyXG4gIH1cclxuICByZWZyZXNoQ29sdW1ucygpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoQ29sdW1ucygpO1xyXG4gIH1cclxuICByZWZyZXNoSGVhZGVyKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hIZWFkZXIoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXM/KSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBvblJvd0Ryb3AoZSkge1xyXG4gICAgdGhpcy5yb3dEcm9wLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBfcm93RGF0YUJvdW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVN5c3RlbVJvdyAmJiAkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5Jc1N5c3RlbSkge1xyXG4gICAgICAkZXZlbnQucm93LmNsYXNzTGlzdC5hZGQoXCJlLWRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEYXRhQm91bmQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmdyaWQuY2xlYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIGV4Y2VsRXhwb3J0KCkge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmFkZFJlY29yZCh7IC4uLnRoaXMuZGVmYXVsdFJlY29yZCwgaXNOZXc6IHRydWUgfSwgMCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuZW5kRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEl0ZW0oaW5kZXgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgdmFyIHNlbGVjdGVkUmVjb3JkID0gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpWzBdIGFzIGFueTtcclxuICAgIHRoaXMuZ3JpZC5kZWxldGVSZWNvcmQoc2VsZWN0ZWRSZWNvcmQgYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5jbG9zZUVkaXQoKTtcclxuICAgIHRoaXMuZGVsZXRlSXRlbShpbmRleCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbml0TGlzdCA9IChudW0gPSAyNSwga2V5ID0gXCJJZFwiKSA9PiB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICB0aW1lcyhudW0sIChpKSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgW2tleV06IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9O1xyXG4gIHB1YmxpYyBzaG93TG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
798
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBUy9CLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFpRjlCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBOUVqQyxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLDJCQUEyQjs7O1FBRTlDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxFQUFFLENBQUM7O1FBRWhCLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQyxtQkFBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRWxDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBQzVCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFJaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBRyxxQkFBcUIsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLG1DQUFtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUE0Qjs7SUFDNUIsK0NBQTJDOztJQUUzQyxnREFBaUQ7O0lBQ2pELDZDQUE4Qzs7SUFDOUMsMENBQTJDOztJQUMzQyw0Q0FBNkM7O0lBQzdDLDZDQUE4Qzs7SUFDOUMsNENBQTZDOztJQUM3Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsMENBQTJDOztJQUMzQywwQ0FBMkM7O0lBQzNDLDJDQUE0Qzs7SUFDNUMsd0NBQXlDOztJQUN6QyxrREFBbUQ7O0lBQ25ELDJDQUE0Qzs7SUFDNUMsc0NBQXVDOztJQUN2QyxzQ0FBdUM7O0lBQ3ZDLDJDQUE0Qzs7SUFFNUMsdUNBQWM7O0lBQ2QsMENBQW9COztJQUNwQix3Q0FBZTs7SUFDZix3Q0FBMkI7O0lBRTNCLDBDQUFtQjs7SUFrVm5CLHVDQVFFOzs7OztJQXhWVSxrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5pbXBvcnQgeyB0aW1lcyB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWlucHV0c1wiO1xyXG5pbXBvcnQgeyBJQWN0aW9uTWVudUl0ZW0sIElDb2x1bW5GaWVsZCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKFwiZ3JpZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgZ3JpZDogR3JpZENvbXBvbmVudDtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3ggPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZGVuTG9hZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aG9yaXplZCA9IHRydWU7IC8vIERhdGFzZXTmmK/lkKbmjojmnYPvvIzmnKrmjojmnYPliJnmmL7npLrmnYPpmZDplJnor6/mj5DnpLpcclxuICAvLyBvbmx5IHVzZSBmb3IgbG9jYWwgZGF0YSBwYWdpbmF0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0ZWREaWZmS2V5ID0gXCJcIjtcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gXCJcIjtcclxuICAvLyDov5nnjqnmhI/lv4XloavvvIzkuI3nhLZmaWx0ZXIgY29sdW1uQ2hvb3NlcumDveS8muaKpemUmVxyXG4gIEBJbnB1dCgpIGdyaWRJZCA9IFwiZ3JpZFwiO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZVNldHRpbmdzID0geyBtb2RlOiBcIkF1dG9cIiB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiBcIk1lbnVcIiB9O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgZmllbGRzOiBJQ29sdW1uRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcclxuICBASW5wdXQoKSBlZGl0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcGFnZVNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGFsbG93UGFnaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd1Jvd0RyYWdBbmREcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSBcIkVsbGlwc2lzV2l0aFRvb2x0aXBcIjtcclxuICBASW5wdXQoKSBjaGVja0JveFdpZHRoID0gMzI7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjaGlsZEdyaWQ7XHJcbiAgQElucHV0KCkgZnJvemVuQ29sdW1uczsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNvbHVtbkNob29zZXJTZXR0aW5ncztcclxuXHJcbiAgLyoqXHJcblx0ICogU2FtcGxlOiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIlByZXZpZXdcIixcclxuXHRcdFx0XHR0YXJnZXQ6IFwiLmUtY29udGVudFwiLFxyXG5cdFx0XHRcdGlkOiBcInByZXZpZXctaWNvblwiLFxyXG5cdFx0XHRcdGljb25Dc3M6IFwicHJldmlld1wiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0dGV4dDogXCJEb3dubG9hZFwiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwiZG93bmxvYWQtaWNvblwiLFxyXG5cdFx0XHRcdGljb25Dc3M6IFwiZG93bmxvYWRcIixcclxuXHRcdFx0fVxyXG5cdFx0XVxyXG5cdFx055So5LqO5a6a5LmJcm935LitIOeCueWHu+S6i+S7tlxyXG5cdCAqL1xyXG4gIEBJbnB1dCgpIGNvbnRleHRNZW51SXRlbXM6IElBY3Rpb25NZW51SXRlbVtdID0gW107XHJcbiAgLy8gQElucHV0KCkgc2VsZWN0aW9uU2V0dGluZ3MgPSB7IGNoZWNrYm94T25seTogdHJ1ZSwgdHlwZTogXCJNdWx0aXBsZVwiIH07XHJcbiAgQElucHV0KCkgc2VsZWN0aW9uU2V0dGluZ3MgPSB7XHJcbiAgICB0eXBlOiBcIk11bHRpcGxlXCIsXHJcbiAgICAvLyBwZXJzaXN0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgY2hlY2tib3hPbmx5OiB0cnVlLFxyXG4gIH07XHJcbiAgQElucHV0KCkgYWx3YXlzU2hvd0NoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVmYXVsdFJlY29yZDogYW55O1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTeXN0ZW1Sb3c6IGJvb2xlYW4gPSBmYWxzZTsgLy8g56aB55SoSXNTeXRlbSA9IHRydWXnmoTmlbTooYxcclxuXHJcbiAgQE91dHB1dCgpIHJlY29yZERvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25Db21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Rlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Rlc2VsZWN0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25IYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeUNlbGxJbmZvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWNvcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQmVnaW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RhdGFCb3VuZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBleHBvcnRRdWVyeUNlbGxJbmZvID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0Ryb3AgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RyYWcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd0RyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgc2VsZWN0SWQgPSBbXTtcclxuICBzdGFydFBhZ2luZyA9IGZhbHNlO1xyXG4gIGluZGV4TGlzdCA9IFtdO1xyXG4gIGNsYXNzTmFtZSA9IFwiZ3JpZC1sb2FkaW5nXCI7XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuTG9hZGVkKSB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLmdyaWRJZCA9XHJcbiAgICAgIHRoaXMuZ3JpZElkICsgRGF0ZS5ub3coKSArIFwiX1wiICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgNSk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4OyAvLyBvciBhIHVuaXF1ZSBpZGVudGlmaWVyIGluIHlvdXIgb2JqZWN0XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgJiYgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5hbGxvd1BhZ2luZyAmJlxyXG4gICAgICAgIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUubGVuZ3RoICYmXHJcbiAgICAgICAgIXRoaXMucGFnZVNldHRpbmdzXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMucGFnZVNldHRpbmdzID1cclxuICAgICAgICAgIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUubGVuZ3RoID4gOVxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplczogW1wiQWxsXCIsIFwiMjVcIiwgXCI1MFwiLCBcIjEwMFwiXSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2xvYWQoKSB7XHJcbiAgICBpZiAoIXRoaXMuYXV0aG9yaXplZCkge1xyXG4gICAgICAodGhpcy5ncmlkLmxvY2FsZU9iaiBhcyBhbnkpLmxvY2FsZVN0cmluZ3MuRW1wdHlSZWNvcmQgPVxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24uWU9VX0RPX05PVF9IQVZFX1RIRV9EQVRBU0VUX1BFUk1JU1NJT04gfHxcclxuICAgICAgICBcIllvdSBkb24ndCBoYXZlIHRoZSBkYXRhc2V0IHBlcm1pc3Npb24gdG8gdmlldyB0aGUgcmVjb3JkLlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX2RhdGFCb3VuZChhcmdzOiBhbnkpIHtcclxuICAgIC8vIOaVtOS4que7hOS7tuWKoOi9veWujOaIkOaXtueahOWbnuiwg+WHveaVsFxyXG4gICAgdmFyIHBhZ2VyQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lLXBhZ2VyY29udGFpbmVyXCIpO1xyXG4gICAgaWYgKHBhZ2VyQ29udGFpbmVyKSB7XHJcbiAgICAgIHZhciBsaW5rRWxlbWVudHMgPSBwYWdlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLmUtbGlua1wiKTtcclxuICAgICAgbGlua0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImhyZWZcIik7IC8vIFNNUDItMTAzMTAg5Yig6Zmk5YiG6aG15Zmo55qEaHJlZuWxnuaAp1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGFCb3VuZC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2V4cG9ydFF1ZXJ5Q2VsbEluZm8oYXJncykge1xyXG4gICAgdGhpcy5leHBvcnRRdWVyeUNlbGxJbmZvLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcm93RHJhZyhhcmdzKSB7XHJcbiAgICB0aGlzLnJvd0RyYWcuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yb3dEcmFnU3RhcnQoYXJncykge1xyXG4gICAgdGhpcy5yb3dEcmFnU3RhcnQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmREb3VibGVDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkRG91YmxlQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0Rlc2VsZWN0aW5nKCRldmVudCkge1xyXG4gICAgdGhpcy5yb3dEZXNlbGVjdGluZy5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG5cdCAqIFtzZWxlY3Rpb25TZXR0aW5nc109XCJ7IGNoZWNrYm94T25seTogdHJ1ZSB9XCJcclxuXHQgICBbc2hvd0NoZWNrQm94XT1cInRydWVcIlxyXG5cdCAgIOaOp+S7tuS9v+eUqOaXtu+8jOW/hemhu+mFjee9ruS4iumdouS4pOS4quWxnuaAp++8jOWQpuWIme+8jOWFqOmAieS8muWkseaViFxyXG5cdCAqL1xyXG4gIF9yb3dTZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgaWYgKCRldmVudC5kYXRhICYmICRldmVudC5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkLnB1c2goJGV2ZW50LmRhdGEpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RlZCgkZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGlmZktleSkge1xyXG4gICAgICBpZiAodGhpcy5zdGFydFBhZ2luZykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoJGV2ZW50LmlzSGVhZGVyQ2hlY2tib3hDbGlja2VkICYmIEFycmF5LmlzQXJyYXkoJGV2ZW50LmRhdGEpKSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IFtdO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZCA9IHRoaXMuc2VsZWN0SWQuZmlsdGVyKFxyXG4gICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5zZWxlY3RlZERpZmZLZXldICE9PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSAkZXZlbnQuZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV1cclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93RGVzZWxlY3RlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfb25Db250ZXh0TWVudShhcmdzKSB7XHJcbiAgICB0aGlzLm9uQ29udGV4dE1lbnUuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25CZWdpbihhcmdzKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgIChhcmdzLnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzZWFyY2hpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PSBcImZpbHRlcmNob2ljZXJlcXVlc3RcIiB8fFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcnNlYXJjaGJlZ2luXCJcclxuICAgICkge1xyXG4gICAgICBhcmdzLmZpbHRlckNob2ljZUNvdW50ID0gMTUwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25CZWdpbi5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGtleXdvcmRzKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VhcmNoKGtleXdvcmRzKTtcclxuICB9XHJcbiAgc2VsZWN0Um93cyhpbmRleExpc3Q6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyhpbmRleExpc3QpO1xyXG4gIH1cclxuICBzZWxlY3RSb3coaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coaW5kZXgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50Vmlld1JlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9taXNlQ2VsbCgkZXZlbnQpIHtcclxuICAgIHRoaXMucXVlcnlDZWxsSW5mby5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudU9wZW4oYXJncz86IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YSA9IChhcmdzIGFzIEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB8IGFueSkucm93SW5mby5yb3dEYXRhO1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIGFyZ3MuY2FuY2VsID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVuYWJsZUl0ZW1zID0gW107XHJcbiAgICBsZXQgaGlkZUl0ZW1zID0gW107XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUucmVmcmVzaCgpOyAvLyDmr4/mrKHngrnlh7vmjInpkq7lvLnnqpfliY3pnIDlho3mrKHliJ3lp4vljJbnirbmgIEg5ZCm5YiZ5LiN5pu05paw77ybXHJcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogSUFjdGlvbk1lbnVJdGVtKSA9PiB7XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrmRpc2FibGVk55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmRpc2FibGVkIHx8XHJcbiAgICAgICAgKGRhdGEuZGlzYWJsZUl0ZW0gJiYgZGF0YS5kaXNhYmxlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBlbmFibGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKu6ZyA6KaBaGlkZeeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5pc0hpZGUgfHxcclxuICAgICAgICAoZGF0YS5oaWRlSXRlbSAmJiBkYXRhLmhpZGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGhpZGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhlbmFibGVJdGVtcywgZmFsc2UpO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhoaWRlSXRlbXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25IYW5kbGVyKCRldmVudCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlci5lbWl0KCRldmVudCk7XHJcbiAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hvb3NlUmVjb3JkcygpIHtcclxuICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkuZm9yRWFjaCgocm93OiBhbnksIGkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByb3cgJiZcclxuICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSByb3dbdGhpcy5zZWxlY3RlZERpZmZLZXldICYmXHJcbiAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKHRoaXMuaW5kZXhMaXN0KTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmRDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2goKTtcclxuICB9XHJcbiAgX3Jvd1NlbGVjdGluZyhlKSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZy5lbWl0KGUpO1xyXG4gIH1cclxuICByZWZyZXNoQ29sdW1ucygpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoQ29sdW1ucygpO1xyXG4gIH1cclxuICByZWZyZXNoSGVhZGVyKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hIZWFkZXIoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXM/KSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBvblJvd0Ryb3AoZSkge1xyXG4gICAgdGhpcy5yb3dEcm9wLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBfcm93RGF0YUJvdW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVN5c3RlbVJvdyAmJiAkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5Jc1N5c3RlbSkge1xyXG4gICAgICAkZXZlbnQucm93LmNsYXNzTGlzdC5hZGQoXCJlLWRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEYXRhQm91bmQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmdyaWQuY2xlYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIGV4Y2VsRXhwb3J0KCkge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmFkZFJlY29yZCh7IC4uLnRoaXMuZGVmYXVsdFJlY29yZCwgaXNOZXc6IHRydWUgfSwgMCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuZW5kRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEl0ZW0oaW5kZXgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgdmFyIHNlbGVjdGVkUmVjb3JkID0gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpWzBdIGFzIGFueTtcclxuICAgIHRoaXMuZ3JpZC5kZWxldGVSZWNvcmQoc2VsZWN0ZWRSZWNvcmQgYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5jbG9zZUVkaXQoKTtcclxuICAgIHRoaXMuZGVsZXRlSXRlbShpbmRleCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbml0TGlzdCA9IChudW0gPSAyNSwga2V5ID0gXCJJZFwiKSA9PiB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICB0aW1lcyhudW0sIChpKSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgW2tleV06IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9O1xyXG4gIHB1YmxpYyBzaG93TG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -525,7 +525,7 @@ export class BarChartsComponent {
525
525
  }
526
526
  BarChartsComponent.decorators = [
527
527
  { type: Component, args: [{
528
- selector: "rs-bar-charts",
528
+ selector: "kt-bar-charts",
529
529
  template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n",
530
530
  encapsulation: ViewEncapsulation.None,
531
531
  providers: [DecimalPipe],
@@ -635,4 +635,4 @@ if (false) {
635
635
  */
636
636
  BarChartsComponent.prototype.decimalPipe;
637
637
  }
638
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFTbkMsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7O0lBNkY3QixZQUNVLEdBQXNCLEVBQ3ZCLGdCQUFrQyxFQUNqQyxXQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBN0Z6QixlQUFVLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTs7UUFDaEMsYUFBUSxHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQzlCLHVCQUFrQixHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQ3hDLGVBQVUsR0FBUSxRQUFRLENBQUM7UUFDM0IsYUFBUSxHQUFRLFFBQVEsQ0FBQztRQUN6QixlQUFVLEdBQVEsSUFBSSxDQUFDO1FBQ3ZCLFlBQU8sR0FBUSxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFRLElBQUksQ0FBQztRQUN4QixXQUFNLEdBQVUsRUFBRSxD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ICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBJTG9hZGVkRXZlbnRBcmdzLFxyXG4gIENoYXJ0VGhlbWUsXHJcbiAgQ2hhcnRDb21wb25lbnQsXHJcbiAgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tIFwicmVzaXplLW9ic2VydmVyLXBvbHlmaWxsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWJhci1jaGFydHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Jhci1jaGFydHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhckNoYXJ0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImNoYXJ0Q29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBASW5wdXQoKSBkYXRhQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOafseeKtuWbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFMaW5lOiBhbnkgPSBbXTsgLy8gIOaKmOe6v+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFTdGFja2luZ0NvbHVtbjogYW55ID0gW107IC8vICDloIbnp6/lm77mlbDmja7mupBcclxuICBASW5wdXQoKSBjb2x1bW5UeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIGxpbmVUeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIHRoZW1lQ29sb3I6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgcG9ydGxldDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkYXNoYm9hcmQ6IGFueSA9IG51bGw7XHJcbiAgcHVibGljIGNvbHVtbjogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uTGluZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29uZmlnO1xyXG4gIHB1YmxpYyBfZGF0YVN0YWNraW5nQ29sdW1uID0gW107XHJcbiAgcHVibGljIG1hcmtlcjtcclxuICBwdWJsaWMgc3BlY2lhbEtleSA9IFtcIklSUlwiLCBcIkRQSVwiLCBcIk1PSUNcIiwgXCJQSUNcIiwgXCJSVlBJXCIsIFwiVFZQSVwiXTtcclxuICBwYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgem9vbVNldHRpbmdzOiBPYmplY3QgPSB7XHJcbiAgICAvLyBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IHRydWUsXHJcbiAgICAvLyB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFggQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WEF4aXM6IE9iamVjdCA9IHtcclxuICAgIHZhbHVlVHlwZTogXCJDYXRlZ29yeVwiLFxyXG4gICAgbGFiZWxJbnRlcnNlY3RBY3Rpb246IFwiUm90YXRlNDVcIixcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgZWRnZUxhYmVsUGxhY2VtZW50OiBcIlNoaWZ0XCIsXHJcblxyXG4gICAgLy8gZW5hYmxlU2Nyb2xsYmFyOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlVHJpbTogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVBhbjogdHJ1ZSxcclxuICAgIC8vIHJvdGF0ZTogMCxcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udFdlaWdodDogXCJub3JtYWxcIixcclxuICAgICAgY29sb3I6IFwiIzQ0NTY2Y1wiLFxyXG4gICAgICBmb250RmFtaWx5OiBcIkFyaWFsXCIsXHJcbiAgICAgIHNpemU6IFwiMTNweFwiLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFkgQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WUF4aXM6IE9iamVjdCA9IHtcclxuICAgIHRpdGxlOiBcIlwiLCAvL0ZpcnN0IFlcclxuICAgIGxpbmVTdHlsZTogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JUaWNrTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IGNvbG9yOiBcIiNmMmYyZjJcIiB9LCAvLyDorr7nva7kuLvopoHnvZHmoLznur/popzoibJcclxuICAgIGxhYmVsRm9ybWF0OiBcIm4yXCIsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNoYXJ0QXJlYTogT2JqZWN0ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvLyDpvKDmoIfnp7vliLBiYXLkuIrpnaLmmL7npLrnmoRib3hcclxuICBwdWJsaWMgdG9vbHRpcDogT2JqZWN0ID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIC8vIOWbvuS+i+iuvue9rlxyXG4gIHB1YmxpYyBsZWdlbmQ6IE9iamVjdCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBlbmFibGVIaWdobGlnaHQ6IHRydWUsXHJcbiAgfTtcclxuICAvLyBjdXN0b20gY29kZSBzdGFydFxyXG4gIHB1YmxpYyBsb2FkKGFyZ3M6IElMb2FkZWRFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZFRoZW1lOiBzdHJpbmcgPSBsb2NhdGlvbi5oYXNoLnNwbGl0KFwiL1wiKVsxXTtcclxuICAgIHNlbGVjdGVkVGhlbWUgPSBzZWxlY3RlZFRoZW1lID8gc2VsZWN0ZWRUaGVtZSA6IFwiTWF0ZXJpYWxcIjtcclxuICAgIGFyZ3MuY2hhcnQudGhlbWUgPSA8Q2hhcnRUaGVtZT4oXHJcbiAgICAgIChzZWxlY3RlZFRoZW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VsZWN0ZWRUaGVtZS5zbGljZSgxKSlcclxuICAgICAgICAucmVwbGFjZSgvLWRhcmsvaSwgXCJEYXJrXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL2NvbnRyYXN0L2ksIFwiQ29udHJhc3RcIilcclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIGN1c3RvbSBjb2RlIGVuZFxyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgaGVpZ2h0OiBzdHJpbmcgPSBcIjI1MHB4XCI7XHJcbiAgd2lkdGg6IHN0cmluZyA9IFwiMTAwJVwiO1xyXG5cclxuICBwdWJsaWMgY3VzdG9tUGFsZXR0ZTogc3RyaW5nW10gPSBbXTsgLy/pu5jorqTpopzoibLnu4RcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGV4cG9ydFR5cGU6IERyb3BEb3duTGlzdDtcclxuICBwdWJsaWMgbWFya2VyRm9ybWF0ID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5wb3J0bGV0LmNvbmZpZyAmJiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN3aXRjaENvbmZpZygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMuaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLmhhc01hcmtlciA9IHJlcy5jaGVja2VkO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5jaGFydC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldE1hcmtlckZvcm1hdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMubmV3SWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSByZXMubWFya2VyRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TWFya2VyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiID8gXCJwMlwiIDogXCJuMlwiO1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaGFzTWFya2VyID0gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuaGFzTWFya2VyO1xyXG4gICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQ7XHJcbiAgICB0aGlzLm1hcmtlciA9IHtcclxuICAgICAgdmlzaWJsZTogaGFzTWFya2VyLFxyXG4gICAgICBkYXRhTGFiZWw6IHtcclxuICAgICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgICAgZm9ybWF0LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcbiAgdGV4dFJlbmRlcihlKSB7XHJcbiAgICB0aGlzLmRhdGFMaW5lLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICBpZiAoIWUudGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50ZXh0ICE9IGRhdGFba2V5XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFDb2x1bW4uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWlzTmFOKGUudGV4dCkpIHtcclxuICAgICAgaWYgKGUudGV4dCAhPT0gMCkge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5tYXJrZXJGb3JtYXQpIHtcclxuICAgICAgICAgIGNhc2UgXCJNXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMCwgXCIxLjItMlwiKSArIFwibVwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiS1wiOlxyXG4gICAgICAgICAgICBlLnRleHQgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwLCBcIjEuMi0yXCIpICsgXCJrXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJiblwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcImJcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcIlRcIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJ0XCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZS50ZXh0ID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmNvbHVtbiA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5MaW5lID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhQ29sdW1uICYmIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhQ29sdW1uWzBdKSB7XHJcbiAgICAgICAgaWYgKGkgIT0gXCJwZXJpb2RcIikge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFMaW5lICYmIHRoaXMuZGF0YUxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGF0YUxpbmVbMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbkxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRoZW1lQ29sb3IgJiYgdGhpcy50aGVtZUNvbG9yLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jdXN0b21QYWxldHRlID0gdGhpcy50aGVtZUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFDb2x1bW4gJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5jdXJyZW50VmFsdWUsXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFDb2x1bW4ucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFMaW5lICYmXHJcbiAgICAvLyBcdFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFMaW5lLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5jdXJyZW50VmFsdWUgOiBudWxsLFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5wcmV2aW91c1ZhbHVlIDogbnVsbFxyXG4gICAgLy8gXHQpXHJcbiAgICAvLyApIHtcclxuICAgIC8vIFx0dGhpcy5pbml0RGF0YSgpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENoYXJ0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplT2JzZXJ2ZXI6IGFueTtcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xyXG4gICAgICAgIC8vIOWcqOi/memHjOaJp+ihjOS9oOaDs+imgeeahOaTjeS9nO+8jOavlOWmguabtOaWsOWbvuihqOaIluWFtuS7luebuOWFs+aTjeS9nFxyXG4gICAgICAgIHRoaXMuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN0YXJ0UmVmcmVzaCgpLnN1YnNjcmliZSgoZGFzaGJvYXJkSWQpID0+IHtcclxuICAgICAgICBpZiAoZGFzaGJvYXJkSWQgPT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRSZWZyZXNoR2FkZ2V0KCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld0lkID0gZVtcIm5ld0lkXCJdO1xyXG4gICAgICAgIGlmIChuZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkIHx8IG5ld0lkID09PSB0aGlzLnBvcnRsZXQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDlnKjnu4Tku7bplIDmr4Hml7blj5bmtojnm5HlkKxcclxuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGVsZSkgPT4gZWxlLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDEwMClcclxuICBjaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBgJHtoZWlnaHQgLSAxMH1weGA7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENoYXJ0KCkge1xyXG4gICAgdGhpcy5jaGFydC5leHBvcnRNb2R1bGUuZXhwb3J0KFwiUE5HXCIsIFwiQ2hhcnRcIik7XHJcbiAgfVxyXG5cclxuICBPbkNoYXJ0QXhpc0xhYmVSZW5kZXIoYXJnczogYW55KSB7XHJcbiAgICBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwicHJpbWFyeVlBeGlzXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29sdW1uVHlwZSA9PSBcInBlcmNlbnRcIiB8fFxyXG4gICAgICAgICh0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPD0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5saW5lVHlwZSA9PSBcInBlcmNlbnRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MuYXhpcy5wcm9wTmFtZSA9PSBcInlBeGlzMlwiKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxyXG4gICAgICAucmVwbGFjZSgvW14wLTkuXS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIiQxLFwiKTtcclxuICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShOdW1iZXIodmFsdWUpLCBcIjEuMi0yXCIpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UGVyY2VudGFnZShkZWNpbWFsKSB7XHJcbiAgICBjb25zdCBwZXJjZW50YWdlID0gKGRlY2ltYWwgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICByZXR1cm4gYCR7cGVyY2VudGFnZX0lYDtcclxuICB9XHJcblxyXG4gIGFycmF5c0FyZUVxdWFsKGFycjEsIGFycjIpIHtcclxuICAgIGlmICgoIWFycjEgJiYgYXJyMikgfHwgKGFycjEgJiYgIWFycjIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWFycjEgJiYgIWFycjIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iajEgPSBhcnIxW2ldO1xyXG4gICAgICBjb25zdCBvYmoyID0gYXJyMltpXTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqMSAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqMiAhPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmIChvYmoxICE9PSBvYmoyKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5vYmplY3RzQXJlRXF1YWwob2JqMSwgb2JqMikpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSB7XHJcbiAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcclxuXHJcbiAgICBpZiAoa2V5czEubGVuZ3RoICE9PSBrZXlzMi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzMSkge1xyXG4gICAgICBpZiAob2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUG9pbnRSZW5kZXIoZSkge1xyXG4gICAgaWYgKGUucG9pbnQueSA9PSAwKSB7XHJcbiAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b29sdGlwUmVuZGVyKGFyZ3M6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaXNOYU4oYXJncy5kYXRhLnBvaW50WSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICBhcmdzLnRleHQgPSBgJHthcmdzLmRhdGEucG9pbnRYfTogJHsoYXJncy5kYXRhLnBvaW50WSAqIDEwMCkudG9GaXhlZChcclxuICAgICAgICAyXHJcbiAgICAgICl9JWA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKFxyXG4gICAgICBhcmdzLmRhdGEucG9pbnRZLFxyXG4gICAgICBcIjEuMi0yXCJcclxuICAgICl9YDtcclxuICB9XHJcbn1cclxuIl19
638
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFTbkMsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7O0lBNkY3QixZQUNVLEdBQXNCLEVBQ3ZCLGdCQUFrQyxFQUNqQyxXQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBN0Z6QixlQUFVLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTs7UUFDaEMsYUFBUSxHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQzlCLHVCQUFrQixHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQ3hDLGVBQVUsR0FBUSxRQUFRLENBQUM7UUFDM0IsYUFBUSxHQUFRLFFBQVEsQ0FBQztRQUN6QixlQUFVLEdBQVEsSUFBSSxDQUFDO1FBQ3ZCLFlBQU8sR0FBUSxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFRLElBQUksQ0FBQztRQUN4QixXQUFNLEdBQVUsRUFBRSxD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ICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBJTG9hZGVkRXZlbnRBcmdzLFxyXG4gIENoYXJ0VGhlbWUsXHJcbiAgQ2hhcnRDb21wb25lbnQsXHJcbiAgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tIFwicmVzaXplLW9ic2VydmVyLXBvbHlmaWxsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImt0LWJhci1jaGFydHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Jhci1jaGFydHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhckNoYXJ0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImNoYXJ0Q29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBASW5wdXQoKSBkYXRhQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOafseeKtuWbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFMaW5lOiBhbnkgPSBbXTsgLy8gIOaKmOe6v+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFTdGFja2luZ0NvbHVtbjogYW55ID0gW107IC8vICDloIbnp6/lm77mlbDmja7mupBcclxuICBASW5wdXQoKSBjb2x1bW5UeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIGxpbmVUeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIHRoZW1lQ29sb3I6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgcG9ydGxldDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkYXNoYm9hcmQ6IGFueSA9IG51bGw7XHJcbiAgcHVibGljIGNvbHVtbjogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uTGluZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29uZmlnO1xyXG4gIHB1YmxpYyBfZGF0YVN0YWNraW5nQ29sdW1uID0gW107XHJcbiAgcHVibGljIG1hcmtlcjtcclxuICBwdWJsaWMgc3BlY2lhbEtleSA9IFtcIklSUlwiLCBcIkRQSVwiLCBcIk1PSUNcIiwgXCJQSUNcIiwgXCJSVlBJXCIsIFwiVFZQSVwiXTtcclxuICBwYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgem9vbVNldHRpbmdzOiBPYmplY3QgPSB7XHJcbiAgICAvLyBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IHRydWUsXHJcbiAgICAvLyB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFggQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WEF4aXM6IE9iamVjdCA9IHtcclxuICAgIHZhbHVlVHlwZTogXCJDYXRlZ29yeVwiLFxyXG4gICAgbGFiZWxJbnRlcnNlY3RBY3Rpb246IFwiUm90YXRlNDVcIixcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgZWRnZUxhYmVsUGxhY2VtZW50OiBcIlNoaWZ0XCIsXHJcblxyXG4gICAgLy8gZW5hYmxlU2Nyb2xsYmFyOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlVHJpbTogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVBhbjogdHJ1ZSxcclxuICAgIC8vIHJvdGF0ZTogMCxcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udFdlaWdodDogXCJub3JtYWxcIixcclxuICAgICAgY29sb3I6IFwiIzQ0NTY2Y1wiLFxyXG4gICAgICBmb250RmFtaWx5OiBcIkFyaWFsXCIsXHJcbiAgICAgIHNpemU6IFwiMTNweFwiLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFkgQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WUF4aXM6IE9iamVjdCA9IHtcclxuICAgIHRpdGxlOiBcIlwiLCAvL0ZpcnN0IFlcclxuICAgIGxpbmVTdHlsZTogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JUaWNrTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IGNvbG9yOiBcIiNmMmYyZjJcIiB9LCAvLyDorr7nva7kuLvopoHnvZHmoLznur/popzoibJcclxuICAgIGxhYmVsRm9ybWF0OiBcIm4yXCIsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNoYXJ0QXJlYTogT2JqZWN0ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvLyDpvKDmoIfnp7vliLBiYXLkuIrpnaLmmL7npLrnmoRib3hcclxuICBwdWJsaWMgdG9vbHRpcDogT2JqZWN0ID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIC8vIOWbvuS+i+iuvue9rlxyXG4gIHB1YmxpYyBsZWdlbmQ6IE9iamVjdCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBlbmFibGVIaWdobGlnaHQ6IHRydWUsXHJcbiAgfTtcclxuICAvLyBjdXN0b20gY29kZSBzdGFydFxyXG4gIHB1YmxpYyBsb2FkKGFyZ3M6IElMb2FkZWRFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZFRoZW1lOiBzdHJpbmcgPSBsb2NhdGlvbi5oYXNoLnNwbGl0KFwiL1wiKVsxXTtcclxuICAgIHNlbGVjdGVkVGhlbWUgPSBzZWxlY3RlZFRoZW1lID8gc2VsZWN0ZWRUaGVtZSA6IFwiTWF0ZXJpYWxcIjtcclxuICAgIGFyZ3MuY2hhcnQudGhlbWUgPSA8Q2hhcnRUaGVtZT4oXHJcbiAgICAgIChzZWxlY3RlZFRoZW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VsZWN0ZWRUaGVtZS5zbGljZSgxKSlcclxuICAgICAgICAucmVwbGFjZSgvLWRhcmsvaSwgXCJEYXJrXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL2NvbnRyYXN0L2ksIFwiQ29udHJhc3RcIilcclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIGN1c3RvbSBjb2RlIGVuZFxyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgaGVpZ2h0OiBzdHJpbmcgPSBcIjI1MHB4XCI7XHJcbiAgd2lkdGg6IHN0cmluZyA9IFwiMTAwJVwiO1xyXG5cclxuICBwdWJsaWMgY3VzdG9tUGFsZXR0ZTogc3RyaW5nW10gPSBbXTsgLy/pu5jorqTpopzoibLnu4RcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGV4cG9ydFR5cGU6IERyb3BEb3duTGlzdDtcclxuICBwdWJsaWMgbWFya2VyRm9ybWF0ID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5wb3J0bGV0LmNvbmZpZyAmJiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN3aXRjaENvbmZpZygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMuaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLmhhc01hcmtlciA9IHJlcy5jaGVja2VkO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5jaGFydC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldE1hcmtlckZvcm1hdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMubmV3SWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSByZXMubWFya2VyRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TWFya2VyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiID8gXCJwMlwiIDogXCJuMlwiO1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaGFzTWFya2VyID0gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuaGFzTWFya2VyO1xyXG4gICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQ7XHJcbiAgICB0aGlzLm1hcmtlciA9IHtcclxuICAgICAgdmlzaWJsZTogaGFzTWFya2VyLFxyXG4gICAgICBkYXRhTGFiZWw6IHtcclxuICAgICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgICAgZm9ybWF0LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcbiAgdGV4dFJlbmRlcihlKSB7XHJcbiAgICB0aGlzLmRhdGFMaW5lLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICBpZiAoIWUudGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50ZXh0ICE9IGRhdGFba2V5XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFDb2x1bW4uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWlzTmFOKGUudGV4dCkpIHtcclxuICAgICAgaWYgKGUudGV4dCAhPT0gMCkge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5tYXJrZXJGb3JtYXQpIHtcclxuICAgICAgICAgIGNhc2UgXCJNXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMCwgXCIxLjItMlwiKSArIFwibVwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiS1wiOlxyXG4gICAgICAgICAgICBlLnRleHQgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwLCBcIjEuMi0yXCIpICsgXCJrXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJiblwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcImJcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcIlRcIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJ0XCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZS50ZXh0ID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmNvbHVtbiA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5MaW5lID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhQ29sdW1uICYmIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhQ29sdW1uWzBdKSB7XHJcbiAgICAgICAgaWYgKGkgIT0gXCJwZXJpb2RcIikge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFMaW5lICYmIHRoaXMuZGF0YUxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGF0YUxpbmVbMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbkxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRoZW1lQ29sb3IgJiYgdGhpcy50aGVtZUNvbG9yLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jdXN0b21QYWxldHRlID0gdGhpcy50aGVtZUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFDb2x1bW4gJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5jdXJyZW50VmFsdWUsXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFDb2x1bW4ucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFMaW5lICYmXHJcbiAgICAvLyBcdFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFMaW5lLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5jdXJyZW50VmFsdWUgOiBudWxsLFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5wcmV2aW91c1ZhbHVlIDogbnVsbFxyXG4gICAgLy8gXHQpXHJcbiAgICAvLyApIHtcclxuICAgIC8vIFx0dGhpcy5pbml0RGF0YSgpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENoYXJ0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplT2JzZXJ2ZXI6IGFueTtcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xyXG4gICAgICAgIC8vIOWcqOi/memHjOaJp+ihjOS9oOaDs+imgeeahOaTjeS9nO+8jOavlOWmguabtOaWsOWbvuihqOaIluWFtuS7luebuOWFs+aTjeS9nFxyXG4gICAgICAgIHRoaXMuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN0YXJ0UmVmcmVzaCgpLnN1YnNjcmliZSgoZGFzaGJvYXJkSWQpID0+IHtcclxuICAgICAgICBpZiAoZGFzaGJvYXJkSWQgPT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRSZWZyZXNoR2FkZ2V0KCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld0lkID0gZVtcIm5ld0lkXCJdO1xyXG4gICAgICAgIGlmIChuZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkIHx8IG5ld0lkID09PSB0aGlzLnBvcnRsZXQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDlnKjnu4Tku7bplIDmr4Hml7blj5bmtojnm5HlkKxcclxuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGVsZSkgPT4gZWxlLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDEwMClcclxuICBjaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBgJHtoZWlnaHQgLSAxMH1weGA7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENoYXJ0KCkge1xyXG4gICAgdGhpcy5jaGFydC5leHBvcnRNb2R1bGUuZXhwb3J0KFwiUE5HXCIsIFwiQ2hhcnRcIik7XHJcbiAgfVxyXG5cclxuICBPbkNoYXJ0QXhpc0xhYmVSZW5kZXIoYXJnczogYW55KSB7XHJcbiAgICBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwicHJpbWFyeVlBeGlzXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29sdW1uVHlwZSA9PSBcInBlcmNlbnRcIiB8fFxyXG4gICAgICAgICh0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPD0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5saW5lVHlwZSA9PSBcInBlcmNlbnRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MuYXhpcy5wcm9wTmFtZSA9PSBcInlBeGlzMlwiKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxyXG4gICAgICAucmVwbGFjZSgvW14wLTkuXS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIiQxLFwiKTtcclxuICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShOdW1iZXIodmFsdWUpLCBcIjEuMi0yXCIpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UGVyY2VudGFnZShkZWNpbWFsKSB7XHJcbiAgICBjb25zdCBwZXJjZW50YWdlID0gKGRlY2ltYWwgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICByZXR1cm4gYCR7cGVyY2VudGFnZX0lYDtcclxuICB9XHJcblxyXG4gIGFycmF5c0FyZUVxdWFsKGFycjEsIGFycjIpIHtcclxuICAgIGlmICgoIWFycjEgJiYgYXJyMikgfHwgKGFycjEgJiYgIWFycjIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWFycjEgJiYgIWFycjIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iajEgPSBhcnIxW2ldO1xyXG4gICAgICBjb25zdCBvYmoyID0gYXJyMltpXTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqMSAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqMiAhPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmIChvYmoxICE9PSBvYmoyKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5vYmplY3RzQXJlRXF1YWwob2JqMSwgb2JqMikpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSB7XHJcbiAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcclxuXHJcbiAgICBpZiAoa2V5czEubGVuZ3RoICE9PSBrZXlzMi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzMSkge1xyXG4gICAgICBpZiAob2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUG9pbnRSZW5kZXIoZSkge1xyXG4gICAgaWYgKGUucG9pbnQueSA9PSAwKSB7XHJcbiAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b29sdGlwUmVuZGVyKGFyZ3M6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaXNOYU4oYXJncy5kYXRhLnBvaW50WSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICBhcmdzLnRleHQgPSBgJHthcmdzLmRhdGEucG9pbnRYfTogJHsoYXJncy5kYXRhLnBvaW50WSAqIDEwMCkudG9GaXhlZChcclxuICAgICAgICAyXHJcbiAgICAgICl9JWA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKFxyXG4gICAgICBhcmdzLmRhdGEucG9pbnRZLFxyXG4gICAgICBcIjEuMi0yXCJcclxuICAgICl9YDtcclxuICB9XHJcbn1cclxuIl19