raise-common-lib 0.0.191 → 0.0.193
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.
- package/bundles/raise-common-lib.umd.js +1241 -8
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/common-grid/index.component.js +2 -2
- package/esm2015/lib/form/drawer-form/drawer-form.component.js +6 -3
- package/esm2015/lib/form/richtexteditor/ai-config.js +70 -0
- package/esm2015/lib/form/richtexteditor/data-config.js +273 -0
- package/esm2015/lib/form/richtexteditor/index.component.js +604 -0
- package/esm2015/lib/form/richtexteditor/openapi.js +175 -0
- package/esm2015/lib/layout/page-tab/index.component.js +6 -2
- package/esm2015/lib/raise-common-lib.module.js +7 -2
- package/esm2015/public-api.js +2 -1
- package/esm2015/raise-common-lib.js +2 -2
- package/esm5/lib/common-grid/index.component.js +2 -2
- package/esm5/lib/form/drawer-form/drawer-form.component.js +6 -3
- package/esm5/lib/form/richtexteditor/ai-config.js +73 -0
- package/esm5/lib/form/richtexteditor/data-config.js +273 -0
- package/esm5/lib/form/richtexteditor/index.component.js +684 -0
- package/esm5/lib/form/richtexteditor/openapi.js +208 -0
- package/esm5/lib/layout/page-tab/index.component.js +6 -2
- package/esm5/lib/raise-common-lib.module.js +7 -2
- package/esm5/public-api.js +2 -1
- package/esm5/raise-common-lib.js +2 -2
- package/fesm2015/raise-common-lib.js +1127 -10
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +1242 -10
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/form/richtexteditor/ai-config.d.ts +10 -0
- package/lib/form/richtexteditor/data-config.d.ts +14 -0
- package/lib/form/richtexteditor/index.component.d.ts +78 -0
- package/lib/form/richtexteditor/openapi.d.ts +3 -0
- package/lib/layout/page-tab/index.component.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/editor-copy.svg +5 -0
- package/src/assets/img/info.svg +5 -0
|
@@ -779,7 +779,7 @@ var CommonGridComponent = /** @class */ (function () {
|
|
|
779
779
|
CommonGridComponent.decorators = [
|
|
780
780
|
{ type: Component, args: [{
|
|
781
781
|
selector: "rs-common-grid",
|
|
782
|
-
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 [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",
|
|
782
|
+
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",
|
|
783
783
|
styles: [""]
|
|
784
784
|
}] }
|
|
785
785
|
];
|
|
@@ -963,4 +963,4 @@ if (false) {
|
|
|
963
963
|
*/
|
|
964
964
|
CommonGridComponent.prototype.ref;
|
|
965
965
|
}
|
|
966
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUkvQjtJQXNGRSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE5RWpDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCOzs7UUFFOUMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsZUFBVSxHQUFHLEVBQUUsQ0FBQzs7UUFFaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixtQkFBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFbEMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUloQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFzQnZELHFCQUFnQixHQUFz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QTJCOztJQUUzQiw4Q0FBOEI7O0lBQzlCLHlDQUF5Qjs7SUFFekIscUNBQXlCOztJQUN6Qiw2Q0FBMkM7O0lBQzNDLDZDQUEyQzs7SUFDM0MsdUNBQXVCOztJQUN2QixxQ0FBcUM7O0lBQ3JDLHlDQUF5Qjs7SUFDekIsMkNBQXNCOztJQUN0Qiw2Q0FBMEM7O0lBQzFDLDJDQUFzQjs7SUFDdEIsMENBQTRCOztJQUM1QixrREFBcUM7O0lBQ3JDLHVDQUEwQzs7SUFDMUMsNENBQTRCOztJQUM1Qix3Q0FBbUI7O0lBQ25CLDRDQUF1Qjs7SUFDdkIsb0RBQStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbUIvQiwrQ0FBa0Q7O0lBRWxELGdEQUlFOztJQUNGLGlEQUE2Qzs7SUFDN0MsNENBQTRCOztJQUM1QiwrQ0FBMkM7O0lBRTNDLGdEQUFpRDs7SUFDakQsNkNBQThDOztJQUM5QywwQ0FBMkM7O0lBQzNDLDRDQUE2Qzs7SUFDN0MsNkNBQThDOztJQUM5Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsNENBQTZDOztJQUM3QywwQ0FBMkM7O0lBQzNDLDBDQUEyQzs7SUFDM0MsMkNBQTRDOztJQUM1Qyx3Q0FBeUM7O0lBQ3pDLGtEQUFtRDs7SUFDbkQsMkNBQTRDOztJQUM1QyxzQ0FBdUM7O0lBQ3ZDLHNDQUF1Qzs7SUFDdkMsMkNBQTRDOztJQUU1Qyx1Q0FBYzs7SUFDZCwwQ0FBb0I7O0lBQ3BCLHdDQUFlOztJQUNmLHdDQUEyQjs7SUFFM0IsMENBQW1COztJQWtWbkIsdUNBUUU7Ozs7O0lBeFZVLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IHRpbWVzIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItaW5wdXRzXCI7XHJcbmltcG9ydCB7IElBY3Rpb25NZW51SXRlbSwgSUNvbHVtbkZpZWxkIH0gZnJvbSBcIi4uL2NvbnN0YW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZ3JpZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoXCJncmlkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBncmlkOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveCA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRkZW5Mb2FkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRob3JpemVkID0gdHJ1ZTsgLy8gRGF0YXNldOaYr+WQpuaOiOadg++8jOacquaOiOadg+WImeaYvuekuuadg+mZkOmUmeivr+aPkOekulxyXG4gIC8vIG9ubHkgdXNlIGZvciBsb2NhbCBkYXRhIHBhZ2luYXRpb25cclxuICBASW5wdXQoKSBzZWxlY3RlZERpZmZLZXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGdyaWRIZWlnaHQgPSBcIlwiO1xyXG4gIC8vIOi/meeOqeaEj+W/heWhq++8jOS4jeeEtmZpbHRlciBjb2x1bW5DaG9vc2Vy6YO95Lya5oql6ZSZXHJcbiAgQElucHV0KCkgZ3JpZElkID0gXCJncmlkXCI7XHJcbiAgQElucHV0KCkgcmVzaXplU2V0dGluZ3MgPSB7IG1vZGU6IFwiQXV0b1wiIH07XHJcbiAgQElucHV0KCkgZmlsdGVyU2V0dGluZ3MgPSB7IHR5cGU6IFwiTWVudVwiIH07XHJcbiAgQElucHV0KCkgdGVtcGxhdGU6IGFueTtcclxuICBASW5wdXQoKSBmaWVsZHM6IElDb2x1bW5GaWVsZFtdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRTZXR0aW5ncztcclxuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwYWdlU2V0dGluZ3M7XHJcbiAgQElucHV0KCkgYWxsb3dQYWdpbmcgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93Um93RHJhZ0FuZERyb3AgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGlwTW9kZSA9IFwiRWxsaXBzaXNXaXRoVG9vbHRpcFwiO1xyXG4gIEBJbnB1dCgpIGNoZWNrQm94V2lkdGggPSAzMjsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNoaWxkR3JpZDtcclxuICBASW5wdXQoKSBmcm96ZW5Db2x1bW5zOyAvLyBjb2wg5pWw6YeP6L+H5bCR55qE5pe25YCZ77yMY2hlY2vlrr3luqbkvJrmi4nkvLjvvIzov5nml7blgJnorr7nva5udWxsXHJcbiAgQElucHV0KCkgY29sdW1uQ2hvb3NlclNldHRpbmdzO1xyXG5cclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzZWxlY3RJZCA9IFtdO1xyXG4gIHN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgaW5kZXhMaXN0ID0gW107XHJcbiAgY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuXHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW5Mb2FkZWQpIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZ3JpZElkID1cclxuICAgICAgdGhpcy5ncmlkSWQgKyBEYXRlLm5vdygpICsgXCJfXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA1KTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7IC8vIG9yIGEgdW5pcXVlIGlkZW50aWZpZXIgaW4geW91ciBvYmplY3RcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YVNvdXJjZSAmJiBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmFsbG93UGFnaW5nICYmXHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5wYWdlU2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggPiA5XHJcbiAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgcGFnZVNpemVzOiBbXCJBbGxcIiwgXCIyNVwiLCBcIjUwXCIsIFwiMTAwXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDUwLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfbG9hZCgpIHtcclxuICAgIGlmICghdGhpcy5hdXRob3JpemVkKSB7XHJcbiAgICAgICh0aGlzLmdyaWQubG9jYWxlT2JqIGFzIGFueSkubG9jYWxlU3RyaW5ncy5FbXB0eVJlY29yZCA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5ZT1VfRE9fTk9UX0hBVkVfVEhFX0RBVEFTRVRfUEVSTUlTU0lPTiB8fFxyXG4gICAgICAgIFwiWW91IGRvbid0IGhhdmUgdGhlIGRhdGFzZXQgcGVybWlzc2lvbiB0byB2aWV3IHRoZSByZWNvcmQuXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZGF0YUJvdW5kKGFyZ3M6IGFueSkge1xyXG4gICAgLy8g5pW05Liq57uE5Lu25Yqg6L295a6M5oiQ5pe255qE5Zue6LCD5Ye95pWwXHJcbiAgICB2YXIgcGFnZXJDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmUtcGFnZXJjb250YWluZXJcIik7XHJcbiAgICBpZiAocGFnZXJDb250YWluZXIpIHtcclxuICAgICAgdmFyIGxpbmtFbGVtZW50cyA9IHBhZ2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZS1saW5rXCIpO1xyXG4gICAgICBsaW5rRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiaHJlZlwiKTsgLy8gU01QMi0xMDMxMCDliKDpmaTliIbpobXlmajnmoRocmVm5bGe5oCnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YUJvdW5kLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfZXhwb3J0UXVlcnlDZWxsSW5mbyhhcmdzKSB7XHJcbiAgICB0aGlzLmV4cG9ydFF1ZXJ5Q2VsbEluZm8uZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yb3dEcmFnKGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZy5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWdTdGFydChhcmdzKSB7XHJcbiAgICB0aGlzLnJvd0RyYWdTdGFydC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZERvdWJsZUNsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmREb3VibGVDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RpbmcoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0aW5nLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcblx0ICogW3NlbGVjdGlvblNldHRpbmdzXT1cInsgY2hlY2tib3hPbmx5OiB0cnVlIH1cIlxyXG5cdCAgIFtzaG93Q2hlY2tCb3hdPVwidHJ1ZVwiXHJcblx0ICAg5o6n5Lu25L2/55So5pe277yM5b+F6aG76YWN572u5LiK6Z2i5Lik5Liq5bGe5oCn77yM5ZCm5YiZ77yM5YWo6YCJ5Lya5aSx5pWIXHJcblx0ICovXHJcbiAgX3Jvd1NlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICBpZiAoJGV2ZW50LmRhdGEgJiYgJGV2ZW50LmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaCgkZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0UGFnaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gW107XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gdGhpcy5zZWxlY3RJZC5maWx0ZXIoXHJcbiAgICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgICAgaXRlbVt0aGlzLnNlbGVjdGVkRGlmZktleV0gIT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEZXNlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9vbkNvbnRleHRNZW51KGFyZ3MpIHtcclxuICAgIHRoaXMub25Db250ZXh0TWVudS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkJlZ2luKGFyZ3MpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERpZmZLZXkgJiZcclxuICAgICAgKGFyZ3MucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09IFwiZmlsdGVyY2hvaWNlcmVxdWVzdFwiIHx8XHJcbiAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyc2VhcmNoYmVnaW5cIlxyXG4gICAgKSB7XHJcbiAgICAgIGFyZ3MuZmlsdGVyQ2hvaWNlQ291bnQgPSAxNTAwMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJlZ2luLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2goa2V5d29yZHMpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWFyY2goa2V5d29yZHMpO1xyXG4gIH1cclxuICBzZWxlY3RSb3dzKGluZGV4TGlzdDogbnVtYmVyW10pIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGluZGV4TGlzdCk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvdyhpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhpbmRleCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRWaWV3UmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21pc2VDZWxsKCRldmVudCkge1xyXG4gICAgdGhpcy5xdWVyeUNlbGxJbmZvLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNvbnRleHRNZW51T3BlbihhcmdzPzogQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gKGFyZ3MgYXMgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIHwgYW55KS5yb3dJbmZvLnJvd0RhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgYXJncy5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZW5hYmxlSXRlbXMgPSBbXTtcclxuICAgIGxldCBoaWRlSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5yZWZyZXNoKCk7IC8vIOavj+asoeeCueWHu+aMiemSruW8ueeql+WJjemcgOWGjeasoeWIneWni+WMlueKtuaAgSDlkKbliJnkuI3mm7TmlrDvvJtcclxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBJQWN0aW9uTWVudUl0ZW0pID0+IHtcclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKuZGlzYWJsZWTnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgfHxcclxuICAgICAgICAoZGF0YS5kaXNhYmxlSXRlbSAmJiBkYXRhLmRpc2FibGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGVuYWJsZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq7pnIDopoFoaWRl55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmlzSGlkZSB8fFxyXG4gICAgICAgIChkYXRhLmhpZGVJdGVtICYmIGRhdGEuaGlkZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaGlkZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKGVuYWJsZUl0ZW1zLCBmYWxzZSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKGhpZGVJdGVtcywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkhhbmRsZXIoJGV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgICgkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3Rpb25IYW5kbGVyLmVtaXQoJGV2ZW50KTtcclxuICAgIHRoaXMuYWN0aW9uQ29tcGxldGUuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaG9vc2VSZWNvcmRzKCkge1xyXG4gICAgdGhpcy5pbmRleExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5nZXRDdXJyZW50Vmlld1JlY29yZHMoKS5mb3JFYWNoKChyb3c6IGFueSwgaSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJvdyAmJlxyXG4gICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IHJvd1t0aGlzLnNlbGVjdGVkRGlmZktleV0gJiZcclxuICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5pbmRleExpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvd3ModGhpcy5pbmRleExpc3QpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZENsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaCgpO1xyXG4gIH1cclxuICBfcm93U2VsZWN0aW5nKGUpIHtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nLmVtaXQoZSk7XHJcbiAgfVxyXG4gIHJlZnJlc2hDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hDb2x1bW5zKCk7XHJcbiAgfVxyXG4gIHJlZnJlc2hIZWFkZXIoKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaEhlYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KGV4Y2VsRXhwb3J0UHJvcGVydGllcz8pIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKTtcclxuICB9XHJcblxyXG4gIG9uUm93RHJvcChlKSB7XHJcbiAgICB0aGlzLnJvd0Ryb3AuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIF9yb3dEYXRhQm91bmQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlU3lzdGVtUm93ICYmICRldmVudC5kYXRhICYmICRldmVudC5kYXRhLklzU3lzdGVtKSB7XHJcbiAgICAgICRldmVudC5yb3cuY2xhc3NMaXN0LmFkZChcImUtZGlzYWJsZWRcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0RhdGFCb3VuZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgIHRoaXMuZ3JpZC5jbGVhclNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZXhjZWxFeHBvcnQoKSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoKTtcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuYWRkUmVjb3JkKHsgLi4udGhpcy5kZWZhdWx0UmVjb3JkLCBpc05ldzogdHJ1ZSB9LCAwKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KDApO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBzYXZlSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5lbmRFZGl0KCk7XHJcbiAgfVxyXG5cclxuICBlZGl0SXRlbShpbmRleCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICB2YXIgc2VsZWN0ZWRSZWNvcmQgPSB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKClbMF0gYXMgYW55O1xyXG4gICAgdGhpcy5ncmlkLmRlbGV0ZVJlY29yZChzZWxlY3RlZFJlY29yZCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLmNsb3NlRWRpdCgpO1xyXG4gICAgdGhpcy5kZWxldGVJdGVtKGluZGV4KTtcclxuICB9XHJcbiAgcHVibGljIGluaXRMaXN0ID0gKG51bSA9IDI1LCBrZXkgPSBcIklkXCIpID0+IHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIHRpbWVzKG51bSwgKGkpID0+IHtcclxuICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICBba2V5XTogaSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH07XHJcbiAgcHVibGljIHNob3dMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGlkZUxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
966
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUkvQjtJQXNGRSw2QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE5RWpDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsMkJBQTJCOzs7UUFFOUMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsZUFBVSxHQUFHLEVBQUUsQ0FBQzs7UUFFaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixtQkFBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFbEMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUloQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFzQnZELHFCQUFnQixHQUFzQixFQUFFLENBQUM7O1FBRXpDLHNCQUFpQixHQUFHO1lBQzNCLElBQUksRUFBRSxVQUFVOztZQUVoQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBQ08sdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXBDLHFCQUFnQixHQUFZLEtBQUssQ0FBQyxDQUFDLHNCQUFzQjs7UUFFeEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0Isd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTVDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFHLGNBQWMsQ0FBQztRQW9WcEIsYUFBUTs7Ozs7UUFBRyxVQUFDLEdBQVEsRUFBRSxHQUFVO1lBQXBCLG9CQUFBLEVBQUEsUUFBUTtZQUFFLG9CQUFBLEVBQUEsVUFBVTs7Z0JBQy9CLElBQUksR0FBRyxFQUFFO1lBQ2YsS0FBSyxDQUFDLEdBQUc7Ozs7WUFBRSxVQUFDLENBQUM7O2dCQUNYLElBQUksQ0FBQyxJQUFJO29CQUNQLEdBQUMsR0FBRyxJQUFHLENBQUM7d0JBQ1IsQ0FBQztZQUNMLENBQUMsRUFBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLEVBQUM7UUF2VkEsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7O0lBRUQsc0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNO1lBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7Ozs7O0lBRUQsdUNBQVM7Ozs7O0lBQVQsVUFBVSxLQUFLLEVBQUUsSUFBSTtRQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLHdDQUF3QztJQUN4RCxDQUFDOzs7OztJQUNELHlDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDekQsSUFDRSxJQUFJLENBQUMsV0FBVztnQkFDaEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFDdEMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUNsQjtnQkFDQSxJQUFJLENBQUMsWUFBWTtvQkFDZixPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDOzRCQUNFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQzs0QkFDckMsUUFBUSxFQUFFLEVBQUU7eUJBQ2I7d0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNaO1NBQ0Y7SUFDSCxDQUFDOzs7O0lBRUQsbUNBQUs7OztJQUFMO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsQ0FBQyxtQkFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBTyxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVc7Z0JBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsc0NBQXNDO29CQUN2RCwyREFBMkQsQ0FBQztTQUMvRDtJQUNILENBQUM7Ozs7O0lBRUQsd0NBQVU7Ozs7SUFBVixVQUFXLElBQVM7UUFBcEIsaUJBZUM7OztZQWJLLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1FBQ2hFLElBQUksY0FBYyxFQUFFOztnQkFDZCxZQUFZLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUM3RCxZQUFZLENBQUMsT0FBTzs7OztZQUFDLFVBQVUsT0FBTztnQkFDcEMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjtZQUM3RCxDQUFDLEVBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLFVBQVU7OztZQUFDO2dCQUNULEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLEVBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7Ozs7SUFFRCxrREFBb0I7Ozs7SUFBcEIsVUFBcUIsSUFBSTtRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Ozs7O0lBRUQsc0NBQVE7Ozs7SUFBUixVQUFTLElBQUk7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7OztJQUVELDJDQUFhOzs7O0lBQWIsVUFBYyxJQUFJO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7Ozs7O0lBRUQsZ0RBQWtCOzs7O0lBQWxCLFVBQW1CLE1BQU07UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7OztJQUVELDZDQUFlOzs7O0lBQWYsVUFBZ0IsTUFBTTtRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0Q7Ozs7U0FJRTs7Ozs7Ozs7SUFDRiwwQ0FBWTs7Ozs7OztJQUFaLFVBQWEsTUFBTTtRQUFuQixpQkE4QkM7UUE3QkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksTUFBTSxDQUFDLHVCQUF1QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTzs7OztvQkFBQyxVQUFDLElBQUk7d0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3dCQUN2QixLQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0IsQ0FBQyxFQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7O29CQUFDLFVBQUMsSUFBSTt3QkFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPOzs7O3dCQUFDLFVBQUMsS0FBSzs0QkFDeEIsSUFBSSxLQUFLLENBQUMsS0FBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0NBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDOzZCQUN4Qjt3QkFDSCxDQUFDLEVBQUMsQ0FBQztvQkFDTCxDQUFDLEVBQUMsQ0FBQztpQkFDSjthQUNGO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU87Ozs7Z0JBQUMsVUFBQyxJQUFJO29CQUMzQixJQUNFLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEVBQ2hFO3dCQUNBLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3FCQUN4QjtnQkFDSCxDQUFDLEVBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFFRCw0Q0FBYzs7OztJQUFkLFVBQWUsTUFBTTtRQUFyQixpQkFrQ0M7UUFqQ0MsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsT0FBTzthQUNSO1lBQ0QsSUFBSSxNQUFNLENBQUMsdUJBQXVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTzs7OztnQkFBQyxVQUFDLElBQUk7b0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixDQUFDLEVBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7O2dCQUFDLFVBQUMsSUFBSTtvQkFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPOzs7O29CQUFDLFVBQUMsS0FBSzt3QkFDeEIsSUFBSSxLQUFLLENBQUMsS0FBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7NEJBQzlELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO3lCQUN6QjtvQkFDSCxDQUFDLEVBQUMsQ0FBQztnQkFDTCxDQUFDLEVBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07Ozs7Z0JBQ2xDLFVBQUMsSUFBSTtvQkFDSCxPQUFBLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDO2dCQUFoRSxDQUFnRSxFQUNuRSxDQUFDO2dCQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzs7OztnQkFBQyxVQUFDLElBQUk7b0JBQzNCLElBQ0UsSUFBSSxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsRUFDaEU7d0JBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7cUJBQ3pCO2dCQUNILENBQUMsRUFBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7OztJQUVELDRDQUFjOzs7O0lBQWQsVUFBZSxJQUFJO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7O0lBRUQsMENBQVk7Ozs7SUFBWixVQUFhLElBQUk7UUFDZixJQUNFLElBQUksQ0FBQyxlQUFlO1lBQ3BCLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRO2dCQUM1QixJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVc7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVztnQkFDaEMsSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsRUFDakM7WUFDQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELElBQ0UsSUFBSSxDQUFDLFdBQVcsSUFBSSxxQkFBcUI7WUFDekMsSUFBSSxDQUFDLFdBQVcsS0FBSyxtQkFBbUIsRUFDeEM7WUFDQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7SUFFRCxvQ0FBTTs7OztJQUFOLFVBQU8sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBQ0Qsd0NBQVU7Ozs7SUFBVixVQUFXLFNBQW1CO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Ozs7O0lBQ0QsdUNBQVM7Ozs7SUFBVCxVQUFVLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOzs7O0lBQ0QsbURBQXFCOzs7SUFBckI7UUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzs7OztJQUVELDJDQUFhOzs7O0lBQWIsVUFBYyxNQUFNO1FBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Ozs7O0lBRUQsNkNBQWU7Ozs7SUFBZixVQUFnQixJQUErQjs7WUFDdkMsSUFBSSxHQUFHLENBQUMsbUJBQUEsSUFBSSxFQUFrQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU87UUFDckUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLE9BQU87U0FDUjs7WUFDRyxXQUFXLEdBQUcsRUFBRTs7WUFDaEIsU0FBUyxHQUFHLEVBQUU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQywyQkFBMkI7UUFDOUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLElBQXFCO1lBQ2xELHNCQUFzQjtZQUN0QixJQUNFLElBQUksQ0FBQyxRQUFRO2dCQUNiLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDN0Q7Z0JBQ0EsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLHVEQUF1RDtnQkFDdkQsZ0JBQWdCO2dCQUNoQixTQUFTO2dCQUNULEtBQUs7YUFDTjtZQUNELG9CQUFvQjtZQUNwQixJQUNFLElBQUksQ0FBQyxNQUFNO2dCQUNYLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDdkQ7Z0JBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLHFEQUFxRDtnQkFDckQsZ0JBQWdCO2dCQUNoQixTQUFTO2dCQUNULEtBQUs7YUFDTjtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Ozs7O0lBRUQsNENBQWM7Ozs7SUFBZCxVQUFlLE1BQU07UUFBckIsaUJBa0JDO1FBakJDLElBQ0UsSUFBSSxDQUFDLGVBQWU7WUFDcEIsQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVE7Z0JBQzlCLE1BQU0sQ0FBQyxXQUFXLEtBQUssV0FBVztnQkFDbEMsTUFBTSxDQUFDLFdBQVcsS0FBSyxXQUFXO2dCQUNsQyxNQUFNLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQyxFQUNuQztZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLFVBQVU7OztZQUFDO2dCQUNULEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLEtBQUksQ0FBQyxHQUFHLElBQUksS0FBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsS0FBSSxDQUFDLEdBQUcsSUFBSSxLQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLENBQUMsRUFBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDOzs7OztJQUVPLDJDQUFhOzs7O0lBQXJCO1FBQUEsaUJBZUM7UUFkQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFDLElBQUk7WUFDM0IsS0FBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE9BQU87Ozs7O1lBQUMsVUFBQyxHQUFRLEVBQUUsQ0FBQztnQkFDcEQsSUFDRSxHQUFHO29CQUNILElBQUksQ0FBQyxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUM7b0JBQ3hELElBQUksQ0FBQyxVQUFVLEVBQ2Y7b0JBQ0EsS0FBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3hCO1lBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDTCxDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7OztJQUVELDBDQUFZOzs7O0lBQVosVUFBYSxNQUFNO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7SUFDRCxxQ0FBTzs7O0lBQVA7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBQ0QsMkNBQWE7Ozs7SUFBYixVQUFjLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7O0lBQ0QsNENBQWM7OztJQUFkO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs7O0lBQ0QsMkNBQWE7OztJQUFiO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVELG9DQUFNOzs7O0lBQU4sVUFBTyxxQkFBc0I7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7O0lBRUQsZ0RBQWtCOzs7SUFBbEI7UUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN4QyxDQUFDOzs7OztJQUVELHVDQUFTOzs7O0lBQVQsVUFBVSxDQUFDO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFFRCwyQ0FBYTs7OztJQUFiLFVBQWMsTUFBTTtRQUNsQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Ozs7SUFFRCw0Q0FBYzs7O0lBQWQ7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdCLENBQUM7Ozs7SUFFRCx5Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFCLENBQUM7Ozs7SUFFRCxxQ0FBTzs7O0lBQVA7UUFBQSxpQkFNQztRQUxDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxzQkFBTSxJQUFJLENBQUMsYUFBYSxJQUFFLEtBQUssRUFBRSxJQUFJLEtBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0QsVUFBVTs7O1FBQUM7WUFDVCxLQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixLQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsR0FBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7Ozs7SUFFRCxzQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBRUQsc0NBQVE7Ozs7SUFBUixVQUFTLEtBQUs7UUFBZCxpQkFLQztRQUpDLFVBQVU7OztRQUFDO1lBQ1QsS0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbkMsS0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4QixDQUFDLEdBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDOzs7OztJQUVELHdDQUFVOzs7O0lBQVYsVUFBVyxLQUFLO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7O1lBQy9CLGNBQWMsR0FBRyxtQkFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQU87UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQUEsY0FBYyxFQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7OztJQUVELHdDQUFVOzs7O0lBQVYsVUFBVyxLQUFLO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Ozs7SUFVTSx5Q0FBVzs7O0lBQWxCO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzs7O0lBRU0seUNBQVc7OztJQUFsQjtRQUNFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQzs7Z0JBemJGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixxNUdBQXFDOztpQkFFdEM7Ozs7Z0JBWEMsaUJBQWlCOzs7dUJBYWhCLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOytCQUVuQyxLQUFLO3lCQUNMLEtBQUs7K0JBQ0wsS0FBSzs2QkFDTCxLQUFLO2tDQUVMLEtBQUs7NkJBQ0wsS0FBSzt5QkFFTCxLQUFLO2lDQUNMLEtBQUs7aUNBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7NkJBQ0wsS0FBSzsrQkFDTCxLQUFLO2lDQUNMLEtBQUs7K0JBQ0wsS0FBSzs4QkFDTCxLQUFLO3NDQUNMLEtBQUs7MkJBQ0wsS0FBSztnQ0FDTCxLQUFLOzRCQUNMLEtBQUs7Z0NBQ0wsS0FBSzt3Q0FDTCxLQUFLO21DQW1CTCxLQUFLO29DQUVMLEtBQUs7cUNBS0wsS0FBSztnQ0FDTCxLQUFLO21DQUNMLEtBQUs7b0NBRUwsTUFBTTtpQ0FDTixNQUFNOzhCQUNOLE1BQU07Z0NBQ04sTUFBTTtpQ0FDTixNQUFNO2dDQUNOLE1BQU07Z0NBQ04sTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07OEJBQ04sTUFBTTsrQkFDTixNQUFNOzRCQUNOLE1BQU07c0NBQ04sTUFBTTsrQkFDTixNQUFNOzBCQUNOLE1BQU07MEJBQ04sTUFBTTsrQkFDTixNQUFNOztJQTZXVCwwQkFBQztDQUFBLEFBMWJELElBMGJDO1NBcmJZLG1CQUFtQjs7O0lBQzlCLG1DQUMyQjs7SUFDM0IsMkNBQTZCOztJQUM3QixxQ0FBdUI7O0lBQ3ZCLDJDQUE4Qjs7SUFDOUIseUNBQTJCOztJQUUzQiw4Q0FBOEI7O0lBQzlCLHlDQUF5Qjs7SUFFekIscUNBQXlCOztJQUN6Qiw2Q0FBMkM7O0lBQzNDLDZDQUEyQzs7SUFDM0MsdUNBQXVCOztJQUN2QixxQ0FBcUM7O0lBQ3JDLHlDQUF5Qjs7SUFDekIsMkNBQXNCOztJQUN0Qiw2Q0FBMEM7O0lBQzFDLDJDQUFzQjs7SUFDdEIsMENBQTRCOztJQUM1QixrREFBcUM7O0lBQ3JDLHVDQUEwQzs7SUFDMUMsNENBQTRCOztJQUM1Qix3Q0FBbUI7O0lBQ25CLDRDQUF1Qjs7SUFDdkIsb0RBQStCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbUIvQiwrQ0FBa0Q7O0lBRWxELGdEQUlFOztJQUNGLGlEQUE2Qzs7SUFDN0MsNENBQTRCOztJQUM1QiwrQ0FBMkM7O0lBRTNDLGdEQUFpRDs7SUFDakQsNkNBQThDOztJQUM5QywwQ0FBMkM7O0lBQzNDLDRDQUE2Qzs7SUFDN0MsNkNBQThDOztJQUM5Qyw0Q0FBNkM7O0lBQzdDLDRDQUE2Qzs7SUFDN0MsNENBQTZDOztJQUM3QywwQ0FBMkM7O0lBQzNDLDBDQUEyQzs7SUFDM0MsMkNBQTRDOztJQUM1Qyx3Q0FBeUM7O0lBQ3pDLGtEQUFtRDs7SUFDbkQsMkNBQTRDOztJQUM1QyxzQ0FBdUM7O0lBQ3ZDLHNDQUF1Qzs7SUFDdkMsMkNBQTRDOztJQUU1Qyx1Q0FBYzs7SUFDZCwwQ0FBb0I7O0lBQ3BCLHdDQUFlOztJQUNmLHdDQUEyQjs7SUFFM0IsMENBQW1COztJQWtWbkIsdUNBUUU7Ozs7O0lBeFZVLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHcmlkQ29tcG9uZW50IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWdyaWRzXCI7XHJcbmltcG9ydCB7IHRpbWVzIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgeyBCZWZvcmVPcGVuQ2xvc2VFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItaW5wdXRzXCI7XHJcbmltcG9ydCB7IElBY3Rpb25NZW51SXRlbSwgSUNvbHVtbkZpZWxkIH0gZnJvbSBcIi4uL2NvbnN0YW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1jb21tb24tZ3JpZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW5kZXguY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25HcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBWaWV3Q2hpbGQoXCJncmlkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBncmlkOiBHcmlkQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveCA9IHRydWU7XHJcbiAgQElucHV0KCkgbG9hZGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBoaWRkZW5Mb2FkZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhdXRob3JpemVkID0gdHJ1ZTsgLy8gRGF0YXNldOaYr+WQpuaOiOadg++8jOacquaOiOadg+WImeaYvuekuuadg+mZkOmUmeivr+aPkOekulxyXG4gIC8vIG9ubHkgdXNlIGZvciBsb2NhbCBkYXRhIHBhZ2luYXRpb25cclxuICBASW5wdXQoKSBzZWxlY3RlZERpZmZLZXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIGdyaWRIZWlnaHQgPSBcIlwiO1xyXG4gIC8vIOi/meeOqeaEj+W/heWhq++8jOS4jeeEtmZpbHRlciBjb2x1bW5DaG9vc2Vy6YO95Lya5oql6ZSZXHJcbiAgQElucHV0KCkgZ3JpZElkID0gXCJncmlkXCI7XHJcbiAgQElucHV0KCkgcmVzaXplU2V0dGluZ3MgPSB7IG1vZGU6IFwiQXV0b1wiIH07XHJcbiAgQElucHV0KCkgZmlsdGVyU2V0dGluZ3MgPSB7IHR5cGU6IFwiTWVudVwiIH07XHJcbiAgQElucHV0KCkgdGVtcGxhdGU6IGFueTtcclxuICBASW5wdXQoKSBmaWVsZHM6IElDb2x1bW5GaWVsZFtdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSA9IFtdO1xyXG4gIEBJbnB1dCgpIGVkaXRTZXR0aW5ncztcclxuICBASW5wdXQoKSBjb2x1bW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwYWdlU2V0dGluZ3M7XHJcbiAgQElucHV0KCkgYWxsb3dQYWdpbmcgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGFsbG93Um93RHJhZ0FuZERyb3AgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGlwTW9kZSA9IFwiRWxsaXBzaXNXaXRoVG9vbHRpcFwiO1xyXG4gIEBJbnB1dCgpIGNoZWNrQm94V2lkdGggPSAzMjsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNoaWxkR3JpZDtcclxuICBASW5wdXQoKSBmcm96ZW5Db2x1bW5zOyAvLyBjb2wg5pWw6YeP6L+H5bCR55qE5pe25YCZ77yMY2hlY2vlrr3luqbkvJrmi4nkvLjvvIzov5nml7blgJnorr7nva5udWxsXHJcbiAgQElucHV0KCkgY29sdW1uQ2hvb3NlclNldHRpbmdzO1xyXG5cclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzZWxlY3RJZCA9IFtdO1xyXG4gIHN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgaW5kZXhMaXN0ID0gW107XHJcbiAgY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuXHJcbiAgcHVibGljIHRyYW5zbGF0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW5Mb2FkZWQpIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZ3JpZElkID1cclxuICAgICAgdGhpcy5ncmlkSWQgKyBEYXRlLm5vdygpICsgXCJfXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA1KTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7IC8vIG9yIGEgdW5pcXVlIGlkZW50aWZpZXIgaW4geW91ciBvYmplY3RcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZGF0YVNvdXJjZSAmJiBjaGFuZ2VzLmRhdGFTb3VyY2UuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmFsbG93UGFnaW5nICYmXHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5wYWdlU2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZS5sZW5ndGggPiA5XHJcbiAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgcGFnZVNpemVzOiBbXCJBbGxcIiwgXCIyNVwiLCBcIjUwXCIsIFwiMTAwXCJdLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDUwLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfbG9hZCgpIHtcclxuICAgIGlmICghdGhpcy5hdXRob3JpemVkKSB7XHJcbiAgICAgICh0aGlzLmdyaWQubG9jYWxlT2JqIGFzIGFueSkubG9jYWxlU3RyaW5ncy5FbXB0eVJlY29yZCA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5ZT1VfRE9fTk9UX0hBVkVfVEhFX0RBVEFTRVRfUEVSTUlTU0lPTiB8fFxyXG4gICAgICAgIFwiWW91IGRvbid0IGhhdmUgdGhlIGRhdGFzZXQgcGVybWlzc2lvbiB0byB2aWV3IHRoZSByZWNvcmQuXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfZGF0YUJvdW5kKGFyZ3M6IGFueSkge1xyXG4gICAgLy8g5pW05Liq57uE5Lu25Yqg6L295a6M5oiQ5pe255qE5Zue6LCD5Ye95pWwXHJcbiAgICB2YXIgcGFnZXJDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmUtcGFnZXJjb250YWluZXJcIik7XHJcbiAgICBpZiAocGFnZXJDb250YWluZXIpIHtcclxuICAgICAgdmFyIGxpbmtFbGVtZW50cyA9IHBhZ2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZS1saW5rXCIpO1xyXG4gICAgICBsaW5rRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwiaHJlZlwiKTsgLy8gU01QMi0xMDMxMCDliKDpmaTliIbpobXlmajnmoRocmVm5bGe5oCnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YUJvdW5kLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfZXhwb3J0UXVlcnlDZWxsSW5mbyhhcmdzKSB7XHJcbiAgICB0aGlzLmV4cG9ydFF1ZXJ5Q2VsbEluZm8uZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9yb3dEcmFnKGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZy5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWdTdGFydChhcmdzKSB7XHJcbiAgICB0aGlzLnJvd0RyYWdTdGFydC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZERvdWJsZUNsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmREb3VibGVDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBfcm93RGVzZWxlY3RpbmcoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0aW5nLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgLyoqXHJcblx0ICogW3NlbGVjdGlvblNldHRpbmdzXT1cInsgY2hlY2tib3hPbmx5OiB0cnVlIH1cIlxyXG5cdCAgIFtzaG93Q2hlY2tCb3hdPVwidHJ1ZVwiXHJcblx0ICAg5o6n5Lu25L2/55So5pe277yM5b+F6aG76YWN572u5LiK6Z2i5Lik5Liq5bGe5oCn77yM5ZCm5YiZ77yM5YWo6YCJ5Lya5aSx5pWIXHJcblx0ICovXHJcbiAgX3Jvd1NlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICBpZiAoJGV2ZW50LmRhdGEgJiYgJGV2ZW50LmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX2RhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQucHVzaCgkZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGVkKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREaWZmS2V5KSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0UGFnaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgkZXZlbnQuaXNIZWFkZXJDaGVja2JveENsaWNrZWQgJiYgQXJyYXkuaXNBcnJheSgkZXZlbnQuZGF0YSkpIHtcclxuICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gW107XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKF9kYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRldmVudC5kYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdElkID0gdGhpcy5zZWxlY3RJZC5maWx0ZXIoXHJcbiAgICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgICAgaXRlbVt0aGlzLnNlbGVjdGVkRGlmZktleV0gIT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09ICRldmVudC5kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEZXNlbGVjdGVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9vbkNvbnRleHRNZW51KGFyZ3MpIHtcclxuICAgIHRoaXMub25Db250ZXh0TWVudS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkJlZ2luKGFyZ3MpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZERpZmZLZXkgJiZcclxuICAgICAgKGFyZ3MucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJmaWx0ZXJpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09IFwiZmlsdGVyY2hvaWNlcmVxdWVzdFwiIHx8XHJcbiAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyc2VhcmNoYmVnaW5cIlxyXG4gICAgKSB7XHJcbiAgICAgIGFyZ3MuZmlsdGVyQ2hvaWNlQ291bnQgPSAxNTAwMDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJlZ2luLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2goa2V5d29yZHMpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWFyY2goa2V5d29yZHMpO1xyXG4gIH1cclxuICBzZWxlY3RSb3dzKGluZGV4TGlzdDogbnVtYmVyW10pIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGluZGV4TGlzdCk7XHJcbiAgfVxyXG4gIHNlbGVjdFJvdyhpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvdyhpbmRleCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRWaWV3UmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21pc2VDZWxsKCRldmVudCkge1xyXG4gICAgdGhpcy5xdWVyeUNlbGxJbmZvLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNvbnRleHRNZW51T3BlbihhcmdzPzogQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gKGFyZ3MgYXMgQmVmb3JlT3BlbkNsb3NlRXZlbnRBcmdzIHwgYW55KS5yb3dJbmZvLnJvd0RhdGE7XHJcbiAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgYXJncy5jYW5jZWwgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZW5hYmxlSXRlbXMgPSBbXTtcclxuICAgIGxldCBoaWRlSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5yZWZyZXNoKCk7IC8vIOavj+asoeeCueWHu+aMiemSruW8ueeql+WJjemcgOWGjeasoeWIneWni+WMlueKtuaAgSDlkKbliJnkuI3mm7TmlrDvvJtcclxuICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtOiBJQWN0aW9uTWVudUl0ZW0pID0+IHtcclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKuZGlzYWJsZWTnmoTmg4XlhrVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0uZGlzYWJsZWQgfHxcclxuICAgICAgICAoZGF0YS5kaXNhYmxlSXRlbSAmJiBkYXRhLmRpc2FibGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGVuYWJsZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuZW5hYmxlSXRlbXMoXHJcbiAgICAgICAgLy8gXHRbaXRlbS50ZXh0XSxcclxuICAgICAgICAvLyBcdGZhbHNlXHJcbiAgICAgICAgLy8gKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDnlKjkuo7lpITnkIbpg6jliIbmjInpkq7pnIDopoFoaWRl55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmlzSGlkZSB8fFxyXG4gICAgICAgIChkYXRhLmhpZGVJdGVtICYmIGRhdGEuaGlkZUl0ZW0uaW5jbHVkZXMoaXRlbS5pY29uQ3NzKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaGlkZUl0ZW1zLnB1c2goaXRlbS50ZXh0KTtcclxuICAgICAgICAvLyB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKGVuYWJsZUl0ZW1zLCBmYWxzZSk7XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUuaGlkZUl0ZW1zKGhpZGVJdGVtcywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkhhbmRsZXIoJGV2ZW50KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREaWZmS2V5ICYmXHJcbiAgICAgICgkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwicGFnaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwiZmlsdGVyaW5nXCIgfHxcclxuICAgICAgICAkZXZlbnQucmVxdWVzdFR5cGUgPT09IFwic29ydGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hvb3NlUmVjb3JkcygpO1xyXG4gICAgICAgIHRoaXMuc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3Rpb25IYW5kbGVyLmVtaXQoJGV2ZW50KTtcclxuICAgIHRoaXMuYWN0aW9uQ29tcGxldGUuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaG9vc2VSZWNvcmRzKCkge1xyXG4gICAgdGhpcy5pbmRleExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5nZXRDdXJyZW50Vmlld1JlY29yZHMoKS5mb3JFYWNoKChyb3c6IGFueSwgaSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHJvdyAmJlxyXG4gICAgICAgICAgZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IHJvd1t0aGlzLnNlbGVjdGVkRGlmZktleV0gJiZcclxuICAgICAgICAgIGRhdGEuaXNTZWxlY3RlZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5pbmRleExpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5ncmlkLnNlbGVjdFJvd3ModGhpcy5pbmRleExpc3QpO1xyXG4gIH1cclxuXHJcbiAgX3JlY29yZENsaWNrKCRldmVudCkge1xyXG4gICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaCgpO1xyXG4gIH1cclxuICBfcm93U2VsZWN0aW5nKGUpIHtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nLmVtaXQoZSk7XHJcbiAgfVxyXG4gIHJlZnJlc2hDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hDb2x1bW5zKCk7XHJcbiAgfVxyXG4gIHJlZnJlc2hIZWFkZXIoKSB7XHJcbiAgICB0aGlzLmdyaWQucmVmcmVzaEhlYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0KGV4Y2VsRXhwb3J0UHJvcGVydGllcz8pIHtcclxuICAgIHRoaXMuZ3JpZC5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRSZWNvcmRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5nZXRTZWxlY3RlZFJlY29yZHMoKTtcclxuICB9XHJcblxyXG4gIG9uUm93RHJvcChlKSB7XHJcbiAgICB0aGlzLnJvd0Ryb3AuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIF9yb3dEYXRhQm91bmQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlU3lzdGVtUm93ICYmICRldmVudC5kYXRhICYmICRldmVudC5kYXRhLklzU3lzdGVtKSB7XHJcbiAgICAgICRldmVudC5yb3cuY2xhc3NMaXN0LmFkZChcImUtZGlzYWJsZWRcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0RhdGFCb3VuZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgIHRoaXMuZ3JpZC5jbGVhclNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZXhjZWxFeHBvcnQoKSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoKTtcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuYWRkUmVjb3JkKHsgLi4udGhpcy5kZWZhdWx0UmVjb3JkLCBpc05ldzogdHJ1ZSB9LCAwKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KDApO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBzYXZlSXRlbSgpIHtcclxuICAgIHRoaXMuZ3JpZC5lbmRFZGl0KCk7XHJcbiAgfVxyXG5cclxuICBlZGl0SXRlbShpbmRleCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICAgIHRoaXMuZ3JpZC5zdGFydEVkaXQoKTtcclxuICAgIH0sIDMwKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coTnVtYmVyKGluZGV4KSk7XHJcbiAgICB2YXIgc2VsZWN0ZWRSZWNvcmQgPSB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKClbMF0gYXMgYW55O1xyXG4gICAgdGhpcy5ncmlkLmRlbGV0ZVJlY29yZChzZWxlY3RlZFJlY29yZCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsSXRlbShpbmRleCkge1xyXG4gICAgdGhpcy5ncmlkLmNsb3NlRWRpdCgpO1xyXG4gICAgdGhpcy5kZWxldGVJdGVtKGluZGV4KTtcclxuICB9XHJcbiAgcHVibGljIGluaXRMaXN0ID0gKG51bSA9IDI1LCBrZXkgPSBcIklkXCIpID0+IHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIHRpbWVzKG51bSwgKGkpID0+IHtcclxuICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICBba2V5XTogaSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH07XHJcbiAgcHVibGljIHNob3dMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGlkZUxvYWRpbmcoKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -418,7 +418,9 @@ var DrawerFormComponent = /** @class */ (function () {
|
|
|
418
418
|
/** @type {?} */
|
|
419
419
|
var value = event.value;
|
|
420
420
|
if (field.fieldFormType === "Datepicker") {
|
|
421
|
-
|
|
421
|
+
/** @type {?} */
|
|
422
|
+
var date = moment(value);
|
|
423
|
+
value = date.isValid() ? date.format("YYYY-MM-DD") : null;
|
|
422
424
|
}
|
|
423
425
|
this.onChange(value, field);
|
|
424
426
|
};
|
|
@@ -450,7 +452,8 @@ var DrawerFormComponent = /** @class */ (function () {
|
|
|
450
452
|
this.onBlur(field);
|
|
451
453
|
/** @type {?} */
|
|
452
454
|
var $input = event.model.element.querySelector("input");
|
|
453
|
-
if (!$input) {
|
|
455
|
+
if (!$input || !$input.value) {
|
|
456
|
+
delete this.dateValidMap[field.formKey];
|
|
454
457
|
return;
|
|
455
458
|
}
|
|
456
459
|
/** @type {?} */
|
|
@@ -716,4 +719,4 @@ if (false) {
|
|
|
716
719
|
*/
|
|
717
720
|
DrawerFormComponent.prototype.ref;
|
|
718
721
|
}
|
|
719
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDO0FBRXJCO0lBMkNFLDZCQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJDdkIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFNekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNoQixpQkFBWSxHQUFHO1lBQ3BDLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFDeUIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdqRCxDQUFDO1FBU0wsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFFN0IscUJBQWdCLEdBQTBCLEVBQUUsQ0FB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QWlCOzs7NEJBK0JoQixLQUFLLFNBQUMsVUFBVTs2QkFDaEIsS0FBSyxTQUFDLFlBQVk7aUNBRWxCLEtBQUssU0FBQyxnQkFBZ0I7d0NBQ3RCLEtBQUssU0FBQyx1QkFBdUI7K0JBRzdCLEtBQUssU0FBQyxVQUFVOzZCQUNoQixLQUFLLFNBQUMsWUFBWTsrQkFDbEIsS0FBSyxTQUFDLGNBQWM7bUNBTXBCLEtBQUssU0FBQyxrQkFBa0I7dUJBRXhCLEtBQUssU0FBQyxNQUFNOzZCQUNaLE1BQU0sU0FBQyxZQUFZOzhCQUNuQixNQUFNLFNBQUMsYUFBYTt5QkFLcEIsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7NkJBRTNDLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQ0FFbEUsWUFBWSxTQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFOzZCQTZRakUsWUFBWSxTQUFDLFdBQVc7O0lBNEQzQiwwQkFBQztDQUFBLEFBM1dELElBMldDO1NBdFdZLG1CQUFtQjs7O0lBQzlCLHdDQUFpRDs7SUFDakQseUNBQTREOztJQUU1RCw2Q0FBMEQ7O0lBQzFELG9EQUN3RDs7SUFFeEQsMkNBQXdDOztJQUN4Qyx5Q0FBdUM7O0lBQ3ZDLDJDQUtFOztJQUNGLCtDQUFpRDs7SUFFakQsbUNBQThDOztJQUM5Qyx5Q0FBMkU7O0lBQzNFLDBDQUdLOztJQUVMLHFDQUNtQzs7Ozs7SUFDbkMseUNBQ2dEOzs7OztJQUNoRCxnREFDdUQ7O0lBRXZELHVDQUE2Qjs7SUFFN0IsK0NBQTZDOztJQUM3Qyw0Q0FBNEM7O0lBQzVDLDJDQUEyQzs7SUFzUTNDLHlDQUNrRDs7SUFDbEQsMENBQWdCOztJQUNoQiw0Q0FBc0I7Ozs7O0lBdlFWLGtDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZpbHRlcmluZ0V2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWRhdGFcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgRW1haWxQYXR0ZXJuLFxyXG4gIEZpZWxkSXRlbSxcclxuICBmaWx0ZXJTaG93U2VjdGlvbixcclxuICBTZWN0aW9uSXRlbSxcclxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwic2VjdGlvbnNcIikgX3NlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcbiAgQElucHV0KFwib3B0aW9uc01hcFwiKSBvcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KFwic2hvd0FuY2hvclwiKSBzaG93QW5jaG9yID0gdHJ1ZTtcclxuICBASW5wdXQoXCJvcHRpb25GaWVsZHNcIikgb3B0aW9uRmllbGRzID0ge1xyXG4gICAgdGV4dDogXCJ0ZXh0XCIsXHJcbiAgICB2YWx1ZTogXCJjb2RlXCIsXHJcbiAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxyXG4gICAgZ3JvdXBCeTogbnVsbCxcclxuICB9O1xyXG4gIEBJbnB1dChcInNob3dGaWx0ZXJOdW1iZXJcIikgc2hvd0ZpbHRlck51bWJlciA9IDEwO1xyXG5cclxuICBASW5wdXQoXCJmb3JtXCIpIGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBAT3V0cHV0KFwiZm9ybUNoYW5nZVwiKSBmb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xyXG4gIEBPdXRwdXQoXCJmaWVsZENoYW5nZVwiKSBmaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZmllbGQ6IEZpZWxkSXRlbTtcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgfT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImRyYXdlckZvcm1FbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICByb290RWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oXCJjdXN0b21UZW1wbGF0ZUNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tU2VjdGlvbkNvbnRhaW5lclwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBwcml2YXRlIHNlY3Rpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcblxyXG4gIHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIGZpbHRlck9wdGlvbnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gIGZpZWxkVmFsaWRNYXA6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZvcm0odGhpcy5zZWN0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcy5mb3JtICYmICFjaGFuZ2VzLmZvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvcm1DaGFuZ2UoXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLnByZXZpb3VzVmFsdWUsXHJcbiAgICAgICAgY2hhbmdlcy5mb3JtLmN1cnJlbnRWYWx1ZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dBbmNob3IpIHtcclxuICAgICAgdGhpcy5pbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tVGVtcGxhdGVSZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gW107XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJDdXN0b21cIikge1xyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tVGVtcGxhdGUsIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tRmllbGRzW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21TZWN0aW9uUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21TZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChzZWN0aW9uKSA9PiBzZWN0aW9uLmN1c3RvbUtleVxyXG4gICAgICApO1xyXG4gICAgICBjb250YWluZXJzLmZvckVhY2goKGNvbnRhaW5lciwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBjdXN0b21LZXkgPSBjdXN0b21TZWN0aW9uc1tpbmRleF0uY3VzdG9tS2V5O1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGVbY3VzdG9tS2V5XSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21TZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmIChwcmV2aW91c1trZXldICE9PSBjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ2V0RmllbGQoa2V5KTtcclxuICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGb3JtKHNlY3Rpb25zOiBTZWN0aW9uSXRlbVtdKSB7XHJcbiAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uOiBTZWN0aW9uSXRlbSkgPT4ge1xyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJFbWFpbFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgICAgY2FzZSBcIkNoZWNrYm94XCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJNdWx0aVNlbGVjdFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcIlN3aXRjaFwiOlxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOihqOWNleaPkOS6pOWJjeS8muinpuWPkei/meS4quWHveaVsFxyXG4gIHVwZGF0ZUZvcm0odmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgbmV3Rm9ybSA9IHtcclxuICAgICAgLi4udGhpcy5mb3JtLFxyXG4gICAgICBbZmllbGQuZm9ybUtleV06IHZhbHVlLFxyXG4gICAgfTtcclxuICAgIC8vIOS/ruWkjemUmeivr+aPkOekuuaYvuekuiBidWfvvIzkuI3orr7nva7kuIDkuIvmnInmpoLnjofmi7/kuI3liLDmnIDmlrDnmoTlgLxcclxuICAgIHRoaXMuZm9ybSA9IG5ld0Zvcm07XHJcbiAgICB0aGlzLmZvcm1DaGFuZ2UuZW1pdChuZXdGb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGZpZWxkSXRlbTogRmllbGRJdGVtID0gbnVsbDtcclxuICAgIHRoaXMuc2VjdGlvbnMuZmluZCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBmaWVsZEl0ZW0gPSBzZWN0aW9uLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQuZm9ybUtleSA9PT0gZm9ybUtleSk7XHJcbiAgICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEl0ZW07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIikge1xyXG4gICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBjb25zdCAkaW5wdXQgPSBldmVudC5tb2RlbC5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgIGlmICghJGlucHV0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoJGlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsLCBmaWVsZCk7XHJcbiAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0gfHwgW10sIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIiAmJiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pO1xyXG4gICAgICByZXR1cm4gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLnRvRGF0ZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
722
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxZQUFZLEVBRVosaUJBQWlCLEdBRWxCLE1BQU0sYUFBYSxDQUFDO0FBRXJCO0lBMkNFLDZCQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJDdkIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDNUIsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFNekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNoQixpQkFBWSxHQUFHO1lBQ3BDLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFDeUIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdqRCxDQUFDO1FBU0wsYUFBUSxHQUFrQixFQUFFLENBQUM7UUFFN0IscUJBQWdCLEdBQTBCLEVBQUUsQ0FB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O0lBd1EzQyx5Q0FDa0Q7O0lBQ2xELDBDQUFnQjs7SUFDaEIsNENBQXNCOzs7OztJQXpRVixrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJpbmdFdmVudEFyZ3MgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1kYXRhXCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQge1xyXG4gIEVtYWlsUGF0dGVybixcclxuICBGaWVsZEl0ZW0sXHJcbiAgZmlsdGVyU2hvd1NlY3Rpb24sXHJcbiAgU2VjdGlvbkl0ZW0sXHJcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kcmF3ZXItZm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZHJhd2VyLWZvcm0uY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcmF3ZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dChcInNlY3Rpb25zXCIpIF9zZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dChcIm9wdGlvbnNNYXBcIikgb3B0aW9uc01hcDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcblxyXG4gIEBJbnB1dChcImN1c3RvbVRlbXBsYXRlXCIpIGN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dChcImN1c3RvbVNlY3Rpb25UZW1wbGF0ZVwiKVxyXG4gIGN1c3RvbVNlY3Rpb25UZW1wbGF0ZTogUmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIEBJbnB1dChcImRpc2FibGVkXCIpIGZvcm1EaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dChcInNob3dBbmNob3JcIikgc2hvd0FuY2hvciA9IHRydWU7XHJcbiAgQElucHV0KFwib3B0aW9uRmllbGRzXCIpIG9wdGlvbkZpZWxkcyA9IHtcclxuICAgIHRleHQ6IFwidGV4dFwiLFxyXG4gICAgdmFsdWU6IFwiY29kZVwiLFxyXG4gICAgZGlzYWJsZWQ6IFwiZGlzYWJsZWRcIixcclxuICAgIGdyb3VwQnk6IG51bGwsXHJcbiAgfTtcclxuICBASW5wdXQoXCJzaG93RmlsdGVyTnVtYmVyXCIpIHNob3dGaWx0ZXJOdW1iZXIgPSAxMDtcclxuXHJcbiAgQElucHV0KFwiZm9ybVwiKSBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgQE91dHB1dChcImZvcm1DaGFuZ2VcIikgZm9ybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPHN0cmluZywgYW55Pj4oKTtcclxuICBAT3V0cHV0KFwiZmllbGRDaGFuZ2VcIikgZmllbGRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGZpZWxkOiBGaWVsZEl0ZW07XHJcbiAgICB2YWx1ZTogYW55O1xyXG4gIH0+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkcmF3ZXJGb3JtRWxcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcm9vdEVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tVGVtcGxhdGVDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVNlY3Rpb25Db250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBzZWN0aW9uQ29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG5cclxuICBzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICBmaWx0ZXJPcHRpb25zTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuICBmaWVsZFZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gIGRhdGVWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLl9zZWN0aW9ucykge1xyXG4gICAgICB0aGlzLnNlY3Rpb25zID0gZmlsdGVyU2hvd1NlY3Rpb24oY2hhbmdlcy5fc2VjdGlvbnMuY3VycmVudFZhbHVlKTtcclxuICAgICAgdGhpcy5mb3JtYXRGb3JtKHRoaXMuc2VjdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuZm9ybSAmJiAhY2hhbmdlcy5mb3JtLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tGb3JtQ2hhbmdlKFxyXG4gICAgICAgIGNoYW5nZXMuZm9ybS5wcmV2aW91c1ZhbHVlLFxyXG4gICAgICAgIGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVSZW5kZXIodGhpcy5jb250YWluZXJzKTtcclxuICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcih0aGlzLnNlY3Rpb25Db250YWluZXJzKTtcclxuICAgIHRoaXMuY29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVycyA9IGNvbnRhaW5lcnM7XHJcbiAgICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMuY2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pID0+IHtcclxuICAgICAgICB0aGlzLnNlY3Rpb25Db250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVycyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5zaG93QW5jaG9yKSB7XHJcbiAgICAgIHRoaXMuaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbUZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+IHtcclxuICAgICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiQ3VzdG9tXCIpIHtcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgY29udGFpbmVycy5mb3JFYWNoKChjb250YWluZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVRlbXBsYXRlLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbUZpZWxkc1tpbmRleF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZSAmJiBjb250YWluZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY3VzdG9tU2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAoc2VjdGlvbikgPT4gc2VjdGlvbi5jdXN0b21LZXlcclxuICAgICAgKTtcclxuICAgICAgY29udGFpbmVycy5mb3JFYWNoKChjb250YWluZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tS2V5ID0gY3VzdG9tU2VjdGlvbnNbaW5kZXhdLmN1c3RvbUtleTtcclxuICAgICAgICBjb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY3VzdG9tU2VjdGlvblRlbXBsYXRlW2N1c3RvbUtleV0sIHtcclxuICAgICAgICAgICRpbXBsaWNpdDogY3VzdG9tU2VjdGlvbnNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRm9ybUNoYW5nZShwcmV2aW91czogUmVjb3JkPHN0cmluZywgYW55PiwgY3VycmVudDogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgT2JqZWN0LmVudHJpZXMoY3VycmVudCkuZm9yRWFjaCgoW2tleSwgY3VycmVudFZhbHVlXSkgPT4ge1xyXG4gICAgICBpZiAocHJldmlvdXNba2V5XSAhPT0gY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGtleSk7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSkge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZmllbGRGb3JtVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiVGV4dFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgICAgY2FzZSBcIlRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gXCJcIjtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJUYWdzXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiTXVsdGlTZWxlY3RcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJTd2l0Y2hcIjpcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDooajljZXmj5DkuqTliY3kvJrop6blj5Hov5nkuKrlh73mlbBcclxuICB1cGRhdGVGb3JtKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGNvbnN0IG5ld0Zvcm0gPSB7XHJcbiAgICAgIC4uLnRoaXMuZm9ybSxcclxuICAgICAgW2ZpZWxkLmZvcm1LZXldOiB2YWx1ZSxcclxuICAgIH07XHJcbiAgICAvLyDkv67lpI3plJnor6/mj5DnpLrmmL7npLogYnVn77yM5LiN6K6+572u5LiA5LiL5pyJ5qaC546H5ou/5LiN5Yiw5pyA5paw55qE5YC8XHJcbiAgICB0aGlzLmZvcm0gPSBuZXdGb3JtO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQobmV3Rm9ybSk7XHJcbiAgICB0aGlzLmZpZWxkQ2hhbmdlLmVtaXQoeyBmaWVsZCwgdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBmb3JtSXRlbVZhbGlkYXRvcihmaWVsZDogRmllbGRJdGVtLCBpc0F1dG8gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XHJcbiAgICBpZiAoZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgaXNWYWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICAgPyB2YWx1ZS5sZW5ndGggIT09IDBcclxuICAgICAgICA6ICFbbnVsbCwgdW5kZWZpbmVkLCBcIlwiXS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkVtYWlsXCIgJiYgdmFsdWUpIHtcclxuICAgICAgaXNWYWxpZCA9IEVtYWlsUGF0dGVybi50ZXN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heGxlbmd0aCkge1xyXG4gICAgICBpc1ZhbGlkID0gU3RyaW5nKHZhbHVlKS5sZW5ndGggPD0gZmllbGQubWF4bGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWlubGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA+PSBmaWVsZC5taW5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5tYXgpIHtcclxuICAgICAgaXNWYWxpZCA9IHZhbHVlIDw9IGZpZWxkLm1heDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1pbikge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPj0gZmllbGQubWluO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgdHlwZW9mIGZpZWxkLnZhbGlkYXRvciA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBmaWVsZC52YWxpZGF0b3IuY2FsbChudWxsLCB2YWx1ZSwgZmllbGQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0F1dG8pIHtcclxuICAgICAgdGhpcy5maWVsZFZhbGlkTWFwW2ZpZWxkLmZvcm1LZXldID0gaXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHJlQ2hlY2tGb3JtSXNWYWxpZCgpIHtcclxuICAgIGxldCBmb3JtSXNWYWxpZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb24pID0+XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZm9ybUlzVmFsaWQgPSB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKSAmJiBmb3JtSXNWYWxpZDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gZm9ybUlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybUlzVmFsaWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9ucy5ldmVyeSgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZXZlcnkoKGZpZWxkKSA9PiB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkLCB0cnVlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZChmb3JtS2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBmaWVsZEl0ZW06IEZpZWxkSXRlbSA9IG51bGw7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZpbmQoKHNlY3Rpb24pID0+IHtcclxuICAgICAgZmllbGRJdGVtID0gc2VjdGlvbi5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmZvcm1LZXkgPT09IGZvcm1LZXkpO1xyXG4gICAgICByZXR1cm4gZmllbGRJdGVtO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmllbGRJdGVtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxsRnVuY3Rpb24oZm46IEZ1bmN0aW9uLCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5mb3JtSXRlbVZhbGlkYXRvcihhcmdzWzFdIHx8IGFyZ3NbMF0pO1xyXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dCh2YWx1ZTogc3RyaW5nLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbklucHV0LCB2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25Db21wb25lbnRDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKCFldmVudC5pc0ludGVyYWN0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbHVlID0gZXZlbnQudmFsdWU7XHJcbiAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSA9PT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSk7XHJcbiAgICAgIHZhbHVlID0gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UodmFsdWU6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlLCBmaWVsZCk7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkNoYW5nZSwgdmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVBpY2tlckJsdXIoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5vbkJsdXIoZmllbGQpO1xyXG5cclxuICAgIGNvbnN0ICRpbnB1dCA9IGV2ZW50Lm1vZGVsLmVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xyXG4gICAgaWYgKCEkaW5wdXQgfHwgISRpbnB1dC52YWx1ZSkge1xyXG4gICAgICBkZWxldGUgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoJGlucHV0LnZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgOiBudWxsLCBmaWVsZCk7XHJcbiAgICB0aGlzLmRhdGVWYWxpZE1hcFtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICB0aGlzLmNhbGxGdW5jdGlvbihmaWVsZC5vbkZvY3VzLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25CbHVyLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlcmluZyhldmVudDogRmlsdGVyaW5nRXZlbnRBcmdzLCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeSgpO1xyXG4gICAgaWYgKGV2ZW50LnRleHQpIHtcclxuICAgICAgcXVlcnkud2hlcmUodGhpcy5vcHRpb25GaWVsZHMudGV4dCwgXCJjb250YWluc1wiLCBldmVudC50ZXh0LCB0cnVlKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnVwZGF0ZURhdGEodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0gfHwgW10sIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmIChmaWVsZC5maWVsZEZvcm1UeXBlID09PSBcIkRhdGVwaWNrZXJcIiAmJiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0aGlzLmZvcm1bZmllbGQuZm9ybUtleV0pO1xyXG4gICAgICByZXR1cm4gZGF0ZS5pc1ZhbGlkKCkgPyBkYXRlLnRvRGF0ZSgpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgfVxyXG5cclxuICBnZXREaXNhYmxlZChmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtRGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZpZWxkLmRpc2FibGVkID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmRpc2FibGVkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25GaWVsZHMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKFtcIkRyb3Bkb3duXCIsIFwiQXV0b0NvbXBsZXRlXCJdLmluY2x1ZGVzKGZpZWxkLmZpZWxkRm9ybVR5cGUpKSB7XHJcbiAgICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uRmllbGRzLCBncm91cEJ5OiBmaWVsZC5ncm91cEtleSB8fCBudWxsIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25GaWVsZHM7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKFwic2VjdGlvbkVsXCIpXHJcbiAgc2VjdGlvbkVsczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcclxuICBzY3JvbGxJbmRleCA9IDA7XHJcbiAgaXNDbGlja0FuY2hvciA9IGZhbHNlO1xyXG5cclxuICBvbkNsaWNrQW5jaG9yKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25JdGVtcyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPSB0aGlzLnNlY3Rpb25FbHMudG9BcnJheSgpLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgc2VjdGlvbi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgKiByYXRpbztcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* Generated from: lib/form/richtexteditor/ai-config.ts
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
+
*/
|
|
6
|
+
import * as tslib_1 from "tslib";
|
|
7
|
+
/**
|
|
8
|
+
* @record
|
|
9
|
+
*/
|
|
10
|
+
export function AIConfig() { }
|
|
11
|
+
if (false) {
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
AIConfig.prototype.endpoint;
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
AIConfig.prototype.apiKey;
|
|
16
|
+
/** @type {?} */
|
|
17
|
+
AIConfig.prototype.deployment;
|
|
18
|
+
/** @type {?} */
|
|
19
|
+
AIConfig.prototype.apiVersion;
|
|
20
|
+
/** @type {?} */
|
|
21
|
+
AIConfig.prototype.enabled;
|
|
22
|
+
}
|
|
23
|
+
// 从环境配置获取AI配置
|
|
24
|
+
/**
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
export function getAIConfig() {
|
|
28
|
+
return {
|
|
29
|
+
endpoint: "https://aidevused.openai.azure.com/",
|
|
30
|
+
apiKey: "ccba76e279f64653a50ac4fee90afe5c",
|
|
31
|
+
deployment: "gpt-4",
|
|
32
|
+
apiVersion: "2025-01-01-preview",
|
|
33
|
+
enabled: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// 检查配置是否有效
|
|
37
|
+
/**
|
|
38
|
+
* @param {?} config
|
|
39
|
+
* @return {?}
|
|
40
|
+
*/
|
|
41
|
+
export function isAIConfigValid(config) {
|
|
42
|
+
// 检查是否为aidevused端点且有有效API密钥
|
|
43
|
+
return !!((config.endpoint &&
|
|
44
|
+
config.apiKey &&
|
|
45
|
+
config.deployment &&
|
|
46
|
+
config.enabled &&
|
|
47
|
+
config.endpoint === "https://aidevused.openai.azure.com/" &&
|
|
48
|
+
config.apiKey !== "your-api-key-here") // Azure OpenAI API密钥通常以sk-开头
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
// 从后端API获取AI配置(推荐方式)
|
|
52
|
+
/**
|
|
53
|
+
* @return {?}
|
|
54
|
+
* @this {*}
|
|
55
|
+
*/
|
|
56
|
+
export function getAIConfigFromBackend() {
|
|
57
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
58
|
+
return tslib_1.__generator(this, function (_a) {
|
|
59
|
+
try {
|
|
60
|
+
// 这里应该调用你的后端API来获取AI配置
|
|
61
|
+
// 例如:return await this.http.get('/api/ai-config');
|
|
62
|
+
// 临时返回默认配置
|
|
63
|
+
return [2 /*return*/, getAIConfig()];
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error("Failed to get AI config from backend:", error);
|
|
67
|
+
return [2 /*return*/, getAIConfig()];
|
|
68
|
+
}
|
|
69
|
+
return [2 /*return*/];
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY29uZmlnLmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL3JpY2h0ZXh0ZWRpdG9yL2FpLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSw4QkFNQzs7O0lBTEMsNEJBQWlCOztJQUNqQiwwQkFBZTs7SUFDZiw4QkFBbUI7O0lBQ25CLDhCQUFtQjs7SUFDbkIsMkJBQWlCOzs7Ozs7QUFJbkIsTUFBTSxVQUFVLFdBQVc7SUFDekIsT0FBTztRQUNMLFFBQVEsRUFBRSxxQ0FBcUM7UUFDL0MsTUFBTSxFQUFFLGtDQUFrQztRQUMxQyxVQUFVLEVBQUUsT0FBTztRQUNuQixVQUFVLEVBQUUsb0JBQW9CO1FBQ2hDLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQztBQUNKLENBQUM7Ozs7OztBQUdELE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBZ0I7SUFDOUMsNEJBQTRCO0lBQzVCLE9BQU8sQ0FBQyxDQUFDLENBQ1AsQ0FDRSxNQUFNLENBQUMsUUFBUTtRQUNmLE1BQU0sQ0FBQyxNQUFNO1FBQ2IsTUFBTSxDQUFDLFVBQVU7UUFDakIsTUFBTSxDQUFDLE9BQU87UUFDZCxNQUFNLENBQUMsUUFBUSxLQUFLLHFDQUFxQztRQUN6RCxNQUFNLENBQUMsTUFBTSxLQUFLLG1CQUFtQixDQUN0QyxDQUFDLDZCQUE2QjtLQUNoQyxDQUFDO0FBQ0osQ0FBQzs7Ozs7O0FBR0QsTUFBTSxVQUFnQixzQkFBc0I7OztZQUMxQyxJQUFJO2dCQUNGLHVCQUF1QjtnQkFDdkIsbURBQW1EO2dCQUVuRCxXQUFXO2dCQUNYLHNCQUFPLFdBQVcsRUFBRSxFQUFDO2FBQ3RCO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDOUQsc0JBQU8sV0FBVyxFQUFFLEVBQUM7YUFDdEI7Ozs7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFJIFNlcnZpY2UgQ29uZmlndXJhdGlvblxyXG5leHBvcnQgaW50ZXJmYWNlIEFJQ29uZmlnIHtcclxuICBlbmRwb2ludDogc3RyaW5nO1xyXG4gIGFwaUtleTogc3RyaW5nO1xyXG4gIGRlcGxveW1lbnQ6IHN0cmluZztcclxuICBhcGlWZXJzaW9uOiBzdHJpbmc7XHJcbiAgZW5hYmxlZDogYm9vbGVhbjtcclxufVxyXG5cclxuLy8g5LuO546v5aKD6YWN572u6I635Y+WQUnphY3nva5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFJQ29uZmlnKCk6IEFJQ29uZmlnIHtcclxuICByZXR1cm4ge1xyXG4gICAgZW5kcG9pbnQ6IFwiaHR0cHM6Ly9haWRldnVzZWQub3BlbmFpLmF6dXJlLmNvbS9cIixcclxuICAgIGFwaUtleTogXCJjY2JhNzZlMjc5ZjY0NjUzYTUwYWM0ZmVlOTBhZmU1Y1wiLFxyXG4gICAgZGVwbG95bWVudDogXCJncHQtNFwiLFxyXG4gICAgYXBpVmVyc2lvbjogXCIyMDI1LTAxLTAxLXByZXZpZXdcIixcclxuICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgfTtcclxufVxyXG5cclxuLy8g5qOA5p+l6YWN572u5piv5ZCm5pyJ5pWIXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0FJQ29uZmlnVmFsaWQoY29uZmlnOiBBSUNvbmZpZyk6IGJvb2xlYW4ge1xyXG4gIC8vIOajgOafpeaYr+WQpuS4umFpZGV2dXNlZOerr+eCueS4lOacieacieaViEFQSeWvhumSpVxyXG4gIHJldHVybiAhIShcclxuICAgIChcclxuICAgICAgY29uZmlnLmVuZHBvaW50ICYmXHJcbiAgICAgIGNvbmZpZy5hcGlLZXkgJiZcclxuICAgICAgY29uZmlnLmRlcGxveW1lbnQgJiZcclxuICAgICAgY29uZmlnLmVuYWJsZWQgJiZcclxuICAgICAgY29uZmlnLmVuZHBvaW50ID09PSBcImh0dHBzOi8vYWlkZXZ1c2VkLm9wZW5haS5henVyZS5jb20vXCIgJiZcclxuICAgICAgY29uZmlnLmFwaUtleSAhPT0gXCJ5b3VyLWFwaS1rZXktaGVyZVwiXHJcbiAgICApIC8vIEF6dXJlIE9wZW5BSSBBUEnlr4bpkqXpgJrluLjku6Vzay3lvIDlpLRcclxuICApO1xyXG59XHJcblxyXG4vLyDku47lkI7nq69BUEnojrflj5ZBSemFjee9ru+8iOaOqOiNkOaWueW8j++8iVxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QUlDb25maWdGcm9tQmFja2VuZCgpOiBQcm9taXNlPEFJQ29uZmlnPiB7XHJcbiAgdHJ5IHtcclxuICAgIC8vIOi/memHjOW6lOivpeiwg+eUqOS9oOeahOWQjuerr0FQSeadpeiOt+WPlkFJ6YWN572uXHJcbiAgICAvLyDkvovlpoLvvJpyZXR1cm4gYXdhaXQgdGhpcy5odHRwLmdldCgnL2FwaS9haS1jb25maWcnKTtcclxuXHJcbiAgICAvLyDkuLTml7bov5Tlm57pu5jorqTphY3nva5cclxuICAgIHJldHVybiBnZXRBSUNvbmZpZygpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGdldCBBSSBjb25maWcgZnJvbSBiYWNrZW5kOlwiLCBlcnJvcik7XHJcbiAgICByZXR1cm4gZ2V0QUlDb25maWcoKTtcclxuICB9XHJcbn1cclxuIl19
|