@colijnit/transaction 258.1.6 → 258.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-transaction.umd.js +99 -53
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/lib/component/delivery-planning/service/delivery-planning.service.js +5 -3
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.js +6 -8
- package/esm2015/lib/component/delivery-planning-main/component/delivery-planning-overview/delivery-planning-overview.component.js +5 -2
- package/esm2015/lib/component/transaction-line/transaction-planning-line/components/transaction-planning-line-planned-resource/transaction-planning-line-planned-resource.component.js +1 -2
- package/esm2015/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.js +25 -12
- package/esm2015/lib/component/transaction-search/transaction-search-result/transaction-search-result.component.js +7 -5
- package/esm2015/lib/service/transaction-event.service.js +2 -1
- package/esm2015/lib/transaction-version.js +3 -3
- package/fesm2015/colijnit-transaction.js +46 -28
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/lib/component/delivery-planning/service/delivery-planning.service.d.ts +2 -2
- package/lib/component/delivery-planning-main/component/delivery-planning-overview/component/delivery-planning-overview-tile/delivery-planning-overview-tile.component.d.ts +2 -2
- package/lib/component/transaction-line/transaction-planning-line/components/transaction-planning-line-planned-resource/style/_layout.scss +1 -0
- package/lib/component/transaction-line/transaction-planning-line/style/_layout.scss +6 -0
- package/lib/component/transaction-line/transaction-planning-line/transaction-planning-line.component.d.ts +1 -0
- package/lib/service/transaction-event.service.d.ts +1 -0
- package/package.json +1 -1
- package/colijnit-transaction-258.1.5.tgz +0 -0
|
@@ -234,7 +234,7 @@ export class DeliveryPlanningOverviewComponent {
|
|
|
234
234
|
order.tasksLoaded = true;
|
|
235
235
|
order.lines.forEach(line => {
|
|
236
236
|
line.selected = true;
|
|
237
|
-
if (line.amountToPlan === 0) {
|
|
237
|
+
if (!line.amountToPlan || line.amountToPlan === 0) {
|
|
238
238
|
line.amountToPlan = (line.amountInOrder - line.amountPlanned);
|
|
239
239
|
}
|
|
240
240
|
});
|
|
@@ -510,6 +510,9 @@ export class DeliveryPlanningOverviewComponent {
|
|
|
510
510
|
//fire event selected outwards
|
|
511
511
|
this.transactionEventService.selectedTransportDay.next(transportDay);
|
|
512
512
|
}
|
|
513
|
+
else {
|
|
514
|
+
this.transactionEventService.resetTransportDayFilteredOrders.next();
|
|
515
|
+
}
|
|
513
516
|
}
|
|
514
517
|
}
|
|
515
518
|
DeliveryPlanningOverviewComponent.decorators = [
|
|
@@ -596,4 +599,4 @@ DeliveryPlanningOverviewComponent.propDecorators = {
|
|
|
596
599
|
showClass: [{ type: HostBinding, args: ['class.co-delivery-planning-overview',] }],
|
|
597
600
|
onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
|
|
598
601
|
};
|
|
599
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9NLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUc5RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUU3RyxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSx1RkFB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QVEsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDekIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUUsWUFBWSxDQUFDLENBQUM7U0FDdkU7SUFDSCxDQUFDOzs7WUFubkJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEvRU8sdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQiwyQkFBMkI7WUFLM0Isd0JBQXdCO1lBWk4saUJBQWlCO1lBcUJuQyxpQkFBaUI7WUFMakIsZ0JBQWdCO1lBU2hCLHVCQUF1Qjs7O29CQThFNUIsWUFBWSxTQUFDLHFDQUFxQzsyQkFLbEQsU0FBUyxTQUFDLGNBQWM7eUJBQ3hCLFNBQVMsU0FBQyxZQUFZO3FDQUl0QixTQUFTLFNBQUMsZUFBZTsyQkFLekIsS0FBSzswQkFLTCxLQUFLOzhCQUdMLEtBQUs7c0NBR0wsS0FBSzsyQ0FHTCxNQUFNOzBDQVdOLE1BQU07d0JBcUROLFdBQVcsU0FBQyxxQ0FBcUM7dUJBTWpELFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXN9IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctY2FsZW5kYXItbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy12aWV3LW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLWRheS5ibyc7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge1BsYW5uaW5nRmlsdGVyT2JqZWN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy1wbGFubmVkLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXVwZGF0ZS1hY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLWxpbmUuYm8nO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LXBsYW5uaW5nLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cCAjcGxhbm5pbmdQb3B1cCAqbmdJZj1cInNob3dOb3RlRGlhbG9nXCIgKGNsb3NlRXZlbnQpPVwic2hvd05vdGVEaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU3VjY2VlZGVkUGxhbkFjdGlvbik9XCJoYW5kbGVQb3B1cFBsYW5FdmVudCgkZXZlbnQpXCI+PC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cD5cclxuICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwICpuZ0lmPVwic2hvd1NldHRpbmdzRGlhbG9nXCIgW3RyYW5zcG9ydERheV09XCJzZWxlY3RlZFRyYW5zcG9ydERheVwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2FuY2VsQWN0aW9uKT1cImhhbmRsZVNldHRpbmdzUmVzZXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VFdmVudCk9XCJzaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZVwiPjwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxpdmVyeS1vdmVydmlldy13cmFwcGVyXCIgW2NsYXNzLnNpZGViYXJdPVwiY3VycmVudFZpZXdNb2RlID09PSAnREFZU19BUk9VTkQnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbGUtdmlldy1tb2RlcyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5Ob3JtYWxcIiBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUaWxlTW9kZSA9PT0gdGlsZU1vZGVzLk5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJMaW5lc1JlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiAoY2xpY2spPVwiY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGVzLkNhbGVuZGFyXCIgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5DYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJEYXlSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctY29tcG9uZW50LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWRhdGUtcGxhbm5pbmcgW3ZpZXddPVwiY3VycmVudFZpZXdNb2RlXCIgW3NlbGVjdGVkRGF0ZV09XCJjdXJyZW50RGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCI+PC9jby1kYXRlLXBsYW5uaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGRhdGUtcGxhbm5pbmdcIiBbY2xhc3MuZW1wbG95ZWUtdmlld109XCJlbXBsb3llZVZpZXdcIiAjcm93Q29udGFpbmVyICpuZ0Zvcj1cImxldCB0cmFuc3BvcnRXZWVrUm93IG9mIHBsYW5UcmFuc3BvcnRXZWVrQXJyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAjY29sdW1uRWxlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0cmFuc1BvcnREYXkgb2YgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VHJhbnNwb3J0RGF5KHRyYW5zUG9ydERheSwgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhdHJhbnNQb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZSB8fCB0cmFuc1BvcnREYXkubWF4TWludXRlcyA9PT0gMCB8fCBjaGVja0F2YWlsYWJsZSh0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0cmFuc1BvcnREYXkuYXZhaWxhYmxlT25EYXRlIHx8IHRyYW5zUG9ydERheS5tYXhNaW51dGVzID09PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQsIHRyYW5zUG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wcGVkKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdywgdHJhbnNQb3J0RGF5LCBmaWx0ZXJXZWVrQXJyYXkodHJhbnNwb3J0V2Vla1JvdykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdlbmQpPVwiZHJhZ0VuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zcG9ydERheV09XCJ0cmFuc1BvcnREYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlcigkZXZlbnQsIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2VFdmVudCk9XCJoYW5kbGVUaW1lQ2hhbmdlRXZlbnQodHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93LCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BlblNldHRpbmdzRGlhbG9nRXZlbnQpPVwib3BlblNldHRpbmdzRGlhbG9nKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsZW5kYXJQbGFuRXZlbnQpPVwiaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZUxpbmUoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRQbGFubmVkT3JkZXIoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVFdmVudCk9XCJoYW5kbGVNb3ZlRXZlbnQoJGV2ZW50LHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdywgcGxhblRyYW5zcG9ydFdlZWtBcnIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF2YWlsYWJpbGl0eUNoZWNrZWQpPVwiaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlclVwRXZlbnQpPVwiaGFuZGxlTW92ZU9yZGVyVXAoJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93LCB0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlckRvd25FdmVudCk9XCJoYW5kbGVNb3ZlT3JkZXJEb3duKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdywgdHJhbnNQb3J0RGF5KVwiXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgID48L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYW5uaW5nQWN0aW9uczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zID0gRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbGVNb2RlczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXM7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHk6IHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgcHVibGljIHBsYW5uaW5nUG9wdXBSZWY6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgYXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dOb3RlRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTZXR0aW5nc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB0aWxlc1F1ZXJ5TGlzdDogUXVlcnlMaXN0PERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ+O1xyXG4gIHB1YmxpYyBzZWxlY3RlZFRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5O1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQpXHJcbiAgcHVibGljIHNldCB0aWxlcyh0aWxlczogUXVlcnlMaXN0PERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ+KSB7XHJcbiAgICB0aGlzLnRpbGVzUXVlcnlMaXN0ID0gdGlsZXM7XHJcbiAgfTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncm93Q29udGFpbmVyJykgcm93Q29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdjb2x1bW5FbGVtJykgY29sdW1uRWxlbTogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5OdW0gPSAzOyAvL2luaXRpYWwgY291bnRcclxuXHJcbiAgQFZpZXdDaGlsZCgncGxhbm5pbmdQb3B1cCcpXHJcbiAgcHVibGljIHNldCBwbGFubmluZ1BvcHVwQ29tcG9uZW50KHZhbHVlOiBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdQb3B1cENvbXBvbmVudCkge1xyXG4gICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmID0gdmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlVmlldygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5lbXBsb3llZVZpZXc7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50TW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50Vmlld01vZGU6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nVmlld01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMgPSB0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXNldFBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcblxyXG4gIHB1YmxpYyBnZXQgcGxhblRyYW5zcG9ydFdlZWtBcnIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UucGxhblRyYW5zcG9ydFdlZWtBcnI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRUaWxlTW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGN1cnJlbnRUaWxlTW9kZSh0aWxlTW9kZTogRGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlcykge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3VycmVudERhdGUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkNvbjogVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy9jYWxjdWxhdGluZyB1cG9uIGxvYWRpbmdcclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnNldENvbE51bSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2godGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuYXZhaWxhYmlsaXR5UmVzZXRFdmVudC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eSA9IFtdO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5QbGFuUmF5b24pLnRoZW4oKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5wbGFuUmF5b24gPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldycpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9yZWNhbGN1bGF0aW5nIHVwb24gYnJvd3NlciB3aW5kb3cgcmVzaXplXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuc2V0Q29sTnVtKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZHJvcHBlZChldjogRHJhZ0V2ZW50LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydERheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXkpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeS5nZXQoJ09SREVSX0NBTl9OT1RfQkVfUExBTk5FRF9PTl9SRVNPVVJDRScpLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBldi5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0cmFuc3BvcnREYXlzLmluZGV4T2YodHJhbnNwb3J0RGF5KTtcclxuICAgICAgbGV0IHRpbGUgPSB0aGlzLnRpbGVzUXVlcnlMaXN0LmdldChpbmRleCk7XHJcbiAgICAgIGlmICghdGlsZS5leHBhbmRlZCkge1xyXG4gICAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhICE9ICdsaW5lcycgJiYgIXRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQpIHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBwYXJzZUludChkYXRhKSkge1xyXG4gICAgICAgICAgY29uc3QgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KGRhdGEpKTtcclxuICAgICAgICAgIGlmIChwbGFuT3JkZXIubGluZXMubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcih0aGlzLl9kaWN0aW9uYXJ5LmdldCgnTk9fTElORVNfVE9fUExBTicpLCB0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8ubGVuZ3RoICYmIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8uaW5kZXhPZihwbGFuT3JkZXIpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KCdPUkRFUl9IQVNfQUxSRUFEWV9CRUVOX1BMQU5ORUQnKSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSAhPSAnbGluZXMnICYmIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQpIHtcclxuICAgICAgICAvLyBhd2FpdCB0aGlzLmhhbmRsZU1vdmVOb3JtYWxFdmVudChkYXRhLCB0cmFuc3BvcnREYXksIHdlZWssIHRoaXMucGxhblRyYW5zcG9ydFdlZWtBcnIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGxhblNlbGVjdGVkTGluZXModHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWxsb3dEcm9wKGV2OiBEcmFnRXZlbnQsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nICYmIHRyYW5zcG9ydERheS5tYXhNaW51dGVzID4gMCAmJiB0cmFuc3BvcnREYXkuYXZhaWxhYmxlT25EYXRlKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc3BvcnREYXkubWludXRlcyArIHRyYW5zcG9ydERheS5taW51dGVzIDwgdHJhbnNwb3J0RGF5Lm1heE1pbnV0ZXMgJiYgdHJhbnNwb3J0RGF5Lm1heE9yZGVyQW1vdW50IDwgdHJhbnNwb3J0RGF5Lm9yZGVyQW1vdW50ICYmIHRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUgJiYgdGhpcy5jaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbE51bSgpIHtcclxuICAgIGlmICh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS52aWV3TW9kZSA9PT0gRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlcy5TaWRlYmFyKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uTnVtID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29sdW1uTnVtID0gMztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnRW5kKGV2OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcldlZWtBcnJheSh3ZWVrQXJyYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICByZXR1cm4gd2Vla0FycmF5LnNsaWNlKDAsIHRoaXMuY29sdW1uTnVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VDaGFuZ2UobmV3RGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZSA9IG5ld0RhdGU7XHJcbiAgICB0aGlzLnJlc2V0UGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlT3JkZXIoZGVsZXRlUmVzdWx0OiBbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICBsZXQgb3JkZXIgPSBkZWxldGVSZXN1bHRbMF07XHJcbiAgICBpZiAob3JkZXIpIHtcclxuICAgICAgaWYgKGRlbGV0ZVJlc3VsdFswXS5saW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgICAgIGRlbGV0ZVJlc3VsdFsxXS5wbGFubmVkT3JkZXJzLnNwbGljZShkZWxldGVSZXN1bHRbMV0ucGxhbm5lZE9yZGVycy5pbmRleE9mKG9yZGVyKSwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICAgICAgb2xkV2Vlazogb2xkV2VlayxcclxuICAgICAgICAgIHdlZWs6IHBsYW5uaW5nVHJhbnNwb3J0V2VlayxcclxuICAgICAgICAgIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuRGVsZXRlUGxhbm5lZE9yZGVyXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fREVMRVRFJywgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVMaW5lKGRlbGV0ZVJlc3VsdDoge1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9LCB3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydFdlZWtSb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlayA9IHRyYW5zcG9ydFdlZWtSb3c7XHJcbiAgICBsZXQgb3JkZXIgPSB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBkZWxldGVSZXN1bHQub3JkZXIudHJhbnNJZCk7XHJcbiAgICBvcmRlci5saW5lcyA9IG9yZGVyLmxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUub3JpZ2luYWxMaW5lTnIgIT09IGRlbGV0ZVJlc3VsdC5saW5lLm9yaWdpbmFsTGluZU5yKTtcclxuICAgIGlmIChvcmRlci5saW5lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICB3ZWVrOiB0cmFuc3BvcnRXZWVrUm93LFxyXG4gICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRMaW5lc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gb3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIGlmICghb3JkZXIubGluZXMpIHtcclxuICAgICAgb3JkZXIubGluZXMgPSBbXTtcclxuICAgIH1cclxuICAgIG9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QgPSBuZXcgR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LmRhdGUgPSB0cmFuc3BvcnREYXkuZGF0ZTtcclxuICAgIHJlcXVlc3QudHJhbnNwb3J0SWQgPSB0cmFuc3BvcnREYXkudHJhbnNwb3J0LnRyYW5zcG9ydElkO1xyXG4gICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XHJcbiAgICB0cmFuc3BvcnREYXkub3JkZXJzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcGxhbk9yZGVyTGluZXMob3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgd2Vlay5mb3JFYWNoKHZhbCA9PiBvbGRXZWVrLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgdmFsKSkpO1xyXG4gICAgaWYgKG9yZGVyLmxpbmVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9yZGVyLmxpbmVzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgb3JkZXIudGFza3MgPSBbXTtcclxuICAgICAgb3JkZXIudGFza3NMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBvcmRlci5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmIChsaW5lLmFtb3VudFRvUGxhbiA9PT0gMCkge1xyXG4gICAgICAgICAgbGluZS5hbW91bnRUb1BsYW4gPSAobGluZS5hbW91bnRJbk9yZGVyIC0gbGluZS5hbW91bnRQbGFubmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoIXRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzKSB7XHJcbiAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMgPSBbb3JkZXJdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMucHVzaChvcmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBwbGFubmVkT3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCk7XHJcbiAgICAgICAgICBpZiAob3JkZXIuc3RhcnRUaW1lICE9PSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpLnN0YXJ0VGltZSkge1xyXG5cclxuICAgICAgICAgICAgaWYgKCFvcmRlci5wYXJ0RGVsaXZlcnkpIHtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5zcGxpY2UodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFubmVkT3JkZXIpLCAxKTtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmluZGV4T2YodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKSksIDEpO1xyXG4gICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICAgIG9sZFdlZWs6IG9sZFdlZWssXHJcbiAgICAgICAgd2Vlazogd2VlayxcclxuICAgICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5MaW5lc1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoJ05PX0xJTkVTX1RPX1BMQU4nLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBwbGFuU2VsZWN0ZWRMaW5lcyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICBsZXQgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuXHJcbiAgICBpZiAocGxhbk9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkTGluZXM6IFRyYW5zYWN0aW9uTGluZUluZm9bXSA9IHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcigodHJhbnNMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gdHJhbnNMaW5lcy5zZWxlY3RlZCk7XHJcblxyXG4gICAgICAvL0RvZXMgdGhlIG9yZGVyIGFscmVhZHkgZXhpc3Q/XHJcbiAgICAgIGlmICh0cmFuc3BvcnREYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgLy9ZZXMgdGhlIG9yZGVyIGV4aXN0c1xyXG5cclxuICAgICAgICAvL0lmIHRoZSBsaW5lKHMpIHdlJ3JlIHRyeWluZyB0byBwbGFuIGFscmVhZHkgYXJlIHBsYW5uZWQgd2UgbmVlZCB0byB2YWxpZGF0ZSBpZiB3ZSBuZWVkIHRvIHBsYW4gYW55d2F5XHJcbiAgICAgICAgbGV0IGNhbnRQbGFuU2VsZWN0ZWRMaW5lczogUGxhbk9yZGVyTGluZVtdID0gW107XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkubGluZXMuZm9yRWFjaCgocGxhbm5lZExpbmU6IFBsYW5PcmRlckxpbmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkTGluZXMuZmluZCgoc2VsZWN0ZWRMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiBzZWxlY3RlZExpbmUubGluZU5yID09PSBwbGFubmVkTGluZS5vcmlnaW5hbExpbmVOcikpIHtcclxuICAgICAgICAgICAgICBjYW50UGxhblNlbGVjdGVkTGluZXMucHVzaChwbGFubmVkTGluZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGlmIChjYW50UGxhblNlbGVjdGVkTGluZXMubGVuZ3RoID09PSBwbGFuT3JkZXIubGluZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoJ05PX0xJTkVTX1RPX1BMQU4nLCB0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKCdOT19MSU5FU19TRUxFQ1RFRCcsIHRydWUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyID0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCk7XHJcblxyXG4gICAgICAgIC8vQWxsIGxpbmVzIHRoYXQgbmVlZCB0byBiZSBwbGFubmVkIGZvciBhbiBvcmRlciBhcmUgaW4gcGxhbk9yZGVyIG5vd1xyXG4gICAgICAgIC8vV2hpY2ggbWVhbnMgdGhhdCB3ZSBqdXN0IGZpbHRlciB0aGUgbGluZXMgb3V0IHRoYXQgRE9OJ1QgbWF0Y2ggYSBzZWxlY3RlZCBsaW5lIEFORCBhcmUgcGxhbm5lZFxyXG4gICAgICAgIHBsYW5PcmRlci5saW5lcy5maWx0ZXIoXHJcbiAgICAgICAgICAodG9QbGFuTGluZTogUGxhbk9yZGVyTGluZSkgPT4gIXBsYW5uZWRPcmRlci5saW5lcy5maW5kKChwbGFubmVkT3JkZXJMaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiBwbGFubmVkT3JkZXJMaW5lLm9yaWdpbmFsTGluZU5yID09PSB0b1BsYW5MaW5lLm9yaWdpbmFsTGluZU5yKVxyXG4gICAgICAgICAgICAmJiAhc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHNlbGVjdGVkTGluZS5saW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL09yZGVyIGRvZXMgbm90IGV4aXN0LCBsZXRzIHByZXBhcmUgaXQgd2l0aCB0aGUgc2VsZWN0ZWQgbGluZXNcclxuICAgICAgICAvL0ZpbHRlciB0aGUgbGluZXMgZm9yIG9ubHkgdGhlIHNlbGVjdGVkIG9uZXNcclxuICAgICAgICBwbGFuT3JkZXIubGluZXMgPSBwbGFuT3JkZXIubGluZXMuZmlsdGVyKHBsYW5uZWRPcmRlckxpbmUgPT4gc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHBsYW5uZWRPcmRlckxpbmUub3JpZ2luYWxMaW5lTnIgPT09IHNlbGVjdGVkTGluZS5saW5lTnIpKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBwbGFuT3JkZXIubGluZXMuZm9yRWFjaCgobGluZTogUGxhbk9yZGVyTGluZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgbWF0Y2hlZFRyYW5zTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzLmZpbmQodHJhbnNMaW5lID0+IHRyYW5zTGluZS5saW5lTnIgPT09IGxpbmUub3JpZ2luYWxMaW5lTnIpO1xyXG4gICAgICBpZiAobWF0Y2hlZFRyYW5zTGluZSkge1xyXG4gICAgICAgIGxpbmUuYW1vdW50VG9QbGFuID0gbWF0Y2hlZFRyYW5zTGluZS5hbW91bnRTZWxlY3RlZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvL1NlbmQgdGhlIHByZXBhcmVkIG9yZGVyIHRvIHRoZVxyXG4gICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNlcXVlbmNlT3JkZXJWYWx1ZShvcmRlcjogUGxhbk9yZGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBvcmRlci5wbGFubmVkTGluZUlkID0gYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0T3JkZXJTZXF1ZW5jZVZhbHVlKCk7XHJcbiAgICBvcmRlci5jaGFpbmVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlUG9wdXBQbGFuRXZlbnQoZXZlbnQ6IFtQbGFuT3JkZXIsIFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11dKSB7XHJcblxyXG4gICAgdGhpcy5zaG93Tm90ZURpYWxvZyA9IGZhbHNlO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnMoZXZlbnRbMV0pO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUoZXZlbnRbMF0pO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChldmVudFswXSk7XHJcbiAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKGV2ZW50WzBdLCBldmVudFsxXSwgZXZlbnRbMl0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNldHRpbmdzUmVzZXQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCgpO1xyXG4gICAgdGhpcy5zaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2V0dGluZ3NEaWFsb2codHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUcmFuc3BvcnREYXkgPSB0cmFuc3BvcnREYXk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRyYW5zcG9ydERheSkge1xyXG4gICAgICB0aGlzLnNob3dTZXR0aW5nc0RpYWxvZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoZGF0YToge1xyXG4gICAgY3VycmVudEhvdXI6IHN0cmluZyxcclxuICAgIGRhdGE6IHN0cmluZ1xyXG4gIH0sIHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlcjtcclxuICAgIGlmIChkYXRhLmRhdGEgPT09ICdmYWxzZScgJiYgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRyYW5zSWQpIHtcclxuICAgICAgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlPy5jdXJyZW50VHJhbnNJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIocGFyc2VJbnQoZGF0YS5kYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRyYW5zcG9ydFdlZWtEYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KCdPUkRFUl9IQVNfQUxSRUFEWV9CRUVOX1BMQU5ORUQnKSwgdHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGxhbk9yZGVyICYmIGRhdGEuY3VycmVudEhvdXIpIHtcclxuXHJcbiAgICAgIHBsYW5PcmRlci5zdGFydFRpbWUgPSB0aGlzLmNhbGN1bGF0ZVN0YXJ0VGltZSh0cmFuc3BvcnRXZWVrRGF5LCBkYXRhLmN1cnJlbnRIb3VyKTtcclxuICAgICAgcGxhbk9yZGVyLmVuZFRpbWUgPSB0aGlzLmNhbGN1bGF0ZUVuZFRpbWUocGxhbk9yZGVyLnN0YXJ0VGltZSwgZGF0YS5jdXJyZW50SG91ciwgcGxhbk9yZGVyKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VHJhbnNwb3J0T3JkZXJzKHRyYW5zcG9ydFdlZWtEYXkpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnRXZWVrRGF5LCB3ZWVrKTtcclxuICAgICAgaWYgKGRhdGEuZGF0YSA9PT0gJ2ZhbHNlJyAmJiB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbi5nZXRUcmFuc2FjdGlvbkJ5SWQodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRyYW5zSWQpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLnNhdmVUcmFuc2FjdGlvbigpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmNoZWNrUmVmVHJhbnNhY3Rpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZVN0YXJ0VGltZSh0cmFuc3BvcnRXZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGN1cnJlbnRIb3VyOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGxldCBzdGFydERhdGU6IERhdGUgPSBuZXcgRGF0ZSh0cmFuc3BvcnRXZWVrRGF5LmRhdGUpO1xyXG4gICAgbGV0IHN0YXJ0VGltZTogbnVtYmVyID0gcGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoJzonKVswXSk7XHJcbiAgICBzdGFydERhdGUuc2V0SG91cnMoc3RhcnRUaW1lKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRNaW51dGVzKHBhcnNlSW50KGN1cnJlbnRIb3VyLnNwbGl0KCc6JylbMV0pID4gMCA/IHBhcnNlSW50KGN1cnJlbnRIb3VyLnNwbGl0KCc6JylbMV0pIDogMCk7XHJcbiAgICBzdGFydERhdGUuc2V0U2Vjb25kcygwKTtcclxuXHJcbiAgICByZXR1cm4gc3RhcnREYXRlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZUVuZFRpbWUoc3RhcnREYXRlOiBEYXRlLCBjdXJyZW50SG91cjogc3RyaW5nLCBwbGFuT3JkZXI6IFBsYW5PcmRlcik6IERhdGUge1xyXG4gICAgbGV0IGVuZFRpbWU6IERhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG5cclxuICAgIGxldCBzcGxpdEhvdXIgPSBjdXJyZW50SG91ci5zcGxpdCgnOicpO1xyXG4gICAgY29uc3QgbmV3RW5kTWludXRlcyA9IHNwbGl0SG91clsxXSA9PT0gJzAwJyA/IDMwIDogMDtcclxuICAgIGNvbnN0IG5ld0VuZEhvdXIgPSBzcGxpdEhvdXJbMV0gPT09ICczMCcgPyAocGFyc2VJbnQoc3BsaXRIb3VyWzBdKSArIDEpIDogcGFyc2VJbnQoc3BsaXRIb3VyWzBdKTtcclxuICAgIGVuZFRpbWUuc2V0SG91cnMobmV3RW5kSG91cik7XHJcbiAgICBlbmRUaW1lLnNldE1pbnV0ZXMobmV3RW5kTWludXRlcyk7XHJcbiAgICBsZXQgYXNzZW1ibHlUaW1lID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UudG90YWxBc3NlbWJseVRpbWUocGxhbk9yZGVyKSAqIDYwICogMTAwMDtcclxuICAgIGVuZFRpbWUuc2V0VGltZShlbmRUaW1lLmdldFRpbWUoKSArIGFzc2VtYmx5VGltZSk7XHJcblxyXG4gICAgcmV0dXJuIGVuZFRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgdGhpcy5zaG93Tm90ZURpYWxvZyA9IHRydWU7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh0aGlzLnBsYW5uaW5nUG9wdXBSZWYpIHtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnBsYW5PcmRlciA9IHBsYW5PcmRlcjtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLnRyYW5zcG9ydERheSA9IHRyYW5zcG9ydERheTtcclxuICAgICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmLndlZWsgPSB3ZWVrO1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYudHJhbnNhY3Rpb24gPSB0aGlzLl90cmFuc2FjdGlvbi5jdXJyZW50VHJhbnNhY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCh2YWx1ZTogeyB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgYXZhaWxhYmxlOiBib29sZWFuIH0pIHtcclxuICAgIHRoaXMuYXZhaWxhYmlsaXR5LnB1c2godmFsdWUpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrQXZhaWxhYmxlKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBsZXQgdHJhbnNwb3J0ID0gdGhpcy5hdmFpbGFiaWxpdHkuZmluZCh0cmFuc3BvcnRPYmplY3QgPT4gdHJhbnNwb3J0T2JqZWN0LnRyYW5zcG9ydERheSA9PT0gdHJhbnNwb3J0RGF5KTtcclxuICAgIHJldHVybiB0cmFuc3BvcnQgJiYgIXRyYW5zcG9ydC5hdmFpbGFibGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGltZUNoYW5nZUV2ZW50KHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgb2JqOiBQbGFuT3JkZXIpIHtcclxuICAgIGxldCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IHdlZWs7XHJcbiAgICBsZXQgb3JkZXI6IFBsYW5PcmRlciA9IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQocGxhbk9yZGVyID0+IHBsYW5PcmRlci50cmFuc0lkID09PSBvYmoudHJhbnNJZCk7XHJcbiAgICBvcmRlci5zdGFydFRpbWUgPSBuZXcgRGF0ZShvYmpbJ3N0YXJ0VGltZSddKTtcclxuICAgIG9yZGVyLmVuZFRpbWUgPSBuZXcgRGF0ZShvYmpbJ2VuZFRpbWUnXSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe29sZFdlZWs6IG9sZFdlZWssIHdlZWs6IHdlZWssIGFjdGlvbjogdGhpcy5wbGFubmluZ0FjdGlvbnMuUGxhbk9yZGVyfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlTW92ZUV2ZW50KG1vdmVEYXRhOiB7XHJcbiAgICBob3VyOiBzdHJpbmcsXHJcbiAgICBzY2hlZHVsZWRPYmplY3Q6IE9iamVjdFxyXG4gIH0sIHRyYW5zcG9ydDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0FycjogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKG1vdmVEYXRhLnNjaGVkdWxlZE9iamVjdFsnb2JqJ11bJ2lkJ10pO1xyXG4gICAgLy9yZW1vdmUgZnJvbSBvbGQgdHJhbnNwb3J0XHJcbiAgICB3ZWVrQXJyLmZvckVhY2goKChyb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSA9PiB7XHJcbiAgICAgIHJvdy5mb3JFYWNoKCh3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpID0+IHtcclxuICAgICAgICBpZiAod2Vla0RheT8ucGxhbm5lZE9yZGVycz8uZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgICAgIHdlZWtEYXkucGxhbm5lZE9yZGVycy5zcGxpY2Uod2Vla0RheS5wbGFubmVkT3JkZXJzLmluZGV4T2YocGxhbk9yZGVyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbiAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgIC8vcmVzdG9yZSBvcmRlclxyXG4gICAgICBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5yZXN0b3JlRGVsaXZlcnlTZXR0aW5ncyhbcGxhbk9yZGVyXSk7XHJcblxyXG4gICAgICAvL3NldCBuZXcgZGF0ZSBmb3Igb3JkZXIgYW5kIHBsYW4gaXQgb24gbmV3IHRyYW5zcG9ydFxyXG4gICAgICBsZXQgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRyYW5zcG9ydC5kYXRlKTtcclxuICAgICAgbGV0IHNwbGl0VGltZTogc3RyaW5nW10gPSBtb3ZlRGF0YS5ob3VyLnNwbGl0KCc6Jyk7XHJcbiAgICAgIG5ld0RhdGUuc2V0SG91cnMocGFyc2VJbnQoc3BsaXRUaW1lWzBdKSk7XHJcbiAgICAgIG5ld0RhdGUuc2V0TWludXRlcyhwYXJzZUludChzcGxpdFRpbWVbMV0pKTtcclxuICAgICAgbmV3RGF0ZS5zZXRTZWNvbmRzKDApO1xyXG4gICAgICBwbGFuT3JkZXIuc3RhcnRUaW1lID0gbmV3RGF0ZTtcclxuICAgICAgbGV0IGVuZERhdGUgPSBuZXcgRGF0ZShwbGFuT3JkZXIuc3RhcnRUaW1lKTtcclxuICAgICAgcGxhbk9yZGVyLmVuZFRpbWUgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5hZGRNaW51dGVzKGVuZERhdGUsIG1vdmVEYXRhLnNjaGVkdWxlZE9iamVjdFsnb2JqJ11bJ2hlaWdodCddKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnModHJhbnNwb3J0KTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0LCB3ZWVrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVNb3ZlTm9ybWFsRXZlbnQodHJhbnNJZDogc3RyaW5nLCB0cmFuc3BvcnQ6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHdlZWtBcnI6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdW10pIHtcclxuICAgIGxldCBwbGFuT3JkZXI6IFBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihwYXJzZUludCh0cmFuc0lkKSk7XHJcbiAgICAvL3JlbW92ZSBmcm9tIG9sZCB0cmFuc3BvcnRcclxuICAgIHdlZWtBcnIuZm9yRWFjaCgoKHJvdzogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pID0+IHtcclxuICAgICAgcm93LmZvckVhY2goKHdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGlmICh3ZWVrRGF5Py5wbGFubmVkT3JkZXJzPy5maW5kKG9yZGVyID0+IG9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFuT3JkZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgLy9yZXN0b3JlIG9yZGVyXHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKFtwbGFuT3JkZXJdKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnModHJhbnNwb3J0KTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLnBsYW5PcmRlckxpbmVzKHBsYW5PcmRlciwgdHJhbnNwb3J0LCB3ZWVrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVFZGl0UGxhbm5lZE9yZGVyKHBsYW5PcmRlcjogUGxhbk9yZGVyLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgd2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIHRoaXMub3BlblBsYW5uaW5nUG9wdXAocGxhbk9yZGVyLCB0cmFuc3BvcnREYXksIHdlZWspO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU1vdmVPcmRlclVwKHBsYW5PcmRlcjogUGxhbk9yZGVyLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCB0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgY29uc3Qgb2xkV2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10gPSBbXTtcclxuICAgIHBsYW5uaW5nVHJhbnNwb3J0V2Vlay5mb3JFYWNoKHZhbCA9PiBvbGRXZWVrLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgdmFsKSkpO1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UucmVvcmRlckl0ZW0odHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMsIHBsYW5PcmRlciwgJ3VwJyk7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7b2xkV2Vlazogb2xkV2Vlaywgd2VlazogcGxhbm5pbmdUcmFuc3BvcnRXZWVrLCBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5PcmRlcn0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU1vdmVPcmRlckRvd24ocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHBsYW5uaW5nVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5yZW9yZGVySXRlbSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycywgcGxhbk9yZGVyLCAnZG93bicpO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe29sZFdlZWs6IG9sZFdlZWssIHdlZWs6IHBsYW5uaW5nVHJhbnNwb3J0V2VlaywgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9ucy5QbGFuT3JkZXJ9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RUcmFuc3BvcnREYXkodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydERheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0cmFuc3BvcnREYXlzLmluZGV4T2YodHJhbnNwb3J0RGF5KTtcclxuICAgIGxldCB0aWxlID0gdGhpcy50aWxlc1F1ZXJ5TGlzdC5nZXQoaW5kZXgpO1xyXG5cclxuICAgIGlmICghdHJhbnNwb3J0RGF5LnNlbGVjdGVkKSB7XHJcbiAgICAgIGlmICghdGlsZS5leHBhbmRlZCkge1xyXG4gICAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHJhbnNwb3J0RGF5cy5maW5kKHRyYW5zcG9ydERheUxpc3RJdGVtID0+IHRyYW5zcG9ydERheUxpc3RJdGVtLnNlbGVjdGVkKSAmJiAhdHJhbnNwb3J0RGF5LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgLy9kZXNlbGVjdCBvdGhlcnMgaWYgbm90IHNlbGVjdGVkXHJcbiAgICAgICAgdHJhbnNwb3J0RGF5cy5maWx0ZXIodHJhbnNwb3J0RGF5TGlzdEl0ZW0gPT4gdHJhbnNwb3J0RGF5TGlzdEl0ZW0uc2VsZWN0ZWQpLmZvckVhY2goc2VsZWN0ZWRUcmFuc3BvcnRMaXN0SXRlbSA9PiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFRyYW5zcG9ydExpc3RJdGVtLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0cmFuc3BvcnREYXkuc2VsZWN0ZWQgPSAhdHJhbnNwb3J0RGF5LnNlbGVjdGVkO1xyXG5cclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAodHJhbnNwb3J0RGF5LnNlbGVjdGVkKSB7XHJcbiAgICAgIC8vZmlyZSBldmVudCBzZWxlY3RlZCBvdXR3YXJkc1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNlbGVjdGVkVHJhbnNwb3J0RGF5Lm5leHQoIHRyYW5zcG9ydERheSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
602
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctbWFpbi9jb21wb25lbnQvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBYSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9NLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUc5RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUU3RyxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSx1RkFB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Q0o7U0FDRjtRQUVELFlBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRS9DLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckMsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO1lBQ3pCLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3ZFO2FBQU07WUFDTCxJQUFJLENBQUMsdUJBQXVCLENBQUMsK0JBQStCLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDckU7SUFDSCxDQUFDOzs7WUFybkJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUEvRU8sdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQiwyQkFBMkI7WUFLM0Isd0JBQXdCO1lBWk4saUJBQWlCO1lBcUJuQyxpQkFBaUI7WUFMakIsZ0JBQWdCO1lBU2hCLHVCQUF1Qjs7O29CQThFNUIsWUFBWSxTQUFDLHFDQUFxQzsyQkFLbEQsU0FBUyxTQUFDLGNBQWM7eUJBQ3hCLFNBQVMsU0FBQyxZQUFZO3FDQUl0QixTQUFTLFNBQUMsZUFBZTsyQkFLekIsS0FBSzswQkFLTCxLQUFLOzhCQUdMLEtBQUs7c0NBR0wsS0FBSzsyQ0FHTCxNQUFNOzBDQVdOLE1BQU07d0JBcUROLFdBQVcsU0FBQyxxQ0FBcUM7dUJBTWpELFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tICdAY29saWpuaXQvc2hhcmVkY29tcG9uZW50cyc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXN9IGZyb20gJy4uLy4uLy4uLy4uL2VudW0vZGVsaXZlcnktcGxhbm5pbmctY2FsZW5kYXItbW9kZXMuZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy12aWV3LW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9kZWxpdmVyeS1wbGFubmluZy9zZXJ2aWNlL2RlbGl2ZXJ5LXBsYW5uaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BsYW5uaW5nVHJhbnNwb3J0V2Vla0RheX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLXRyYW5zcG9ydC13ZWVrLWRheS5ibyc7XHJcbmltcG9ydCB7UGxhbk9yZGVyfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbi1vcmRlci5ibyc7XHJcbmltcG9ydCB7R2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2dldC10cmFuc3BvcnQtb3JkZXJzLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge1BsYW5uaW5nRmlsdGVyT2JqZWN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGxhbm5pbmctZmlsdGVyLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9vcmRlci1saW5lcy1wbGFubmVkLXJlcXVlc3QuYm8nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cC9kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50L2RlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGUvZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlc30gZnJvbSAnLi4vLi4vLi4vLi4vZW51bS9kZWxpdmVyeS1wbGFubmluZy10aWxlLW1vZGVzLmVudW0nO1xyXG5pbXBvcnQge0RlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtL2RlbGl2ZXJ5LXBsYW5uaW5nLXVwZGF0ZS1hY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQge1BsYW5PcmRlckxpbmV9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wbGFuLW9yZGVyLWxpbmUuYm8nO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LXBsYW5uaW5nLXdyYXBwZXJcIj5cclxuICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cCAjcGxhbm5pbmdQb3B1cCAqbmdJZj1cInNob3dOb3RlRGlhbG9nXCIgKGNsb3NlRXZlbnQpPVwic2hvd05vdGVEaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU3VjY2VlZGVkUGxhbkFjdGlvbik9XCJoYW5kbGVQb3B1cFBsYW5FdmVudCgkZXZlbnQpXCI+PC9jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy1wb3B1cD5cclxuICAgICAgICAgIDxjby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldy10aWxlLXNldHRpbmdzLXBvcHVwICpuZ0lmPVwic2hvd1NldHRpbmdzRGlhbG9nXCIgW3RyYW5zcG9ydERheV09XCJzZWxlY3RlZFRyYW5zcG9ydERheVwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2FuY2VsQWN0aW9uKT1cImhhbmRsZVNldHRpbmdzUmVzZXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VFdmVudCk9XCJzaG93U2V0dGluZ3NEaWFsb2cgPSBmYWxzZVwiPjwvY28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZS1zZXR0aW5ncy1wb3B1cD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxpdmVyeS1vdmVydmlldy13cmFwcGVyXCIgW2NsYXNzLnNpZGViYXJdPVwiY3VycmVudFZpZXdNb2RlID09PSAnREFZU19BUk9VTkQnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbGUtdmlldy1tb2RlcyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImN1cnJlbnRUaWxlTW9kZSA9IHRpbGVNb2Rlcy5Ob3JtYWxcIiBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUaWxlTW9kZSA9PT0gdGlsZU1vZGVzLk5vcm1hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJMaW5lc1JlZ3VsYXIpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiAoY2xpY2spPVwiY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGVzLkNhbGVuZGFyXCIgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGlsZU1vZGUgPT09IHRpbGVNb2Rlcy5DYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2FsZW5kYXJEYXlSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhbm5pbmctY29tcG9uZW50LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWRhdGUtcGxhbm5pbmcgW3ZpZXddPVwiY3VycmVudFZpZXdNb2RlXCIgW3NlbGVjdGVkRGF0ZV09XCJjdXJyZW50RGF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJhbmdlQ2hhbmdlKT1cImhhbmRsZURhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCI+PC9jby1kYXRlLXBsYW5uaW5nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGRhdGUtcGxhbm5pbmdcIiBbY2xhc3MuZW1wbG95ZWUtdmlld109XCJlbXBsb3llZVZpZXdcIiAjcm93Q29udGFpbmVyICpuZ0Zvcj1cImxldCB0cmFuc3BvcnRXZWVrUm93IG9mIHBsYW5UcmFuc3BvcnRXZWVrQXJyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAjY29sdW1uRWxlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0cmFuc1BvcnREYXkgb2YgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tZGVsaXZlcnktcGxhbm5pbmctb3ZlcnZpZXctdGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VHJhbnNwb3J0RGF5KHRyYW5zUG9ydERheSwgZmlsdGVyV2Vla0FycmF5KHRyYW5zcG9ydFdlZWtSb3cpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhdHJhbnNQb3J0RGF5LmF2YWlsYWJsZU9uRGF0ZSB8fCB0cmFuc1BvcnREYXkubWF4TWludXRlcyA9PT0gMCB8fCBjaGVja0F2YWlsYWJsZSh0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF0cmFuc1BvcnREYXkuYXZhaWxhYmxlT25EYXRlIHx8IHRyYW5zUG9ydERheS5tYXhNaW51dGVzID09PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdvdmVyKT1cImFsbG93RHJvcCgkZXZlbnQsIHRyYW5zUG9ydERheSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJvcCk9XCJkcm9wcGVkKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdywgdHJhbnNQb3J0RGF5LCBmaWx0ZXJXZWVrQXJyYXkodHJhbnNwb3J0V2Vla1JvdykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdlbmQpPVwiZHJhZ0VuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zcG9ydERheV09XCJ0cmFuc1BvcnREYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlT3JkZXJFdmVudCk9XCJoYW5kbGVEZWxldGVPcmRlcigkZXZlbnQsIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2VFdmVudCk9XCJoYW5kbGVUaW1lQ2hhbmdlRXZlbnQodHJhbnNQb3J0RGF5LCB0cmFuc3BvcnRXZWVrUm93LCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BlblNldHRpbmdzRGlhbG9nRXZlbnQpPVwib3BlblNldHRpbmdzRGlhbG9nKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsZW5kYXJQbGFuRXZlbnQpPVwiaGFuZGxlQ2FsZW5kYXJQbGFuRXZlbnQoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZU9yZGVyTGluZUV2ZW50KT1cImhhbmRsZURlbGV0ZUxpbmUoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVkaXRPcmRlckV2ZW50KT1cImhhbmRsZUVkaXRQbGFubmVkT3JkZXIoJGV2ZW50LCB0cmFuc1BvcnREYXksIHRyYW5zcG9ydFdlZWtSb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVFdmVudCk9XCJoYW5kbGVNb3ZlRXZlbnQoJGV2ZW50LHRyYW5zUG9ydERheSwgdHJhbnNwb3J0V2Vla1JvdywgcGxhblRyYW5zcG9ydFdlZWtBcnIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF2YWlsYWJpbGl0eUNoZWNrZWQpPVwiaGFuZGxlQXZhaWxhYmlsaXR5Q2hlY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlclVwRXZlbnQpPVwiaGFuZGxlTW92ZU9yZGVyVXAoJGV2ZW50LCB0cmFuc3BvcnRXZWVrUm93LCB0cmFuc1BvcnREYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdmVPcmRlckRvd25FdmVudCk9XCJoYW5kbGVNb3ZlT3JkZXJEb3duKCRldmVudCwgdHJhbnNwb3J0V2Vla1JvdywgdHJhbnNQb3J0RGF5KVwiXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgID48L2NvLWRlbGl2ZXJ5LXBsYW5uaW5nLW92ZXJ2aWV3LXRpbGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcbiAgcHVibGljIHJlYWRvbmx5IHBsYW5uaW5nQWN0aW9uczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zID0gRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnM7XHJcbiAgcHVibGljIHJlYWRvbmx5IHRpbGVNb2RlczogdHlwZW9mIERlbGl2ZXJ5UGxhbm5pbmdUaWxlTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nVGlsZU1vZGVzO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVBsYW5uaW5nVmlld01vZGVzOiB0eXBlb2YgRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2RlcyA9IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXM7XHJcblxyXG4gIHB1YmxpYyBhdmFpbGFiaWxpdHk6IHsgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIGF2YWlsYWJsZTogYm9vbGVhbiB9W10gPSBbXTtcclxuXHJcbiAgcHVibGljIHBsYW5uaW5nUG9wdXBSZWY6IERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1BvcHVwQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgYXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dOb3RlRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTZXR0aW5nc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB0aWxlc1F1ZXJ5TGlzdDogUXVlcnlMaXN0PERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ+O1xyXG4gIHB1YmxpYyBzZWxlY3RlZFRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5O1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQpXHJcbiAgcHVibGljIHNldCB0aWxlcyh0aWxlczogUXVlcnlMaXN0PERlbGl2ZXJ5UGxhbm5pbmdPdmVydmlld1RpbGVDb21wb25lbnQ+KSB7XHJcbiAgICB0aGlzLnRpbGVzUXVlcnlMaXN0ID0gdGlsZXM7XHJcbiAgfTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncm93Q29udGFpbmVyJykgcm93Q29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdjb2x1bW5FbGVtJykgY29sdW1uRWxlbTogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5OdW0gPSAzOyAvL2luaXRpYWwgY291bnRcclxuXHJcbiAgQFZpZXdDaGlsZCgncGxhbm5pbmdQb3B1cCcpXHJcbiAgcHVibGljIHNldCBwbGFubmluZ1BvcHVwQ29tcG9uZW50KHZhbHVlOiBEZWxpdmVyeVBsYW5uaW5nT3ZlcnZpZXdQb3B1cENvbXBvbmVudCkge1xyXG4gICAgdGhpcy5wbGFubmluZ1BvcHVwUmVmID0gdmFsdWU7XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGVtcGxveWVlVmlldygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5lbXBsb3llZVZpZXc7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50TW9kZTogRGVsaXZlcnlQbGFubmluZ0NhbGVuZGFyTW9kZXMgPSBEZWxpdmVyeVBsYW5uaW5nQ2FsZW5kYXJNb2Rlcy5XZWVrO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXJyZW50Vmlld01vZGU6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3VycmVudFBsYW5uaW5nVmlld01vZGU6IERlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMgPSB0aGlzLmRlbGl2ZXJ5UGxhbm5pbmdWaWV3TW9kZXMuRnVsbHNjcmVlbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSxcclxuICAgIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLFxyXG4gICAgYWN0aW9uOiBEZWxpdmVyeVBsYW5uaW5nVXBkYXRlQWN0aW9uc1xyXG4gIH0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZXNldFBsYW5uaW5nVHJhbnNwb3J0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcblxyXG4gIHB1YmxpYyBnZXQgcGxhblRyYW5zcG9ydFdlZWtBcnIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UucGxhblRyYW5zcG9ydFdlZWtBcnI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRUaWxlTW9kZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGN1cnJlbnRUaWxlTW9kZSh0aWxlTW9kZTogRGVsaXZlcnlQbGFubmluZ1RpbGVNb2Rlcykge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFRpbGVNb2RlID0gdGlsZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3VycmVudERhdGUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkNvbjogVHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5U2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLy9jYWxjdWxhdGluZyB1cG9uIGxvYWRpbmdcclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLnNldENvbE51bSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2godGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuYXZhaWxhYmlsaXR5UmVzZXRFdmVudC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eSA9IFtdO1xyXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5QbGFuUmF5b24pLnRoZW4oKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5wbGFuUmF5b24gPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKChzdWI6IFN1YnNjcmlwdGlvbikgPT4ge1xyXG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1kZWxpdmVyeS1wbGFubmluZy1vdmVydmlldycpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9yZWNhbGN1bGF0aW5nIHVwb24gYnJvd3NlciB3aW5kb3cgcmVzaXplXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuc2V0Q29sTnVtKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZHJvcHBlZChldjogRHJhZ0V2ZW50LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydERheXM6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZHJhZ2dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXkpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeS5nZXQoJ09SREVSX0NBTl9OT1RfQkVfUExBTk5FRF9PTl9SRVNPVVJDRScpLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBldi5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0cmFuc3BvcnREYXlzLmluZGV4T2YodHJhbnNwb3J0RGF5KTtcclxuICAgICAgbGV0IHRpbGUgPSB0aGlzLnRpbGVzUXVlcnlMaXN0LmdldChpbmRleCk7XHJcbiAgICAgIGlmICghdGlsZS5leHBhbmRlZCkge1xyXG4gICAgICAgIHRpbGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhICE9ICdsaW5lcycgJiYgIXRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQpIHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBwYXJzZUludChkYXRhKSkge1xyXG4gICAgICAgICAgY29uc3QgcGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KGRhdGEpKTtcclxuICAgICAgICAgIGlmIChwbGFuT3JkZXIubGluZXMubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcih0aGlzLl9kaWN0aW9uYXJ5LmdldCgnTk9fTElORVNfVE9fUExBTicpLCB0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8ubGVuZ3RoICYmIHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8uaW5kZXhPZihwbGFuT3JkZXIpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kaWFsb2cuc2hvd0Vycm9yKHRoaXMuX2RpY3Rpb25hcnkuZ2V0KCdPUkRFUl9IQVNfQUxSRUFEWV9CRUVOX1BMQU5ORUQnKSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGxhbk9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSAhPSAnbGluZXMnICYmIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLm1vdmluZ1RyYW5zSWQpIHtcclxuICAgICAgICAvLyBhd2FpdCB0aGlzLmhhbmRsZU1vdmVOb3JtYWxFdmVudChkYXRhLCB0cmFuc3BvcnREYXksIHdlZWssIHRoaXMucGxhblRyYW5zcG9ydFdlZWtBcnIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucGxhblNlbGVjdGVkTGluZXModHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWxsb3dEcm9wKGV2OiBEcmFnRXZlbnQsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmRyYWdnaW5nICYmIHRyYW5zcG9ydERheS5tYXhNaW51dGVzID4gMCAmJiB0cmFuc3BvcnREYXkuYXZhaWxhYmxlT25EYXRlKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc3BvcnREYXkubWludXRlcyArIHRyYW5zcG9ydERheS5taW51dGVzIDwgdHJhbnNwb3J0RGF5Lm1heE1pbnV0ZXMgJiYgdHJhbnNwb3J0RGF5Lm1heE9yZGVyQW1vdW50IDwgdHJhbnNwb3J0RGF5Lm9yZGVyQW1vdW50ICYmIHRyYW5zcG9ydERheS5hdmFpbGFibGVPbkRhdGUgJiYgdGhpcy5jaGVja0F2YWlsYWJsZSh0cmFuc3BvcnREYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbE51bSgpIHtcclxuICAgIGlmICh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS52aWV3TW9kZSA9PT0gRGVsaXZlcnlQbGFubmluZ1ZpZXdNb2Rlcy5TaWRlYmFyKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uTnVtID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29sdW1uTnVtID0gMztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcmFnRW5kKGV2OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5kcmFnZ2luZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcldlZWtBcnJheSh3ZWVrQXJyYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICByZXR1cm4gd2Vla0FycmF5LnNsaWNlKDAsIHRoaXMuY29sdW1uTnVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VDaGFuZ2UobmV3RGF0ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFN0YXJ0RGF0ZSA9IG5ld0RhdGU7XHJcbiAgICB0aGlzLnJlc2V0UGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGVsZXRlT3JkZXIoZGVsZXRlUmVzdWx0OiBbUGxhbk9yZGVyLCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXldLCBwbGFubmluZ1RyYW5zcG9ydFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICBsZXQgb3JkZXIgPSBkZWxldGVSZXN1bHRbMF07XHJcbiAgICBpZiAob3JkZXIpIHtcclxuICAgICAgaWYgKGRlbGV0ZVJlc3VsdFswXS5saW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgICAgIGRlbGV0ZVJlc3VsdFsxXS5wbGFubmVkT3JkZXJzLnNwbGljZShkZWxldGVSZXN1bHRbMV0ucGxhbm5lZE9yZGVycy5pbmRleE9mKG9yZGVyKSwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICAgICAgb2xkV2Vlazogb2xkV2VlayxcclxuICAgICAgICAgIHdlZWs6IHBsYW5uaW5nVHJhbnNwb3J0V2VlayxcclxuICAgICAgICAgIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuRGVsZXRlUGxhbm5lZE9yZGVyXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fREVMRVRFJywgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZWxldGVMaW5lKGRlbGV0ZVJlc3VsdDoge1xyXG4gICAgb3JkZXI6IFBsYW5PcmRlcixcclxuICAgIGxpbmU6IFBsYW5PcmRlckxpbmVcclxuICB9LCB3ZWVrRGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHRyYW5zcG9ydFdlZWtSb3c6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICBsZXQgb2xkV2VlayA9IHRyYW5zcG9ydFdlZWtSb3c7XHJcbiAgICBsZXQgb3JkZXIgPSB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBkZWxldGVSZXN1bHQub3JkZXIudHJhbnNJZCk7XHJcbiAgICBvcmRlci5saW5lcyA9IG9yZGVyLmxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUub3JpZ2luYWxMaW5lTnIgIT09IGRlbGV0ZVJlc3VsdC5saW5lLm9yaWdpbmFsTGluZU5yKTtcclxuICAgIGlmIChvcmRlci5saW5lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihvcmRlciksIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZGVsZXRpbmdPcmRlciA9IG9yZGVyO1xyXG4gICAgdGhpcy51cGRhdGVQbGFubmluZ1RyYW5zcG9ydEV2ZW50LmVtaXQoe1xyXG4gICAgICBvbGRXZWVrOiBvbGRXZWVrLFxyXG4gICAgICB3ZWVrOiB0cmFuc3BvcnRXZWVrUm93LFxyXG4gICAgICBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLkRlbGV0ZVBsYW5uZWRMaW5lc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0T3JkZXJMaW5lc1BsYW5uZWQob3JkZXI6IFBsYW5PcmRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IE9yZGVyTGluZXNQbGFubmVkUmVxdWVzdCA9IG5ldyBPcmRlckxpbmVzUGxhbm5lZFJlcXVlc3QoKTtcclxuICAgIGxldCBmaWx0ZXJPYmo6IFBsYW5uaW5nRmlsdGVyT2JqZWN0ID0gbmV3IFBsYW5uaW5nRmlsdGVyT2JqZWN0KCk7XHJcbiAgICByZXF1ZXN0LnBsYW5uZWQgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LnRyYW5zSWQgPSBvcmRlci50cmFuc0lkO1xyXG4gICAgcmVxdWVzdC5wbGFubmVkTGluZUlkID0gb3JkZXIucGxhbm5lZExpbmVJZDtcclxuICAgIGZpbHRlck9iai5vbmx5Q3VycmVudFdlZWsgPSB0cnVlO1xyXG4gICAgZmlsdGVyT2JqLmJlZ2luQ3VycmVudFdlZWsgPSBuZXcgRGF0ZSgpO1xyXG4gICAgZmlsdGVyT2JqLmNoZWNrT3JkZXJMaW5lcyA9IDE7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9iamVjdCA9IGZpbHRlck9iajtcclxuICAgIGlmICghb3JkZXIubGluZXMpIHtcclxuICAgICAgb3JkZXIubGluZXMgPSBbXTtcclxuICAgIH1cclxuICAgIG9yZGVyLmxpbmVzLnB1c2goLi4uYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0T3JkZXJMaW5lc1BsYW5uZWQocmVxdWVzdCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHJlcXVlc3Q6IEdldFRyYW5zcG9ydE9yZGVyc1JlcXVlc3QgPSBuZXcgR2V0VHJhbnNwb3J0T3JkZXJzUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5wbGFubmluZ0lkID0gdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nLnBsYW5uaW5nSWQ7XHJcbiAgICByZXF1ZXN0LmRhdGUgPSB0cmFuc3BvcnREYXkuZGF0ZTtcclxuICAgIHJlcXVlc3QudHJhbnNwb3J0SWQgPSB0cmFuc3BvcnREYXkudHJhbnNwb3J0LnRyYW5zcG9ydElkO1xyXG4gICAgdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRUcmFuc3BvcnRPcmRlcnMocmVxdWVzdCk7XHJcbiAgICB0cmFuc3BvcnREYXkub3JkZXJzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgcGxhbk9yZGVyTGluZXMob3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgd2Vlay5mb3JFYWNoKHZhbCA9PiBvbGRXZWVrLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgdmFsKSkpO1xyXG4gICAgaWYgKG9yZGVyLmxpbmVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9yZGVyLmxpbmVzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgb3JkZXIudGFza3MgPSBbXTtcclxuICAgICAgb3JkZXIudGFza3NMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBvcmRlci5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICghbGluZS5hbW91bnRUb1BsYW4gfHwgbGluZS5hbW91bnRUb1BsYW4gPT09IDAgKSB7XHJcbiAgICAgICAgICBsaW5lLmFtb3VudFRvUGxhbiA9IChsaW5lLmFtb3VudEluT3JkZXIgLSBsaW5lLmFtb3VudFBsYW5uZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMpIHtcclxuICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycyA9IFtvcmRlcl07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5wdXNoKG9yZGVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyID0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZCgocGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIpID0+IHBsYW5uZWRPcmRlci50cmFuc0lkID09PSBvcmRlci50cmFuc0lkKTtcclxuICAgICAgICAgIGlmIChvcmRlci5zdGFydFRpbWUgIT09IHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gb3JkZXIudHJhbnNJZCkuc3RhcnRUaW1lKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoIW9yZGVyLnBhcnREZWxpdmVyeSkge1xyXG4gICAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnNwbGljZSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHBsYW5uZWRPcmRlciksIDEpO1xyXG4gICAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5zcGxpY2UodHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZih0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IG9yZGVyLnRyYW5zSWQpKSwgMSk7XHJcbiAgICAgICAgICAgIHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7XHJcbiAgICAgICAgb2xkV2Vlazogb2xkV2VlayxcclxuICAgICAgICB3ZWVrOiB3ZWVrLFxyXG4gICAgICAgIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuUGxhbkxpbmVzXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fUExBTicsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHBsYW5TZWxlY3RlZExpbmVzKHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIGxldCBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIodGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCk7XHJcbiAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xyXG5cclxuICAgIGlmIChwbGFuT3JkZXIucGFydERlbGl2ZXJ5KSB7XHJcblxyXG4gICAgICBsZXQgc2VsZWN0ZWRMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKCh0cmFuc0xpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSA9PiB0cmFuc0xpbmVzLnNlbGVjdGVkKTtcclxuXHJcbiAgICAgIC8vRG9lcyB0aGUgb3JkZXIgYWxyZWFkeSBleGlzdD9cclxuICAgICAgaWYgKHRyYW5zcG9ydERheT8ucGxhbm5lZE9yZGVycz8uZmluZChvcmRlciA9PiBvcmRlci50cmFuc0lkID09PSBwbGFuT3JkZXIudHJhbnNJZCkpIHtcclxuICAgICAgICAvL1llcyB0aGUgb3JkZXIgZXhpc3RzXHJcblxyXG4gICAgICAgIC8vSWYgdGhlIGxpbmUocykgd2UncmUgdHJ5aW5nIHRvIHBsYW4gYWxyZWFkeSBhcmUgcGxhbm5lZCB3ZSBuZWVkIHRvIHZhbGlkYXRlIGlmIHdlIG5lZWQgdG8gcGxhbiBhbnl3YXlcclxuICAgICAgICBsZXQgY2FudFBsYW5TZWxlY3RlZExpbmVzOiBQbGFuT3JkZXJMaW5lW10gPSBbXTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKS5saW5lcy5mb3JFYWNoKChwbGFubmVkTGluZTogUGxhbk9yZGVyTGluZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRMaW5lcy5maW5kKChzZWxlY3RlZExpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pID0+IHNlbGVjdGVkTGluZS5saW5lTnIgPT09IHBsYW5uZWRMaW5lLm9yaWdpbmFsTGluZU5yKSkge1xyXG4gICAgICAgICAgICAgIGNhbnRQbGFuU2VsZWN0ZWRMaW5lcy5wdXNoKHBsYW5uZWRMaW5lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYgKGNhbnRQbGFuU2VsZWN0ZWRMaW5lcy5sZW5ndGggPT09IHBsYW5PcmRlci5saW5lcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGlhbG9nLnNob3dFcnJvcignTk9fTElORVNfVE9fUExBTicsIHRydWUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IoJ05PX0xJTkVTX1NFTEVDVEVEJywgdHJ1ZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcGxhbm5lZE9yZGVyOiBQbGFuT3JkZXIgPSB0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycy5maW5kKChwbGFubmVkT3JkZXI6IFBsYW5PcmRlcikgPT4gcGxhbm5lZE9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKTtcclxuXHJcbiAgICAgICAgLy9BbGwgbGluZXMgdGhhdCBuZWVkIHRvIGJlIHBsYW5uZWQgZm9yIGFuIG9yZGVyIGFyZSBpbiBwbGFuT3JkZXIgbm93XHJcbiAgICAgICAgLy9XaGljaCBtZWFucyB0aGF0IHdlIGp1c3QgZmlsdGVyIHRoZSBsaW5lcyBvdXQgdGhhdCBET04nVCBtYXRjaCBhIHNlbGVjdGVkIGxpbmUgQU5EIGFyZSBwbGFubmVkXHJcbiAgICAgICAgcGxhbk9yZGVyLmxpbmVzLmZpbHRlcihcclxuICAgICAgICAgICh0b1BsYW5MaW5lOiBQbGFuT3JkZXJMaW5lKSA9PiAhcGxhbm5lZE9yZGVyLmxpbmVzLmZpbmQoKHBsYW5uZWRPcmRlckxpbmU6IFBsYW5PcmRlckxpbmUpID0+IHBsYW5uZWRPcmRlckxpbmUub3JpZ2luYWxMaW5lTnIgPT09IHRvUGxhbkxpbmUub3JpZ2luYWxMaW5lTnIpXHJcbiAgICAgICAgICAgICYmICFzZWxlY3RlZExpbmVzLmZpbmQoKHNlbGVjdGVkTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gc2VsZWN0ZWRMaW5lLmxpbmVOciA9PT0gdG9QbGFuTGluZS5vcmlnaW5hbExpbmVOcikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vT3JkZXIgZG9lcyBub3QgZXhpc3QsIGxldHMgcHJlcGFyZSBpdCB3aXRoIHRoZSBzZWxlY3RlZCBsaW5lc1xyXG4gICAgICAgIC8vRmlsdGVyIHRoZSBsaW5lcyBmb3Igb25seSB0aGUgc2VsZWN0ZWQgb25lc1xyXG4gICAgICAgIHBsYW5PcmRlci5saW5lcyA9IHBsYW5PcmRlci5saW5lcy5maWx0ZXIocGxhbm5lZE9yZGVyTGluZSA9PiBzZWxlY3RlZExpbmVzLmZpbmQoKHNlbGVjdGVkTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbykgPT4gcGxhbm5lZE9yZGVyTGluZS5vcmlnaW5hbExpbmVOciA9PT0gc2VsZWN0ZWRMaW5lLmxpbmVOcikpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHBsYW5PcmRlci5saW5lcy5mb3JFYWNoKChsaW5lOiBQbGFuT3JkZXJMaW5lLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBtYXRjaGVkVHJhbnNMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gdGhpcy5fdHJhbnNhY3Rpb24uY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMuZmluZCh0cmFuc0xpbmUgPT4gdHJhbnNMaW5lLmxpbmVOciA9PT0gbGluZS5vcmlnaW5hbExpbmVOcik7XHJcbiAgICAgIGlmIChtYXRjaGVkVHJhbnNMaW5lKSB7XHJcbiAgICAgICAgbGluZS5hbW91bnRUb1BsYW4gPSBtYXRjaGVkVHJhbnNMaW5lLmFtb3VudFNlbGVjdGVkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vU2VuZCB0aGUgcHJlcGFyZWQgb3JkZXIgdG8gdGhlXHJcbiAgICB0aGlzLm9wZW5QbGFubmluZ1BvcHVwKHBsYW5PcmRlciwgdHJhbnNwb3J0RGF5LCB3ZWVrKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VxdWVuY2VPcmRlclZhbHVlKG9yZGVyOiBQbGFuT3JkZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIG9yZGVyLnBsYW5uZWRMaW5lSWQgPSBhd2FpdCB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRPcmRlclNlcXVlbmNlVmFsdWUoKTtcclxuICAgIG9yZGVyLmNoYWluZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVQb3B1cFBsYW5FdmVudChldmVudDogW1BsYW5PcmRlciwgUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXV0pIHtcclxuXHJcbiAgICB0aGlzLnNob3dOb3RlRGlhbG9nID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyhldmVudFsxXSk7XHJcbiAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShldmVudFswXSk7XHJcbiAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKGV2ZW50WzBdKTtcclxuICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMoZXZlbnRbMF0sIGV2ZW50WzFdLCBldmVudFsyXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2V0dGluZ3NSZXNldCgpIHtcclxuICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KCk7XHJcbiAgICB0aGlzLnNob3dTZXR0aW5nc0RpYWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5TZXR0aW5nc0RpYWxvZyh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRyYW5zcG9ydERheSA9IHRyYW5zcG9ydERheTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVHJhbnNwb3J0RGF5KSB7XHJcbiAgICAgIHRoaXMuc2hvd1NldHRpbmdzRGlhbG9nID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDYWxlbmRhclBsYW5FdmVudChkYXRhOiB7XHJcbiAgICBjdXJyZW50SG91cjogc3RyaW5nLFxyXG4gICAgZGF0YTogc3RyaW5nXHJcbiAgfSwgdHJhbnNwb3J0V2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyO1xyXG4gICAgaWYgKGRhdGEuZGF0YSA9PT0gJ2ZhbHNlJyAmJiB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCkge1xyXG4gICAgICBwbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIodGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2U/LmN1cnJlbnRUcmFuc0lkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBsYW5PcmRlciA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLmdldFBsYW5PcmRlcihwYXJzZUludChkYXRhLmRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHJhbnNwb3J0V2Vla0RheS5wbGFubmVkT3JkZXJzLmZpbmQoKHBsYW5uZWRPcmRlcjogUGxhbk9yZGVyKSA9PiBwbGFubmVkT3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX2RpYWxvZy5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeS5nZXQoJ09SREVSX0hBU19BTFJFQURZX0JFRU5fUExBTk5FRCcpLCB0cnVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwbGFuT3JkZXIgJiYgZGF0YS5jdXJyZW50SG91cikge1xyXG5cclxuICAgICAgcGxhbk9yZGVyLnN0YXJ0VGltZSA9IHRoaXMuY2FsY3VsYXRlU3RhcnRUaW1lKHRyYW5zcG9ydFdlZWtEYXksIGRhdGEuY3VycmVudEhvdXIpO1xyXG4gICAgICBwbGFuT3JkZXIuZW5kVGltZSA9IHRoaXMuY2FsY3VsYXRlRW5kVGltZShwbGFuT3JkZXIuc3RhcnRUaW1lLCBkYXRhLmN1cnJlbnRIb3VyLCBwbGFuT3JkZXIpO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5nZXRUcmFuc3BvcnRPcmRlcnModHJhbnNwb3J0V2Vla0RheSk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0U2VxdWVuY2VPcmRlclZhbHVlKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJMaW5lc1BsYW5uZWQocGxhbk9yZGVyKTtcclxuICAgICAgYXdhaXQgdGhpcy5wbGFuT3JkZXJMaW5lcyhwbGFuT3JkZXIsIHRyYW5zcG9ydFdlZWtEYXksIHdlZWspO1xyXG4gICAgICBpZiAoZGF0YS5kYXRhID09PSAnZmFsc2UnICYmIHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uLmdldFRyYW5zYWN0aW9uQnlJZCh0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50VHJhbnNJZCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uc2F2ZVRyYW5zYWN0aW9uKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb24uY2hlY2tSZWZUcmFuc2FjdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlU3RhcnRUaW1lKHRyYW5zcG9ydFdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgY3VycmVudEhvdXI6IHN0cmluZyk6IERhdGUge1xyXG4gICAgbGV0IHN0YXJ0RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRyYW5zcG9ydFdlZWtEYXkuZGF0ZSk7XHJcbiAgICBsZXQgc3RhcnRUaW1lOiBudW1iZXIgPSBwYXJzZUludChjdXJyZW50SG91ci5zcGxpdCgnOicpWzBdKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRIb3VycyhzdGFydFRpbWUpO1xyXG4gICAgc3RhcnREYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoJzonKVsxXSkgPiAwID8gcGFyc2VJbnQoY3VycmVudEhvdXIuc3BsaXQoJzonKVsxXSkgOiAwKTtcclxuICAgIHN0YXJ0RGF0ZS5zZXRTZWNvbmRzKDApO1xyXG5cclxuICAgIHJldHVybiBzdGFydERhdGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlRW5kVGltZShzdGFydERhdGU6IERhdGUsIGN1cnJlbnRIb3VyOiBzdHJpbmcsIHBsYW5PcmRlcjogUGxhbk9yZGVyKTogRGF0ZSB7XHJcbiAgICBsZXQgZW5kVGltZTogRGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcblxyXG4gICAgbGV0IHNwbGl0SG91ciA9IGN1cnJlbnRIb3VyLnNwbGl0KCc6Jyk7XHJcbiAgICBjb25zdCBuZXdFbmRNaW51dGVzID0gc3BsaXRIb3VyWzFdID09PSAnMDAnID8gMzAgOiAwO1xyXG4gICAgY29uc3QgbmV3RW5kSG91ciA9IHNwbGl0SG91clsxXSA9PT0gJzMwJyA/IChwYXJzZUludChzcGxpdEhvdXJbMF0pICsgMSkgOiBwYXJzZUludChzcGxpdEhvdXJbMF0pO1xyXG4gICAgZW5kVGltZS5zZXRIb3VycyhuZXdFbmRIb3VyKTtcclxuICAgIGVuZFRpbWUuc2V0TWludXRlcyhuZXdFbmRNaW51dGVzKTtcclxuICAgIGxldCBhc3NlbWJseVRpbWUgPSB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS50b3RhbEFzc2VtYmx5VGltZShwbGFuT3JkZXIpICogNjAgKiAxMDAwO1xyXG4gICAgZW5kVGltZS5zZXRUaW1lKGVuZFRpbWUuZ2V0VGltZSgpICsgYXNzZW1ibHlUaW1lKTtcclxuXHJcbiAgICByZXR1cm4gZW5kVGltZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXI6IFBsYW5PcmRlciwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdKSB7XHJcbiAgICB0aGlzLnNob3dOb3RlRGlhbG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHRoaXMucGxhbm5pbmdQb3B1cFJlZikge1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYucGxhbk9yZGVyID0gcGxhbk9yZGVyO1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYudHJhbnNwb3J0RGF5ID0gdHJhbnNwb3J0RGF5O1xyXG4gICAgICB0aGlzLnBsYW5uaW5nUG9wdXBSZWYud2VlayA9IHdlZWs7XHJcbiAgICAgIHRoaXMucGxhbm5pbmdQb3B1cFJlZi50cmFuc2FjdGlvbiA9IHRoaXMuX3RyYW5zYWN0aW9uLmN1cnJlbnRUcmFuc2FjdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBdmFpbGFiaWxpdHlDaGVja2VkKHZhbHVlOiB7IHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCBhdmFpbGFibGU6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy5hdmFpbGFiaWxpdHkucHVzaCh2YWx1ZSk7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tBdmFpbGFibGUodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGxldCB0cmFuc3BvcnQgPSB0aGlzLmF2YWlsYWJpbGl0eS5maW5kKHRyYW5zcG9ydE9iamVjdCA9PiB0cmFuc3BvcnRPYmplY3QudHJhbnNwb3J0RGF5ID09PSB0cmFuc3BvcnREYXkpO1xyXG4gICAgcmV0dXJuIHRyYW5zcG9ydCAmJiAhdHJhbnNwb3J0LmF2YWlsYWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUaW1lQ2hhbmdlRXZlbnQodHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCBvYmo6IFBsYW5PcmRlcikge1xyXG4gICAgbGV0IG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdID0gd2VlaztcclxuICAgIGxldCBvcmRlcjogUGxhbk9yZGVyID0gdHJhbnNwb3J0RGF5LnBsYW5uZWRPcmRlcnMuZmluZChwbGFuT3JkZXIgPT4gcGxhbk9yZGVyLnRyYW5zSWQgPT09IG9iai50cmFuc0lkKTtcclxuICAgIG9yZGVyLnN0YXJ0VGltZSA9IG5ldyBEYXRlKG9ialsnc3RhcnRUaW1lJ10pO1xyXG4gICAgb3JkZXIuZW5kVGltZSA9IG5ldyBEYXRlKG9ialsnZW5kVGltZSddKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7b2xkV2Vlazogb2xkV2Vlaywgd2Vlazogd2VlaywgYWN0aW9uOiB0aGlzLnBsYW5uaW5nQWN0aW9ucy5QbGFuT3JkZXJ9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVNb3ZlRXZlbnQobW92ZURhdGE6IHtcclxuICAgIGhvdXI6IHN0cmluZyxcclxuICAgIHNjaGVkdWxlZE9iamVjdDogT2JqZWN0XHJcbiAgfSwgdHJhbnNwb3J0OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXksIHdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdLCB3ZWVrQXJyOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXVtdKSB7XHJcbiAgICBsZXQgcGxhbk9yZGVyOiBQbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbi5nZXRQbGFuT3JkZXIobW92ZURhdGEuc2NoZWR1bGVkT2JqZWN0WydvYmonXVsnaWQnXSk7XHJcbiAgICAvL3JlbW92ZSBmcm9tIG9sZCB0cmFuc3BvcnRcclxuICAgIHdlZWtBcnIuZm9yRWFjaCgoKHJvdzogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pID0+IHtcclxuICAgICAgcm93LmZvckVhY2goKHdlZWtEYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSkgPT4ge1xyXG4gICAgICAgIGlmICh3ZWVrRGF5Py5wbGFubmVkT3JkZXJzPy5maW5kKG9yZGVyID0+IG9yZGVyLnRyYW5zSWQgPT09IHBsYW5PcmRlci50cmFuc0lkKSkge1xyXG4gICAgICAgICAgd2Vla0RheS5wbGFubmVkT3JkZXJzLnNwbGljZSh3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuaW5kZXhPZihwbGFuT3JkZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChwbGFuT3JkZXIpIHtcclxuICAgICAgLy9yZXN0b3JlIG9yZGVyXHJcbiAgICAgIGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29uLnJlc3RvcmVEZWxpdmVyeVNldHRpbmdzKFtwbGFuT3JkZXJdKTtcclxuXHJcbiAgICAgIC8vc2V0IG5ldyBkYXRlIGZvciBvcmRlciBhbmQgcGxhbiBpdCBvbiBuZXcgdHJhbnNwb3J0XHJcbiAgICAgIGxldCBuZXdEYXRlOiBEYXRlID0gbmV3IERhdGUodHJhbnNwb3J0LmRhdGUpO1xyXG4gICAgICBsZXQgc3BsaXRUaW1lOiBzdHJpbmdbXSA9IG1vdmVEYXRhLmhvdXIuc3BsaXQoJzonKTtcclxuICAgICAgbmV3RGF0ZS5zZXRIb3VycyhwYXJzZUludChzcGxpdFRpbWVbMF0pKTtcclxuICAgICAgbmV3RGF0ZS5zZXRNaW51dGVzKHBhcnNlSW50KHNwbGl0VGltZVsxXSkpO1xyXG4gICAgICBuZXdEYXRlLnNldFNlY29uZHMoMCk7XHJcbiAgICAgIHBsYW5PcmRlci5zdGFydFRpbWUgPSBuZXdEYXRlO1xyXG4gICAgICBsZXQgZW5kRGF0ZSA9IG5ldyBEYXRlKHBsYW5PcmRlci5zdGFydFRpbWUpO1xyXG4gICAgICBwbGFuT3JkZXIuZW5kVGltZSA9IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmFkZE1pbnV0ZXMoZW5kRGF0ZSwgbW92ZURhdGEuc2NoZWR1bGVkT2JqZWN0WydvYmonXVsnaGVpZ2h0J10pO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnQpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnQsIHdlZWspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZU1vdmVOb3JtYWxFdmVudCh0cmFuc0lkOiBzdHJpbmcsIHRyYW5zcG9ydDogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgd2Vla0FycjogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W11bXSkge1xyXG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24uZ2V0UGxhbk9yZGVyKHBhcnNlSW50KHRyYW5zSWQpKTtcclxuICAgIC8vcmVtb3ZlIGZyb20gb2xkIHRyYW5zcG9ydFxyXG4gICAgd2Vla0Fyci5mb3JFYWNoKCgocm93OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkgPT4ge1xyXG4gICAgICByb3cuZm9yRWFjaCgod2Vla0RheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSA9PiB7XHJcbiAgICAgICAgaWYgKHdlZWtEYXk/LnBsYW5uZWRPcmRlcnM/LmZpbmQob3JkZXIgPT4gb3JkZXIudHJhbnNJZCA9PT0gcGxhbk9yZGVyLnRyYW5zSWQpKSB7XHJcbiAgICAgICAgICB3ZWVrRGF5LnBsYW5uZWRPcmRlcnMuc3BsaWNlKHdlZWtEYXkucGxhbm5lZE9yZGVycy5pbmRleE9mKHBsYW5PcmRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KSk7XHJcblxyXG4gICAgaWYgKHBsYW5PcmRlcikge1xyXG4gICAgICAvL3Jlc3RvcmUgb3JkZXJcclxuICAgICAgYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db24ucmVzdG9yZURlbGl2ZXJ5U2V0dGluZ3MoW3BsYW5PcmRlcl0pO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRyYW5zcG9ydE9yZGVycyh0cmFuc3BvcnQpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFNlcXVlbmNlT3JkZXJWYWx1ZShwbGFuT3JkZXIpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMucGxhbk9yZGVyTGluZXMocGxhbk9yZGVyLCB0cmFuc3BvcnQsIHdlZWspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVkaXRQbGFubmVkT3JkZXIocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5LCB3ZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSkge1xyXG4gICAgdGhpcy5vcGVuUGxhbm5pbmdQb3B1cChwbGFuT3JkZXIsIHRyYW5zcG9ydERheSwgd2Vlayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW92ZU9yZGVyVXAocGxhbk9yZGVyOiBQbGFuT3JkZXIsIHBsYW5uaW5nVHJhbnNwb3J0V2VlazogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10sIHRyYW5zcG9ydERheTogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5KSB7XHJcbiAgICBjb25zdCBvbGRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSA9IFtdO1xyXG4gICAgcGxhbm5pbmdUcmFuc3BvcnRXZWVrLmZvckVhY2godmFsID0+IG9sZFdlZWsucHVzaChPYmplY3QuYXNzaWduKHt9LCB2YWwpKSk7XHJcbiAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5yZW9yZGVySXRlbSh0cmFuc3BvcnREYXkucGxhbm5lZE9yZGVycywgcGxhbk9yZGVyLCAndXAnKTtcclxuICAgIHRoaXMudXBkYXRlUGxhbm5pbmdUcmFuc3BvcnRFdmVudC5lbWl0KHtvbGRXZWVrOiBvbGRXZWVrLCB3ZWVrOiBwbGFubmluZ1RyYW5zcG9ydFdlZWssIGFjdGlvbjogRGVsaXZlcnlQbGFubmluZ1VwZGF0ZUFjdGlvbnMuUGxhbk9yZGVyfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTW92ZU9yZGVyRG93bihwbGFuT3JkZXI6IFBsYW5PcmRlciwgcGxhbm5pbmdUcmFuc3BvcnRXZWVrOiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXlbXSwgdHJhbnNwb3J0RGF5OiBQbGFubmluZ1RyYW5zcG9ydFdlZWtEYXkpIHtcclxuICAgIGNvbnN0IG9sZFdlZWs6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheVtdID0gW107XHJcbiAgICBwbGFubmluZ1RyYW5zcG9ydFdlZWsuZm9yRWFjaCh2YWwgPT4gb2xkV2Vlay5wdXNoKE9iamVjdC5hc3NpZ24oe30sIHZhbCkpKTtcclxuICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLnJlb3JkZXJJdGVtKHRyYW5zcG9ydERheS5wbGFubmVkT3JkZXJzLCBwbGFuT3JkZXIsICdkb3duJyk7XHJcbiAgICB0aGlzLnVwZGF0ZVBsYW5uaW5nVHJhbnNwb3J0RXZlbnQuZW1pdCh7b2xkV2Vlazogb2xkV2Vlaywgd2VlazogcGxhbm5pbmdUcmFuc3BvcnRXZWVrLCBhY3Rpb246IERlbGl2ZXJ5UGxhbm5pbmdVcGRhdGVBY3Rpb25zLlBsYW5PcmRlcn0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFRyYW5zcG9ydERheSh0cmFuc3BvcnREYXk6IFBsYW5uaW5nVHJhbnNwb3J0V2Vla0RheSwgdHJhbnNwb3J0RGF5czogUGxhbm5pbmdUcmFuc3BvcnRXZWVrRGF5W10pIHtcclxuICAgIGxldCBpbmRleCA9IHRyYW5zcG9ydERheXMuaW5kZXhPZih0cmFuc3BvcnREYXkpO1xyXG4gICAgbGV0IHRpbGUgPSB0aGlzLnRpbGVzUXVlcnlMaXN0LmdldChpbmRleCk7XHJcblxyXG4gICAgaWYgKCF0cmFuc3BvcnREYXkuc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKCF0aWxlLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgdGlsZS5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0cmFuc3BvcnREYXlzLmZpbmQodHJhbnNwb3J0RGF5TGlzdEl0ZW0gPT4gdHJhbnNwb3J0RGF5TGlzdEl0ZW0uc2VsZWN0ZWQpICYmICF0cmFuc3BvcnREYXkuc2VsZWN0ZWQpIHtcclxuICAgICAgICAvL2Rlc2VsZWN0IG90aGVycyBpZiBub3Qgc2VsZWN0ZWRcclxuICAgICAgICB0cmFuc3BvcnREYXlzLmZpbHRlcih0cmFuc3BvcnREYXlMaXN0SXRlbSA9PiB0cmFuc3BvcnREYXlMaXN0SXRlbS5zZWxlY3RlZCkuZm9yRWFjaChzZWxlY3RlZFRyYW5zcG9ydExpc3RJdGVtID0+IHtcclxuICAgICAgICAgIHNlbGVjdGVkVHJhbnNwb3J0TGlzdEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zcG9ydERheS5zZWxlY3RlZCA9ICF0cmFuc3BvcnREYXkuc2VsZWN0ZWQ7XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmICh0cmFuc3BvcnREYXkuc2VsZWN0ZWQpIHtcclxuICAgICAgLy9maXJlIGV2ZW50IHNlbGVjdGVkIG91dHdhcmRzXHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2VsZWN0ZWRUcmFuc3BvcnREYXkubmV4dCggdHJhbnNwb3J0RGF5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UucmVzZXRUcmFuc3BvcnREYXlGaWx0ZXJlZE9yZGVycy5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -19,7 +19,6 @@ TransactionPlanningLinePlannedResourceComponent.decorators = [
|
|
|
19
19
|
selector: "co-transaction-planning-line-planned-resource",
|
|
20
20
|
template: `
|
|
21
21
|
<div class="row" (click)="handlePlannedResourceClicked()">
|
|
22
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.TruckContainerDuo)"></co-icon>
|
|
23
22
|
<span class="bold" [textContent]="plannedResource.planningStartTime | date: 'dd-MM-YYYY'"></span>
|
|
24
23
|
</div>
|
|
25
24
|
`,
|
|
@@ -34,4 +33,4 @@ TransactionPlanningLinePlannedResourceComponent.propDecorators = {
|
|
|
34
33
|
plannedResourceClickedEvent: [{ type: Output }],
|
|
35
34
|
showClass: [{ type: HostBinding, args: ["class.co-transaction-planning-line-planned-resource",] }]
|
|
36
35
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcGxhbm5pbmctbGluZS1wbGFubmVkLXJlc291cmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLWxpbmUvdHJhbnNhY3Rpb24tcGxhbm5pbmctbGluZS9jb21wb25lbnRzL3RyYW5zYWN0aW9uLXBsYW5uaW5nLWxpbmUtcGxhbm5lZC1yZXNvdXJjZS90cmFuc2FjdGlvbi1wbGFubmluZy1saW5lLXBsYW5uZWQtcmVzb3VyY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQVduRCxNQUFNLE9BQU8sK0NBQStDO0lBYTFELFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBWnJDLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBS25DLGdDQUEyQixHQUFvRCxJQUFJLFlBQVksRUFBcUMsQ0FBQztJQVE1SSxDQUFDO0lBTE0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtNLDRCQUE0QjtRQUNqQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5RCxDQUFDOzs7WUEzQkYsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwrQ0FBK0M7Z0JBQ3pELFFBQVEsRUFBRTs7OztLQUlUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7WUFYTyxnQkFBZ0I7Ozs4QkFjckIsS0FBSzswQ0FHTCxNQUFNO3dCQUdOLFdBQVcsU0FBQyxxREFBcUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1BsYW5uZWRSZXNvdXJjZUZvclRyYW5zYWN0aW9uTGluZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uZWQtcmVzb3VyY2UtZm9yLXRyYW5zYWN0aW9uLWxpbmUuYm8nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLXRyYW5zYWN0aW9uLXBsYW5uaW5nLWxpbmUtcGxhbm5lZC1yZXNvdXJjZVwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKGNsaWNrKT1cImhhbmRsZVBsYW5uZWRSZXNvdXJjZUNsaWNrZWQoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvbGRcIiBbdGV4dENvbnRlbnRdPVwicGxhbm5lZFJlc291cmNlLnBsYW5uaW5nU3RhcnRUaW1lIHwgZGF0ZTogJ2RkLU1NLVlZWVknXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uUGxhbm5pbmdMaW5lUGxhbm5lZFJlc291cmNlQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwbGFubmVkUmVzb3VyY2U6IFBsYW5uZWRSZXNvdXJjZUZvclRyYW5zYWN0aW9uTGluZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHBsYW5uZWRSZXNvdXJjZUNsaWNrZWRFdmVudDogRXZlbnRFbWl0dGVyPFBsYW5uZWRSZXNvdXJjZUZvclRyYW5zYWN0aW9uTGluZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBsYW5uZWRSZXNvdXJjZUZvclRyYW5zYWN0aW9uTGluZT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tcGxhbm5pbmctbGluZS1wbGFubmVkLXJlc291cmNlXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVQbGFubmVkUmVzb3VyY2VDbGlja2VkKCkge1xyXG4gICAgdGhpcy5wbGFubmVkUmVzb3VyY2VDbGlja2VkRXZlbnQuZW1pdCh0aGlzLnBsYW5uZWRSZXNvdXJjZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|