@esolve/ng-esolve-connect 0.41.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/esm2022/lib/account/esolve-account.service.mjs +5 -6
  2. package/esm2022/lib/auth/esolve-auth-interceptor.service.mjs +5 -6
  3. package/esm2022/lib/auth/esolve-auth.service.mjs +5 -6
  4. package/esm2022/lib/banners/esolve-banner.service.mjs +5 -6
  5. package/esm2022/lib/cart/classes/esolve-cart-item.model.mjs +2 -1
  6. package/esm2022/lib/cart/classes/esolve-cart-stock-item.model.mjs +1 -1
  7. package/esm2022/lib/cart/esolve-cart.service.mjs +5 -6
  8. package/esm2022/lib/cart/interfaces/esolve-cart-item-record.interface.mjs +1 -1
  9. package/esm2022/lib/category-tree/esolve-category-tree.service.mjs +5 -6
  10. package/esm2022/lib/core/esolve-config.service.mjs +5 -6
  11. package/esm2022/lib/coupons/esolve-coupons.service.mjs +5 -6
  12. package/esm2022/lib/enquiry/esolve-enquiry.service.mjs +5 -6
  13. package/esm2022/lib/images/directives/cdn-src.directive.mjs +5 -6
  14. package/esm2022/lib/locations/esolve-locations.service.mjs +5 -6
  15. package/esm2022/lib/manufacturers/esolve-manufacturers.service.mjs +5 -6
  16. package/esm2022/lib/menu/esolve-menu.service.mjs +5 -6
  17. package/esm2022/lib/news/esolve-news.service.mjs +5 -6
  18. package/esm2022/lib/ng-esolve-connect.module.mjs +6 -7
  19. package/esm2022/lib/payment/esolve-payment.service.mjs +5 -6
  20. package/esm2022/lib/ranges/esolve-ranges.service.mjs +5 -6
  21. package/esm2022/lib/session/esolve-session-metadata.service.mjs +5 -6
  22. package/esm2022/lib/session/esolve-session.service.mjs +5 -6
  23. package/esm2022/lib/shared/assets/esolve-assets.service.mjs +43 -13
  24. package/esm2022/lib/shared/assets/esolve-media-asset-options.interface.mjs +2 -0
  25. package/esm2022/lib/shared/assets/index.mjs +2 -1
  26. package/esm2022/lib/shared/cookie/esolve-cookie.service.mjs +5 -6
  27. package/esm2022/lib/shared/errors/esolve-error-handler.service.mjs +5 -6
  28. package/esm2022/lib/shared/errors/esolve-http-error.model.mjs +3 -3
  29. package/esm2022/lib/shared/geocoder/esolve-geocoder.service.mjs +5 -6
  30. package/esm2022/lib/shared/response/esolve-response-handler.service.mjs +5 -6
  31. package/esm2022/lib/shared/seo/esolve-seo.service.mjs +5 -6
  32. package/esm2022/lib/shipping/esolve-shipping.service.mjs +5 -6
  33. package/esm2022/lib/specials/esolve-specials.service.mjs +5 -6
  34. package/esm2022/lib/stock/classes/esolve-stock-item-base.model.mjs +11 -1
  35. package/esm2022/lib/stock/esolve-stock.service.mjs +5 -6
  36. package/esm2022/lib/suppliers/esolve-suppliers.service.mjs +5 -6
  37. package/esm2022/lib/tags/esolve-tags.service.mjs +5 -6
  38. package/esm2022/lib/topics/esolve-topic.service.mjs +5 -6
  39. package/esm2022/lib/transactions/esolve-transactions.service.mjs +5 -6
  40. package/esm2022/lib/wishlist/esolve-wishlist.service.mjs +5 -6
  41. package/esm2022/media/lib/components/media-layout/esolve-media-layout.component.mjs +5 -6
  42. package/esm2022/media/lib/components/media-section/esolve-media-section.component.mjs +5 -6
  43. package/esm2022/media/lib/ng-esolve-connect-media.module.mjs +6 -7
  44. package/esm2022/media/lib/services/esolve-media-layout.service.mjs +5 -6
  45. package/esm2022/media/lib/services/esolve-media.service.mjs +5 -6
  46. package/esm2022/notifications/lib/ng-esolve-connect-notifications.module.mjs +6 -7
  47. package/esm2022/notifications/lib/services/esolve-notifications.service.mjs +5 -6
  48. package/esm2022/survey/lib/ng-esolve-connect-survey.module.mjs +6 -7
  49. package/esm2022/survey/lib/services/esolve-survey.service.mjs +5 -6
  50. package/fesm2022/esolve-ng-esolve-connect-media.mjs +16 -16
  51. package/fesm2022/esolve-ng-esolve-connect-media.mjs.map +1 -1
  52. package/fesm2022/esolve-ng-esolve-connect-notifications.mjs +7 -7
  53. package/fesm2022/esolve-ng-esolve-connect-notifications.mjs.map +1 -1
  54. package/fesm2022/esolve-ng-esolve-connect-survey.mjs +7 -7
  55. package/fesm2022/esolve-ng-esolve-connect-survey.mjs.map +1 -1
  56. package/fesm2022/esolve-ng-esolve-connect.mjs +150 -109
  57. package/fesm2022/esolve-ng-esolve-connect.mjs.map +1 -1
  58. package/lib/cart/classes/esolve-cart-item.model.d.ts +2 -1
  59. package/lib/cart/classes/esolve-cart-stock-item.model.d.ts +1 -1
  60. package/lib/cart/interfaces/esolve-cart-item-record.interface.d.ts +1 -0
  61. package/lib/shared/assets/esolve-assets.service.d.ts +3 -0
  62. package/lib/shared/assets/esolve-media-asset-options.interface.d.ts +5 -0
  63. package/lib/shared/assets/index.d.ts +1 -0
  64. package/lib/shared/errors/esolve-http-error.model.d.ts +1 -1
  65. package/lib/stock/classes/esolve-stock-item-base.model.d.ts +8 -0
  66. package/package.json +1 -1
@@ -6,7 +6,7 @@ import { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';
6
6
  import { EsolveShippingCost, EsolveShippingMethod, EsolveTimeSlotConfig, } from './classes';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common/http";
9
- class EsolveShippingService {
9
+ export class EsolveShippingService {
10
10
  constructor(config, http) {
11
11
  this.config = config;
12
12
  this.http = http;
@@ -135,11 +135,10 @@ class EsolveShippingService {
135
135
  const shipping_cost = new EsolveShippingCost(+record.shipping_total, +record.vat_on_shipping, +record.total_saving_on_shipping, +record.insurance_total, +record.vat_on_insurance, +record.total_saving_on_insurance);
136
136
  return shipping_cost;
137
137
  }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveShippingService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
139
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveShippingService, providedIn: 'root' }); }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveShippingService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
139
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveShippingService, providedIn: 'root' }); }
140
140
  }
141
- export { EsolveShippingService };
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveShippingService, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveShippingService, decorators: [{
143
142
  type: Injectable,
144
143
  args: [{
145
144
  providedIn: 'root',
@@ -148,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
148
147
  type: Inject,
149
148
  args: [ESOLVE_CONNECT_CONFIG]
150
149
  }] }, { type: i1.HttpClient }]; } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNoaXBwaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc2hpcHBpbmcvZXNvbHZlLXNoaXBwaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUcvRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsR0FDdkIsTUFBTSxXQUFXLENBQUM7OztBQVFuQixNQUdhLHFCQUFxQjtJQUM5QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDekIsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNJLGtCQUFrQixDQUNyQixPQUFxQztRQUVyQyxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssV0FBVyxFQUFFO2dCQUM3QyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzdEO1lBRUQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO2dCQUM1QyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQzNEO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLDJCQUEyQixFQUNqRCxFQUFFLE1BQU0sRUFBRSxDQUNiO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtnQkFDaEMsTUFBTSxRQUFRLENBQUM7YUFDbEI7WUFFRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLGVBQWUsQ0FDbEIsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsV0FBb0I7UUFFcEIsSUFBSTtZQUNBLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFFOUIsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUU7Z0JBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUM5QztpQkFBTTtnQkFDSCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDbkQ7WUFFRCxJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVcsRUFBRTtnQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQzdDO2lCQUFNO2dCQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNyRDtZQUVELElBQUksT0FBTyxXQUFXLEtBQUssV0FBVyxFQUFFO2dCQUNwQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDbkQ7WUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2lCQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx3QkFBd0IsRUFDOUMsRUFBRSxNQUFNLEVBQUUsQ0FDYjtpQkFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtvQkFDaEMsTUFBTSxRQUFRLENBQUM7aUJBQ2xCO2dCQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ1Q7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVksQ0FBQyxXQUFtQjtRQUNuQyxJQUFJO1lBQ0EsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUU5QixJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRTtnQkFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2FBQzlDO2lCQUFNO2dCQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNuRDtZQUVELE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHFCQUFxQixFQUMzQyxFQUFFLE1BQU0sRUFBRSxDQUNiO2lCQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztvQkFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pDO29CQUNFLE1BQU0sUUFBUSxDQUFDO2lCQUNsQjtnQkFFRCxPQUFPLElBQUksb0JBQW9CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDVDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssc0JBQXNCLENBQzFCLE9BQXFDO1FBRXJDLE1BQU0sZ0JBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUVwRCxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLG9CQUFvQixDQUM1QyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQ1YsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLGlCQUFpQixFQUN4QixNQUFNLENBQUMsV0FBVyxFQUNsQixNQUFNLENBQUMsUUFBUSxFQUNmLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsTUFBTSxDQUFDLHVCQUF1QixFQUM5QixDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQ3ZCLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFDdkMsTUFBTSxDQUFDLGlDQUFpQyxFQUN4QyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFDakMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUNyQixNQUFNLENBQUMsa0NBQWtDLEVBQ3pDLE1BQU0sQ0FBQyxvQkFBb0IsRUFDM0IsTUFBTSxDQUFDLHNCQUFzQixFQUM3QixNQUFNLENBQUMsaUJBQWlCLEVBQ3hCLE1BQU0sQ0FBQywwQkFBMEIsRUFDakMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUNuQixNQUFNLENBQUMsU0FBUyxFQUNoQixDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQ3BCLENBQUMsTUFBTSxDQUFDLFlBQVksRUFDcEIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQ2hDLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUNqQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQ3JCLE1BQU0sQ0FBQyxjQUFjLEVBQ3JCLE1BQU0sQ0FBQyx3QkFBd0IsRUFDL0IsQ0FBQyxNQUFNLENBQUMseUJBQXlCLEVBQ2pDLE1BQU0sQ0FBQyxTQUFTLENBQ25CLENBQUM7Z0JBRUYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQzFDO1NBQ0o7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxtQkFBbUIsQ0FDdkIsTUFBZ0M7UUFFaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxrQkFBa0IsQ0FDeEMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUN0QixDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQ3ZCLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUNoQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQ3ZCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUN4QixDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FDcEMsQ0FBQztRQUVGLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7OEdBL01RLHFCQUFxQixrQkFFbEIscUJBQXFCO2tIQUZ4QixxQkFBcUIsY0FGbEIsTUFBTTs7U0FFVCxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcgfSBmcm9tICcuLi9jb3JlL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XG5pbXBvcnQgeyBFU09MVkVfQ09OTkVDVF9DT05GSUcgfSBmcm9tICcuLi9jb3JlL2Vzb2x2ZS1jb25uZWN0LWNvbmZpZy5jb25zdGFudCc7XG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XG5cbmltcG9ydCB7XG4gICAgRXNvbHZlU2hpcHBpbmdDb3N0LFxuICAgIEVzb2x2ZVNoaXBwaW5nTWV0aG9kLFxuICAgIEVzb2x2ZVRpbWVTbG90Q29uZmlnLFxufSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVTaGlwcGluZ0Nvc3RSZWNvcmQsXG4gICAgRXNvbHZlU2hpcHBpbmdNZXRob2RSZWNvcmQsXG4gICAgRXNvbHZlU2hpcHBpbmdNZXRob2RPcHRpb25zLFxuICAgIEVzb2x2ZVRpbWVTbG90Q29uZmlnUmVjb3JkLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVTaGlwcGluZ1NlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHNoaXBwaW5nIG1ldGhvZHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIEZpbHRlciBvcHRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBzaGlwcGluZyBtZXRob2RzXG4gICAgICovXG4gICAgcHVibGljIGdldFNoaXBwaW5nTWV0aG9kcyhcbiAgICAgICAgb3B0aW9ucz86IEVzb2x2ZVNoaXBwaW5nTWV0aG9kT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVNoaXBwaW5nTWV0aG9kW10+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hZGRyZXNzZXNfaWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnYWRkcmVzc2VzX2lkJywgb3B0aW9ucy5hZGRyZXNzZXNfaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubG9jYXRpb25faWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbG9jYXRpb25faWQnLCBvcHRpb25zLmxvY2F0aW9uX2lkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU2hpcHBpbmdNZXRob2RSZWNvcmRbXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1zaGlwcGluZy1tZXRob2RzLnBocGAsXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2hpcHBpbmdNZXRob2RzKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHNoaXBwaW5nIGNvc3RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2hpcHBpbmdfaWRcbiAgICAgKiBAcGFyYW0gYWRkcmVzc2VzX2lkXG4gICAgICogQHBhcmFtIGxvY2F0aW9uX2lkXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgc2hpcHBpbmcgY29zdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2hpcHBpbmdDb3N0KFxuICAgICAgICBzaGlwcGluZ19pZDogbnVtYmVyLFxuICAgICAgICBhZGRyZXNzZXNfaWQ6IG51bWJlcixcbiAgICAgICAgbG9jYXRpb25faWQ/OiBudW1iZXIsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTaGlwcGluZ0Nvc3Q+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNoaXBwaW5nX2lkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2hpcHBpbmcgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2hpcHBpbmdfaWQnLCBzaGlwcGluZ19pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYWRkcmVzc2VzX2lkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQWRkcmVzcyBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdhZGRyZXNzZXNfaWQnLCBhZGRyZXNzZXNfaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxvY2F0aW9uX2lkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2xvY2F0aW9uX2lkJywgbG9jYXRpb25faWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTaGlwcGluZ0Nvc3RSZWNvcmRbXT4+KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtc2hpcHBpbmctY29zdC5waHBgLFxuICAgICAgICAgICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2hpcHBpbmdDb3N0KHJlc3BvbnNlLnJlY29yZHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHRpbWUgc2xvdCBjb25maWcgZnJvbSBhIHNoaXBwaW5nIG1ldGhvZFxuICAgICAqXG4gICAgICogQHBhcmFtIHNoaXBwaW5nX2lkXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgdGltZSBzbG90cyBjb25maWd1cmF0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUaW1lU2xvdHMoc2hpcHBpbmdfaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RXNvbHZlVGltZVNsb3RDb25maWc+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNoaXBwaW5nX2lkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2hpcHBpbmcgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2hpcHBpbmdfaWQnLCBzaGlwcGluZ19pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVRpbWVTbG90Q29uZmlnUmVjb3JkPj4oXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC10aW1lLXNsb3RzLnBocGAsXG4gICAgICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlVGltZVNsb3RDb25maWcocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHNoaXBwaW5nIG1ldGhvZCByZWNvcmRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm9jZXNzZWQgc2hpcHBpbmcgbWV0aG9kc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1NoaXBwaW5nTWV0aG9kcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlU2hpcHBpbmdNZXRob2RSZWNvcmRbXSxcbiAgICApOiBFc29sdmVTaGlwcGluZ01ldGhvZFtdIHtcbiAgICAgICAgY29uc3Qgc2hpcHBpbmdfbWV0aG9kczogRXNvbHZlU2hpcHBpbmdNZXRob2RbXSA9IFtdO1xuXG4gICAgICAgIGlmIChyZWNvcmRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hpcHBpbmdfbWV0aG9kID0gbmV3IEVzb2x2ZVNoaXBwaW5nTWV0aG9kKFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2Fycmllcl9uYW1lLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuZGVsaXZlcnlfY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQucHJpY2luZyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmxpbmtfdG9fY2Fycmllcl93ZWJzaXRlLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmRheXNfdG9fZGVsaXZlcixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnNoaXBwaW5nX2Nvc3RfY2FsY3VsYXRpb25fbWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuaW5zdXJhbmNlX2Nvc3RfY2FsY3VsYXRpb25fbWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmluc3VyYW5jZV9jb3N0X3BlcmNlbnRhZ2UsXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQubWV0cmljX2ZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmFsbG93X2ltbWVkaWF0ZV9wYXltZW50X3Byb2Nlc3NpbmcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5hbGxvd19wb3N0YWxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmFsbG93X3BoeXNpY2FsX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jbGllbnRfdG9fY29sbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmlzX2RlZmF1bHRfc2hpcHBpbmdfbWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQudXNlX3pvbmVzLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLm1pbl9kaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5tYXhfZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQuc2hpcHBpbmdfc3VyZ2VfY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnNoaXBwaW5nX3N1cmdlX3BlcmNlbnRhZ2UsXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQuc29ydF9wcmlvcml0eSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnNoaXBwaW5nX2dyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc2hpcHBpbmdfc2xvdF9pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnNoaXBwaW5nX3Nsb3RfZGVsYXlfaG91cnMsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5pbWFnZV91cmwsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZHMucHVzaChzaGlwcGluZ19tZXRob2QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNoaXBwaW5nX21ldGhvZHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgc2hpcHBpbmcgY29zdHMgcmVjb3JkLitcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmQgRGF0YSB0byBwcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBQcm9jZXNzZWQgc2hpcHBpbmcgY29zdHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NTaGlwcGluZ0Nvc3QoXG4gICAgICAgIHJlY29yZDogRXNvbHZlU2hpcHBpbmdDb3N0UmVjb3JkLFxuICAgICk6IEVzb2x2ZVNoaXBwaW5nQ29zdCB7XG4gICAgICAgIGNvbnN0IHNoaXBwaW5nX2Nvc3QgPSBuZXcgRXNvbHZlU2hpcHBpbmdDb3N0KFxuICAgICAgICAgICAgK3JlY29yZC5zaGlwcGluZ190b3RhbCxcbiAgICAgICAgICAgICtyZWNvcmQudmF0X29uX3NoaXBwaW5nLFxuICAgICAgICAgICAgK3JlY29yZC50b3RhbF9zYXZpbmdfb25fc2hpcHBpbmcsXG4gICAgICAgICAgICArcmVjb3JkLmluc3VyYW5jZV90b3RhbCxcbiAgICAgICAgICAgICtyZWNvcmQudmF0X29uX2luc3VyYW5jZSxcbiAgICAgICAgICAgICtyZWNvcmQudG90YWxfc2F2aW5nX29uX2luc3VyYW5jZSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gc2hpcHBpbmdfY29zdDtcbiAgICB9XG59XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNoaXBwaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc2hpcHBpbmcvZXNvbHZlLXNoaXBwaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUcvRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixvQkFBb0IsR0FDdkIsTUFBTSxXQUFXLENBQUM7OztBQVduQixNQUFNLE9BQU8scUJBQXFCO0lBQzlCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCO1FBRGUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN6QixDQUFDO0lBRUo7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCLENBQ3JCLE9BQXFDO1FBRXJDLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7Z0JBQzdDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDN0Q7WUFFRCxJQUFJLE9BQU8sT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7Z0JBQzVDLE1BQU0sR0FBRyxNQUFNLENB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eUJBQXlCLEVBQ2pDLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFDckIsTUFBTSxDQUFDLGNBQWMsRUFDckIsTUFBTSxDQUFDLHdCQUF3QixFQUMvQixDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsRUFDakMsTUFBTSxDQUFDLFNBQVMsQ0FDbkIsQ0FBQztnQkFFRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDMUM7U0FDSjtRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLG1CQUFtQixDQUN2QixNQUFnQztRQUVoQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGtCQUFrQixDQUN4QyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQ3RCLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFDdkIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQ2hDLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFDdkIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQ3hCLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUNwQyxDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQzs4R0EvTVEscUJBQXFCLGtCQUVsQixxQkFBcUI7a0hBRnhCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFHUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vY29yZS9lc29sdmUtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vY29yZS9lc29sdmUtY29ubmVjdC1jb25maWcuY29uc3RhbnQnO1xuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xuXG5pbXBvcnQge1xuICAgIEVzb2x2ZVNoaXBwaW5nQ29zdCxcbiAgICBFc29sdmVTaGlwcGluZ01ldGhvZCxcbiAgICBFc29sdmVUaW1lU2xvdENvbmZpZyxcbn0gZnJvbSAnLi9jbGFzc2VzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlU2hpcHBpbmdDb3N0UmVjb3JkLFxuICAgIEVzb2x2ZVNoaXBwaW5nTWV0aG9kUmVjb3JkLFxuICAgIEVzb2x2ZVNoaXBwaW5nTWV0aG9kT3B0aW9ucyxcbiAgICBFc29sdmVUaW1lU2xvdENvbmZpZ1JlY29yZCxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXNvbHZlU2hpcHBpbmdTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBzaGlwcGluZyBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2Ygc2hpcHBpbmcgbWV0aG9kc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTaGlwcGluZ01ldGhvZHMoXG4gICAgICAgIG9wdGlvbnM/OiBFc29sdmVTaGlwcGluZ01ldGhvZE9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTaGlwcGluZ01ldGhvZFtdPiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYWRkcmVzc2VzX2lkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2FkZHJlc3Nlc19pZCcsIG9wdGlvbnMuYWRkcmVzc2VzX2lkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmxvY2F0aW9uX2lkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2xvY2F0aW9uX2lkJywgb3B0aW9ucy5sb2NhdGlvbl9pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVNoaXBwaW5nTWV0aG9kUmVjb3JkW10+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtc2hpcHBpbmctbWV0aG9kcy5waHBgLFxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NoaXBwaW5nTWV0aG9kcyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzaGlwcGluZyBjb3N0c1xuICAgICAqXG4gICAgICogQHBhcmFtIHNoaXBwaW5nX2lkXG4gICAgICogQHBhcmFtIGFkZHJlc3Nlc19pZFxuICAgICAqIEBwYXJhbSBsb2NhdGlvbl9pZFxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHNoaXBwaW5nIGNvc3RzXG4gICAgICovXG4gICAgcHVibGljIGdldFNoaXBwaW5nQ29zdChcbiAgICAgICAgc2hpcHBpbmdfaWQ6IG51bWJlcixcbiAgICAgICAgYWRkcmVzc2VzX2lkOiBudW1iZXIsXG4gICAgICAgIGxvY2F0aW9uX2lkPzogbnVtYmVyLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU2hpcHBpbmdDb3N0PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaGlwcGluZ19pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NoaXBwaW5nIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NoaXBwaW5nX2lkJywgc2hpcHBpbmdfaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFkZHJlc3Nlc19pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZHJlc3MgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnYWRkcmVzc2VzX2lkJywgYWRkcmVzc2VzX2lkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhdGlvbl9pZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdsb2NhdGlvbl9pZCcsIGxvY2F0aW9uX2lkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU2hpcHBpbmdDb3N0UmVjb3JkW10+PihcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXNoaXBwaW5nLWNvc3QucGhwYCxcbiAgICAgICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NoaXBwaW5nQ29zdChyZXNwb25zZS5yZWNvcmRzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSB0aW1lIHNsb3QgY29uZmlnIGZyb20gYSBzaGlwcGluZyBtZXRob2RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaGlwcGluZ19pZFxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHRpbWUgc2xvdHMgY29uZmlndXJhdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VGltZVNsb3RzKHNoaXBwaW5nX2lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVRpbWVTbG90Q29uZmlnPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaGlwcGluZ19pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NoaXBwaW5nIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NoaXBwaW5nX2lkJywgc2hpcHBpbmdfaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUaW1lU2xvdENvbmZpZ1JlY29yZD4+KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdGltZS1zbG90cy5waHBgLFxuICAgICAgICAgICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVRpbWVTbG90Q29uZmlnKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSBzaGlwcGluZyBtZXRob2QgcmVjb3Jkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIHNoaXBwaW5nIG1ldGhvZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NTaGlwcGluZ01ldGhvZHMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZVNoaXBwaW5nTWV0aG9kUmVjb3JkW10sXG4gICAgKTogRXNvbHZlU2hpcHBpbmdNZXRob2RbXSB7XG4gICAgICAgIGNvbnN0IHNoaXBwaW5nX21ldGhvZHM6IEVzb2x2ZVNoaXBwaW5nTWV0aG9kW10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNoaXBwaW5nX21ldGhvZCA9IG5ldyBFc29sdmVTaGlwcGluZ01ldGhvZChcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhcnJpZXJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmRlbGl2ZXJ5X2NhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnByaWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5saW5rX3RvX2NhcnJpZXJfd2Vic2l0ZSxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5kYXlzX3RvX2RlbGl2ZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zaGlwcGluZ19jb3N0X2NhbGN1bGF0aW9uX21ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmluc3VyYW5jZV9jb3N0X2NhbGN1bGF0aW9uX21ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pbnN1cmFuY2VfY29zdF9wZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLm1ldHJpY19mYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5hbGxvd19pbW1lZGlhdGVfcGF5bWVudF9wcm9jZXNzaW5nLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYWxsb3dfcG9zdGFsX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5hbGxvd19waHlzaWNhbF9hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2xpZW50X3RvX2NvbGxlY3QsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5pc19kZWZhdWx0X3NoaXBwaW5nX21ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnVzZV96b25lcyxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5taW5fZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgICAgICtyZWNvcmQubWF4X2Rpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnNoaXBwaW5nX3N1cmdlX2NvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5zaGlwcGluZ19zdXJnZV9wZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgICAgICArcmVjb3JkLnNvcnRfcHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zaGlwcGluZ19ncm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnNoaXBwaW5nX3Nsb3RfaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5zaGlwcGluZ19zbG90X2RlbGF5X2hvdXJzLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuaW1hZ2VfdXJsLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBzaGlwcGluZ19tZXRob2RzLnB1c2goc2hpcHBpbmdfbWV0aG9kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzaGlwcGluZ19tZXRob2RzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHNoaXBwaW5nIGNvc3RzIHJlY29yZC4rXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkIERhdGEgdG8gcHJvY2Vzc1xuICAgICAqXG4gICAgICogQHJldHVybnMgUHJvY2Vzc2VkIHNoaXBwaW5nIGNvc3RzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzU2hpcHBpbmdDb3N0KFxuICAgICAgICByZWNvcmQ6IEVzb2x2ZVNoaXBwaW5nQ29zdFJlY29yZCxcbiAgICApOiBFc29sdmVTaGlwcGluZ0Nvc3Qge1xuICAgICAgICBjb25zdCBzaGlwcGluZ19jb3N0ID0gbmV3IEVzb2x2ZVNoaXBwaW5nQ29zdChcbiAgICAgICAgICAgICtyZWNvcmQuc2hpcHBpbmdfdG90YWwsXG4gICAgICAgICAgICArcmVjb3JkLnZhdF9vbl9zaGlwcGluZyxcbiAgICAgICAgICAgICtyZWNvcmQudG90YWxfc2F2aW5nX29uX3NoaXBwaW5nLFxuICAgICAgICAgICAgK3JlY29yZC5pbnN1cmFuY2VfdG90YWwsXG4gICAgICAgICAgICArcmVjb3JkLnZhdF9vbl9pbnN1cmFuY2UsXG4gICAgICAgICAgICArcmVjb3JkLnRvdGFsX3NhdmluZ19vbl9pbnN1cmFuY2UsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHNoaXBwaW5nX2Nvc3Q7XG4gICAgfVxufVxuIl19
@@ -6,7 +6,7 @@ import { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';
6
6
  import { EsolveSpecial } from './esolve-special.model';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common/http";
9
- class EsolveSpecialsService {
9
+ export class EsolveSpecialsService {
10
10
  constructor(config, http) {
11
11
  this.config = config;
12
12
  this.http = http;
@@ -67,11 +67,10 @@ class EsolveSpecialsService {
67
67
  processSpecial(record) {
68
68
  return new EsolveSpecial(record);
69
69
  }
70
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveSpecialsService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
71
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveSpecialsService, providedIn: 'root' }); }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveSpecialsService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
71
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveSpecialsService, providedIn: 'root' }); }
72
72
  }
73
- export { EsolveSpecialsService };
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveSpecialsService, decorators: [{
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveSpecialsService, decorators: [{
75
74
  type: Injectable,
76
75
  args: [{
77
76
  providedIn: 'root',
@@ -80,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
80
79
  type: Inject,
81
80
  args: [ESOLVE_CONNECT_CONFIG]
82
81
  }] }, { type: i1.HttpClient }]; } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNwZWNpYWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3BlY2lhbHMvZXNvbHZlLXNwZWNpYWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFJdkQsTUFHYSxxQkFBcUI7SUFDOUIsWUFDMkMsTUFBMkIsRUFDMUQsSUFBZ0I7UUFEZSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxRCxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3pCLENBQUM7SUFFRyxVQUFVLENBQUMsV0FBbUI7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFO1NBQzlCLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSx3QkFBd0IsQ0FDM0IsVUFBa0I7UUFFbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFO1NBQzdCLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxXQUFXLENBQ2QsT0FBOEI7UUFFOUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU5QixJQUFJLE9BQU8sRUFBRSxhQUFhLEVBQUU7WUFDeEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksT0FBTyxFQUFFLGVBQWUsRUFBRTtZQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDbkU7UUFFRCxJQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUU7WUFDdEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUVELElBQUksT0FBTyxFQUFFLFlBQVksRUFBRTtZQUN2QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNaLE1BQU0sUUFBUSxHQUFvQixFQUFFLENBQUM7WUFFckMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQzlDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE9BQU8sRUFBRSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWtCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8saUJBQWlCLENBQ3JCLE1BQW1CO1FBRW5CLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sbUJBQW1CLEVBQ3pDLEVBQUUsTUFBTSxFQUFFLENBQ2I7YUFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUM5QjtnQkFDRSxNQUFNLFFBQVEsQ0FBQzthQUNsQjtZQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUEyQjtRQUM5QyxPQUFPLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBL0ZRLHFCQUFxQixrQkFFbEIscUJBQXFCO2tIQUZ4QixxQkFBcUIsY0FGbEIsTUFBTTs7U0FFVCxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vY29yZS9lc29sdmUtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vY29yZS9lc29sdmUtY29ubmVjdC1jb25maWcuY29uc3RhbnQnO1xuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xuXG5pbXBvcnQgeyBFc29sdmVTcGVjaWFsIH0gZnJvbSAnLi9lc29sdmUtc3BlY2lhbC5tb2RlbCc7XG5pbXBvcnQgeyBFc29sdmVTcGVjaWFsT3B0aW9ucyB9IGZyb20gJy4vZXNvbHZlLXNwZWNpYWwtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXNvbHZlU3BlY2lhbFJlY29yZCB9IGZyb20gJy4vZXNvbHZlLXNwZWNpYWwtcmVjb3JkLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZVNwZWNpYWxzU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRVNPTFZFX0NPTk5FQ1RfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogRXNvbHZlQ29ubmVjdENvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICkge31cblxuICAgIHB1YmxpYyBnZXRTcGVjaWFsKHNwZWNpYWxzX2lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVNwZWNpYWw+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDogeyBzcGVjaWFsc19pZCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTcGVjaWFsU2luZ2xlKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNwZWNpYWxGcm9tSWRlbnRpZmllcihcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3BlY2lhbD4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICAgICAgICBmcm9tT2JqZWN0OiB7IGlkZW50aWZpZXIgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3BlY2lhbFNpbmdsZShwYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTcGVjaWFscyhcbiAgICAgICAgb3B0aW9ucz86IEVzb2x2ZVNwZWNpYWxPcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3BlY2lhbFtdPiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zPy5mZWF0dXJlZF9vbmx5KSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdmZWF0dXJlZF9vbmx5Jywgb3B0aW9ucy5mZWF0dXJlZF9vbmx5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zPy5pbWFnZV9jb250YWluZXIpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2ltYWdlX2NvbnRhaW5lcicsIG9wdGlvbnMuaW1hZ2VfY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zPy5sb2NhdGlvbl9pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbG9jYXRpb25faWQnLCBvcHRpb25zLmxvY2F0aW9uX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zPy5zcGVjaWFsX3R5cGUpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NwZWNpYWxfdHlwZScsIG9wdGlvbnMuc3BlY2lhbF90eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNwZWNpYWxSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVjb3JkcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpYWxzOiBFc29sdmVTcGVjaWFsW10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbHMucHVzaCh0aGlzLnByb2Nlc3NTcGVjaWFsKHJlY29yZCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzcGVjaWFscztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mPEVzb2x2ZVNwZWNpYWxbXT4oW10pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTcGVjaWFsU2luZ2xlKHBhcmFtczogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8RXNvbHZlU3BlY2lhbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTcGVjaWFsUmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlY29yZHMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzWzBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NwZWNpYWwocmVjb3JkKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3BlY2lhbFJlY29yZHMoXG4gICAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTcGVjaWFsUmVjb3JkW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTcGVjaWFsUmVjb3JkW10+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtc3BlY2lhbHMucGhwYCxcbiAgICAgICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5yZWNvcmRzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NTcGVjaWFsKHJlY29yZDogRXNvbHZlU3BlY2lhbFJlY29yZCk6IEVzb2x2ZVNwZWNpYWwge1xuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVNwZWNpYWwocmVjb3JkKTtcbiAgICB9XG59XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNwZWNpYWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3BlY2lhbHMvZXNvbHZlLXNwZWNpYWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFPdkQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDekIsQ0FBQztJQUVHLFVBQVUsQ0FBQyxXQUFtQjtRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMxQixVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUU7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLHdCQUF3QixDQUMzQixVQUFrQjtRQUVsQixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMxQixVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUU7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLFdBQVcsQ0FDZCxPQUE4QjtRQUU5QixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksT0FBTyxFQUFFLGFBQWEsRUFBRTtZQUN4QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsSUFBSSxPQUFPLEVBQUUsZUFBZSxFQUFFO1lBQzFCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNuRTtRQUVELElBQUksT0FBTyxFQUFFLFdBQVcsRUFBRTtZQUN0QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0Q7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3RDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1osTUFBTSxRQUFRLEdBQW9CLEVBQUUsQ0FBQztZQUVyQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDOUM7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxFQUFFLENBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBa0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNaLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxpQkFBaUIsQ0FDckIsTUFBbUI7UUFFbkIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxtQkFBbUIsRUFDekMsRUFBRSxNQUFNLEVBQUUsQ0FDYjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCO2dCQUNFLE1BQU0sUUFBUSxDQUFDO2FBQ2xCO1lBRUQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQTJCO1FBQzlDLE9BQU8sSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0EvRlEscUJBQXFCLGtCQUVsQixxQkFBcUI7a0hBRnhCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFHUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2NvcmUvZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2NvcmUvZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcblxuaW1wb3J0IHsgRXNvbHZlU3BlY2lhbCB9IGZyb20gJy4vZXNvbHZlLXNwZWNpYWwubW9kZWwnO1xuaW1wb3J0IHsgRXNvbHZlU3BlY2lhbE9wdGlvbnMgfSBmcm9tICcuL2Vzb2x2ZS1zcGVjaWFsLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVzb2x2ZVNwZWNpYWxSZWNvcmQgfSBmcm9tICcuL2Vzb2x2ZS1zcGVjaWFsLXJlY29yZC5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVTcGVjaWFsc1NlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0U3BlY2lhbChzcGVjaWFsc19pZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFc29sdmVTcGVjaWFsPiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHsgc3BlY2lhbHNfaWQgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3BlY2lhbFNpbmdsZShwYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTcGVjaWFsRnJvbUlkZW50aWZpZXIoXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVNwZWNpYWw+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDogeyBpZGVudGlmaWVyIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNwZWNpYWxTaW5nbGUocGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3BlY2lhbHMoXG4gICAgICAgIG9wdGlvbnM/OiBFc29sdmVTcGVjaWFsT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVNwZWNpYWxbXT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAob3B0aW9ucz8uZmVhdHVyZWRfb25seSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZmVhdHVyZWRfb25seScsIG9wdGlvbnMuZmVhdHVyZWRfb25seSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucz8uaW1hZ2VfY29udGFpbmVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpbWFnZV9jb250YWluZXInLCBvcHRpb25zLmltYWdlX2NvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucz8ubG9jYXRpb25faWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2xvY2F0aW9uX2lkJywgb3B0aW9ucy5sb2NhdGlvbl9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucz8uc3BlY2lhbF90eXBlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzcGVjaWFsX3R5cGUnLCBvcHRpb25zLnNwZWNpYWxfdHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTcGVjaWFsUmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlY29yZHMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWFsczogRXNvbHZlU3BlY2lhbFtdID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxzLnB1c2godGhpcy5wcm9jZXNzU3BlY2lhbChyZWNvcmQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbHM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZjxFc29sdmVTcGVjaWFsW10+KFtdKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3BlY2lhbFNpbmdsZShwYXJhbXM6IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPEVzb2x2ZVNwZWNpYWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3BlY2lhbFJlY29yZHMocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZWNvcmRzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0gcmVjb3Jkc1swXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTcGVjaWFsKHJlY29yZCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNwZWNpYWxSZWNvcmRzKFxuICAgICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3BlY2lhbFJlY29yZFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3BlY2lhbFJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXNwZWNpYWxzLnBocGAsXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3JkcztcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3BlY2lhbChyZWNvcmQ6IEVzb2x2ZVNwZWNpYWxSZWNvcmQpOiBFc29sdmVTcGVjaWFsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVTcGVjaWFsKHJlY29yZCk7XG4gICAgfVxufVxuIl19
@@ -52,6 +52,14 @@ export class EsolveStockItemBase {
52
52
  * Code identifying the stock item
53
53
  */
54
54
  this.code = '';
55
+ /**
56
+ * Code used by supplier
57
+ */
58
+ this.supplier_code = '';
59
+ /**
60
+ * The barcode of the item
61
+ */
62
+ this.barcode = '';
55
63
  /**
56
64
  * Name of the stock item
57
65
  */
@@ -209,6 +217,8 @@ export class EsolveStockItemBase {
209
217
  if (record) {
210
218
  this.id = +(record.id ?? 0);
211
219
  this.code = record.code ?? '';
220
+ this.supplier_code = record.supplier_code ?? '';
221
+ this.barcode = record.barcode ?? '';
212
222
  this.name = record.name ?? '';
213
223
  this.sef_name = record.sef_name ?? '';
214
224
  this.search_composite = record.search_composite ?? '';
@@ -309,4 +319,4 @@ export class EsolveStockItemBase {
309
319
  return '';
310
320
  }
311
321
  }
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0tYmFzZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9zdG9jay9jbGFzc2VzL2Vzb2x2ZS1zdG9jay1pdGVtLWJhc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUkzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFekYsTUFBTSxPQUFPLG1CQUFtQjtJQXVNNUI7O09BRUc7SUFDSCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVB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QUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN6QixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxhQUFhLENBQ2hDLFNBQVMsRUFDVCxJQUFJLENBQUMsV0FBVyxFQUNoQixZQUFZLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFFTSxZQUFZLENBQUMsVUFBZ0M7UUFDaEQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFFZixJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pDLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVDO1lBRUQsT0FBTyxpQkFBaUIsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUM7U0FDbkU7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZUN1c3RvbUZpZWxkcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jdXN0b20tZmllbGRzJztcbmltcG9ydCB7IEVzb2x2ZVNlb0RldGFpbHMsIEVzb2x2ZVNlb0luZm8gfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VvJztcblxuaW1wb3J0IHsgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbSB9IGZyb20gJy4uLy4uL2NhdGVnb3J5LXRyZWUnO1xuaW1wb3J0IHsgRXNvbHZlTWFudWZhY3R1cmVyIH0gZnJvbSAnLi4vLi4vbWFudWZhY3R1cmVycyc7XG5pbXBvcnQgeyBFc29sdmVSYW5nZSB9IGZyb20gJy4uLy4uL3Jhbmdlcyc7XG5pbXBvcnQgeyBFc29sdmVUYWcgfSBmcm9tICcuLi8uLi90YWdzJztcbmltcG9ydCB7IEVzb2x2ZVRvcGljIH0gZnJvbSAnLi4vLi4vdG9waWNzJztcblxuaW1wb3J0IHsgRXNvbHZlU3RvY2tJbWFnZVNpemUsIEVzb2x2ZVN0b2NrVW5pdE9mTWVhc3VyZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEVzb2x2ZVN0b2NrQmFzZVJlY29yZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRXNvbHZlU3RvY2tCYWRnZSB9IGZyb20gJy4vZXNvbHZlLXN0b2NrLWJhZGdlLm1vZGVsJztcbmltcG9ydCB7IEVzb2x2ZVN0b2NrUHJpY2UgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1wcmljZS5tb2RlbCc7XG5pbXBvcnQgeyBFc29sdmVDb2xvdXIgfSBmcm9tICcuL2Vzb2x2ZS1jb2xvdXIubW9kZWwnO1xuaW1wb3J0IHsgRXNvbHZlU3RvY2tMZWFkVGltZXMgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1sZWFkLXRpbWVzLm1vZGVsJztcbmltcG9ydCB7IEVzb2x2ZVN0b2NrVHJhbnNhY3Rpb25IaXN0b3J5IH0gZnJvbSAnLi9lc29sdmUtc3RvY2stdHJhbnNhY3Rpb24taGlzdG9yeS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBFc29sdmVTdG9ja0l0ZW1CYXNlPFxuICAgIFQgZXh0ZW5kcyBFc29sdmVDdXN0b21GaWVsZHMgPSBFc29sdmVDdXN0b21GaWVsZHMsXG4+IGltcGxlbWVudHMgRXNvbHZlU2VvRGV0YWlsc1xue1xuICAgIC8qKlxuICAgICAqIGVTb2x2ZSBHZW5lcmF0ZWQgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgaWQgPSAwO1xuICAgIC8qKlxuICAgICAqIENvZGUgaWRlbnRpZnlpbmcgdGhlIHN0b2NrIGl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgY29kZSA9ICcnO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIHN0b2NrIGl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgbmFtZSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFNlYXJjaCBlbmdpbmUgZnJpZW5kbHkgbmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZWZfbmFtZSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFNlYXJjaCBjb21wb3NpdGUgZmllbGQgbWFkZSB1cCBvZiBrZXkgcGhyYXNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZWFyY2hfY29tcG9zaXRlID0gJyc7XG4gICAgLyoqXG4gICAgICogVHlwZSBmaWVsZC4gR2VuZXJhbCBoaWdoIGdyb3VwaW5nXG4gICAgICovXG4gICAgcHVibGljIHR5cGUgPSAnJztcbiAgICAvKipcbiAgICAgKiBTdWIgdHlwZSBmaWVsZC4gR2VuZXJhbCBoaWdoIGdyb3VwaW5nXG4gICAgICovXG4gICAgcHVibGljIHN1Yl90eXBlID0gJyc7XG4gICAgLyoqXG4gICAgICogU2hvcnQgZGVzY3JpcHRpb24gb2Ygc3RvY2sgaXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNjcmlwdGlvbiA9ICcnO1xuICAgIC8qKlxuICAgICAqIEZ1bGwgZGVzY3JpcHRpb24gb2Ygc3RvY2sgaXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBleHRlbmRlZF9kZXNjcmlwdGlvbiA9ICcnO1xuICAgIC8qKlxuICAgICAqIEFjdGl2ZSBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhY3RpdmUgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBGZWF0dXJlZCBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBmZWF0dXJlZCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIERpc3BsYXkgT25seSBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5X29ubHkgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBRdW90YWJsZSBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd19xdW90ZXMgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIE9yZGVyYWJsZSBzdGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd19vcmRlcnMgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEl0ZW0gbXVzdCBiZSBjb2xsZWN0ZWQsIG5vdCBkZWxpdmVyeSBwb3NzaWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyBtdXN0X2NvbGxlY3QgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJdGVtIG5lZWRzIHRvIGJlIGFzc2VtYmxlZCBhZnRlciBwdXJjaGFzZVxuICAgICAqL1xuICAgIHB1YmxpYyByZXF1aXJlc19hc3NlbWJseSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIGRlbGl2ZXJ5IGNhdGVnb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgaXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxpdmVyeV9jYXRlZ29yeSA9ICdyZWd1bGFyX2l0ZW0nO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBzdG9jayBsYWJlbCBhZGRlZCBvbiB0byBpdGVtIHRvIGRpc3BsYXkgZm9yIHVzZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VzdG9tX2xhYmVsID0gJyc7XG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHN0b2NrIGF2YWlsYWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbW91bnRfaW5fc3RvY2sgPSAwO1xuICAgIC8qKlxuICAgICAqIFRvdGFsIGl0ZW1zIGxpbmtlZCB0byB0aGUgaXRlbSBhcyBhIHJlY2lwZVxuICAgICAqL1xuICAgIHB1YmxpYyB0b3RhbF9yZWNpcGVfaXRlbXMgPSAwO1xuICAgIC8qKlxuICAgICAqIEhlaWdodCBtZWFzdXJlZCBpbiBtZXRlcnMgKG0pXG4gICAgICovXG4gICAgcHVibGljIGhlaWdodCA9IDA7XG4gICAgLyoqXG4gICAgICogV2lkdGggbWVhc3VyZWQgaW4gbWV0ZXJzIChtKVxuICAgICAqL1xuICAgIHB1YmxpYyB3aWR0aCA9IDA7XG4gICAgLyoqXG4gICAgICogTGVuZ3RoIC8gZGVwdGggbWVhc3VyZWQgaW4gbWV0ZXJzIChtKVxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSAwO1xuICAgIC8qKlxuICAgICAqIFdlaWdodCBtZWFzdXJlZCBpbiBraWxvZ3JhbXMgKGtnKVxuICAgICAqL1xuICAgIHB1YmxpYyB3ZWlnaHQgPSAwO1xuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiBpdGVtcyBpbiBhIHBhY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgcGFja19zaXplID0gMDtcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgcGFja1xuICAgICAqL1xuICAgIHB1YmxpYyBwYWNrX2Rlc2NyaXB0aW9uID0gJyc7XG4gICAgLyoqXG4gICAgICogVW5pdHMgdXNlZCB0byBtZWFzdXJlIHRoZSBxdWFudGl0eVxuICAgICAqL1xuICAgIHB1YmxpYyB1bml0X29mX21lYXN1cmU6IEVzb2x2ZVN0b2NrVW5pdE9mTWVhc3VyZSA9ICd1bml0JztcbiAgICAvKipcbiAgICAgKiBJRCBvZiBkZWZhdWx0IGNhdGVnb3J5IGxpbmtlZCB0byB0aGUgc3RvY2sgaXRlbVxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGBjYXRlZ29yeS5lc29sdmVfaWRgIGZpZWxkIGluc3RlYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgY2F0ZWdvcnlfaWQgPSAnJztcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IGxpbmtlZCBjYXRlZ29yeVxuICAgICAqL1xuICAgIHB1YmxpYyBjYXRlZ29yeT86IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW07XG4gICAgLyoqXG4gICAgICogSUQgb2YgZGVmYXVsdCBzdWJjYXRlZ29yeSBsaW5rZWQgdG8gdGhlIHN0b2NrIGl0ZW1cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgc3ViY2F0ZWdvcnkuZXNvbHZlX2lkYCBmaWVsZCBpbnN0ZWFkXG4gICAgICovXG4gICAgcHVibGljIHN1YmNhdGVnb3J5X2lkID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IGxpbmtlZCBzdWJjYXRlZ29yeVxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJjYXRlZ29yeT86IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW07XG4gICAgLyoqXG4gICAgICogSUQgb2YgbGlua2VkIG1hbnVmYWN0dXJlclxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGBtYW51ZmFjdHVyZXIuaWRgIGZpZWxkIGluc3RlYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbWFudWZhY3R1cmVyc19pZCA9IDA7XG4gICAgLyoqXG4gICAgICogTGlua2VkIG1hbnVmYWN0dXJlclxuICAgICAqL1xuICAgIHB1YmxpYyBtYW51ZmFjdHVyZXI/OiBFc29sdmVNYW51ZmFjdHVyZXI7XG4gICAgLyoqXG4gICAgICogSUQgb2YgbGlua2VkIHJhbmdlXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYHJhbmdlLmlkYCBmaWVsZCBpbnN0ZWFkXG4gICAgICovXG4gICAgcHVibGljIHJhbmdlc19pZCA9IDA7XG4gICAgLyoqXG4gICAgICogTGlua2VkIHJhbmdlXG4gICAgICovXG4gICAgcHVibGljIHJhbmdlPzogRXNvbHZlUmFuZ2U7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBwcmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBwcmljZTogRXNvbHZlU3RvY2tQcmljZTtcbiAgICAvKipcbiAgICAgKiBTRU8gcGFnZSBkZXRhaWxzXG4gICAgICovXG4gICAgcHVibGljIHNlb19kZXRhaWxzOiBFc29sdmVTZW9JbmZvO1xuICAgIC8qKlxuICAgICAqIExpbmtlZCB0YWdzXG4gICAgICovXG4gICAgcHVibGljIHRhZ3M6IEVzb2x2ZVRhZ1tdID0gW107XG4gICAgLyoqXG4gICAgICogTGlua2VkIHRvcGljc1xuICAgICAqL1xuICAgIHB1YmxpYyB0b3BpY3M6IEVzb2x2ZVRvcGljW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBTdG9jayBiYWRnZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgYmFkZ2VzOiBFc29sdmVTdG9ja0JhZGdlW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBTdG9jayBpdGVtIGN1c3RvbSBmaWVsZHMuXG4gICAgICovXG4gICAgcHVibGljIGN1c3RvbV9maWVsZHM/OiBUO1xuICAgIC8qKlxuICAgICAqIENvbG91cnNcbiAgICAgKi9cbiAgICBwdWJsaWMgY29sb3VyczogRXNvbHZlQ29sb3VyW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBTdG9jayBJdGVtIExlYWQgVGltZXMgZm9yIHN1cHBseVxuICAgICAqL1xuICAgIHB1YmxpYyBsZWFkX3RpbWVzPzogRXNvbHZlU3RvY2tMZWFkVGltZXM7XG4gICAgLyoqXG4gICAgICogTGlua2VkIG1hbnVmYWN0dXJlclxuICAgICAqL1xuICAgIHB1YmxpYyBoaXN0b3J5PzogRXNvbHZlU3RvY2tUcmFuc2FjdGlvbkhpc3Rvcnk7XG5cbiAgICAvKipcbiAgICAgKiBJbWFnZSBmaWxlbmFtZVxuICAgICAqL1xuICAgIHByaXZhdGUgaW1hZ2VfbmFtZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogSW1hZ2UgTGFzdCBtb2RpZmllZFxuICAgICAqL1xuICAgIHByaXZhdGUgaW1hZ2VfbGFzdF9tb2RpZmllZCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aW55IHN0b2NrIGltYWdlXG4gICAgICovXG4gICAgcHVibGljIGdldCB0aW55X2ltYWdlX3NyYygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJbWFnZVBhdGgoJ3RpbnknKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIHRodW1ibmFpbCBzdG9jayBpbWFnZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGh1bWJuYWlsX2ltYWdlX3NyYygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJbWFnZVBhdGgoJ3RodW1iJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF0aCB0byBzbWFsbCBzdG9jayBpbWFnZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc21hbGxfaW1hZ2Vfc3JjKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEltYWdlUGF0aCgnc21hbGwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIGJpZyBzdG9jayBpbWFnZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYmlnX2ltYWdlX3NyYygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJbWFnZVBhdGgoJ2JpZycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdGggdG8gb3JpZ2luYWwgc3RvY2sgaW1hZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG9yaWdpbmFsX2ltYWdlX3NyYygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJbWFnZVBhdGgoJ29yaWdpbmFsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFtb3VudF9pbl9zdG9jayA+IDA7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocmVjb3JkOiBQYXJ0aWFsPEVzb2x2ZVN0b2NrQmFzZVJlY29yZDxUPj4gPSB7fSkge1xuICAgICAgICBsZXQgc2VvX3RpdGxlID0gJyc7XG4gICAgICAgIGxldCBzZW9fa2V5d29yZHMgPSAnJztcbiAgICAgICAgbGV0IGJhc2VfcHJpY2UgPSAwO1xuICAgICAgICBsZXQgYmFzZV9wcmljZV93aXRoX3RheCA9IDA7XG4gICAgICAgIGxldCBzZWxsX3ByaWNlID0gMDtcbiAgICAgICAgbGV0IHNlbGxfcHJpY2Vfd2l0aF90YXggPSAwO1xuXG4gICAgICAgIGlmIChyZWNvcmQpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSArKHJlY29yZC5pZCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMuY29kZSA9IHJlY29yZC5jb2RlID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gcmVjb3JkLm5hbWUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnNlZl9uYW1lID0gcmVjb3JkLnNlZl9uYW1lID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hfY29tcG9zaXRlID0gcmVjb3JkLnNlYXJjaF9jb21wb3NpdGUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSByZWNvcmQudHlwZSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc3ViX3R5cGUgPSByZWNvcmQuc3ViX3R5cGUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gcmVjb3JkLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5leHRlbmRlZF9kZXNjcmlwdGlvbiA9IHJlY29yZC5leHRlbmRlZF9kZXNjcmlwdGlvbiA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VfbmFtZSA9IHJlY29yZC5pbWFnZV9uYW1lID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5pbWFnZV9sYXN0X21vZGlmaWVkID0gcmVjb3JkLmltYWdlX2xhc3RfbW9kaWZpZWQgPz8gJyc7XG5cbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlfaWQgPSByZWNvcmQuY2F0ZWdvcnlfaWQgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnN1YmNhdGVnb3J5X2lkID0gKyhyZWNvcmQuc3ViY2F0ZWdvcnlfaWQgPz8gMCk7XG4gICAgICAgICAgICB0aGlzLm1hbnVmYWN0dXJlcnNfaWQgPSArKHJlY29yZC5tYW51ZmFjdHVyZXJzX2lkID8/IDApO1xuICAgICAgICAgICAgdGhpcy5yYW5nZXNfaWQgPSArKHJlY29yZC5yYW5nZXNfaWQgPz8gMCk7XG4gICAgICAgICAgICB0aGlzLmRlbGl2ZXJ5X2NhdGVnb3J5ID0gcmVjb3JkLmRlbGl2ZXJ5X2NhdGVnb3J5ID8/ICdyZWd1bGFyX2l0ZW0nO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21fbGFiZWwgPSByZWNvcmQuY3VzdG9tX2xhYmVsID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLm11c3RfY29sbGVjdCA9ICEhKyhyZWNvcmQubXVzdF9jb2xsZWN0ID8/IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZXNfYXNzZW1ibHkgPSAhISsocmVjb3JkLnJlcXVpcmVzX2Fzc2VtYmx5ID8/IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gISErKHJlY29yZC5pc19hY3RpdmUgPz8gZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5mZWF0dXJlZCA9ICEhKyhyZWNvcmQuaXNfZmVhdHVyZWQgPz8gZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5X29ubHkgPSAhISsocmVjb3JkLmRpc3BsYXlfb25seSA/PyBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmFsbG93X3F1b3RlcyA9IHJlY29yZC5hbGxvd19xdW90ZXMgPz8gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dfb3JkZXJzID0gcmVjb3JkLmFsbG93X29yZGVycyA/PyB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmFtb3VudF9pbl9zdG9jayA9ICsocmVjb3JkLm9uaGFuZCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMudG90YWxfcmVjaXBlX2l0ZW1zID0gKyhyZWNvcmQudG90YWxfcmVjaXBlX2l0ZW1zID8/IDApO1xuXG4gICAgICAgICAgICB0aGlzLnBhY2tfc2l6ZSA9ICsocmVjb3JkLml0ZW1zX2luX3BhY2sgPz8gMCk7XG4gICAgICAgICAgICB0aGlzLnBhY2tfZGVzY3JpcHRpb24gPSByZWNvcmQucGFja19kZXNjcmlwdGlvbiA/PyAnJztcblxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSArKHJlY29yZC5oZWlnaHQgPz8gMCk7XG4gICAgICAgICAgICB0aGlzLndpZHRoID0gKyhyZWNvcmQud2lkdGggPz8gMCk7XG4gICAgICAgICAgICB0aGlzLmxlbmd0aCA9ICsocmVjb3JkLmxlbmd0aCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMud2VpZ2h0ID0gKyhyZWNvcmQud2VpZ2h0ID8/IDApO1xuXG4gICAgICAgICAgICBpZiAocmVjb3JkLnVuaXRfb2ZfbWVhc3VyZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5pdF9vZl9tZWFzdXJlID0gcmVjb3JkLnVuaXRfb2ZfbWVhc3VyZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmFzZV9wcmljZSA9ICsocmVjb3JkLnJlZ3VsYXJfc2VsbHByaWNlID8/IDApO1xuICAgICAgICAgICAgYmFzZV9wcmljZV93aXRoX3RheCA9ICsocmVjb3JkLnJlZ3VsYXJfc2VsbHByaWNlX2luY2x1c2l2ZSA/PyAwKTtcbiAgICAgICAgICAgIHNlbGxfcHJpY2UgPSArKHJlY29yZC5zZWxscHJpY2UgPz8gMCk7XG4gICAgICAgICAgICBzZWxsX3ByaWNlX3dpdGhfdGF4ID0gKyhyZWNvcmQuc2VsbHByaWNlX2luY2x1c2l2ZSA/PyAwKTtcblxuICAgICAgICAgICAgaWYgKHJlY29yZC50YWdzICYmIHJlY29yZC50YWdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiByZWNvcmQudGFncykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhZ3MucHVzaChuZXcgRXNvbHZlVGFnKHRhZykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC50b3BpY3MgJiYgcmVjb3JkLnRvcGljcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0b3BpYyBvZiByZWNvcmQudG9waWNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9waWNzLnB1c2gobmV3IEVzb2x2ZVRvcGljKHRvcGljKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLmJhZGdlcyAmJiByZWNvcmQuYmFkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGJhZGdlIG9mIHJlY29yZC5iYWRnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWRnZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBFc29sdmVTdG9ja0JhZGdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICtiYWRnZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2UuZm9udF9jb2xvdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2UuYmFkZ2VfY29sb3VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICtiYWRnZS5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWNvcmQuY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gbmV3IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0oXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS50eXBlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuaWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5wYXJlbnRfaWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNlZl9kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNob3J0X2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuc29ydF9wcmlvcml0eSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmRpc3BsYXlfb25seSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmltYWdlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuc2VvX3BhZ2VfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zZW9fa2V5d29yZHMsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zZW9fZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC5zdWJjYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3ViY2F0ZWdvcnkgPSBuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnBhcmVudF9pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2VmX2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2hvcnRfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuZGlzcGxheV9vbmx5LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5zZW9fcGFnZV90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNlb19rZXl3b3JkcyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNlb19kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLm1hbnVmYWN0dXJlcikge1xuICAgICAgICAgICAgICAgIHRoaXMubWFudWZhY3R1cmVyID0gbmV3IEVzb2x2ZU1hbnVmYWN0dXJlcihyZWNvcmQubWFudWZhY3R1cmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC5yYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UgPSBuZXcgRXNvbHZlUmFuZ2UocmVjb3JkLnJhbmdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC5jb2xvdXJzICYmIHJlY29yZC5jb2xvdXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbG91ciBvZiByZWNvcmQuY29sb3Vycykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG91cnMucHVzaChuZXcgRXNvbHZlQ29sb3VyKGNvbG91cikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC5sZWFkX3RpbWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWFkX3RpbWVzID0gbmV3IEVzb2x2ZVN0b2NrTGVhZFRpbWVzKHJlY29yZC5sZWFkX3RpbWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC5jdXN0b21fZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21fZmllbGRzID0gcmVjb3JkLmN1c3RvbV9maWVsZHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWNvcmQudG90YWxfb3JkZXJfcXR5IHx8IHJlY29yZC50b3RhbF9xdW90ZV9xdHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbF9vcmRlcl9xdHkgPSArKHJlY29yZC50b3RhbF9vcmRlcl9xdHkgPz8gMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWxfcXVvdGVfcXR5ID0gKyhyZWNvcmQudG90YWxfcXVvdGVfcXR5ID8/IDApO1xuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeSA9IG5ldyBFc29sdmVTdG9ja1RyYW5zYWN0aW9uSGlzdG9yeShcbiAgICAgICAgICAgICAgICAgICAgdG90YWxfb3JkZXJfcXR5LFxuICAgICAgICAgICAgICAgICAgICB0b3RhbF9xdW90ZV9xdHksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VvX3RpdGxlID0gcmVjb3JkLnNlb19wYWdlX3RpdGxlID8/ICcnO1xuICAgICAgICAgICAgc2VvX2tleXdvcmRzID0gcmVjb3JkLnNlb19rZXl3b3JkcyA/PyAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJpY2UgPSBuZXcgRXNvbHZlU3RvY2tQcmljZShcbiAgICAgICAgICAgIGJhc2VfcHJpY2UsXG4gICAgICAgICAgICBiYXNlX3ByaWNlX3dpdGhfdGF4LFxuICAgICAgICAgICAgc2VsbF9wcmljZSxcbiAgICAgICAgICAgIHNlbGxfcHJpY2Vfd2l0aF90YXgsXG4gICAgICAgICAgICByZWNvcmQudmF0X3JhdGUsXG4gICAgICAgICAgICByZWNvcmQudmF0X2l0ZW0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHNlb190aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICBzZW9fdGl0bGUgPSB0aGlzLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlb19kZXRhaWxzID0gbmV3IEVzb2x2ZVNlb0luZm8oXG4gICAgICAgICAgICBzZW9fdGl0bGUsXG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgc2VvX2tleXdvcmRzLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbWFnZVBhdGgoaW1hZ2Vfc2l6ZTogRXNvbHZlU3RvY2tJbWFnZVNpemUpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pbWFnZV9uYW1lICE9PSAnJykge1xuICAgICAgICAgICAgbGV0IHBhcmFtID0gJyc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmltYWdlX2xhc3RfbW9kaWZpZWQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcGFyYW0gPSBgP3Q9JHt0aGlzLmltYWdlX2xhc3RfbW9kaWZpZWR9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGAvaW1hZ2VzL3N0b2NrLyR7aW1hZ2Vfc2l6ZX0vJHt0aGlzLmltYWdlX25hbWV9JHtwYXJhbX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbn1cbiJdfQ==
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0tYmFzZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9zdG9jay9jbGFzc2VzL2Vzb2x2ZS1zdG9jay1pdGVtLWJhc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFvQixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUkzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFekYsTUFBTSxPQUFPLG1CQUFtQjtJQStNNUI7O09BRUc7SUFDSCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVB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TUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZ0JBQWdCLENBQzdCLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixNQUFNLENBQUMsUUFBUSxFQUNmLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLENBQUM7UUFFRixJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDekIsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksYUFBYSxDQUNoQyxTQUFTLEVBQ1QsSUFBSSxDQUFDLFdBQVcsRUFDaEIsWUFBWSxDQUNmLENBQUM7SUFDTixDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQWdDO1FBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRWYsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssRUFBRSxFQUFFO2dCQUNqQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzthQUM1QztZQUVELE9BQU8saUJBQWlCLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssRUFBRSxDQUFDO1NBQ25FO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFc29sdmVDdXN0b21GaWVsZHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvY3VzdG9tLWZpZWxkcyc7XG5pbXBvcnQgeyBFc29sdmVTZW9EZXRhaWxzLCBFc29sdmVTZW9JbmZvIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3Nlbyc7XG5cbmltcG9ydCB7IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0gfSBmcm9tICcuLi8uLi9jYXRlZ29yeS10cmVlJztcbmltcG9ydCB7IEVzb2x2ZU1hbnVmYWN0dXJlciB9IGZyb20gJy4uLy4uL21hbnVmYWN0dXJlcnMnO1xuaW1wb3J0IHsgRXNvbHZlUmFuZ2UgfSBmcm9tICcuLi8uLi9yYW5nZXMnO1xuaW1wb3J0IHsgRXNvbHZlVGFnIH0gZnJvbSAnLi4vLi4vdGFncyc7XG5pbXBvcnQgeyBFc29sdmVUb3BpYyB9IGZyb20gJy4uLy4uL3RvcGljcyc7XG5cbmltcG9ydCB7IEVzb2x2ZVN0b2NrSW1hZ2VTaXplLCBFc29sdmVTdG9ja1VuaXRPZk1lYXN1cmUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBFc29sdmVTdG9ja0Jhc2VSZWNvcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVzb2x2ZVN0b2NrQmFkZ2UgfSBmcm9tICcuL2Vzb2x2ZS1zdG9jay1iYWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBFc29sdmVTdG9ja1ByaWNlIH0gZnJvbSAnLi9lc29sdmUtc3RvY2stcHJpY2UubW9kZWwnO1xuaW1wb3J0IHsgRXNvbHZlQ29sb3VyIH0gZnJvbSAnLi9lc29sdmUtY29sb3VyLm1vZGVsJztcbmltcG9ydCB7IEVzb2x2ZVN0b2NrTGVhZFRpbWVzIH0gZnJvbSAnLi9lc29sdmUtc3RvY2stbGVhZC10aW1lcy5tb2RlbCc7XG5pbXBvcnQgeyBFc29sdmVTdG9ja1RyYW5zYWN0aW9uSGlzdG9yeSB9IGZyb20gJy4vZXNvbHZlLXN0b2NrLXRyYW5zYWN0aW9uLWhpc3RvcnkubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRXNvbHZlU3RvY2tJdGVtQmFzZTxcbiAgICBUIGV4dGVuZHMgRXNvbHZlQ3VzdG9tRmllbGRzID0gRXNvbHZlQ3VzdG9tRmllbGRzLFxuPiBpbXBsZW1lbnRzIEVzb2x2ZVNlb0RldGFpbHNcbntcbiAgICAvKipcbiAgICAgKiBlU29sdmUgR2VuZXJhdGVkIElEXG4gICAgICovXG4gICAgcHVibGljIGlkID0gMDtcbiAgICAvKipcbiAgICAgKiBDb2RlIGlkZW50aWZ5aW5nIHRoZSBzdG9jayBpdGVtXG4gICAgICovXG4gICAgcHVibGljIGNvZGUgPSAnJztcbiAgICAvKipcbiAgICAgKiBDb2RlIHVzZWQgYnkgc3VwcGxpZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3VwcGxpZXJfY29kZSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFRoZSBiYXJjb2RlIG9mIHRoZSBpdGVtXG4gICAgICovXG4gICAgcHVibGljIGJhcmNvZGUgPSAnJztcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBzdG9jayBpdGVtXG4gICAgICovXG4gICAgcHVibGljIG5hbWUgPSAnJztcbiAgICAvKipcbiAgICAgKiBTZWFyY2ggZW5naW5lIGZyaWVuZGx5IG5hbWVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VmX25hbWUgPSAnJztcbiAgICAvKipcbiAgICAgKiBTZWFyY2ggY29tcG9zaXRlIGZpZWxkIG1hZGUgdXAgb2Yga2V5IHBocmFzZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VhcmNoX2NvbXBvc2l0ZSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFR5cGUgZmllbGQuIEdlbmVyYWwgaGlnaCBncm91cGluZ1xuICAgICAqL1xuICAgIHB1YmxpYyB0eXBlID0gJyc7XG4gICAgLyoqXG4gICAgICogU3ViIHR5cGUgZmllbGQuIEdlbmVyYWwgaGlnaCBncm91cGluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBzdWJfdHlwZSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFNob3J0IGRlc2NyaXB0aW9uIG9mIHN0b2NrIGl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzY3JpcHRpb24gPSAnJztcbiAgICAvKipcbiAgICAgKiBGdWxsIGRlc2NyaXB0aW9uIG9mIHN0b2NrIGl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgZXh0ZW5kZWRfZGVzY3JpcHRpb24gPSAnJztcbiAgICAvKipcbiAgICAgKiBBY3RpdmUgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWN0aXZlID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRmVhdHVyZWQgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZmVhdHVyZWQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IE9ubHkgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGxheV9vbmx5ID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogUXVvdGFibGUgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dfcXVvdGVzID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBPcmRlcmFibGUgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dfb3JkZXJzID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBJdGVtIG11c3QgYmUgY29sbGVjdGVkLCBub3QgZGVsaXZlcnkgcG9zc2libGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbXVzdF9jb2xsZWN0ID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSXRlbSBuZWVkcyB0byBiZSBhc3NlbWJsZWQgYWZ0ZXIgcHVyY2hhc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVxdWlyZXNfYXNzZW1ibHkgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiBkZWxpdmVyeSBjYXRlZ29yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW1cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsaXZlcnlfY2F0ZWdvcnkgPSAncmVndWxhcl9pdGVtJztcbiAgICAvKipcbiAgICAgKiBDdXN0b20gc3RvY2sgbGFiZWwgYWRkZWQgb24gdG8gaXRlbSB0byBkaXNwbGF5IGZvciB1c2VyXG4gICAgICovXG4gICAgcHVibGljIGN1c3RvbV9sYWJlbCA9ICcnO1xuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiBzdG9jayBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYW1vdW50X2luX3N0b2NrID0gMDtcbiAgICAvKipcbiAgICAgKiBUb3RhbCBpdGVtcyBsaW5rZWQgdG8gdGhlIGl0ZW0gYXMgYSByZWNpcGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdG90YWxfcmVjaXBlX2l0ZW1zID0gMDtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgbWVhc3VyZWQgaW4gbWV0ZXJzIChtKVxuICAgICAqL1xuICAgIHB1YmxpYyBoZWlnaHQgPSAwO1xuICAgIC8qKlxuICAgICAqIFdpZHRoIG1lYXN1cmVkIGluIG1ldGVycyAobSlcbiAgICAgKi9cbiAgICBwdWJsaWMgd2lkdGggPSAwO1xuICAgIC8qKlxuICAgICAqIExlbmd0aCAvIGRlcHRoIG1lYXN1cmVkIGluIG1ldGVycyAobSlcbiAgICAgKi9cbiAgICBwdWJsaWMgbGVuZ3RoID0gMDtcbiAgICAvKipcbiAgICAgKiBXZWlnaHQgbWVhc3VyZWQgaW4ga2lsb2dyYW1zIChrZylcbiAgICAgKi9cbiAgICBwdWJsaWMgd2VpZ2h0ID0gMDtcbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2YgaXRlbXMgaW4gYSBwYWNrXG4gICAgICovXG4gICAgcHVibGljIHBhY2tfc2l6ZSA9IDA7XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb24gb2YgdGhlIHBhY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgcGFja19kZXNjcmlwdGlvbiA9ICcnO1xuICAgIC8qKlxuICAgICAqIFVuaXRzIHVzZWQgdG8gbWVhc3VyZSB0aGUgcXVhbnRpdHlcbiAgICAgKi9cbiAgICBwdWJsaWMgdW5pdF9vZl9tZWFzdXJlOiBFc29sdmVTdG9ja1VuaXRPZk1lYXN1cmUgPSAndW5pdCc7XG4gICAgLyoqXG4gICAgICogSUQgb2YgZGVmYXVsdCBjYXRlZ29yeSBsaW5rZWQgdG8gdGhlIHN0b2NrIGl0ZW1cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgY2F0ZWdvcnkuZXNvbHZlX2lkYCBmaWVsZCBpbnN0ZWFkXG4gICAgICovXG4gICAgcHVibGljIGNhdGVnb3J5X2lkID0gJyc7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBsaW5rZWQgY2F0ZWdvcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgY2F0ZWdvcnk/OiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtO1xuICAgIC8qKlxuICAgICAqIElEIG9mIGRlZmF1bHQgc3ViY2F0ZWdvcnkgbGlua2VkIHRvIHRoZSBzdG9jayBpdGVtXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYHN1YmNhdGVnb3J5LmVzb2x2ZV9pZGAgZmllbGQgaW5zdGVhZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJjYXRlZ29yeV9pZCA9IDA7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBsaW5rZWQgc3ViY2F0ZWdvcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3ViY2F0ZWdvcnk/OiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtO1xuICAgIC8qKlxuICAgICAqIElEIG9mIGxpbmtlZCBtYW51ZmFjdHVyZXJcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgbWFudWZhY3R1cmVyLmlkYCBmaWVsZCBpbnN0ZWFkXG4gICAgICovXG4gICAgcHVibGljIG1hbnVmYWN0dXJlcnNfaWQgPSAwO1xuICAgIC8qKlxuICAgICAqIExpbmtlZCBtYW51ZmFjdHVyZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgbWFudWZhY3R1cmVyPzogRXNvbHZlTWFudWZhY3R1cmVyO1xuICAgIC8qKlxuICAgICAqIElEIG9mIGxpbmtlZCByYW5nZVxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGByYW5nZS5pZGAgZmllbGQgaW5zdGVhZFxuICAgICAqL1xuICAgIHB1YmxpYyByYW5nZXNfaWQgPSAwO1xuICAgIC8qKlxuICAgICAqIExpbmtlZCByYW5nZVxuICAgICAqL1xuICAgIHB1YmxpYyByYW5nZT86IEVzb2x2ZVJhbmdlO1xuICAgIC8qKlxuICAgICAqIERlZmF1bHQgcHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJpY2U6IEVzb2x2ZVN0b2NrUHJpY2U7XG4gICAgLyoqXG4gICAgICogU0VPIHBhZ2UgZGV0YWlsc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZW9fZGV0YWlsczogRXNvbHZlU2VvSW5mbztcbiAgICAvKipcbiAgICAgKiBMaW5rZWQgdGFnc1xuICAgICAqL1xuICAgIHB1YmxpYyB0YWdzOiBFc29sdmVUYWdbXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIExpbmtlZCB0b3BpY3NcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9waWNzOiBFc29sdmVUb3BpY1tdID0gW107XG4gICAgLyoqXG4gICAgICogU3RvY2sgYmFkZ2VzXG4gICAgICovXG4gICAgcHVibGljIGJhZGdlczogRXNvbHZlU3RvY2tCYWRnZVtdID0gW107XG4gICAgLyoqXG4gICAgICogU3RvY2sgaXRlbSBjdXN0b20gZmllbGRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjdXN0b21fZmllbGRzPzogVDtcbiAgICAvKipcbiAgICAgKiBDb2xvdXJzXG4gICAgICovXG4gICAgcHVibGljIGNvbG91cnM6IEVzb2x2ZUNvbG91cltdID0gW107XG4gICAgLyoqXG4gICAgICogU3RvY2sgSXRlbSBMZWFkIFRpbWVzIGZvciBzdXBwbHlcbiAgICAgKi9cbiAgICBwdWJsaWMgbGVhZF90aW1lcz86IEVzb2x2ZVN0b2NrTGVhZFRpbWVzO1xuICAgIC8qKlxuICAgICAqIExpbmtlZCBtYW51ZmFjdHVyZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlzdG9yeT86IEVzb2x2ZVN0b2NrVHJhbnNhY3Rpb25IaXN0b3J5O1xuXG4gICAgLyoqXG4gICAgICogSW1hZ2UgZmlsZW5hbWVcbiAgICAgKi9cbiAgICBwcml2YXRlIGltYWdlX25hbWUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEltYWdlIExhc3QgbW9kaWZpZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIGltYWdlX2xhc3RfbW9kaWZpZWQgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFBhdGggdG8gdGlueSBzdG9jayBpbWFnZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGlueV9pbWFnZV9zcmMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VQYXRoKCd0aW55Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aHVtYm5haWwgc3RvY2sgaW1hZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRodW1ibmFpbF9pbWFnZV9zcmMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VQYXRoKCd0aHVtYicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdGggdG8gc21hbGwgc3RvY2sgaW1hZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNtYWxsX2ltYWdlX3NyYygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRJbWFnZVBhdGgoJ3NtYWxsJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF0aCB0byBiaWcgc3RvY2sgaW1hZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGJpZ19pbWFnZV9zcmMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VQYXRoKCdiaWcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIHRvIG9yaWdpbmFsIHN0b2NrIGltYWdlXG4gICAgICovXG4gICAgcHVibGljIGdldCBvcmlnaW5hbF9pbWFnZV9zcmMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VQYXRoKCdvcmlnaW5hbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hbW91bnRfaW5fc3RvY2sgPiAwO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHJlY29yZDogUGFydGlhbDxFc29sdmVTdG9ja0Jhc2VSZWNvcmQ8VD4+ID0ge30pIHtcbiAgICAgICAgbGV0IHNlb190aXRsZSA9ICcnO1xuICAgICAgICBsZXQgc2VvX2tleXdvcmRzID0gJyc7XG4gICAgICAgIGxldCBiYXNlX3ByaWNlID0gMDtcbiAgICAgICAgbGV0IGJhc2VfcHJpY2Vfd2l0aF90YXggPSAwO1xuICAgICAgICBsZXQgc2VsbF9wcmljZSA9IDA7XG4gICAgICAgIGxldCBzZWxsX3ByaWNlX3dpdGhfdGF4ID0gMDtcblxuICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gKyhyZWNvcmQuaWQgPz8gMCk7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSByZWNvcmQuY29kZSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc3VwcGxpZXJfY29kZSA9IHJlY29yZC5zdXBwbGllcl9jb2RlID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5iYXJjb2RlID0gcmVjb3JkLmJhcmNvZGUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSByZWNvcmQubmFtZSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc2VmX25hbWUgPSByZWNvcmQuc2VmX25hbWUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaF9jb21wb3NpdGUgPSByZWNvcmQuc2VhcmNoX2NvbXBvc2l0ZSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHJlY29yZC50eXBlID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5zdWJfdHlwZSA9IHJlY29yZC5zdWJfdHlwZSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSByZWNvcmQuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZGVkX2Rlc2NyaXB0aW9uID0gcmVjb3JkLmV4dGVuZGVkX2Rlc2NyaXB0aW9uID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5pbWFnZV9uYW1lID0gcmVjb3JkLmltYWdlX25hbWUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLmltYWdlX2xhc3RfbW9kaWZpZWQgPSByZWNvcmQuaW1hZ2VfbGFzdF9tb2RpZmllZCA/PyAnJztcblxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeV9pZCA9IHJlY29yZC5jYXRlZ29yeV9pZCA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuc3ViY2F0ZWdvcnlfaWQgPSArKHJlY29yZC5zdWJjYXRlZ29yeV9pZCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMubWFudWZhY3R1cmVyc19pZCA9ICsocmVjb3JkLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCk7XG4gICAgICAgICAgICB0aGlzLnJhbmdlc19pZCA9ICsocmVjb3JkLnJhbmdlc19pZCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlfY2F0ZWdvcnkgPSByZWNvcmQuZGVsaXZlcnlfY2F0ZWdvcnkgPz8gJ3JlZ3VsYXJfaXRlbSc7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbV9sYWJlbCA9IHJlY29yZC5jdXN0b21fbGFiZWwgPz8gJyc7XG5cbiAgICAgICAgICAgIHRoaXMubXVzdF9jb2xsZWN0ID0gISErKHJlY29yZC5tdXN0X2NvbGxlY3QgPz8gZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlc19hc3NlbWJseSA9ICEhKyhyZWNvcmQucmVxdWlyZXNfYXNzZW1ibHkgPz8gZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSAhISsocmVjb3JkLmlzX2FjdGl2ZSA/PyBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVkID0gISErKHJlY29yZC5pc19mZWF0dXJlZCA/PyBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlfb25seSA9ICEhKyhyZWNvcmQuZGlzcGxheV9vbmx5ID8/IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dfcXVvdGVzID0gcmVjb3JkLmFsbG93X3F1b3RlcyA/PyB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hbGxvd19vcmRlcnMgPSByZWNvcmQuYWxsb3dfb3JkZXJzID8/IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuYW1vdW50X2luX3N0b2NrID0gKyhyZWNvcmQub25oYW5kID8/IDApO1xuICAgICAgICAgICAgdGhpcy50b3RhbF9yZWNpcGVfaXRlbXMgPSArKHJlY29yZC50b3RhbF9yZWNpcGVfaXRlbXMgPz8gMCk7XG5cbiAgICAgICAgICAgIHRoaXMucGFja19zaXplID0gKyhyZWNvcmQuaXRlbXNfaW5fcGFjayA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMucGFja19kZXNjcmlwdGlvbiA9IHJlY29yZC5wYWNrX2Rlc2NyaXB0aW9uID8/ICcnO1xuXG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9ICsocmVjb3JkLmhlaWdodCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSArKHJlY29yZC53aWR0aCA/PyAwKTtcbiAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gKyhyZWNvcmQubGVuZ3RoID8/IDApO1xuICAgICAgICAgICAgdGhpcy53ZWlnaHQgPSArKHJlY29yZC53ZWlnaHQgPz8gMCk7XG5cbiAgICAgICAgICAgIGlmIChyZWNvcmQudW5pdF9vZl9tZWFzdXJlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bml0X29mX21lYXN1cmUgPSByZWNvcmQudW5pdF9vZl9tZWFzdXJlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiYXNlX3ByaWNlID0gKyhyZWNvcmQucmVndWxhcl9zZWxscHJpY2UgPz8gMCk7XG4gICAgICAgICAgICBiYXNlX3ByaWNlX3dpdGhfdGF4ID0gKyhyZWNvcmQucmVndWxhcl9zZWxscHJpY2VfaW5jbHVzaXZlID8/IDApO1xuICAgICAgICAgICAgc2VsbF9wcmljZSA9ICsocmVjb3JkLnNlbGxwcmljZSA/PyAwKTtcbiAgICAgICAgICAgIHNlbGxfcHJpY2Vfd2l0aF90YXggPSArKHJlY29yZC5zZWxscHJpY2VfaW5jbHVzaXZlID8/IDApO1xuXG4gICAgICAgICAgICBpZiAocmVjb3JkLnRhZ3MgJiYgcmVjb3JkLnRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdGFnIG9mIHJlY29yZC50YWdzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFncy5wdXNoKG5ldyBFc29sdmVUYWcodGFnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLnRvcGljcyAmJiByZWNvcmQudG9waWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRvcGljIG9mIHJlY29yZC50b3BpY3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BpY3MucHVzaChuZXcgRXNvbHZlVG9waWModG9waWMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWNvcmQuYmFkZ2VzICYmIHJlY29yZC5iYWRnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYmFkZ2Ugb2YgcmVjb3JkLmJhZGdlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhZGdlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVzb2x2ZVN0b2NrQmFkZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgK2JhZGdlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2UuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZS5mb250X2NvbG91cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRnZS5iYWRnZV9jb2xvdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgK2JhZGdlLnNvcnRfcHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC5jYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnBhcmVudF9pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuc2VmX2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuc2hvcnRfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuZGlzcGxheV9vbmx5LFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2F0ZWdvcnkuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRlZ29yeS5zZW9fcGFnZV90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNlb19rZXl3b3JkcyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNhdGVnb3J5LnNlb19kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLnN1YmNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJjYXRlZ29yeSA9IG5ldyBFc29sdmVDYXRlZ29yeVRyZWVJdGVtKFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LmlkLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkucGFyZW50X2lkLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5zZWZfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5zaG9ydF9kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNvcnRfcHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5hY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5kaXNwbGF5X29ubHksXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJjYXRlZ29yeS5pbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YmNhdGVnb3J5LnNlb19wYWdlX3RpdGxlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2VvX2tleXdvcmRzLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3ViY2F0ZWdvcnkuc2VvX2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZWNvcmQubWFudWZhY3R1cmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYW51ZmFjdHVyZXIgPSBuZXcgRXNvbHZlTWFudWZhY3R1cmVyKHJlY29yZC5tYW51ZmFjdHVyZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLnJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yYW5nZSA9IG5ldyBFc29sdmVSYW5nZShyZWNvcmQucmFuZ2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLmNvbG91cnMgJiYgcmVjb3JkLmNvbG91cnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY29sb3VyIG9mIHJlY29yZC5jb2xvdXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3Vycy5wdXNoKG5ldyBFc29sdmVDb2xvdXIoY29sb3VyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLmxlYWRfdGltZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxlYWRfdGltZXMgPSBuZXcgRXNvbHZlU3RvY2tMZWFkVGltZXMocmVjb3JkLmxlYWRfdGltZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVjb3JkLmN1c3RvbV9maWVsZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbV9maWVsZHMgPSByZWNvcmQuY3VzdG9tX2ZpZWxkcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC50b3RhbF9vcmRlcl9xdHkgfHwgcmVjb3JkLnRvdGFsX3F1b3RlX3F0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsX29yZGVyX3F0eSA9ICsocmVjb3JkLnRvdGFsX29yZGVyX3F0eSA/PyAwKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbF9xdW90ZV9xdHkgPSArKHJlY29yZC50b3RhbF9xdW90ZV9xdHkgPz8gMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5ID0gbmV3IEVzb2x2ZVN0b2NrVHJhbnNhY3Rpb25IaXN0b3J5KFxuICAgICAgICAgICAgICAgICAgICB0b3RhbF9vcmRlcl9xdHksXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsX3F1b3RlX3F0eSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZW9fdGl0bGUgPSByZWNvcmQuc2VvX3BhZ2VfdGl0bGUgPz8gJyc7XG4gICAgICAgICAgICBzZW9fa2V5d29yZHMgPSByZWNvcmQuc2VvX2tleXdvcmRzID8/ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmljZSA9IG5ldyBFc29sdmVTdG9ja1ByaWNlKFxuICAgICAgICAgICAgYmFzZV9wcmljZSxcbiAgICAgICAgICAgIGJhc2VfcHJpY2Vfd2l0aF90YXgsXG4gICAgICAgICAgICBzZWxsX3ByaWNlLFxuICAgICAgICAgICAgc2VsbF9wcmljZV93aXRoX3RheCxcbiAgICAgICAgICAgIHJlY29yZC52YXRfcmF0ZSxcbiAgICAgICAgICAgIHJlY29yZC52YXRfaXRlbSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoc2VvX3RpdGxlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIHNlb190aXRsZSA9IHRoaXMubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VvX2RldGFpbHMgPSBuZXcgRXNvbHZlU2VvSW5mbyhcbiAgICAgICAgICAgIHNlb190aXRsZSxcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzZW9fa2V5d29yZHMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEltYWdlUGF0aChpbWFnZV9zaXplOiBFc29sdmVTdG9ja0ltYWdlU2l6ZSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmltYWdlX25hbWUgIT09ICcnKSB7XG4gICAgICAgICAgICBsZXQgcGFyYW0gPSAnJztcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW1hZ2VfbGFzdF9tb2RpZmllZCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBwYXJhbSA9IGA/dD0ke3RoaXMuaW1hZ2VfbGFzdF9tb2RpZmllZH1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYC9pbWFnZXMvc3RvY2svJHtpbWFnZV9zaXplfS8ke3RoaXMuaW1hZ2VfbmFtZX0ke3BhcmFtfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxufVxuIl19
@@ -7,7 +7,7 @@ import { EsolveFilterFactory, EsolveMultipleSelectFilter, EsolveRangeFilter, Eso
7
7
  import { EsolveStockItem, EsolveStockItemList, EsolveMediaStockItem, EsolveRecipeStockItem, EsolveLinkedStockItem, EsolveStockImageCollection, } from './classes';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common/http";
10
- class EsolveStockService {
10
+ export class EsolveStockService {
11
11
  constructor(config, http) {
12
12
  this.config = config;
13
13
  this.http = http;
@@ -403,11 +403,10 @@ class EsolveStockService {
403
403
  getStockHistoryRecords(params) {
404
404
  return this.http.get(`${this.config.api_url}/get-items-transaction-history.php`, { params });
405
405
  }
406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveStockService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
407
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveStockService, providedIn: 'root' }); }
406
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveStockService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
407
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveStockService, providedIn: 'root' }); }
408
408
  }
409
- export { EsolveStockService };
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: EsolveStockService, decorators: [{
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: EsolveStockService, decorators: [{
411
410
  type: Injectable,
412
411
  args: [{
413
412
  providedIn: 'root',
@@ -416,4 +415,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
416
415
  type: Inject,
417
416
  args: [ESOLVE_CONNECT_CONFIG]
418
417
  }] }, { type: i1.HttpClient }]; } });
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svZXNvbHZlLXN0b2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3pELE9BQU8sRUFDSCxtQkFBbUIsRUFHbkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQWEzQixPQUFPLEVBQ0gsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQiwwQkFBMEIsR0FDN0IsTUFBTSxXQUFXLENBQUM7OztBQUVuQixNQUdhLGtCQUFrQjtJQUczQixZQUMyQyxNQUEyQixFQUMxRCxJQUFnQjtRQURlLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBQzFELFNBQUksR0FBSixJQUFJLENBQVk7SUFDekIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsSUFBWTtRQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUMxQixVQUFVLEVBQUU7Z0JBQ1IsSUFBSTthQUNQO1NBQ0osQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENB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QkFBcUIsQ0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHNCQUFzQixDQUMxQixPQUF3QztRQUV4QyxNQUFNLEtBQUssR0FBOEIsRUFBRSxDQUFDO1FBRTVDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxvQkFBb0IsQ0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ25EO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZSxDQUNuQixNQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNoQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxnQkFBZ0IsRUFDdEMsRUFBRSxNQUFNLEVBQUUsQ0FDYixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNLLHNCQUFzQixDQUMxQixNQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNoQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxvQ0FBb0MsRUFDMUQsRUFBRSxNQUFNLEVBQUUsQ0FDYixDQUFDO0lBQ04sQ0FBQzs4R0F4bEJRLGtCQUFrQixrQkFJZixxQkFBcUI7a0hBSnhCLGtCQUFrQixjQUZmLE1BQU07O1NBRVQsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFLUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25uZWN0Q29uZmlnIH0gZnJvbSAnLi4vY29yZS9lc29sdmUtY29ubmVjdC5jb25maWcnO1xuaW1wb3J0IHsgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vY29yZS9lc29sdmUtY29ubmVjdC1jb25maWcuY29uc3RhbnQnO1xuXG5pbXBvcnQgeyBFc29sdmVMaXN0IH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1saXN0Lm1vZGVsJztcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcbmltcG9ydCB7IEVzb2x2ZUN1c3RvbUZpZWxkcyB9IGZyb20gJy4uL3NoYXJlZC9jdXN0b20tZmllbGRzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlRmlsdGVyRmFjdG9yeSxcbiAgICBFc29sdmVGaWx0ZXJMaXN0LFxuICAgIEVzb2x2ZUZpbHRlclJlY29yZExpc3QsXG4gICAgRXNvbHZlTXVsdGlwbGVTZWxlY3RGaWx0ZXIsXG4gICAgRXNvbHZlUmFuZ2VGaWx0ZXIsXG4gICAgRXNvbHZlU2luZ2xlU2VsZWN0RmlsdGVyLFxufSBmcm9tICcuLi9zaGFyZWQvZmlsdGVycyc7XG5cbmltcG9ydCB7IEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkLCBFc29sdmVNZWRpYVN0b2NrSXRlbUxpc3QgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlU3RvY2tSZWNvcmQsXG4gICAgRXNvbHZlU3RvY2tJdGVtT3B0aW9ucyxcbiAgICBFc29sdmVSZWNpcGVJdGVtUmVjb3JkLFxuICAgIEVzb2x2ZUxpbmtlZFN0b2NrUmVjb3JkLFxuICAgIEVzb2x2ZVJlY2lwZVN0b2NrT3B0aW9ucyxcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb25SZWNvcmQsXG4gICAgRXNvbHZlU3RvY2tGaWx0ZXJPcHRpb25zLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVTdG9ja0l0ZW0sXG4gICAgRXNvbHZlU3RvY2tJdGVtTGlzdCxcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbSxcbiAgICBFc29sdmVSZWNpcGVTdG9ja0l0ZW0sXG4gICAgRXNvbHZlTGlua2VkU3RvY2tJdGVtLFxuICAgIEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uLFxufSBmcm9tICcuL2NsYXNzZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVTdG9ja1NlcnZpY2U8XG4gICAgVCBleHRlbmRzIEVzb2x2ZUN1c3RvbUZpZWxkcyA9IEVzb2x2ZUN1c3RvbUZpZWxkcyxcbj4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0b2NrIHJlY29yZCBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgdGhlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSBlU29sdmUgc3RvY2sgY29kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW0oY29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW08VD4+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdG9ja1JlY29yZHMocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvY2tSZWNvcmQgPSByZXNwb25zZS5yZWNvcmRzWzBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0b2NrSXRlbShzdG9ja1JlY29yZCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0b2NrIHJlY29yZCBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgdGhlIFNFRiBuYW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlZl9uYW1lIFNFRiBuYW1lIG9mIHRoZSBzdG9jayBpdGVtXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSXRlbUZyb21TRUYoXG4gICAgICAgIHNlZl9uYW1lOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW08VD4+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIHNlZl9uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrUmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGxpc3Qgb2Ygc3RvY2sgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIGluZm8gcHJvdmlkZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFN0b2NrIGZpbHRlciBvcHRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSXRlbXMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW1MaXN0PFQ+PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnBhZ2UpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCBvcHRpb25zLnBhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucm93cykge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncm93cycsIG9wdGlvbnMucm93cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ID0gb3B0aW9ucy5zb3J0O1xuXG4gICAgICAgICAgICBpZiAoc29ydC5maWVsZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoX3BocmFzZSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VhcmNoX3BocmFzZScsIG9wdGlvbnMuc2VhcmNoX3BocmFzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5kaXNwbGF5X29ubHkpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Rpc3BsYXlfb25seScsIG9wdGlvbnMuZGlzcGxheV9vbmx5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmlzX2FjdGl2ZSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaXNfYWN0aXZlJywgb3B0aW9ucy5pc19hY3RpdmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuY2F0ZWdvcnlfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NhdGVnb3J5X2lkJywgb3B0aW9ucy5jYXRlZ29yeV9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zdWJjYXRlZ29yeV9pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3ViY2F0ZWdvcnlfaWQnLCBvcHRpb25zLnN1YmNhdGVnb3J5X2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ21hbnVmYWN0dXJlcnNfaWQnLCBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucmFuZ2VzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyYW5nZXNfaWQnLCBvcHRpb25zLnJhbmdlc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zcGVjaWFsc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3BlY2lhbHNfaWQnLCBvcHRpb25zLnNwZWNpYWxzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRhZ19pZF9saXN0ICYmIG9wdGlvbnMudGFnX2lkX2xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndGFnX2lkJywgb3B0aW9ucy50YWdfaWRfbGlzdC5qb2luKCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudG9waWNfaWRfbGlzdCAmJiBvcHRpb25zLnRvcGljX2lkX2xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG9waWNfaWQnLCBvcHRpb25zLnRvcGljX2lkX2xpc3Quam9pbignLCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmZpbHRlcnMpIHtcbiAgICAgICAgICAgIGxldCBmaWx0ZXJzID0gb3B0aW9ucy5maWx0ZXJzO1xuXG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzID0gRXNvbHZlRmlsdGVyRmFjdG9yeS5jb3ZlcnRGcm9tT2JqKGZpbHRlcnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJhbXMgPSBFc29sdmVGaWx0ZXJGYWN0b3J5LmNvbnZlcnRUb0h0dHBQYXJhbXMoZmlsdGVycywgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrUmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja0l0ZW1zOiBFc29sdmVTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5mb3JFYWNoKChzdG9ja1JlY29yZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLnB1c2godGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVN0b2NrSXRlbUxpc3QoXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYWdlID8/IDAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBsaXN0IG9mIHN0b2NrIGZyb20gdGhlIGVTb2x2ZSBpbnN0YW5jZSB1c2luZyBpbmZvIHByb3ZpZGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBTdG9jayBmaWx0ZXIgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1zVHJhbnNhY3Rpb25IaXN0b3J5KFxuICAgICAgICBvcHRpb25zOiBFc29sdmVTdG9ja0l0ZW1PcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtTGlzdDxUPj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgb3B0aW9ucy5wYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcblxuICAgICAgICAgICAgaWYgKHNvcnQuZmllbGQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNlYXJjaF9waHJhc2UpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaF9waHJhc2UnLCBvcHRpb25zLnNlYXJjaF9waHJhc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZGlzcGxheV9vbmx5KSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkaXNwbGF5X29ubHknLCBvcHRpb25zLmRpc3BsYXlfb25seSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5pc19hY3RpdmUpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX2FjdGl2ZScsIG9wdGlvbnMuaXNfYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNhdGVnb3J5X2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjYXRlZ29yeV9pZCcsIG9wdGlvbnMuY2F0ZWdvcnlfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N1YmNhdGVnb3J5X2lkJywgb3B0aW9ucy5zdWJjYXRlZ29yeV9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtYW51ZmFjdHVyZXJzX2lkJywgb3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnJhbmdlc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmFuZ2VzX2lkJywgb3B0aW9ucy5yYW5nZXNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc3BlY2lhbHNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NwZWNpYWxzX2lkJywgb3B0aW9ucy5zcGVjaWFsc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy50YWdfaWRfbGlzdCAmJiBvcHRpb25zLnRhZ19pZF9saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RhZ19pZCcsIG9wdGlvbnMudGFnX2lkX2xpc3Quam9pbignLCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRvcGljX2lkX2xpc3QgJiYgb3B0aW9ucy50b3BpY19pZF9saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvcGljX2lkJywgb3B0aW9ucy50b3BpY19pZF9saXN0LmpvaW4oJywnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5maWx0ZXJzKSB7XG4gICAgICAgICAgICBsZXQgZmlsdGVycyA9IG9wdGlvbnMuZmlsdGVycztcblxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVycyA9IEVzb2x2ZUZpbHRlckZhY3RvcnkuY292ZXJ0RnJvbU9iaihmaWx0ZXJzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zID0gRXNvbHZlRmlsdGVyRmFjdG9yeS5jb252ZXJ0VG9IdHRwUGFyYW1zKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdG9ja0hpc3RvcnlSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrSXRlbXM6IEVzb2x2ZVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2goKHN0b2NrUmVjb3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMucHVzaCh0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtTGlzdChcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgK3Jlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhZ2UgPz8gMCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIFN0b2NrIGl0ZW0gY29kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMaW5rZWRJdGVtcyhcbiAgICAgICAgY29kZTogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVMaW5rZWRTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWxpbmtlZC1pdGVtcy5waHBgLFxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGNvZGUgfSB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaW5rZWRJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBvbiBhIHJlY2lwZSBmcm9tIHRoZSBlU29sdmUgQVBJXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UmVjaXBlSXRlbXMoXG4gICAgICAgIGNvZGU6IHN0cmluZyxcbiAgICAgICAgb3B0aW9ucz86IEVzb2x2ZVJlY2lwZVN0b2NrT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdPiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnY29kZScsIGNvZGUpO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyb3dzJywgb3B0aW9ucy5yb3dzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLnNvcnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydC5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVJlY2lwZUl0ZW1SZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1yZWNpcGUtaXRlbXMucGhwYCxcbiAgICAgICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZWNpcGVJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIEZpbHRlciBvcHRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldE1lZGlhTGlua2VkSXRlbXMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtTGlzdDxUPj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIHJvd3M6IG9wdGlvbnMucm93cyA/PyAwLFxuICAgICAgICAgICAgICAgIHBhZ2U6IG9wdGlvbnMucGFnZSA/PyAwLFxuICAgICAgICAgICAgICAgIHJhbmdlc19pZDogb3B0aW9ucy5yYW5nZXNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBtYW51ZmFjdHVyZXJzX2lkOiBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5X29ubHk6IG9wdGlvbnMuZGlzcGxheV9vbmx5ID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzX2FjdGl2ZTogb3B0aW9ucy5pc19hY3RpdmUgPz8gdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLnNvcnQ7XG5cbiAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQuZmllbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc29ydC5vcmRlcikge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ29yZGVyJywgc29ydC5vcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5tZWRpYV9pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdtZWRpYV9pZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1lZGlhX2lkZW50aWZpZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWVkaWFfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ21lZGlhX2lkJywgb3B0aW9ucy5tZWRpYV9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbWVkaWEtbGlua2VkLWl0ZW1zLnBocGAsXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc01lZGlhU3RvY2tJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUxpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucm93cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBmdWxsIGltYWdlIGNvbGxlY3Rpb24gb2YgYSBzdG9jayBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJbWFnZUNvbGxlY3Rpb24oXG4gICAgICAgIGNvZGU6IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb25SZWNvcmQ+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbS1pbWFnZS1jb2xsZWN0aW9uLnBocGAsXG4gICAgICAgICAgICAgICAgeyBwYXJhbXM6IHsgY29kZSB9IH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdG9ja0ZpbHRlcnMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrRmlsdGVyT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUZpbHRlckxpc3Q+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBvcHRpb25zLmNhdGVnb3J5X2lkID8/ICcnLFxuICAgICAgICAgICAgICAgIHN1YmNhdGVnb3J5X2lkOiBvcHRpb25zLnN1YmNhdGVnb3J5X2lkID8/IDAsXG4gICAgICAgICAgICAgICAgcmFuZ2VzX2lkOiBvcHRpb25zLnJhbmdlc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIG1hbnVmYWN0dXJlcnNfaWQ6IG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIHNwZWNpYWxzX2lkOiBvcHRpb25zLnNwZWNpYWxzX2lkID8/IDAsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBvcHRpb25zLmZpZWxkcy5qb2luKCcsJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZpbHRlclJlY29yZExpc3Q+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbS1maWx0ZXJzLnBocGAsXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVzcG9uc2UucmVjb3Jkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVSYW5nZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArcmVjb3JkLm1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5tYXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gbmV3IEVzb2x2ZVNpbmdsZVNlbGVjdEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gbmV3IEVzb2x2ZU11bHRpcGxlU2VsZWN0RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC52YWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZFxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1N0b2NrSXRlbShyZWNvcmQ6IEVzb2x2ZVN0b2NrUmVjb3JkPFQ+KTogRXNvbHZlU3RvY2tJdGVtPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVTdG9ja0l0ZW08VD4ocmVjb3JkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGxpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBMaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3Jkc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc0xpbmtlZEl0ZW1zKFxuICAgICAgICByZWNvcmRzOiBFc29sdmVMaW5rZWRTdG9ja1JlY29yZDxUPltdLFxuICAgICk6IEVzb2x2ZUxpbmtlZFN0b2NrSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZUxpbmtlZFN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZUxpbmtlZFN0b2NrSXRlbTxUPihyZWNvcmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIHJlY2lwZSBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBSZWNpcGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3Jkc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1JlY2lwZUl0ZW1zKFxuICAgICAgICByZWNvcmRzOiBFc29sdmVSZWNpcGVJdGVtUmVjb3JkPFQ+W10sXG4gICAgKTogRXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtczogRXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgbGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHMgYW5kIGNvbnZlcnRzIHRoZW0gdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmRzIExpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzTWVkaWFTdG9ja0l0ZW1zKFxuICAgICAgICByZWNvcmRzOiBFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZDxUPltdLFxuICAgICk6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtczogRXNvbHZlTWVkaWFTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBFc29sdmVNZWRpYVN0b2NrSXRlbTxUPihyZWNvcmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgc3RvY2sgcmVjb3JkcyBmcm9tIEhUVFAgcGFyYW1zLlxuICAgICAqIEBwYXJhbSBwYXJhbXMgSFRUUCBjbGllbnQgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RvY2tSZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbXMucGhwYCxcbiAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHN0b2NrIHRyYW5zYWN0aW9uIGhpc3RvcnkgcmVjb3JkcyBmcm9tIEhUVFAgcGFyYW1zLlxuICAgICAqIEBwYXJhbSBwYXJhbXMgSFRUUCBjbGllbnQgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RvY2tIaXN0b3J5UmVjb3JkcyhcbiAgICAgICAgcGFyYW1zOiBIdHRwUGFyYW1zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tSZWNvcmQ8VD5bXT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tSZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWl0ZW1zLXRyYW5zYWN0aW9uLWhpc3RvcnkucGhwYCxcbiAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svZXNvbHZlLXN0b2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3pELE9BQU8sRUFDSCxtQkFBbUIsRUFHbkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQWEzQixPQUFPLEVBQ0gsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQiwwQkFBMEIsR0FDN0IsTUFBTSxXQUFXLENBQUM7OztBQUtuQixNQUFNLE9BQU8sa0JBQWtCO0lBRzNCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCO1FBRGUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN6QixDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLFlBQVksQ0FBQyxJQUFZO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRTtnQkFDUixJQUFJO2FBQ1A7U0FDSixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNwQyxHQUFHLENB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QUFJLHFCQUFxQixDQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDcEQ7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssc0JBQXNCLENBQzFCLE9BQXdDO1FBRXhDLE1BQU0sS0FBSyxHQUE4QixFQUFFLENBQUM7UUFFNUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDMUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDbkQ7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxlQUFlLENBQ25CLE1BQWtCO1FBRWxCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGdCQUFnQixFQUN0QyxFQUFFLE1BQU0sRUFBRSxDQUNiLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0JBQXNCLENBQzFCLE1BQWtCO1FBRWxCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2hCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLG9DQUFvQyxFQUMxRCxFQUFFLE1BQU0sRUFBRSxDQUNiLENBQUM7SUFDTixDQUFDOzhHQXhsQlEsa0JBQWtCLGtCQUlmLHFCQUFxQjtrSEFKeEIsa0JBQWtCLGNBRmYsTUFBTTs7MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBS1EsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZyB9IGZyb20gJy4uL2NvcmUvZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcbmltcG9ydCB7IEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2NvcmUvZXNvbHZlLWNvbm5lY3QtY29uZmlnLmNvbnN0YW50JztcblxuaW1wb3J0IHsgRXNvbHZlTGlzdCB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtbGlzdC5tb2RlbCc7XG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XG5pbXBvcnQgeyBFc29sdmVDdXN0b21GaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQvY3VzdG9tLWZpZWxkcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZUZpbHRlckZhY3RvcnksXG4gICAgRXNvbHZlRmlsdGVyTGlzdCxcbiAgICBFc29sdmVGaWx0ZXJSZWNvcmRMaXN0LFxuICAgIEVzb2x2ZU11bHRpcGxlU2VsZWN0RmlsdGVyLFxuICAgIEVzb2x2ZVJhbmdlRmlsdGVyLFxuICAgIEVzb2x2ZVNpbmdsZVNlbGVjdEZpbHRlcixcbn0gZnJvbSAnLi4vc2hhcmVkL2ZpbHRlcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZCwgRXNvbHZlTWVkaWFTdG9ja0l0ZW1MaXN0IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZVN0b2NrUmVjb3JkLFxuICAgIEVzb2x2ZVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlUmVjaXBlSXRlbVJlY29yZCxcbiAgICBFc29sdmVMaW5rZWRTdG9ja1JlY29yZCxcbiAgICBFc29sdmVSZWNpcGVTdG9ja09wdGlvbnMsXG4gICAgRXNvbHZlTWVkaWFTdG9ja0l0ZW1PcHRpb25zLFxuICAgIEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uUmVjb3JkLFxuICAgIEVzb2x2ZVN0b2NrRmlsdGVyT3B0aW9ucyxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlU3RvY2tJdGVtLFxuICAgIEVzb2x2ZVN0b2NrSXRlbUxpc3QsXG4gICAgRXNvbHZlTWVkaWFTdG9ja0l0ZW0sXG4gICAgRXNvbHZlUmVjaXBlU3RvY2tJdGVtLFxuICAgIEVzb2x2ZUxpbmtlZFN0b2NrSXRlbSxcbiAgICBFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi9jbGFzc2VzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXNvbHZlU3RvY2tTZXJ2aWNlPFxuICAgIFQgZXh0ZW5kcyBFc29sdmVDdXN0b21GaWVsZHMgPSBFc29sdmVDdXN0b21GaWVsZHMsXG4+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChFU09MVkVfQ09OTkVDVF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBFc29sdmVDb25uZWN0Q29uZmlnLFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBjb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgZVNvbHZlIHN0b2NrIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtPFQ+PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrUmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBTRUYgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWZfbmFtZSBTRUYgbmFtZSBvZiB0aGUgc3RvY2sgaXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1Gcm9tU0VGKFxuICAgICAgICBzZWZfbmFtZTogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtPFQ+PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBzZWZfbmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrUmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja1JlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBsaXN0IG9mIHN0b2NrIGZyb20gdGhlIGVTb2x2ZSBpbnN0YW5jZSB1c2luZyBpbmZvIHByb3ZpZGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBTdG9jayBmaWx0ZXIgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1zKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVTdG9ja0l0ZW1PcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtTGlzdDxUPj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgb3B0aW9ucy5wYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcblxuICAgICAgICAgICAgaWYgKHNvcnQuZmllbGQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNlYXJjaF9waHJhc2UpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaF9waHJhc2UnLCBvcHRpb25zLnNlYXJjaF9waHJhc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZGlzcGxheV9vbmx5KSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkaXNwbGF5X29ubHknLCBvcHRpb25zLmRpc3BsYXlfb25seSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5pc19hY3RpdmUpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX2FjdGl2ZScsIG9wdGlvbnMuaXNfYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNhdGVnb3J5X2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjYXRlZ29yeV9pZCcsIG9wdGlvbnMuY2F0ZWdvcnlfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N1YmNhdGVnb3J5X2lkJywgb3B0aW9ucy5zdWJjYXRlZ29yeV9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtYW51ZmFjdHVyZXJzX2lkJywgb3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnJhbmdlc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmFuZ2VzX2lkJywgb3B0aW9ucy5yYW5nZXNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc3BlY2lhbHNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NwZWNpYWxzX2lkJywgb3B0aW9ucy5zcGVjaWFsc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy50YWdfaWRfbGlzdCAmJiBvcHRpb25zLnRhZ19pZF9saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RhZ19pZCcsIG9wdGlvbnMudGFnX2lkX2xpc3Quam9pbignLCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRvcGljX2lkX2xpc3QgJiYgb3B0aW9ucy50b3BpY19pZF9saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvcGljX2lkJywgb3B0aW9ucy50b3BpY19pZF9saXN0LmpvaW4oJywnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5maWx0ZXJzKSB7XG4gICAgICAgICAgICBsZXQgZmlsdGVycyA9IG9wdGlvbnMuZmlsdGVycztcblxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVycyA9IEVzb2x2ZUZpbHRlckZhY3RvcnkuY292ZXJ0RnJvbU9iaihmaWx0ZXJzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zID0gRXNvbHZlRmlsdGVyRmFjdG9yeS5jb252ZXJ0VG9IdHRwUGFyYW1zKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdG9ja1JlY29yZHMocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvY2tJdGVtczogRXNvbHZlU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMuZm9yRWFjaCgoc3RvY2tSZWNvcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcy5wdXNoKHRoaXMucHJvY2Vzc1N0b2NrSXRlbShzdG9ja1JlY29yZCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVTdG9ja0l0ZW1MaXN0KFxuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLFxuICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFnZSA/PyAwLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgbGlzdCBvZiBzdG9jayBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgaW5mbyBwcm92aWRlZFxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgU3RvY2sgZmlsdGVyIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtc1RyYW5zYWN0aW9uSGlzdG9yeShcbiAgICAgICAgb3B0aW9uczogRXNvbHZlU3RvY2tJdGVtT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSXRlbUxpc3Q8VD4+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGFnZSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5yb3dzKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyb3dzJywgb3B0aW9ucy5yb3dzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLnNvcnQ7XG5cbiAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQuZmllbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc29ydC5vcmRlcikge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ29yZGVyJywgc29ydC5vcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zZWFyY2hfcGhyYXNlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2hfcGhyYXNlJywgb3B0aW9ucy5zZWFyY2hfcGhyYXNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmRpc3BsYXlfb25seSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGlzcGxheV9vbmx5Jywgb3B0aW9ucy5kaXNwbGF5X29ubHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaXNfYWN0aXZlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19hY3RpdmUnLCBvcHRpb25zLmlzX2FjdGl2ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5jYXRlZ29yeV9pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnY2F0ZWdvcnlfaWQnLCBvcHRpb25zLmNhdGVnb3J5X2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnN1YmNhdGVnb3J5X2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdWJjYXRlZ29yeV9pZCcsIG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbWFudWZhY3R1cmVyc19pZCcsIG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5yYW5nZXNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jhbmdlc19pZCcsIG9wdGlvbnMucmFuZ2VzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNwZWNpYWxzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzcGVjaWFsc19pZCcsIG9wdGlvbnMuc3BlY2lhbHNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudGFnX2lkX2xpc3QgJiYgb3B0aW9ucy50YWdfaWRfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0YWdfaWQnLCBvcHRpb25zLnRhZ19pZF9saXN0LmpvaW4oJywnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy50b3BpY19pZF9saXN0ICYmIG9wdGlvbnMudG9waWNfaWRfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3BpY19pZCcsIG9wdGlvbnMudG9waWNfaWRfbGlzdC5qb2luKCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZmlsdGVycykge1xuICAgICAgICAgICAgbGV0IGZpbHRlcnMgPSBvcHRpb25zLmZpbHRlcnM7XG5cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBFc29sdmVGaWx0ZXJGYWN0b3J5LmNvdmVydEZyb21PYmooZmlsdGVycyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IEVzb2x2ZUZpbHRlckZhY3RvcnkuY29udmVydFRvSHR0cFBhcmFtcyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tIaXN0b3J5UmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja0l0ZW1zOiBFc29sdmVTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5mb3JFYWNoKChzdG9ja1JlY29yZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLnB1c2godGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVN0b2NrSXRlbUxpc3QoXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYWdlID8/IDAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIGxpc3Qgb2Ygc3RvY2sgaXRlbXMgbGlua2VkIHRvIGEgc3RvY2sgaXRlbSBmcm9tIHRoZSBlU29sdmUgQVBJXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TGlua2VkSXRlbXMoXG4gICAgICAgIGNvZGU6IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUxpbmtlZFN0b2NrSXRlbTxUPltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTGlua2VkU3RvY2tSZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1saW5rZWQtaXRlbXMucGhwYCxcbiAgICAgICAgICAgICAgICB7IHBhcmFtczogeyBjb2RlIH0gfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlua2VkSXRlbXMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIGxpc3Qgb2Ygc3RvY2sgaXRlbXMgb24gYSByZWNpcGUgZnJvbSB0aGUgZVNvbHZlIEFQSVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFJlY2lwZUl0ZW1zKFxuICAgICAgICBjb2RlOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM/OiBFc29sdmVSZWNpcGVTdG9ja09wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVSZWNpcGVTdG9ja0l0ZW08VD5bXT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2NvZGUnLCBjb2RlKTtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFnZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCBvcHRpb25zLnBhZ2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncm93cycsIG9wdGlvbnMucm93cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzb3J0ID0gb3B0aW9ucy5zb3J0O1xuXG4gICAgICAgICAgICAgICAgaWYgKHNvcnQuZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQuZmllbGQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ29yZGVyJywgc29ydC5vcmRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVSZWNpcGVJdGVtUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtcmVjaXBlLWl0ZW1zLnBocGAsXG4gICAgICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVjaXBlSXRlbXMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIGxpc3Qgb2Ygc3RvY2sgaXRlbXMgbGlua2VkIHRvIGEgc3RvY2sgaXRlbSBmcm9tIHRoZSBlU29sdmUgQVBJXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRNZWRpYUxpbmtlZEl0ZW1zKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVNZWRpYVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVNZWRpYVN0b2NrSXRlbUxpc3Q8VD4+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICByb3dzOiBvcHRpb25zLnJvd3MgPz8gMCxcbiAgICAgICAgICAgICAgICBwYWdlOiBvcHRpb25zLnBhZ2UgPz8gMCxcbiAgICAgICAgICAgICAgICByYW5nZXNfaWQ6IG9wdGlvbnMucmFuZ2VzX2lkID8/IDAsXG4gICAgICAgICAgICAgICAgbWFudWZhY3R1cmVyc19pZDogb3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkID8/IDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheV9vbmx5OiBvcHRpb25zLmRpc3BsYXlfb25seSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IG9wdGlvbnMuaXNfYWN0aXZlID8/IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ID0gb3B0aW9ucy5zb3J0O1xuXG4gICAgICAgICAgICBpZiAoc29ydC5maWVsZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWVkaWFfaWRlbnRpZmllcikge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnbWVkaWFfaWRlbnRpZmllcicsXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5tZWRpYV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLm1lZGlhX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdtZWRpYV9pZCcsIG9wdGlvbnMubWVkaWFfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZDxUPltdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LW1lZGlhLWxpbmtlZC1pdGVtcy5waHBgLFxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnByb2Nlc3NNZWRpYVN0b2NrSXRlbXMocmVzcG9uc2UucmVjb3Jkcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnJvd3MsXG4gICAgICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgZnVsbCBpbWFnZSBjb2xsZWN0aW9uIG9mIGEgc3RvY2sgaXRlbVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSW1hZ2VDb2xsZWN0aW9uKFxuICAgICAgICBjb2RlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uUmVjb3JkPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWl0ZW0taW1hZ2UtY29sbGVjdGlvbi5waHBgLFxuICAgICAgICAgICAgICAgIHsgcGFyYW1zOiB7IGNvZGUgfSB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgRXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RvY2tGaWx0ZXJzKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVTdG9ja0ZpbHRlck9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVGaWx0ZXJMaXN0PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogb3B0aW9ucy5jYXRlZ29yeV9pZCA/PyAnJyxcbiAgICAgICAgICAgICAgICBzdWJjYXRlZ29yeV9pZDogb3B0aW9ucy5zdWJjYXRlZ29yeV9pZCA/PyAwLFxuICAgICAgICAgICAgICAgIHJhbmdlc19pZDogb3B0aW9ucy5yYW5nZXNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBtYW51ZmFjdHVyZXJzX2lkOiBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBzcGVjaWFsc19pZDogb3B0aW9ucy5zcGVjaWFsc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIGZpZWxkczogb3B0aW9ucy5maWVsZHMuam9pbignLCcpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVGaWx0ZXJSZWNvcmRMaXN0Pj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWl0ZW0tZmlsdGVycy5waHBgLFxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlc3BvbnNlLnJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgRXNvbHZlUmFuZ2VGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5taW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtyZWNvcmQubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVTaW5nbGVTZWxlY3RGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVNdWx0aXBsZVNlbGVjdEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZCBhbmQgY29udmVydHMgaXQgdG8gYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NTdG9ja0l0ZW0ocmVjb3JkOiBFc29sdmVTdG9ja1JlY29yZDxUPik6IEVzb2x2ZVN0b2NrSXRlbTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtPFQ+KHJlY29yZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBsaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgTGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NMaW5rZWRJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlTGlua2VkU3RvY2tSZWNvcmQ8VD5bXSxcbiAgICApOiBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD4ocmVjb3JkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSByZWNpcGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjaXBlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NSZWNpcGVJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlUmVjaXBlSXRlbVJlY29yZDxUPltdLFxuICAgICk6IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPihyZWNvcmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGxpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBMaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3Jkc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc01lZGlhU3RvY2tJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlTWVkaWFTdG9ja0l0ZW1SZWNvcmQ8VD5bXSxcbiAgICApOiBFc29sdmVNZWRpYVN0b2NrSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlTWVkaWFTdG9ja0l0ZW08VD4ocmVjb3JkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHN0b2NrIHJlY29yZHMgZnJvbSBIVFRQIHBhcmFtcy5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIEhUVFAgY2xpZW50IHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0b2NrUmVjb3JkcyhcbiAgICAgICAgcGFyYW1zOiBIdHRwUGFyYW1zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tSZWNvcmQ8VD5bXT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tSZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWl0ZW1zLnBocGAsXG4gICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBzdG9jayB0cmFuc2FjdGlvbiBoaXN0b3J5IHJlY29yZHMgZnJvbSBIVFRQIHBhcmFtcy5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIEhUVFAgY2xpZW50IHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0b2NrSGlzdG9yeVJlY29yZHMoXG4gICAgICAgIHBhcmFtczogSHR0cFBhcmFtcyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1pdGVtcy10cmFuc2FjdGlvbi1oaXN0b3J5LnBocGAsXG4gICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==