igniteui-angular 18.1.0-beta.1 → 18.1.0
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/esm2022/lib/combo/combo.common.mjs +8 -8
- package/esm2022/lib/combo/combo.component.mjs +3 -3
- package/esm2022/lib/grids/headers/grid-header-group.component.mjs +3 -3
- package/esm2022/lib/grids/state-base.directive.mjs +1 -1
- package/esm2022/lib/grids/state.directive.mjs +5 -5
- package/esm2022/lib/icon/icon.service.mjs +3 -3
- package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +22 -4
- package/esm2022/lib/select/select.component.mjs +8 -8
- package/esm2022/lib/services/overlay/overlay.mjs +27 -16
- package/esm2022/lib/services/overlay/utilities.mjs +1 -1
- package/esm2022/lib/services/public_api.mjs +6 -6
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +3 -3
- package/esm2022/lib/tree/tree-node/tree-node.component.mjs +3 -3
- package/esm2022/lib/tree/tree.component.mjs +5 -5
- package/fesm2022/igniteui-angular.mjs +118 -89
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/stepper/_stepper-theme.scss +7 -7
- package/lib/grids/state-base.directive.d.ts +0 -1
- package/lib/grids/state.directive.d.ts +4 -3
- package/lib/icon/icon.service.d.ts +1 -1
- package/lib/navigation-drawer/navigation-drawer.directives.d.ts +21 -3
- package/lib/services/overlay/overlay.d.ts +16 -6
- package/lib/services/overlay/utilities.d.ts +7 -1
- package/lib/services/public_api.d.ts +5 -5
- package/package.json +2 -2
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -619,4 +619,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
619
619
|
}] }, { type: i0.ViewContainerRef }, { type: i0.EnvironmentInjector }, { type: i0.Injector }], propDecorators: { options: [{
|
|
620
620
|
type: Input
|
|
621
621
|
}] } });
|
|
622
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtYmFzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvc3RhdGUtYmFzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBb0IsTUFBTSxFQUFFLGVBQWUsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLCtDQUErQyxDQUFDO0FBRXBILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFDSCwwQkFBMEIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFDOUUseUJBQXlCLEVBQXVCLDJCQUEyQixFQUM5RSxNQUFNLHdDQUF3QyxDQUFDO0FBR2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXpELE9BQU8sRUFBWSxhQUFhLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXVGdkQsbUJBQW1CO0FBQ25CLGlEQUFpRDtBQUNqRCwwQkFBMEI7QUFFMUIsTUFBTSxPQUFPLHlCQUF5QjtJQXVVbEM7Ozs7Ozs7O09B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UUFBUSxFQUFFLENBQUM7Z0JBQ2pELE1BQU07WUFDVixLQUFLLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUMvQjtnQkFDSSxPQUFPLEdBQUcseUJBQXlCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9DLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxHQUFXLEVBQUUsR0FBUTtRQUM3QyxJQUFJLEdBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQzVDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVc7UUFDMUIsTUFBTSxPQUFPLEdBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzhHQS9sQlEseUJBQXlCLGtCQWtXRixhQUFhO2tHQWxXcEMseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxTQUFTOzswQkFtV0QsSUFBSTs7MEJBQUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhO2lJQWpCbEMsT0FBTztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT3B0aW9uYWwsIElucHV0LCBIb3N0LCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3QsIGNyZWF0ZUNvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29sdW1uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvY29sdW1uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElQYWdpbmdTdGF0ZSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9wYWdpbmctc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9kYXRhLXV0aWwnO1xuaW1wb3J0IHtcbiAgICBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCwgSWd4TnVtYmVyRmlsdGVyaW5nT3BlcmFuZCwgSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQsXG4gICAgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZCwgSUZpbHRlcmluZ09wZXJhdGlvbiwgSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kXG59IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctY29uZGl0aW9uJztcbmltcG9ydCB7IElHcm91cEJ5RXhwYW5kU3RhdGUgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1leHBhbmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cGluZ1N0YXRlIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEdyaWRDb21wb25lbnQgfSBmcm9tICcuL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWdyaWQvaGllcmFyY2hpY2FsLWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25SYW5nZSB9IGZyb20gJy4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFLCBJUGlubmluZ0NvbmZpZyB9IGZyb20gJy4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFBpdm90R3JpZENvbXBvbmVudCB9IGZyb20gJy4vcGl2b3QtZ3JpZC9waXZvdC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJUGl2b3RDb25maWd1cmF0aW9uLCBJUGl2b3REaW1lbnNpb24gfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnXG5pbXBvcnQgeyBQaXZvdFV0aWwgfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtdXRpbCc7XG5pbXBvcnQgeyBJZ3hQaXZvdERhdGVEaW1lbnNpb24gfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC1kaW1lbnNpb25zJztcbmltcG9ydCB7IGNsb25lQXJyYXksIGNsb25lVmFsdWUgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFN0YXRlIHtcbiAgICBjb2x1bW5zPzogSUNvbHVtblN0YXRlW107XG4gICAgZmlsdGVyaW5nPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBhZHZhbmNlZEZpbHRlcmluZz86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgcGFnaW5nPzogSVBhZ2luZ1N0YXRlO1xuICAgIG1vdmluZz86IGJvb2xlYW47XG4gICAgc29ydGluZz86IElTb3J0aW5nRXhwcmVzc2lvbltdO1xuICAgIGdyb3VwQnk/OiBJR3JvdXBpbmdTdGF0ZTtcbiAgICBjZWxsU2VsZWN0aW9uPzogR3JpZFNlbGVjdGlvblJhbmdlW107XG4gICAgLyogYmxhem9yUHJpbWl0aXZlVmFsdWUgKi9cbiAgICByb3dTZWxlY3Rpb24/OiBhbnlbXTtcbiAgICBjb2x1bW5TZWxlY3Rpb24/OiBzdHJpbmdbXTtcbiAgICAvKiBibGF6b3JQcmltaXRpdmVWYWx1ZSAqL1xuICAgIHJvd1Bpbm5pbmc/OiBhbnlbXTtcbiAgICBwaW5uaW5nQ29uZmlnPzogSVBpbm5pbmdDb25maWc7XG4gICAgLyogYmxhem9yUHJpbWl0aXZlVmFsdWUgKi9cbiAgICBleHBhbnNpb24/OiBhbnlbXTtcbiAgICByb3dJc2xhbmRzPzogSUdyaWRTdGF0ZUNvbGxlY3Rpb25bXTtcbiAgICBpZD86IHN0cmluZztcbiAgICBwaXZvdENvbmZpZ3VyYXRpb24/OiBJUGl2b3RDb25maWd1cmF0aW9uO1xufVxuXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFN0YXRlQ29sbGVjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBwYXJlbnRSb3dJRDogYW55O1xuICAgIHN0YXRlOiBJR3JpZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkU3RhdGVPcHRpb25zIHtcbiAgICBjb2x1bW5zPzogYm9vbGVhbjtcbiAgICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICAgIGFkdmFuY2VkRmlsdGVyaW5nPzogYm9vbGVhbjtcbiAgICBzb3J0aW5nPzogYm9vbGVhbjtcbiAgICBncm91cEJ5PzogYm9vbGVhbjtcbiAgICBwYWdpbmc/OiBib29sZWFuO1xuICAgIGNlbGxTZWxlY3Rpb24/OiBib29sZWFuO1xuICAgIHJvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgY29sdW1uU2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgICByb3dQaW5uaW5nPzogYm9vbGVhbjtcbiAgICBwaW5uaW5nQ29uZmlnPzogYm9vbGVhbjtcbiAgICBleHBhbnNpb24/OiBib29sZWFuO1xuICAgIHJvd0lzbGFuZHM/OiBib29sZWFuO1xuICAgIG1vdmluZz86IGJvb2xlYW47XG4gICAgcGl2b3RDb25maWd1cmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyogbWFyc2hhbEJ5VmFsdWUgKi9cbi8qIHRzUGxhaW5JbnRlcmZhY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblN0YXRlIHtcbiAgICBwaW5uZWQ6IGJvb2xlYW47XG4gICAgc29ydGFibGU6IGJvb2xlYW47XG4gICAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgICBzb3J0aW5nSWdub3JlQ2FzZTogYm9vbGVhbjtcbiAgICBmaWx0ZXJpbmdJZ25vcmVDYXNlOiBib29sZWFuO1xuICAgIGhlYWRlckNsYXNzZXM6IHN0cmluZztcbiAgICBoZWFkZXJHcm91cENsYXNzZXM6IHN0cmluZztcbiAgICBtYXhXaWR0aDogc3RyaW5nO1xuICAgIGdyb3VwYWJsZTogYm9vbGVhbjtcbiAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgZGF0YVR5cGU6IEdyaWRDb2x1bW5EYXRhVHlwZTtcbiAgICBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgd2lkdGg6IGFueTtcbiAgICBoZWFkZXI6IHN0cmluZztcbiAgICByZXNpemFibGU6IGJvb2xlYW47XG4gICAgc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgICBjb2x1bW5Hcm91cDogYm9vbGVhbjtcbiAgICBwYXJlbnQ6IGFueTtcbiAgICBkaXNhYmxlSGlkaW5nOiBib29sZWFuO1xuICAgIGRpc2FibGVQaW5uaW5nOiBib29sZWFuO1xuICAgIGNvbGxhcHNpYmxlPzogYm9vbGVhbjtcbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG4gICAgdmlzaWJsZVdoZW5Db2xsYXBzZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBHcmlkRmVhdHVyZXMgPSBrZXlvZiBJR3JpZFN0YXRlT3B0aW9ucztcblxuaW50ZXJmYWNlIEZlYXR1cmUge1xuICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpID0+IElHcmlkU3RhdGU7XG4gICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBJQ29sdW1uU3RhdGVbXSB8IElQYWdpbmdTdGF0ZSB8IGJvb2xlYW4gfCBJU29ydGluZ0V4cHJlc3Npb25bXSB8XG4gICAgICAgIElHcm91cGluZ1N0YXRlIHwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IEdyaWRTZWxlY3Rpb25SYW5nZVtdIHwgSVBpbm5pbmdDb25maWcgfCBJUGl2b3RDb25maWd1cmF0aW9uIHwgYW55W10pID0+IHZvaWQ7XG59XG5cbi8qIGJsYXpvckVsZW1lbnQgKi9cbi8qIHdjRWxlbWVudFRhZzogaWdjLWdyaWQtc3RhdGUtYmFzZS1kaXJlY3RpdmUgKi9cbi8qIGJsYXpvckluZGlyZWN0UmVuZGVyICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9vcHRpb25zOiBJR3JpZFN0YXRlT3B0aW9ucyB8ICcnO1xuXG4gICAgcHJpdmF0ZSBmZWF0dXJlS2V5czogR3JpZEZlYXR1cmVzW10gPSBbXTtcbiAgICBwcml2YXRlIHN0YXRlOiBJR3JpZFN0YXRlO1xuICAgIHByaXZhdGUgY3VyckdyaWQ6IEdyaWRUeXBlO1xuICAgIHByb3RlY3RlZCBfb3B0aW9uczogSUdyaWRTdGF0ZU9wdGlvbnMgPSB7XG4gICAgICAgIGNvbHVtbnM6IHRydWUsXG4gICAgICAgIGZpbHRlcmluZzogdHJ1ZSxcbiAgICAgICAgYWR2YW5jZWRGaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgIHNvcnRpbmc6IHRydWUsXG4gICAgICAgIGdyb3VwQnk6IHRydWUsXG4gICAgICAgIHBhZ2luZzogdHJ1ZSxcbiAgICAgICAgY2VsbFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgcm93U2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICBjb2x1bW5TZWxlY3Rpb246IHRydWUsXG4gICAgICAgIHJvd1Bpbm5pbmc6IHRydWUsXG4gICAgICAgIGV4cGFuc2lvbjogdHJ1ZSxcbiAgICAgICAgbW92aW5nOiB0cnVlLFxuICAgICAgICByb3dJc2xhbmRzOiB0cnVlLFxuICAgICAgICBwaXZvdENvbmZpZ3VyYXRpb246IHRydWVcbiAgICB9O1xuICAgIHByaXZhdGUgRkVBVFVSRVMgPSB7XG4gICAgICAgIHNvcnRpbmc6ICB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydGluZ1N0YXRlID0gY29udGV4dC5jdXJyR3JpZC5zb3J0aW5nRXhwcmVzc2lvbnM7XG4gICAgICAgICAgICAgICAgc29ydGluZ1N0YXRlLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzLnN0cmF0ZWd5O1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcy5vd25lcjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzb3J0aW5nOiBzb3J0aW5nU3RhdGUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IElTb3J0aW5nRXhwcmVzc2lvbltdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMgPSBzdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyaW5nOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyaW5nU3RhdGUgPSBjb250ZXh0LmN1cnJHcmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyaW5nU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpbHRlcmluZ1N0YXRlLm93bmVyO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyaW5nU3RhdGUuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAoaXRlbSBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKS5vd25lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBmaWx0ZXJpbmc6IGZpbHRlcmluZ1N0YXRlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJUcmVlID0gY29udGV4dC5jcmVhdGVFeHByZXNzaW9uc1RyZWVGcm9tT2JqZWN0KHN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA9IGZpbHRlclRyZWUgYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZHZhbmNlZEZpbHRlcmluZzoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmluZ1N0YXRlID0gY29udGV4dC5jdXJyR3JpZC5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgICAgICBsZXQgYWR2YW5jZWRGaWx0ZXJpbmc6IGFueTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyaW5nU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpbHRlcmluZ1N0YXRlLm93bmVyO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyaW5nU3RhdGUuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAoaXRlbSBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKS5vd25lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZEZpbHRlcmluZyA9IGZpbHRlcmluZ1N0YXRlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkRmlsdGVyaW5nID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGFkdmFuY2VkRmlsdGVyaW5nIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJUcmVlID0gY29udGV4dC5jcmVhdGVFeHByZXNzaW9uc1RyZWVGcm9tT2JqZWN0KHN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLmFkdmFuY2VkRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gZmlsdGVyVHJlZSBhcyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtbnM6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBncmlkQ29sdW1uczogSUNvbHVtblN0YXRlW10gPSBjb250ZXh0LmN1cnJHcmlkLmNvbHVtbnMubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGMucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZTogYy5zb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyYWJsZTogYy5maWx0ZXJhYmxlLFxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogYy5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgc29ydGluZ0lnbm9yZUNhc2U6IGMuc29ydGluZ0lnbm9yZUNhc2UsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmluZ0lnbm9yZUNhc2U6IGMuZmlsdGVyaW5nSWdub3JlQ2FzZSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2xhc3NlczogYy5oZWFkZXJDbGFzc2VzLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJHcm91cENsYXNzZXM6IGMuaGVhZGVyR3JvdXBDbGFzc2VzLFxuICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogYy5tYXhXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBhYmxlOiBjLmdyb3VwYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiBjLmhpZGRlbixcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGMuZGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGhhc1N1bW1hcnk6IGMuaGFzU3VtbWFyeSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGMuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IGMuaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICByZXNpemFibGU6IGMucmVzaXphYmxlLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBjLnNlYXJjaGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGU6IGMuc2VsZWN0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjLnBhcmVudCA/IGMucGFyZW50LmhlYWRlciA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkdyb3VwOiBjLmNvbHVtbkdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlSGlkaW5nOiBjLmRpc2FibGVIaWRpbmcsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVQaW5uaW5nOiBjLmRpc2FibGVQaW5uaW5nLFxuICAgICAgICAgICAgICAgICAgICBjb2xsYXBzaWJsZTogYy5jb2x1bW5Hcm91cCA/IGMuY29sbGFwc2libGUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkOiBjLmNvbHVtbkdyb3VwID8gYy5leHBhbmRlZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVdoZW5Db2xsYXBzZWQ6IGMucGFyZW50Py5jb2x1bW5Hcm91cCA/IChjIGFzIElneENvbHVtbkNvbXBvbmVudCkudmlzaWJsZVdoZW5Db2xsYXBzZWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY29sdW1uczogZ3JpZENvbHVtbnMgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IElDb2x1bW5TdGF0ZVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFtdO1xuICAgICAgICAgICAgICAgIHN0YXRlLmZvckVhY2goKGNvbFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NvbHVtbkdyb3VwID0gY29sU3RhdGUuY29sdW1uR3JvdXA7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjb2xTdGF0ZS5jb2x1bW5Hcm91cDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NvbHVtbkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWYxID0gY3JlYXRlQ29tcG9uZW50KElneENvbHVtbkdyb3VwQ29tcG9uZW50LCB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZW52SW5qZWN0b3IsIGVsZW1lbnRJbmplY3RvcjogdGhpcy5pbmplY3RvciB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVmMS5pbnN0YW5jZSwgY29sU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmMS5pbnN0YW5jZS5ncmlkID0gY29udGV4dC5jdXJyR3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWYxLmluc3RhbmNlLnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkdyb3VwOiBJZ3hDb2x1bW5Hcm91cENvbXBvbmVudCA9IG5ld0NvbHVtbnMuZmluZChlID0+IGUuaGVhZGVyID09PSByZWYxLmluc3RhbmNlLnBhcmVudCAgJiYgZS5jb2x1bW5Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uR3JvdXAuY2hpbGRyZW4ucmVzZXQoWy4uLmNvbHVtbkdyb3VwLmNoaWxkcmVuLnRvQXJyYXkoKSwgcmVmMS5pbnN0YW5jZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjEuaW5zdGFuY2UucGFyZW50ID0gY29sdW1uR3JvdXA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWYxLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbHVtbnMucHVzaChyZWYxLmluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IGNyZWF0ZUNvbXBvbmVudChJZ3hDb2x1bW5Db21wb25lbnQsIHsgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZJbmplY3RvciwgZWxlbWVudEluamVjdG9yOiB0aGlzLmluamVjdG9yfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlZi5pbnN0YW5jZSwgY29sU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmLmluc3RhbmNlLmdyaWQgPSBjb250ZXh0LmN1cnJHcmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZi5pbnN0YW5jZS5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5Hcm91cDogSWd4Q29sdW1uR3JvdXBDb21wb25lbnQgPSBuZXdDb2x1bW5zLmZpbmQoZSA9PiBlLmhlYWRlciA9PT0gcmVmLmluc3RhbmNlLnBhcmVudCAmJiBlLmNvbHVtbkdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLmluc3RhbmNlLnBhcmVudCA9IGNvbHVtbkdyb3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Hcm91cC5jaGlsZHJlbi5yZXNldChbLi4uY29sdW1uR3JvdXAuY2hpbGRyZW4udG9BcnJheSgpLCByZWYuaW5zdGFuY2VdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29sdW1ucy5wdXNoKHJlZi5pbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLnVwZGF0ZUNvbHVtbnMobmV3Q29sdW1ucyk7XG4gICAgICAgICAgICAgICAgbmV3Q29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIChjb250ZXh0LmN1cnJHcmlkIGFzIGFueSkuY29sdW1uSW5pdC5lbWl0KGNvbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdyb3VwQnk6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBncmlkID0gY29udGV4dC5jdXJyR3JpZCBhcyBJZ3hHcmlkQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwaW5nRXhwcmVzc2lvbnMgPSBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnM7XG4gICAgICAgICAgICAgICAgZ3JvdXBpbmdFeHByZXNzaW9ucy5mb3JFYWNoKGV4cHIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXhwci5zdHJhdGVneTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBhbnNpb25TdGF0ZSA9IGdyaWQuZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cHNFeHBhbmRlZCA9IGdyaWQuZ3JvdXBzRXhwYW5kZWQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4geyBncm91cEJ5OiB7IGV4cHJlc3Npb25zOiBncm91cGluZ0V4cHJlc3Npb25zLCBleHBhbnNpb246IGV4cGFuc2lvblN0YXRlLCBkZWZhdWx0RXhwYW5kZWQ6IGdyb3Vwc0V4cGFuZGVkfSAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IElHcm91cGluZ1N0YXRlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JpZCA9IGNvbnRleHQuY3VyckdyaWQgYXMgSWd4R3JpZENvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMgPSBzdGF0ZS5leHByZXNzaW9ucyBhcyBJR3JvdXBpbmdFeHByZXNzaW9uW107XG4gICAgICAgICAgICAgICAgaWYgKGdyaWQuZ3JvdXBzRXhwYW5kZWQgIT09IHN0YXRlLmRlZmF1bHRFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICBncmlkLnRvZ2dsZUFsbEdyb3VwUm93cygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQuZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZSA9IHN0YXRlLmV4cGFuc2lvbiBhcyBJR3JvdXBCeUV4cGFuZFN0YXRlW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwYWdpbmc6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdpbmdTdGF0ZSA9IGNvbnRleHQuY3VyckdyaWQucGFnaW5nU3RhdGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFnaW5nOiBwYWdpbmdTdGF0ZSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogSVBhZ2luZ1N0YXRlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJHcmlkLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmN1cnJHcmlkLnBlclBhZ2UgIT09IHN0YXRlLnJlY29yZHNQZXJQYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQucGVyUGFnZSA9IHN0YXRlLnJlY29yZHNQZXJQYWdlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQucGFnZSA9IHN0YXRlLmluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb3Zpbmc6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBtb3Zpbmc6IGNvbnRleHQuY3VyckdyaWQubW92aW5nIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5tb3ZpbmcgPSBzdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gY29udGV4dC5jdXJyR3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmdldFNlbGVjdGVkUm93cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHJvd1NlbGVjdGlvbjogc2VsZWN0aW9uIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBhbnlbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQuc2VsZWN0Um93cyhzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNlbGxTZWxlY3Rpb246IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBjb250ZXh0LmN1cnJHcmlkLmdldFNlbGVjdGVkUmFuZ2VzKCkubWFwKHJhbmdlID0+XG4gICAgICAgICAgICAgICAgICAgICh7IHJvd1N0YXJ0OiByYW5nZS5yb3dTdGFydCwgcm93RW5kOiByYW5nZS5yb3dFbmQsIGNvbHVtblN0YXJ0OiByYW5nZS5jb2x1bW5TdGFydCwgY29sdW1uRW5kOiByYW5nZS5jb2x1bW5FbmQgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNlbGxTZWxlY3Rpb246IHNlbGVjdGlvbiB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogR3JpZFNlbGVjdGlvblJhbmdlW10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5mb3JFYWNoKHIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IHsgcm93U3RhcnQ6IHIucm93U3RhcnQsIHJvd0VuZDogci5yb3dFbmQsIGNvbHVtblN0YXJ0OiByLmNvbHVtblN0YXJ0LCBjb2x1bW5FbmQ6IHIuY29sdW1uRW5kfTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5zZWxlY3RSYW5nZShyYW5nZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtblNlbGVjdGlvbjoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGNvbnRleHQuY3VyckdyaWQuc2VsZWN0ZWRDb2x1bW5zKCkubWFwKGMgPT4gYy5maWVsZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY29sdW1uU2VsZWN0aW9uOiBzZWxlY3Rpb24gfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IHN0cmluZ1tdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5kZXNlbGVjdEFsbENvbHVtbnMoKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLnNlbGVjdENvbHVtbnMoc3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByb3dQaW5uaW5nOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGlubmVkID0gY29udGV4dC5jdXJyR3JpZC5waW5uZWRSb3dzPy5tYXAoeCA9PiB4LmtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcm93UGlubmluZzogcGlubmVkIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBhbnlbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGNsZWFyIGN1cnJlbnQgc3RhdGUuXG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5waW5uZWRSb3dzLmZvckVhY2gocm93ID0+IHJvdy51bnBpbigpKTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5mb3JFYWNoKHJvd0lEID0+IGNvbnRleHQuY3VyckdyaWQucGluUm93KHJvd0lEKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBpbm5pbmdDb25maWc6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+ICh7IHBpbm5pbmdDb25maWc6IGNvbnRleHQuY3VyckdyaWQucGlubmluZyB9KSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogSVBpbm5pbmdDb25maWcpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLnBpbm5pbmcgPSBzdGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXhwYW5zaW9uOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5zaW9uU3RhdGVzID0gQXJyYXkuZnJvbShjb250ZXh0LmN1cnJHcmlkLmV4cGFuc2lvblN0YXRlcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXhwYW5zaW9uOiBleHBhbnNpb25TdGF0ZXMgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IGFueVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5zaW9uU3RhdGVzID0gbmV3IE1hcDxhbnksIGJvb2xlYW4+KHN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLmV4cGFuc2lvblN0YXRlcyA9IGV4cGFuc2lvblN0YXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcm93SXNsYW5kczoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEdyaWRTdGF0ZXM6IElHcmlkU3RhdGVDb2xsZWN0aW9uW10gPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dJc2xhbmRzID0gKGNvbnRleHQuY3VyckdyaWQgYXMgYW55KS5hbGxMYXlvdXRMaXN0O1xuICAgICAgICAgICAgICAgIGlmIChyb3dJc2xhbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd0lzbGFuZHMuZm9yRWFjaChyb3dJc2xhbmQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRHcmlkcyA9IHJvd0lzbGFuZC5yb3dJc2xhbmRBUEkuZ2V0Q2hpbGRHcmlkcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRHcmlkcy5mb3JFYWNoKGNoR3JpZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Um93SUQgPSB0aGlzLmdldFBhcmVudFJvd0lEKGNoR3JpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZCA9IGNoR3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5jdXJyR3JpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEdyaWRTdGF0ZSA9IGNvbnRleHQuYnVpbGRTdGF0ZShjb250ZXh0LmZlYXR1cmVLZXlzKSBhcyBJR3JpZFN0YXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEdyaWRTdGF0ZXMucHVzaCh7IGlkOiBgJHtyb3dJc2xhbmQuaWR9YCwgcGFyZW50Um93SUQsIHN0YXRlOiBjaGlsZEdyaWRTdGF0ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQgPSBjb250ZXh0LmdyaWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcm93SXNsYW5kczogY2hpbGRHcmlkU3RhdGVzIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZShjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogYW55KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93SXNsYW5kcyA9IChjb250ZXh0LmN1cnJHcmlkIGFzIGFueSkuYWxsTGF5b3V0TGlzdDtcbiAgICAgICAgICAgICAgICBpZiAocm93SXNsYW5kcykge1xuICAgICAgICAgICAgICAgICAgICByb3dJc2xhbmRzLmZvckVhY2gocm93SXNsYW5kID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkR3JpZHMgPSByb3dJc2xhbmQucm93SXNsYW5kQVBJLmdldENoaWxkR3JpZHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkR3JpZHMuZm9yRWFjaChjaEdyaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJvd0lEID0gdGhpcy5nZXRQYXJlbnRSb3dJRChjaEdyaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQgPSBjaEdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRHcmlkU3RhdGUgPSBzdGF0ZS5maW5kKHN0ID0+IHN0LmlkID09PSByb3dJc2xhbmQuaWQgJiYgc3QucGFyZW50Um93SUQgPT09IHBhcmVudFJvd0lEKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRHcmlkU3RhdGUgJiYgY29udGV4dC5jdXJyR3JpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlc3RvcmVHcmlkU3RhdGUoY2hpbGRHcmlkU3RhdGUuc3RhdGUsIGNvbnRleHQuZmVhdHVyZUtleXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZCA9IGNvbnRleHQuZ3JpZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYXZlcnNlcyB0aGUgaGllcmFyY2h5IHVwIHRvIHRoZSByb290IGdyaWQgdG8gcmV0dXJuIHRoZSBJRCBvZiB0aGUgZXhwYW5kZWQgcm93LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnZXRQYXJlbnRSb3dJRDogKGdyaWQ6IElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRHcmlkO1xuICAgICAgICAgICAgICAgIHdoaWxlIChncmlkLnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZEdyaWQgPSBncmlkO1xuICAgICAgICAgICAgICAgICAgICBncmlkID0gZ3JpZC5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBncmlkLmdyaWRBUEkuZ2V0UGFyZW50Um93SWQoY2hpbGRHcmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGl2b3RDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGUoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IChjb250ZXh0LmN1cnJHcmlkIGFzIElneFBpdm90R3JpZENvbXBvbmVudCkucGl2b3RDb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgICAgIGlmICghY29uZmlnIHx8ICEoY29udGV4dC5jdXJyR3JpZCBpbnN0YW5jZW9mIElneFBpdm90R3JpZENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGl2b3RDb25maWd1cmF0aW9uOiB1bmRlZmluZWQgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnQ29weSA9IGNsb25lVmFsdWUoY29uZmlnKTtcbiAgICAgICAgICAgICAgICBjb25maWdDb3B5LnJvd3MgPSBjbG9uZUFycmF5KGNvbmZpZy5yb3dzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBjb25maWdDb3B5LmNvbHVtbnMgPSBjbG9uZUFycmF5KGNvbmZpZy5jb2x1bW5zLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBjb25maWdDb3B5LmZpbHRlcnMgPSBjbG9uZUFycmF5KGNvbmZpZy5maWx0ZXJzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaW1zID0gIFsuLi4oY29uZmlnQ29weS5yb3dzIHx8IFtdKSwgLi4uKGNvbmZpZ0NvcHkuY29sdW1ucyB8fCBbXSksIC4uLihjb25maWdDb3B5LmZpbHRlcnMgfHwgW10pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRGltZW5zaW9ucyA9IGRpbXMuZmlsdGVyKHggPT4gY29udGV4dC5pc0RhdGVEaW1lbnNpb24oeCkpO1xuICAgICAgICAgICAgICAgIGRhdGVEaW1lbnNpb25zPy5mb3JFYWNoKGRpbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBzZXJpYWxpemUgdGhlIGdyaWQgcmVzb3VyY2Ugc3RyaW5ncy4gVGhpcyB3b3VsZCBwb2xsdXRlIHRoZSBvYmplY3Qgd2l0aCB1bm5lY2Vzc2FyeSBkYXRhLlxuICAgICAgICAgICAgICAgICAgICAoZGltIGFzIElneFBpdm90RGF0ZURpbWVuc2lvbikucmVzb3VyY2VTdHJpbmdzID0ge307XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcGl2b3RDb25maWd1cmF0aW9uOiBjb25maWdDb3B5IH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZShjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogYW55KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnOiBJUGl2b3RDb25maWd1cmF0aW9uID0gc3RhdGU7XG4gICAgICAgICAgICAgICAgaWYgKCFjb25maWcgfHwgIShjb250ZXh0LmN1cnJHcmlkIGluc3RhbmNlb2YgSWd4UGl2b3RHcmlkQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVzdG9yZVZhbHVlcyhjb25maWcsIGNvbnRleHQuY3VyckdyaWQgYXMgSWd4UGl2b3RHcmlkQ29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlc3RvcmVEaW1lbnNpb25zKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgKGNvbnRleHQuY3VyckdyaWQgYXMgSWd4UGl2b3RHcmlkQ29tcG9uZW50KS5waXZvdENvbmZpZ3VyYXRpb24gPSBjb25maWc7XG4gICAgICAgICAgICB9LFxuXG5cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgQW4gb2JqZWN0IHdpdGggb3B0aW9ucyBkZXRlcm1pbmluZyBpZiBhIGNlcnRhaW4gZmVhdHVyZSBzdGF0ZSBzaG91bGQgYmUgc2F2ZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZ3JpZCBbaWd4R3JpZFN0YXRlXT1cIm9wdGlvbnNcIj48L2lneC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgb3B0aW9ucyA9IHtzZWxlY3Rpb246IGZhbHNlLCBhZHZhbmNlZEZpbHRlcmluZzogZmFsc2V9O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBvcHRpb25zKCk6IElHcmlkU3RhdGVPcHRpb25zIHtcbiAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IElHcmlkU3RhdGVPcHRpb25zKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fb3B0aW9ucywgdmFsdWUpO1xuICAgICAgICBpZiAoISh0aGlzLmdyaWQgaW5zdGFuY2VvZiBJZ3hHcmlkQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX29wdGlvbnMuZ3JvdXBCeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9vcHRpb25zLnJvd0lzbGFuZHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgQEluamVjdChJR1hfR1JJRF9CQVNFKSBwdWJsaWMgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgIHByb3RlY3RlZCB2aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcm90ZWN0ZWQgZW52SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YXRlIG9mIGEgZmVhdHVyZSBvciBzdGF0ZXMgb2YgYWxsIGdyaWQgZmVhdHVyZXMsIHVubGVzcyBhIGNlcnRhaW4gZmVhdHVyZSBpcyBkaXNhYmxlZCB0aHJvdWdoIHRoZSBgb3B0aW9uc2AgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYHNlcmlhbGl6ZWAgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSBzZXJpYWxpemVkIHRvIEpTT04gc3RyaW5nLiBEZWZhdWx0IHZhbHVlIGlzIHRydWUuXG4gICAgICogQHBhcmFtIGBmZWF0dXJlYCBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBkZXRlcm1pbmluZyB0aGUgZmVhdHVyZXMgdG8gYmUgYWRkZWQgaW4gdGhlIHN0YXRlLiBJZiBza2lwcGVkLCBhbGwgZmVhdHVyZXMgYXJlIGFkZGVkLlxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIHNlcmlhbGl6ZWQgdG8gSlNPTiBzdHJpbmcgSUdyaWRTdGF0ZSBvYmplY3QsIG9yIHRoZSBub24tc2VyaWFsaXplZCBJR3JpZFN0YXRlIG9iamVjdC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1ncmlkIFtpZ3hHcmlkU3RhdGVdPVwib3B0aW9uc1wiPjwvaWd4LWdyaWQ+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoSWd4R3JpZFN0YXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc3RhdGU7XG4gICAgICogbGV0IHN0YXRlID0gdGhpcy5zdGF0ZS5nZXRTdGF0ZSgpOyAvLyByZXR1cm5zIHN0cmluZ1xuICAgICAqIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGUoZmFsc2UpIC8vIHJldHVybnMgYElHcmlkU3RhdGVgIG9iamVjdFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRTdGF0ZUludGVybmFsKHNlcmlhbGl6ZSA9IHRydWUsIGZlYXR1cmVzPzogR3JpZEZlYXR1cmVzIHwgR3JpZEZlYXR1cmVzW10pOiBJR3JpZFN0YXRlIHwgc3RyaW5nICB7XG4gICAgICAgIGxldCBzdGF0ZTogSUdyaWRTdGF0ZSB8IHN0cmluZztcbiAgICAgICAgdGhpcy5jdXJyR3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlID0gdGhpcy5idWlsZFN0YXRlKGZlYXR1cmVzKSBhcyBJR3JpZFN0YXRlO1xuICAgICAgICBpZiAoc2VyaWFsaXplKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEpTT04uc3RyaW5naWZ5KHN0YXRlLCB0aGlzLnN0cmluZ2lmeUNhbGxiYWNrKSBhcyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIC8qIGJsYXpvclN1cHByZXNzICovXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgZ3JpZCBmZWF0dXJlcycgc3RhdGUgYmFzZWQgb24gdGhlIElHcmlkU3RhdGUgb2JqZWN0IHBhc3NlZCBhcyBhbiBhcmd1bWVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBJR3JpZFN0YXRlIG9iamVjdCB0byByZXN0b3JlIHN0YXRlIGZyb20uXG4gICAgICogQHJldHVybnNcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1ncmlkIFtpZ3hHcmlkU3RhdGVdPVwib3B0aW9uc1wiPjwvaWd4LWdyaWQ+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoSWd4R3JpZFN0YXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc3RhdGU7XG4gICAgICogdGhpcy5zdGF0ZS5zZXRTdGF0ZShncmlkU3RhdGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRTdGF0ZUludGVybmFsKHN0YXRlOiBJR3JpZFN0YXRlLCBmZWF0dXJlcz86IEdyaWRGZWF0dXJlcyB8IEdyaWRGZWF0dXJlc1tdKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5jdXJyR3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgdGhpcy5yZXN0b3JlR3JpZFN0YXRlKHN0YXRlLCBmZWF0dXJlcyk7XG4gICAgICAgIHRoaXMuZ3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUT0RPXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIGFuIElHcmlkU3RhdGUgb2JqZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgYnVpbGRTdGF0ZShrZXlzPzogR3JpZEZlYXR1cmVzIHwgR3JpZEZlYXR1cmVzW10pOiBJR3JpZFN0YXRlIHtcbiAgICAgICAgdGhpcy5hcHBseUZlYXR1cmVzKGtleXMpO1xuICAgICAgICBsZXQgZ3JpZFN0YXRlID0ge30gYXMgSUdyaWRTdGF0ZTtcbiAgICAgICAgdGhpcy5mZWF0dXJlS2V5cy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1tmXSkge1xuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuZ3JpZCBpbnN0YW5jZW9mIElneEdyaWRDb21wb25lbnQpICYmIGYgPT09ICdncm91cEJ5Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmUoZik7XG4gICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZVN0YXRlOiBJR3JpZFN0YXRlID0gZmVhdHVyZT8uZ2V0RmVhdHVyZVN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgICAgIGdyaWRTdGF0ZSA9IE9iamVjdC5hc3NpZ24oZ3JpZFN0YXRlLCBmZWF0dXJlU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdyaWRTdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWV0aG9kIHRoYXQgY2FsbHMgY29ycmVzcG9uZGluZyBtZXRob2RzIHRvIHJlc3RvcmUgZmVhdHVyZXMgZnJvbSB0aGUgcGFzc2VkIElHcmlkU3RhdGUgb2JqZWN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzdG9yZUdyaWRTdGF0ZShzdGF0ZTogSUdyaWRTdGF0ZSwgZmVhdHVyZXM/OiBHcmlkRmVhdHVyZXMgfCBHcmlkRmVhdHVyZXNbXSkge1xuICAgICAgICB0aGlzLmFwcGx5RmVhdHVyZXMoZmVhdHVyZXMpO1xuICAgICAgICB0aGlzLnJlc3RvcmVGZWF0dXJlcyhzdGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN0b3JlRmVhdHVyZXMoc3RhdGU6IElHcmlkU3RhdGUpIHtcbiAgICAgICAgdGhpcy5mZWF0dXJlS2V5cy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1tmXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVTdGF0ZSA9IHN0YXRlW2ZdO1xuICAgICAgICAgICAgICAgIGlmIChmID09PSAnbW92aW5nJyB8fCBmZWF0dXJlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZShmKTtcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5yZXN0b3JlRmVhdHVyZVN0YXRlKHRoaXMsIGZlYXR1cmVTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBhbGwgZ3JpZCBmZWF0dXJlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFwcGx5RmVhdHVyZXMoa2V5cz86IEdyaWRGZWF0dXJlcyB8IEdyaWRGZWF0dXJlc1tdKSB7XG4gICAgICAgIHRoaXMuZmVhdHVyZUtleXMgPSBbXTtcbiAgICAgICAgaWYgKCFrZXlzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5cy5wdXNoKGtleSBhcyBHcmlkRmVhdHVyZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXMgPSBbLi4ua2V5cyBhcyBHcmlkRmVhdHVyZXNbXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVLZXlzLnB1c2goa2V5cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXN0b3JlcyBjb21wbGV4IG9iamVjdHMgaW4gdGhlIHBpdm90IGRpbWVuc2lvbnNcbiAgICAgKiBMaWtlIHRoZSBJZ3hQaXZvdERhdGVEaW1lbnNpb24gYW5kIGZpbHRlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXN0b3JlRGltZW5zaW9ucyhjb25maWc6IElQaXZvdENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSBbY29uZmlnLnJvd3MsIGNvbmZpZy5jb2x1bW5zLCBjb25maWcuZmlsdGVyc107XG4gICAgICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBvZiBjb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbGxlY3Rpb24/Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpbSA9IGNvbGxlY3Rpb25baW5kZXhdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGF0ZURpbWVuc2lvbihkaW0pKSB7XG4gICAgICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlRGF0ZURpbWVuc2lvbihkaW0gYXMgSWd4UGl2b3REYXRlRGltZW5zaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcmVzdG9yZSBjb21wbGV4IGZpbHRlcnNcbiAgICAgICAgICAgICAgICBpZiAoZGltLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBkaW0uZmlsdGVyID0gdGhpcy5jcmVhdGVFeHByZXNzaW9uc1RyZWVGcm9tT2JqZWN0KGRpbS5maWx0ZXIgYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJlc3RvcmVzIHRoZSBJZ3hQaXZvdERhdGVEaW1lbnNpb24gd2l0aCBpdHMgZGVmYXVsdCBmdW5jdGlvbnMgYW5kIHJlc291cmNlIHN0cmluZ3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXN0b3JlRGF0ZURpbWVuc2lvbihkaW06IElneFBpdm90RGF0ZURpbWVuc2lvbikge1xuICAgICAgICBjb25zdCBkYXRlRGltID0gbmV3IElneFBpdm90RGF0ZURpbWVuc2lvbigoZGltIGFzIGFueSkuX2Jhc2VEaW1lbnNpb24sIChkaW0gYXMgYW55KS5fb3B0aW9ucyk7XG4gICAgICAgIC8vIHJlc3RvcmUgZnVuY3Rpb25zIGFuZCByZXNvdXJjZSBzdHJpbmdzXG4gICAgICAgIGRpbS5yZXNvdXJjZVN0cmluZ3MgPSBkYXRlRGltLnJlc291cmNlU3RyaW5ncztcbiAgICAgICAgZGltLm1lbWJlckZ1bmN0aW9uID0gZGF0ZURpbS5tZW1iZXJGdW5jdGlvbjtcbiAgICAgICAgbGV0IGN1cnJEaW06IElQaXZvdERpbWVuc2lvbiA9IGRpbTtcbiAgICAgICAgbGV0IG9yaWdpbkRpbTogSVBpdm90RGltZW5zaW9uID0gZGF0ZURpbTtcbiAgICAgICAgd2hpbGUgKGN1cnJEaW0uY2hpbGRMZXZlbCkge1xuICAgICAgICAgICAgY3VyckRpbSA9IGN1cnJEaW0uY2hpbGRMZXZlbDtcbiAgICAgICAgICAgIG9yaWdpbkRpbSA9IG9yaWdpbkRpbS5jaGlsZExldmVsO1xuICAgICAgICAgICAgY3VyckRpbS5tZW1iZXJGdW5jdGlvbiA9IG9yaWdpbkRpbS5tZW1iZXJGdW5jdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhpcyBpcyBhIElneFBpdm90RGF0ZURpbWVuc2lvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlzRGF0ZURpbWVuc2lvbihkaW06IElQaXZvdERpbWVuc2lvbikge1xuICAgICAgICByZXR1cm4gKGRpbSBhcyBhbnkpLl9iYXNlRGltZW5zaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJlc3RvcmVzIGNvbXBsZXggb2JqZWN0cyBpbiB0aGUgcGl2b3QgdmFsdWVzLlxuICAgICAqIExpa2UgdGhlIGRlZmF1bHQgYWdncmVnYXRvciBtZXRob2RzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzdG9yZVZhbHVlcyhjb25maWc6IElQaXZvdENvbmZpZ3VyYXRpb24sIGdyaWQ6IElneFBpdm90R3JpZENvbXBvbmVudCkge1xuICAgICAgICAvLyByZXN0b3JlIGFnZ3JlZ2F0b3IgZnVuYyBpZiBpdCBtYXRjaGVzIHRoZSBkZWZhdWx0IGFnZ3JlZ2F0b3JzIGtleSBhbmQgbGFiZWxcbiAgICAgICAgY29uc3QgdmFsdWVzID0gY29uZmlnLnZhbHVlcztcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZUxpc3QgPSB2YWx1ZS5hZ2dyZWdhdGVMaXN0O1xuICAgICAgICAgICAgY29uc3QgYWdncmVnYXRvcnMgPSBQaXZvdFV0aWwuZ2V0QWdncmVnYXRvcnNGb3JWYWx1ZSh2YWx1ZSwgZ3JpZCk7XG4gICAgICAgICAgICB2YWx1ZS5hZ2dyZWdhdGUuYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3JzLmZpbmQoeCA9PiB4LmtleSA9PT0gdmFsdWUuYWdncmVnYXRlLmtleSAmJiB4LmxhYmVsID09PSB2YWx1ZS5hZ2dyZWdhdGUubGFiZWwpPy5hZ2dyZWdhdG9yO1xuICAgICAgICAgICAgaWYgKGFnZ3JlZ2F0ZUxpc3QpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFnIG9mIGFnZ3JlZ2F0ZUxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgYWcuYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3JzLmZpbmQoeCA9PiB4LmtleSA9PT0gYWcua2V5ICYmIHgubGFiZWwgPT09IGFnLmxhYmVsKT8uYWdncmVnYXRvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgYSBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgZnJvbSBhIHByb3ZpZGVkIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUV4cHJlc3Npb25zVHJlZUZyb21PYmplY3QoZXhwclRyZWVPYmplY3Q6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB7XG4gICAgICAgIGlmICghZXhwclRyZWVPYmplY3QgfHwgIWV4cHJUcmVlT2JqZWN0LmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZSA9IG5ldyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUoZXhwclRyZWVPYmplY3Qub3BlcmF0b3IsIGV4cHJUcmVlT2JqZWN0LmZpZWxkTmFtZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGV4cHJUcmVlT2JqZWN0LmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBpdGVtIGlzIGFuIGV4cHJlc3Npb25zIHRyZWUgb3IgYSBzaW5nbGUgZXhwcmVzc2lvbi5cbiAgICAgICAgICAgIGlmICgoaXRlbSBhcyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViVHJlZSA9IHRoaXMuY3JlYXRlRXhwcmVzc2lvbnNUcmVlRnJvbU9iamVjdCgoaXRlbSBhcyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpKTtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMucHVzaChzdWJUcmVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwciA9IGl0ZW0gYXMgSUZpbHRlcmluZ0V4cHJlc3Npb247XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFUeXBlOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VyckdyaWQgaW5zdGFuY2VvZiBJZ3hQaXZvdEdyaWRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSB0aGlzLmN1cnJHcmlkLmFsbERpbWVuc2lvbnMuZmluZCh4ID0+IHgubWVtYmVyTmFtZSA9PT0gZXhwci5maWVsZE5hbWUpLmRhdGFUeXBlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyR3JpZC5jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSB0aGlzLmN1cnJHcmlkLmNvbHVtbnMuZmluZChjID0+IGMuZmllbGQgPT09IGV4cHIuZmllbGROYW1lKS5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuY29sdW1ucykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSA9IHRoaXMuc3RhdGUuY29sdW1ucy5maW5kKGMgPT4gYy5maWVsZCA9PT0gZXhwci5maWVsZE5hbWUpLmRhdGFUeXBlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB3aGVuIEVTRiwgdmFsdWVzIGFyZSBzdG9yZWQgaW4gU2V0LlxuICAgICAgICAgICAgICAgIC8vIEZpcnN0IHRob3NlIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIGFuIGFycmF5IGJlZm9yZSByZXR1cm5pbmcgc3RyaW5nIGluIHRoZSBzdHJpbmdpZnlDYWxsYmFja1xuICAgICAgICAgICAgICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhvc2UgYmFjayB0byBTZXRcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShleHByLnNlYXJjaFZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwci5zZWFyY2hWYWwgPSBuZXcgU2V0KGV4cHIuc2VhcmNoVmFsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBleHByLnNlYXJjaFZhbCA9IGV4cHIuc2VhcmNoVmFsICYmIChkYXRhVHlwZSA9PT0gJ2RhdGUnIHx8IGRhdGFUeXBlID09PSAnZGF0ZVRpbWUnKSA/IG5ldyBEYXRlKERhdGUucGFyc2UoZXhwci5zZWFyY2hWYWwpKSA6IGV4cHIuc2VhcmNoVmFsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuZ2VuZXJhdGVGaWx0ZXJpbmdDb25kaXRpb24oZGF0YVR5cGUsIGV4cHIuY29uZGl0aW9uLm5hbWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VyckdyaWQuY29sdW1ucy5maW5kKGMgPT4gYy5maWVsZCA9PT0gZXhwci5maWVsZE5hbWUpLmZpbHRlcnMuY29uZGl0aW9uKGV4cHIuY29uZGl0aW9uLm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBleHByLmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLnB1c2goZXhwcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHJlc3Npb25zVHJlZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmaWx0ZXJpbmcgbG9naWMgZnVuY3Rpb24gZm9yIGEgZ2l2ZW4gZGF0YVR5cGUgYW5kIGNvbmRpdGlvbiAoY29udGFpbnMsIGdyZWF0ZXJUaGFuLCBldGMuKVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2VuZXJhdGVGaWx0ZXJpbmdDb25kaXRpb24oZGF0YVR5cGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogSUZpbHRlcmluZ09wZXJhdGlvbiB7XG4gICAgICAgIGxldCBmaWx0ZXJzO1xuICAgICAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuTnVtYmVyOlxuICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBJZ3hOdW1iZXJGaWx0ZXJpbmdPcGVyYW5kLmluc3RhbmNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBJZ3hEYXRlRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgZmlsdGVycyA9IElneERhdGVUaW1lRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuU3RyaW5nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWx0ZXJzID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJzLmNvbmRpdGlvbihuYW1lKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RyaW5naWZ5Q2FsbGJhY2soa2V5OiBzdHJpbmcsIHZhbDogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdzZWFyY2hWYWwnICYmIHZhbCBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmVhdHVyZShrZXk6IHN0cmluZyk6IEZlYXR1cmUge1xuICAgICAgICBjb25zdCBmZWF0dXJlOiBGZWF0dXJlID0gdGhpcy5GRUFUVVJFU1trZXldO1xuICAgICAgICByZXR1cm4gZmVhdHVyZTtcbiAgICB9XG59XG4iXX0=
|
|
622
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtYmFzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvc3RhdGUtYmFzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBb0IsTUFBTSxFQUFFLGVBQWUsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLCtDQUErQyxDQUFDO0FBRXBILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFDSCwwQkFBMEIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFDOUUseUJBQXlCLEVBQXVCLDJCQUEyQixFQUM5RSxNQUFNLHdDQUF3QyxDQUFDO0FBR2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXpELE9BQU8sRUFBWSxhQUFhLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXVGdkQsbUJBQW1CO0FBQ25CLGlEQUFpRDtBQUNqRCwwQkFBMEI7QUFFMUIsTUFBTSxPQUFPLHlCQUF5QjtJQXNVbEM7Ozs7Ozs7O09B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UUFBUSxFQUFFLENBQUM7Z0JBQ2pELE1BQU07WUFDVixLQUFLLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUMvQjtnQkFDSSxPQUFPLEdBQUcseUJBQXlCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9DLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxHQUFXLEVBQUUsR0FBUTtRQUM3QyxJQUFJLEdBQUcsS0FBSyxXQUFXLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQzVDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVc7UUFDMUIsTUFBTSxPQUFPLEdBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzhHQTlsQlEseUJBQXlCLGtCQWlXRixhQUFhO2tHQWpXcEMseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxTQUFTOzswQkFrV0QsSUFBSTs7MEJBQUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhO2lJQWpCbEMsT0FBTztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT3B0aW9uYWwsIElucHV0LCBIb3N0LCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3QsIGNyZWF0ZUNvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29sdW1uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvY29sdW1uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElQYWdpbmdTdGF0ZSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9wYWdpbmctc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9kYXRhLXV0aWwnO1xuaW1wb3J0IHtcbiAgICBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCwgSWd4TnVtYmVyRmlsdGVyaW5nT3BlcmFuZCwgSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQsXG4gICAgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZCwgSUZpbHRlcmluZ09wZXJhdGlvbiwgSWd4RGF0ZVRpbWVGaWx0ZXJpbmdPcGVyYW5kXG59IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctY29uZGl0aW9uJztcbmltcG9ydCB7IElHcm91cEJ5RXhwYW5kU3RhdGUgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1leHBhbmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cGluZ1N0YXRlIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEdyaWRDb21wb25lbnQgfSBmcm9tICcuL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4SGllcmFyY2hpY2FsR3JpZENvbXBvbmVudCB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWdyaWQvaGllcmFyY2hpY2FsLWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25SYW5nZSB9IGZyb20gJy4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFLCBJUGlubmluZ0NvbmZpZyB9IGZyb20gJy4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFBpdm90R3JpZENvbXBvbmVudCB9IGZyb20gJy4vcGl2b3QtZ3JpZC9waXZvdC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJUGl2b3RDb25maWd1cmF0aW9uLCBJUGl2b3REaW1lbnNpb24gfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnXG5pbXBvcnQgeyBQaXZvdFV0aWwgfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtdXRpbCc7XG5pbXBvcnQgeyBJZ3hQaXZvdERhdGVEaW1lbnNpb24gfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC1kaW1lbnNpb25zJztcbmltcG9ydCB7IGNsb25lQXJyYXksIGNsb25lVmFsdWUgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBJR3JpZFN0YXRlIHtcbiAgICBjb2x1bW5zPzogSUNvbHVtblN0YXRlW107XG4gICAgZmlsdGVyaW5nPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICBhZHZhbmNlZEZpbHRlcmluZz86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgcGFnaW5nPzogSVBhZ2luZ1N0YXRlO1xuICAgIG1vdmluZz86IGJvb2xlYW47XG4gICAgc29ydGluZz86IElTb3J0aW5nRXhwcmVzc2lvbltdO1xuICAgIGdyb3VwQnk/OiBJR3JvdXBpbmdTdGF0ZTtcbiAgICBjZWxsU2VsZWN0aW9uPzogR3JpZFNlbGVjdGlvblJhbmdlW107XG4gICAgLyogYmxhem9yUHJpbWl0aXZlVmFsdWUgKi9cbiAgICByb3dTZWxlY3Rpb24/OiBhbnlbXTtcbiAgICBjb2x1bW5TZWxlY3Rpb24/OiBzdHJpbmdbXTtcbiAgICAvKiBibGF6b3JQcmltaXRpdmVWYWx1ZSAqL1xuICAgIHJvd1Bpbm5pbmc/OiBhbnlbXTtcbiAgICBwaW5uaW5nQ29uZmlnPzogSVBpbm5pbmdDb25maWc7XG4gICAgLyogYmxhem9yUHJpbWl0aXZlVmFsdWUgKi9cbiAgICBleHBhbnNpb24/OiBhbnlbXTtcbiAgICByb3dJc2xhbmRzPzogSUdyaWRTdGF0ZUNvbGxlY3Rpb25bXTtcbiAgICBpZD86IHN0cmluZztcbiAgICBwaXZvdENvbmZpZ3VyYXRpb24/OiBJUGl2b3RDb25maWd1cmF0aW9uO1xufVxuXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFN0YXRlQ29sbGVjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBwYXJlbnRSb3dJRDogYW55O1xuICAgIHN0YXRlOiBJR3JpZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkU3RhdGVPcHRpb25zIHtcbiAgICBjb2x1bW5zPzogYm9vbGVhbjtcbiAgICBmaWx0ZXJpbmc/OiBib29sZWFuO1xuICAgIGFkdmFuY2VkRmlsdGVyaW5nPzogYm9vbGVhbjtcbiAgICBzb3J0aW5nPzogYm9vbGVhbjtcbiAgICBncm91cEJ5PzogYm9vbGVhbjtcbiAgICBwYWdpbmc/OiBib29sZWFuO1xuICAgIGNlbGxTZWxlY3Rpb24/OiBib29sZWFuO1xuICAgIHJvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgY29sdW1uU2VsZWN0aW9uPzogYm9vbGVhbjtcbiAgICByb3dQaW5uaW5nPzogYm9vbGVhbjtcbiAgICBwaW5uaW5nQ29uZmlnPzogYm9vbGVhbjtcbiAgICBleHBhbnNpb24/OiBib29sZWFuO1xuICAgIHJvd0lzbGFuZHM/OiBib29sZWFuO1xuICAgIG1vdmluZz86IGJvb2xlYW47XG4gICAgcGl2b3RDb25maWd1cmF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyogbWFyc2hhbEJ5VmFsdWUgKi9cbi8qIHRzUGxhaW5JbnRlcmZhY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblN0YXRlIHtcbiAgICBwaW5uZWQ6IGJvb2xlYW47XG4gICAgc29ydGFibGU6IGJvb2xlYW47XG4gICAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgICBzb3J0aW5nSWdub3JlQ2FzZTogYm9vbGVhbjtcbiAgICBmaWx0ZXJpbmdJZ25vcmVDYXNlOiBib29sZWFuO1xuICAgIGhlYWRlckNsYXNzZXM6IHN0cmluZztcbiAgICBoZWFkZXJHcm91cENsYXNzZXM6IHN0cmluZztcbiAgICBtYXhXaWR0aDogc3RyaW5nO1xuICAgIGdyb3VwYWJsZTogYm9vbGVhbjtcbiAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgZGF0YVR5cGU6IEdyaWRDb2x1bW5EYXRhVHlwZTtcbiAgICBoYXNTdW1tYXJ5OiBib29sZWFuO1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgd2lkdGg6IGFueTtcbiAgICBoZWFkZXI6IHN0cmluZztcbiAgICByZXNpemFibGU6IGJvb2xlYW47XG4gICAgc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgICBjb2x1bW5Hcm91cDogYm9vbGVhbjtcbiAgICBwYXJlbnQ6IGFueTtcbiAgICBkaXNhYmxlSGlkaW5nOiBib29sZWFuO1xuICAgIGRpc2FibGVQaW5uaW5nOiBib29sZWFuO1xuICAgIGNvbGxhcHNpYmxlPzogYm9vbGVhbjtcbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG4gICAgdmlzaWJsZVdoZW5Db2xsYXBzZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBHcmlkRmVhdHVyZXMgPSBrZXlvZiBJR3JpZFN0YXRlT3B0aW9ucztcblxuaW50ZXJmYWNlIEZlYXR1cmUge1xuICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpID0+IElHcmlkU3RhdGU7XG4gICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBJQ29sdW1uU3RhdGVbXSB8IElQYWdpbmdTdGF0ZSB8IGJvb2xlYW4gfCBJU29ydGluZ0V4cHJlc3Npb25bXSB8XG4gICAgICAgIElHcm91cGluZ1N0YXRlIHwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IEdyaWRTZWxlY3Rpb25SYW5nZVtdIHwgSVBpbm5pbmdDb25maWcgfCBJUGl2b3RDb25maWd1cmF0aW9uIHwgYW55W10pID0+IHZvaWQ7XG59XG5cbi8qIGJsYXpvckVsZW1lbnQgKi9cbi8qIHdjRWxlbWVudFRhZzogaWdjLWdyaWQtc3RhdGUtYmFzZS1kaXJlY3RpdmUgKi9cbi8qIGJsYXpvckluZGlyZWN0UmVuZGVyICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlIHtcblxuICAgIHByaXZhdGUgZmVhdHVyZUtleXM6IEdyaWRGZWF0dXJlc1tdID0gW107XG4gICAgcHJpdmF0ZSBzdGF0ZTogSUdyaWRTdGF0ZTtcbiAgICBwcml2YXRlIGN1cnJHcmlkOiBHcmlkVHlwZTtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM6IElHcmlkU3RhdGVPcHRpb25zID0ge1xuICAgICAgICBjb2x1bW5zOiB0cnVlLFxuICAgICAgICBmaWx0ZXJpbmc6IHRydWUsXG4gICAgICAgIGFkdmFuY2VkRmlsdGVyaW5nOiB0cnVlLFxuICAgICAgICBzb3J0aW5nOiB0cnVlLFxuICAgICAgICBncm91cEJ5OiB0cnVlLFxuICAgICAgICBwYWdpbmc6IHRydWUsXG4gICAgICAgIGNlbGxTZWxlY3Rpb246IHRydWUsXG4gICAgICAgIHJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgY29sdW1uU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICByb3dQaW5uaW5nOiB0cnVlLFxuICAgICAgICBleHBhbnNpb246IHRydWUsXG4gICAgICAgIG1vdmluZzogdHJ1ZSxcbiAgICAgICAgcm93SXNsYW5kczogdHJ1ZSxcbiAgICAgICAgcGl2b3RDb25maWd1cmF0aW9uOiB0cnVlXG4gICAgfTtcbiAgICBwcml2YXRlIEZFQVRVUkVTID0ge1xuICAgICAgICBzb3J0aW5nOiAge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRpbmdTdGF0ZSA9IGNvbnRleHQuY3VyckdyaWQuc29ydGluZ0V4cHJlc3Npb25zO1xuICAgICAgICAgICAgICAgIHNvcnRpbmdTdGF0ZS5mb3JFYWNoKHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcy5zdHJhdGVneTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHMub3duZXI7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc29ydGluZzogc29ydGluZ1N0YXRlIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQuc29ydGluZ0V4cHJlc3Npb25zID0gc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcmluZzoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmluZ1N0YXRlID0gY29udGV4dC5jdXJyR3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmluZ1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJpbmdTdGF0ZS5vd25lcjtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlcmluZ1N0YXRlLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgKGl0ZW0gYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkub3duZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZmlsdGVyaW5nOiBmaWx0ZXJpbmdTdGF0ZSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVHJlZSA9IGNvbnRleHQuY3JlYXRlRXhwcmVzc2lvbnNUcmVlRnJvbU9iamVjdChzdGF0ZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSBmaWx0ZXJUcmVlIGFzIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWR2YW5jZWRGaWx0ZXJpbmc6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJpbmdTdGF0ZSA9IGNvbnRleHQuY3VyckdyaWQuYWR2YW5jZWRGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgICAgICAgICAgbGV0IGFkdmFuY2VkRmlsdGVyaW5nOiBhbnk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmluZ1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJpbmdTdGF0ZS5vd25lcjtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlcmluZ1N0YXRlLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgKGl0ZW0gYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkub3duZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWR2YW5jZWRGaWx0ZXJpbmcgPSBmaWx0ZXJpbmdTdGF0ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhZHZhbmNlZEZpbHRlcmluZyA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBhZHZhbmNlZEZpbHRlcmluZyB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVHJlZSA9IGNvbnRleHQuY3JlYXRlRXhwcmVzc2lvbnNUcmVlRnJvbU9iamVjdChzdGF0ZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA9IGZpbHRlclRyZWUgYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb2x1bW5zOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JpZENvbHVtbnM6IElDb2x1bW5TdGF0ZVtdID0gY29udGV4dC5jdXJyR3JpZC5jb2x1bW5zLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBjLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGMuc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmFibGU6IGMuZmlsdGVyYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGMuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHNvcnRpbmdJZ25vcmVDYXNlOiBjLnNvcnRpbmdJZ25vcmVDYXNlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJpbmdJZ25vcmVDYXNlOiBjLmZpbHRlcmluZ0lnbm9yZUNhc2UsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNsYXNzZXM6IGMuaGVhZGVyQ2xhc3NlcyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JvdXBDbGFzc2VzOiBjLmhlYWRlckdyb3VwQ2xhc3NlcyxcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IGMubWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwYWJsZTogYy5ncm91cGFibGUsXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbjogYy5oaWRkZW4sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiBjLmRhdGFUeXBlLFxuICAgICAgICAgICAgICAgICAgICBoYXNTdW1tYXJ5OiBjLmhhc1N1bW1hcnksXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogYy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiBjLmhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiBjLnJlc2l6YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZTogYy5zZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBjLnNlbGVjdGFibGUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogYy5wYXJlbnQgPyBjLnBhcmVudC5oZWFkZXIgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Hcm91cDogYy5jb2x1bW5Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUhpZGluZzogYy5kaXNhYmxlSGlkaW5nLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUGlubmluZzogYy5kaXNhYmxlUGlubmluZyxcbiAgICAgICAgICAgICAgICAgICAgY29sbGFwc2libGU6IGMuY29sdW1uR3JvdXAgPyBjLmNvbGxhcHNpYmxlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZDogYy5jb2x1bW5Hcm91cCA/IGMuZXhwYW5kZWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVXaGVuQ29sbGFwc2VkOiBjLnBhcmVudD8uY29sdW1uR3JvdXAgPyAoYyBhcyBJZ3hDb2x1bW5Db21wb25lbnQpLnZpc2libGVXaGVuQ29sbGFwc2VkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNvbHVtbnM6IGdyaWRDb2x1bW5zIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBJQ29sdW1uU3RhdGVbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5mb3JFYWNoKChjb2xTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDb2x1bW5Hcm91cCA9IGNvbFN0YXRlLmNvbHVtbkdyb3VwO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgY29sU3RhdGUuY29sdW1uR3JvdXA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNDb2x1bW5Hcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmMSA9IGNyZWF0ZUNvbXBvbmVudChJZ3hDb2x1bW5Hcm91cENvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudkluamVjdG9yLCBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlZjEuaW5zdGFuY2UsIGNvbFN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjEuaW5zdGFuY2UuZ3JpZCA9IGNvbnRleHQuY3VyckdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVmMS5pbnN0YW5jZS5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5Hcm91cDogSWd4Q29sdW1uR3JvdXBDb21wb25lbnQgPSBuZXdDb2x1bW5zLmZpbmQoZSA9PiBlLmhlYWRlciA9PT0gcmVmMS5pbnN0YW5jZS5wYXJlbnQgICYmIGUuY29sdW1uR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkdyb3VwLmNoaWxkcmVuLnJlc2V0KFsuLi5jb2x1bW5Hcm91cC5jaGlsZHJlbi50b0FycmF5KCksIHJlZjEuaW5zdGFuY2VdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYxLmluc3RhbmNlLnBhcmVudCA9IGNvbHVtbkdyb3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmMS5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdDb2x1bW5zLnB1c2gocmVmMS5pbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWYgPSBjcmVhdGVDb21wb25lbnQoSWd4Q29sdW1uQ29tcG9uZW50LCB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZW52SW5qZWN0b3IsIGVsZW1lbnRJbmplY3RvcjogdGhpcy5pbmplY3Rvcn0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZWYuaW5zdGFuY2UsIGNvbFN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZi5pbnN0YW5jZS5ncmlkID0gY29udGV4dC5jdXJyR3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWYuaW5zdGFuY2UucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uR3JvdXA6IElneENvbHVtbkdyb3VwQ29tcG9uZW50ID0gbmV3Q29sdW1ucy5maW5kKGUgPT4gZS5oZWFkZXIgPT09IHJlZi5pbnN0YW5jZS5wYXJlbnQgJiYgZS5jb2x1bW5Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtbkdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZi5pbnN0YW5jZS5wYXJlbnQgPSBjb2x1bW5Hcm91cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uR3JvdXAuY2hpbGRyZW4ucmVzZXQoWy4uLmNvbHVtbkdyb3VwLmNoaWxkcmVuLnRvQXJyYXkoKSwgcmVmLmluc3RhbmNlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbHVtbnMucHVzaChyZWYuaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC51cGRhdGVDb2x1bW5zKG5ld0NvbHVtbnMpO1xuICAgICAgICAgICAgICAgIG5ld0NvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgICAgICAgICAoY29udGV4dC5jdXJyR3JpZCBhcyBhbnkpLmNvbHVtbkluaXQuZW1pdChjb2wpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBncm91cEJ5OiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JpZCA9IGNvbnRleHQuY3VyckdyaWQgYXMgSWd4R3JpZENvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cGluZ0V4cHJlc3Npb25zID0gZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zO1xuICAgICAgICAgICAgICAgIGdyb3VwaW5nRXhwcmVzc2lvbnMuZm9yRWFjaChleHByID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGV4cHIuc3RyYXRlZ3k7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5zaW9uU3RhdGUgPSBncmlkLmdyb3VwaW5nRXhwYW5zaW9uU3RhdGU7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBzRXhwYW5kZWQgPSBncmlkLmdyb3Vwc0V4cGFuZGVkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZ3JvdXBCeTogeyBleHByZXNzaW9uczogZ3JvdXBpbmdFeHByZXNzaW9ucywgZXhwYW5zaW9uOiBleHBhbnNpb25TdGF0ZSwgZGVmYXVsdEV4cGFuZGVkOiBncm91cHNFeHBhbmRlZH0gIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBJR3JvdXBpbmdTdGF0ZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWQgPSBjb250ZXh0LmN1cnJHcmlkIGFzIElneEdyaWRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zID0gc3RhdGUuZXhwcmVzc2lvbnMgYXMgSUdyb3VwaW5nRXhwcmVzc2lvbltdO1xuICAgICAgICAgICAgICAgIGlmIChncmlkLmdyb3Vwc0V4cGFuZGVkICE9PSBzdGF0ZS5kZWZhdWx0RXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC50b2dnbGVBbGxHcm91cFJvd3MoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBncmlkLmdyb3VwaW5nRXhwYW5zaW9uU3RhdGUgPSBzdGF0ZS5leHBhbnNpb24gYXMgSUdyb3VwQnlFeHBhbmRTdGF0ZVtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGFnaW5nOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFnaW5nU3RhdGUgPSBjb250ZXh0LmN1cnJHcmlkLnBhZ2luZ1N0YXRlO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHBhZ2luZzogcGFnaW5nU3RhdGUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IElQYWdpbmdTdGF0ZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29udGV4dC5jdXJyR3JpZC5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5jdXJyR3JpZC5wZXJQYWdlICE9PSBzdGF0ZS5yZWNvcmRzUGVyUGFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLnBlclBhZ2UgPSBzdGF0ZS5yZWNvcmRzUGVyUGFnZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLnBhZ2UgPSBzdGF0ZS5pbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW92aW5nOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbW92aW5nOiBjb250ZXh0LmN1cnJHcmlkLm1vdmluZyB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQubW92aW5nID0gc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGNvbnRleHQuY3VyckdyaWQuc2VsZWN0aW9uU2VydmljZS5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyByb3dTZWxlY3Rpb246IHNlbGVjdGlvbiB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogYW55W10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkLnNlbGVjdFJvd3Moc3RhdGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjZWxsU2VsZWN0aW9uOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gY29udGV4dC5jdXJyR3JpZC5nZXRTZWxlY3RlZFJhbmdlcygpLm1hcChyYW5nZSA9PlxuICAgICAgICAgICAgICAgICAgICAoeyByb3dTdGFydDogcmFuZ2Uucm93U3RhcnQsIHJvd0VuZDogcmFuZ2Uucm93RW5kLCBjb2x1bW5TdGFydDogcmFuZ2UuY29sdW1uU3RhcnQsIGNvbHVtbkVuZDogcmFuZ2UuY29sdW1uRW5kIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjZWxsU2VsZWN0aW9uOiBzZWxlY3Rpb24gfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IEdyaWRTZWxlY3Rpb25SYW5nZVtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUuZm9yRWFjaChyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB7IHJvd1N0YXJ0OiByLnJvd1N0YXJ0LCByb3dFbmQ6IHIucm93RW5kLCBjb2x1bW5TdGFydDogci5jb2x1bW5TdGFydCwgY29sdW1uRW5kOiByLmNvbHVtbkVuZH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQuc2VsZWN0UmFuZ2UocmFuZ2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb2x1bW5TZWxlY3Rpb246IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBjb250ZXh0LmN1cnJHcmlkLnNlbGVjdGVkQ29sdW1ucygpLm1hcChjID0+IGMuZmllbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNvbHVtblNlbGVjdGlvbjogc2VsZWN0aW9uIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBzdHJpbmdbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQuZGVzZWxlY3RBbGxDb2x1bW5zKCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5zZWxlY3RDb2x1bW5zKHN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcm93UGlubmluZzoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpbm5lZCA9IGNvbnRleHQuY3VyckdyaWQucGlubmVkUm93cz8ubWFwKHggPT4geC5rZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHJvd1Bpbm5pbmc6IHBpbm5lZCB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlLCBzdGF0ZTogYW55W10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBjbGVhciBjdXJyZW50IHN0YXRlLlxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQucGlubmVkUm93cy5mb3JFYWNoKHJvdyA9PiByb3cudW5waW4oKSk7XG4gICAgICAgICAgICAgICAgc3RhdGUuZm9yRWFjaChyb3dJRCA9PiBjb250ZXh0LmN1cnJHcmlkLnBpblJvdyhyb3dJRCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwaW5uaW5nQ29uZmlnOiB7XG4gICAgICAgICAgICBnZXRGZWF0dXJlU3RhdGU6IChjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSA9PiAoeyBwaW5uaW5nQ29uZmlnOiBjb250ZXh0LmN1cnJHcmlkLnBpbm5pbmcgfSksXG4gICAgICAgICAgICByZXN0b3JlRmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IElQaW5uaW5nQ29uZmlnKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5waW5uaW5nID0gc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cGFuc2lvbjoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlOiAoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSk6IElHcmlkU3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuc2lvblN0YXRlcyA9IEFycmF5LmZyb20oY29udGV4dC5jdXJyR3JpZC5leHBhbnNpb25TdGF0ZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGV4cGFuc2lvbjogZXhwYW5zaW9uU3RhdGVzIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdG9yZUZlYXR1cmVTdGF0ZTogKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUsIHN0YXRlOiBhbnlbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuc2lvblN0YXRlcyA9IG5ldyBNYXA8YW55LCBib29sZWFuPihzdGF0ZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jdXJyR3JpZC5leHBhbnNpb25TdGF0ZXMgPSBleHBhbnNpb25TdGF0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJvd0lzbGFuZHM6IHtcbiAgICAgICAgICAgIGdldEZlYXR1cmVTdGF0ZShjb250ZXh0OiBJZ3hHcmlkU3RhdGVCYXNlRGlyZWN0aXZlKTogSUdyaWRTdGF0ZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRHcmlkU3RhdGVzOiBJR3JpZFN0YXRlQ29sbGVjdGlvbltdID0gW107XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93SXNsYW5kcyA9IChjb250ZXh0LmN1cnJHcmlkIGFzIGFueSkuYWxsTGF5b3V0TGlzdDtcbiAgICAgICAgICAgICAgICBpZiAocm93SXNsYW5kcykge1xuICAgICAgICAgICAgICAgICAgICByb3dJc2xhbmRzLmZvckVhY2gocm93SXNsYW5kID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkR3JpZHMgPSByb3dJc2xhbmQucm93SXNsYW5kQVBJLmdldENoaWxkR3JpZHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkR3JpZHMuZm9yRWFjaChjaEdyaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJvd0lEID0gdGhpcy5nZXRQYXJlbnRSb3dJRChjaEdyaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQgPSBjaEdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuY3VyckdyaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRHcmlkU3RhdGUgPSBjb250ZXh0LmJ1aWxkU3RhdGUoY29udGV4dC5mZWF0dXJlS2V5cykgYXMgSUdyaWRTdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRHcmlkU3RhdGVzLnB1c2goeyBpZDogYCR7cm93SXNsYW5kLmlkfWAsIHBhcmVudFJvd0lELCBzdGF0ZTogY2hpbGRHcmlkU3RhdGUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkID0gY29udGV4dC5ncmlkO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHJvd0lzbGFuZHM6IGNoaWxkR3JpZFN0YXRlcyB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGUoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd0lzbGFuZHMgPSAoY29udGV4dC5jdXJyR3JpZCBhcyBhbnkpLmFsbExheW91dExpc3Q7XG4gICAgICAgICAgICAgICAgaWYgKHJvd0lzbGFuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93SXNsYW5kcy5mb3JFYWNoKHJvd0lzbGFuZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEdyaWRzID0gcm93SXNsYW5kLnJvd0lzbGFuZEFQSS5nZXRDaGlsZEdyaWRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEdyaWRzLmZvckVhY2goY2hHcmlkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRSb3dJRCA9IHRoaXMuZ2V0UGFyZW50Um93SUQoY2hHcmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmN1cnJHcmlkID0gY2hHcmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkR3JpZFN0YXRlID0gc3RhdGUuZmluZChzdCA9PiBzdC5pZCA9PT0gcm93SXNsYW5kLmlkICYmIHN0LnBhcmVudFJvd0lEID09PSBwYXJlbnRSb3dJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkR3JpZFN0YXRlICYmIGNvbnRleHQuY3VyckdyaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlR3JpZFN0YXRlKGNoaWxkR3JpZFN0YXRlLnN0YXRlLCBjb250ZXh0LmZlYXR1cmVLZXlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRleHQuY3VyckdyaWQgPSBjb250ZXh0LmdyaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmF2ZXJzZXMgdGhlIGhpZXJhcmNoeSB1cCB0byB0aGUgcm9vdCBncmlkIHRvIHJldHVybiB0aGUgSUQgb2YgdGhlIGV4cGFuZGVkIHJvdy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2V0UGFyZW50Um93SUQ6IChncmlkOiBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkR3JpZDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoZ3JpZC5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRHcmlkID0gZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZCA9IGdyaWQucGFyZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JpZC5ncmlkQVBJLmdldFBhcmVudFJvd0lkKGNoaWxkR3JpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBpdm90Q29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgZ2V0RmVhdHVyZVN0YXRlKGNvbnRleHQ6IElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUpOiBJR3JpZFN0YXRlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSAoY29udGV4dC5jdXJyR3JpZCBhcyBJZ3hQaXZvdEdyaWRDb21wb25lbnQpLnBpdm90Q29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZyB8fCAhKGNvbnRleHQuY3VyckdyaWQgaW5zdGFuY2VvZiBJZ3hQaXZvdEdyaWRDb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBpdm90Q29uZmlndXJhdGlvbjogdW5kZWZpbmVkIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0NvcHkgPSBjbG9uZVZhbHVlKGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgY29uZmlnQ29weS5yb3dzID0gY2xvbmVBcnJheShjb25maWcucm93cywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29uZmlnQ29weS5jb2x1bW5zID0gY2xvbmVBcnJheShjb25maWcuY29sdW1ucywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29uZmlnQ29weS5maWx0ZXJzID0gY2xvbmVBcnJheShjb25maWcuZmlsdGVycywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGltcyA9ICBbLi4uKGNvbmZpZ0NvcHkucm93cyB8fCBbXSksIC4uLihjb25maWdDb3B5LmNvbHVtbnMgfHwgW10pLCAuLi4oY29uZmlnQ29weS5maWx0ZXJzIHx8IFtdKV07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZURpbWVuc2lvbnMgPSBkaW1zLmZpbHRlcih4ID0+IGNvbnRleHQuaXNEYXRlRGltZW5zaW9uKHgpKTtcbiAgICAgICAgICAgICAgICBkYXRlRGltZW5zaW9ucz8uZm9yRWFjaChkaW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3Qgc2VyaWFsaXplIHRoZSBncmlkIHJlc291cmNlIHN0cmluZ3MuIFRoaXMgd291bGQgcG9sbHV0ZSB0aGUgb2JqZWN0IHdpdGggdW5uZWNlc3NhcnkgZGF0YS5cbiAgICAgICAgICAgICAgICAgICAgKGRpbSBhcyBJZ3hQaXZvdERhdGVEaW1lbnNpb24pLnJlc291cmNlU3RyaW5ncyA9IHt9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHBpdm90Q29uZmlndXJhdGlvbjogY29uZmlnQ29weSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3RvcmVGZWF0dXJlU3RhdGUoY29udGV4dDogSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSwgc3RhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZzogSVBpdm90Q29uZmlndXJhdGlvbiA9IHN0YXRlO1xuICAgICAgICAgICAgICAgIGlmICghY29uZmlnIHx8ICEoY29udGV4dC5jdXJyR3JpZCBpbnN0YW5jZW9mIElneFBpdm90R3JpZENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlc3RvcmVWYWx1ZXMoY29uZmlnLCBjb250ZXh0LmN1cnJHcmlkIGFzIElneFBpdm90R3JpZENvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlRGltZW5zaW9ucyhjb25maWcpO1xuICAgICAgICAgICAgICAgIChjb250ZXh0LmN1cnJHcmlkIGFzIElneFBpdm90R3JpZENvbXBvbmVudCkucGl2b3RDb25maWd1cmF0aW9uID0gY29uZmlnO1xuICAgICAgICAgICAgfSxcblxuXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMgZGV0ZXJtaW5pbmcgaWYgYSBjZXJ0YWluIGZlYXR1cmUgc3RhdGUgc2hvdWxkIGJlIHNhdmVkLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWdyaWQgW2lneEdyaWRTdGF0ZV09XCJvcHRpb25zXCI+PC9pZ3gtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogcHVibGljIG9wdGlvbnMgPSB7c2VsZWN0aW9uOiBmYWxzZSwgYWR2YW5jZWRGaWx0ZXJpbmc6IGZhbHNlfTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgb3B0aW9ucygpOiBJR3JpZFN0YXRlT3B0aW9ucyB7XG4gICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBvcHRpb25zKHZhbHVlOiBJR3JpZFN0YXRlT3B0aW9ucykge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX29wdGlvbnMsIHZhbHVlKTtcbiAgICAgICAgaWYgKCEodGhpcy5ncmlkIGluc3RhbmNlb2YgSWd4R3JpZENvbXBvbmVudCkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9vcHRpb25zLmdyb3VwQnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fb3B0aW9ucy5yb3dJc2xhbmRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHVibGljIGdyaWQ6IEdyaWRUeXBlLFxuICAgICAgICBwcm90ZWN0ZWQgdmlld1JlZjogVmlld0NvbnRhaW5lclJlZiwgcHJvdGVjdGVkIGVudkluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLCAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcikgeyB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzdGF0ZSBvZiBhIGZlYXR1cmUgb3Igc3RhdGVzIG9mIGFsbCBncmlkIGZlYXR1cmVzLCB1bmxlc3MgYSBjZXJ0YWluIGZlYXR1cmUgaXMgZGlzYWJsZWQgdGhyb3VnaCB0aGUgYG9wdGlvbnNgIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGBzZXJpYWxpemVgIGRldGVybWluZXMgd2hldGhlciB0aGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgYmUgc2VyaWFsaXplZCB0byBKU09OIHN0cmluZy4gRGVmYXVsdCB2YWx1ZSBpcyB0cnVlLlxuICAgICAqIEBwYXJhbSBgZmVhdHVyZWAgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgZGV0ZXJtaW5pbmcgdGhlIGZlYXR1cmVzIHRvIGJlIGFkZGVkIGluIHRoZSBzdGF0ZS4gSWYgc2tpcHBlZCwgYWxsIGZlYXR1cmVzIGFyZSBhZGRlZC5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIHRvIEpTT04gc3RyaW5nIElHcmlkU3RhdGUgb2JqZWN0LCBvciB0aGUgbm9uLXNlcmlhbGl6ZWQgSUdyaWRTdGF0ZSBvYmplY3QuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZ3JpZCBbaWd4R3JpZFN0YXRlXT1cIm9wdGlvbnNcIj48L2lneC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKElneEdyaWRTdGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHN0YXRlO1xuICAgICAqIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGUuZ2V0U3RhdGUoKTsgLy8gcmV0dXJucyBzdHJpbmdcbiAgICAgKiBsZXQgc3RhdGUgPSB0aGlzLnN0YXRlKGZhbHNlKSAvLyByZXR1cm5zIGBJR3JpZFN0YXRlYCBvYmplY3RcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0U3RhdGVJbnRlcm5hbChzZXJpYWxpemUgPSB0cnVlLCBmZWF0dXJlcz86IEdyaWRGZWF0dXJlcyB8IEdyaWRGZWF0dXJlc1tdKTogSUdyaWRTdGF0ZSB8IHN0cmluZyAge1xuICAgICAgICBsZXQgc3RhdGU6IElHcmlkU3RhdGUgfCBzdHJpbmc7XG4gICAgICAgIHRoaXMuY3VyckdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZSA9IHRoaXMuYnVpbGRTdGF0ZShmZWF0dXJlcykgYXMgSUdyaWRTdGF0ZTtcbiAgICAgICAgaWYgKHNlcmlhbGl6ZSkge1xuICAgICAgICAgICAgc3RhdGUgPSBKU09OLnN0cmluZ2lmeShzdGF0ZSwgdGhpcy5zdHJpbmdpZnlDYWxsYmFjaykgYXMgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgIC8qKlxuICAgICAqIFJlc3RvcmVzIGdyaWQgZmVhdHVyZXMnIHN0YXRlIGJhc2VkIG9uIHRoZSBJR3JpZFN0YXRlIG9iamVjdCBwYXNzZWQgYXMgYW4gYXJndW1lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gSUdyaWRTdGF0ZSBvYmplY3QgdG8gcmVzdG9yZSBzdGF0ZSBmcm9tLlxuICAgICAqIEByZXR1cm5zXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZ3JpZCBbaWd4R3JpZFN0YXRlXT1cIm9wdGlvbnNcIj48L2lneC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKElneEdyaWRTdGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHN0YXRlO1xuICAgICAqIHRoaXMuc3RhdGUuc2V0U3RhdGUoZ3JpZFN0YXRlKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0U3RhdGVJbnRlcm5hbChzdGF0ZTogSUdyaWRTdGF0ZSwgZmVhdHVyZXM/OiBHcmlkRmVhdHVyZXMgfCBHcmlkRmVhdHVyZXNbXSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHRoaXMuY3VyckdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIHRoaXMucmVzdG9yZUdyaWRTdGF0ZShzdGF0ZSwgZmVhdHVyZXMpO1xuICAgICAgICB0aGlzLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gVE9ET1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhbiBJR3JpZFN0YXRlIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGJ1aWxkU3RhdGUoa2V5cz86IEdyaWRGZWF0dXJlcyB8IEdyaWRGZWF0dXJlc1tdKTogSUdyaWRTdGF0ZSB7XG4gICAgICAgIHRoaXMuYXBwbHlGZWF0dXJlcyhrZXlzKTtcbiAgICAgICAgbGV0IGdyaWRTdGF0ZSA9IHt9IGFzIElHcmlkU3RhdGU7XG4gICAgICAgIHRoaXMuZmVhdHVyZUtleXMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNbZl0pIHtcbiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmdyaWQgaW5zdGFuY2VvZiBJZ3hHcmlkQ29tcG9uZW50KSAmJiBmID09PSAnZ3JvdXBCeScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlKGYpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVTdGF0ZTogSUdyaWRTdGF0ZSA9IGZlYXR1cmU/LmdldEZlYXR1cmVTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICBncmlkU3RhdGUgPSBPYmplY3QuYXNzaWduKGdyaWRTdGF0ZSwgZmVhdHVyZVN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBncmlkU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1ldGhvZCB0aGF0IGNhbGxzIGNvcnJlc3BvbmRpbmcgbWV0aG9kcyB0byByZXN0b3JlIGZlYXR1cmVzIGZyb20gdGhlIHBhc3NlZCBJR3JpZFN0YXRlIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc3RvcmVHcmlkU3RhdGUoc3RhdGU6IElHcmlkU3RhdGUsIGZlYXR1cmVzPzogR3JpZEZlYXR1cmVzIHwgR3JpZEZlYXR1cmVzW10pIHtcbiAgICAgICAgdGhpcy5hcHBseUZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgICAgdGhpcy5yZXN0b3JlRmVhdHVyZXMoc3RhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzdG9yZUZlYXR1cmVzKHN0YXRlOiBJR3JpZFN0YXRlKSB7XG4gICAgICAgIHRoaXMuZmVhdHVyZUtleXMuZm9yRWFjaChmID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNbZl0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlU3RhdGUgPSBzdGF0ZVtmXTtcbiAgICAgICAgICAgICAgICBpZiAoZiA9PT0gJ21vdmluZycgfHwgZmVhdHVyZVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmUoZik7XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmUucmVzdG9yZUZlYXR1cmVTdGF0ZSh0aGlzLCBmZWF0dXJlU3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGNvbGxlY3Rpb24gb2YgYWxsIGdyaWQgZmVhdHVyZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBseUZlYXR1cmVzKGtleXM/OiBHcmlkRmVhdHVyZXMgfCBHcmlkRmVhdHVyZXNbXSkge1xuICAgICAgICB0aGlzLmZlYXR1cmVLZXlzID0gW107XG4gICAgICAgIGlmICgha2V5cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5vcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXMucHVzaChrZXkgYXMgR3JpZEZlYXR1cmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGtleXMpKSB7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVLZXlzID0gWy4uLmtleXMgYXMgR3JpZEZlYXR1cmVzW11dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5cy5wdXNoKGtleXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmVzdG9yZXMgY29tcGxleCBvYmplY3RzIGluIHRoZSBwaXZvdCBkaW1lbnNpb25zXG4gICAgICogTGlrZSB0aGUgSWd4UGl2b3REYXRlRGltZW5zaW9uIGFuZCBmaWx0ZXJzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzdG9yZURpbWVuc2lvbnMoY29uZmlnOiBJUGl2b3RDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gW2NvbmZpZy5yb3dzLCBjb25maWcuY29sdW1ucywgY29uZmlnLmZpbHRlcnNdO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2xsZWN0aW9uPy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaW0gPSBjb2xsZWN0aW9uW2luZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0RhdGVEaW1lbnNpb24oZGltKSkge1xuICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZURhdGVEaW1lbnNpb24oZGltIGFzIElneFBpdm90RGF0ZURpbWVuc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHJlc3RvcmUgY29tcGxleCBmaWx0ZXJzXG4gICAgICAgICAgICAgICAgaWYgKGRpbS5maWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGltLmZpbHRlciA9IHRoaXMuY3JlYXRlRXhwcmVzc2lvbnNUcmVlRnJvbU9iamVjdChkaW0uZmlsdGVyIGFzIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXN0b3JlcyB0aGUgSWd4UGl2b3REYXRlRGltZW5zaW9uIHdpdGggaXRzIGRlZmF1bHQgZnVuY3Rpb25zIGFuZCByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzdG9yZURhdGVEaW1lbnNpb24oZGltOiBJZ3hQaXZvdERhdGVEaW1lbnNpb24pIHtcbiAgICAgICAgY29uc3QgZGF0ZURpbSA9IG5ldyBJZ3hQaXZvdERhdGVEaW1lbnNpb24oKGRpbSBhcyBhbnkpLl9iYXNlRGltZW5zaW9uLCAoZGltIGFzIGFueSkuX29wdGlvbnMpO1xuICAgICAgICAvLyByZXN0b3JlIGZ1bmN0aW9ucyBhbmQgcmVzb3VyY2Ugc3RyaW5nc1xuICAgICAgICBkaW0ucmVzb3VyY2VTdHJpbmdzID0gZGF0ZURpbS5yZXNvdXJjZVN0cmluZ3M7XG4gICAgICAgIGRpbS5tZW1iZXJGdW5jdGlvbiA9IGRhdGVEaW0ubWVtYmVyRnVuY3Rpb247XG4gICAgICAgIGxldCBjdXJyRGltOiBJUGl2b3REaW1lbnNpb24gPSBkaW07XG4gICAgICAgIGxldCBvcmlnaW5EaW06IElQaXZvdERpbWVuc2lvbiA9IGRhdGVEaW07XG4gICAgICAgIHdoaWxlIChjdXJyRGltLmNoaWxkTGV2ZWwpIHtcbiAgICAgICAgICAgIGN1cnJEaW0gPSBjdXJyRGltLmNoaWxkTGV2ZWw7XG4gICAgICAgICAgICBvcmlnaW5EaW0gPSBvcmlnaW5EaW0uY2hpbGRMZXZlbDtcbiAgICAgICAgICAgIGN1cnJEaW0ubWVtYmVyRnVuY3Rpb24gPSBvcmlnaW5EaW0ubWVtYmVyRnVuY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoaXMgaXMgYSBJZ3hQaXZvdERhdGVEaW1lbnNpb24uXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0RhdGVEaW1lbnNpb24oZGltOiBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgcmV0dXJuIChkaW0gYXMgYW55KS5fYmFzZURpbWVuc2lvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXN0b3JlcyBjb21wbGV4IG9iamVjdHMgaW4gdGhlIHBpdm90IHZhbHVlcy5cbiAgICAgKiBMaWtlIHRoZSBkZWZhdWx0IGFnZ3JlZ2F0b3IgbWV0aG9kcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc3RvcmVWYWx1ZXMoY29uZmlnOiBJUGl2b3RDb25maWd1cmF0aW9uLCBncmlkOiBJZ3hQaXZvdEdyaWRDb21wb25lbnQpIHtcbiAgICAgICAgLy8gcmVzdG9yZSBhZ2dyZWdhdG9yIGZ1bmMgaWYgaXQgbWF0Y2hlcyB0aGUgZGVmYXVsdCBhZ2dyZWdhdG9ycyBrZXkgYW5kIGxhYmVsXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGVMaXN0ID0gdmFsdWUuYWdncmVnYXRlTGlzdDtcbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0b3JzID0gUGl2b3RVdGlsLmdldEFnZ3JlZ2F0b3JzRm9yVmFsdWUodmFsdWUsIGdyaWQpO1xuICAgICAgICAgICAgdmFsdWUuYWdncmVnYXRlLmFnZ3JlZ2F0b3IgPSBhZ2dyZWdhdG9ycy5maW5kKHggPT4geC5rZXkgPT09IHZhbHVlLmFnZ3JlZ2F0ZS5rZXkgJiYgeC5sYWJlbCA9PT0gdmFsdWUuYWdncmVnYXRlLmxhYmVsKT8uYWdncmVnYXRvcjtcbiAgICAgICAgICAgIGlmIChhZ2dyZWdhdGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhZyBvZiBhZ2dyZWdhdGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFnLmFnZ3JlZ2F0b3IgPSBhZ2dyZWdhdG9ycy5maW5kKHggPT4geC5rZXkgPT09IGFnLmtleSAmJiB4LmxhYmVsID09PSBhZy5sYWJlbCk/LmFnZ3JlZ2F0b3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgYnVpbGRzIGEgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIGZyb20gYSBwcm92aWRlZCBvYmplY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVFeHByZXNzaW9uc1RyZWVGcm9tT2JqZWN0KGV4cHJUcmVlT2JqZWN0OiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUge1xuICAgICAgICBpZiAoIWV4cHJUcmVlT2JqZWN0IHx8ICFleHByVHJlZU9iamVjdC5maWx0ZXJpbmdPcGVyYW5kcykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleHByZXNzaW9uc1RyZWUgPSBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKGV4cHJUcmVlT2JqZWN0Lm9wZXJhdG9yLCBleHByVHJlZU9iamVjdC5maWVsZE5hbWUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHByVHJlZU9iamVjdC5maWx0ZXJpbmdPcGVyYW5kcykge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXRlbSBpcyBhbiBleHByZXNzaW9ucyB0cmVlIG9yIGEgc2luZ2xlIGV4cHJlc3Npb24uXG4gICAgICAgICAgICBpZiAoKGl0ZW0gYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKS5maWx0ZXJpbmdPcGVyYW5kcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YlRyZWUgPSB0aGlzLmNyZWF0ZUV4cHJlc3Npb25zVHJlZUZyb21PYmplY3QoKGl0ZW0gYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSk7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLnB1c2goc3ViVHJlZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHIgPSBpdGVtIGFzIElGaWx0ZXJpbmdFeHByZXNzaW9uO1xuICAgICAgICAgICAgICAgIGxldCBkYXRhVHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJHcmlkIGluc3RhbmNlb2YgSWd4UGl2b3RHcmlkQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlID0gdGhpcy5jdXJyR3JpZC5hbGxEaW1lbnNpb25zLmZpbmQoeCA9PiB4Lm1lbWJlck5hbWUgPT09IGV4cHIuZmllbGROYW1lKS5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VyckdyaWQuY29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlID0gdGhpcy5jdXJyR3JpZC5jb2x1bW5zLmZpbmQoYyA9PiBjLmZpZWxkID09PSBleHByLmZpZWxkTmFtZSkuZGF0YVR5cGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUgPSB0aGlzLnN0YXRlLmNvbHVtbnMuZmluZChjID0+IGMuZmllbGQgPT09IGV4cHIuZmllbGROYW1lKS5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gd2hlbiBFU0YsIHZhbHVlcyBhcmUgc3RvcmVkIGluIFNldC5cbiAgICAgICAgICAgICAgICAvLyBGaXJzdCB0aG9zZSB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byBhbiBhcnJheSBiZWZvcmUgcmV0dXJuaW5nIHN0cmluZyBpbiB0aGUgc3RyaW5naWZ5Q2FsbGJhY2tcbiAgICAgICAgICAgICAgICAvLyBub3cgd2UgbmVlZCB0byBjb252ZXJ0IHRob3NlIGJhY2sgdG8gU2V0XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhwci5zZWFyY2hWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cHIuc2VhcmNoVmFsID0gbmV3IFNldChleHByLnNlYXJjaFZhbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwci5zZWFyY2hWYWwgPSBleHByLnNlYXJjaFZhbCAmJiAoZGF0YVR5cGUgPT09ICdkYXRlJyB8fCBkYXRhVHlwZSA9PT0gJ2RhdGVUaW1lJykgPyBuZXcgRGF0ZShEYXRlLnBhcnNlKGV4cHIuc2VhcmNoVmFsKSkgOiBleHByLnNlYXJjaFZhbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLmdlbmVyYXRlRmlsdGVyaW5nQ29uZGl0aW9uKGRhdGFUeXBlLCBleHByLmNvbmRpdGlvbi5uYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJHcmlkLmNvbHVtbnMuZmluZChjID0+IGMuZmllbGQgPT09IGV4cHIuZmllbGROYW1lKS5maWx0ZXJzLmNvbmRpdGlvbihleHByLmNvbmRpdGlvbi5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwci5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5wdXNoKGV4cHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByZXNzaW9uc1RyZWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZmlsdGVyaW5nIGxvZ2ljIGZ1bmN0aW9uIGZvciBhIGdpdmVuIGRhdGFUeXBlIGFuZCBjb25kaXRpb24gKGNvbnRhaW5zLCBncmVhdGVyVGhhbiwgZXRjLilcbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlRmlsdGVyaW5nQ29uZGl0aW9uKGRhdGFUeXBlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IElGaWx0ZXJpbmdPcGVyYXRpb24ge1xuICAgICAgICBsZXQgZmlsdGVycztcbiAgICAgICAgc3dpdGNoIChkYXRhVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuQm9vbGVhbjpcbiAgICAgICAgICAgICAgICBmaWx0ZXJzID0gSWd4Qm9vbGVhbkZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLk51bWJlcjpcbiAgICAgICAgICAgICAgICBmaWx0ZXJzID0gSWd4TnVtYmVyRmlsdGVyaW5nT3BlcmFuZC5pbnN0YW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZTpcbiAgICAgICAgICAgICAgICBmaWx0ZXJzID0gSWd4RGF0ZUZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lOlxuICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBJZ3hEYXRlVGltZUZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLlN0cmluZzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZmlsdGVycyA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQuaW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVycy5jb25kaXRpb24obmFtZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0cmluZ2lmeUNhbGxiYWNrKGtleTogc3RyaW5nLCB2YWw6IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnc2VhcmNoVmFsJyAmJiB2YWwgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZlYXR1cmUoa2V5OiBzdHJpbmcpOiBGZWF0dXJlIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZTogRmVhdHVyZSA9IHRoaXMuRkVBVFVSRVNba2V5XTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmU7XG4gICAgfVxufVxuIl19
|
|
@@ -22,10 +22,10 @@ export class IgxGridStateDirective extends IgxGridStateBaseDirective {
|
|
|
22
22
|
* public options = {selection: false, advancedFiltering: false};
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
|
-
get
|
|
25
|
+
get options() {
|
|
26
26
|
return super.options;
|
|
27
27
|
}
|
|
28
|
-
set
|
|
28
|
+
set options(value) {
|
|
29
29
|
super.options = value;
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
@@ -68,7 +68,7 @@ export class IgxGridStateDirective extends IgxGridStateBaseDirective {
|
|
|
68
68
|
return super.setStateInternal(state, features);
|
|
69
69
|
}
|
|
70
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IgxGridStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
71
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: IgxGridStateDirective, isStandalone: true, selector: "[igxGridState]", inputs: {
|
|
71
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: IgxGridStateDirective, isStandalone: true, selector: "[igxGridState]", inputs: { options: ["igxGridState", "options"] }, outputs: { stateParsed: "stateParsed" }, usesInheritance: true, ngImport: i0 }); }
|
|
72
72
|
}
|
|
73
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: IgxGridStateDirective, decorators: [{
|
|
74
74
|
type: Directive,
|
|
@@ -76,10 +76,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
76
76
|
selector: '[igxGridState]',
|
|
77
77
|
standalone: true
|
|
78
78
|
}]
|
|
79
|
-
}], propDecorators: {
|
|
79
|
+
}], propDecorators: { options: [{
|
|
80
80
|
type: Input,
|
|
81
81
|
args: ['igxGridState']
|
|
82
82
|
}], stateParsed: [{
|
|
83
83
|
type: Output
|
|
84
84
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3N0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBK0MseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNaEgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHlCQUF5QjtJQUpwRTs7UUFrRUk7Ozs7OztXQU1HO1FBRUksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0tBQ3ZEO0lBcEVHOzs7Ozs7OztPQVFHO0lBQ0gsSUFDb0IsT0FBTztRQUN2QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELElBQW9CLE9BQU8sQ0FBQyxLQUF3QjtRQUNoRCxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSSxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxRQUF3QztRQUN0RSxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELG9CQUFvQjtJQUNwQjs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxRQUFRLENBQUMsS0FBMEIsRUFBRSxRQUF3QztRQUNoRixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBZSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0E1RFEscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQWN1QixPQUFPO3NCQUQxQixLQUFLO3VCQUFDLGNBQWM7Z0JBMERkLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEZlYXR1cmVzLCBJR3JpZFN0YXRlLCBJR3JpZFN0YXRlT3B0aW9ucywgSWd4R3JpZFN0YXRlQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vc3RhdGUtYmFzZS5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hHcmlkU3RhdGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRTdGF0ZURpcmVjdGl2ZSBleHRlbmRzIElneEdyaWRTdGF0ZUJhc2VEaXJlY3RpdmUge1xuICAgIHByaXZhdGUgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX29wdGlvbnM6IElHcmlkU3RhdGVPcHRpb25zIHwgJyc7XG5cbiAgICAvKipcbiAgICAgKiAgQW4gb2JqZWN0IHdpdGggb3B0aW9ucyBkZXRlcm1pbmluZyBpZiBhIGNlcnRhaW4gZmVhdHVyZSBzdGF0ZSBzaG91bGQgYmUgc2F2ZWQuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZ3JpZCBbaWd4R3JpZFN0YXRlXT1cIm9wdGlvbnNcIj48L2lneC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgb3B0aW9ucyA9IHtzZWxlY3Rpb246IGZhbHNlLCBhZHZhbmNlZEZpbHRlcmluZzogZmFsc2V9O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4R3JpZFN0YXRlJylcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IG9wdGlvbnMoKTogSUdyaWRTdGF0ZU9wdGlvbnMge1xuICAgICAgICByZXR1cm4gc3VwZXIub3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IG9wdGlvbnModmFsdWU6IElHcmlkU3RhdGVPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyLm9wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzdGF0ZSBvZiBhIGZlYXR1cmUgb3Igc3RhdGVzIG9mIGFsbCBncmlkIGZlYXR1cmVzLCB1bmxlc3MgYSBjZXJ0YWluIGZlYXR1cmUgaXMgZGlzYWJsZWQgdGhyb3VnaCB0aGUgYG9wdGlvbnNgIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGBzZXJpYWxpemVgIGRldGVybWluZXMgd2hldGhlciB0aGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgYmUgc2VyaWFsaXplZCB0byBKU09OIHN0cmluZy4gRGVmYXVsdCB2YWx1ZSBpcyB0cnVlLlxuICAgICAqIEBwYXJhbSBgZmVhdHVyZWAgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgZGV0ZXJtaW5pbmcgdGhlIGZlYXR1cmVzIHRvIGJlIGFkZGVkIGluIHRoZSBzdGF0ZS4gSWYgc2tpcHBlZCwgYWxsIGZlYXR1cmVzIGFyZSBhZGRlZC5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIHRvIEpTT04gc3RyaW5nIElHcmlkU3RhdGUgb2JqZWN0LCBvciB0aGUgbm9uLXNlcmlhbGl6ZWQgSUdyaWRTdGF0ZSBvYmplY3QuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZ3JpZCBbaWd4R3JpZFN0YXRlXT1cIm9wdGlvbnNcIj48L2lneC1ncmlkPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKElneEdyaWRTdGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHN0YXRlO1xuICAgICAqIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGUuZ2V0U3RhdGUoKTsgLy8gcmV0dXJucyBzdHJpbmdcbiAgICAgKiBsZXQgc3RhdGUgPSB0aGlzLnN0YXRlKGZhbHNlKSAvLyByZXR1cm5zIGBJR3JpZFN0YXRlYCBvYmplY3RcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RhdGUoc2VyaWFsaXplID0gdHJ1ZSwgZmVhdHVyZXM/OiBHcmlkRmVhdHVyZXMgfCBHcmlkRmVhdHVyZXNbXSk6IElHcmlkU3RhdGUgfCBzdHJpbmcgIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFN0YXRlSW50ZXJuYWwoc2VyaWFsaXplLCBmZWF0dXJlcyk7XG4gICAgfVxuXG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICAvKipcbiAgICAgKiBSZXN0b3JlcyBncmlkIGZlYXR1cmVzJyBzdGF0ZSBiYXNlZCBvbiB0aGUgSUdyaWRTdGF0ZSBvYmplY3QgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIElHcmlkU3RhdGUgb2JqZWN0IHRvIHJlc3RvcmUgc3RhdGUgZnJvbS5cbiAgICAgKiBAcmV0dXJuc1xuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWdyaWQgW2lneEdyaWRTdGF0ZV09XCJvcHRpb25zXCI+PC9pZ3gtZ3JpZD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChJZ3hHcmlkU3RhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzdGF0ZTtcbiAgICAgKiB0aGlzLnN0YXRlLnNldFN0YXRlKGdyaWRTdGF0ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXRlKHN0YXRlOiBJR3JpZFN0YXRlIHwgc3RyaW5nLCBmZWF0dXJlcz86IEdyaWRGZWF0dXJlcyB8IEdyaWRGZWF0dXJlc1tdKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEpTT04ucGFyc2Uoc3RhdGUpIGFzIElHcmlkU3RhdGU7XG4gICAgICAgICAgICB0aGlzLnN0YXRlUGFyc2VkLmVtaXQoc3RhdGUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVyLnNldFN0YXRlSW50ZXJuYWwoc3RhdGUsIGZlYXR1cmVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgRXZlbnQgZW1pdHRlZCB3aGVuIHNldCBzdGF0ZSBpcyBjYWxsZWQgd2l0aCBhIHN0cmluZy5cbiAgICAgKiBSZXR1cm5zIHRoZSBwYXJzZWQgc3RhdGUgb2JqZWN0IHNvIHRoYXQgaXQgY2FuIGJlIGZ1cnRoZXIgbW9kaWZpZWQgYmVmb3JlIGFwcGx5aW5nIHRvIHRoZSBncmlkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnN0YXRlLnN0YXRlUGFyc2VkLnN1YnNjcmliZShwYXJzZWRTdGF0ZSA9PiBwYXJzZWRTdGF0ZS5zb3J0aW5nLmZvckVhY2goeCA9PiB4LnN0cmF0ZWd5ID0gTm9vcFNvcnRpbmdTdHJhdGVneS5pbnN0YW5jZSgpfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHN0YXRlUGFyc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJR3JpZFN0YXRlPigpO1xufVxuIl19
|
|
@@ -61,7 +61,7 @@ export class IgxIconService {
|
|
|
61
61
|
* ```typescript
|
|
62
62
|
* this.iconService.registerFamilyAlias('material', 'material-icons');
|
|
63
63
|
* ```
|
|
64
|
-
* @deprecated Use `setFamily` instead.
|
|
64
|
+
* @deprecated in version 18.1.0. Use `setFamily` instead.
|
|
65
65
|
*/
|
|
66
66
|
registerFamilyAlias(alias, className = alias, type = "font") {
|
|
67
67
|
this.setFamily(alias, { className, type });
|
|
@@ -164,7 +164,6 @@ export class IgxIconService {
|
|
|
164
164
|
this._families.set(family, { className: family, type: "svg" });
|
|
165
165
|
this.fetchSvg(url).subscribe((res) => {
|
|
166
166
|
this.cacheSvgIcon(name, res, family, stripMeta);
|
|
167
|
-
this._iconLoaded.next({ name, value: res, family });
|
|
168
167
|
});
|
|
169
168
|
}
|
|
170
169
|
}
|
|
@@ -232,6 +231,7 @@ export class IgxIconService {
|
|
|
232
231
|
const svg = doc.querySelector("svg");
|
|
233
232
|
if (!this._cachedIcons.has(family)) {
|
|
234
233
|
this._cachedIcons.set(family, new Map());
|
|
234
|
+
this._iconLoaded.next({ name, value, family });
|
|
235
235
|
}
|
|
236
236
|
if (svg) {
|
|
237
237
|
svg.setAttribute("fit", "");
|
|
@@ -271,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
271
271
|
type: Inject,
|
|
272
272
|
args: [DOCUMENT]
|
|
273
273
|
}] }] });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBcUMzQzs7Ozs7Ozs7Ozs7R0FXRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBc0J2QixZQUN3QixVQUF3QixFQUN4QixXQUF1QixFQUN2QixhQUEyQixFQUNQLFFBQWtCO1FBSHRDLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDUCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBZHRELG1CQUFjLEdBQWU7WUFDakMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7U0FDdEQsQ0FBQztRQUNNLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUNyRCxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBU3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElB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QUFDO3dCQUNSLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNCLENBQUM7b0JBRUQsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDUCxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxQixDQUFDO2dCQUNMLENBQUM7Z0JBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FDbkQsR0FBRyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQztnQkFDRixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0ExVFEsY0FBYyxvSkEwQkMsUUFBUTtrSEExQnZCLGNBQWMsY0FGWCxNQUFNOzsyRkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBd0JRLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFNlY3VyaXR5Q29udGV4dCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tIFwiLi4vY29yZS91dGlsc1wiO1xuXG5leHBvcnQgdHlwZSBJY29uVHlwZSA9IFwic3ZnXCIgfCBcImZvbnRcIiB8IFwibGlnYVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEljb25NZXRhIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmFtaWx5OiBzdHJpbmc7XG4gICAgdHlwZT86IEljb25UeXBlO1xufVxuXG5pbnRlcmZhY2UgRmFtaWx5TWV0YSB7XG4gICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogSWNvblR5cGU7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljb25GYW1pbHkge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBtZXRhOiBGYW1pbHlNZXRhO1xufVxuXG5leHBvcnQgdHlwZSBJY29uUmVmZXJlbmNlID0gSWNvbk1ldGEgJiBGYW1pbHlNZXRhO1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIFNWRyBpY29uIGlzIGxvYWRlZCB0aHJvdWdoXG4gKiBhIEhUVFAgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJZ3hJY29uTG9hZGVkRXZlbnQge1xuICAgIC8qKiBOYW1lIG9mIHRoZSBpY29uICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgYWN0dWFsIFNWRyB0ZXh0LCBpZiBhbnkgKi9cbiAgICB2YWx1ZT86IHN0cmluZztcbiAgICAvKiogVGhlIGZvbnQtZmFtaWx5IGZvciB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gbWF0ZXJpYWwuICovXG4gICAgZmFtaWx5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgSWNvbiBTZXJ2aWNlKiogLVxuICpcbiAqIFRoZSBJZ25pdGUgVUkgSWNvbiBTZXJ2aWNlIG1ha2VzIGl0IGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gaW5jbHVkZSBjdXN0b20gU1ZHIGltYWdlcyBhbmQgdXNlIHRoZW0gd2l0aCBJZ3hJY29uQ29tcG9uZW50LlxuICogSW4gYWRkaXRpb24gaXQgY291bGQgYmUgdXNlZCB0byBhc3NvY2lhdGUgYSBjdXN0b20gY2xhc3MgdG8gYmUgYXBwbGllZCBvbiBJZ3hJY29uQ29tcG9uZW50IGFjY29yZGluZyB0byBnaXZlbiBmb250LWZhbWlseS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5pY29uU2VydmljZS5zZXRGYW1pbHkoJ21hdGVyaWFsJywgeyBjbGFzc05hbWU6ICdtYXRlcmlhbC1pY29ucycsIHR5cGU6ICdmb250JyB9KTtcbiAqIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbignYXJ1YmEnLCAnL2Fzc2V0cy9zdmcvY291bnRyeV9mbGFncy9hcnViYS5zdmcnLCAnc3ZnLWZsYWdzJyk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hJY29uU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYW4gaWNvbiBpcyBzdWNjZXNzZnVsbHkgbG9hZGVkXG4gICAgICogdGhyb3VnaCBhIEhUVFAgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuc2VydmljZS5pY29uTG9hZGVkLnN1YnNjcmliZSgoZXY6IElneEljb25Mb2FkZWRFdmVudCkgPT4gLi4uKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaWNvbkxvYWRlZDogT2JzZXJ2YWJsZTxJZ3hJY29uTG9hZGVkRXZlbnQ+O1xuXG4gICAgcHJpdmF0ZSBfZGVmYXVsdEZhbWlseTogSWNvbkZhbWlseSA9IHtcbiAgICAgICAgbmFtZTogXCJtYXRlcmlhbFwiLFxuICAgICAgICBtZXRhOiB7IGNsYXNzTmFtZTogXCJtYXRlcmlhbC1pY29uc1wiLCB0eXBlOiBcImxpZ2FcIiB9LFxuICAgIH07XG4gICAgcHJpdmF0ZSBfaWNvblJlZnMgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgSWNvbk1ldGE+PigpO1xuICAgIHByaXZhdGUgX2ZhbWlsaWVzID0gbmV3IE1hcDxzdHJpbmcsIEZhbWlseU1ldGE+KCk7XG4gICAgcHJpdmF0ZSBfY2FjaGVkSWNvbnMgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgU2FmZUh0bWw+PigpO1xuICAgIHByaXZhdGUgX2ljb25Mb2FkZWQgPSBuZXcgU3ViamVjdDxJZ3hJY29uTG9hZGVkRXZlbnQ+KCk7XG4gICAgcHJpdmF0ZSBfZG9tUGFyc2VyOiBET01QYXJzZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcm90ZWN0ZWQgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICkge1xuICAgICAgICB0aGlzLmljb25Mb2FkZWQgPSB0aGlzLl9pY29uTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLnNldEZhbWlseSh0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWUsIHRoaXMuX2RlZmF1bHRGYW1pbHkubWV0YSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtVXRpbD8uaXNCcm93c2VyKSB7XG4gICAgICAgICAgICB0aGlzLl9kb21QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgZGVmYXVsdCBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBkZWZhdWx0RmFtaWx5ID0gdGhpcy5pY29uU2VydmljZS5kZWZhdWx0RmFtaWx5O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGVmYXVsdEZhbWlseSgpOiBJY29uRmFtaWx5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRGYW1pbHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFNldHMgdGhlIGRlZmF1bHQgZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5kZWZhdWx0RmFtaWx5ID0gJ3N2Zy1mbGFncyc7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCBkZWZhdWx0RmFtaWx5KGZhbWlseTogSWNvbkZhbWlseSkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0RmFtaWx5ID0gZmFtaWx5O1xuICAgICAgICB0aGlzLnNldEZhbWlseSh0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWUsIHRoaXMuX2RlZmF1bHRGYW1pbHkubWV0YSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJlZ2lzdGVycyBhIGN1c3RvbSBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIElneEljb25Db21wb25lbnQgZm9yIGEgZ2l2ZW4gZm9udC1mYW1pbHkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckZhbWlseUFsaWFzKCdtYXRlcmlhbCcsICdtYXRlcmlhbC1pY29ucycpO1xuICAgICAqIGBgYFxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgc2V0RmFtaWx5YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckZhbWlseUFsaWFzKFxuICAgICAgICBhbGlhczogc3RyaW5nLFxuICAgICAgICBjbGFzc05hbWU6IHN0cmluZyA9IGFsaWFzLFxuICAgICAgICB0eXBlOiBJY29uVHlwZSA9IFwiZm9udFwiLFxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLnNldEZhbWlseShhbGlhcywgeyBjbGFzc05hbWUsIHR5cGUgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjdXN0b20gY2xhc3MsIGlmIGFueSwgYXNzb2NpYXRlZCB0byBhIGdpdmVuIGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGZhbWlseUNsYXNzID0gdGhpcy5pY29uU2VydmljZS5mYW1pbHlDbGFzc05hbWUoJ21hdGVyaWFsJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGZhbWlseUNsYXNzTmFtZShhbGlhczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LmNsYXNzTmFtZSB8fCBhbGlhcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIGZhbWlseVR5cGUoYWxpYXM6IHN0cmluZyk6IEljb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LnR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENyZWF0ZXMgYSBmYW1pbHkgdG8gY2xhc3NOYW1lIHJlbGF0aW9uc2hpcCB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIElneEljb25Db21wb25lbnRcbiAgICAgKiAgIHdoZW5ldmVyIHRoYXQgZmFtaWx5IG5hbWUgaXMgdXNlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEZhbWlseSgnbWF0ZXJpYWwnLCB7IGNsYXNzTmFtZTogJ21hdGVyaWFsLWljb25zJywgdHlwZTogJ2xpZ2EnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRGYW1pbHkobmFtZTogc3RyaW5nLCBtZXRhOiBGYW1pbHlNZXRhKSB7XG4gICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChuYW1lLCBtZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgbWV0YSBmYW1pbHkuXG4gICAgICogIEV4ZWN1dGVzIG9ubHkgaWYgbm8gaWNvbiByZWZlcmVuY2UgaXMgZm91bmQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRJY29uUmVmKCdhcnViYScsICdkZWZhdWx0JywgeyBuYW1lOiAnYXJ1YmEnLCBmYW1pbHk6ICdzdmctZmxhZ3MnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJY29uUmVmKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcsIGljb246IEljb25NZXRhKSB7XG4gICAgICAgIGNvbnN0IGljb25SZWYgPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGlmICghaWNvblJlZikge1xuICAgICAgICAgICAgdGhpcy5zZXRJY29uUmVmKG5hbWUsIGZhbWlseSwgaWNvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2ltaWxhciB0byBhZGRJY29uUmVmLCBidXQgYWx3YXlzIHNldHMgdGhlIGljb24gcmVmZXJlbmNlIG1ldGEgZm9yIGFuIGljb24gaW4gYSBtZXRhIGZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnLCB7IG5hbWU6ICdhcnViYScsIGZhbWlseTogJ3N2Zy1mbGFncycgfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldEljb25SZWYobmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZywgaWNvbjogSWNvbk1ldGEpIHtcbiAgICAgICAgbGV0IGZhbWlseVJlZiA9IHRoaXMuX2ljb25SZWZzLmdldChmYW1pbHkpO1xuXG4gICAgICAgIGlmICghZmFtaWx5UmVmKSB7XG4gICAgICAgICAgICBmYW1pbHlSZWYgPSBuZXcgTWFwPHN0cmluZywgSWNvbk1ldGE+KCk7XG4gICAgICAgICAgICB0aGlzLl9pY29uUmVmcy5zZXQoZmFtaWx5LCBmYW1pbHlSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmFtaWx5VHlwZSA9IHRoaXMuZmFtaWx5VHlwZShpY29uPy5mYW1pbHkpO1xuICAgICAgICBmYW1pbHlSZWYuc2V0KG5hbWUsIHsgLi4uaWNvbiwgdHlwZTogaWNvbi50eXBlID8/IGZhbWlseVR5cGUgfSk7XG5cbiAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgZmFtaWx5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgZ2l2ZW4gZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGljb25SZWYgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SWNvblJlZihuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nKTogSWNvblJlZmVyZW5jZSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGljb25GYW1pbHkgPSBpY29uPy5mYW1pbHkgPz8gZmFtaWx5O1xuICAgICAgICBjb25zdCBfbmFtZSA9IGljb24/Lm5hbWUgPz8gbmFtZTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGljb24/LnR5cGUgPz8gdGhpcy5mYW1pbHlUeXBlKGljb25GYW1pbHkpO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShpY29uRmFtaWx5KTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5fZmFtaWxpZXMuZ2V0KGljb25GYW1pbHkpPy5wcmVmaXg7XG5cbiAgICAgICAgLy8gSGFuZGxlIG5hbWUgcHJlZml4ZXNcbiAgICAgICAgbGV0IGljb25OYW1lID0gX25hbWU7XG5cbiAgICAgICAgaWYgKGljb25OYW1lICYmIHByZWZpeCkge1xuICAgICAgICAgICAgaWNvbk5hbWUgPSBfbmFtZS5pbmNsdWRlcyhwcmVmaXgpID8gX25hbWUgOiBgJHtwcmVmaXh9JHtfbmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICAgIGZhbWlseTogaWNvbkZhbWlseSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGFuIHVybC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBmYW1pbHkgPSB0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWUsXG4gICAgICAgIHN0cmlwTWV0YSA9IGZhbHNlLFxuICAgICkge1xuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG4gICAgICAgICAgICBpZiAoIXNhZmVVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgcHJvdmlkZWQgVVJMIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQgYXMgdHJ1c3RlZCByZXNvdXJjZSBVUkwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplcjogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFVybCA9IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShcbiAgICAgICAgICAgICAgICBTZWN1cml0eUNvbnRleHQuUkVTT1VSQ0VfVVJMLFxuICAgICAgICAgICAgICAgIHNhZmVVcmwsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgVVJMIHByb3ZpZGVkIHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTDogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChmYW1pbHksIHsgY2xhc3NOYW1lOiBmYW1pbHksIHR5cGU6IFwic3ZnXCIgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaFN2Zyh1cmwpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTdmdJY29uKG5hbWUsIHJlcywgZmFtaWx5LCBzdHJpcE1ldGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pY29uTG9hZGVkLm5leHQoeyBuYW1lLCB2YWx1ZTogcmVzLCBmYW1pbHkgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgdXJsYCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi5cIixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGl0cyB0ZXh0LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KCdzaW1wbGUnLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMDAgMjAwXCI+XG4gICAgICogICA8cGF0aCBkPVwiTTc0IDc0aDU0djU0SDc0XCIgLz48L3N2Zz4nLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb25Gcm9tVGV4dChcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBpY29uVGV4dDogc3RyaW5nLFxuICAgICAgICBmYW1pbHkgPSBcIlwiLFxuICAgICAgICBzdHJpcE1ldGEgPSBmYWxzZSxcbiAgICApIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgaWNvblRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9mYW1pbGllcy5zZXQoZmFtaWx5LCB7IGNsYXNzTmFtZTogZmFtaWx5LCB0eXBlOiBcInN2Z1wiIH0pO1xuICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgaWNvblRleHQsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIllvdSBzaG91bGQgcHJvdmlkZSBhdCBsZWFzdCBgbmFtZWAgYW5kIGBpY29uVGV4dGAgdG8gcmVnaXN0ZXIgYW4gc3ZnIGljb24uXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgd2hldGhlciBhIGdpdmVuIFNWRyBpbWFnZSBpcyBwcmVzZW50IGluIHRoZSBjYWNoZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBpc1N2Z0NhY2hlZCA9IHRoaXMuaWNvblNlcnZpY2UuaXNTdmdJY29uQ2FjaGVkKCdhcnViYScsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTdmdJY29uQ2FjaGVkKG5hbWU6IHN0cmluZywgZmFtaWx5ID0gXCJcIik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseUNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhbWlseVJlZ2lzdHJ5ID0gdGhpcy5fY2FjaGVkSWNvbnMuZ2V0KFxuICAgICAgICAgICAgICAgIGZhbWlseUNsYXNzTmFtZSxcbiAgICAgICAgICAgICkgYXMgTWFwPHN0cmluZywgU2FmZUh0bWw+O1xuICAgICAgICAgICAgcmV0dXJuIGZhbWlseVJlZ2lzdHJ5LmhhcyhuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgY2FjaGVkIFNWRyBpbWFnZSBhcyBzdHJpbmcuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0U3ZnSWNvbignYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFN2Z0ljb24obmFtZTogc3RyaW5nLCBmYW1pbHkgPSBcIlwiKSB7XG4gICAgICAgIGNvbnN0IGZhbWlseUNsYXNzTmFtZSA9IHRoaXMuZmFtaWx5Q2xhc3NOYW1lKGZhbWlseSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRJY29ucy5nZXQoZmFtaWx5Q2xhc3NOYW1lKT8uZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoU3ZnKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgfSk7XG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgY2FjaGVTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIGZhbWlseSA9IHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSxcbiAgICAgICAgc3RyaXBNZXRhOiBib29sZWFuLFxuICAgICkge1xuICAgICAgICBmYW1pbHkgPSBmYW1pbHkgPyBmYW1pbHkgOiB0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtVXRpbD8uaXNCcm93c2VyICYmIG5hbWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IHRoaXMuX2RvbVBhcnNlci5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwiaW1hZ2Uvc3ZnK3htbFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGRvYy5xdWVyeVNlbGVjdG9yKFwic3ZnXCIpIGFzIFNWR0VsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRJY29ucy5zZXQoZmFtaWx5LCBuZXcgTWFwPHN0cmluZywgU2FmZUh0bWw+KCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3ZnKSB7XG4gICAgICAgICAgICAgICAgc3ZnLnNldEF0dHJpYnV0ZShcImZpdFwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcInhNaWRZTWlkIG1lZXRcIik7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RyaXBNZXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9IHN2Zy5xdWVyeVNlbGVjdG9yKFwiZGVzY1wiKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Zy5yZW1vdmVDaGlsZCh0aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLnJlbW92ZUNoaWxkKGRlc2MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2FmZVN2ZyA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcbiAgICAgICAgICAgICAgICAgICAgc3ZnLm91dGVySFRNTCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlZEljb25zLmdldChmYW1pbHkpLnNldChuYW1lLCBzYWZlU3ZnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBcUMzQzs7Ozs7Ozs7Ozs7R0FXRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBc0J2QixZQUN3QixVQUF3QixFQUN4QixXQUF1QixFQUN2QixhQUEyQixFQUNQLFFBQWtCO1FBSHRDLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDUCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBZHRELG1CQUFjLEdBQWU7WUFDakMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7U0FDdEQsQ0FBQztRQUNNLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUNyRCxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBU3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElB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R0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0IsQ0FBQztvQkFFRCxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNQLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUNuRCxHQUFHLENBQUMsU0FBUyxDQUNoQixDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOzhHQTNUUSxjQUFjLG9KQTBCQyxRQUFRO2tIQTFCdkIsY0FBYyxjQUZYLE1BQU07OzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkF3QlEsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2VjdXJpdHlDb250ZXh0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gXCIuLi9jb3JlL3V0aWxzXCI7XG5cbmV4cG9ydCB0eXBlIEljb25UeXBlID0gXCJzdmdcIiB8IFwiZm9udFwiIHwgXCJsaWdhXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbk1ldGEge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBmYW1pbHk6IHN0cmluZztcbiAgICB0eXBlPzogSWNvblR5cGU7XG59XG5cbmludGVyZmFjZSBGYW1pbHlNZXRhIHtcbiAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICB0eXBlOiBJY29uVHlwZTtcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbkZhbWlseSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG1ldGE6IEZhbWlseU1ldGE7XG59XG5cbmV4cG9ydCB0eXBlIEljb25SZWZlcmVuY2UgPSBJY29uTWV0YSAmIEZhbWlseU1ldGE7XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgU1ZHIGljb24gaXMgbG9hZGVkIHRocm91Z2hcbiAqIGEgSFRUUCByZXF1ZXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElneEljb25Mb2FkZWRFdmVudCB7XG4gICAgLyoqIE5hbWUgb2YgdGhlIGljb24gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBhY3R1YWwgU1ZHIHRleHQsIGlmIGFueSAqL1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIC8qKiBUaGUgZm9udC1mYW1pbHkgZm9yIHRoZSBpY29uLiBEZWZhdWx0cyB0byBtYXRlcmlhbC4gKi9cbiAgICBmYW1pbHk6IHN0cmluZztcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBJY29uIFNlcnZpY2UqKiAtXG4gKlxuICogVGhlIElnbml0ZSBVSSBJY29uIFNlcnZpY2UgbWFrZXMgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBpbmNsdWRlIGN1c3RvbSBTVkcgaW1hZ2VzIGFuZCB1c2UgdGhlbSB3aXRoIElneEljb25Db21wb25lbnQuXG4gKiBJbiBhZGRpdGlvbiBpdCBjb3VsZCBiZSB1c2VkIHRvIGFzc29jaWF0ZSBhIGN1c3RvbSBjbGFzcyB0byBiZSBhcHBsaWVkIG9uIElneEljb25Db21wb25lbnQgYWNjb3JkaW5nIHRvIGdpdmVuIGZvbnQtZmFtaWx5LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0aGlzLmljb25TZXJ2aWNlLnNldEZhbWlseSgnbWF0ZXJpYWwnLCB7IGNsYXNzTmFtZTogJ21hdGVyaWFsLWljb25zJywgdHlwZTogJ2ZvbnQnIH0pO1xuICogdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uKCdhcnViYScsICcvYXNzZXRzL3N2Zy9jb3VudHJ5X2ZsYWdzL2FydWJhLnN2ZycsICdzdmctZmxhZ3MnKTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIElneEljb25TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhbiBpY29uIGlzIHN1Y2Nlc3NmdWxseSBsb2FkZWRcbiAgICAgKiB0aHJvdWdoIGEgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5zZXJ2aWNlLmljb25Mb2FkZWQuc3Vic2NyaWJlKChldjogSWd4SWNvbkxvYWRlZEV2ZW50KSA9PiAuLi4pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBpY29uTG9hZGVkOiBPYnNlcnZhYmxlPElneEljb25Mb2FkZWRFdmVudD47XG5cbiAgICBwcml2YXRlIF9kZWZhdWx0RmFtaWx5OiBJY29uRmFtaWx5ID0ge1xuICAgICAgICBuYW1lOiBcIm1hdGVyaWFsXCIsXG4gICAgICAgIG1ldGE6IHsgY2xhc3NOYW1lOiBcIm1hdGVyaWFsLWljb25zXCIsIHR5cGU6IFwibGlnYVwiIH0sXG4gICAgfTtcbiAgICBwcml2YXRlIF9pY29uUmVmcyA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBJY29uTWV0YT4+KCk7XG4gICAgcHJpdmF0ZSBfZmFtaWxpZXMgPSBuZXcgTWFwPHN0cmluZywgRmFtaWx5TWV0YT4oKTtcbiAgICBwcml2YXRlIF9jYWNoZWRJY29ucyA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBTYWZlSHRtbD4+KCk7XG4gICAgcHJpdmF0ZSBfaWNvbkxvYWRlZCA9IG5ldyBTdWJqZWN0PElneEljb25Mb2FkZWRFdmVudD4oKTtcbiAgICBwcml2YXRlIF9kb21QYXJzZXI6IERPTVBhcnNlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGxhdGZvcm1VdGlsOiBQbGF0Zm9ybVV0aWwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaWNvbkxvYWRlZCA9IHRoaXMuX2ljb25Mb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0RmFtaWx5KHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSwgdGhpcy5fZGVmYXVsdEZhbWlseS5tZXRhKTtcblxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm1VdGlsPy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGRlZmF1bHRGYW1pbHkgPSB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZWZhdWx0RmFtaWx5KCk6IEljb25GYW1pbHkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEZhbWlseTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2V0cyB0aGUgZGVmYXVsdCBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHkgPSAnc3ZnLWZsYWdzJztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IGRlZmF1bHRGYW1pbHkoZmFtaWx5OiBJY29uRmFtaWx5KSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRGYW1pbHkgPSBmYW1pbHk7XG4gICAgICAgIHRoaXMuc2V0RmFtaWx5KHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSwgdGhpcy5fZGVmYXVsdEZhbWlseS5tZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmVnaXN0ZXJzIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gSWd4SWNvbkNvbXBvbmVudCBmb3IgYSBnaXZlbiBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gICAgICogYGBgXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxOC4xLjAuIFVzZSBgc2V0RmFtaWx5YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckZhbWlseUFsaWFzKFxuICAgICAgICBhbGlhczogc3RyaW5nLFxuICAgICAgICBjbGFzc05hbWU6IHN0cmluZyA9IGFsaWFzLFxuICAgICAgICB0eXBlOiBJY29uVHlwZSA9IFwiZm9udFwiLFxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLnNldEZhbWlseShhbGlhcywgeyBjbGFzc05hbWUsIHR5cGUgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjdXN0b20gY2xhc3MsIGlmIGFueSwgYXNzb2NpYXRlZCB0byBhIGdpdmVuIGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGZhbWlseUNsYXNzID0gdGhpcy5pY29uU2VydmljZS5mYW1pbHlDbGFzc05hbWUoJ21hdGVyaWFsJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGZhbWlseUNsYXNzTmFtZShhbGlhczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LmNsYXNzTmFtZSB8fCBhbGlhcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIGZhbWlseVR5cGUoYWxpYXM6IHN0cmluZyk6IEljb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LnR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENyZWF0ZXMgYSBmYW1pbHkgdG8gY2xhc3NOYW1lIHJlbGF0aW9uc2hpcCB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIElneEljb25Db21wb25lbnRcbiAgICAgKiAgIHdoZW5ldmVyIHRoYXQgZmFtaWx5IG5hbWUgaXMgdXNlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEZhbWlseSgnbWF0ZXJpYWwnLCB7IGNsYXNzTmFtZTogJ21hdGVyaWFsLWljb25zJywgdHlwZTogJ2xpZ2EnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRGYW1pbHkobmFtZTogc3RyaW5nLCBtZXRhOiBGYW1pbHlNZXRhKSB7XG4gICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChuYW1lLCBtZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgbWV0YSBmYW1pbHkuXG4gICAgICogIEV4ZWN1dGVzIG9ubHkgaWYgbm8gaWNvbiByZWZlcmVuY2UgaXMgZm91bmQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRJY29uUmVmKCdhcnViYScsICdkZWZhdWx0JywgeyBuYW1lOiAnYXJ1YmEnLCBmYW1pbHk6ICdzdmctZmxhZ3MnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJY29uUmVmKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcsIGljb246IEljb25NZXRhKSB7XG4gICAgICAgIGNvbnN0IGljb25SZWYgPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGlmICghaWNvblJlZikge1xuICAgICAgICAgICAgdGhpcy5zZXRJY29uUmVmKG5hbWUsIGZhbWlseSwgaWNvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2ltaWxhciB0byBhZGRJY29uUmVmLCBidXQgYWx3YXlzIHNldHMgdGhlIGljb24gcmVmZXJlbmNlIG1ldGEgZm9yIGFuIGljb24gaW4gYSBtZXRhIGZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnLCB7IG5hbWU6ICdhcnViYScsIGZhbWlseTogJ3N2Zy1mbGFncycgfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldEljb25SZWYobmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZywgaWNvbjogSWNvbk1ldGEpIHtcbiAgICAgICAgbGV0IGZhbWlseVJlZiA9IHRoaXMuX2ljb25SZWZzLmdldChmYW1pbHkpO1xuXG4gICAgICAgIGlmICghZmFtaWx5UmVmKSB7XG4gICAgICAgICAgICBmYW1pbHlSZWYgPSBuZXcgTWFwPHN0cmluZywgSWNvbk1ldGE+KCk7XG4gICAgICAgICAgICB0aGlzLl9pY29uUmVmcy5zZXQoZmFtaWx5LCBmYW1pbHlSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmFtaWx5VHlwZSA9IHRoaXMuZmFtaWx5VHlwZShpY29uPy5mYW1pbHkpO1xuICAgICAgICBmYW1pbHlSZWYuc2V0KG5hbWUsIHsgLi4uaWNvbiwgdHlwZTogaWNvbi50eXBlID8/IGZhbWlseVR5cGUgfSk7XG5cbiAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgZmFtaWx5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgZ2l2ZW4gZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGljb25SZWYgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SWNvblJlZihuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nKTogSWNvblJlZmVyZW5jZSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGljb25GYW1pbHkgPSBpY29uPy5mYW1pbHkgPz8gZmFtaWx5O1xuICAgICAgICBjb25zdCBfbmFtZSA9IGljb24/Lm5hbWUgPz8gbmFtZTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGljb24/LnR5cGUgPz8gdGhpcy5mYW1pbHlUeXBlKGljb25GYW1pbHkpO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShpY29uRmFtaWx5KTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5fZmFtaWxpZXMuZ2V0KGljb25GYW1pbHkpPy5wcmVmaXg7XG5cbiAgICAgICAgLy8gSGFuZGxlIG5hbWUgcHJlZml4ZXNcbiAgICAgICAgbGV0IGljb25OYW1lID0gX25hbWU7XG5cbiAgICAgICAgaWYgKGljb25OYW1lICYmIHByZWZpeCkge1xuICAgICAgICAgICAgaWNvbk5hbWUgPSBfbmFtZS5pbmNsdWRlcyhwcmVmaXgpID8gX25hbWUgOiBgJHtwcmVmaXh9JHtfbmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICAgIGZhbWlseTogaWNvbkZhbWlseSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGFuIHVybC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBmYW1pbHkgPSB0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWUsXG4gICAgICAgIHN0cmlwTWV0YSA9IGZhbHNlLFxuICAgICkge1xuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG4gICAgICAgICAgICBpZiAoIXNhZmVVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgcHJvdmlkZWQgVVJMIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQgYXMgdHJ1c3RlZCByZXNvdXJjZSBVUkwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplcjogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFVybCA9IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShcbiAgICAgICAgICAgICAgICBTZWN1cml0eUNvbnRleHQuUkVTT1VSQ0VfVVJMLFxuICAgICAgICAgICAgICAgIHNhZmVVcmwsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgVVJMIHByb3ZpZGVkIHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTDogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChmYW1pbHksIHsgY2xhc3NOYW1lOiBmYW1pbHksIHR5cGU6IFwic3ZnXCIgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoU3ZnKHVybCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgcmVzLCBmYW1pbHksIHN0cmlwTWV0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgdXJsYCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi5cIixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGl0cyB0ZXh0LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KCdzaW1wbGUnLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMDAgMjAwXCI+XG4gICAgICogICA8cGF0aCBkPVwiTTc0IDc0aDU0djU0SDc0XCIgLz48L3N2Zz4nLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb25Gcm9tVGV4dChcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBpY29uVGV4dDogc3RyaW5nLFxuICAgICAgICBmYW1pbHkgPSBcIlwiLFxuICAgICAgICBzdHJpcE1ldGEgPSBmYWxzZSxcbiAgICApIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgaWNvblRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9mYW1pbGllcy5zZXQoZmFtaWx5LCB7IGNsYXNzTmFtZTogZmFtaWx5LCB0eXBlOiBcInN2Z1wiIH0pO1xuICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgaWNvblRleHQsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIllvdSBzaG91bGQgcHJvdmlkZSBhdCBsZWFzdCBgbmFtZWAgYW5kIGBpY29uVGV4dGAgdG8gcmVnaXN0ZXIgYW4gc3ZnIGljb24uXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgd2hldGhlciBhIGdpdmVuIFNWRyBpbWFnZSBpcyBwcmVzZW50IGluIHRoZSBjYWNoZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBpc1N2Z0NhY2hlZCA9IHRoaXMuaWNvblNlcnZpY2UuaXNTdmdJY29uQ2FjaGVkKCdhcnViYScsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTdmdJY29uQ2FjaGVkKG5hbWU6IHN0cmluZywgZmFtaWx5ID0gXCJcIik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseUNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhbWlseVJlZ2lzdHJ5ID0gdGhpcy5fY2FjaGVkSWNvbnMuZ2V0KFxuICAgICAgICAgICAgICAgIGZhbWlseUNsYXNzTmFtZSxcbiAgICAgICAgICAgICkgYXMgTWFwPHN0cmluZywgU2FmZUh0bWw+O1xuICAgICAgICAgICAgcmV0dXJuIGZhbWlseVJlZ2lzdHJ5LmhhcyhuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgY2FjaGVkIFNWRyBpbWFnZSBhcyBzdHJpbmcuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0U3ZnSWNvbignYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFN2Z0ljb24obmFtZTogc3RyaW5nLCBmYW1pbHkgPSBcIlwiKSB7XG4gICAgICAgIGNvbnN0IGZhbWlseUNsYXNzTmFtZSA9IHRoaXMuZmFtaWx5Q2xhc3NOYW1lKGZhbWlseSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRJY29ucy5nZXQoZmFtaWx5Q2xhc3NOYW1lKT8uZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoU3ZnKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgfSk7XG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgY2FjaGVTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIGZhbWlseSA9IHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSxcbiAgICAgICAgc3RyaXBNZXRhOiBib29sZWFuLFxuICAgICkge1xuICAgICAgICBmYW1pbHkgPSBmYW1pbHkgPyBmYW1pbHkgOiB0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtVXRpbD8uaXNCcm93c2VyICYmIG5hbWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IHRoaXMuX2RvbVBhcnNlci5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwiaW1hZ2Uvc3ZnK3htbFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGRvYy5xdWVyeVNlbGVjdG9yKFwic3ZnXCIpIGFzIFNWR0VsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRJY29ucy5zZXQoZmFtaWx5LCBuZXcgTWFwPHN0cmluZywgU2FmZUh0bWw+KCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ljb25Mb2FkZWQubmV4dCh7IG5hbWUsIHZhbHVlLCBmYW1pbHkgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdmcpIHtcbiAgICAgICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKFwiZml0XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwieE1pZFlNaWQgbWVldFwiKTtcblxuICAgICAgICAgICAgICAgIGlmIChzdHJpcE1ldGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBzdmcucXVlcnlTZWxlY3RvcihcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoXCJkZXNjXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLnJlbW92ZUNoaWxkKHRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcucmVtb3ZlQ2hpbGQoZGVzYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYWZlU3ZnID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgICAgICAgICAgICAgICBzdmcub3V0ZXJIVE1MLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkSWNvbnMuZ2V0KGZhbWlseSkuc2V0KG5hbWUsIHNhZmVTdmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -3,15 +3,33 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class IgxNavDrawerItemDirective {
|
|
4
4
|
constructor() {
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Styles a navigation drawer item as selected.
|
|
7
|
+
* If not set, `active` will have default value `false`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```html
|
|
11
|
+
* <span igxDrawerItem [active]="true">Active Item</span>
|
|
12
|
+
* ```
|
|
7
13
|
*/
|
|
8
14
|
this.active = false;
|
|
9
15
|
/**
|
|
10
|
-
*
|
|
16
|
+
* Disables a navigation drawer item.
|
|
17
|
+
* If not set, `disabled` will have default value `false`.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```html
|
|
21
|
+
* <span igxDrawerItem [disabled]="true">Disabled Item</span>
|
|
22
|
+
* ```
|
|
11
23
|
*/
|
|
12
24
|
this.disabled = false;
|
|
13
25
|
/**
|
|
14
|
-
*
|
|
26
|
+
* Styles a navigation drawer item as a group header.
|
|
27
|
+
* If not set, `isHeader` will have default value `false`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```html
|
|
31
|
+
* <span igxDrawerItem [isHeader]="true">Header</span>
|
|
32
|
+
* ```
|
|
15
33
|
*/
|
|
16
34
|
this.isHeader = false;
|
|
17
35
|
/**
|
|
@@ -107,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
107
125
|
standalone: true
|
|
108
126
|
}]
|
|
109
127
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1kcmF3ZXIuZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9uYXZpZ2F0aW9uLWRyYXdlci9uYXZpZ2F0aW9uLWRyYXdlci5kaXJlY3RpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPN0YsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQU9JOzs7Ozs7OztXQVFHO1FBQzZELFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFL0U7Ozs7Ozs7O1dBUUc7UUFDK0QsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVuRjs7Ozs7Ozs7V0FRRztRQUMrRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRW5GOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyw4QkFBOEIsQ0FBQztRQUU1RDs7VUFFRTtRQUNjLGtCQUFhLEdBQUcsZ0NBQWdDLENBQUM7S0FpQ3JFO0lBL0JHOztPQUVHO0lBQ0gsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7OEdBM0VRLHlCQUF5QjtrR0FBekIseUJBQXlCLDBGQVdHLGdCQUFnQixzQ0FXZCxnQkFBZ0Isc0NBV2hCLGdCQUFnQjs7MkZBakM5Qyx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFZbUUsTUFBTTtzQkFBckUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVdXLFFBQVE7c0JBQXpFLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFXUyxRQUFRO3NCQUF6RSxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBZ0I5QyxVQUFVO3NCQURwQixXQUFXO3VCQUFDLDRCQUE0QjtnQkFTOUIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBU3RDLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsb0NBQW9DO2dCQVN0QyxXQUFXO3NCQURyQixXQUFXO3VCQUFDLHNDQUFzQzs7QUFVdkQsTUFBTSxPQUFPLDZCQUE2QjtJQUV0QyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUM3QyxDQUFDOzhHQUhRLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBV0QsTUFBTSxPQUFPLGlDQUFpQztJQUUxQyxZQUFtQixRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUM3QyxDQUFDOzhHQUhRLGlDQUFpQztrR0FBakMsaUNBQWlDOzsyRkFBakMsaUNBQWlDO2tCQUo3QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0LCBUZW1wbGF0ZVJlZiwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hEcmF3ZXJJdGVtXScsXG4gICAgZXhwb3J0QXM6ICdpZ3hEcmF3ZXJJdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneE5hdkRyYXdlckl0ZW1EaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICogU3R5bGVzIGEgbmF2aWdhdGlvbiBkcmF3ZXIgaXRlbSBhcyBzZWxlY3RlZC5cbiAgICAgKiBJZiBub3Qgc2V0LCBgYWN0aXZlYCB3aWxsIGhhdmUgZGVmYXVsdCB2YWx1ZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPHNwYW4gaWd4RHJhd2VySXRlbSBbYWN0aXZlXT1cInRydWVcIj5BY3RpdmUgSXRlbTwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ2FjdGl2ZScsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwdWJsaWMgYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyBhIG5hdmlnYXRpb24gZHJhd2VyIGl0ZW0uXG4gICAgICogSWYgbm90IHNldCwgYGRpc2FibGVkYCB3aWxsIGhhdmUgZGVmYXVsdCB2YWx1ZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPHNwYW4gaWd4RHJhd2VySXRlbSBbZGlzYWJsZWRdPVwidHJ1ZVwiPkRpc2FibGVkIEl0ZW08L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgYWxpYXM6ICdkaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFN0eWxlcyBhIG5hdmlnYXRpb24gZHJhd2VyIGl0ZW0gYXMgYSBncm91cCBoZWFkZXIuXG4gICAgICogSWYgbm90IHNldCwgYGlzSGVhZGVyYCB3aWxsIGhhdmUgZGVmYXVsdCB2YWx1ZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPHNwYW4gaWd4RHJhd2VySXRlbSBbaXNIZWFkZXJdPVwidHJ1ZVwiPkhlYWRlcjwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ2lzSGVhZGVyJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHB1YmxpYyBpc0hlYWRlciA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhY3RpdmVDbGFzcyA9ICdpZ3gtbmF2LWRyYXdlcl9faXRlbS0tYWN0aXZlJztcblxuICAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZENsYXNzID0gJ2lneC1uYXYtZHJhd2VyX19pdGVtLS1kaXNhYmxlZCc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtbmF2LWRyYXdlcl9faXRlbScpXG4gICAgcHVibGljIGdldCBkZWZhdWx0Q1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYWN0aXZlICYmICF0aGlzLmlzSGVhZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1uYXYtZHJhd2VyX19pdGVtLS1hY3RpdmUnKVxuICAgIHB1YmxpYyBnZXQgY3VycmVudENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlICYmICF0aGlzLmlzSGVhZGVyICYmICF0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1uYXYtZHJhd2VyX19pdGVtLS1oZWFkZXInKVxuICAgIHB1YmxpYyBnZXQgaGVhZGVyQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0hlYWRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtbmF2LWRyYXdlcl9faXRlbS0tZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4RHJhd2VyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hOYXZEcmF3ZXJUZW1wbGF0ZURpcmVjdGl2ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneERyYXdlck1pbmldJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneE5hdkRyYXdlck1pbmlUZW1wbGF0ZURpcmVjdGl2ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB9XG59XG4iXX0=
|