@messaia/cdk 15.0.0-rc43 → 15.0.0-rc45

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.
@@ -146,6 +146,7 @@ export class GenericListComponent extends BaseComponent {
146
146
  this.route.data.subscribe((data) => {
147
147
  Object.assign(this.query, data.query || {});
148
148
  this.classType || (this.classType = data.classType);
149
+ this.className || (this.className = data.className);
149
150
  if (data.columns) {
150
151
  this.columns = [...(data.columns || [])];
151
152
  }
@@ -699,4 +700,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
699
700
  type: HostListener,
700
701
  args: ['document:keydown', ['$event']]
701
702
  }] } });
702
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFFL0Y7O0dBRUc7QUFDSCxXQUFXO0FBRVgs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Qzs7b0lBM3lCeEMsb0JBQW9CO3dIQUFwQixvQkFBb0IsdUxBUzlCLFlBQVkscUZBTVosT0FBTyw2RkF3RFAsdUJBQXVCOzJGQXZFYixvQkFBb0I7a0JBRHpDLFNBQVM7K0tBV0YsU0FBUztzQkFEZixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT2xDLElBQUk7c0JBRFYsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXlEN0IsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBcUY3QyxVQUFVO3NCQURoQixLQUFLO2dCQXltQk4sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQXBwU3RvcmFnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9oZWxwZXJzL2FwcC1zdG9yYWdlJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHknO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi90YWJsZS9lbnVtcy90YWJsZS1jb2x1bW4tdHlwZSc7XHJcbmltcG9ydCB7IGdldFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3RhYmxlL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUvdGFibGUuZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lnZW5lcmljLWxpc3QtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgSUVudGl0eSB8IGFueSwgVFNlcnZpY2UgZXh0ZW5kcyBHZW5lcmljU2VydmljZTxURW50aXR5Pj4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUdlbmVyaWNMaXN0Q29tcG9uZW50PFRFbnRpdHk+LCBPbkRlc3Ryb3kge1xyXG5cdC8qKlxyXG5cdCAqIExpc3QgdGl0bGVcclxuXHQgKi9cclxuXHRwdWJsaWMgc3VidGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFBhZ2luYXRvciBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBzb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYXZpZ2F0aW9ucyB0byBpbmNsdWRlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBpbmNsdWRlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmF2aWdhdGlvbnMgdG8gaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZXhjbHVkZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBwYXJhbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgcXVlcnk6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhLXRhYmxlIGRhdGFzb3VyY2VcclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPiB8IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyB0byBjcmVhdGUgdGhlIHRhYmxlIGZvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGFzc0luc3RhbmNlOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gXHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gTWRTb3J0IGF0dHJpYnV0ZVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoVmREeW5hbWljVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIGR5bmFtaWNUYWJsZTogVmREeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgZm9yIGNyZWF0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGFkZERpYWxvZ1R5cGU6IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIHRoZSBjb2x1bW4gJ0NoZWNrYm94J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgYnV0dG9uICdBZGQnXHJcblx0ICovXHJcblx0cHVibGljIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdFZGl0J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0RlbGV0ZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRG93bmxvYWQnXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEdXBsaWNhdGUnXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnQ29uZmlndXJlIHRhYmxlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiByb3dOZ0NsYXNzOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dOZ0NsYXNzOiAoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJvd0NsaWNrOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dDbGljazogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBlZGl0Um91dGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIG9uRWRpdDogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGRldGFpbHNUZW1wbGF0ZTogc3RyaW5nID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW1bXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyQWN0aW9uczogQWN0aW9uSXRlbVtdID0gW3tcclxuXHRcdGljb246ICdzeW5jJyxcclxuXHRcdGV2ZW50OiAoKSA9PiB0aGlzLmxvYWRMaXN0KClcclxuXHR9XTtcclxuXHJcblx0LyoqXHJcblx0ICogVG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUYWJsZSByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgYmFjayBidXR0b24gdG8gdGhlIHRvb2xiYXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBiYWNrQnV0dG9uOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhTG9hZGVkIGV2ZW50IHN1YnNjcmlwdGlvblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkYXRhTG9hZGVkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXkgZm9yIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY29uZmlnc0tleTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxpc3RDb25maWc6IHtjb25maWdzOiBhbnksIHF1ZXJ5OiBhbnl9XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxpc3RDb25maWc6IHsgY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSwgcXVlcnk6IGFueSB9ID0geyBjb25maWdzOiBbXSwgcXVlcnk6IHsgcGFnZVNpemU6IDE1IH0gfTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gc2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGNsYXNzVHlwZT86IHsgbmV3KCk6IFRFbnRpdHkgfVxyXG5cdCkge1xyXG5cdFx0c3VwZXIocm91dGUsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuXHRcdC8qIEFzc2VtYmxlIHRoZSBjb25maWcga2V5ICovXHJcblx0XHR0aGlzLmNvbmZpZ3NLZXkgPSBbdGhpcy5wcm9qZWN0TmFtZSwgJ2xpc3QtY29uZmlnJywgYnRvYSh0aGlzLmN1cnJlbnRCYXNlUm91dGUpLCB0aGlzLm1lbnU/LnRpdGxlXS5qb2luKCcuJyk7XHJcblxyXG5cdFx0LyogTG9hZCBsaXN0IGNvbmZpZ3MgKi9cclxuXHRcdHRoaXMubGlzdENvbmZpZyA9IEFwcFN0b3JhZ2UuZ2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHsgY29uZmlnczogW10sIHF1ZXJ5OiB7IHBhZ2VTaXplOiAxNSB9IH0pO1xyXG5cclxuXHRcdC8qIFNldCBiYWNrIGJ1dHRvbiBmcm9tIHJvdXRlIHBhcmFtcyAqL1xyXG5cdFx0dGhpcy5iYWNrQnV0dG9uID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ2JhY2tCdXR0b24nKSA9PSAndHJ1ZSc7XHJcblxyXG5cdFx0LyogUmVhZCBzb21lIHBhcmFtcyBmcm9tIHJvdXRpbmcgZGF0YSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgZGF0YS5xdWVyeSB8fCB7fSk7XHJcblx0XHRcdHRoaXMuY2xhc3NUeXBlIHx8PSBkYXRhLmNsYXNzVHlwZTtcclxuXHJcblx0XHRcdGlmIChkYXRhLmNvbHVtbnMpIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSBbLi4uKGRhdGEuY29sdW1ucyB8fCBbXSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5lbmRwb2ludCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5lbmRwb2ludCA9IGRhdGEuZW5kcG9pbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmluY2x1ZGVzKSB7XHJcblx0XHRcdFx0dGhpcy5pbmNsdWRlcyA9IGRhdGEuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaGFzT3duUHJvcGVydHkoeCkgJiYgeCAhPSAnY29sdW1ucycpIHtcclxuXHRcdFx0XHRcdHRoaXNbeF0gPSBkYXRhW3hdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgY29sdW1ucyBmcm9tIGNsYXNzICovXHJcblx0XHRpZiAodGhpcy5jbGFzc1R5cGUpIHtcclxuXHRcdFx0dGhpcy5jbGFzc0luc3RhbmNlID0gbmV3IHRoaXMuY2xhc3NUeXBlKCk7XHJcblxyXG5cdFx0XHQvKiBHZXQgdGhlIHRhYmxlIGRlZmluaXRpb24gdXNpbmcgdGhlIGNsYXNzIHR5cGUgKi9cclxuXHRcdFx0dmFyIHRhYmxlRGVmaW5pdGlvbiA9IGdldFRhYmxlRGVmaW5pdGlvbih0aGlzLmNsYXNzVHlwZSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHByb3BzIGluIHRoZSBjdXJyZW50IG9iamVjdCBmcm9tIHRoZSB0YWJsZSBkZWZpbml0aW9uICovXHJcblx0XHRcdE9iamVjdC5rZXlzKHRhYmxlRGVmaW5pdGlvbiB8fCB7fSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSkge1xyXG5cdFx0XHRcdFx0dGhpc1t4XSA9IHRhYmxlRGVmaW5pdGlvblt4XTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogU2V0IGVuZHBvaW50IGZyb20gdGFibGUgZGVmaW5pdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdGlmICh0YWJsZURlZmluaXRpb24/LmVuZHBvaW50KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gdGFibGVEZWZpbml0aW9uPy5lbmRwb2ludDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zIGZyb20gdGhlIHRhYmxlIGRlZmludGlvbiAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5jb2x1bW5zKSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGFibGVEZWZpbml0aW9uLmNvbHVtbnMubWFwKHggPT4geyByZXR1cm4geyAuLi54IH0gfSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEhhbmRsZSBldmVudHMgKi9cclxuXHRcdFx0dGhpcy5jb2x1bW5zPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgeC5ldmVudCA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdGxldCBldmVudE5hbWU6IHN0cmluZyA9ICgoeC5ldmVudCkgYXMgc3RyaW5nKTtcclxuXHRcdFx0XHRcdHguZXZlbnQgPSAocm93OiBhbnkpID0+ICh4LmV2ZW50QXJncyA/IHRoaXNbZXZlbnROYW1lXShyb3csIHguZXZlbnRBcmdzKSA6IHRoaXNbZXZlbnROYW1lXShyb3cpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogSGlkZSBjb2x1bW5zIHVzaW5nIHJvdXRlIGRhdGEgKi9cclxuXHRcdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKHg6IFRhYmxlQ29sdW1uKSA9PiAheC5oaWRlIHx8ICF4LmhpZGUoZGF0YSwgdGhpcykpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBIaWRlIGV4Y2x1ZGVkIGNvbHVtbnMgKi9cclxuXHRcdHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucz8uZmlsdGVyKCh4OiBUYWJsZUNvbHVtbikgPT4gIXRoaXMuZXhjbHVkZWRDb2x1bW5zPy5pbmNsdWRlcyh4Lm5hbWUpKTtcclxuXHJcblx0XHQvKiBBZGQgbGlzdCBtbmV1IGl0ZW1zICovXHJcblx0XHR0aGlzLmFkZFRvb2xiYXJNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAodGhpcy5keW5hbWljVGFibGUpIHtcclxuXHRcdFx0LyogQWRkIG1lbnUgaXRlbXMgZm9yIGVhY2ggcm93ICovXHJcblx0XHRcdHRoaXMuYWRkUm93TWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0XHQvKiBDaGVjayBpZiB0aGUgYWN0aW9uIGNvbHVtbiBhbHJlYWR5IGV4aXN0cyAqL1xyXG5cdFx0XHR2YXIgYWN0aW9uQ29sbXVuID0gKHRoaXMuY29sdW1ucyBhcyBUYWJsZUNvbHVtbltdKT8uZmluZCh4ID0+IHgubmFtZSA9PSAnYWN0aW9uJyk7XHJcblxyXG5cdFx0XHQvKiBJZiBzbywganVzdCBhZGQgdGhlIG1lbnUgaXRlbXMgdG8gaXQgKi9cclxuXHRcdFx0aWYgKGFjdGlvbkNvbG11biAhPSBudWxsKSB7XHJcblx0XHRcdFx0YWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyA9IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMgfHwgW107XHJcblx0XHRcdFx0dGhpcy5yb3dNZW51SXRlbXMuZm9yRWFjaCh5ID0+IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMudW5zaGlmdCh5KSk7XHJcblxyXG5cdFx0XHRcdC8qIENyZWF0ZSBhIHRhYmxlIG1lbnUgKi9cclxuXHRcdFx0XHRhY3Rpb25Db2xtdW4ubWVudSA9IG5ldyBBY3Rpb25JdGVtKHtcclxuXHRcdFx0XHRcdGljb246ICdtb3JlX3ZlcnQnLFxyXG5cdFx0XHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIE90aGVyd2lzZSBhZGQgYSBuZXcgb25lICovXHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucy5wdXNoKG5ldyBUYWJsZUNvbHVtbih7XHJcblx0XHRcdFx0XHRpbmRleDogMjAwMCxcclxuXHRcdFx0XHRcdG5hbWU6ICdhY3Rpb24nLFxyXG5cdFx0XHRcdFx0dHlwZTogVGFibGVDb2x1bW5UeXBlLkFjdGlvbixcclxuXHRcdFx0XHRcdGRpc2FibGVkOiB0cnVlLFxyXG5cdFx0XHRcdFx0bWVudTogbmV3IEFjdGlvbkl0ZW0oe1xyXG5cdFx0XHRcdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0XHRcdFx0aXRlbXM6IHRoaXMucm93TWVudUl0ZW1zXHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHJvd01lbnVJdGVtczogdGhpcy5yb3dNZW51SXRlbXMsXHJcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlXHJcblx0XHRcdFx0fSkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBHZXQgY3VzdG9tIGFjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdHZhciBhY3Rpb25zID0gdGFibGVEZWZpbml0aW9uPy5hY3Rpb25zO1xyXG5cdFx0XHRpZiAoYWN0aW9ucyAhPSBudWxsKSB7XHJcblx0XHRcdFx0YWN0aW9ucy5mb3JFYWNoKHkgPT4gdGhpcy5yb3dNZW51SXRlbXM/LnB1c2goeSkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnModHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IHF1ZXJ5IHBhcmFtcyBpbnRvIHF1ZXJ5IG9iamVjdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoeCA9PiBPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIHggfHwge30sIHsgcmV0dXJuVXJsOiBudWxsIH0pKTtcclxuXHJcblx0XHQvKiBJbml0aWxpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yIGFuZCBzb3J0ICovXHJcblx0XHR0aGlzLnNvcnQgPSB0aGlzLmR5bmFtaWNUYWJsZT8ubWF0U29ydCB8fCAodGhpcy5zb3J0ID8gdGhpcy5zb3J0IDogbmV3IE1hdFNvcnQoKSk7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPih0aGlzLnNlcnZpY2UhLCB0aGlzLnBhZ2luYXRvciwgdGhpcy5zb3J0KTtcclxuXHJcblx0XHQvKiBTZXQgaW5jbHVkZXMgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pbmNsdWRlcyA9IHRoaXMuaW5jbHVkZXM7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHJcblx0XHQvKiBMb2FkIHF1ZXJ5IGZyb20gYnJvd3NlciBzdG9yYWdlICovXHJcblx0XHR2YXIgc3RvcnJlZFF1ZXJ5ID0gdGhpcy5saXN0Q29uZmlnPy5xdWVyeTtcclxuXHRcdGlmIChzdG9ycmVkUXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLmZpZWxkRmlsdGVycyA9IHRoaXMuY2xlYW4oc3RvcnJlZFF1ZXJ5LmZpZWxkRmlsdGVycykgfHwge307XHJcblx0XHRcdHRoaXMuc29ydEFjdGl2ZSA9IHN0b3JyZWRRdWVyeS5zb3J0Qnk7XHJcblx0XHRcdHRoaXMuc29ydERpcmVjdGlvbiA9IHN0b3JyZWRRdWVyeS5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgPSBzdG9ycmVkUXVlcnkucGFnZVNpemU7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdlSW5kZXggPSBzdG9ycmVkUXVlcnkucGFnZUluZGV4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBzb21lIGZpbHRlciBmcm9tIHJvdXRlciAqL1xyXG5cdFx0aWYgKHRoaXMucXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHRoaXMucXVlcnk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVtZW1iZXIgdGhlIGZpbHRlcnMgKi9cclxuXHRcdHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZS5vbkRhdGFMb2FkZWQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHRoaXMubGlzdENvbmZpZyA/Pz0geyBjb25maWdzOiBbXSwgcXVlcnk6IHt9IH07XHJcblx0XHRcdFx0dGhpcy5saXN0Q29uZmlnLnF1ZXJ5ID0ge1xyXG5cdFx0XHRcdFx0ZmllbGRGaWx0ZXJzOiB0aGlzLmRhdGFTb3VyY2UuZmllbGRGaWx0ZXJzLFxyXG5cdFx0XHRcdFx0c29ydEJ5OiB0aGlzLnNvcnQuYWN0aXZlLFxyXG5cdFx0XHRcdFx0c29ydERpcmVjdGlvbjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuXHRcdFx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuXHRcdFx0XHRcdHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4LFxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdC8qIFNhdmUgdGhlIHNldHRpbmdzICovXHJcblx0XHRcdFx0QXBwU3RvcmFnZS5zZXRPYmplY3RFbmNvZGVkKHRoaXMuY29uZmlnc0tleSwgdGhpcy5saXN0Q29uZmlnKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25uZWN0cyBhIGNvbGxlY3Rpb24gdmlld2VyIChzdWNoIGFzIGEgZGF0YS10YWJsZSkgdG8gdGhlIGRhdGEgc291cmNlLiBcclxuXHQgKiBAcGFyYW0gc3RhdGljRmllbGRGaWx0ZXJzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KHN0YXRpY0ZpZWxkRmlsdGVyczogYW55ID0gbnVsbCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHN0YXRpY0ZpZWxkRmlsdGVycyB8fCB7fTtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KCkuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmR5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyB0aGUgdGFibGUgY29sdW1uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGRhdGVDb2x1bW5zKGxvYWRDb25maWc/OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHQvKiBHZXQgY29uZmlnIGZyb20gbG9jYWwgc3RvcmFnZSAqL1xyXG5cdFx0aWYgKGxvYWRDb25maWcpIHtcclxuXHRcdFx0dGhpcy5sb2FkQ29uZmlncygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNvcnQgdGhlIGNvbHVtbnMgYnkgaW5kZXggKi9cclxuXHRcdFV0aWxzLnNvcnRBcnJheSh0aGlzLmNvbHVtbnMgfHwgW10sICdpbmRleCcpO1xyXG5cclxuXHRcdC8qIFRyaWdnZXIgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5keW5hbWljVGFibGU/LnVwZGF0ZUNvbHVtbnMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbG9hZHMgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZExpc3QocmVzZXRTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UucmVsb2FkKHJlc2V0U2VsZWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlYXJjaFxyXG5cdCAqIEBwYXJhbSBmaWx0ZXIgXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaChmaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmZpbHRlciA9IGZpbHRlcjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgYWRkIHBhZ2UuXHJcblx0ICovXHJcblx0cHVibGljIGFkZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFkZERpYWxvZ1R5cGUpIHtcclxuXHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5hZGREaWFsb2dUeXBlLCB7IHdpZHRoOiAnNjUwcHgnLCBkYXRhOiB0aGlzLmNsYXNzSW5zdGFuY2UgfSlcclxuXHRcdFx0XHQuYWZ0ZXJDbG9zZWQoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkTGlzdChmYWxzZSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMuY3VycmVudEJhc2VSb3V0ZX0vYWRkYF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIHRvIHRoZSBlZGl0IHBhZ2UuXHJcblx0ICogQHBhcmFtIGl0ZW0gVGhlIGlkIG9mIHRoZSBpdGVtXHJcblx0ICovXHJcblx0cHVibGljIGVkaXQoaXRlbTogVEVudGl0eSwgY29udGV4dD86IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmlzVGV4dFNlbGVjdGVkKCkpIHtcclxuXHRcdFx0aWYgKHRoaXMub25FZGl0KSB7XHJcblx0XHRcdFx0dGhpcy5vbkVkaXQoaXRlbSwgY29udGV4dCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMuY3VycmVudEJhc2VSb3V0ZX0vZWRpdGAsIChpdGVtIGFzIElFbnRpdHkpPy5pZF0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcblx0ICogQHBhcmFtIGluY2x1ZGVzIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2goaWQ6IG51bWJlciwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlcz86IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5fcGF0Y2goaWQsIGZpZWxkcywgdmFsdWUsIGluY2x1ZGVzLCBfID0+IHRoaXMubG9hZExpc3QoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcblx0ICogQHBhcmFtIGluY2x1ZGVzIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZSBjYWxsZWQgb24gc3VjY2Vzc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfcGF0Y2goaWQ6IG51bWJlciwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlcz86IGFueSwgc3VjY2Vzc0NhbGxiYWNrPzogRnVuY3Rpb24pOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG5cclxuXHRcdC8qIEdldCBlbnRpdHkgYnkgSUQgKi9cclxuXHRcdGxldCBlbnRpdHkgPSB0aGlzLmRhdGFTb3VyY2UuaXRlbXM/LmZpbHRlcih4ID0+ICg8YW55PngpLmlkID09PSBpZClbMF07XHJcblx0XHRpZiAoZW50aXR5KSB7XHJcblx0XHRcdC8qIEJ1aWxkIHBhdGNoIG1ldGhvZHMgKi9cclxuXHRcdFx0bGV0IHBhdGNoZXMgPSBmaWVsZHMubWFwKHggPT4geyByZXR1cm4geyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7eH1gLCB2YWx1ZTogdmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBlbnRpdHlbeF0gfTsgfSk7XHJcblxyXG5cdFx0XHQvKiBTZW5kIHJlcXVlc3QgKi9cclxuXHRcdFx0dGhpcy5zZXJ2aWNlXHJcblx0XHRcdFx0LnBhdGNoKGlkLCBwYXRjaGVzLCBudWxsLCB7IGhlYWRlcnM6IHsgJ1Nob3ctTWVzc2FnZSc6ICdZZXMnIH0sIHBhcmFtczogaW5jbHVkZXMgPyBVdGlscy50b0h0dHBQYXJhbXMoeyBpbmNsdWRlczogaW5jbHVkZXMgfSkgOiBudWxsIH0pXHJcblx0XHRcdFx0LnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRuZXh0OiAoeCkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzQ2FsbGJhY2soeCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sIGVycm9yOiAoXykgPT4gdGhpcy5pc1NhdmluZyA9IGZhbHNlXHJcblx0XHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIGFuIGl0ZW0gZnJvbSB0aGUgZGF0YWJhc2UuXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0ZUl0ZW0oaXRlbTogVEVudGl0eSk6IHZvaWQge1xyXG5cdFx0dGhpcy5zaG93RGVsZXRlSXRlbURpYWxvZygpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZGVsZXRlKChpdGVtIGFzIElFbnRpdHkpLmlkKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1EZWxldGVkKDxhbnk+aXRlbSksXHJcblx0XHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWxldGVzIGFuIGl0ZW0gZnJvbSB0aGUgZGF0YWJhc2UuXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0ZUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuZGF0YVNvdXJjZS5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSgpKSB7XHJcblx0XHRcdHRoaXMuc2hvd0RlbGV0ZUl0ZW1zRGlhbG9nKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0XHRsZXQgaWRzID0gdGhpcy5kYXRhU291cmNlLmdldFNlbGVjdGVkSWRzKCk7XHJcblx0XHRcdFx0XHR0aGlzLnNlcnZpY2UuZGVsZXRlTGlzdChpZHMpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRcdG5leHQ6IChfKSA9PiB0aGlzLm9uQWZ0ZXJJdGVtc0RlbGV0ZWQoaWRzKSxcclxuXHRcdFx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVG9nZ2xlcyBhIHByb3BlcnR5XHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICogQHBhcmFtIHByb3BlcnR5XHJcblx0ICovXHJcblx0cHVibGljIHRvZ2dsZShpdGVtOiBURW50aXR5LCBwcm9wZXJ0eTogc3RyaW5nID0gJ2VuYWJsZWQnKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0LnBhdGNoKCg8YW55Pml0ZW0pLmlkLCBbeyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7cHJvcGVydHl9YCwgdmFsdWU6IGl0ZW1bcHJvcGVydHldIH1dKVxyXG5cdFx0XHQuc3Vic2NyaWJlKHggPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwbG9hZHMgdGFybnNmZXJzIGNzdiBmaWxlc1xyXG5cdCAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIHRvIHVwbG9hZFxyXG5cdCAqIEBwYXJhbSByZWxvYWQgSWYgdHJ1ZSwgcmVsb2FkIGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHVwbG9hZChmaWxlOiBGaWxlLCByZWxvYWQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2UudXBsb2FkKGZpbGUpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdHJlc3BvbnNlID0gcmVzcG9uc2UuanNvbigpO1xyXG5cclxuXHRcdFx0XHQvKiBSZWxvYWQgbGlzdCAqL1xyXG5cdFx0XHRcdGlmIChyZWxvYWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZExpc3QoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sIGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEb3dubG9hZHMgYSBkb2N1bWVudFxyXG5cdCAqIEBwYXJhbSBpdGVtIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZChpdGVtOiBURW50aXR5LCBwYXRoOiBzdHJpbmcgPSAnZG93bmxvYWQnKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYCR7cGF0aH0vJHsoaXRlbSBhcyBJRW50aXR5KS5pZH1gKS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwge30pLCB4LmZpbGVuYW1lKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRHVwbGljYXRlcyBhIHJlY29yZFxyXG5cdCAqIEBwYXJhbSBpdGVtIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkdXBsaWNhdGUoaXRlbTogVEVudGl0eSkge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmR1cGxpY2F0ZSgoaXRlbSBhcyBJRW50aXR5KS5pZCkuc3Vic2NyaWJlKF8gPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgaW5mb3JtcyB0aGUgdGFibGUgaG93IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHJvd3MgdG8gXHJcblx0ICogdHJhY2sgaG93IHRoZSBkYXRhIGNoYW5nZXMgd2l0aCBlYWNoIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gaW5kZXggXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIHRyYWNrQnlJZChfOiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIGl0ZW0uaWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBPcGVucyB0aGUgY29uZmlnIGRpYWxvZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuQ29uZmlnRGlhbG9nKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHR3aWR0aDogJzkwMHB4JyxcclxuXHRcdFx0ZGF0YTogdGhpcyxcclxuXHRcdFx0ZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbJ2ZsYXQtZGlhbG9nJywgJ2RpYWxvZy1mdWxsLXNjcmVlbiddXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2F2ZXMgdGhlIHRhYmxlIGNvbmZpZ1xyXG5cdCAqIEBwYXJhbSBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIHNhdmVDb25maWdzKGNvbmZpZ3M6IFRhYmxlQ29sdW1uQ29uZmlnW10pOiB2b2lkIHtcclxuXHRcdGlmIChjb25maWdzKSB7XHJcblx0XHRcdC8qIFNldCB0aGUgY29uZmlnIGluIHRoZSBsaXN0IGNvbmZpZyAqL1xyXG5cdFx0XHR0aGlzLmxpc3RDb25maWcgPz89IHsgY29uZmlnczogW10sIHF1ZXJ5OiB7fSB9O1xyXG5cdFx0XHR0aGlzLmxpc3RDb25maWcuY29uZmlncyA9IGNvbmZpZ3M7XHJcblxyXG5cdFx0XHQvKiBTYXZlIHRoZSBjb25maWdzICovXHJcblx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMubGlzdENvbmZpZyk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgKi9cclxuXHRcdFx0dGhpcy51cGRhdGVDb2x1bW5zKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGFuZCBhcHBsaWVzIHRoZSB0YWJsZSBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRDb25maWdzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubGlzdENvbmZpZz8uY29uZmlncykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdCh0aGlzLmxpc3RDb25maWc/LmNvbmZpZ3MgPz8gW10pPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbkNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdFx0dmFyIGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKHk6IFRhYmxlQ29sdW1uKSA9PiB5Lm5hbWUgPT0geC5uYW1lKVswXTtcclxuXHRcdFx0XHRcdGlmIChjb2x1bW4pIHtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihjb2x1bW4sIHgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikgeyB9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICogQHBhcmFtIGluYyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5jbHVkZSguLi5pbmM6IHN0cmluZ1tdKSB7XHJcblx0XHRpbmM/LmZvckVhY2goeCA9PiB0aGlzLmluY2x1ZGVzLnB1c2goeCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHRvb2xiYXIgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRUb29sYmFyTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0LyogQWRkICdEZWxldGUgc2VsZWN0ZWQnIG1lbnUgaXRlbSAqL1xyXG5cdFx0aWYgKHRoaXMuZGVsZXRhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZVNlbGVjdGVkOkRlbGV0ZSBzZWxlY3RlZGAsXHJcblx0XHRcdFx0aWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuXHRcdFx0XHRpY29uQ2xhc3M6ICd0Yy1vcmFuZ2UtODAwJyxcclxuXHRcdFx0XHRldmVudDogKCkgPT4gdGhpcy5kZWxldGVJdGVtcygpLFxyXG5cdFx0XHRcdGRpc2FibGU6ICgpID0+ICF0aGlzLmNhbkV4ZWN1dGVNdWx0aXBsZU9wZXJhdGlvbnMoKHg6IFRFbnRpdHkpID0+IHRoaXMuY2FuRGVsZXRlSXRlbSh4KSlcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogT3BlbnMgY29uZmlnIGRpYWxvZyAqL1xyXG5cdFx0aWYgKHRoaXMuY29uZmlndXJhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGNvbmZpZ3VyZVRhYmxlOkNvbmZpZ3VyZSB0YWJsZWAsXHJcblx0XHRcdFx0aWNvbjogJ3NldHRpbmdzJyxcclxuXHRcdFx0XHRldmVudDogKCkgPT4gdGhpcy5vcGVuQ29uZmlnRGlhbG9nKClcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMudG9vbGJhck1lbnVJdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdC8qIFNvcnQgdGhlIG1lbnUgaXRlbXMgYnkgaW5kZXggKi9cclxuXHRcdFx0VXRpbHMuc29ydEFycmF5KHRoaXMudG9vbGJhck1lbnVJdGVtcywgJ2luZGV4Jyk7XHJcblxyXG5cdFx0XHQvKiBBZGQgdGhlIHRvb2xiYXIgbWVudSBpdGVtcyB0byB0aGUgdGhlIHRvb2xiYXIgYWN0aW9ucyAqL1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJBY3Rpb25zLnB1c2goeyBpY29uOiAnbW9yZV92ZXJ0JywgaXRlbXM6IHRoaXMudG9vbGJhck1lbnVJdGVtcyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRSb3dNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBBZGQgY2hlY2tib3ggY29sdW1uICovXHJcblx0XHRpZiAodGhpcy5zZWxlY3RhYmxlKSB7XHJcblx0XHRcdHRoaXMuY29sdW1ucy51bnNoaWZ0KG5ldyBUYWJsZUNvbHVtbih7XHJcblx0XHRcdFx0bmFtZTogJ3NlbGVjdCcsXHJcblx0XHRcdFx0dHlwZTogVGFibGVDb2x1bW5UeXBlLkNoZWNrYm94LFxyXG5cdFx0XHRcdGRpc2FibGU6IChyb3c6IFRFbnRpdHkpID0+ICF0aGlzLmNhblNlbGVjdEl0ZW0ocm93KSxcclxuXHRcdFx0XHRjZWxsTmdDbGFzczogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5zZWxlY3RSb3dOZ0NsYXNzKHJvdyksXHJcblx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxyXG5cdFx0XHR9KSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGR1cGxpY2F0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kdXBsaWNhYmxlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZHVwbGljYXRlOkR1cGxpY2F0ZWAsXHJcblx0XHRcdFx0aWNvbjogJ2ZpbGVfY29weScsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuZHVwbGljYXRlKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRHVwbGljYXRlSXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBkb3dubG9hZCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kb3dubG9hZGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkb3dubG9hZDpEb3dubG9hZGAsXHJcblx0XHRcdFx0aWNvbjogJ2ZpbGVfZG93bmxvYWQnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93OiBURW50aXR5KSA9PiB0aGlzLmRvd25sb2FkKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRG93bmxvYWRJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRlbGV0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93OiBURW50aXR5KSA9PiB0aGlzLmRlbGV0ZUl0ZW0ocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5EZWxldGVJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGVkaXQgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZWRpdGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBlZGl0OkVkaXRgLFxyXG5cdFx0XHRcdGljb246ICdlZGl0X25vdGUnLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLWJsdWUtNDAwJyxcclxuXHRcdFx0XHRldmVudDogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5lZGl0KHJvdywgdGhpcyksXHJcblx0XHRcdFx0aGlkZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRWRpdEl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIHNlbGVjdGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuU2VsZWN0SXRlbShlbnRpdHk6IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdzZWxlY3RhYmxlJykgfHwgZW50aXR5WydzZWxlY3RhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgZGVsZXRhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkRlbGV0ZUl0ZW0oZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZGVsZXRhYmxlJykgfHwgZW50aXR5WydkZWxldGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBlZGl0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5FZGl0SXRlbShlbnRpdHk6IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdlZGl0YWJsZScpIHx8IGVudGl0eVsnZWRpdGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkb3dubG9hZGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRG93bmxvYWRJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkYWJsZScpIHx8IGVudGl0eVsnZG93bmxvYWRhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgZHVwbGljYWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5EdXBsaWNhdGVJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2R1cGxpY2FibGUnKSB8fCBlbnRpdHlbJ2R1cGxpY2FibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIE5nQ2xhc3Mgb2JqZWN0IGZvciBzZWxlY3QgY29sdW1uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNlbGVjdFJvd05nQ2xhc3MoXzogVEVudGl0eSk6IGFueSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIHRoZXJlIGFueSBzZWxlY3RlZCByb3dcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaGFzU2VsZWN0ZWRSb3dzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kYXRhU291cmNlPy5zZWxlY3Rpb25Nb2RlbD8uaGFzVmFsdWUoKSB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVudGl0eSBoYXMgYmVlbiBkZWxldGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbURlbGV0ZWQoaXRlbTogSUVudGl0eSk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkTGlzdCh0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXRpZXMgaGFzIGJlZW4gZGVsZXRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckl0ZW1zRGVsZXRlZChpZHM6IG51bWJlcltdKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRMaXN0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2tzIGlmIHRoZSB1c2VyIGNhbiBwZXJmb3JtIG11bHRpcGxlIG9wZXJhdGlvbnMgKExpa2UgJ2RlbGV0ZSBzZWxlY3RlZCcpLlxyXG5cdCAqIEBwYXJhbSBhY3Rpb24gXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkV4ZWN1dGVNdWx0aXBsZU9wZXJhdGlvbnMoYWN0aW9uOiBGdW5jdGlvbiA9IG51bGwpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmhhc1NlbGVjdGVkUm93cygpICYmIChhY3Rpb24gPyB0aGlzLmRhdGFTb3VyY2U/LnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZD8uZXZlcnkoeCA9PiBhY3Rpb24oeCkpIDogdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNwb25kcyB0byB1c2VyLWluaXRpYXRlZCBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcblx0aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0aWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIGFkZCBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnYSc6XHJcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5hZGQoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIHByZXZpb3VzIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdQYWdlVXAnOlxyXG5cdFx0XHRcdFx0dGhpcy5wYWdpbmF0b3IucHJldmlvdXNQYWdlKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gbmV4dCBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnUGFnZURvd24nOlxyXG5cdFx0XHRcdFx0dGhpcy5wYWdpbmF0b3IubmV4dFBhZ2UoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIHVzZWQgZm9yIGFueSBjdXN0b20gY2xlYW51cCB0aGF0IG5lZWRzIHRvIG9jY3VyIFxyXG5cdCAqIHdoZW4gdGhlIGluc3RhbmNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25EZXN0cm95KCk7XHJcblx0XHRpZiAodGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIFN5bWJvbC50b1N0cmluZ1RhZyB3ZWxsLWtub3duIHN5bWJvbCBpcyBhIHN0cmluZyB2YWx1ZWQgcHJvcGVydHkgdGhhdCBpcyB1c2VkIFxyXG5cdCAqIGluIHRoZSBjcmVhdGlvbiBvZiB0aGUgZGVmYXVsdCBzdHJpbmcgZGVzY3JpcHRpb24gb2YgYW4gb2JqZWN0XHJcblx0ICovXHJcblx0Z2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gJ0dlbmVyaWNMaXN0Q29tcG9uZW50JzsgfVxyXG59Il19
703
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFFL0Y7O0dBRUc7QUFDSCxXQUFXO0FBRVgs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O0lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxPQUFPLHNCQUFzQixDQUFDLENBQUMsQ0FBQzs7b0lBNXlCeEMsb0JBQW9CO3dIQUFwQixvQkFBb0IsdUxBUzlCLFlBQVkscUZBTVosT0FBTyw2RkF3RFAsdUJBQXVCOzJGQXZFYixvQkFBb0I7a0JBRHpDLFNBQVM7K0tBV0YsU0FBUztzQkFEZixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT2xDLElBQUk7c0JBRFYsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXlEN0IsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBcUY3QyxVQUFVO3NCQURoQixLQUFLO2dCQTBtQk4sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQXBwU3RvcmFnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9oZWxwZXJzL2FwcC1zdG9yYWdlJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHknO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi90YWJsZS9lbnVtcy90YWJsZS1jb2x1bW4tdHlwZSc7XHJcbmltcG9ydCB7IGdldFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3RhYmxlL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUvdGFibGUuZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lnZW5lcmljLWxpc3QtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgSUVudGl0eSB8IGFueSwgVFNlcnZpY2UgZXh0ZW5kcyBHZW5lcmljU2VydmljZTxURW50aXR5Pj4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUdlbmVyaWNMaXN0Q29tcG9uZW50PFRFbnRpdHk+LCBPbkRlc3Ryb3kge1xyXG5cdC8qKlxyXG5cdCAqIExpc3QgdGl0bGVcclxuXHQgKi9cclxuXHRwdWJsaWMgc3VidGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFBhZ2luYXRvciBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBzb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYXZpZ2F0aW9ucyB0byBpbmNsdWRlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBpbmNsdWRlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwcm9qZWN0aW9uOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmF2aWdhdGlvbnMgdG8gaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZXhjbHVkZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBwYXJhbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgcXVlcnk6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhLXRhYmxlIGRhdGFzb3VyY2VcclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPiB8IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyB0byBjcmVhdGUgdGhlIHRhYmxlIGZvclxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGFzc0luc3RhbmNlOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gXHJcblx0ICovXHJcblx0cHVibGljIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gTWRTb3J0IGF0dHJpYnV0ZVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoVmREeW5hbWljVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIGR5bmFtaWNUYWJsZTogVmREeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgZm9yIGNyZWF0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGFkZERpYWxvZ1R5cGU6IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIHRoZSBjb2x1bW4gJ0NoZWNrYm94J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgYnV0dG9uICdBZGQnXHJcblx0ICovXHJcblx0cHVibGljIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdFZGl0J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0RlbGV0ZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRG93bmxvYWQnXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEdXBsaWNhdGUnXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnQ29uZmlndXJlIHRhYmxlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiByb3dOZ0NsYXNzOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dOZ0NsYXNzOiAoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJvd0NsaWNrOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dDbGljazogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBlZGl0Um91dGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIG9uRWRpdDogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGRldGFpbHNUZW1wbGF0ZTogc3RyaW5nID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW1bXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyQWN0aW9uczogQWN0aW9uSXRlbVtdID0gW3tcclxuXHRcdGljb246ICdzeW5jJyxcclxuXHRcdGV2ZW50OiAoKSA9PiB0aGlzLmxvYWRMaXN0KClcclxuXHR9XTtcclxuXHJcblx0LyoqXHJcblx0ICogVG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUYWJsZSByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgYmFjayBidXR0b24gdG8gdGhlIHRvb2xiYXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBiYWNrQnV0dG9uOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhTG9hZGVkIGV2ZW50IHN1YnNjcmlwdGlvblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBkYXRhTG9hZGVkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXkgZm9yIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY29uZmlnc0tleTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxpc3RDb25maWc6IHtjb25maWdzOiBhbnksIHF1ZXJ5OiBhbnl9XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxpc3RDb25maWc6IHsgY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSwgcXVlcnk6IGFueSB9ID0geyBjb25maWdzOiBbXSwgcXVlcnk6IHsgcGFnZVNpemU6IDE1IH0gfTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gc2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGNsYXNzVHlwZT86IHsgbmV3KCk6IFRFbnRpdHkgfVxyXG5cdCkge1xyXG5cdFx0c3VwZXIocm91dGUsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuXHRcdC8qIEFzc2VtYmxlIHRoZSBjb25maWcga2V5ICovXHJcblx0XHR0aGlzLmNvbmZpZ3NLZXkgPSBbdGhpcy5wcm9qZWN0TmFtZSwgJ2xpc3QtY29uZmlnJywgYnRvYSh0aGlzLmN1cnJlbnRCYXNlUm91dGUpLCB0aGlzLm1lbnU/LnRpdGxlXS5qb2luKCcuJyk7XHJcblxyXG5cdFx0LyogTG9hZCBsaXN0IGNvbmZpZ3MgKi9cclxuXHRcdHRoaXMubGlzdENvbmZpZyA9IEFwcFN0b3JhZ2UuZ2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHsgY29uZmlnczogW10sIHF1ZXJ5OiB7IHBhZ2VTaXplOiAxNSB9IH0pO1xyXG5cclxuXHRcdC8qIFNldCBiYWNrIGJ1dHRvbiBmcm9tIHJvdXRlIHBhcmFtcyAqL1xyXG5cdFx0dGhpcy5iYWNrQnV0dG9uID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ2JhY2tCdXR0b24nKSA9PSAndHJ1ZSc7XHJcblxyXG5cdFx0LyogUmVhZCBzb21lIHBhcmFtcyBmcm9tIHJvdXRpbmcgZGF0YSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgZGF0YS5xdWVyeSB8fCB7fSk7XHJcblx0XHRcdHRoaXMuY2xhc3NUeXBlIHx8PSBkYXRhLmNsYXNzVHlwZTtcclxuXHRcdFx0dGhpcy5jbGFzc05hbWUgfHw9IGRhdGEuY2xhc3NOYW1lO1xyXG5cclxuXHRcdFx0aWYgKGRhdGEuY29sdW1ucykge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IFsuLi4oZGF0YS5jb2x1bW5zIHx8IFtdKV07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmVuZHBvaW50KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gZGF0YS5lbmRwb2ludDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuaW5jbHVkZXMpIHtcclxuXHRcdFx0XHR0aGlzLmluY2x1ZGVzID0gZGF0YS5pbmNsdWRlcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSAmJiB4ICE9ICdjb2x1bW5zJykge1xyXG5cdFx0XHRcdFx0dGhpc1t4XSA9IGRhdGFbeF07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjb2x1bW5zIGZyb20gY2xhc3MgKi9cclxuXHRcdGlmICh0aGlzLmNsYXNzVHlwZSkge1xyXG5cdFx0XHR0aGlzLmNsYXNzSW5zdGFuY2UgPSBuZXcgdGhpcy5jbGFzc1R5cGUoKTtcclxuXHJcblx0XHRcdC8qIEdldCB0aGUgdGFibGUgZGVmaW5pdGlvbiB1c2luZyB0aGUgY2xhc3MgdHlwZSAqL1xyXG5cdFx0XHR2YXIgdGFibGVEZWZpbml0aW9uID0gZ2V0VGFibGVEZWZpbml0aW9uKHRoaXMuY2xhc3NUeXBlKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgcHJvcHMgaW4gdGhlIGN1cnJlbnQgb2JqZWN0IGZyb20gdGhlIHRhYmxlIGRlZmluaXRpb24gKi9cclxuXHRcdFx0T2JqZWN0LmtleXModGFibGVEZWZpbml0aW9uIHx8IHt9KS5mb3JFYWNoKHggPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmhhc093blByb3BlcnR5KHgpKSB7XHJcblx0XHRcdFx0XHR0aGlzW3hdID0gdGFibGVEZWZpbml0aW9uW3hdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgZW5kcG9pbnQgZnJvbSB0YWJsZSBkZWZpbml0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRhYmxlRGVmaW5pdGlvbj8uZW5kcG9pbnQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSB0YWJsZURlZmluaXRpb24/LmVuZHBvaW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgZnJvbSB0aGUgdGFibGUgZGVmaW50aW9uICovXHJcblx0XHRcdGlmICh0YWJsZURlZmluaXRpb24/LmNvbHVtbnMpIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSB0YWJsZURlZmluaXRpb24uY29sdW1ucy5tYXAoeCA9PiB7IHJldHVybiB7IC4uLnggfSB9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogSGFuZGxlIGV2ZW50cyAqL1xyXG5cdFx0XHR0aGlzLmNvbHVtbnM/LmZvckVhY2goKHg6IFRhYmxlQ29sdW1uKSA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB4LmV2ZW50ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0bGV0IGV2ZW50TmFtZTogc3RyaW5nID0gKCh4LmV2ZW50KSBhcyBzdHJpbmcpO1xyXG5cdFx0XHRcdFx0eC5ldmVudCA9IChyb3c6IGFueSkgPT4gKHguZXZlbnRBcmdzID8gdGhpc1tldmVudE5hbWVdKHJvdywgeC5ldmVudEFyZ3MpIDogdGhpc1tldmVudE5hbWVdKHJvdykpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBIaWRlIGNvbHVtbnMgdXNpbmcgcm91dGUgZGF0YSAqL1xyXG5cdFx0XHR0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+ICF4LmhpZGUgfHwgIXguaGlkZShkYXRhLCB0aGlzKSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEhpZGUgZXhjbHVkZWQgY29sdW1ucyAqL1xyXG5cdFx0dGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKHg6IFRhYmxlQ29sdW1uKSA9PiAhdGhpcy5leGNsdWRlZENvbHVtbnM/LmluY2x1ZGVzKHgubmFtZSkpO1xyXG5cclxuXHRcdC8qIEFkZCBsaXN0IG1uZXUgaXRlbXMgKi9cclxuXHRcdHRoaXMuYWRkVG9vbGJhck1lbnVJdGVtcygpO1xyXG5cclxuXHRcdGlmICh0aGlzLmR5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHQvKiBBZGQgbWVudSBpdGVtcyBmb3IgZWFjaCByb3cgKi9cclxuXHRcdFx0dGhpcy5hZGRSb3dNZW51SXRlbXMoKTtcclxuXHJcblx0XHRcdC8qIENoZWNrIGlmIHRoZSBhY3Rpb24gY29sdW1uIGFscmVhZHkgZXhpc3RzICovXHJcblx0XHRcdHZhciBhY3Rpb25Db2xtdW4gPSAodGhpcy5jb2x1bW5zIGFzIFRhYmxlQ29sdW1uW10pPy5maW5kKHggPT4geC5uYW1lID09ICdhY3Rpb24nKTtcclxuXHJcblx0XHRcdC8qIElmIHNvLCBqdXN0IGFkZCB0aGUgbWVudSBpdGVtcyB0byBpdCAqL1xyXG5cdFx0XHRpZiAoYWN0aW9uQ29sbXVuICE9IG51bGwpIHtcclxuXHRcdFx0XHRhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zID0gYWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyB8fCBbXTtcclxuXHRcdFx0XHR0aGlzLnJvd01lbnVJdGVtcy5mb3JFYWNoKHkgPT4gYWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcy51bnNoaWZ0KHkpKTtcclxuXHJcblx0XHRcdFx0LyogQ3JlYXRlIGEgdGFibGUgbWVudSAqL1xyXG5cdFx0XHRcdGFjdGlvbkNvbG11bi5tZW51ID0gbmV3IEFjdGlvbkl0ZW0oe1xyXG5cdFx0XHRcdFx0aWNvbjogJ21vcmVfdmVydCcsXHJcblx0XHRcdFx0XHRpdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogT3RoZXJ3aXNlIGFkZCBhIG5ldyBvbmUgKi9cclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zLnB1c2gobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRcdGluZGV4OiAyMDAwLFxyXG5cdFx0XHRcdFx0bmFtZTogJ2FjdGlvbicsXHJcblx0XHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQWN0aW9uLFxyXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXHJcblx0XHRcdFx0XHRtZW51OiBuZXcgQWN0aW9uSXRlbSh7XHJcblx0XHRcdFx0XHRcdGljb246ICdtb3JlX3ZlcnQnLFxyXG5cdFx0XHRcdFx0XHRpdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0cm93TWVudUl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtcyxcclxuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2VcclxuXHRcdFx0XHR9KSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEdldCBjdXN0b20gYWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0dmFyIGFjdGlvbnMgPSB0YWJsZURlZmluaXRpb24/LmFjdGlvbnM7XHJcblx0XHRcdGlmIChhY3Rpb25zICE9IG51bGwpIHtcclxuXHRcdFx0XHRhY3Rpb25zLmZvckVhY2goeSA9PiB0aGlzLnJvd01lbnVJdGVtcz8ucHVzaCh5KSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1ucyh0cnVlKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgcXVlcnkgcGFyYW1zIGludG8gcXVlcnkgb2JqZWN0ICovXHJcblx0XHR0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSh4ID0+IE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgeCB8fCB7fSwgeyByZXR1cm5Vcmw6IG51bGwgfSkpO1xyXG5cclxuXHRcdC8qIEluaXRpbGlhbGl6ZSB0aGUgZGF0YSBzb3VyY2Ugd2l0aCB0aGUgY3VycmVudCBzZXJ2aWNlLCBwYWdpbmF0b3IgYW5kIHNvcnQgKi9cclxuXHRcdHRoaXMuc29ydCA9IHRoaXMuZHluYW1pY1RhYmxlPy5tYXRTb3J0IHx8ICh0aGlzLnNvcnQgPyB0aGlzLnNvcnQgOiBuZXcgTWF0U29ydCgpKTtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBUYWJsZURhdGFTb3VyY2U8VEVudGl0eSwgVFNlcnZpY2U+KHRoaXMuc2VydmljZSEsIHRoaXMucGFnaW5hdG9yLCB0aGlzLnNvcnQpO1xyXG5cclxuXHRcdC8qIFNldCBpbmNsdWRlcyAqL1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmluY2x1ZGVzID0gdGhpcy5pbmNsdWRlcztcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cclxuXHRcdC8qIExvYWQgcXVlcnkgZnJvbSBicm93c2VyIHN0b3JhZ2UgKi9cclxuXHRcdHZhciBzdG9ycmVkUXVlcnkgPSB0aGlzLmxpc3RDb25maWc/LnF1ZXJ5O1xyXG5cdFx0aWYgKHN0b3JyZWRRdWVyeSkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UuZmllbGRGaWx0ZXJzID0gdGhpcy5jbGVhbihzdG9ycmVkUXVlcnkuZmllbGRGaWx0ZXJzKSB8fCB7fTtcclxuXHRcdFx0dGhpcy5zb3J0QWN0aXZlID0gc3RvcnJlZFF1ZXJ5LnNvcnRCeTtcclxuXHRcdFx0dGhpcy5zb3J0RGlyZWN0aW9uID0gc3RvcnJlZFF1ZXJ5LnNvcnREaXJlY3Rpb247XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSA9IHN0b3JyZWRRdWVyeS5wYWdlU2l6ZTtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnBhZ2VJbmRleCA9IHN0b3JyZWRRdWVyeS5wYWdlSW5kZXg7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIHNvbWUgZmlsdGVyIGZyb20gcm91dGVyICovXHJcblx0XHRpZiAodGhpcy5xdWVyeSkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2Uuc3RhdGljRmllbGRGaWx0ZXJzID0gdGhpcy5xdWVyeTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZW1lbWJlciB0aGUgZmlsdGVycyAqL1xyXG5cdFx0dGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhU291cmNlLm9uRGF0YUxvYWRlZC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0dGhpcy5saXN0Q29uZmlnID8/PSB7IGNvbmZpZ3M6IFtdLCBxdWVyeToge30gfTtcclxuXHRcdFx0XHR0aGlzLmxpc3RDb25maWcucXVlcnkgPSB7XHJcblx0XHRcdFx0XHRmaWVsZEZpbHRlcnM6IHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMsXHJcblx0XHRcdFx0XHRzb3J0Qnk6IHRoaXMuc29ydC5hY3RpdmUsXHJcblx0XHRcdFx0XHRzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnQuZGlyZWN0aW9uLFxyXG5cdFx0XHRcdFx0cGFnZVNpemU6IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG5cdFx0XHRcdFx0cGFnZUluZGV4OiB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgsXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0LyogU2F2ZSB0aGUgc2V0dGluZ3MgKi9cclxuXHRcdFx0XHRBcHBTdG9yYWdlLnNldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCB0aGlzLmxpc3RDb25maWcpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbm5lY3RzIGEgY29sbGVjdGlvbiB2aWV3ZXIgKHN1Y2ggYXMgYSBkYXRhLXRhYmxlKSB0byB0aGUgZGF0YSBzb3VyY2UuIFxyXG5cdCAqIEBwYXJhbSBzdGF0aWNGaWVsZEZpbHRlcnMgXHJcblx0ICovXHJcblx0cHVibGljIGNvbm5lY3Qoc3RhdGljRmllbGRGaWx0ZXJzOiBhbnkgPSBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2Uuc3RhdGljRmllbGRGaWx0ZXJzID0gc3RhdGljRmllbGRGaWx0ZXJzIHx8IHt9O1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmNvbm5lY3QoKS5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRpZiAoIXRoaXMuZHluYW1pY1RhYmxlKSB7XHJcblx0XHRcdHRoaXMuYWRkUm93TWVudUl0ZW1zKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGVzIHRoZSB0YWJsZSBjb2x1bW5zXHJcblx0ICovXHJcblx0cHVibGljIHVwZGF0ZUNvbHVtbnMobG9hZENvbmZpZz86IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdC8qIEdldCBjb25maWcgZnJvbSBsb2NhbCBzdG9yYWdlICovXHJcblx0XHRpZiAobG9hZENvbmZpZykge1xyXG5cdFx0XHR0aGlzLmxvYWRDb25maWdzKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU29ydCB0aGUgY29sdW1ucyBieSBpbmRleCAqL1xyXG5cdFx0VXRpbHMuc29ydEFycmF5KHRoaXMuY29sdW1ucyB8fCBbXSwgJ2luZGV4Jyk7XHJcblxyXG5cdFx0LyogVHJpZ2dlciBjaGFuZ2VzICovXHJcblx0XHR0aGlzLmR5bmFtaWNUYWJsZT8udXBkYXRlQ29sdW1ucygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVsb2FkcyBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkTGlzdChyZXNldFNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5yZWxvYWQocmVzZXRTZWxlY3Rpb24pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2VhcmNoXHJcblx0ICogQHBhcmFtIGZpbHRlciBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2VhcmNoKGZpbHRlcjogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTmF2aWdhdGVzIHRvIHRoZSBhZGQgcGFnZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuYWRkRGlhbG9nVHlwZSkge1xyXG5cdFx0XHR0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmFkZERpYWxvZ1R5cGUsIHsgd2lkdGg6ICc2NTBweCcsIGRhdGE6IHRoaXMuY2xhc3NJbnN0YW5jZSB9KVxyXG5cdFx0XHRcdC5hZnRlckNsb3NlZCgpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRMaXN0KGZhbHNlKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9hZGRgXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGVkaXQgcGFnZS5cclxuXHQgKiBAcGFyYW0gaXRlbSBUaGUgaWQgb2YgdGhlIGl0ZW1cclxuXHQgKi9cclxuXHRwdWJsaWMgZWRpdChpdGVtOiBURW50aXR5LCBjb250ZXh0PzogYW55KTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuaXNUZXh0U2VsZWN0ZWQoKSkge1xyXG5cdFx0XHRpZiAodGhpcy5vbkVkaXQpIHtcclxuXHRcdFx0XHR0aGlzLm9uRWRpdChpdGVtLCBjb250ZXh0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9lZGl0YCwgKGl0ZW0gYXMgSUVudGl0eSk/LmlkXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuXHQgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLl9wYXRjaChpZCwgZmllbGRzLCB2YWx1ZSwgaW5jbHVkZXMsIF8gPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuXHQgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgQSBjYWxsYmFjayBmdW5jdGlvbiB0byBlIGNhbGxlZCBvbiBzdWNjZXNzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG5cdFx0LyogR2V0IGVudGl0eSBieSBJRCAqL1xyXG5cdFx0bGV0IGVudGl0eSA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8uZmlsdGVyKHggPT4gKDxhbnk+eCkuaWQgPT09IGlkKVswXTtcclxuXHRcdGlmIChlbnRpdHkpIHtcclxuXHRcdFx0LyogQnVpbGQgcGF0Y2ggbWV0aG9kcyAqL1xyXG5cdFx0XHRsZXQgcGF0Y2hlcyA9IGZpZWxkcy5tYXAoeCA9PiB7IHJldHVybiB7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHt4fWAsIHZhbHVlOiB2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IGVudGl0eVt4XSB9OyB9KTtcclxuXHJcblx0XHRcdC8qIFNlbmQgcmVxdWVzdCAqL1xyXG5cdFx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0XHQucGF0Y2goaWQsIHBhdGNoZXMsIG51bGwsIHsgaGVhZGVyczogeyAnU2hvdy1NZXNzYWdlJzogJ1llcycgfSwgcGFyYW1zOiBpbmNsdWRlcyA/IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGluY2x1ZGVzOiBpbmNsdWRlcyB9KSA6IG51bGwgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdG5leHQ6ICh4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NDYWxsYmFjayh4KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgZXJyb3I6IChfKSA9PiB0aGlzLmlzU2F2aW5nID0gZmFsc2VcclxuXHRcdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbShpdGVtOiBURW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLnNob3dEZWxldGVJdGVtRGlhbG9nKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGUoKGl0ZW0gYXMgSUVudGl0eSkuaWQpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5vbkFmdGVySXRlbURlbGV0ZWQoPGFueT5pdGVtKSxcclxuXHRcdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkpIHtcclxuXHRcdFx0dGhpcy5zaG93RGVsZXRlSXRlbXNEaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHRcdGxldCBpZHMgPSB0aGlzLmRhdGFTb3VyY2UuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGVMaXN0KGlkcykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1zRGVsZXRlZChpZHMpLFxyXG5cdFx0XHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUb2dnbGVzIGEgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKiBAcGFyYW0gcHJvcGVydHlcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9nZ2xlKGl0ZW06IFRFbnRpdHksIHByb3BlcnR5OiBzdHJpbmcgPSAnZW5hYmxlZCcpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZVxyXG5cdFx0XHQucGF0Y2goKDxhbnk+aXRlbSkuaWQsIFt7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHtwcm9wZXJ0eX1gLCB2YWx1ZTogaXRlbVtwcm9wZXJ0eV0gfV0pXHJcblx0XHRcdC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyB0YXJuc2ZlcnMgY3N2IGZpbGVzXHJcblx0ICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gdXBsb2FkXHJcblx0ICogQHBhcmFtIHJlbG9hZCBJZiB0cnVlLCByZWxvYWQgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUsIHJlbG9hZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZS51cGxvYWQoZmlsZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0cmVzcG9uc2UgPSByZXNwb25zZS5qc29uKCk7XHJcblxyXG5cdFx0XHRcdC8qIFJlbG9hZCBsaXN0ICovXHJcblx0XHRcdFx0aWYgKHJlbG9hZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkTGlzdCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGRvY3VtZW50XHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkKGl0ZW06IFRFbnRpdHksIHBhdGg6IHN0cmluZyA9ICdkb3dubG9hZCcpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZS5kb3dubG9hZChgJHtwYXRofS8keyhpdGVtIGFzIElFbnRpdHkpLmlkfWApLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0c2F2ZUFzKG5ldyBCbG9iKFt4LmRhdGFdLCB7fSksIHguZmlsZW5hbWUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEdXBsaWNhdGVzIGEgcmVjb3JkXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2F0ZShpdGVtOiBURW50aXR5KSB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZHVwbGljYXRlKChpdGVtIGFzIElFbnRpdHkpLmlkKS5zdWJzY3JpYmUoXyA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBpbmZvcm1zIHRoZSB0YWJsZSBob3cgdG8gdW5pcXVlbHkgaWRlbnRpZnkgcm93cyB0byBcclxuXHQgKiB0cmFjayBob3cgdGhlIGRhdGEgY2hhbmdlcyB3aXRoIGVhY2ggdXBkYXRlLlxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdHJhY2tCeUlkKF86IG51bWJlciwgaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gaXRlbS5pZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wZW5zIHRoZSBjb25maWcgZGlhbG9nXHJcblx0ICovXHJcblx0cHVibGljIG9wZW5Db25maWdEaWFsb2coKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiAnOTAwcHgnLFxyXG5cdFx0XHRkYXRhOiB0aGlzLFxyXG5cdFx0XHRkaXNhYmxlQ2xvc2U6IHRydWUsXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZmxhdC1kaWFsb2cnLCAnZGlhbG9nLWZ1bGwtc2NyZWVuJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQpIHtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTYXZlcyB0aGUgdGFibGUgY29uZmlnXHJcblx0ICogQHBhcmFtIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgc2F2ZUNvbmZpZ3MoY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSk6IHZvaWQge1xyXG5cdFx0aWYgKGNvbmZpZ3MpIHtcclxuXHRcdFx0LyogU2V0IHRoZSBjb25maWcgaW4gdGhlIGxpc3QgY29uZmlnICovXHJcblx0XHRcdHRoaXMubGlzdENvbmZpZyA/Pz0geyBjb25maWdzOiBbXSwgcXVlcnk6IHt9IH07XHJcblx0XHRcdHRoaXMubGlzdENvbmZpZy5jb25maWdzID0gY29uZmlncztcclxuXHJcblx0XHRcdC8qIFNhdmUgdGhlIGNvbmZpZ3MgKi9cclxuXHRcdFx0QXBwU3RvcmFnZS5zZXRPYmplY3RFbmNvZGVkKHRoaXMuY29uZmlnc0tleSwgdGhpcy5saXN0Q29uZmlnKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgdGFibGUgY29sdW1ucyAqL1xyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgYW5kIGFwcGxpZXMgdGhlIHRhYmxlIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZENvbmZpZ3MoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5saXN0Q29uZmlnPy5jb25maWdzKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0KHRoaXMubGlzdENvbmZpZz8uY29uZmlncyA/PyBbXSk/LmZvckVhY2goKHg6IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHR2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoeTogVGFibGVDb2x1bW4pID0+IHkubmFtZSA9PSB4Lm5hbWUpWzBdO1xyXG5cdFx0XHRcdFx0aWYgKGNvbHVtbikge1xyXG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKGNvbHVtbiwgeCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7IH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKiBAcGFyYW0gaW5jIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBpbmNsdWRlKC4uLmluYzogc3RyaW5nW10pIHtcclxuXHRcdGluYz8uZm9yRWFjaCh4ID0+IHRoaXMuaW5jbHVkZXMucHVzaCh4KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgdG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFRvb2xiYXJNZW51SXRlbXMoKTogdm9pZCB7XHJcblx0XHQvKiBBZGQgJ0RlbGV0ZSBzZWxlY3RlZCcgbWVudSBpdGVtICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGVsZXRlU2VsZWN0ZWQ6RGVsZXRlIHNlbGVjdGVkYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLmRlbGV0ZUl0ZW1zKCksXHJcblx0XHRcdFx0ZGlzYWJsZTogKCkgPT4gIXRoaXMuY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucygoeDogVEVudGl0eSkgPT4gdGhpcy5jYW5EZWxldGVJdGVtKHgpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBPcGVucyBjb25maWcgZGlhbG9nICovXHJcblx0XHRpZiAodGhpcy5jb25maWd1cmFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAY29uZmlndXJlVGFibGU6Q29uZmlndXJlIHRhYmxlYCxcclxuXHRcdFx0XHRpY29uOiAnc2V0dGluZ3MnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLm9wZW5Db25maWdEaWFsb2coKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy50b29sYmFyTWVudUl0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0LyogU29ydCB0aGUgbWVudSBpdGVtcyBieSBpbmRleCAqL1xyXG5cdFx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy50b29sYmFyTWVudUl0ZW1zLCAnaW5kZXgnKTtcclxuXHJcblx0XHRcdC8qIEFkZCB0aGUgdG9vbGJhciBtZW51IGl0ZW1zIHRvIHRoZSB0aGUgdG9vbGJhciBhY3Rpb25zICovXHJcblx0XHRcdHRoaXMudG9vbGJhckFjdGlvbnMucHVzaCh7IGljb246ICdtb3JlX3ZlcnQnLCBpdGVtczogdGhpcy50b29sYmFyTWVudUl0ZW1zIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHJvdyBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFJvd01lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBjaGVja2JveCBjb2x1bW4gKi9cclxuXHRcdGlmICh0aGlzLnNlbGVjdGFibGUpIHtcclxuXHRcdFx0dGhpcy5jb2x1bW5zLnVuc2hpZnQobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRuYW1lOiAnc2VsZWN0JyxcclxuXHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQ2hlY2tib3gsXHJcblx0XHRcdFx0ZGlzYWJsZTogKHJvdzogVEVudGl0eSkgPT4gIXRoaXMuY2FuU2VsZWN0SXRlbShyb3cpLFxyXG5cdFx0XHRcdGNlbGxOZ0NsYXNzOiAocm93OiBURW50aXR5KSA9PiB0aGlzLnNlbGVjdFJvd05nQ2xhc3Mocm93KSxcclxuXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlXHJcblx0XHRcdH0pKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZHVwbGljYXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmR1cGxpY2FibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkdXBsaWNhdGU6RHVwbGljYXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9jb3B5JyxcclxuXHRcdFx0XHRldmVudDogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5kdXBsaWNhdGUocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5EdXBsaWNhdGVJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRvd25sb2FkIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmRvd25sb2FkYWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRvd25sb2FkOkRvd25sb2FkYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9kb3dubG9hZCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuZG93bmxvYWQocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5Eb3dubG9hZEl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZGVsZXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmRlbGV0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZTpEZWxldGVgLFxyXG5cdFx0XHRcdGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtb3JhbmdlLTgwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c6IFRFbnRpdHkpID0+IHRoaXMuZGVsZXRlSXRlbShyb3cpLFxyXG5cdFx0XHRcdGhpZGU6IChyb3c6IFRFbnRpdHkpID0+ICF0aGlzLmNhbkRlbGV0ZUl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZWRpdCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5lZGl0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGVkaXQ6RWRpdGAsXHJcblx0XHRcdFx0aWNvbjogJ2VkaXRfbm90ZScsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtYmx1ZS00MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93OiBURW50aXR5KSA9PiB0aGlzLmVkaXQocm93LCB0aGlzKSxcclxuXHRcdFx0XHRoaWRlOiAocm93OiBURW50aXR5KSA9PiAhdGhpcy5jYW5FZGl0SXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgc2VsZWN0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5TZWxlY3RJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ3NlbGVjdGFibGUnKSB8fCBlbnRpdHlbJ3NlbGVjdGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkZWxldGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRGVsZXRlSXRlbShlbnRpdHk6IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkZWxldGFibGUnKSB8fCBlbnRpdHlbJ2RlbGV0YWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGVkaXRhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkVkaXRJdGVtKGVudGl0eTogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2VkaXRhYmxlJykgfHwgZW50aXR5WydlZGl0YWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGRvd25sb2FkYWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5Eb3dubG9hZEl0ZW0oZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZG93bmxvYWRhYmxlJykgfHwgZW50aXR5Wydkb3dubG9hZGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkdXBsaWNhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkR1cGxpY2F0ZUl0ZW0oZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZHVwbGljYWJsZScpIHx8IGVudGl0eVsnZHVwbGljYWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgTmdDbGFzcyBvYmplY3QgZm9yIHNlbGVjdCBjb2x1bW5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2VsZWN0Um93TmdDbGFzcyhfOiBURW50aXR5KTogYW55IHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgdGhlcmUgYW55IHNlbGVjdGVkIHJvd1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYXNTZWxlY3RlZFJvd3MoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LnNlbGVjdGlvbk1vZGVsPy5oYXNWYWx1ZSgpIH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXR5IGhhcyBiZWVuIGRlbGV0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJJdGVtRGVsZXRlZChpdGVtOiBJRW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRMaXN0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdGllcyBoYXMgYmVlbiBkZWxldGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbXNEZWxldGVkKGlkczogbnVtYmVyW10pOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZExpc3QodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgY2FuIHBlcmZvcm0gbXVsdGlwbGUgb3BlcmF0aW9ucyAoTGlrZSAnZGVsZXRlIHNlbGVjdGVkJykuXHJcblx0ICogQHBhcmFtIGFjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucyhhY3Rpb246IEZ1bmN0aW9uID0gbnVsbCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRSb3dzKCkgJiYgKGFjdGlvbiA/IHRoaXMuZGF0YVNvdXJjZT8uc2VsZWN0aW9uTW9kZWw/LnNlbGVjdGVkPy5ldmVyeSh4ID0+IGFjdGlvbih4KSkgOiB0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlc3BvbmRzIHRvIHVzZXItaW5pdGlhdGVkIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuXHRoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gYWRkIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdhJzpcclxuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZSAqL1xyXG5cdFx0XHRcdGNhc2UgJ1BhZ2VVcCc6XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdQYWdlRG93bic6XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgY2FsbGJhY2sgdXNlZCBmb3IgYW55IGN1c3RvbSBjbGVhbnVwIHRoYXQgbmVlZHMgdG8gb2NjdXIgXHJcblx0ICogd2hlbiB0aGUgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHRcdGlmICh0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgU3ltYm9sLnRvU3RyaW5nVGFnIHdlbGwta25vd24gc3ltYm9sIGlzIGEgc3RyaW5nIHZhbHVlZCBwcm9wZXJ0eSB0aGF0IGlzIHVzZWQgXHJcblx0ICogaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBkZWZhdWx0IHN0cmluZyBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3RcclxuXHQgKi9cclxuXHRnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAnR2VuZXJpY0xpc3RDb21wb25lbnQnOyB9XHJcbn0iXX0=
@@ -15,6 +15,7 @@ export { MenuItem } from './models/menu-item';
15
15
  export { MenuItemClient } from './models/menu-item-client';
16
16
  export { MenuItemDepartment } from './models/menu-item-department';
17
17
  export { MenuFormIncludesResolve } from './resolvers/menu-form-includes.resolve';
18
+ export { MenuItemFormIncludesResolve } from './resolvers/menu-item-form-includes.resolve';
18
19
  export { MenuListIncludesResolve } from './resolvers/menu-list-includes.resolve';
19
20
  export { MenuSettingsResolve } from './resolvers/menu-settings.resolve';
20
21
  export { MenuItemService } from './services/menu-items.service';
@@ -52,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
52
53
  providers: [MenuService]
53
54
  }]
54
55
  }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9tZW51L21lbnUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBRXZCLE1BQU0sWUFBWSxHQUFHO0lBQ3BCLGVBQWU7Q0FDZixDQUFDO0FBaUJGLE1BQU0sT0FBTyxZQUFZOzs0SEFBWixZQUFZOzZIQUFaLFlBQVksaUJBbEJ4QixlQUFlLGFBS2QsWUFBWTtRQUNaLFlBQVk7UUFDWixhQUFhO1FBQ2IsYUFBYSxhQVJkLGVBQWU7NkhBa0JILFlBQVksYUFGYixDQUFDLFdBQVcsQ0FBQyxZQVh2QixZQUFZO1FBQ1osWUFBWTtRQUNaLGFBQWE7UUFDYixhQUFhOzJGQVVGLFlBQVk7a0JBZnhCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNiLFlBQVk7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7cUJBQ1o7b0JBQ0QsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWZE1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB7IFZkTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IE1lbnVTY29wZSB9IGZyb20gJy4vZW51bXMvbWVudS1zY29wZSc7XHJcbmV4cG9ydCB7IE1lbnUgfSBmcm9tICcuL21vZGVscy9tZW51JztcclxuZXhwb3J0IHsgTWVudUNsaWVudCB9IGZyb20gJy4vbW9kZWxzL21lbnUtY2xpZW50JztcclxuZXhwb3J0IHsgTWVudURlcGFydG1lbnQgfSBmcm9tICcuL21vZGVscy9tZW51LWRlcGFydG1lbnQnO1xyXG5leHBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4vbW9kZWxzL21lbnUtaXRlbSc7XHJcbmV4cG9ydCB7IE1lbnVJdGVtQ2xpZW50IH0gZnJvbSAnLi9tb2RlbHMvbWVudS1pdGVtLWNsaWVudCc7XHJcbmV4cG9ydCB7IE1lbnVJdGVtRGVwYXJ0bWVudCB9IGZyb20gJy4vbW9kZWxzL21lbnUtaXRlbS1kZXBhcnRtZW50JztcclxuZXhwb3J0IHsgTWVudUZvcm1JbmNsdWRlc1Jlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVycy9tZW51LWZvcm0taW5jbHVkZXMucmVzb2x2ZSc7XHJcbmV4cG9ydCB7IE1lbnVMaXN0SW5jbHVkZXNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcnMvbWVudS1saXN0LWluY2x1ZGVzLnJlc29sdmUnO1xyXG5leHBvcnQgeyBNZW51U2V0dGluZ3NSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcnMvbWVudS1zZXR0aW5ncy5yZXNvbHZlJztcclxuZXhwb3J0IHsgTWVudUl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBNZW51UmVzb2x2ZSwgU3ViTWVudVJlc29sdmUgfSBmcm9tICcuL3NlcnZpY2VzL21lbnUucmVzb2x2ZSc7XHJcbmV4cG9ydCB7IE1lbnVTZXJ2aWNlIH07XHJcblxyXG5jb25zdCBERUNMQVJBVElPTlMgPSBbXHJcblx0VmRNZW51Q29tcG9uZW50XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdFJvdXRlck1vZHVsZSxcclxuXHRcdE1hdEljb25Nb2R1bGUsXHJcblx0XHRNYXRMaXN0TW9kdWxlXHJcblx0XSxcclxuXHRkZWNsYXJhdGlvbnM6IFtcclxuXHRcdERFQ0xBUkFUSU9OU1xyXG5cdF0sXHJcblx0ZXhwb3J0czogW1xyXG5cdFx0REVDTEFSQVRJT05TXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFtNZW51U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkTWVudU1vZHVsZSB7IH0iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9tZW51L21lbnUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBRXZCLE1BQU0sWUFBWSxHQUFHO0lBQ3BCLGVBQWU7Q0FDZixDQUFDO0FBaUJGLE1BQU0sT0FBTyxZQUFZOzs0SEFBWixZQUFZOzZIQUFaLFlBQVksaUJBbEJ4QixlQUFlLGFBS2QsWUFBWTtRQUNaLFlBQVk7UUFDWixhQUFhO1FBQ2IsYUFBYSxhQVJkLGVBQWU7NkhBa0JILFlBQVksYUFGYixDQUFDLFdBQVcsQ0FBQyxZQVh2QixZQUFZO1FBQ1osWUFBWTtRQUNaLGFBQWE7UUFDYixhQUFhOzJGQVVGLFlBQVk7a0JBZnhCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNiLFlBQVk7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7cUJBQ1o7b0JBQ0QsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBWZE1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB7IFZkTWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IE1lbnVTY29wZSB9IGZyb20gJy4vZW51bXMvbWVudS1zY29wZSc7XHJcbmV4cG9ydCB7IE1lbnUgfSBmcm9tICcuL21vZGVscy9tZW51JztcclxuZXhwb3J0IHsgTWVudUNsaWVudCB9IGZyb20gJy4vbW9kZWxzL21lbnUtY2xpZW50JztcclxuZXhwb3J0IHsgTWVudURlcGFydG1lbnQgfSBmcm9tICcuL21vZGVscy9tZW51LWRlcGFydG1lbnQnO1xyXG5leHBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4vbW9kZWxzL21lbnUtaXRlbSc7XHJcbmV4cG9ydCB7IE1lbnVJdGVtQ2xpZW50IH0gZnJvbSAnLi9tb2RlbHMvbWVudS1pdGVtLWNsaWVudCc7XHJcbmV4cG9ydCB7IE1lbnVJdGVtRGVwYXJ0bWVudCB9IGZyb20gJy4vbW9kZWxzL21lbnUtaXRlbS1kZXBhcnRtZW50JztcclxuZXhwb3J0IHsgTWVudUZvcm1JbmNsdWRlc1Jlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVycy9tZW51LWZvcm0taW5jbHVkZXMucmVzb2x2ZSc7XHJcbmV4cG9ydCB7IE1lbnVJdGVtRm9ybUluY2x1ZGVzUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXJzL21lbnUtaXRlbS1mb3JtLWluY2x1ZGVzLnJlc29sdmUnO1xyXG5leHBvcnQgeyBNZW51TGlzdEluY2x1ZGVzUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXJzL21lbnUtbGlzdC1pbmNsdWRlcy5yZXNvbHZlJztcclxuZXhwb3J0IHsgTWVudVNldHRpbmdzUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXJzL21lbnUtc2V0dGluZ3MucmVzb2x2ZSc7XHJcbmV4cG9ydCB7IE1lbnVJdGVtU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbWVudS1pdGVtcy5zZXJ2aWNlJztcclxuZXhwb3J0IHsgTWVudVJlc29sdmUsIFN1Yk1lbnVSZXNvbHZlIH0gZnJvbSAnLi9zZXJ2aWNlcy9tZW51LnJlc29sdmUnO1xyXG5leHBvcnQgeyBNZW51U2VydmljZSB9O1xyXG5cclxuY29uc3QgREVDTEFSQVRJT05TID0gW1xyXG5cdFZkTWVudUNvbXBvbmVudFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRSb3V0ZXJNb2R1bGUsXHJcblx0XHRNYXRJY29uTW9kdWxlLFxyXG5cdFx0TWF0TGlzdE1vZHVsZVxyXG5cdF0sXHJcblx0ZGVjbGFyYXRpb25zOiBbXHJcblx0XHRERUNMQVJBVElPTlNcclxuXHRdLFxyXG5cdGV4cG9ydHM6IFtcclxuXHRcdERFQ0xBUkFUSU9OU1xyXG5cdF0sXHJcblx0cHJvdmlkZXJzOiBbTWVudVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZE1lbnVNb2R1bGUgeyB9Il19
@@ -0,0 +1,49 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { OidcSecurityService } from "angular-auth-oidc-client";
3
+ import { map } from "rxjs";
4
+ import { AuthHelper } from "../../base/helpers/auth-helper";
5
+ import { ServiceLocator } from "../../common/services/service-locator";
6
+ import { MenuSettings } from "../models/menu-settings";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "angular-auth-oidc-client";
9
+ /**
10
+ * Includes resolve service
11
+ */
12
+ export class MenuItemFormIncludesResolve {
13
+ /**
14
+ * Constructor
15
+ * @param oidcSecurityService
16
+ */
17
+ constructor(oidcSecurityService) {
18
+ this.oidcSecurityService = oidcSecurityService;
19
+ }
20
+ /**
21
+ * Resolves includes
22
+ */
23
+ resolve(route) {
24
+ var includes = ['roles'];
25
+ return this.oidcSecurityService.checkAuth().pipe(map(x => {
26
+ AuthHelper.user.isAuthenticated = x.isAuthenticated;
27
+ if (x.userData) {
28
+ AuthHelper.user = Object.assign(x.userData, {
29
+ id: x.userData.sub,
30
+ isAuthenticated: x.isAuthenticated
31
+ });
32
+ let settings = ServiceLocator.getService(MenuSettings);
33
+ if (settings?.multitenantable || settings?.multiClients) {
34
+ includes.push('ClientJoins');
35
+ }
36
+ if (settings?.multitenantable || settings?.multiDepartments) {
37
+ includes.push('DepartmentJoins');
38
+ }
39
+ }
40
+ return includes;
41
+ }));
42
+ }
43
+ }
44
+ /** @nocollapse */ MenuItemFormIncludesResolve.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MenuItemFormIncludesResolve, deps: [{ token: i1.OidcSecurityService }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ /** @nocollapse */ MenuItemFormIncludesResolve.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MenuItemFormIncludesResolve });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MenuItemFormIncludesResolve, decorators: [{
47
+ type: Injectable
48
+ }], ctorParameters: function () { return [{ type: i1.OidcSecurityService }]; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLWZvcm0taW5jbHVkZXMucmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL21lbnUvcmVzb2x2ZXJzL21lbnUtaXRlbS1mb3JtLWluY2x1ZGVzLnJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFFdkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sMkJBQTJCO0lBRXBDOzs7T0FHRztJQUNILFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQUssQ0FBQztJQUVsRTs7T0FFRztJQUNILE9BQU8sQ0FBQyxLQUE2QjtRQUNqQyxJQUFJLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckQsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUNwRCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ1osVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUc7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDLENBQUMsZUFBZTtpQkFDckMsQ0FBQyxDQUFDO2dCQUVILElBQUksUUFBUSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRXZELElBQUksUUFBUSxFQUFFLGVBQWUsSUFBSSxRQUFRLEVBQUUsWUFBWSxFQUFFO29CQUNyRCxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUNoQztnQkFFRCxJQUFJLFFBQVEsRUFBRSxlQUFlLElBQUksUUFBUSxFQUFFLGdCQUFnQixFQUFFO29CQUN6RCxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7aUJBQ3BDO2FBQ0o7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzs7MklBbkNRLDJCQUEyQjsrSUFBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUmVzb2x2ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgT2lkY1NlY3VyaXR5U2VydmljZSB9IGZyb20gXCJhbmd1bGFyLWF1dGgtb2lkYy1jbGllbnRcIjtcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gXCIuLi8uLi9iYXNlL2hlbHBlcnMvYXV0aC1oZWxwZXJcIjtcclxuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NlcnZpY2VzL3NlcnZpY2UtbG9jYXRvclwiO1xyXG5pbXBvcnQgeyBNZW51U2V0dGluZ3MgfSBmcm9tIFwiLi4vbW9kZWxzL21lbnUtc2V0dGluZ3NcIjtcclxuXHJcbi8qKlxyXG4gKiBJbmNsdWRlcyByZXNvbHZlIHNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1lbnVJdGVtRm9ybUluY2x1ZGVzUmVzb2x2ZSBpbXBsZW1lbnRzIFJlc29sdmU8c3RyaW5nW10+IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gb2lkY1NlY3VyaXR5U2VydmljZSBcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBvaWRjU2VjdXJpdHlTZXJ2aWNlOiBPaWRjU2VjdXJpdHlTZXJ2aWNlLCkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvbHZlcyBpbmNsdWRlc1xyXG4gICAgICovXHJcbiAgICByZXNvbHZlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHZhciBpbmNsdWRlcyA9IFsncm9sZXMnXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2lkY1NlY3VyaXR5U2VydmljZS5jaGVja0F1dGgoKS5waXBlKG1hcCh4ID0+IHtcclxuICAgICAgICAgICAgQXV0aEhlbHBlci51c2VyLmlzQXV0aGVudGljYXRlZCA9IHguaXNBdXRoZW50aWNhdGVkO1xyXG4gICAgICAgICAgICBpZiAoeC51c2VyRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgQXV0aEhlbHBlci51c2VyID0gT2JqZWN0LmFzc2lnbih4LnVzZXJEYXRhLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHgudXNlckRhdGEuc3ViLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzQXV0aGVudGljYXRlZDogeC5pc0F1dGhlbnRpY2F0ZWRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzZXR0aW5ncyA9IFNlcnZpY2VMb2NhdG9yLmdldFNlcnZpY2UoTWVudVNldHRpbmdzKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCBzZXR0aW5ncz8ubXVsdGlDbGllbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMucHVzaCgnQ2xpZW50Sm9pbnMnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3M/Lm11bHRpdGVuYW50YWJsZSB8fCBzZXR0aW5ncz8ubXVsdGlEZXBhcnRtZW50cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzLnB1c2goJ0RlcGFydG1lbnRKb2lucycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gaW5jbHVkZXM7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG59Il19
@@ -6949,6 +6949,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
6949
6949
  type: Injectable
6950
6950
  }], ctorParameters: function () { return [{ type: i1$4.OidcSecurityService }]; } });
6951
6951
 
6952
+ /**
6953
+ * Includes resolve service
6954
+ */
6955
+ class MenuItemFormIncludesResolve {
6956
+ /**
6957
+ * Constructor
6958
+ * @param oidcSecurityService
6959
+ */
6960
+ constructor(oidcSecurityService) {
6961
+ this.oidcSecurityService = oidcSecurityService;
6962
+ }
6963
+ /**
6964
+ * Resolves includes
6965
+ */
6966
+ resolve(route) {
6967
+ var includes = ['roles'];
6968
+ return this.oidcSecurityService.checkAuth().pipe(map$1(x => {
6969
+ AuthHelper.user.isAuthenticated = x.isAuthenticated;
6970
+ if (x.userData) {
6971
+ AuthHelper.user = Object.assign(x.userData, {
6972
+ id: x.userData.sub,
6973
+ isAuthenticated: x.isAuthenticated
6974
+ });
6975
+ let settings = ServiceLocator.getService(MenuSettings);
6976
+ if ((settings === null || settings === void 0 ? void 0 : settings.multitenantable) || (settings === null || settings === void 0 ? void 0 : settings.multiClients)) {
6977
+ includes.push('ClientJoins');
6978
+ }
6979
+ if ((settings === null || settings === void 0 ? void 0 : settings.multitenantable) || (settings === null || settings === void 0 ? void 0 : settings.multiDepartments)) {
6980
+ includes.push('DepartmentJoins');
6981
+ }
6982
+ }
6983
+ return includes;
6984
+ }));
6985
+ }
6986
+ }
6987
+ /** @nocollapse */ MenuItemFormIncludesResolve.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MenuItemFormIncludesResolve, deps: [{ token: i1$4.OidcSecurityService }], target: i0.ɵɵFactoryTarget.Injectable });
6988
+ /** @nocollapse */ MenuItemFormIncludesResolve.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MenuItemFormIncludesResolve });
6989
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: MenuItemFormIncludesResolve, decorators: [{
6990
+ type: Injectable
6991
+ }], ctorParameters: function () { return [{ type: i1$4.OidcSecurityService }]; } });
6992
+
6952
6993
  const GlobalRoles = {
6953
6994
  Administrator: 'Administrator',
6954
6995
  SystemAdministrator: 'SystemAdministrator',
@@ -12906,6 +12947,7 @@ class GenericListComponent extends BaseComponent {
12906
12947
  this.route.data.subscribe((data) => {
12907
12948
  Object.assign(this.query, data.query || {});
12908
12949
  this.classType || (this.classType = data.classType);
12950
+ this.className || (this.className = data.className);
12909
12951
  if (data.columns) {
12910
12952
  this.columns = [...(data.columns || [])];
12911
12953
  }
@@ -19106,5 +19148,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
19106
19148
  * Generated bundle index. Do not edit.
19107
19149
  */
19108
19150
 
19109
- export { AbstractMatFormField, ActionItem, Api, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EmptyStringResetDirective, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, HtmlControlTemplateDirective, IAbstractControl, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, MaterialModule, Menu, MenuClient, MenuDepartment, MenuFormIncludesResolve, MenuItem, MenuItemClient, MenuItemDepartment, MenuItemService, MenuListIncludesResolve, MenuResolve, MenuScope, MenuService, MenuSettings, MenuSettingsResolve, MessageType, MonthNamePipe, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableDataSource, TableDefinition, TableStaticDataSource, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormsModule, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListComponent, VdListModule, VdListOptionDirective, VdListToolbarComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchBoxComponent, VdSearchInputComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupsMetadataKey, formFieldsMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
19151
+ export { AbstractMatFormField, ActionItem, Api, AppSetting, AppStorage, AsyncValidationDirective, AuditEntity, AuditUser, AuthHelper, AuthUser, BaseComponent, BaseDirective, BaseEntity, BaseInterceptor, BaseService, CachingInterceptor, Column, Common, ContextHelper, DataSourceFilterDirective, DataSourcePipe, DatePickerHeaderComponent, DisableControlDirective, Display, DisplayNameNumberProjection, DisplayNameProjection, DynamicBuilder, DynamicComponentCompiler, EmptyStringResetDirective, EnumPipe, EnumService, EqualValidator, ErrorMessageBindingStrategy, FileControlDirective, FileService, FileSizePipe, FilterClearComponent, FilterDateComponent, FilterInputComponent, FilterPipe, FilterSelectComponent, FirstLetterPipe, Form, FormArrayPipe, FormBuilderConfiguration, FormControlPipe, FormDefinition, FormField, FormFieldDefinition, FormFieldGroup, FormFieldGroupDefinition, FormFieldType, FormGroupPipe, FuncPipe, GenericFormBaseComponent, GenericFormComponent, GenericListComponent, GenericReactiveFormComponent, GenericService, GlobalRoles, Grid, HtmlControlTemplateDirective, IAbstractControl, ImageFileControlDirective, IpVersion, KeyValue, KeysPipe, LoadingScreenInterceptor, LoadingScreenService, MatFormFieldEditorDirective, MatFormFieldReadonlyDirective, MaterialModule, Menu, MenuClient, MenuDepartment, MenuFormIncludesResolve, MenuItem, MenuItemClient, MenuItemDepartment, MenuItemFormIncludesResolve, MenuItemService, MenuListIncludesResolve, MenuResolve, MenuScope, MenuService, MenuSettings, MenuSettingsResolve, MessageType, MonthNamePipe, NameNumberProjection, NameProjection, NativeElementInjectorDirective, NumericValueType, OnlyNumberDirective, OrderPipe, Pagination, PlaceholderPipe, PrintService, RUNTIME_COMPILER_PROVIDERS, ReactiveFormConfig, ReactiveTypedFormsModule, ResetFormType, RxFormArray, RxFormBuilder, RxFormControl, RxFormControlDirective, RxFormGroup, RxReactiveFormsModule, RxwebFormDirective, RxwebValidators, SafeHtmlPipe, Salutation, SaveAction, ServiceLocator, SubMenuResolve, SuffixButton, Table, TableColumn, TableColumnConfig, TableColumnType, TableDataSource, TableDefinition, TableStaticDataSource, Templates, TimePipe, TitleCase, TitleProjection, TruncatePipe, TypedForm, TypedFormBuilder, UniqueValidatorDirective, UrlValidationType, Utils, ValidationAlphabetLocale, ValueAccessorBase, ValuesPipe, VdAlertDialogComponent, VdAutocompleteOptionDirective, VdBaseModule, VdChipDirective, VdChipsComponent, VdChipsModule, VdCodeDirective, VdCommonModule, VdConfirmDialogComponent, VdCustomDirective, VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogService, VdDialogTitleDirective, VdDialogsModule, VdDynamicMenuComponent, VdDynamicTableComponent, VdDynamicTableConfigDialogComponent, VdEditorDirective, VdFileDirective, VdFileInputComponent, VdFileModule, VdFilterOptionDirective, VdFormsModule, VdGenericFormComponent, VdGenericFormCustomFieldDirective, VdHttpModule, VdLayoutCardOverComponent, VdLayoutCloseDirective, VdLayoutComponent, VdLayoutFooterComponent, VdLayoutManageListCloseDirective, VdLayoutManageListComponent, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective, VdLayoutModule, VdLayoutNavComponent, VdLayoutNavListCloseDirective, VdLayoutNavListComponent, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective, VdLayoutOpenDirective, VdLayoutToggleDirective, VdListComponent, VdListModule, VdListOptionDirective, VdListToolbarComponent, VdMediaModule, VdMediaService, VdMediaToggleDirective, VdMenuComponent, VdMenuModule, VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective, VdPromptDialogComponent, VdSearchBoxComponent, VdSearchInputComponent, VdSearchModule, VdSelectComponent, VdSelectModule, VdSelectOptionDirective, VdSelectTriggerDirective, VdTableModule, allOf, allOfAsync, alpha, alphaAsync, alphaNumeric, alphaNumericAsync, and, ascii, async, blacklist, choice, choiceAsync, compare, compose, contains, containsAsync, createCompiler, creditCard, creditCardAsync, cusip, custom, customAsync, dataUri, date, dateAsync, different, digit, disable, elementClass, email, endpointMetadataKey, endsWith, endsWithAsync, error, escape, even, extension, extensionAsync, factor, factorAsync, file, fileAsync, fileSize, fileSizeAsync, formFieldGroupsMetadataKey, formFieldsMetadataKey, getEndpoint, getFormGroups, getTableDefinition, greaterThan, greaterThanAsync, greaterThanEqualTo, greaterThanEqualToAsync, grid, headerMetadataKey, hexColor, image, imageAsync, json, latLong, latitude, leapYear, lessThan, lessThanAsync, lessThanEqualTo, lessThanEqualToAsync, longitude, lowerCase, ltrim, mac, mask, maxDate, maxDateAsync, maxLength, maxLengthAsync, maxNumber, maxNumberAsync, maxTime, maxTimeAsync, minDate, minDateAsync, minLength, minLengthAsync, minNumber, minNumberAsync, minTime, minTimeAsync, mixinControlValueAccessor, mixinDisabled, model, noneOf, noneOfAsync, not, notEmpty, numeric, numericAsync, odd, oneOf, oneOfAsync, or, password, passwordAsync, pattern, patternAsync, port, prefix, primeNumber, prop, propArray, propObject, range, rangeAsync, required, requiredTrue, rtrim, rule, sanitize, startsWith, startsWithAsync, stripLow, suffix, tableColumnsMetadataKey, tableDefinitionMetadataKey, time, timeAsync, toBoolean, toDate, toDouble, toFloat, toInt, toString, trim, unique, updateOn, upperCase, url, urlAsync, whitelist };
19110
19152
  //# sourceMappingURL=messaia-cdk.mjs.map