@messaia/cdk 14.0.0-rc14 → 14.0.0-rc15

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.
@@ -167,8 +167,8 @@ export class VdDynamicTableComponent {
167
167
  var actionColmun = this._columns?.find(x => x.name == 'action');
168
168
  /* If so, just add the menu items to it */
169
169
  if (actionColmun != null) {
170
- actionColmun.rowMenuItems = [];
171
- this.rowMenuItems.forEach(y => actionColmun.rowMenuItems.unshift(y));
170
+ actionColmun.menu || (actionColmun.menu = { icon: 'more_vert' });
171
+ this.rowMenuItems.forEach(y => actionColmun.menu.items.unshift(y));
172
172
  }
173
173
  /* Otherwise add a new one */
174
174
  else {
@@ -177,7 +177,7 @@ export class VdDynamicTableComponent {
177
177
  name: 'action',
178
178
  type: TableColumnType.Action,
179
179
  disabled: true,
180
- rowMenuItems: this.rowMenuItems,
180
+ menu: { icon: 'more_vert', items: this.rowMenuItems },
181
181
  configurable: false
182
182
  }));
183
183
  }
@@ -426,4 +426,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
426
426
  type: HostListener,
427
427
  args: ['document:contextmenu', ['$event']]
428
428
  }] } });
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuTixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FB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QUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsU0FBUztzQkFEZixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxhQUFhO3NCQURuQixLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPQyxRQUFRO3NCQURkLE1BQU07Z0JBT0EsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxlQUFlO3NCQURyQixLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFVQyxlQUFlO3NCQURyQixLQUFLO2dCQU9DLE9BQU87c0JBRGIsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVloQyxTQUFTO3NCQURaLFNBQVM7dUJBQUMsWUFBWTtnQkFnQm5CLE9BQU87c0JBRFYsS0FBSztnQkE0QkMsWUFBWTtzQkFEbEIsS0FBSztnQkFPQyxlQUFlO3NCQURyQixLQUFLO2dCQU9DLHNCQUFzQjtzQkFENUIsWUFBWTt1QkFBQyxjQUFjO2dCQWlCckIsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGVBQWU7c0JBRHJCLEtBQUs7Z0JBZ05OLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIEFVVE9fU1RZTEUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgRHluYW1pY0J1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vaGVscGVycy9keW5hbWljLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL21vZGVscy9hY3Rpb24taXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL3RhYmxlLWNvbHVtbi10eXBlJztcclxuaW1wb3J0IHsgZ2V0VGFibGVEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLWNvbHVtbic7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgVGFibGVTdGF0aWNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RhdGljLWRhdGEtc291cmNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAndmQtZHluYW1pYy10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICdkeW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGFuaW1hdGlvbnM6IFtcclxuXHRcdHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcclxuXHRcdFx0c3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxyXG5cdFx0XHRzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogQVVUT19TVFlMRSB9KSksXHJcblx0XHRcdHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXHJcblx0XHRdKSxcclxuXHRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmREeW5hbWljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cdC8qKlxyXG5cdCAqIGRldGFpbHNUZW1wbGF0ZTogVmlld0NvbnRhaW5lclJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ3RhYmxlJylcclxuXHRwdWJsaWMgdGFibGU6IE1hdFRhYmxlPGFueT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRldGFpbHNUZW1wbGF0ZTogVmlld0NvbnRhaW5lclJlZlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGRyZW4oJ2RldGFpbHNUZW1wbGF0ZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG5cdHB1YmxpYyBkZXRhaWxzVGVtcGxhdGVSZWY6IFF1ZXJ5TGlzdDxhbnk+O1xyXG5cclxuXHQvKipcclxuXHQgKiBEZXRhaWxzIHRlbXBsYXRlXHJcblx0ICovXHJcblx0QENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZilcclxuXHRwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdGEtdGFibGUgZGF0YXNvdXJjZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxhbnksIGFueT4gfCBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRhYmxlIGRhdGFcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHNldCBkYXRhKGRhdGE6IGFueSkge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlID0gbmV3IFRhYmxlU3RhdGljRGF0YVNvdXJjZShkYXRhKTtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5tYXRTb3J0O1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMuX3BhZ2luYXRvcjtcclxuXHRcdHRoaXMucGFnaW5hYmxlID0gdHJ1ZTtcclxuXHRcdHRoaXMuc3RhdGljID0gdHJ1ZTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDbGFzcyB0eXBlXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2xhc3NUeXBlOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgY29udGV4dCBcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRhdGFTb3VyY2VGaWx0ZXI6IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRhdGFTb3VyY2VGaWx0ZXI6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBTdGF0aWMgdGFibGVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdGF0aWM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogZmlsdGVyYWJsZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmaWx0ZXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogcGFnaW5hYmxlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHBhZ2luYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyB0aGUgY29sdW1uICdDaGVja2JveCdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0QWN0aXZlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBkaXJlY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0RGlyZWN0aW9uOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFN0aWNreSBoZWFkZXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdGlja3lIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTdGlja3kgZmlsdGVyXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc3RpY2t5RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogUm93IGNsaWNrIGV2ZW50XHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIHJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiByb3dOZ0NsYXNzOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJvd05nQ2xhc3M6IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZGV0YWlsc1RlbXBsYXRlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9yZWFkb25seTogYm9vbGVhbjtcclxuXHQgKi9cclxuXHRwdWJsaWMgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlYWRvbmx5OiBib29sZWFuO1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHJlYWRvbmx5KCkgeyByZXR1cm4gdGhpcy5fcmVhZG9ubHk7IH1cclxuXHRzZXQgcmVhZG9ubHkocmVhZG9ubHkpIHtcclxuXHRcdHRoaXMuX3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlYWRvbmx5KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlbGVjdEFsbEZpbHRlcjogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RBbGxGaWx0ZXI6ICh2YWx1ZTogYW55LCBpbmRleDogbnVtYmVyLCBhcnJheTogYW55W10pID0+IHVua25vd247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kU29ydCBhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIG1hdFNvcnQ6IE1hdFNvcnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wYWdpbmF0b3I6IE1hdFBhZ2luYXRvclxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuXHQvKipcclxuXHQgKiBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvclxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKVxyXG5cdHNldCBwYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHtcclxuXHRcdGlmIChwYWdpbmF0b3IpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHBhZ2luYXRvcjtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBfY29sdW1uczogVGFibGVDb2x1bW5bXVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2NvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogY29sdW1uczogQ29sdW1uW11cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBjb2x1bW5zKCk6IFRhYmxlQ29sdW1uW10geyByZXR1cm4gdGhpcy5fY29sdW1uczsgfTtcclxuXHRzZXQgY29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKSB7IHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zOyB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBjb2x1bW5zU3ViamVjdDogU3ViamVjdDwoVGFibGVDb2x1bW4gfCBzdHJpbmcpW10+XHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtbnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8KFRhYmxlQ29sdW1uIHwgc3RyaW5nKVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8KFRhYmxlQ29sdW1uIHwgc3RyaW5nKVtdPihbXSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbHVtbnMkOiBPYnNlcnZhYmxlPChUYWJsZUNvbHVtbiB8IHN0cmluZylbXT5cclxuXHQgKi9cclxuXHRwdWJsaWMgY29sdW1ucyQ6IE9ic2VydmFibGU8KFRhYmxlQ29sdW1uIHwgc3RyaW5nKVtdPiA9IHRoaXMuY29sdW1uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7O1xyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5ZWQgY29sdW1uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIERpc3BsYXllZCBmaWx0ZXIgY29sdW1uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkaXNwbGF5ZWRGaWx0ZXJDb2x1bW5zJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRhYmxlIHJvdyBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcm93TWVudUl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29sdW1ucyB0byBleGNsdWRlXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZXhjbHVkZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZWZlcmVuY2UgdG8gdGhlIE1hdE1lbnVUcmlnZ2VyIGluIHRoZSBET01cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKE1hdE1lbnVUcmlnZ2VyKVxyXG5cdHB1YmxpYyByb3dDb250ZXh0TWVudVRyaWdnZXJzOiBRdWVyeUxpc3Q8TWF0TWVudVRyaWdnZXI+O1xyXG5cclxuXHQvKipcclxuXHQgKiBDb2x1bW5UeXBlOiBDb2x1bW5UeXBlXHJcblx0ICovXHJcblx0cHVibGljIENvbHVtblR5cGU6IHR5cGVvZiBUYWJsZUNvbHVtblR5cGUgPSBUYWJsZUNvbHVtblR5cGU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGV4cGFuZGVkUm93OiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgZXhwYW5kZWRSb3c6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogRGVmYXVsdCBwYWdlIHNpemVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhZ2Ugc2l6ZSBvcHRpb25zXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAxNSwgMjAsIDMwLCA1MCwgMTAwLCAyMDBdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBkeW5hbWljQnVpbGRlciBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGR5bmFtaWNCdWlsZGVyOiBEeW5hbWljQnVpbGRlciwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXHJcblx0ICogZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0b3IgaGFzIGNoZWNrZWQgdGhlIGRpcmVjdGl2ZSdzXHJcblx0ICogZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmlyc3QgdGltZSxcclxuXHQgKiBhbmQgYmVmb3JlIGFueSBvZiB0aGUgdmlldyBvciBjb250ZW50IGNoaWxkcmVuIGhhdmUgYmVlbiBjaGVja2VkLlxyXG5cdCAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbnN0YW50aWF0ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5jbGFzc1R5cGUpIHtcclxuXHRcdFx0LyogR2V0IHRoZSB0YWJsZSBkZWZpbml0aW9uIHVzaW5nIHRoZSBjbGFzcyB0eXBlICovXHJcblx0XHRcdHZhciB0YWJsZURlZmluaXRpb24gPSBnZXRUYWJsZURlZmluaXRpb24odGhpcy5jbGFzc1R5cGUpO1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uKSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gWy4uLnRhYmxlRGVmaW5pdGlvbi5jb2x1bW5zXTtcclxuXHRcdFx0XHRpZiAodGhpcy5yb3dNZW51SXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdC8qIENoZWNrIGlmIHRoZSBhY3Rpb24gY29sdW1uIGFscmVhZHkgZXhpc3RzICovXHJcblx0XHRcdFx0XHR2YXIgYWN0aW9uQ29sbXVuID0gdGhpcy5fY29sdW1ucz8uZmluZCh4ID0+IHgubmFtZSA9PSAnYWN0aW9uJyk7XHJcblxyXG5cdFx0XHRcdFx0LyogSWYgc28sIGp1c3QgYWRkIHRoZSBtZW51IGl0ZW1zIHRvIGl0ICovXHJcblx0XHRcdFx0XHRpZiAoYWN0aW9uQ29sbXVuICE9IG51bGwpIHtcclxuXHRcdFx0XHRcdFx0YWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyA9IFtdO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJvd01lbnVJdGVtcy5mb3JFYWNoKHkgPT4gYWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcy51bnNoaWZ0KHkpKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvKiBPdGhlcndpc2UgYWRkIGEgbmV3IG9uZSAqL1xyXG5cdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2NvbHVtbnMucHVzaChuZXcgVGFibGVDb2x1bW4oe1xyXG5cdFx0XHRcdFx0XHRcdGluZGV4OiAyMDAwLFxyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdhY3Rpb24nLFxyXG5cdFx0XHRcdFx0XHRcdHR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BY3Rpb24sXHJcblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXHJcblx0XHRcdFx0XHRcdFx0cm93TWVudUl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtcyxcclxuXHRcdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlXHJcblx0XHRcdFx0XHRcdH0pKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBjaGVja2JveCBjb2x1bW4gKi9cclxuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RhYmxlKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNvbHVtbnMudW5zaGlmdCh7IG5hbWU6ICdzZWxlY3QnLCB0eXBlOiBUYWJsZUNvbHVtblR5cGUuQ2hlY2tib3ggfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQnVpbGQgZGlzcGxheWVkIGNvbHVtbnMgJiBmaWx0ZXIgKi9cclxuXHRcdHRoaXMuY29sdW1ucyQ/LnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0dGhpcy5kaXNwbGF5ZWRDb2x1bW5zJCA9IG9mKHRoaXMuY29sdW1ucz8uZmlsdGVyKHggPT4gIXRoaXMuZXhjbHVkZWRDb2x1bW5zPy5pbmNsdWRlcyh4Lm5hbWUpKT8ubWFwKGMgPT4gYy5uYW1lKSk7XHJcblx0XHRcdHRoaXMuZGlzcGxheWVkRmlsdGVyQ29sdW1ucyQgPSBvZih0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICF0aGlzLmV4Y2x1ZGVkQ29sdW1ucz8uaW5jbHVkZXMoeC5uYW1lKSk/Lm1hcChjID0+IGBmaWx0ZXIuJHsoYy5maWx0ZXIgfHwgYy5uYW1lKX1gKSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgKi9cclxuXHRcdHRoaXMudXBkYXRlQ29sdW1ucygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyB0aGUgdGFibGUgY29sdW1uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGRhdGVDb2x1bW5zKCk6IHZvaWQge1xyXG5cdFx0LyogU29ydCB0aGUgY29sdW1ucyBieSBpbmRleCAqL1xyXG5cdFx0VXRpbHMuc29ydEFycmF5KHRoaXMuY29sdW1ucyB8fCBbXSwgJ2luZGV4Jyk7XHJcblxyXG5cdFx0LyogVHJpZ2dlciBjaGFuZ2VzICovXHJcblx0XHR0aGlzLmNvbHVtbnNTdWJqZWN0Lm5leHQodGhpcy5jb2x1bW5zKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvdW50cyB2aXNpYmxlIGFjdGlvbiBtZW51c1xyXG5cdCAqIEBwYXJhbSByb3cgXHJcblx0ICogQHBhcmFtIGNvbHVtbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFzVmlzaWJsZVJvd01lbnVJdGVtcyhyb3c6IGFueSwgY29sdW1uOiBUYWJsZUNvbHVtbikge1xyXG5cdFx0cmV0dXJuIGNvbHVtbj8ucm93TWVudUl0ZW1zPy5maWx0ZXIoeCA9PiAheC5oaWRlIHx8ICF4LmhpZGUocm93KSk/Lmxlbmd0aCA+IDA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIHRvIGNvbXB1dGUgdGhlIGlkZW50aXR5IG9mIGl0ZW1zIGluIGFuIGl0ZXJhYmxlLlxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdHJhY2tCeShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIGAke2l0ZW0uaWR9YDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgcm93IGNsaWNrIGV2ZW50XHJcblx0ICogQHBhcmFtIGluZGV4IFxyXG5cdCAqIEBwYXJhbSByb3cgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZVJvd0NsaWNrKGluZGV4OiBhbnksIHJvdzogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy50ZW1wbGF0ZVJlZikge1xyXG5cdFx0XHR0aGlzLmV4cGFuZGVkUm93ID0gdGhpcy5leHBhbmRlZFJvdyA9PT0gcm93ID8gbnVsbCA6IHJvdztcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKHRoaXMuZGV0YWlsc1RlbXBsYXRlKSB7XHJcblx0XHRcdHRoaXMuZXhwYW5kZWRSb3cgPSB0aGlzLmV4cGFuZGVkUm93ID09PSByb3cgPyBudWxsIDogcm93O1xyXG5cdFx0XHR0aGlzLmR5bmFtaWNCdWlsZGVyLmNvbXBpbGVIdG1sKHRoaXMuZGV0YWlsc1RlbXBsYXRlUmVmLmdldChpbmRleCksIHRoaXMuZGV0YWlsc1RlbXBsYXRlLCByb3cpO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMucm93Q2xpY2suZW1pdChyb3cpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrIHdpdGggdGhlIHJpZ2h0IGJ1dHRvblxyXG5cdCAqIEBwYXJhbSBldmVudCBNb3VzZUV2ZW50LCBpdCBjb250YWlucyB0aGUgY29vcmRpbmF0ZXNcclxuXHQgKiBAcGFyYW0gaXRlbSBPdXIgZGF0YSBjb250YWluZWQgaW4gdGhlIHJvdyBvZiB0aGUgdGFibGVcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlUm93UmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnJvd0NvbnRleHRNZW51VHJpZ2dlcnM/LnRvQXJyYXkoKT8uZm9yRWFjaCh4ID0+IHguY2xvc2VNZW51KCkpO1xyXG5cdFx0dmFyIG1lbnVUcmlnZ2VyID0gdGhpcy5yb3dDb250ZXh0TWVudVRyaWdnZXJzPy50b0FycmF5KCk/LmZpbHRlcih4ID0+IHhbJ19lbGVtZW50J10/Lm5hdGl2ZUVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgnaWQnKSA9PSBgbWVudS0ke2l0ZW0uaWR9YClbMF07XHJcblx0XHRpZiAobWVudVRyaWdnZXIgIT0gbnVsbCkge1xyXG5cdFx0XHQvKiBBdm9pZHMgdG8gc2hvdyB0aGUgdmlzdWFsaXphdGlvbiBvZiB0aGUgcmlnaHQtY2xpY2sgbWVudSBvZiB0aGUgYnJvd3NlciAqL1xyXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuXHRcdFx0LyogU2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSAqL1xyXG5cdFx0XHRtZW51VHJpZ2dlclsnX2VsZW1lbnQnXT8ubmF0aXZlRWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHlsZScsIGBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6ICR7ZXZlbnQuY2xpZW50WH1weDsgdG9wOiAke2V2ZW50LmNsaWVudFl9cHhgKTtcclxuXHJcblx0XHRcdC8qIFBhc3MgdG8gdGhlIG1lbnUgdGhlIGN1cnJlbnQgb2JqZWN0ICovXHJcblx0XHRcdG1lbnVUcmlnZ2VyLm1lbnVEYXRhID0geyBpdGVtOiBpdGVtIH1cclxuXHJcblx0XHRcdC8qIE9wZW4gdGhlIG1lbnUgKi9cclxuXHRcdFx0bWVudVRyaWdnZXIub3Blbk1lbnUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgYW4gZW50aXR5XHJcblx0ICogQHBhcmFtIHJvdyBcclxuXHQgKiBAcGFyYW0gZmllbGROYW1lIFxyXG5cdCAqIEBwYXJhbSBwYXRoIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYXRjaChyb3c6IGFueSwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlczogYW55KTogdm9pZCB7XHJcblx0XHQvKiBHZXQgZW50aXR5IGJ5IElEICovXHJcblx0XHRsZXQgZW50aXR5ID0gdGhpcy5kYXRhU291cmNlLml0ZW1zPy5maWx0ZXIoeCA9PiAoPGFueT54KS5pZCA9PT0gcm93LmlkKVswXTtcclxuXHRcdGlmIChlbnRpdHkpIHtcclxuXHRcdFx0LyogQnVpbGQgcGF0Y2ggbWV0aG9kcyAqL1xyXG5cdFx0XHRsZXQgcGF0Y2hlcyA9IGZpZWxkcy5tYXAoeCA9PiB7IHJldHVybiB7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHt4fWAsIHZhbHVlOiB2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IGVudGl0eVt4XSB9OyB9KTtcclxuXHJcblx0XHRcdC8qIFNlbmQgcmVxdWVzdCAqL1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2Uuc2VydmljZVxyXG5cdFx0XHRcdC5wYXRjaChyb3cuaWQsIHBhdGNoZXMsIG51bGwsIHsgaGVhZGVyczogeyAnU2hvdy1NZXNzYWdlJzogJ1llcycgfSwgcGFyYW1zOiBpbmNsdWRlcyA/IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGluY2x1ZGVzOiBpbmNsdWRlcyB9KSA6IG51bGwgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKChfOiBhbnkpID0+IHRoaXMuZGF0YVNvdXJjZS5yZWxvYWQoKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW5kZXJzIHJvd3MgYmFzZWQgb24gdGhlIHRhYmxlJ3MgbGF0ZXN0IHNldCBvZiBkYXRhLCB3aGljaCB3YXMgZWl0aGVyIHByb3ZpZGVkIGRpcmVjdGx5IGFzIGFuXHJcblx0ICogaW5wdXQgb3IgcmV0cmlldmVkIHRocm91Z2ggYW4gT2JzZXJ2YWJsZSBzdHJlYW0gKGRpcmVjdGx5IG9yIGZyb20gYSBEYXRhU291cmNlKS5cclxuXHQgKiBDaGVja3MgZm9yIGRpZmZlcmVuY2VzIGluIHRoZSBkYXRhIHNpbmNlIHRoZSBsYXN0IGRpZmYgdG8gcGVyZm9ybSBvbmx5IHRoZSBuZWNlc3NhcnlcclxuXHQgKiBjaGFuZ2VzIChhZGQvcmVtb3ZlL21vdmUgcm93cykuXHJcblx0ICovXHJcblx0cHVibGljIHJlbmRlclJvd3MoKTogdm9pZCB7XHJcblx0XHR0aGlzLnRhYmxlLnJlbmRlclJvd3MoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgY2VsbCBjbGFzc1xyXG5cdCAqIEBwYXJhbSBjb2x1bW4gXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldENlbGxDbGFzcyhjb2x1bW46IFRhYmxlQ29sdW1uLCByb3c6IGFueSk6IGFueSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbihjb2x1bW4uY2VsbE5nQ2xhc3MgPyBjb2x1bW4uY2VsbE5nQ2xhc3Mocm93KSA6IHsgJ3RleHQtcmlnaHQnOiBjb2x1bW4uYXJyb3dCZWZvcmUgfSwgdGhpcy5nZXRWaXNpYmlsaXR5Q2xhc3MoY29sdW1uKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGNlbGwgY2xhc3NcclxuXHQgKiBAcGFyYW0gY29sdW1uIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRWaXNpYmlsaXR5Q2xhc3MoY29sdW1uOiBUYWJsZUNvbHVtbik6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHQnZ3QteHMnOiBjb2x1bW4uc2hvd0d0WHMsXHJcblx0XHRcdCdndC1zbSc6IGNvbHVtbi5zaG93R3RTbSxcclxuXHRcdFx0J2d0LW1kJzogY29sdW1uLnNob3dHdE1kLFxyXG5cdFx0XHQnZ3QtbGcnOiBjb2x1bW4uc2hvd0d0TGcsXHJcblx0XHRcdCdndC14bCc6IGNvbHVtbi5zaG93R3RYbCxcclxuXHRcdFx0J2d0LXh4bCc6IGNvbHVtbi5zaG93R3RYeGxcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGEgc3RyaW5nIGZ1bmN0aW9uIGV4cHJlc3Npb25cclxuXHQgKiBAcGFyYW0gZXhwcmVzc2lvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlRXhwcmVzc2lvbihleHByZXNzaW9uOiBzdHJpbmcgfCBGdW5jdGlvbiwgaXRlbTogYW55KTogc3RyaW5nIHtcclxuXHRcdGlmICghZXhwcmVzc2lvbikge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIGV4cHJlc3Npb24gPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0cmV0dXJuIGV4cHJlc3Npb24oaXRlbSwgdGhpcy5jb250ZXh0KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZXhwcmVzc2lvbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlc3BvbmRzIHRvIHVzZXItaW5pdGlhdGVkIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjb250ZXh0bWVudScsIFsnJGV2ZW50J10pXHJcblx0aGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudDogUG9pbnRlckV2ZW50KSB7XHJcblx0XHQvKiBBdm9pZHMgdG8gc2hvdyB0aGUgdmlzdWFsaXphdGlvbiBvZiB0aGUgcmlnaHQtY2xpY2sgbWVudSBvZiB0aGUgYnJvd3NlciAqL1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHQvKiBDbG9zZSBhbGwgb3BlbiBtZW51cyAqL1xyXG5cdFx0aWYgKChldmVudC50YXJnZXQgYXMgYW55KT8uY2xhc3NMaXN0Py5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKSkge1xyXG5cdFx0XHR0aGlzLnJvd0NvbnRleHRNZW51VHJpZ2dlcnM/LnRvQXJyYXkoKT8uZm9yRWFjaCh4ID0+IHguY2xvc2VNZW51KCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG5cdCAqIGRlZmF1bHQgY2hhbmdlIGRldGVjdG9yIGhhcyBjb21wbGV0ZWQgb25lIGNoYW5nZS1jaGVjayBjeWNsZVxyXG5cdCAqIGZvciBhIGNvbXBvbmVudCdzIHZpZXcuXHJcblx0ICovXHJcblx0bmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG59IiwiPGRpdiBjbGFzcz1cImxvYWRpbmctcHJvZ3Jlc3NcIiAqbmdJZj1cIiFzdGF0aWNcIj5cclxuXHQ8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiZGF0YVNvdXJjZT8uaXNMb2FkaW5nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gI3JlZ2lvbiBEYXRhIHRhYmxlIC0tPlxyXG48dGFibGUgbWF0LXRhYmxlICN0YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW2RhdGFTb3VyY2VGaWx0ZXJdPVwiZGF0YVNvdXJjZUZpbHRlclwiIFtuZ0NsYXNzXT1cInsndGFibGUtZml4ZWQnOiAhZGV0YWlsc1RlbXBsYXRlICYmICF0ZW1wbGF0ZVJlZn1cIiBbdHJhY2tCeV09XCJ0cmFja0J5XCIgbWF0U29ydCBtYXRTb3J0RGlzYWJsZUNsZWFyIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmV8fCdpZCdcIiBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCIgbXVsdGlUZW1wbGF0ZURhdGFSb3dzPlxyXG5cdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zJCB8IGFzeW5jXCI+XHJcblx0XHQ8IS0tICNyZWdpb24gQ29sdW1uIGRlZiAtLT5cclxuXHRcdDxuZy1jb250YWluZXIgW2Nka0NvbHVtbkRlZl09XCJjb2x1bW4ubmFtZVwiIFtzdGlja3ldPVwiY29sdW1uLnN0aWNreVwiIFtzdGlja3lFbmRdPVwiY29sdW1uLnN0aWNreUVuZFwiPlxyXG5cdFx0XHQ8dGggbWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRCeSB8fCBjb2x1bW4ubmFtZVwiIFtoaWRkZW5dPVwiY29sdW1uLmhpZGRlblwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbZGlzYWJsZWRdPVwiY29sdW1uLnR5cGUgPT0gQ29sdW1uVHlwZS5DaGVja2JveCB8fCBjb2x1bW4uZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7J2d0LXhzJzogY29sdW1uLnNob3dHdFhzLCAnZ3Qtc20nOiBjb2x1bW4uc2hvd0d0U20sICdndC1tZCc6IGNvbHVtbi5zaG93R3RNZCwgJ2d0LWxnJzogY29sdW1uLnNob3dHdExnLCAnZ3QteGwnOiBjb2x1bW4uc2hvd0d0WGwsICdndC14eGwnOiBjb2x1bW4uc2hvd0d0WHhsfVwiIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbi5hcnJvd0JlZm9yZT8nYmVmb3JlJzonYWZ0ZXInXCI+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveCAqbmdJZj1cImNvbHVtbi50eXBlID09IENvbHVtblR5cGUuQ2hlY2tib3hcIiAoY2hhbmdlKT1cIiRldmVudCA/IGRhdGFTb3VyY2UudG9nZ2xlU2VsZWN0KCRldmVudCwgc2VsZWN0QWxsRmlsdGVyKSA6IG51bGxcIiBbZGlzYWJsZWRdPVwiIWRhdGFTb3VyY2UucGFnaW5hdG9yPy5sZW5ndGhcIiBbY2hlY2tlZF09XCJkYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkgJiYgZGF0YVNvdXJjZS5pc0FsbFNlbGVjdGVkKClcIiBbaW5kZXRlcm1pbmF0ZV09XCJkYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkgJiYgIWRhdGFTb3VyY2UuaXNBbGxTZWxlY3RlZCgpXCI+PC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjb2x1bW4udHlwZSAhPSBDb2x1bW5UeXBlLkNoZWNrYm94XCI+e3tjb2x1bW4uaGVhZGVyfX08L3NwYW4+XHJcblx0XHRcdDwvdGg+XHJcblxyXG5cdFx0XHQ8IS0tIGNvbHVtbi5jZWxsTmdDbGFzcyA/IGNvbHVtbi5jZWxsTmdDbGFzcyhyb3csIGNvbnRleHQpIDogeyAndGV4dC1yaWdodCc6IGNvbHVtbi5hcnJvd0JlZm9yZSB9IC0tPlxyXG5cdFx0XHQ8dGQgbWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93OyBsZXQgcm93SW5kZXggPSBpbmRleFwiIFttYXRUb29sdGlwXT1cImNvbHVtbi50b29sdGlwP2NvbHVtbi50b29sdGlwKHJvdywgY29udGV4dCk6bnVsbFwiIFttYXRUb29sdGlwQ2xhc3NdPVwiY29sdW1uLnRvb2x0aXBDbGFzc1wiIFtoaWRkZW5dPVwiY29sdW1uLmhpZGRlblwiIFtuZ0NsYXNzXT1cInsnZ3QteHMnOiBjb2x1bW4uc2hvd0d0WHMsICdndC1zbSc6IGNvbHVtbi5zaG93R3RTbSwgJ2d0LW1kJzogY29sdW1uLnNob3dHdE1kLCAnZ3QtbGcnOiBjb2x1bW4uc2hvd0d0TGcsICdndC14bCc6IGNvbHVtbi5zaG93R3RYbCwgJ2d0LXh4bCc6IGNvbHVtbi5zaG93R3RYeGx9XCIgW25nU3R5bGVdPVwie21heFdpZHRoOmNvbHVtbi5tYXhXaWR0aD8oY29sdW1uLm1heFdpZHRoKyhjb2x1bW4ubWF4V2lkdGhVbml0IHx8ICdweCcpKTpudWxsLG1pbldpZHRoOmNvbHVtbi5taW5XaWR0aD8oY29sdW1uLm1pbldpZHRoKyhjb2x1bW4ubWluV2lkdGhVbml0IHx8ICdweCcpKTpudWxsLHdpZHRoOmNvbHVtbi53aWR0aD8oY29sdW1uLndpZHRoKyhjb2x1bW4ud2lkdGhVbml0IHx8ICdweCcpKTpudWxsfVwiPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gRW51bSBjb2x1bW4gLS0+XHJcblx0XHRcdFx0XHQ8bWF0LWNoZWNrYm94ICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLkNoZWNrYm94XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwiJGV2ZW50ID8gZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC50b2dnbGUocm93KSA6IG51bGxcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgKGNvbHVtbi5kaXNhYmxlZCB8fCAoY29sdW1uLmRpc2FibGUgJiYgY29sdW1uLmRpc2FibGUocm93LCBjb250ZXh0KSkpXCIgW2NoZWNrZWRdPVwiZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHJvdylcIj48L21hdC1jaGVja2JveD5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gRW51bSBjb2x1bW4gLS0+XHJcblx0XHRcdFx0XHQ8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5FbnVtXCIgaTE4bj1cIkBAc2VsZWN0aW9uXCI+e2NvbHVtbi5jb250ZW50KHJvdykgfCBlbnVtOmNvbHVtbi5lbnVtVHlwZTpjb2x1bW4uZW51bVByZWZpeCwgc2VsZWN0LCB0eXBlIHt0eXBlfSBvdGhlciB7e3tjb2x1bW4uY29udGVudChyb3csIGNvbnRleHQpIHwgZW51bTpjb2x1bW4uZW51bVR5cGU6Y29sdW1uLmVudW1QcmVmaXh9fX19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBUb2dnbGUgY29sdW1uIC0tPlxyXG5cdFx0XHRcdFx0PG1hdC1zbGlkZS10b2dnbGUgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuVG9nZ2xlXCIgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLm5hbWVdXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiAobmdNb2RlbENoYW5nZSk9XCJjb2x1bW4uZXZlbnQ/KGNvbHVtbi5ldmVudEFyZ3M/Y29sdW1uLmV2ZW50KHJvdyxjb2x1bW4uZXZlbnRBcmdzKTpjb2x1bW4uZXZlbnQocm93LCBjb250ZXh0KSk6bnVsbFwiIFtkaXNhYmxlZF09XCJyZWFkb25seSB8fCAoY29sdW1uLmRpc2FibGUgJiYgY29sdW1uLmRpc2FibGUocm93LCBjb250ZXh0KSlcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIERhdGUgY29sdW1uIC0tPlxyXG5cdFx0XHRcdFx0PHNwYW4gKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuRGF0ZVwiPnt7Y29sdW1uLmNvbnRlbnQocm93LCBjb250ZXh0KSB8IGRhdGU6Y29sdW1uLnNob3J0RGF0ZT8nZGQuTU0ueXl5eSc6J2RkLk1NLnl5eXkgSEg6bW06c3MnfX08L3NwYW4+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIFRleHQgSW5wdXQgY29sdW1uIC0tPlxyXG5cdFx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLlRleHRJbnB1dFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgbGF5b3V0PVwiY29sdW1uXCIgbGF5b3V0LWFsaWduPVwiY2VudGVyIHN0YXJ0XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuXHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ7e2NvbHVtbi5pbnB1dFR5cGV9fVwiIGF1dG9jb21wbGV0ZT1cIm5vbmVcIiBtYXRJbnB1dCBuYW1lPVwie3tjb2x1bW4ubmFtZX19e3tyb3dJbmRleH19XCIgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLm5hbWVdXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IChjb2x1bW4uZGlzYWJsZWQgfHwgKGNvbHVtbi5kaXNhYmxlICYmIGNvbHVtbi5kaXNhYmxlKHJvdywgY29udGV4dCkpKVwiIFttaW5dPVwiY29sdW1uLmlucHV0TWluP2NvbHVtbi5pbnB1dE1pbihyb3csIGNvbnRleHQpOm51bGxcIiBbbWF4XT1cImNvbHVtbi5pbnB1dE1heD9jb2x1bW4uaW5wdXRNYXgocm93LCBjb250ZXh0KTpudWxsXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29sdW1uLmNoYW5nZT9jb2x1bW4uY2hhbmdlKHJvdywgY29udGV4dCk6cGF0Y2gocm93LCBbY29sdW1uLm5hbWVdLCByb3dbY29sdW1uLm5hbWVdLCBjb2x1bW4ucGF0Y2hJbmNsdWRlcylcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3VwZGF0ZU9uOiAnYmx1cid9XCIgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnRhcmdldC5ibHVyKCk7ZmFsc2VcIj5cclxuXHRcdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIEFjdGlvbiAtLT5cclxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuQWN0aW9uXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgaWQ9XCJtZW51LXt7cm93LmlkfX1cIiBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGZpeGVkO1wiICNjb250ZXh0TWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51Lm1hdE1lbnVcIiAqbmdJZj1cIm1lbnU/Lm1hdE1lbnUgJiYgIXJvdy5sb2NrZWQgJiYgaGFzVmlzaWJsZVJvd01lbnVJdGVtcyhyb3csIGNvbHVtbilcIj48L2Rpdj5cclxuXHRcdFx0XHRcdFx0PHZkLWR5bmFtaWMtbWVudSBbaXRlbXNdPVwiW2NvbHVtbi5tZW51XVwiIFtkYXRhXT1cInJvd1wiIFtjb250ZXh0XT1cImNvbnRleHRcIiAjbWVudT48L3ZkLWR5bmFtaWMtbWVudT5cclxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBNZW51IC0tPlxyXG5cdFx0XHRcdFx0PHZkLWR5bmFtaWMtbWVudSAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5NZW51XCIgW2l0ZW1zXT1cIltjb2x1bW4ubWVudV1cIiBbZGF0YV09XCJyb3dcIiBbY29udGV4dF09XCJjb250ZXh0XCI+PC92ZC1keW5hbWljLW1lbnU+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIGljb24gYnV0dG9uIC0tPlxyXG5cdFx0XHRcdFx0PGEgbWF0LWljb24tYnV0dG9uICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLkljb25CdXR0b25cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO2NvbHVtbi5pY29uQnV0dG9uPy5ldmVudD9jb2x1bW4uaWNvbkJ1dHRvbi5ldmVudChyb3csIGNvbnRleHQpOm51bGxcIj5cclxuXHRcdFx0XHRcdFx0PG1hdC1pY29uIGZvbnRTZXQ9XCJ7e2NvbHVtbi5pY29uQnV0dG9uPy5pY29uRm9udFNldCB8fCAnbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQnfX1cIiBbY2xhc3NdPVwiaGFuZGxlRXhwcmVzc2lvbihjb2x1bW4uaWNvbkJ1dHRvbj8uaWNvbkNsYXNzLCByb3cpXCI+e3toYW5kbGVFeHByZXNzaW9uKGNvbHVtbi5pY29uQnV0dG9uPy5pY29uLCByb3cpIHx8ICdyYWRpb19idXR0b25fY2hlY2tlZCd9fTwvbWF0LWljb24+XHJcblx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIE90aGVyIGNvbHVtbiB0eXBlcyAtLT5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ1N3aXRjaERlZmF1bHQgW2lubmVySHRtbF09XCJjb2x1bW4uY29udGVudCA/IGNvbHVtbi5jb250ZW50KHJvdywgY29udGV4dCk6JydcIj48L3NwYW4+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwvdGQ+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0PCEtLSAjcmVnaW9uIEZpbHRlciByb3cgLS0+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFTb3VyY2UgJiYgZmlsdGVyYWJsZVwiPlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnMkIHwgYXN5bmNcIj5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciBjZGtDb2x1bW5EZWY9XCJmaWx0ZXIue3tjb2x1bW4uZmlsdGVyIHx8IGNvbHVtbi5uYW1lfX1cIj5cclxuXHRcdFx0XHQ8dGggbWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmIFtoaWRkZW5dPVwiY29sdW1uLmhpZGRlblwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIiBbbmdDbGFzc109XCJ7J2d0LXhzJzogY29sdW1uLnNob3dHdFhzLCAnZ3Qtc20nOiBjb2x1bW4uc2hvd0d0U20sICdndC1tZCc6IGNvbHVtbi5zaG93R3RNZCwgJ2d0LWxnJzogY29sdW1uLnNob3dHdExnLCAnZ3QteGwnOiBjb2x1bW4uc2hvd0d0WGwsICdndC14eGwnOiBjb2x1bW4uc2hvd0d0WHhsfVwiPlxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIFRleHQgZmlsdGVyIC0tPlxyXG5cdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjb2x1bW4udHlwZSA9PSBDb2x1bW5UeXBlLlRleHQgfHwgY29sdW1uLnR5cGUgPT0gQ29sdW1uVHlwZS5UZXh0SW5wdXQgfHwgY29sdW1uLnR5cGUgPT0gQ29sdW1uVHlwZS5OdW1iZXJcIiBmaWx0ZXItaW5wdXQgW29ubHlOdW1iZXJdPVwiY29sdW1uLmZpbHRlcklucHV0TnVtYmVyXCIgW29wZXJhdG9yXT1cImNvbHVtbi5maWx0ZXJPcGVyYXRvclwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gU2VsZWN0IGZpbHRlciAtLT5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiY29sdW1uLmVuZHBvaW50IHx8IGNvbHVtbi5lbnVtVHlwZSB8fCBjb2x1bW4ub3B0aW9uc1wiIGZpbHRlci1zZWxlY3QgW2VuZHBvaW50XT1cImNvbHVtbi5lbmRwb2ludFwiIFtlbnVtXT1cImNvbHVtbi5lbnVtVHlwZVwiIFtwcmVmaXhdPVwiY29sdW1uLmVudW1QcmVmaXhcIiBbb3B0aW9uc109XCJjb2x1bW4ub3B0aW9uc1wiIFt0ZXh0XT1cImNvbHVtbi5maWx0ZXJPcHRpb25UZXh0IHx8ICduYW1lJ1wiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gRGF0ZSBmaWx0ZXIgLS0+XHJcblx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNvbHVtbi50eXBlID09IENvbHVtblR5cGUuRGF0ZVwiIGZpbHRlci1kYXRlPjwvc3Bhbj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gQWN0aW9uIGZpbHRlciAoY2xlYXIpIC0tPlxyXG5cdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjb2x1bW4udHlwZSA9PSBDb2x1bW5UeXBlLkFjdGlvblwiIGZpbHRlci1jbGVhcj48L3NwYW4+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0XHRcdFx0PC90aD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBEZXRhaWxzIGNvbHVtbiAtLT5cclxuXHQ8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XHJcblx0XHQ8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiIFthdHRyLmNvbHNwYW5dPVwiKGRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmMpLmxlbmd0aFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicm93LWRldGFpbFwiIFtAZGV0YWlsRXhwYW5kXT1cInJvdyA9PSBleHBhbmRlZFJvdyA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiICNkZXRhaWxzVGVtcGxhdGU+XHJcblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlUmVmICYmIHJvdyA9PT0gZXhwYW5kZWRSb3dcIj5cclxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVJlZjsgY29udGV4dDp7cm93OiByb3csIGluZGV4OiBpbmRleCwgY29udGV4dDogY29udGV4dH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L3RkPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PCEtLSAjcmVnaW9uIEZpbHRlciBoZWFkZXIgLS0+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmFibGVcIj5cclxuXHRcdDx0ciBtYXQtaGVhZGVyLXJvdyAqY2RrSGVhZGVyUm93RGVmPVwiZGlzcGxheWVkRmlsdGVyQ29sdW1ucyQgfCBhc3luY1wiPjwvdHI+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8dHIgbWF0LWhlYWRlci1yb3cgKmNka0hlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmM7IHN0aWNreTogc3RpY2t5RmlsdGVyXCI+PC90cj5cclxuXHQ8dHIgbWF0LXJvdyAqY2RrUm93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luYzsgbGV0IGluZGV4ID0gZGF0YUluZGV4XCIgW25nQ2xhc3NdPVwicm93TmdDbGFzcz9yb3dOZ0NsYXNzKHJvdywgY29udGV4dCk6bnVsbFwiIFtjbGFzcy5leHBhbmRlZC1yb3ddPVwiZXhwYW5kZWRSb3cgPT09IHJvd1wiIChjbGljayk9XCJoYW5kbGVSb3dDbGljayhpbmRleCwgcm93KVwiIChjb250ZXh0bWVudSk9XCJoYW5kbGVSb3dSaWdodENsaWNrKCRldmVudCwgcm93KVwiPjwvdHI+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBEZXRyYWlscyByb3cgLS0+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHNUZW1wbGF0ZSB8fCB0ZW1wbGF0ZVJlZlwiPlxyXG5cdFx0PHRyIG1hdC1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiIGNsYXNzPVwiZGV0YWlsLXJvd1wiIFtuZ0NsYXNzXT1cInJvd05nQ2xhc3M/cm93TmdDbGFzcyhyb3csIGNvbnRleHQpOm51bGxcIj48L3RyPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuPC90YWJsZT5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuPCEtLSAjcmVnaW9uIFJvdyBzaG93biB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIGRhdGEuLS0+XHJcbjxkaXYgY2xhc3M9XCJtYXQtY2VsbCBwYWQgdGFibGUtZW1wdHkgdHh0LWl0YWxpY1wiICpuZ0lmPVwiIWRhdGFTb3VyY2U/LmZpbHRlcmVkRGF0YT8ubGVuZ3RoICYmICFkYXRhU291cmNlPy50b3RhbFwiIGkxOG49XCJAQG5vUmVzdWx0c0ZvdW5kXCI+Tm8gcmVzdWx0cyB3ZXJlIGZvdW5kLjwvZGl2PlxyXG48IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwidGFibGUtZm9vdGVyXCIgbGF5b3V0PVwicm93XCI+XHJcblx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RhYmxlLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XHJcblx0PHNwYW4gZmxleD48L3NwYW4+XHJcblx0PG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmFibGVcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIHNob3dGaXJzdExhc3RCdXR0b25zPVwidHJ1ZVwiPjwvbWF0LXBhZ2luYXRvcj5cclxuPC9kaXY+Il19
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuTixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FB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QUFLO2dCQWFDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsYUFBYTtzQkFEbkIsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxNQUFNO2dCQU9BLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7Z0JBVUMsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFZaEMsU0FBUztzQkFEWixTQUFTO3VCQUFDLFlBQVk7Z0JBZ0JuQixPQUFPO3NCQURWLEtBQUs7Z0JBNEJDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxzQkFBc0I7c0JBRDVCLFlBQVk7dUJBQUMsY0FBYztnQkFpQnJCLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxlQUFlO3NCQURyQixLQUFLO2dCQWdOTixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBBVVRPX1NUWUxFLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlscyc7XHJcbmltcG9ydCB7IER5bmFtaWNCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2hlbHBlcnMvZHluYW1pYy1idWlsZGVyJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy90YWJsZS1jb2x1bW4tdHlwZSc7XHJcbmltcG9ydCB7IGdldFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS5kYXRhLXNvdXJjZSc7XHJcbmltcG9ydCB7IFRhYmxlU3RhdGljRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlLnN0YXRpYy1kYXRhLXNvdXJjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3ZkLWR5bmFtaWMtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJ2R5bmFtaWMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuXHRhbmltYXRpb25zOiBbXHJcblx0XHR0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXHJcblx0XHRcdHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnIH0pKSxcclxuXHRcdFx0c3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6IEFVVE9fU1RZTEUgfSkpLFxyXG5cdFx0XHR0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG5cdFx0XSksXHJcblx0XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCd0YWJsZScpXHJcblx0cHVibGljIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IFZpZXdDb250YWluZXJSZWZcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkcmVuKCdkZXRhaWxzVGVtcGxhdGUnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuXHRwdWJsaWMgZGV0YWlsc1RlbXBsYXRlUmVmOiBRdWVyeUxpc3Q8YW55PjtcclxuXHJcblx0LyoqXHJcblx0ICogRGV0YWlscyB0ZW1wbGF0ZVxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXHJcblx0cHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhLXRhYmxlIGRhdGFzb3VyY2VcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBkYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+IHwgYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBUYWJsZSBkYXRhXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRzZXQgZGF0YShkYXRhOiBhbnkpIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBUYWJsZVN0YXRpY0RhdGFTb3VyY2UoZGF0YSk7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMubWF0U29ydDtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLl9wYWdpbmF0b3I7XHJcblx0XHR0aGlzLnBhZ2luYWJsZSA9IHRydWU7XHJcblx0XHR0aGlzLnN0YXRpYyA9IHRydWU7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogQ2xhc3MgdHlwZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGNsYXNzVHlwZTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IGNvbnRleHQgXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY29udGV4dDogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBkYXRhU291cmNlRmlsdGVyOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBkYXRhU291cmNlRmlsdGVyOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogU3RhdGljIHRhYmxlXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc3RhdGljOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGZpbHRlcmFibGU/XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBhZ2luYWJsZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBwYWdpbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgdGhlIGNvbHVtbiAnQ2hlY2tib3gnXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgY29sdW1uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc29ydERpcmVjdGlvbjogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBTdGlja3kgaGVhZGVyXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc3RpY2t5SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogU3RpY2t5IGZpbHRlclxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHN0aWNreUZpbHRlcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJvdyBjbGljayBldmVudFxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyByb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogcm93TmdDbGFzczogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyByb3dOZ0NsYXNzOiBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogZGV0YWlsc1RlbXBsYXRlOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRldGFpbHNUZW1wbGF0ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBfcmVhZG9ubHk6IGJvb2xlYW47XHJcblx0ICovXHJcblx0cHVibGljIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiByZWFkb25seTogYm9vbGVhbjtcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCByZWFkb25seSgpIHsgcmV0dXJuIHRoaXMuX3JlYWRvbmx5OyB9XHJcblx0c2V0IHJlYWRvbmx5KHJlYWRvbmx5KSB7XHJcblx0XHR0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZWFkb25seSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RBbGxGaWx0ZXI6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VsZWN0QWxsRmlsdGVyOiAodmFsdWU6IGFueSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IGFueVtdKSA9PiB1bmtub3duO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBfcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIF9wYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuXHJcblx0LyoqXHJcblx0ICogcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvcilcclxuXHRzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XHJcblx0XHRpZiAocGFnaW5hdG9yKSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogX2NvbHVtbnM6IFRhYmxlQ29sdW1uW11cclxuXHQgKi9cclxuXHRwcml2YXRlIF9jb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbHVtbnM6IENvbHVtbltdXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgY29sdW1ucygpOiBUYWJsZUNvbHVtbltdIHsgcmV0dXJuIHRoaXMuX2NvbHVtbnM7IH07XHJcblx0c2V0IGNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSkgeyB0aGlzLl9jb2x1bW5zID0gY29sdW1uczsgfTtcclxuXHJcblx0LyoqXHJcblx0ICogY29sdW1uc1N1YmplY3Q6IFN1YmplY3Q8KFRhYmxlQ29sdW1uIHwgc3RyaW5nKVtdPlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb2x1bW5zU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PChUYWJsZUNvbHVtbiB8IHN0cmluZylbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PChUYWJsZUNvbHVtbiB8IHN0cmluZylbXT4oW10pO1xyXG5cclxuXHQvKipcclxuXHQgKiBjb2x1bW5zJDogT2JzZXJ2YWJsZTwoVGFibGVDb2x1bW4gfCBzdHJpbmcpW10+XHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtbnMkOiBPYnNlcnZhYmxlPChUYWJsZUNvbHVtbiB8IHN0cmluZylbXT4gPSB0aGlzLmNvbHVtbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpOztcclxuXHJcblx0LyoqXHJcblx0ICogRGlzcGxheWVkIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZGlzcGxheWVkQ29sdW1ucyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5ZWQgZmlsdGVyIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZGlzcGxheWVkRmlsdGVyQ29sdW1ucyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xyXG5cclxuXHQvKipcclxuXHQgKiBUYWJsZSByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJvd01lbnVJdGVtczogQWN0aW9uSXRlbVtdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbHVtbnMgdG8gZXhjbHVkZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGV4Y2x1ZGVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogUmVmZXJlbmNlIHRvIHRoZSBNYXRNZW51VHJpZ2dlciBpbiB0aGUgRE9NXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZHJlbihNYXRNZW51VHJpZ2dlcilcclxuXHRwdWJsaWMgcm93Q29udGV4dE1lbnVUcmlnZ2VyczogUXVlcnlMaXN0PE1hdE1lbnVUcmlnZ2VyPjtcclxuXHJcblx0LyoqXHJcblx0ICogQ29sdW1uVHlwZTogQ29sdW1uVHlwZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBDb2x1bW5UeXBlOiB0eXBlb2YgVGFibGVDb2x1bW5UeXBlID0gVGFibGVDb2x1bW5UeXBlO1xyXG5cclxuXHQvKipcclxuXHQgKiBleHBhbmRlZFJvdzogYW55XHJcblx0ICovXHJcblx0cHVibGljIGV4cGFuZGVkUm93OiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlZmF1bHQgcGFnZSBzaXplXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcGFnZVNpemU6IG51bWJlciA9IDE1O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHBhZ2VTaXplT3B0aW9uczogQXJyYXk8bnVtYmVyPiA9IFs1LCAxMCwgMTUsIDIwLCAzMCwgNTAsIDEwMCwgMjAwXTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gZHluYW1pY0J1aWxkZXIgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBkeW5hbWljQnVpbGRlcjogRHluYW1pY0J1aWxkZXIsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG5cdCAqIGRlZmF1bHQgY2hhbmdlIGRldGVjdG9yIGhhcyBjaGVja2VkIHRoZSBkaXJlY3RpdmUnc1xyXG5cdCAqIGRhdGEtYm91bmQgcHJvcGVydGllcyBmb3IgdGhlIGZpcnN0IHRpbWUsXHJcblx0ICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuXHQgKiBJdCBpcyBpbnZva2VkIG9ubHkgb25jZSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgaW5zdGFudGlhdGVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY2xhc3NUeXBlKSB7XHJcblx0XHRcdC8qIEdldCB0aGUgdGFibGUgZGVmaW5pdGlvbiB1c2luZyB0aGUgY2xhc3MgdHlwZSAqL1xyXG5cdFx0XHR2YXIgdGFibGVEZWZpbml0aW9uID0gZ2V0VGFibGVEZWZpbml0aW9uKHRoaXMuY2xhc3NUeXBlKTtcclxuXHRcdFx0aWYgKHRhYmxlRGVmaW5pdGlvbikge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IFsuLi50YWJsZURlZmluaXRpb24uY29sdW1uc107XHJcblx0XHRcdFx0aWYgKHRoaXMucm93TWVudUl0ZW1zPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHQvKiBDaGVjayBpZiB0aGUgYWN0aW9uIGNvbHVtbiBhbHJlYWR5IGV4aXN0cyAqL1xyXG5cdFx0XHRcdFx0dmFyIGFjdGlvbkNvbG11biA9IHRoaXMuX2NvbHVtbnM/LmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGlvbicpO1xyXG5cclxuXHRcdFx0XHRcdC8qIElmIHNvLCBqdXN0IGFkZCB0aGUgbWVudSBpdGVtcyB0byBpdCAqL1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbkNvbG11biAhPSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGFjdGlvbkNvbG11bi5tZW51IHx8PSB7IGljb246ICdtb3JlX3ZlcnQnIH07XHJcblx0XHRcdFx0XHRcdHRoaXMucm93TWVudUl0ZW1zLmZvckVhY2goeSA9PiBhY3Rpb25Db2xtdW4ubWVudS5pdGVtcy51bnNoaWZ0KHkpKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvKiBPdGhlcndpc2UgYWRkIGEgbmV3IG9uZSAqL1xyXG5cdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX2NvbHVtbnMucHVzaChuZXcgVGFibGVDb2x1bW4oe1xyXG5cdFx0XHRcdFx0XHRcdGluZGV4OiAyMDAwLFxyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdhY3Rpb24nLFxyXG5cdFx0XHRcdFx0XHRcdHR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BY3Rpb24sXHJcblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXHJcblx0XHRcdFx0XHRcdFx0bWVudTogeyBpY29uOiAnbW9yZV92ZXJ0JywgaXRlbXM6IHRoaXMucm93TWVudUl0ZW1zIH0sXHJcblx0XHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxyXG5cdFx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBBZGQgY2hlY2tib3ggY29sdW1uICovXHJcblx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0YWJsZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5jb2x1bW5zLnVuc2hpZnQoeyBuYW1lOiAnc2VsZWN0JywgdHlwZTogVGFibGVDb2x1bW5UeXBlLkNoZWNrYm94IH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEJ1aWxkIGRpc3BsYXllZCBjb2x1bW5zICYgZmlsdGVyICovXHJcblx0XHR0aGlzLmNvbHVtbnMkPy5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdHRoaXMuZGlzcGxheWVkQ29sdW1ucyQgPSBvZih0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICF0aGlzLmV4Y2x1ZGVkQ29sdW1ucz8uaW5jbHVkZXMoeC5uYW1lKSk/Lm1hcChjID0+IGMubmFtZSkpO1xyXG5cdFx0XHR0aGlzLmRpc3BsYXllZEZpbHRlckNvbHVtbnMkID0gb2YodGhpcy5jb2x1bW5zPy5maWx0ZXIoeCA9PiAhdGhpcy5leGNsdWRlZENvbHVtbnM/LmluY2x1ZGVzKHgubmFtZSkpPy5tYXAoYyA9PiBgZmlsdGVyLiR7KGMuZmlsdGVyIHx8IGMubmFtZSl9YCkpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zICovXHJcblx0XHR0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgdGhlIHRhYmxlIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBkYXRlQ29sdW1ucygpOiB2b2lkIHtcclxuXHRcdC8qIFNvcnQgdGhlIGNvbHVtbnMgYnkgaW5kZXggKi9cclxuXHRcdFV0aWxzLnNvcnRBcnJheSh0aGlzLmNvbHVtbnMgfHwgW10sICdpbmRleCcpO1xyXG5cclxuXHRcdC8qIFRyaWdnZXIgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5jb2x1bW5zU3ViamVjdC5uZXh0KHRoaXMuY29sdW1ucyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb3VudHMgdmlzaWJsZSBhY3Rpb24gbWVudXNcclxuXHQgKiBAcGFyYW0gcm93IFxyXG5cdCAqIEBwYXJhbSBjb2x1bW4gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGhhc1Zpc2libGVSb3dNZW51SXRlbXMocm93OiBhbnksIGNvbHVtbjogVGFibGVDb2x1bW4pIHtcclxuXHRcdHJldHVybiBjb2x1bW4/LnJvd01lbnVJdGVtcz8uZmlsdGVyKHggPT4gIXguaGlkZSB8fCAheC5oaWRlKHJvdykpPy5sZW5ndGggPiAwO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byB0byBjb21wdXRlIHRoZSBpZGVudGl0eSBvZiBpdGVtcyBpbiBhbiBpdGVyYWJsZS5cclxuXHQgKiBAcGFyYW0gaW5kZXggXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIHRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBgJHtpdGVtLmlkfWA7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIHJvdyBjbGljayBldmVudFxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gcm93IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSb3dDbGljayhpbmRleDogYW55LCByb3c6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMudGVtcGxhdGVSZWYpIHtcclxuXHRcdFx0dGhpcy5leHBhbmRlZFJvdyA9IHRoaXMuZXhwYW5kZWRSb3cgPT09IHJvdyA/IG51bGwgOiByb3c7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLmRldGFpbHNUZW1wbGF0ZSkge1xyXG5cdFx0XHR0aGlzLmV4cGFuZGVkUm93ID0gdGhpcy5leHBhbmRlZFJvdyA9PT0gcm93ID8gbnVsbCA6IHJvdztcclxuXHRcdFx0dGhpcy5keW5hbWljQnVpbGRlci5jb21waWxlSHRtbCh0aGlzLmRldGFpbHNUZW1wbGF0ZVJlZi5nZXQoaW5kZXgpLCB0aGlzLmRldGFpbHNUZW1wbGF0ZSwgcm93KTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJvd0NsaWNrLmVtaXQocm93KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGljayB3aXRoIHRoZSByaWdodCBidXR0b25cclxuXHQgKiBAcGFyYW0gZXZlbnQgTW91c2VFdmVudCwgaXQgY29udGFpbnMgdGhlIGNvb3JkaW5hdGVzXHJcblx0ICogQHBhcmFtIGl0ZW0gT3VyIGRhdGEgY29udGFpbmVkIGluIHRoZSByb3cgb2YgdGhlIHRhYmxlXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZVJvd1JpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG5cdFx0dGhpcy5yb3dDb250ZXh0TWVudVRyaWdnZXJzPy50b0FycmF5KCk/LmZvckVhY2goeCA9PiB4LmNsb3NlTWVudSgpKTtcclxuXHRcdHZhciBtZW51VHJpZ2dlciA9IHRoaXMucm93Q29udGV4dE1lbnVUcmlnZ2Vycz8udG9BcnJheSgpPy5maWx0ZXIoeCA9PiB4WydfZWxlbWVudCddPy5uYXRpdmVFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2lkJykgPT0gYG1lbnUtJHtpdGVtLmlkfWApWzBdO1xyXG5cdFx0aWYgKG1lbnVUcmlnZ2VyICE9IG51bGwpIHtcclxuXHRcdFx0LyogQXZvaWRzIHRvIHNob3cgdGhlIHZpc3VhbGl6YXRpb24gb2YgdGhlIHJpZ2h0LWNsaWNrIG1lbnUgb2YgdGhlIGJyb3dzZXIgKi9cclxuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgcG9zaXRpb24gb2YgdGhlIG1lbnUgKi9cclxuXHRcdFx0bWVudVRyaWdnZXJbJ19lbGVtZW50J10/Lm5hdGl2ZUVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAke2V2ZW50LmNsaWVudFh9cHg7IHRvcDogJHtldmVudC5jbGllbnRZfXB4YCk7XHJcblxyXG5cdFx0XHQvKiBQYXNzIHRvIHRoZSBtZW51IHRoZSBjdXJyZW50IG9iamVjdCAqL1xyXG5cdFx0XHRtZW51VHJpZ2dlci5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9XHJcblxyXG5cdFx0XHQvKiBPcGVuIHRoZSBtZW51ICovXHJcblx0XHRcdG1lbnVUcmlnZ2VyLm9wZW5NZW51KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIGFuIGVudGl0eVxyXG5cdCAqIEBwYXJhbSByb3cgXHJcblx0ICogQHBhcmFtIGZpZWxkTmFtZSBcclxuXHQgKiBAcGFyYW0gcGF0aCBcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2gocm93OiBhbnksIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgdmFsdWU6IGFueSwgaW5jbHVkZXM6IGFueSk6IHZvaWQge1xyXG5cdFx0LyogR2V0IGVudGl0eSBieSBJRCAqL1xyXG5cdFx0bGV0IGVudGl0eSA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8uZmlsdGVyKHggPT4gKDxhbnk+eCkuaWQgPT09IHJvdy5pZClbMF07XHJcblx0XHRpZiAoZW50aXR5KSB7XHJcblx0XHRcdC8qIEJ1aWxkIHBhdGNoIG1ldGhvZHMgKi9cclxuXHRcdFx0bGV0IHBhdGNoZXMgPSBmaWVsZHMubWFwKHggPT4geyByZXR1cm4geyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7eH1gLCB2YWx1ZTogdmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBlbnRpdHlbeF0gfTsgfSk7XHJcblxyXG5cdFx0XHQvKiBTZW5kIHJlcXVlc3QgKi9cclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnNlcnZpY2VcclxuXHRcdFx0XHQucGF0Y2gocm93LmlkLCBwYXRjaGVzLCBudWxsLCB7IGhlYWRlcnM6IHsgJ1Nob3ctTWVzc2FnZSc6ICdZZXMnIH0sIHBhcmFtczogaW5jbHVkZXMgPyBVdGlscy50b0h0dHBQYXJhbXMoeyBpbmNsdWRlczogaW5jbHVkZXMgfSkgOiBudWxsIH0pXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoXzogYW55KSA9PiB0aGlzLmRhdGFTb3VyY2UucmVsb2FkKCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVuZGVycyByb3dzIGJhc2VkIG9uIHRoZSB0YWJsZSdzIGxhdGVzdCBzZXQgb2YgZGF0YSwgd2hpY2ggd2FzIGVpdGhlciBwcm92aWRlZCBkaXJlY3RseSBhcyBhblxyXG5cdCAqIGlucHV0IG9yIHJldHJpZXZlZCB0aHJvdWdoIGFuIE9ic2VydmFibGUgc3RyZWFtIChkaXJlY3RseSBvciBmcm9tIGEgRGF0YVNvdXJjZSkuXHJcblx0ICogQ2hlY2tzIGZvciBkaWZmZXJlbmNlcyBpbiB0aGUgZGF0YSBzaW5jZSB0aGUgbGFzdCBkaWZmIHRvIHBlcmZvcm0gb25seSB0aGUgbmVjZXNzYXJ5XHJcblx0ICogY2hhbmdlcyAoYWRkL3JlbW92ZS9tb3ZlIHJvd3MpLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZW5kZXJSb3dzKCk6IHZvaWQge1xyXG5cdFx0dGhpcy50YWJsZS5yZW5kZXJSb3dzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGNlbGwgY2xhc3NcclxuXHQgKiBAcGFyYW0gY29sdW1uIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRDZWxsQ2xhc3MoY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93OiBhbnkpOiBhbnkge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oY29sdW1uLmNlbGxOZ0NsYXNzID8gY29sdW1uLmNlbGxOZ0NsYXNzKHJvdykgOiB7ICd0ZXh0LXJpZ2h0JzogY29sdW1uLmFycm93QmVmb3JlIH0sIHRoaXMuZ2V0VmlzaWJpbGl0eUNsYXNzKGNvbHVtbikpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBjZWxsIGNsYXNzXHJcblx0ICogQHBhcmFtIGNvbHVtbiBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0VmlzaWJpbGl0eUNsYXNzKGNvbHVtbjogVGFibGVDb2x1bW4pOiBhbnkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0J2d0LXhzJzogY29sdW1uLnNob3dHdFhzLFxyXG5cdFx0XHQnZ3Qtc20nOiBjb2x1bW4uc2hvd0d0U20sXHJcblx0XHRcdCdndC1tZCc6IGNvbHVtbi5zaG93R3RNZCxcclxuXHRcdFx0J2d0LWxnJzogY29sdW1uLnNob3dHdExnLFxyXG5cdFx0XHQnZ3QteGwnOiBjb2x1bW4uc2hvd0d0WGwsXHJcblx0XHRcdCdndC14eGwnOiBjb2x1bW4uc2hvd0d0WHhsXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBhIHN0cmluZyBmdW5jdGlvbiBleHByZXNzaW9uXHJcblx0ICogQHBhcmFtIGV4cHJlc3Npb24gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nIHwgRnVuY3Rpb24sIGl0ZW06IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWV4cHJlc3Npb24pIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBleHByZXNzaW9uID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdHJldHVybiBleHByZXNzaW9uKGl0ZW0sIHRoaXMuY29udGV4dCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGV4cHJlc3Npb247XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNwb25kcyB0byB1c2VyLWluaXRpYXRlZCBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y29udGV4dG1lbnUnLCBbJyRldmVudCddKVxyXG5cdGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xyXG5cdFx0LyogQXZvaWRzIHRvIHNob3cgdGhlIHZpc3VhbGl6YXRpb24gb2YgdGhlIHJpZ2h0LWNsaWNrIG1lbnUgb2YgdGhlIGJyb3dzZXIgKi9cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0LyogQ2xvc2UgYWxsIG9wZW4gbWVudXMgKi9cclxuXHRcdGlmICgoZXZlbnQudGFyZ2V0IGFzIGFueSk/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2Nkay1vdmVybGF5LWJhY2tkcm9wJykpIHtcclxuXHRcdFx0dGhpcy5yb3dDb250ZXh0TWVudVRyaWdnZXJzPy50b0FycmF5KCk/LmZvckVhY2goeCA9PiB4LmNsb3NlTWVudSgpKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgaW52b2tlZCBpbW1lZGlhdGVseSBhZnRlciB0aGVcclxuXHQgKiBkZWZhdWx0IGNoYW5nZSBkZXRlY3RvciBoYXMgY29tcGxldGVkIG9uZSBjaGFuZ2UtY2hlY2sgY3ljbGVcclxuXHQgKiBmb3IgYSBjb21wb25lbnQncyB2aWV3LlxyXG5cdCAqL1xyXG5cdG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxufSIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nLXByb2dyZXNzXCIgKm5nSWY9XCIhc3RhdGljXCI+XHJcblx0PG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImRhdGFTb3VyY2U/LmlzTG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPC9kaXY+XHJcblxyXG48IS0tICNyZWdpb24gRGF0YSB0YWJsZSAtLT5cclxuPHRhYmxlIG1hdC10YWJsZSAjdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFtkYXRhU291cmNlRmlsdGVyXT1cImRhdGFTb3VyY2VGaWx0ZXJcIiBbbmdDbGFzc109XCJ7J3RhYmxlLWZpeGVkJzogIWRldGFpbHNUZW1wbGF0ZSAmJiAhdGVtcGxhdGVSZWZ9XCIgW3RyYWNrQnldPVwidHJhY2tCeVwiIG1hdFNvcnQgbWF0U29ydERpc2FibGVDbGVhciBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlfHwnaWQnXCIgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiIG11bHRpVGVtcGxhdGVEYXRhUm93cz5cclxuXHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQgfCBhc3luY1wiPlxyXG5cdFx0PCEtLSAjcmVnaW9uIENvbHVtbiBkZWYgLS0+XHJcblx0XHQ8bmctY29udGFpbmVyIFtjZGtDb2x1bW5EZWZdPVwiY29sdW1uLm5hbWVcIiBbc3RpY2t5XT1cImNvbHVtbi5zdGlja3lcIiBbc3RpY2t5RW5kXT1cImNvbHVtbi5zdGlja3lFbmRcIj5cclxuXHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbi5zb3J0QnkgfHwgY29sdW1uLm5hbWVcIiBbaGlkZGVuXT1cImNvbHVtbi5oaWRkZW5cIiBbbmdTdHlsZV09XCJ7bWF4V2lkdGg6Y29sdW1uLm1heFdpZHRoPyhjb2x1bW4ubWF4V2lkdGgrKGNvbHVtbi5tYXhXaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsbWluV2lkdGg6Y29sdW1uLm1pbldpZHRoPyhjb2x1bW4ubWluV2lkdGgrKGNvbHVtbi5taW5XaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsd2lkdGg6Y29sdW1uLndpZHRoPyhjb2x1bW4ud2lkdGgrKGNvbHVtbi53aWR0aFVuaXQgfHwgJ3B4JykpOm51bGx9XCIgW2Rpc2FibGVkXT1cImNvbHVtbi50eXBlID09IENvbHVtblR5cGUuQ2hlY2tib3ggfHwgY29sdW1uLmRpc2FibGVkXCIgW25nQ2xhc3NdPVwieydndC14cyc6IGNvbHVtbi5zaG93R3RYcywgJ2d0LXNtJzogY29sdW1uLnNob3dHdFNtLCAnZ3QtbWQnOiBjb2x1bW4uc2hvd0d0TWQsICdndC1sZyc6IGNvbHVtbi5zaG93R3RMZywgJ2d0LXhsJzogY29sdW1uLnNob3dHdFhsLCAnZ3QteHhsJzogY29sdW1uLnNob3dHdFh4bH1cIiBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW4uYXJyb3dCZWZvcmU/J2JlZm9yZSc6J2FmdGVyJ1wiPlxyXG5cdFx0XHRcdDxtYXQtY2hlY2tib3ggKm5nSWY9XCJjb2x1bW4udHlwZSA9PSBDb2x1bW5UeXBlLkNoZWNrYm94XCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBkYXRhU291cmNlLnRvZ2dsZVNlbGVjdCgkZXZlbnQsIHNlbGVjdEFsbEZpbHRlcikgOiBudWxsXCIgW2Rpc2FibGVkXT1cIiFkYXRhU291cmNlLnBhZ2luYXRvcj8ubGVuZ3RoXCIgW2NoZWNrZWRdPVwiZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSgpICYmIGRhdGFTb3VyY2UuaXNBbGxTZWxlY3RlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwiZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSgpICYmICFkYXRhU291cmNlLmlzQWxsU2VsZWN0ZWQoKVwiPjwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHRcdDxzcGFuICpuZ0lmPVwiY29sdW1uLnR5cGUgIT0gQ29sdW1uVHlwZS5DaGVja2JveFwiPnt7Y29sdW1uLmhlYWRlcn19PC9zcGFuPlxyXG5cdFx0XHQ8L3RoPlxyXG5cclxuXHRcdFx0PCEtLSBjb2x1bW4uY2VsbE5nQ2xhc3MgPyBjb2x1bW4uY2VsbE5nQ2xhc3Mocm93LCBjb250ZXh0KSA6IHsgJ3RleHQtcmlnaHQnOiBjb2x1bW4uYXJyb3dCZWZvcmUgfSAtLT5cclxuXHRcdFx0PHRkIG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvdzsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIiBbbWF0VG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcD9jb2x1bW4udG9vbHRpcChyb3csIGNvbnRleHQpOm51bGxcIiBbbWF0VG9vbHRpcENsYXNzXT1cImNvbHVtbi50b29sdGlwQ2xhc3NcIiBbaGlkZGVuXT1cImNvbHVtbi5oaWRkZW5cIiBbbmdDbGFzc109XCJ7J2d0LXhzJzogY29sdW1uLnNob3dHdFhzLCAnZ3Qtc20nOiBjb2x1bW4uc2hvd0d0U20sICdndC1tZCc6IGNvbHVtbi5zaG93R3RNZCwgJ2d0LWxnJzogY29sdW1uLnNob3dHdExnLCAnZ3QteGwnOiBjb2x1bW4uc2hvd0d0WGwsICdndC14eGwnOiBjb2x1bW4uc2hvd0d0WHhsfVwiIFtuZ1N0eWxlXT1cInttYXhXaWR0aDpjb2x1bW4ubWF4V2lkdGg/KGNvbHVtbi5tYXhXaWR0aCsoY29sdW1uLm1heFdpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCxtaW5XaWR0aDpjb2x1bW4ubWluV2lkdGg/KGNvbHVtbi5taW5XaWR0aCsoY29sdW1uLm1pbldpZHRoVW5pdCB8fCAncHgnKSk6bnVsbCx3aWR0aDpjb2x1bW4ud2lkdGg/KGNvbHVtbi53aWR0aCsoY29sdW1uLndpZHRoVW5pdCB8fCAncHgnKSk6bnVsbH1cIj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiPlxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIEVudW0gY29sdW1uIC0tPlxyXG5cdFx0XHRcdFx0PG1hdC1jaGVja2JveCAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5DaGVja2JveFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoY2hhbmdlKT1cIiRldmVudCA/IGRhdGFTb3VyY2Uuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKHJvdykgOiBudWxsXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5IHx8IChjb2x1bW4uZGlzYWJsZWQgfHwgKGNvbHVtbi5kaXNhYmxlICYmIGNvbHVtbi5kaXNhYmxlKHJvdywgY29udGV4dCkpKVwiIFtjaGVja2VkXT1cImRhdGFTb3VyY2Uuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChyb3cpXCI+PC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIEVudW0gY29sdW1uIC0tPlxyXG5cdFx0XHRcdFx0PHNwYW4gKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuRW51bVwiIGkxOG49XCJAQHNlbGVjdGlvblwiPntjb2x1bW4uY29udGVudChyb3cpIHwgZW51bTpjb2x1bW4uZW51bVR5cGU6Y29sdW1uLmVudW1QcmVmaXgsIHNlbGVjdCwgdHlwZSB7dHlwZX0gb3RoZXIge3t7Y29sdW1uLmNvbnRlbnQocm93LCBjb250ZXh0KSB8IGVudW06Y29sdW1uLmVudW1UeXBlOmNvbHVtbi5lbnVtUHJlZml4fX19fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gVG9nZ2xlIGNvbHVtbiAtLT5cclxuXHRcdFx0XHRcdDxtYXQtc2xpZGUtdG9nZ2xlICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLlRvZ2dsZVwiIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5uYW1lXVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgKG5nTW9kZWxDaGFuZ2UpPVwiY29sdW1uLmV2ZW50Pyhjb2x1bW4uZXZlbnRBcmdzP2NvbHVtbi5ldmVudChyb3csY29sdW1uLmV2ZW50QXJncyk6Y29sdW1uLmV2ZW50KHJvdywgY29udGV4dCkpOm51bGxcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHkgfHwgKGNvbHVtbi5kaXNhYmxlICYmIGNvbHVtbi5kaXNhYmxlKHJvdywgY29udGV4dCkpXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBEYXRlIGNvbHVtbiAtLT5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLkRhdGVcIj57e2NvbHVtbi5jb250ZW50KHJvdywgY29udGV4dCkgfCBkYXRlOmNvbHVtbi5zaG9ydERhdGU/J2RkLk1NLnl5eXknOidkZC5NTS55eXl5IEhIOm1tOnNzJ319PC9zcGFuPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBUZXh0IElucHV0IGNvbHVtbiAtLT5cclxuXHRcdFx0XHRcdDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5UZXh0SW5wdXRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGxheW91dD1cImNvbHVtblwiIGxheW91dC1hbGlnbj1cImNlbnRlciBzdGFydFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwie3tjb2x1bW4uaW5wdXRUeXBlfX1cIiBhdXRvY29tcGxldGU9XCJub25lXCIgbWF0SW5wdXQgbmFtZT1cInt7Y29sdW1uLm5hbWV9fXt7cm93SW5kZXh9fVwiIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5uYW1lXVwiIFtkaXNhYmxlZF09XCJyZWFkb25seSB8fCAoY29sdW1uLmRpc2FibGVkIHx8IChjb2x1bW4uZGlzYWJsZSAmJiBjb2x1bW4uZGlzYWJsZShyb3csIGNvbnRleHQpKSlcIiBbbWluXT1cImNvbHVtbi5pbnB1dE1pbj9jb2x1bW4uaW5wdXRNaW4ocm93LCBjb250ZXh0KTpudWxsXCIgW21heF09XCJjb2x1bW4uaW5wdXRNYXg/Y29sdW1uLmlucHV0TWF4KHJvdywgY29udGV4dCk6bnVsbFwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbHVtbi5jaGFuZ2U/Y29sdW1uLmNoYW5nZShyb3csIGNvbnRleHQpOnBhdGNoKHJvdywgW2NvbHVtbi5uYW1lXSwgcm93W2NvbHVtbi5uYW1lXSwgY29sdW1uLnBhdGNoSW5jbHVkZXMpXCIgW25nTW9kZWxPcHRpb25zXT1cInt1cGRhdGVPbjogJ2JsdXInfVwiIChrZXlkb3duLmVudGVyKT1cIiRldmVudC50YXJnZXQuYmx1cigpO2ZhbHNlXCI+XHJcblx0XHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBBY3Rpb24gLS0+XHJcblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJDb2x1bW5UeXBlLkFjdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGlkPVwibWVudS17e3Jvdy5pZH19XCIgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47IHBvc2l0aW9uOiBmaXhlZDtcIiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudS5tYXRNZW51XCIgKm5nSWY9XCJtZW51Py5tYXRNZW51ICYmICFyb3cubG9ja2VkICYmIGhhc1Zpc2libGVSb3dNZW51SXRlbXMocm93LCBjb2x1bW4pXCI+PC9kaXY+XHJcblx0XHRcdFx0XHRcdDx2ZC1keW5hbWljLW1lbnUgW2l0ZW1zXT1cIltjb2x1bW4ubWVudV1cIiBbZGF0YV09XCJyb3dcIiBbY29udGV4dF09XCJjb250ZXh0XCIgI21lbnU+PC92ZC1keW5hbWljLW1lbnU+XHJcblx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0XHRcdFx0XHQ8IS0tICNyZWdpb24gTWVudSAtLT5cclxuXHRcdFx0XHRcdDx2ZC1keW5hbWljLW1lbnUgKm5nU3dpdGNoQ2FzZT1cIkNvbHVtblR5cGUuTWVudVwiIFtpdGVtc109XCJbY29sdW1uLm1lbnVdXCIgW2RhdGFdPVwicm93XCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvdmQtZHluYW1pYy1tZW51PlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBpY29uIGJ1dHRvbiAtLT5cclxuXHRcdFx0XHRcdDxhIG1hdC1pY29uLWJ1dHRvbiAqbmdTd2l0Y2hDYXNlPVwiQ29sdW1uVHlwZS5JY29uQnV0dG9uXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtjb2x1bW4uaWNvbkJ1dHRvbj8uZXZlbnQ/Y29sdW1uLmljb25CdXR0b24uZXZlbnQocm93LCBjb250ZXh0KTpudWxsXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtaWNvbiBmb250U2V0PVwie3tjb2x1bW4uaWNvbkJ1dHRvbj8uaWNvbkZvbnRTZXQgfHwgJ21hdGVyaWFsLWljb25zLW91dGxpbmVkJ319XCIgW2NsYXNzXT1cImhhbmRsZUV4cHJlc3Npb24oY29sdW1uLmljb25CdXR0b24/Lmljb25DbGFzcywgcm93KVwiPnt7aGFuZGxlRXhwcmVzc2lvbihjb2x1bW4uaWNvbkJ1dHRvbj8uaWNvbiwgcm93KSB8fCAncmFkaW9fYnV0dG9uX2NoZWNrZWQnfX08L21hdC1pY29uPlxyXG5cdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBPdGhlciBjb2x1bW4gdHlwZXMgLS0+XHJcblx0XHRcdFx0XHQ8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0IFtpbm5lckh0bWxdPVwiY29sdW1uLmNvbnRlbnQgPyBjb2x1bW4uY29udGVudChyb3csIGNvbnRleHQpOicnXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBGaWx0ZXIgcm93IC0tPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhU291cmNlICYmIGZpbHRlcmFibGVcIj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zJCB8IGFzeW5jXCI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwiZmlsdGVyLnt7Y29sdW1uLmZpbHRlciB8fCBjb2x1bW4ubmFtZX19XCI+XHJcblx0XHRcdFx0PHRoIG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbaGlkZGVuXT1cImNvbHVtbi5oaWRkZW5cIiBbbmdTdHlsZV09XCJ7bWF4V2lkdGg6Y29sdW1uLm1heFdpZHRoPyhjb2x1bW4ubWF4V2lkdGgrKGNvbHVtbi5tYXhXaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsbWluV2lkdGg6Y29sdW1uLm1pbldpZHRoPyhjb2x1bW4ubWluV2lkdGgrKGNvbHVtbi5taW5XaWR0aFVuaXQgfHwgJ3B4JykpOm51bGwsd2lkdGg6Y29sdW1uLndpZHRoPyhjb2x1bW4ud2lkdGgrKGNvbHVtbi53aWR0aFVuaXQgfHwgJ3B4JykpOm51bGx9XCIgW25nQ2xhc3NdPVwieydndC14cyc6IGNvbHVtbi5zaG93R3RYcywgJ2d0LXNtJzogY29sdW1uLnNob3dHdFNtLCAnZ3QtbWQnOiBjb2x1bW4uc2hvd0d0TWQsICdndC1sZyc6IGNvbHVtbi5zaG93R3RMZywgJ2d0LXhsJzogY29sdW1uLnNob3dHdFhsLCAnZ3QteHhsJzogY29sdW1uLnNob3dHdFh4bH1cIj5cclxuXHRcdFx0XHRcdDwhLS0gI3JlZ2lvbiBUZXh0IGZpbHRlciAtLT5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiY29sdW1uLnR5cGUgPT0gQ29sdW1uVHlwZS5UZXh0IHx8IGNvbHVtbi50eXBlID09IENvbHVtblR5cGUuVGV4dElucHV0IHx8IGNvbHVtbi50eXBlID09IENvbHVtblR5cGUuTnVtYmVyXCIgZmlsdGVyLWlucHV0IFtvbmx5TnVtYmVyXT1cImNvbHVtbi5maWx0ZXJJbnB1dE51bWJlclwiIFtvcGVyYXRvcl09XCJjb2x1bW4uZmlsdGVyT3BlcmF0b3JcIj48L3NwYW4+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIFNlbGVjdCBmaWx0ZXIgLS0+XHJcblx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cImNvbHVtbi5lbmRwb2ludCB8fCBjb2x1bW4uZW51bVR5cGUgfHwgY29sdW1uLm9wdGlvbnNcIiBmaWx0ZXItc2VsZWN0IFtlbmRwb2ludF09XCJjb2x1bW4uZW5kcG9pbnRcIiBbZW51bV09XCJjb2x1bW4uZW51bVR5cGVcIiBbcHJlZml4XT1cImNvbHVtbi5lbnVtUHJlZml4XCIgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnNcIiBbdGV4dF09XCJjb2x1bW4uZmlsdGVyT3B0aW9uVGV4dCB8fCAnbmFtZSdcIj48L3NwYW4+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIERhdGUgZmlsdGVyIC0tPlxyXG5cdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJjb2x1bW4udHlwZSA9PSBDb2x1bW5UeXBlLkRhdGVcIiBmaWx0ZXItZGF0ZT48L3NwYW4+XHJcblx0XHRcdFx0XHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSAjcmVnaW9uIEFjdGlvbiBmaWx0ZXIgKGNsZWFyKSAtLT5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiY29sdW1uLnR5cGUgPT0gQ29sdW1uVHlwZS5BY3Rpb25cIiBmaWx0ZXItY2xlYXI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8IS0tICNyZWdpb24gRGV0YWlscyBjb2x1bW4gLS0+XHJcblx0PG5nLWNvbnRhaW5lciBjZGtDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxyXG5cdFx0PHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIiBbYXR0ci5jb2xzcGFuXT1cIihkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jKS5sZW5ndGhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInJvdy1kZXRhaWxcIiBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT0gZXhwYW5kZWRSb3cgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIiAjZGV0YWlsc1RlbXBsYXRlPlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZVJlZiAmJiByb3cgPT09IGV4cGFuZGVkUm93XCI+XHJcblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVSZWY7IGNvbnRleHQ6e3Jvdzogcm93LCBpbmRleDogaW5kZXgsIGNvbnRleHQ6IGNvbnRleHR9XCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC90ZD5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBGaWx0ZXIgaGVhZGVyIC0tPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJhYmxlXCI+XHJcblx0XHQ8dHIgbWF0LWhlYWRlci1yb3cgKmNka0hlYWRlclJvd0RlZj1cImRpc3BsYXllZEZpbHRlckNvbHVtbnMkIHwgYXN5bmNcIj48L3RyPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PHRyIG1hdC1oZWFkZXItcm93ICpjZGtIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jOyBzdGlja3k6IHN0aWNreUZpbHRlclwiPjwvdHI+XHJcblx0PHRyIG1hdC1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmM7IGxldCBpbmRleCA9IGRhdGFJbmRleFwiIFtuZ0NsYXNzXT1cInJvd05nQ2xhc3M/cm93TmdDbGFzcyhyb3csIGNvbnRleHQpOm51bGxcIiBbY2xhc3MuZXhwYW5kZWQtcm93XT1cImV4cGFuZGVkUm93ID09PSByb3dcIiAoY2xpY2spPVwiaGFuZGxlUm93Q2xpY2soaW5kZXgsIHJvdylcIiAoY29udGV4dG1lbnUpPVwiaGFuZGxlUm93UmlnaHRDbGljaygkZXZlbnQsIHJvdylcIj48L3RyPlxyXG5cclxuXHQ8IS0tICNyZWdpb24gRGV0cmFpbHMgcm93IC0tPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXRhaWxzVGVtcGxhdGUgfHwgdGVtcGxhdGVSZWZcIj5cclxuXHRcdDx0ciBtYXQtcm93ICpjZGtSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImRldGFpbC1yb3dcIiBbbmdDbGFzc109XCJyb3dOZ0NsYXNzP3Jvd05nQ2xhc3Mocm93LCBjb250ZXh0KTpudWxsXCI+PC90cj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvdGFibGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbjwhLS0gI3JlZ2lvbiBSb3cgc2hvd24gd2hlbiB0aGVyZSBpcyBubyBtYXRjaGluZyBkYXRhLi0tPlxyXG48ZGl2IGNsYXNzPVwibWF0LWNlbGwgcGFkIHRhYmxlLWVtcHR5IHR4dC1pdGFsaWNcIiAqbmdJZj1cIiFkYXRhU291cmNlPy5maWx0ZXJlZERhdGE/Lmxlbmd0aCAmJiAhZGF0YVNvdXJjZT8udG90YWxcIiBpMThuPVwiQEBub1Jlc3VsdHNGb3VuZFwiPk5vIHJlc3VsdHMgd2VyZSBmb3VuZC48L2Rpdj5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuPGRpdiBjbGFzcz1cInRhYmxlLWZvb3RlclwiIGxheW91dD1cInJvd1wiPlxyXG5cdDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZS1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG5cdDxzcGFuIGZsZXg+PC9zcGFuPlxyXG5cdDxtYXQtcGFnaW5hdG9yICpuZ0lmPVwicGFnaW5hYmxlXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9ucz1cInRydWVcIj48L21hdC1wYWdpbmF0b3I+XHJcbjwvZGl2PiJdfQ==
@@ -4999,8 +4999,8 @@ class VdDynamicTableComponent {
4999
4999
  var actionColmun = (_b = this._columns) === null || _b === void 0 ? void 0 : _b.find(x => x.name == 'action');
5000
5000
  /* If so, just add the menu items to it */
5001
5001
  if (actionColmun != null) {
5002
- actionColmun.rowMenuItems = [];
5003
- this.rowMenuItems.forEach(y => actionColmun.rowMenuItems.unshift(y));
5002
+ actionColmun.menu || (actionColmun.menu = { icon: 'more_vert' });
5003
+ this.rowMenuItems.forEach(y => actionColmun.menu.items.unshift(y));
5004
5004
  }
5005
5005
  /* Otherwise add a new one */
5006
5006
  else {
@@ -5009,7 +5009,7 @@ class VdDynamicTableComponent {
5009
5009
  name: 'action',
5010
5010
  type: TableColumnType.Action,
5011
5011
  disabled: true,
5012
- rowMenuItems: this.rowMenuItems,
5012
+ menu: { icon: 'more_vert', items: this.rowMenuItems },
5013
5013
  configurable: false
5014
5014
  }));
5015
5015
  }