@schneideress/dashboardframework 0.0.219 → 0.0.220

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/bundles/schneideress-dashboardframework.umd.js +46 -40
  2. package/bundles/schneideress-dashboardframework.umd.js.map +1 -1
  3. package/bundles/schneideress-dashboardframework.umd.min.js +11 -11
  4. package/bundles/schneideress-dashboardframework.umd.min.js.map +1 -1
  5. package/esm2015/gridster/index.js +1 -1
  6. package/esm2015/gridster/lib/gridster.component.js +1 -1
  7. package/esm2015/gridster/lib/gridster.interface.js +1 -1
  8. package/esm2015/gridster/lib/gridster.module.js +1 -1
  9. package/esm2015/gridster/lib/gridsterCompact.service.js +1 -1
  10. package/esm2015/gridster/lib/gridsterConfig.constant.js +1 -1
  11. package/esm2015/gridster/lib/gridsterConfig.interface.js +1 -1
  12. package/esm2015/gridster/lib/gridsterConfigS.interface.js +1 -1
  13. package/esm2015/gridster/lib/gridsterDraggable.service.js +1 -1
  14. package/esm2015/gridster/lib/gridsterEmptyCell.service.js +1 -1
  15. package/esm2015/gridster/lib/gridsterItem.component.js +1 -1
  16. package/esm2015/gridster/lib/gridsterItem.interface.js +1 -1
  17. package/esm2015/gridster/lib/gridsterItemComponent.interface.js +1 -1
  18. package/esm2015/gridster/lib/gridsterPreview.component.js +1 -1
  19. package/esm2015/gridster/lib/gridsterPush.service.js +1 -1
  20. package/esm2015/gridster/lib/gridsterPushResize.service.js +1 -1
  21. package/esm2015/gridster/lib/gridsterRenderer.service.js +1 -1
  22. package/esm2015/gridster/lib/gridsterResizable.service.js +1 -1
  23. package/esm2015/gridster/lib/gridsterResizeEventType.interface.js +1 -1
  24. package/esm2015/gridster/lib/gridsterScroll.service.js +1 -1
  25. package/esm2015/gridster/lib/gridsterSwap.service.js +1 -1
  26. package/esm2015/gridster/lib/gridsterUtils.service.js +1 -1
  27. package/esm2015/lib/custom.notifier.options.js +1 -1
  28. package/esm2015/lib/ra-dashboard-area/ra.dashboard.area.js +3 -2
  29. package/esm2015/lib/ra-widget-container/ra.widget.container.component.js +1 -1
  30. package/esm2015/lib/ra.base.dashboard.filter.js +1 -1
  31. package/esm2015/lib/ra.base.dashboard.template.js +1 -1
  32. package/esm2015/lib/ra.dashbard.event.bus.js +1 -1
  33. package/esm2015/lib/ra.dashboard.module.js +1 -1
  34. package/esm2015/lib/ra.dashboard.responsive.service.js +1 -1
  35. package/esm2015/lib/ra.dashboard.service.js +1 -1
  36. package/esm2015/lib/ra.event.enum.js +1 -1
  37. package/esm2015/lib/ra.gridster.config.js +1 -1
  38. package/esm2015/public-api.js +1 -1
  39. package/esm2015/schneideress-dashboardframework.js +1 -1
  40. package/esm5/gridster/index.js +1 -1
  41. package/esm5/gridster/lib/gridster.component.js +1 -1
  42. package/esm5/gridster/lib/gridster.interface.js +1 -1
  43. package/esm5/gridster/lib/gridster.module.js +1 -1
  44. package/esm5/gridster/lib/gridsterCompact.service.js +1 -1
  45. package/esm5/gridster/lib/gridsterConfig.constant.js +1 -1
  46. package/esm5/gridster/lib/gridsterConfig.interface.js +1 -1
  47. package/esm5/gridster/lib/gridsterConfigS.interface.js +1 -1
  48. package/esm5/gridster/lib/gridsterDraggable.service.js +1 -1
  49. package/esm5/gridster/lib/gridsterEmptyCell.service.js +1 -1
  50. package/esm5/gridster/lib/gridsterItem.component.js +1 -1
  51. package/esm5/gridster/lib/gridsterItem.interface.js +1 -1
  52. package/esm5/gridster/lib/gridsterItemComponent.interface.js +1 -1
  53. package/esm5/gridster/lib/gridsterPreview.component.js +1 -1
  54. package/esm5/gridster/lib/gridsterPush.service.js +1 -1
  55. package/esm5/gridster/lib/gridsterPushResize.service.js +1 -1
  56. package/esm5/gridster/lib/gridsterRenderer.service.js +1 -1
  57. package/esm5/gridster/lib/gridsterResizable.service.js +1 -1
  58. package/esm5/gridster/lib/gridsterResizeEventType.interface.js +1 -1
  59. package/esm5/gridster/lib/gridsterScroll.service.js +1 -1
  60. package/esm5/gridster/lib/gridsterSwap.service.js +1 -1
  61. package/esm5/gridster/lib/gridsterUtils.service.js +1 -1
  62. package/esm5/lib/custom.notifier.options.js +1 -1
  63. package/esm5/lib/ra-dashboard-area/ra.dashboard.area.js +3 -2
  64. package/esm5/lib/ra-widget-container/ra.widget.container.component.js +1 -1
  65. package/esm5/lib/ra.base.dashboard.filter.js +1 -1
  66. package/esm5/lib/ra.base.dashboard.template.js +1 -1
  67. package/esm5/lib/ra.dashbard.event.bus.js +1 -1
  68. package/esm5/lib/ra.dashboard.module.js +1 -1
  69. package/esm5/lib/ra.dashboard.responsive.service.js +1 -1
  70. package/esm5/lib/ra.dashboard.service.js +1 -1
  71. package/esm5/lib/ra.event.enum.js +1 -1
  72. package/esm5/lib/ra.gridster.config.js +1 -1
  73. package/esm5/public-api.js +1 -1
  74. package/esm5/schneideress-dashboardframework.js +1 -1
  75. package/fesm2015/schneideress-dashboardframework.js +32 -31
  76. package/fesm2015/schneideress-dashboardframework.js.map +1 -1
  77. package/fesm5/schneideress-dashboardframework.js +32 -31
  78. package/fesm5/schneideress-dashboardframework.js.map +1 -1
  79. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterCompact.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { GridsterComponentInterface } from './gridster.interface';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterConfig.constant.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { CompactType, DisplayGrid, GridType } from './gridsterConfig.interface';
7
7
  /** @type {?} */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterConfig.interface.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /** @enum {string} */
7
7
  var GridType = {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterConfigS.interface.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /**
7
7
  * @record
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterDraggable.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable, NgZone } from '@angular/core';
7
7
  import { GridsterSwap } from './gridsterSwap.service';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterEmptyCell.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { GridsterUtils } from './gridsterUtils.service';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterItem.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Component, ElementRef, Host, Input, NgZone, Renderer2, ViewEncapsulation } from '@angular/core';
7
7
  import { GridsterDraggable } from './gridsterDraggable.service';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterItem.interface.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /**
7
7
  * @record
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterItemComponent.interface.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /**
7
7
  * @abstract
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterPreview.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Component, ElementRef, Host, Renderer2, ViewEncapsulation } from '@angular/core';
7
7
  import { GridsterComponent } from './gridster.component';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterPush.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { GridsterItemComponentInterface } from './gridsterItemComponent.interface';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterPushResize.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { GridsterItemComponentInterface } from './gridsterItemComponent.interface';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterRenderer.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import * as tslib_1 from "tslib";
7
7
  import { Injectable } from '@angular/core';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterResizable.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable, NgZone } from '@angular/core';
7
7
  import { cancelScroll, scroll } from './gridsterScroll.service';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterResizeEventType.interface.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /**
7
7
  * @record
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterScroll.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /** @type {?} */
7
7
  var scrollSensitivity;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterSwap.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { GridsterItemComponentInterface } from './gridsterItemComponent.interface';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: gridster/lib/gridsterUtils.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  var GridsterUtils = /** @class */ (function () {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/custom.notifier.options.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /** @type {?} */
7
7
  export var customNotifierOptions = {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra-dashboard-area/ra.dashboard.area.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Input, Component, NgZone, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core';
7
7
  import { RaDashboardService } from '../ra.dashboard.service';
@@ -56,6 +56,7 @@ var RADashboardArea = /** @class */ (function () {
56
56
  function () {
57
57
  _this.gridcellHeight = _this.options.api.getCurrentRowHeight();
58
58
  _this.domResized = !_this.domResized;
59
+ _this.setAreaHeight();
59
60
  }), 1000);
60
61
  }
61
62
  else {
@@ -848,4 +849,4 @@ if (false) {
848
849
  */
849
850
  RADashboardArea.prototype.permissionService;
850
851
  }
851
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZGFzaGJvYXJkLmFyZWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS1kYXNoYm9hcmQtYXJlYS9yYS5kYXNoYm9hcmQuYXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUE0QixNQUFNLEVBQWEsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqSyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVsRjtJQWtDRSx5QkFBb0IsZ0JBQW9DLEVBQzlDLE1BQWMsRUFDZCxVQUE4QixFQUM5QixnQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsaUJBQStDLEVBQy9DLGlCQUFzQztRQU41QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBOEI7UUFDL0Msc0JBQWlCLEdBQWpCLGlC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SyxTQUFDLGVBQWU7c0NBQ3JCLEtBQUssU0FBQyxXQUFXOytCQUNqQixLQUFLLFNBQUMsZUFBZTs4QkFDckIsS0FBSyxTQUFDLGNBQWM7NEJBQ3BCLEtBQUssU0FBQyxZQUFZO3NDQUNsQixNQUFNOzhCQUVOLFNBQVMsU0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztJQStaN0Msc0JBQUM7Q0FBQSxBQS9iRCxJQStiQztTQTFiWSxlQUFlOzs7SUFFMUIscUNBQTBDOztJQUMxQyxrQ0FBK0I7O0lBQy9CLHFDQUFnQzs7SUFDaEMseUNBQWtDOztJQUNsQyxzQ0FBK0I7Ozs7O0lBRS9CLHlDQUE0Qjs7Ozs7SUFDNUIsK0NBQWtDOzs7OztJQUNsQyw0Q0FBK0I7Ozs7O0lBQy9CLHlDQUE0Qjs7Ozs7SUFDNUIsaURBQW9DOzs7OztJQUNwQyx5Q0FBd0M7O0lBQ3hDLHFDQUFtQzs7SUFDbkMsNkNBQTJDOztJQUMzQyx3Q0FBc0M7O0lBRXRDLDBDQUFvRDs7SUFDcEQsa0NBQW1DOztJQUNuQyx1Q0FBMEM7O0lBQzFDLDhDQUE2RDs7SUFDN0QsdUNBQWlEOztJQUNqRCxzQ0FBK0M7O0lBQy9DLG9DQUEyQzs7SUFDM0MsOENBQW1EOztJQUVuRCxzQ0FBcUU7Ozs7O0lBRXpELDJDQUE0Qzs7Ozs7SUFDdEQsaUNBQXNCOzs7OztJQUN0QixxQ0FBc0M7Ozs7O0lBQ3RDLDJDQUE0Qzs7Ozs7SUFDNUMsbUNBQWlDOzs7OztJQUNqQyw0Q0FBdUQ7Ozs7O0lBQ3ZELDRDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBPbkluaXQsIENvbXBvbmVudCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBOZ1pvbmUsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBHcmlkc3RlckNvbmZpZywgR3JpZHN0ZXJJdGVtIH0gZnJvbSAnLi4vLi4vZ3JpZHN0ZXIvaW5kZXgnO1xyXG5pbXBvcnQgeyBSYURhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuLi9yYS5kYXNoYm9hcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJBRGFzaGJvYXJkRXZlbnRCdXMgfSBmcm9tICcuLi9yYS5kYXNoYmFyZC5ldmVudC5idXMnO1xyXG5pbXBvcnQgeyBSQUV2ZW50IH0gZnJvbSAnLi4vcmEuZXZlbnQuZW51bSc7XHJcbmltcG9ydCB7IElXaWRnZXRJbmZvLCBJQXBwQ29uZmlnIH0gZnJvbSAnQHNjaG5laWRlcmVzcy93aWRnZXRmcmFtZXdvcmsnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1ub3RpZmllcic7XHJcbmltcG9ydCB7IFJBVHJhbnNsYXRlU2VydmljZSwgUkFQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0BzY2huZWlkZXJlc3MvcmEtY29tbW9uJztcclxuaW1wb3J0IHsgUkFEYXNoYm9hcmRSZXNwb25zaXZlU2VydmljZSB9IGZyb20gJy4uL3JhLmRhc2hib2FyZC5yZXNwb25zaXZlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyYS1kYXNoYm9hcmQtYXJlYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhLmRhc2hib2FyZC5hcmVhLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JhLmRhc2hib2FyZC5hcmVhLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSQURhc2hib2FyZEFyZWEgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHdpZGdldExpc3QgPSBBcnJheTxHcmlkc3Rlckl0ZW0+KCk7XHJcbiAgcHVibGljIG9wdGlvbnM6IEdyaWRzdGVyQ29uZmlnO1xyXG4gIHB1YmxpYyBncmlkaGVpZ2h0OiBudW1iZXIgPSAzMDA7XHJcbiAgcHVibGljIGdyaWRjZWxsSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyB1c2VyV2lkZ2V0czogYW55W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjb25pZmdBZGRDbGljazogYW55O1xyXG4gIHByaXZhdGUgcmVhcnJhbmdlV2lkZ2V0Q2xpY2s6IGFueTtcclxuICBwcml2YXRlIHdpZGdldERlbGV0ZUV2ZW50OiBhbnk7XHJcbiAgcHJpdmF0ZSB3aWRnZXRBZGRFdmVudDogYW55O1xyXG4gIHByaXZhdGUgd2lkZ2V0TGlicmFyeURvbmVDbGljazogYW55O1xyXG4gIHByaXZhdGUgaXNXaWRnZXRMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZG9tUmVzaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93RW1wdHlEYXNoYm9hcmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNXaWRnZXRNZ21udDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoJ3VzZXItZGFzaGJvYXJkLWlkJykgdXNlckRhc2hib2FyZElkOiBudW1iZXI7XHJcbiAgQElucHV0KCdhcmVhLWtleScpIGFyZWFLZXk6IHN0cmluZztcclxuICBASW5wdXQoJ2dsb2JhbC1maWx0ZXInKSBnbG9iYWxGaWx0ZXI6IGFueTtcclxuICBASW5wdXQoJ2V2ZW50LWJ1cycpIHJhRGFzaGJvYXJkRXZlbnRCdXM6IFJBRGFzaGJvYXJkRXZlbnRCdXM7XHJcbiAgQElucHV0KCd3aWRnZXQtaGVpZ2h0Jykgd2lkZ2V0SGVpZ2h0OiBudW1iZXIgPSAyO1xyXG4gIEBJbnB1dCgnd2lkZ2V0LXdpZHRoJykgd2lkZ2V0V2lkdGg6IG51bWJlciA9IDQ7XHJcbiAgQElucHV0KCdhcHAtY29uZmlnJykgYXBwQ29uZmlnOiBJQXBwQ29uZmlnO1xyXG4gIEBPdXRwdXQoKSBoaWRlRGFzaGJvYXJkQmFubmVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdncmlkV3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBncmlkV3JhcHBlcjogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXNoYm9hcmRTZXJ2aWNlOiBSYURhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBuZ3hTZXJ2aWNlOiBOZ3hVaUxvYWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFJBVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpZXI6IE5vdGlmaWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2l2ZVNlcnZpY2U6IFJBRGFzaGJvYXJkUmVzcG9uc2l2ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBSQVBlcm1pc3Npb25TZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNXaWRnZXRNZ21udCA9IHRoaXMucGVybWlzc2lvblNlcnZpY2UuaGFzUGVybWlzc2lvbigncmEud2lkZ2V0bWFuYWdlbWVudCcpO1xyXG4gICAgdGhpcy5pbml0aWF0ZUdyaWRzdGVyQ29uZmlnKCk7XHJcblxyXG4gICAgdGhpcy5yZXNwb25zaXZlU2VydmljZS5yZXNpemVkLnN1YnNjcmliZSgoaXNEZXNrdG9wKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdpbiByZXNwb25zaXZlIHNlcnZpY2Ugc3Vic2NyaWJlJyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGlzRGVza3RvcCk7XHJcblxyXG4gICAgICBpZiAoaXNEZXNrdG9wKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRjZWxsSGVpZ2h0ID0gdGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCk7XHJcbiAgICAgICAgICB0aGlzLmRvbVJlc2l6ZWQgPSAhdGhpcy5kb21SZXNpemVkO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLndpZGdldExpc3QgPSBbXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmFwaS5vcHRpb25zQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMudXNlcldpZGdldHMpIHtcclxuICAgICAgICAgICAgdGhpcy53aWRnZXRMaXN0ID0gdGhpcy5tYXBPYmplY3RMaXN0VG9Hcmlkc3Rlckl0ZW1MaXN0KHRoaXMudXNlcldpZGdldHMpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkV2lkZ2V0cyh0aGlzLnVzZXJEYXNoYm9hcmRJZCwgdGhpcy5hcmVhS2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZG9tUmVzaXplZCA9ICF0aGlzLmRvbVJlc2l6ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1dpZGdldE1nbW50ID0gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyYS53aWRnZXRtYW5hZ2VtZW50Jyk7XHJcbiAgICBpZiAodGhpcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIHRoaXMuYXBwQ29uZmlnICYmICF0aGlzLmlzV2lkZ2V0TG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuaXNXaWRnZXRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRXaWRnZXRzKHRoaXMudXNlckRhc2hib2FyZElkLCB0aGlzLmFyZWFLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnJhRGFzaGJvYXJkRXZlbnRCdXMgJiYgY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICB0aGlzLmluaXRpdGF0ZUV2ZW50QnVzU3Vic2NyaXRpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyBzZXQgR3JpZHN0ZXJDb25maWcgKi9cclxuICBwdWJsaWMgaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpIHtcclxuICAgIC8qKlRvIG92ZXJyaWRlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMgdG8gdGhlIGdyaWRzdGVyIGNvbnRyb2wgKi9cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJDb25maWcodGhpcy5pc1dpZGdldE1nbW50KTtcclxuICAgIHRoaXMub3B0aW9ucy5pbml0Q2FsbGJhY2sgPSAoZ3JpZHN0ZXI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFwaSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZGNlbGxIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMub3B0aW9ucy5pdGVtQ2hhbmdlQ2FsbGJhY2sgPSAoaXRlbTogR3JpZHN0ZXJJdGVtKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgICBpZiAoaXRlbS53aWRnZXRJbmZvICYmIGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVdpZGdldFBvc2l0aW9uKGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIGluaXRpYXRlIGV2ZW50YnVzIHN1YnNjdGlwdGlvbnMgKi9cclxuICBpbml0aXRhdGVFdmVudEJ1c1N1YnNjcml0aW9ucygpIHtcclxuICAgIHRoaXMud2lkZ2V0RGVsZXRlRXZlbnQgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuV2lkZ2V0RGVsZXRlKS5zdWJzY3JpYmUoKGluc3RhbmNlSWQpID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpZGdldChpbnN0YW5jZUlkLCB0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLndpZGdldEFkZEV2ZW50ID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LkFkZFdpZGdldCkuc3Vic2NyaWJlKCh3aWRnZXRJbmZvKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3B5V2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29uaWZnQWRkQ2xpY2sgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuQ29uZmlnQWRkQ2xpY2spLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkV2lkZ2V0KGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVhcnJhbmdlV2lkZ2V0Q2xpY2sgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuUmVhcnJhbmdlQ2xpY2tlZCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFycmFuZ2VXaWRnZXRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy53aWRnZXRMaWJyYXJ5RG9uZUNsaWNrID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LndpZGdldExpYnJhcnlEb25lQ2xpY2spLnN1YnNjcmliZSgod2lkZ2V0TGlzdCkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIGlmICh3aWRnZXRMaXN0KSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFdpZGdldExpc3RUb0dyaWRzdGVyKHdpZGdldExpc3QsIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHRlbXAgZml4LSByZWN1cnNpdmUgbWV0aG9kIHRvIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBpdGVtc1xyXG4gICAqIGFuZCBhZGQgdGhlbSB0byBncmlkc3RlciBpbiB0aGUgZ2l2ZW4gb3JkZXJcclxuICAgKiBAcGFyYW0gd2lkZ2V0TGlzdCAgLWxpc3Qgb2Ygd2lkZ2V0c1xyXG4gICAqIEBwYXJhbSBpbmRleCAtaW5kZXggb2YgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBhZGRXaWRnZXRMaXN0VG9Hcmlkc3Rlcih3aWRnZXRMaXN0OiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGxldCBhcmVhQ29udGV4dCA9IHRoaXM7XHJcbiAgICBsZXQgaW5kZXhWYWwgPSBpbmRleCArIDE7XHJcbiAgICBpZiAoaW5kZXggPiB3aWRnZXRMaXN0Lmxlbmd0aCAtIDEpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoaW5kZXggPT0gMCkge1xyXG4gICAgICAgIGFyZWFDb250ZXh0LmFkZFdpZGdldCh3aWRnZXRMaXN0W2luZGV4XSk7XHJcbiAgICAgICAgYXJlYUNvbnRleHQuYWRkV2lkZ2V0TGlzdFRvR3JpZHN0ZXIod2lkZ2V0TGlzdCwgaW5kZXhWYWwpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgYXJlYUNvbnRleHQuYWRkV2lkZ2V0KHdpZGdldExpc3RbaW5kZXhdKTtcclxuICAgICAgICAgIGFyZWFDb250ZXh0LmFkZFdpZGdldExpc3RUb0dyaWRzdGVyKHdpZGdldExpc3QsIGluZGV4VmFsKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25pZmdBZGRDbGljaylcclxuICAgICAgdGhpcy5jb25pZmdBZGRDbGljay51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLndpZGdldEFkZEV2ZW50KVxyXG4gICAgICB0aGlzLndpZGdldEFkZEV2ZW50LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZ2V0RGVsZXRlRXZlbnQpXHJcbiAgICAgIHRoaXMud2lkZ2V0RGVsZXRlRXZlbnQudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRMaWJyYXJ5RG9uZUNsaWNrKVxyXG4gICAgICB0aGlzLndpZGdldExpYnJhcnlEb25lQ2xpY2sudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZWFycmFuZ2VXaWRnZXRDbGljaylcclxuICAgICAgdGhpcy5yZWFycmFuZ2VXaWRnZXRDbGljay51bnN1YnNjcmliZSgpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlRvIHVwZGF0ZSBwb3NpdGlvbi9kaW1lbnRpb24gb2YgYWxsIHdpZGdldHMgaW4gdGhlIGFyZWEgKi9cclxuICB1cGRhdGVXaWRnZXRzKCkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZVdpZGdldHModGhpcy5mb3JtYXRXaWRnZXREYXRhRm9yUG9zaXRpb25EZXRhaWxzKHRoaXMubWFwR3JpZHN0ZXJMaXN0VG9PYmplY3QodGhpcy53aWRnZXRMaXN0KSksXHJcbiAgICAgIHRoaXMuYXBwQ29uZmlnKS5zdWJzY3JpYmUod2lkZ2V0cyA9PiB7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipUbyB1cGRhdGUgd2lkZ2V0IGRpbWVuc2lvbnMgKi9cclxuICB1cGRhdGVXaWRnZXRQb3NpdGlvbih3aWRnZXRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuXHJcbiAgICBsZXQgd2lkZ2V0RmlsdGVyZWRMaXN0ID0gW107XHJcbiAgICBsZXQgd2lkZ2V0ID0gdGhpcy53aWRnZXRMaXN0LmZpbHRlcihmaWx0ZXJlZCA9PiBmaWx0ZXJlZC53aWRnZXRJbmZvICYmIGZpbHRlcmVkLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCA9PSB3aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgd2lkZ2V0RmlsdGVyZWRMaXN0LnB1c2god2lkZ2V0WzBdKTtcclxuICAgICAgbGV0IHdpZGdldExpc3QgPSB0aGlzLm1hcEdyaWRzdGVyTGlzdFRvT2JqZWN0KHdpZGdldEZpbHRlcmVkTGlzdCk7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGRhdGVXaWRnZXRzKHRoaXMuZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyh3aWRnZXRMaXN0KSwgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXRzID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlRvIHJlc3RyaWN0IHJlcXVlc3QgcGF5bG9hZCB0byBiZSBvZiBtaW4gc2l6ZSAocG9zaXRpb24gJiBzaXplIGRldGFpbHMpICovXHJcbiAgZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyh3aWRnZXRJdGVtTGlzdDogSVdpZGdldEluZm9bXSkge1xyXG4gICAgbGV0IGl0ZW1MaXN0OiBhbnkgPSBbXTtcclxuICAgIHdpZGdldEl0ZW1MaXN0LmZvckVhY2goZnVuY3Rpb24gKHdpZGdldEl0ZW0pIHtcclxuICAgICAgbGV0IGl0ZW0gPSB7fSBhcyBJV2lkZ2V0SW5mbztcclxuICAgICAgaXRlbS53aWRnZXRJbnN0YW5jZUlkID0gd2lkZ2V0SXRlbS53aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgICBpdGVtLnBvc2l0aW9uX3ggPSB3aWRnZXRJdGVtLnBvc2l0aW9uX3g7XHJcbiAgICAgIGl0ZW0ucG9zaXRpb25feSA9IHdpZGdldEl0ZW0ucG9zaXRpb25feTtcclxuICAgICAgaXRlbS53aWR0aCA9IHdpZGdldEl0ZW0ud2lkdGg7XHJcbiAgICAgIGl0ZW0uaGVpZ2h0ID0gd2lkZ2V0SXRlbS5oZWlnaHQ7XHJcbiAgICAgIGl0ZW1MaXN0LnB1c2goaXRlbSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpdGVtTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKiBUbyByZXRyaWV2ZSB3aWRnZXRzIGJhc2VkIG9uIHVzZXJEYXNoYm9hcmRpZCBhbmQgYXJlYSBuYW1lICovXHJcbiAgbG9hZFdpZGdldHModXNlckRhc2hib2FySWQ6IG51bWJlciwgYXJlYUtleTogc3RyaW5nKSB7XHJcblxyXG4gICAgbGV0IHdpZGdldEluZm8gPSA8SVdpZGdldEluZm8+e1xyXG4gICAgICBkYXNoYm9hcmRJZDogdXNlckRhc2hib2FySWQudG9TdHJpbmcoKSxcclxuICAgICAgZGFzaGJvYXJkQXJlYUtleTogYXJlYUtleVxyXG4gICAgfVxyXG4gICAgdGhpcy53aWRnZXRMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0V2lkZ2V0c0J5RGFzaGJvYXJkQXJlYSh3aWRnZXRJbmZvLCB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xyXG5cclxuICAgICAgdGhpcy51c2VyV2lkZ2V0cyA9IHdpZGdldHM7XHJcblxyXG4gICAgICBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLndpZGdldExpc3QgPSB0aGlzLm1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3Qod2lkZ2V0cyk7XHJcbiAgICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuSGlkZURhc2hib2FyZEJhbm5lciwgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKiogVG8gc2V0IEFyZWEoR3JpZHN0ZXIpIGhlaWdodCBkeW5hbWljYWxseSBhcyB3aWRnZXRzIGFyZSBhZGRlZC9yZW1vdmVkICovXHJcbiAgc2V0QXJlYUhlaWdodCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2JpbGVCcmVha3BvaW50ID4gdGhpcy5ncmlkV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB7XHJcbiAgICAgICAgaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhcmVhU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgbGV0IGFyZWFIZWlnaHQgPSAwO1xyXG4gICAgICBsZXQgY3VyUm93SGVpZ2h0ID0gMDtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBjdXJSb3dIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQgPSB0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICB0aGlzLndpZGdldExpc3QuZm9yRWFjaCgodCkgPT4ge1xyXG4gICAgICAgIGxldCBjdXJyZW50SGVpZ2h0ID0gdC55ICsgdC5yb3dzO1xyXG4gICAgICAgIGlmIChjdXJyZW50SGVpZ2h0ID4gYXJlYVNjcm9sbEhlaWdodCkge1xyXG4gICAgICAgICAgYXJlYVNjcm9sbEhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjdXJSb3dIZWlnaHQgPT0gMCkge1xyXG4gICAgICAgICAgY3VycmVudEhlaWdodCA9IHRoaXMud2lkZ2V0TGlzdFswXS5jdXJSb3dIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHQud2lkZ2V0SW5mby5yb3dIZWlnaHQgPSBjdXJSb3dIZWlnaHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdyaWRjZWxsSGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFwaSkge1xyXG4gICAgICAgIGFyZWFIZWlnaHQgPSBhcmVhU2Nyb2xsSGVpZ2h0ICogdGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCkgKyAxMDA7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFyZWFTY3JvbGxIZWlnaHRNb2IgPSAwO1xyXG4gICAgICBpZiAoaXNNb2JpbGUpIHtcclxuICAgICAgICBhcmVhU2Nyb2xsSGVpZ2h0TW9iID0gdGhpcy53aWRnZXRMaXN0Lmxlbmd0aCAqIDMwMCArIDIwMDtcclxuICAgICAgICBhcmVhSGVpZ2h0ID0gYXJlYVNjcm9sbEhlaWdodE1vYjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYXJlYUhlaWdodCA8IDYwMCkge1xyXG4gICAgICAgIGFyZWFIZWlnaHQgPSA2MDA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ncmlkaGVpZ2h0ID0gYXJlYUhlaWdodDtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvKiogVG8gcmVtb3ZlIGEgd2lkZ2V0IGluc3RhbmNlIGZyb20gZGFzaGJvYXJkIGFuZCB0byBzYXZlIGluZm8gaW4gZGF0YWJhc2UgKi9cclxuICBkZWxldGVXaWRnZXQod2lkZ2V0SW5zdGFuY2VJZDogYW55LCBpc2FsZXJ0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMud2lkZ2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkID09PSB3aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoZ3JpZHN0ZXJJdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IHdpZGdldCA9IHRoaXMudXNlcldpZGdldHMuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0ud2lkZ2V0SW5zdGFuY2VJZCA9PT0gd2lkZ2V0SW5zdGFuY2VJZDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh3aWRnZXQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMudXNlcldpZGdldHMuc3BsaWNlKHRoaXMudXNlcldpZGdldHMuaW5kZXhPZih3aWRnZXRbMF0pLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy53aWRnZXRMaXN0LnNwbGljZSh0aGlzLndpZGdldExpc3QuaW5kZXhPZihncmlkc3Rlckl0ZW1bMF0pLCAxKTtcclxuICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgIGlmICghaXNhbGVydERpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmllci5ub3RpZnkoJ3N1Y2Nlc3MnLCBcIiBcIiArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5XaWRnZXR0ZXh0JykgKyBcIiBcIiArIGdyaWRzdGVySXRlbVswXS53aWRnZXRJbmZvLndpZGdldFRpdGxlICsgXCIgXCIgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZGVsZXRlZFN1Y2Nlc2Z1bGx5JykgKyBcIiBcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID0gdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCB0aGlzLnNob3dFbXB0eURhc2hib2FyZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyByZWFycmFuZ2Ugd2lkZ2V0cyBwb3NpdGlvbiBpbiB0aGUgZGFzaGJvYXJkLCBjb21wYWN0TGVmdCZVcCxjb21wYWN0TGVmdCxjb21wYWN0VXAsZXRjKi9cclxuICByZWFycmFuZ2VXaWRnZXRzKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHNbaV0ucG9zaXRpb25feCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHNbaV0ucG9zaXRpb25feSA9IDA7XHJcbiAgICAgIHRoaXMud2lkZ2V0TGlzdCA9IHRoaXMubWFwT2JqZWN0TGlzdFRvR3JpZHN0ZXJJdGVtTGlzdCh0aGlzLnVzZXJXaWRnZXRzKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqVG8gYWRkIHdpZGdldCBpbnN0YW5jZSB0byB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgcG9zaXRpb24gYW5kIHRvIG1ha2UgY2hhbmdlcyBpblxyXG4gICAqIGRhc2hib2FyZCBhcmVhLlxyXG4gICAqL1xyXG4gIGFkZFdpZGdldChkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEuaGVpZ2h0ID0gdGhpcy53aWRnZXRIZWlnaHQ7XHJcbiAgICBkYXRhLndpZHRoID0gdGhpcy53aWRnZXRXaWR0aDtcclxuXHJcblxyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCBmYWxzZSk7XHJcbiAgICBpZiAoZGF0YS53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGEud2lkZ2V0U2V0dGluZ3MgPT09ICdzdHJpbmcnKVxyXG4gICAgICAgIGRhdGEud2lkZ2V0U2V0dGluZ3MgPSBKU09OLnBhcnNlKGRhdGEud2lkZ2V0U2V0dGluZ3MpO1xyXG5cclxuICAgICAgaWYgKGRhdGEud2lkZ2V0U2V0dGluZ3MuZGVmYXVsdENvbHMpIHtcclxuICAgICAgICBkYXRhLndpZHRoID0gZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Q29scztcclxuICAgICAgfVxyXG4gICAgICBpZiAoZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Um93cykge1xyXG4gICAgICAgIGRhdGEuaGVpZ2h0ID0gZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Um93cztcclxuICAgICAgfVxyXG4gICAgICBkYXRhLndpZGdldFNldHRpbmdzID0gbnVsbDtcclxuICAgIH1cclxuICAgIGRhdGEgPSB0aGlzLnNldFBvc2l0aW9ucyhkYXRhKTtcclxuXHJcbiAgICAvKiogdG8gZmluZCB0aGUgYXZhaWxhYmxlIHBvc2l0aW9uIGluIGdyaWRzdGVyLCB0ZW1wIGNvbW1lbnRpbmcgdGhlIGNvZGUtcmV0dXJuaW5nIGhpZ2hlciB5IHZhbHVlIHRoYW4gbm9ybWFsICovXHJcbiAgICBkYXRhLmRhc2hib2FyZEFyZWFLZXkgPSB0aGlzLmFyZWFLZXk7XHJcbiAgICBkYXRhLmRhc2hib2FyZElkID0gdGhpcy51c2VyRGFzaGJvYXJkSWQ7XHJcbiAgICB0aGlzLm5neFNlcnZpY2Uuc3RhcnQoKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5hZGRXaWRnZXQoZGF0YSwgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXQgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJXaWRnZXRzLnB1c2god2lkZ2V0KTtcclxuICAgICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJJdGVtKHdpZGdldCk7XHJcbiAgICAgIHRoaXMud2lkZ2V0TGlzdC5wdXNoKGdyaWRzdGVySXRlbSk7XHJcbiAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBsZXQgY3VyUm93SGVpZ2h0OiBudW1iZXIgPSBOdW1iZXIodGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCkpO1xyXG4gICAgICAgIGlmIChjdXJSb3dIZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICB3aWRnZXQucm93SGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5ncmlkY2VsbEhlaWdodCA9IGN1clJvd0hlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHdpZGdldEluc3RhbmNlSWQgPSAwO1xyXG4gICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC53aWRnZXRJbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2VJZCA9IHdpZGdldC53aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgICAgIC8qKlRvIHNhdmUgYWRkZWQgd2lkZ2V0IHBvc2l0aW9uIGluIGRiICovXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV2lkZ2V0UG9zaXRpb24od2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuV2lkZ2V0QWRkZWQsIHdpZGdldCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UG9zaXRpb25zKGRhdGE6IGFueSkge1xyXG4gICAgZGF0YS5wb3NpdGlvbl94ID0gMDtcclxuICAgIGRhdGEucG9zaXRpb25feSA9IDA7XHJcbiAgICBpZiAoIXRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICBpZiAodGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHdpZGdldCA9IHRoaXMudXNlcldpZGdldHNbdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBpZiAod2lkZ2V0LnBvc2l0aW9uX3ggKyB3aWRnZXQud2lkdGggPiAodGhpcy5yZXNwb25zaXZlU2VydmljZS5tYXhDb2xzRGVza3RvcCAvIDIpKSB7XHJcbiAgICAgICAgICBkYXRhLnBvc2l0aW9uX3kgPSB3aWRnZXQucG9zaXRpb25feSArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZGF0YS5wb3NpdGlvbl95ID0gd2lkZ2V0LnBvc2l0aW9uX3k7XHJcbiAgICAgICAgICBkYXRhLnBvc2l0aW9uX3ggPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLm1heENvbHNEZXNrdG9wIC0gKHdpZGdldC5wb3NpdGlvbl94ICsgd2lkZ2V0LndpZHRoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIGFkZCB3aWRnZXQgdG8gY3VycmVudCB3aWRnZXQgbGlzdCAsaW52b2tlZCBmcm9tIGNvcHkgd2lkZ2V0IHdpbmRvdyovXHJcbiAgY29weVdpZGdldChkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEgPSB0aGlzLnNldFBvc2l0aW9ucyhkYXRhKTtcclxuICAgIGlmICghdGhpcy5yZXNwb25zaXZlU2VydmljZS5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGRhdGVXaWRnZXRzKHRoaXMuZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyhbZGF0YV0pLCB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMudXNlcldpZGdldHMucHVzaChkYXRhKTtcclxuICAgIGxldCBncmlkc3Rlckl0ZW0gPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVySXRlbShkYXRhKTtcclxuICAgIHRoaXMud2lkZ2V0TGlzdC5wdXNoKGdyaWRzdGVySXRlbSk7XHJcbiAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuICB9XHJcblxyXG4gIG1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3Qod2lkZ2V0TGlzdDogQXJyYXk8SVdpZGdldEluZm8+KSB7XHJcbiAgICBsZXQgd2lkZ2V0QXJyYXkgPSBBcnJheTxHcmlkc3Rlckl0ZW0+KCk7XHJcbiAgICB3aWRnZXRMaXN0LmZvckVhY2god2lkZ2V0ID0+IHtcclxuICAgICAgd2lkZ2V0QXJyYXkucHVzaCh0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVySXRlbSh3aWRnZXQpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHdpZGdldEFycmF5O1xyXG4gIH1cclxuXHJcbiAgbWFwR3JpZHN0ZXJJdGVtVG9PYmplY3Qod2lkZ2V0SXRlbTogR3JpZHN0ZXJJdGVtKSB7XHJcbiAgICBsZXQgd2lkZ2V0OiBJV2lkZ2V0SW5mbztcclxuICAgIHdpZGdldCA9IHdpZGdldEl0ZW0ud2lkZ2V0SW5mbztcclxuICAgIHdpZGdldC5oZWlnaHQgPSB3aWRnZXRJdGVtLnJvd3M7XHJcbiAgICB3aWRnZXQud2lkdGggPSB3aWRnZXRJdGVtLmNvbHM7XHJcbiAgICB3aWRnZXQucG9zaXRpb25feCA9IHdpZGdldEl0ZW0ueDtcclxuICAgIHdpZGdldC5wb3NpdGlvbl95ID0gd2lkZ2V0SXRlbS55O1xyXG4gICAgd2lkZ2V0LnJvd0hlaWdodCA9IHdpZGdldEl0ZW0uY3VyUm93SGVpZ2h0O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIG1hcEdyaWRzdGVyTGlzdFRvT2JqZWN0KHdpZGdldEl0ZW1MaXN0OiBBcnJheTxHcmlkc3Rlckl0ZW0+KSB7XHJcbiAgICBsZXQgd2lkZ2V0TGlzdEFycmF5ID0gQXJyYXk8SVdpZGdldEluZm8+KCk7XHJcbiAgICB3aWRnZXRJdGVtTGlzdC5mb3JFYWNoKHdpZGdldCA9PiB7XHJcbiAgICAgIHdpZGdldExpc3RBcnJheS5wdXNoKHRoaXMubWFwR3JpZHN0ZXJJdGVtVG9PYmplY3Qod2lkZ2V0KSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB3aWRnZXRMaXN0QXJyYXk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTmV3V2lkZ2V0KCkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5BZGROZXdXaWRnZXRUb0Rhc2hib2FyZCwgbnVsbCk7XHJcbiAgfVxyXG5cclxufSJdfQ==
852
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZGFzaGJvYXJkLmFyZWEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS1kYXNoYm9hcmQtYXJlYS9yYS5kYXNoYm9hcmQuYXJlYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUE0QixNQUFNLEVBQWEsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqSyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVsRjtJQWtDRSx5QkFBb0IsZ0JBQW9DLEVBQzlDLE1BQWMsRUFDZCxVQUE4QixFQUM5QixnQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsaUJBQStDLEVBQy9DLGlCQUFzQztRQU41QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBOEI7UUFDL0Msc0JBQWlCLEdBQWpCLGlC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MEJBQ3pCLEtBQUssU0FBQyxVQUFVOytCQUNoQixLQUFLLFNBQUMsZUFBZTtzQ0FDckIsS0FBSyxTQUFDLFdBQVc7K0JBQ2pCLEtBQUssU0FBQyxlQUFlOzhCQUNyQixLQUFLLFNBQUMsY0FBYzs0QkFDcEIsS0FBSyxTQUFDLFlBQVk7c0NBQ2xCLE1BQU07OEJBRU4sU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0lBK1o3QyxzQkFBQztDQUFBLEFBL2JELElBK2JDO1NBMWJZLGVBQWU7OztJQUUxQixxQ0FBMEM7O0lBQzFDLGtDQUErQjs7SUFDL0IscUNBQWdDOztJQUNoQyx5Q0FBa0M7O0lBQ2xDLHNDQUErQjs7Ozs7SUFFL0IseUNBQTRCOzs7OztJQUM1QiwrQ0FBa0M7Ozs7O0lBQ2xDLDRDQUErQjs7Ozs7SUFDL0IseUNBQTRCOzs7OztJQUM1QixpREFBb0M7Ozs7O0lBQ3BDLHlDQUF3Qzs7SUFDeEMscUNBQW1DOztJQUNuQyw2Q0FBMkM7O0lBQzNDLHdDQUFzQzs7SUFFdEMsMENBQW9EOztJQUNwRCxrQ0FBbUM7O0lBQ25DLHVDQUEwQzs7SUFDMUMsOENBQTZEOztJQUM3RCx1Q0FBaUQ7O0lBQ2pELHNDQUErQzs7SUFDL0Msb0NBQTJDOztJQUMzQyw4Q0FBbUQ7O0lBRW5ELHNDQUFxRTs7Ozs7SUFFekQsMkNBQTRDOzs7OztJQUN0RCxpQ0FBc0I7Ozs7O0lBQ3RCLHFDQUFzQzs7Ozs7SUFDdEMsMkNBQTRDOzs7OztJQUM1QyxtQ0FBaUM7Ozs7O0lBQ2pDLDRDQUF1RDs7Ozs7SUFDdkQsNENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIE9uSW5pdCwgQ29tcG9uZW50LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE5nWm9uZSwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEdyaWRzdGVyQ29uZmlnLCBHcmlkc3Rlckl0ZW0gfSBmcm9tICcuLi8uLi9ncmlkc3Rlci9pbmRleCc7XHJcbmltcG9ydCB7IFJhRGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4uL3JhLmRhc2hib2FyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUkFEYXNoYm9hcmRFdmVudEJ1cyB9IGZyb20gJy4uL3JhLmRhc2hiYXJkLmV2ZW50LmJ1cyc7XHJcbmltcG9ydCB7IFJBRXZlbnQgfSBmcm9tICcuLi9yYS5ldmVudC5lbnVtJztcclxuaW1wb3J0IHsgSVdpZGdldEluZm8sIElBcHBDb25maWcgfSBmcm9tICdAc2NobmVpZGVyZXNzL3dpZGdldGZyYW1ld29yayc7XHJcbmltcG9ydCB7IE5neFVpTG9hZGVyU2VydmljZSB9IGZyb20gJ25neC11aS1sb2FkZXInO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW5vdGlmaWVyJztcclxuaW1wb3J0IHsgUkFUcmFuc2xhdGVTZXJ2aWNlLCBSQVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHNjaG5laWRlcmVzcy9yYS1jb21tb24nO1xyXG5pbXBvcnQgeyBSQURhc2hib2FyZFJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcmEuZGFzaGJvYXJkLnJlc3BvbnNpdmUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JhLWRhc2hib2FyZC1hcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmEuZGFzaGJvYXJkLmFyZWEuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmEuZGFzaGJvYXJkLmFyZWEuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJBRGFzaGJvYXJkQXJlYSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgd2lkZ2V0TGlzdCA9IEFycmF5PEdyaWRzdGVySXRlbT4oKTtcclxuICBwdWJsaWMgb3B0aW9uczogR3JpZHN0ZXJDb25maWc7XHJcbiAgcHVibGljIGdyaWRoZWlnaHQ6IG51bWJlciA9IDMwMDtcclxuICBwdWJsaWMgZ3JpZGNlbGxIZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHVzZXJXaWRnZXRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGNvbmlmZ0FkZENsaWNrOiBhbnk7XHJcbiAgcHJpdmF0ZSByZWFycmFuZ2VXaWRnZXRDbGljazogYW55O1xyXG4gIHByaXZhdGUgd2lkZ2V0RGVsZXRlRXZlbnQ6IGFueTtcclxuICBwcml2YXRlIHdpZGdldEFkZEV2ZW50OiBhbnk7XHJcbiAgcHJpdmF0ZSB3aWRnZXRMaWJyYXJ5RG9uZUNsaWNrOiBhbnk7XHJcbiAgcHJpdmF0ZSBpc1dpZGdldExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkb21SZXNpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFbXB0eURhc2hib2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1dpZGdldE1nbW50OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgndXNlci1kYXNoYm9hcmQtaWQnKSB1c2VyRGFzaGJvYXJkSWQ6IG51bWJlcjtcclxuICBASW5wdXQoJ2FyZWEta2V5JykgYXJlYUtleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZ2xvYmFsLWZpbHRlcicpIGdsb2JhbEZpbHRlcjogYW55O1xyXG4gIEBJbnB1dCgnZXZlbnQtYnVzJykgcmFEYXNoYm9hcmRFdmVudEJ1czogUkFEYXNoYm9hcmRFdmVudEJ1cztcclxuICBASW5wdXQoJ3dpZGdldC1oZWlnaHQnKSB3aWRnZXRIZWlnaHQ6IG51bWJlciA9IDI7XHJcbiAgQElucHV0KCd3aWRnZXQtd2lkdGgnKSB3aWRnZXRXaWR0aDogbnVtYmVyID0gNDtcclxuICBASW5wdXQoJ2FwcC1jb25maWcnKSBhcHBDb25maWc6IElBcHBDb25maWc7XHJcbiAgQE91dHB1dCgpIGhpZGVEYXNoYm9hcmRCYW5uZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2dyaWRXcmFwcGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGdyaWRXcmFwcGVyOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhc2hib2FyZFNlcnZpY2U6IFJhRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIG5neFNlcnZpY2U6IE5neFVpTG9hZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogUkFUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmllcjogTm90aWZpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zaXZlU2VydmljZTogUkFEYXNoYm9hcmRSZXNwb25zaXZlU2VydmljZSxcclxuICAgIHByaXZhdGUgcGVybWlzc2lvblNlcnZpY2U6IFJBUGVybWlzc2lvblNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1dpZGdldE1nbW50ID0gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyYS53aWRnZXRtYW5hZ2VtZW50Jyk7XHJcbiAgICB0aGlzLmluaXRpYXRlR3JpZHN0ZXJDb25maWcoKTtcclxuXHJcbiAgICB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLnJlc2l6ZWQuc3Vic2NyaWJlKChpc0Rlc2t0b3ApID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ2luIHJlc3BvbnNpdmUgc2VydmljZSBzdWJzY3JpYmUnKTtcclxuICAgICAgY29uc29sZS5sb2coaXNEZXNrdG9wKTtcclxuXHJcbiAgICAgIGlmIChpc0Rlc2t0b3ApIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ3JpZGNlbGxIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgICAgIHRoaXMuZG9tUmVzaXplZCA9ICF0aGlzLmRvbVJlc2l6ZWQ7XHJcbiAgICAgICAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLndpZGdldExpc3QgPSBbXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmFwaS5vcHRpb25zQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMudXNlcldpZGdldHMpIHtcclxuICAgICAgICAgICAgdGhpcy53aWRnZXRMaXN0ID0gdGhpcy5tYXBPYmplY3RMaXN0VG9Hcmlkc3Rlckl0ZW1MaXN0KHRoaXMudXNlcldpZGdldHMpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkV2lkZ2V0cyh0aGlzLnVzZXJEYXNoYm9hcmRJZCwgdGhpcy5hcmVhS2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZG9tUmVzaXplZCA9ICF0aGlzLmRvbVJlc2l6ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1dpZGdldE1nbW50ID0gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyYS53aWRnZXRtYW5hZ2VtZW50Jyk7XHJcbiAgICBpZiAodGhpcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIHRoaXMuYXBwQ29uZmlnICYmICF0aGlzLmlzV2lkZ2V0TG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuaXNXaWRnZXRMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRXaWRnZXRzKHRoaXMudXNlckRhc2hib2FyZElkLCB0aGlzLmFyZWFLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnJhRGFzaGJvYXJkRXZlbnRCdXMgJiYgY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICB0aGlzLmluaXRpdGF0ZUV2ZW50QnVzU3Vic2NyaXRpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyBzZXQgR3JpZHN0ZXJDb25maWcgKi9cclxuICBwdWJsaWMgaW5pdGlhdGVHcmlkc3RlckNvbmZpZygpIHtcclxuICAgIC8qKlRvIG92ZXJyaWRlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMgdG8gdGhlIGdyaWRzdGVyIGNvbnRyb2wgKi9cclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJDb25maWcodGhpcy5pc1dpZGdldE1nbW50KTtcclxuICAgIHRoaXMub3B0aW9ucy5pbml0Q2FsbGJhY2sgPSAoZ3JpZHN0ZXI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFwaSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZGNlbGxIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMub3B0aW9ucy5pdGVtQ2hhbmdlQ2FsbGJhY2sgPSAoaXRlbTogR3JpZHN0ZXJJdGVtKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLklzRGVza3RvcFZpZXcpIHtcclxuICAgICAgICBpZiAoaXRlbS53aWRnZXRJbmZvICYmIGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVdpZGdldFBvc2l0aW9uKGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIGluaXRpYXRlIGV2ZW50YnVzIHN1YnNjdGlwdGlvbnMgKi9cclxuICBpbml0aXRhdGVFdmVudEJ1c1N1YnNjcml0aW9ucygpIHtcclxuICAgIHRoaXMud2lkZ2V0RGVsZXRlRXZlbnQgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuV2lkZ2V0RGVsZXRlKS5zdWJzY3JpYmUoKGluc3RhbmNlSWQpID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpZGdldChpbnN0YW5jZUlkLCB0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLndpZGdldEFkZEV2ZW50ID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LkFkZFdpZGdldCkuc3Vic2NyaWJlKCh3aWRnZXRJbmZvKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3B5V2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29uaWZnQWRkQ2xpY2sgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuQ29uZmlnQWRkQ2xpY2spLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkV2lkZ2V0KGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVhcnJhbmdlV2lkZ2V0Q2xpY2sgPSB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMuc3Vic2NyaWJlKFJBRXZlbnQuUmVhcnJhbmdlQ2xpY2tlZCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFycmFuZ2VXaWRnZXRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy53aWRnZXRMaWJyYXJ5RG9uZUNsaWNrID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZShSQUV2ZW50LndpZGdldExpYnJhcnlEb25lQ2xpY2spLnN1YnNjcmliZSgod2lkZ2V0TGlzdCkgPT4ge1xyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgIGlmICh3aWRnZXRMaXN0KSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFdpZGdldExpc3RUb0dyaWRzdGVyKHdpZGdldExpc3QsIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHRlbXAgZml4LSByZWN1cnNpdmUgbWV0aG9kIHRvIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBpdGVtc1xyXG4gICAqIGFuZCBhZGQgdGhlbSB0byBncmlkc3RlciBpbiB0aGUgZ2l2ZW4gb3JkZXJcclxuICAgKiBAcGFyYW0gd2lkZ2V0TGlzdCAgLWxpc3Qgb2Ygd2lkZ2V0c1xyXG4gICAqIEBwYXJhbSBpbmRleCAtaW5kZXggb2YgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYmUgYWRkZWRcclxuICAgKi9cclxuICBhZGRXaWRnZXRMaXN0VG9Hcmlkc3Rlcih3aWRnZXRMaXN0OiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGxldCBhcmVhQ29udGV4dCA9IHRoaXM7XHJcbiAgICBsZXQgaW5kZXhWYWwgPSBpbmRleCArIDE7XHJcbiAgICBpZiAoaW5kZXggPiB3aWRnZXRMaXN0Lmxlbmd0aCAtIDEpXHJcbiAgICAgIHJldHVybjtcclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoaW5kZXggPT0gMCkge1xyXG4gICAgICAgIGFyZWFDb250ZXh0LmFkZFdpZGdldCh3aWRnZXRMaXN0W2luZGV4XSk7XHJcbiAgICAgICAgYXJlYUNvbnRleHQuYWRkV2lkZ2V0TGlzdFRvR3JpZHN0ZXIod2lkZ2V0TGlzdCwgaW5kZXhWYWwpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgYXJlYUNvbnRleHQuYWRkV2lkZ2V0KHdpZGdldExpc3RbaW5kZXhdKTtcclxuICAgICAgICAgIGFyZWFDb250ZXh0LmFkZFdpZGdldExpc3RUb0dyaWRzdGVyKHdpZGdldExpc3QsIGluZGV4VmFsKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25pZmdBZGRDbGljaylcclxuICAgICAgdGhpcy5jb25pZmdBZGRDbGljay51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLndpZGdldEFkZEV2ZW50KVxyXG4gICAgICB0aGlzLndpZGdldEFkZEV2ZW50LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZ2V0RGVsZXRlRXZlbnQpXHJcbiAgICAgIHRoaXMud2lkZ2V0RGVsZXRlRXZlbnQudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRMaWJyYXJ5RG9uZUNsaWNrKVxyXG4gICAgICB0aGlzLndpZGdldExpYnJhcnlEb25lQ2xpY2sudW5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZWFycmFuZ2VXaWRnZXRDbGljaylcclxuICAgICAgdGhpcy5yZWFycmFuZ2VXaWRnZXRDbGljay51bnN1YnNjcmliZSgpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlRvIHVwZGF0ZSBwb3NpdGlvbi9kaW1lbnRpb24gb2YgYWxsIHdpZGdldHMgaW4gdGhlIGFyZWEgKi9cclxuICB1cGRhdGVXaWRnZXRzKCkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZVdpZGdldHModGhpcy5mb3JtYXRXaWRnZXREYXRhRm9yUG9zaXRpb25EZXRhaWxzKHRoaXMubWFwR3JpZHN0ZXJMaXN0VG9PYmplY3QodGhpcy53aWRnZXRMaXN0KSksXHJcbiAgICAgIHRoaXMuYXBwQ29uZmlnKS5zdWJzY3JpYmUod2lkZ2V0cyA9PiB7XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipUbyB1cGRhdGUgd2lkZ2V0IGRpbWVuc2lvbnMgKi9cclxuICB1cGRhdGVXaWRnZXRQb3NpdGlvbih3aWRnZXRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuXHJcbiAgICBsZXQgd2lkZ2V0RmlsdGVyZWRMaXN0ID0gW107XHJcbiAgICBsZXQgd2lkZ2V0ID0gdGhpcy53aWRnZXRMaXN0LmZpbHRlcihmaWx0ZXJlZCA9PiBmaWx0ZXJlZC53aWRnZXRJbmZvICYmIGZpbHRlcmVkLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCA9PSB3aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgd2lkZ2V0RmlsdGVyZWRMaXN0LnB1c2god2lkZ2V0WzBdKTtcclxuICAgICAgbGV0IHdpZGdldExpc3QgPSB0aGlzLm1hcEdyaWRzdGVyTGlzdFRvT2JqZWN0KHdpZGdldEZpbHRlcmVkTGlzdCk7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGRhdGVXaWRnZXRzKHRoaXMuZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyh3aWRnZXRMaXN0KSwgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXRzID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlRvIHJlc3RyaWN0IHJlcXVlc3QgcGF5bG9hZCB0byBiZSBvZiBtaW4gc2l6ZSAocG9zaXRpb24gJiBzaXplIGRldGFpbHMpICovXHJcbiAgZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyh3aWRnZXRJdGVtTGlzdDogSVdpZGdldEluZm9bXSkge1xyXG4gICAgbGV0IGl0ZW1MaXN0OiBhbnkgPSBbXTtcclxuICAgIHdpZGdldEl0ZW1MaXN0LmZvckVhY2goZnVuY3Rpb24gKHdpZGdldEl0ZW0pIHtcclxuICAgICAgbGV0IGl0ZW0gPSB7fSBhcyBJV2lkZ2V0SW5mbztcclxuICAgICAgaXRlbS53aWRnZXRJbnN0YW5jZUlkID0gd2lkZ2V0SXRlbS53aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgICBpdGVtLnBvc2l0aW9uX3ggPSB3aWRnZXRJdGVtLnBvc2l0aW9uX3g7XHJcbiAgICAgIGl0ZW0ucG9zaXRpb25feSA9IHdpZGdldEl0ZW0ucG9zaXRpb25feTtcclxuICAgICAgaXRlbS53aWR0aCA9IHdpZGdldEl0ZW0ud2lkdGg7XHJcbiAgICAgIGl0ZW0uaGVpZ2h0ID0gd2lkZ2V0SXRlbS5oZWlnaHQ7XHJcbiAgICAgIGl0ZW1MaXN0LnB1c2goaXRlbSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpdGVtTGlzdDtcclxuICB9XHJcblxyXG4gIC8qKiBUbyByZXRyaWV2ZSB3aWRnZXRzIGJhc2VkIG9uIHVzZXJEYXNoYm9hcmRpZCBhbmQgYXJlYSBuYW1lICovXHJcbiAgbG9hZFdpZGdldHModXNlckRhc2hib2FySWQ6IG51bWJlciwgYXJlYUtleTogc3RyaW5nKSB7XHJcblxyXG4gICAgbGV0IHdpZGdldEluZm8gPSA8SVdpZGdldEluZm8+e1xyXG4gICAgICBkYXNoYm9hcmRJZDogdXNlckRhc2hib2FySWQudG9TdHJpbmcoKSxcclxuICAgICAgZGFzaGJvYXJkQXJlYUtleTogYXJlYUtleVxyXG4gICAgfVxyXG4gICAgdGhpcy53aWRnZXRMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0V2lkZ2V0c0J5RGFzaGJvYXJkQXJlYSh3aWRnZXRJbmZvLCB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xyXG5cclxuICAgICAgdGhpcy51c2VyV2lkZ2V0cyA9IHdpZGdldHM7XHJcblxyXG4gICAgICBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLndpZGdldExpc3QgPSB0aGlzLm1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3Qod2lkZ2V0cyk7XHJcbiAgICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuSGlkZURhc2hib2FyZEJhbm5lciwgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKiogVG8gc2V0IEFyZWEoR3JpZHN0ZXIpIGhlaWdodCBkeW5hbWljYWxseSBhcyB3aWRnZXRzIGFyZSBhZGRlZC9yZW1vdmVkICovXHJcbiAgc2V0QXJlYUhlaWdodCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2JpbGVCcmVha3BvaW50ID4gdGhpcy5ncmlkV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoKSB7XHJcbiAgICAgICAgaXNNb2JpbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhcmVhU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgbGV0IGFyZWFIZWlnaHQgPSAwO1xyXG4gICAgICBsZXQgY3VyUm93SGVpZ2h0ID0gMDtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBjdXJSb3dIZWlnaHQgPSB0aGlzLm9wdGlvbnMuYXBpLmdldEN1cnJlbnRSb3dIZWlnaHQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RW1wdHlEYXNoYm9hcmQgPSB0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWU7XHJcblxyXG4gICAgICB0aGlzLndpZGdldExpc3QuZm9yRWFjaCgodCkgPT4ge1xyXG4gICAgICAgIGxldCBjdXJyZW50SGVpZ2h0ID0gdC55ICsgdC5yb3dzO1xyXG4gICAgICAgIGlmIChjdXJyZW50SGVpZ2h0ID4gYXJlYVNjcm9sbEhlaWdodCkge1xyXG4gICAgICAgICAgYXJlYVNjcm9sbEhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjdXJSb3dIZWlnaHQgPT0gMCkge1xyXG4gICAgICAgICAgY3VycmVudEhlaWdodCA9IHRoaXMud2lkZ2V0TGlzdFswXS5jdXJSb3dIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHQud2lkZ2V0SW5mby5yb3dIZWlnaHQgPSBjdXJSb3dIZWlnaHQ7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdyaWRjZWxsSGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFwaSkge1xyXG4gICAgICAgIGFyZWFIZWlnaHQgPSBhcmVhU2Nyb2xsSGVpZ2h0ICogdGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCkgKyAxMDA7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFyZWFTY3JvbGxIZWlnaHRNb2IgPSAwO1xyXG4gICAgICBpZiAoaXNNb2JpbGUpIHtcclxuICAgICAgICBhcmVhU2Nyb2xsSGVpZ2h0TW9iID0gdGhpcy53aWRnZXRMaXN0Lmxlbmd0aCAqIDMwMCArIDIwMDtcclxuICAgICAgICBhcmVhSGVpZ2h0ID0gYXJlYVNjcm9sbEhlaWdodE1vYjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYXJlYUhlaWdodCA8IDYwMCkge1xyXG4gICAgICAgIGFyZWFIZWlnaHQgPSA2MDA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ncmlkaGVpZ2h0ID0gYXJlYUhlaWdodDtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvKiogVG8gcmVtb3ZlIGEgd2lkZ2V0IGluc3RhbmNlIGZyb20gZGFzaGJvYXJkIGFuZCB0byBzYXZlIGluZm8gaW4gZGF0YWJhc2UgKi9cclxuICBkZWxldGVXaWRnZXQod2lkZ2V0SW5zdGFuY2VJZDogYW55LCBpc2FsZXJ0RGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMud2lkZ2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0ud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkID09PSB3aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoZ3JpZHN0ZXJJdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IHdpZGdldCA9IHRoaXMudXNlcldpZGdldHMuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0ud2lkZ2V0SW5zdGFuY2VJZCA9PT0gd2lkZ2V0SW5zdGFuY2VJZDtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh3aWRnZXQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMudXNlcldpZGdldHMuc3BsaWNlKHRoaXMudXNlcldpZGdldHMuaW5kZXhPZih3aWRnZXRbMF0pLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy53aWRnZXRMaXN0LnNwbGljZSh0aGlzLndpZGdldExpc3QuaW5kZXhPZihncmlkc3Rlckl0ZW1bMF0pLCAxKTtcclxuICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgIGlmICghaXNhbGVydERpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmllci5ub3RpZnkoJ3N1Y2Nlc3MnLCBcIiBcIiArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5XaWRnZXR0ZXh0JykgKyBcIiBcIiArIGdyaWRzdGVySXRlbVswXS53aWRnZXRJbmZvLndpZGdldFRpdGxlICsgXCIgXCIgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZGVsZXRlZFN1Y2Nlc2Z1bGx5JykgKyBcIiBcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID0gdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0VtcHR5RGFzaGJvYXJkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCB0aGlzLnNob3dFbXB0eURhc2hib2FyZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyByZWFycmFuZ2Ugd2lkZ2V0cyBwb3NpdGlvbiBpbiB0aGUgZGFzaGJvYXJkLCBjb21wYWN0TGVmdCZVcCxjb21wYWN0TGVmdCxjb21wYWN0VXAsZXRjKi9cclxuICByZWFycmFuZ2VXaWRnZXRzKCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJXaWRnZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHNbaV0ucG9zaXRpb25feCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcldpZGdldHNbaV0ucG9zaXRpb25feSA9IDA7XHJcbiAgICAgIHRoaXMud2lkZ2V0TGlzdCA9IHRoaXMubWFwT2JqZWN0TGlzdFRvR3JpZHN0ZXJJdGVtTGlzdCh0aGlzLnVzZXJXaWRnZXRzKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRBcmVhSGVpZ2h0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqVG8gYWRkIHdpZGdldCBpbnN0YW5jZSB0byB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgcG9zaXRpb24gYW5kIHRvIG1ha2UgY2hhbmdlcyBpblxyXG4gICAqIGRhc2hib2FyZCBhcmVhLlxyXG4gICAqL1xyXG4gIGFkZFdpZGdldChkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEuaGVpZ2h0ID0gdGhpcy53aWRnZXRIZWlnaHQ7XHJcbiAgICBkYXRhLndpZHRoID0gdGhpcy53aWRnZXRXaWR0aDtcclxuXHJcblxyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5IaWRlRGFzaGJvYXJkQmFubmVyLCBmYWxzZSk7XHJcbiAgICBpZiAoZGF0YS53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGEud2lkZ2V0U2V0dGluZ3MgPT09ICdzdHJpbmcnKVxyXG4gICAgICAgIGRhdGEud2lkZ2V0U2V0dGluZ3MgPSBKU09OLnBhcnNlKGRhdGEud2lkZ2V0U2V0dGluZ3MpO1xyXG5cclxuICAgICAgaWYgKGRhdGEud2lkZ2V0U2V0dGluZ3MuZGVmYXVsdENvbHMpIHtcclxuICAgICAgICBkYXRhLndpZHRoID0gZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Q29scztcclxuICAgICAgfVxyXG4gICAgICBpZiAoZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Um93cykge1xyXG4gICAgICAgIGRhdGEuaGVpZ2h0ID0gZGF0YS53aWRnZXRTZXR0aW5ncy5kZWZhdWx0Um93cztcclxuICAgICAgfVxyXG4gICAgICBkYXRhLndpZGdldFNldHRpbmdzID0gbnVsbDtcclxuICAgIH1cclxuICAgIGRhdGEgPSB0aGlzLnNldFBvc2l0aW9ucyhkYXRhKTtcclxuXHJcbiAgICAvKiogdG8gZmluZCB0aGUgYXZhaWxhYmxlIHBvc2l0aW9uIGluIGdyaWRzdGVyLCB0ZW1wIGNvbW1lbnRpbmcgdGhlIGNvZGUtcmV0dXJuaW5nIGhpZ2hlciB5IHZhbHVlIHRoYW4gbm9ybWFsICovXHJcbiAgICBkYXRhLmRhc2hib2FyZEFyZWFLZXkgPSB0aGlzLmFyZWFLZXk7XHJcbiAgICBkYXRhLmRhc2hib2FyZElkID0gdGhpcy51c2VyRGFzaGJvYXJkSWQ7XHJcbiAgICB0aGlzLm5neFNlcnZpY2Uuc3RhcnQoKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5hZGRXaWRnZXQoZGF0YSwgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZSh3aWRnZXQgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJXaWRnZXRzLnB1c2god2lkZ2V0KTtcclxuICAgICAgbGV0IGdyaWRzdGVySXRlbSA9IHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuZ2V0R3JpZHN0ZXJJdGVtKHdpZGdldCk7XHJcbiAgICAgIHRoaXMud2lkZ2V0TGlzdC5wdXNoKGdyaWRzdGVySXRlbSk7XHJcbiAgICAgIHRoaXMuc2V0QXJlYUhlaWdodCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcGkpIHtcclxuICAgICAgICBsZXQgY3VyUm93SGVpZ2h0OiBudW1iZXIgPSBOdW1iZXIodGhpcy5vcHRpb25zLmFwaS5nZXRDdXJyZW50Um93SGVpZ2h0KCkpO1xyXG4gICAgICAgIGlmIChjdXJSb3dIZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICB3aWRnZXQucm93SGVpZ2h0ID0gY3VyUm93SGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5ncmlkY2VsbEhlaWdodCA9IGN1clJvd0hlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHdpZGdldEluc3RhbmNlSWQgPSAwO1xyXG4gICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC53aWRnZXRJbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgd2lkZ2V0SW5zdGFuY2VJZCA9IHdpZGdldC53aWRnZXRJbnN0YW5jZUlkO1xyXG4gICAgICAgIC8qKlRvIHNhdmUgYWRkZWQgd2lkZ2V0IHBvc2l0aW9uIGluIGRiICovXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV2lkZ2V0UG9zaXRpb24od2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuV2lkZ2V0QWRkZWQsIHdpZGdldCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UG9zaXRpb25zKGRhdGE6IGFueSkge1xyXG4gICAgZGF0YS5wb3NpdGlvbl94ID0gMDtcclxuICAgIGRhdGEucG9zaXRpb25feSA9IDA7XHJcbiAgICBpZiAoIXRoaXMucmVzcG9uc2l2ZVNlcnZpY2UuSXNEZXNrdG9wVmlldykge1xyXG4gICAgICBpZiAodGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHdpZGdldCA9IHRoaXMudXNlcldpZGdldHNbdGhpcy51c2VyV2lkZ2V0cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBpZiAod2lkZ2V0LnBvc2l0aW9uX3ggKyB3aWRnZXQud2lkdGggPiAodGhpcy5yZXNwb25zaXZlU2VydmljZS5tYXhDb2xzRGVza3RvcCAvIDIpKSB7XHJcbiAgICAgICAgICBkYXRhLnBvc2l0aW9uX3kgPSB3aWRnZXQucG9zaXRpb25feSArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZGF0YS5wb3NpdGlvbl95ID0gd2lkZ2V0LnBvc2l0aW9uX3k7XHJcbiAgICAgICAgICBkYXRhLnBvc2l0aW9uX3ggPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLm1heENvbHNEZXNrdG9wIC0gKHdpZGdldC5wb3NpdGlvbl94ICsgd2lkZ2V0LndpZHRoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIGFkZCB3aWRnZXQgdG8gY3VycmVudCB3aWRnZXQgbGlzdCAsaW52b2tlZCBmcm9tIGNvcHkgd2lkZ2V0IHdpbmRvdyovXHJcbiAgY29weVdpZGdldChkYXRhOiBhbnkpIHtcclxuICAgIGRhdGEgPSB0aGlzLnNldFBvc2l0aW9ucyhkYXRhKTtcclxuICAgIGlmICghdGhpcy5yZXNwb25zaXZlU2VydmljZS5Jc0Rlc2t0b3BWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS51cGRhdGVXaWRnZXRzKHRoaXMuZm9ybWF0V2lkZ2V0RGF0YUZvclBvc2l0aW9uRGV0YWlscyhbZGF0YV0pLCB0aGlzLmFwcENvbmZpZykuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMudXNlcldpZGdldHMucHVzaChkYXRhKTtcclxuICAgIGxldCBncmlkc3Rlckl0ZW0gPSB0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVySXRlbShkYXRhKTtcclxuICAgIHRoaXMud2lkZ2V0TGlzdC5wdXNoKGdyaWRzdGVySXRlbSk7XHJcbiAgICB0aGlzLnNldEFyZWFIZWlnaHQoKTtcclxuICB9XHJcblxyXG4gIG1hcE9iamVjdExpc3RUb0dyaWRzdGVySXRlbUxpc3Qod2lkZ2V0TGlzdDogQXJyYXk8SVdpZGdldEluZm8+KSB7XHJcbiAgICBsZXQgd2lkZ2V0QXJyYXkgPSBBcnJheTxHcmlkc3Rlckl0ZW0+KCk7XHJcbiAgICB3aWRnZXRMaXN0LmZvckVhY2god2lkZ2V0ID0+IHtcclxuICAgICAgd2lkZ2V0QXJyYXkucHVzaCh0aGlzLnJlc3BvbnNpdmVTZXJ2aWNlLmdldEdyaWRzdGVySXRlbSh3aWRnZXQpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHdpZGdldEFycmF5O1xyXG4gIH1cclxuXHJcbiAgbWFwR3JpZHN0ZXJJdGVtVG9PYmplY3Qod2lkZ2V0SXRlbTogR3JpZHN0ZXJJdGVtKSB7XHJcbiAgICBsZXQgd2lkZ2V0OiBJV2lkZ2V0SW5mbztcclxuICAgIHdpZGdldCA9IHdpZGdldEl0ZW0ud2lkZ2V0SW5mbztcclxuICAgIHdpZGdldC5oZWlnaHQgPSB3aWRnZXRJdGVtLnJvd3M7XHJcbiAgICB3aWRnZXQud2lkdGggPSB3aWRnZXRJdGVtLmNvbHM7XHJcbiAgICB3aWRnZXQucG9zaXRpb25feCA9IHdpZGdldEl0ZW0ueDtcclxuICAgIHdpZGdldC5wb3NpdGlvbl95ID0gd2lkZ2V0SXRlbS55O1xyXG4gICAgd2lkZ2V0LnJvd0hlaWdodCA9IHdpZGdldEl0ZW0uY3VyUm93SGVpZ2h0O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIG1hcEdyaWRzdGVyTGlzdFRvT2JqZWN0KHdpZGdldEl0ZW1MaXN0OiBBcnJheTxHcmlkc3Rlckl0ZW0+KSB7XHJcbiAgICBsZXQgd2lkZ2V0TGlzdEFycmF5ID0gQXJyYXk8SVdpZGdldEluZm8+KCk7XHJcbiAgICB3aWRnZXRJdGVtTGlzdC5mb3JFYWNoKHdpZGdldCA9PiB7XHJcbiAgICAgIHdpZGdldExpc3RBcnJheS5wdXNoKHRoaXMubWFwR3JpZHN0ZXJJdGVtVG9PYmplY3Qod2lkZ2V0KSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB3aWRnZXRMaXN0QXJyYXk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTmV3V2lkZ2V0KCkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5BZGROZXdXaWRnZXRUb0Rhc2hib2FyZCwgbnVsbCk7XHJcbiAgfVxyXG5cclxufSJdfQ==
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra-widget-container/ra.widget.container.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import * as tslib_1 from "tslib";
7
7
  import { Component, Input, ViewChild, ElementRef, EventEmitter, Output, NgZone, Renderer2 } from '@angular/core';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.base.dashboard.filter.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Input } from '@angular/core';
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.base.dashboard.template.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Input } from '@angular/core';
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.dashbard.event.bus.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { Subject } from 'rxjs';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.dashboard.module.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { BrowserModule } from '@angular/platform-browser';
7
7
  import { NgModule } from '@angular/core';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.dashboard.responsive.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import { Injectable } from '@angular/core';
7
7
  import { GridsterConfigDefaultSettings } from './ra.gridster.config';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.dashboard.service.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  import * as tslib_1 from "tslib";
7
7
  import { Injectable, Injector } from '@angular/core';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.event.enum.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /** @enum {string} */
7
7
  var RAEvent = {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: lib/ra.gridster.config.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /** @type {?} */
7
7
  export var GridsterConfigDefaultSettings = {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: public-api.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /*
7
7
  * Public API Surface of ra-dashboard-framework
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
3
  * Generated from: schneideress-dashboardframework.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
6
  /**
7
7
  * Generated bundle index. Do not edit.