@esolve/ng-esolve-connect 0.123.0 → 0.125.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.
@@ -79,21 +79,14 @@ export class EsolveLocationsService {
79
79
  *
80
80
  * @returns An `Observable` with an array of stock locations
81
81
  */
82
- getStockLocationsGeo(addresses_id = 0, latitude = 0, longitude = 0) {
83
- return this.http
84
- .get(`${this.config.api_url}/get-locations-geo.php`, {
85
- params: {
86
- addresses_id,
87
- latitude,
88
- longitude,
89
- },
90
- })
91
- .pipe(map((response) => {
92
- if (response.records === undefined) {
93
- throw response;
94
- }
95
- return this.processStockLocations(response.records);
96
- }));
82
+ getStockLocationsGeo(addresses_id = 0, latitude = 0, longitude = 0, dispatches_stock, include_on_store_locator) {
83
+ return this.getLocationsGeoRecords({
84
+ addresses_id,
85
+ latitude,
86
+ longitude,
87
+ dispatches_stock,
88
+ include_on_store_locator,
89
+ });
97
90
  }
98
91
  getLocationFilters(options) {
99
92
  const params = new HttpParams({
@@ -130,6 +123,22 @@ export class EsolveLocationsService {
130
123
  return filters;
131
124
  }));
132
125
  }
126
+ getLocationsGeoRecords(options) {
127
+ let params = new HttpParams();
128
+ if (options) {
129
+ params = this.appendParams(options, params);
130
+ }
131
+ return this.http
132
+ .get(`${this.config.api_url}/get-locations-geo.php`, {
133
+ params,
134
+ })
135
+ .pipe(map((response) => {
136
+ if (response.records === undefined) {
137
+ throw response;
138
+ }
139
+ return this.processStockLocations(response.records);
140
+ }));
141
+ }
133
142
  /**
134
143
  * Retrieves location records from HTTP params.
135
144
  * @param params HTTP client parameters
@@ -158,6 +167,15 @@ export class EsolveLocationsService {
158
167
  processLocation(record) {
159
168
  return new EsolveLocation(record);
160
169
  }
170
+ appendParams(data, params = new HttpParams()) {
171
+ for (const key in data) {
172
+ const value = data[key];
173
+ if (value !== undefined && value !== null) {
174
+ params = params.append(key, value);
175
+ }
176
+ }
177
+ return params;
178
+ }
161
179
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveLocationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
162
180
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EsolveLocationsService, providedIn: 'root' }); }
163
181
  }
@@ -167,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
167
185
  providedIn: 'root',
168
186
  }]
169
187
  }] });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWxvY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2xvY2F0aW9ucy9lc29sdmUtbG9jYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRzlDLE9BQU8sRUFDSCxtQkFBbUIsRUFHbkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQU8zQixPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUsvRCxNQUFNLE9BQU8sc0JBQXNCO0lBSG5DO1FBTXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBc085QztJQXBPRzs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQ3BCLE9BQStCO1FBRS9CLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNm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S0c7SUFDSyxxQkFBcUIsQ0FDekIsT0FBa0M7UUFFbEMsTUFBTSxTQUFTLEdBQXdCLEVBQUUsQ0FBQztRQUUxQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGVBQWUsQ0FDbkIsTUFBK0I7UUFFL0IsT0FBTyxJQUFJLGNBQWMsQ0FBSSxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQXpPUSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZuQixNQUFNOzsyRkFFVCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcbmltcG9ydCB7IEVzb2x2ZUN1c3RvbUZpZWxkcyB9IGZyb20gJy4uL3NoYXJlZC9jdXN0b20tZmllbGRzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlRmlsdGVyRmFjdG9yeSxcbiAgICBFc29sdmVGaWx0ZXJMaXN0LFxuICAgIEVzb2x2ZUZpbHRlclJlY29yZExpc3QsXG4gICAgRXNvbHZlTXVsdGlwbGVTZWxlY3RGaWx0ZXIsXG4gICAgRXNvbHZlUmFuZ2VGaWx0ZXIsXG4gICAgRXNvbHZlU2luZ2xlU2VsZWN0RmlsdGVyLFxufSBmcm9tICcuLi9zaGFyZWQvZmlsdGVycyc7XG5cbmltcG9ydCB7XG4gICAgRXNvbHZlTG9jYXRpb25GaWx0ZXJPcHRpb25zLFxuICAgIEVzb2x2ZUxvY2F0aW9uT3B0aW9ucyxcbiAgICBFc29sdmVMb2NhdGlvblJlY29yZCxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVzb2x2ZUxvY2F0aW9uLCBFc29sdmVMb2NhdGlvbkxpc3QgfSBmcm9tICcuL2NsYXNzZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVMb2NhdGlvbnNTZXJ2aWNlPFxuICAgIFQgZXh0ZW5kcyBFc29sdmVDdXN0b21GaWVsZHMgPSBFc29sdmVDdXN0b21GaWVsZHMsXG4+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChFc29sdmVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHN0b2NrIGxvY2F0aW9uc1xuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2Ygc3RvY2sgbG9jYXRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrTG9jYXRpb25zKFxuICAgICAgICBvcHRpb25zPzogRXNvbHZlTG9jYXRpb25PcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlTG9jYXRpb25MaXN0PFQ+PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyb3dzJywgb3B0aW9ucy5yb3dzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLnNvcnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydC5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNlYXJjaF9waHJhc2UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2hfcGhyYXNlJywgb3B0aW9ucy5zZWFyY2hfcGhyYXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaXNfYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaXNfYWN0aXZlJywgb3B0aW9ucy5pc19hY3RpdmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kaXNwYXRjaGVzX3N0b2NrKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChcbiAgICAgICAgICAgICAgICAgICAgJ2Rpc3BhdGNoZXNfc3RvY2snLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRpc3BhdGNoZXNfc3RvY2ssXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMucHJvdmluY2UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwcm92aW5jZScsIG9wdGlvbnMucHJvdmluY2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnY291bnRyeScsIG9wdGlvbnMuY291bnRyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVycyA9IG9wdGlvbnMuZmlsdGVycztcblxuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzID0gRXNvbHZlRmlsdGVyRmFjdG9yeS5jb3ZlcnRGcm9tT2JqKGZpbHRlcnMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHBhcmFtcyA9IEVzb2x2ZUZpbHRlckZhY3RvcnkuY29udmVydFRvSHR0cFBhcmFtcyhcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhdGlvblJlY29yZHMocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25zOiBFc29sdmVMb2NhdGlvbjxUPltdID0gW107XG5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2goKGxvY2F0aW9uUmVjb3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucy5wdXNoKHRoaXMucHJvY2Vzc0xvY2F0aW9uKGxvY2F0aW9uUmVjb3JkKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUxvY2F0aW9uTGlzdChcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLFxuICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/LnBhZ2UgPz8gMCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBzdG9jayBsb2NhdGlvbnMgdXNpbmcgdGhlIGFkZHJlc3NfaWQgYXMgcGFyYW1ldGVyIG9yIHRoZSBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlLlxuICAgICAqIFNldCB0aGUgYWRkcmVzc2VzX2lkIHRvIDAgYW5kIHRoZSBncHMgY29vcmRpbmF0ZXMgaW4gb3JkZXIgdG8gcmV0cmlldmUgdGhlIGxvY2F0aW9ucyBsaXN0IHdoZW4gdGhlIGFkZHJlc3MgaXNuJ3RcbiAgICAgKiB5ZXQgc2F2ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzc2VzX2lkIGlmIHN1cHBsaWVkLCB0aGUgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSBvbiB0aGUgYWRkcmVzcyB3aWxsIGJlIHVzZWQuXG4gICAgICogQHBhcmFtIGxhdGl0dWRlIGlmIHN1cHBsaWVkIGFuZCBhZGRyZXNzX2lkID4gMCwgdGhlIHZhbHVlIGlzIGlnbm9yZWQuXG4gICAgICogQHBhcmFtIGxvbmdpdHVkZSBpZiBzdXBwbGllZCBhbmQgYWRkcmVzc19pZCA+IDAsIHRoZSB2YWx1ZSBpcyBpZ25vcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2Ygc3RvY2sgbG9jYXRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrTG9jYXRpb25zR2VvKFxuICAgICAgICBhZGRyZXNzZXNfaWQgPSAwLFxuICAgICAgICBsYXRpdHVkZSA9IDAsXG4gICAgICAgIGxvbmdpdHVkZSA9IDAsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVMb2NhdGlvbjxUPltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTG9jYXRpb25SZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1sb2NhdGlvbnMtZ2VvLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdGl0dWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0b2NrTG9jYXRpb25zKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYXRpb25GaWx0ZXJzKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVMb2NhdGlvbkZpbHRlck9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVGaWx0ZXJMaXN0PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBvcHRpb25zLmNvdW50cnkgPz8gJycsXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6IG9wdGlvbnMucHJvdmluY2UgPz8gJycsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBvcHRpb25zLmZpZWxkcy5qb2luKCcsJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZpbHRlclJlY29yZExpc3Q+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbG9jYXRpb24tZmlsdGVycy5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlc3BvbnNlLnJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgRXNvbHZlUmFuZ2VGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5taW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtyZWNvcmQubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVTaW5nbGVTZWxlY3RGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVNdWx0aXBsZVNlbGVjdEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgbG9jYXRpb24gcmVjb3JkcyBmcm9tIEhUVFAgcGFyYW1zLlxuICAgICAqIEBwYXJhbSBwYXJhbXMgSFRUUCBjbGllbnQgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TG9jYXRpb25SZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVMb2NhdGlvblJlY29yZDxUPltdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVMb2NhdGlvblJlY29yZDxUPltdPj4oXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbG9jYXRpb25zLnBocGAsXG4gICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHN0b2NrIGxvY2F0aW9uIHJlY29yZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm9jZXNzZWQgc3RvY2sgbG9jYXRpb24gcmVjb3Jkc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1N0b2NrTG9jYXRpb25zKFxuICAgICAgICByZWNvcmRzOiBFc29sdmVMb2NhdGlvblJlY29yZDxUPltdLFxuICAgICk6IEVzb2x2ZUxvY2F0aW9uPFQ+W10ge1xuICAgICAgICBjb25zdCBsb2NhdGlvbnM6IEVzb2x2ZUxvY2F0aW9uPFQ+W10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh0aGlzLnByb2Nlc3NMb2NhdGlvbihyZWNvcmQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmQgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzTG9jYXRpb24oXG4gICAgICAgIHJlY29yZDogRXNvbHZlTG9jYXRpb25SZWNvcmQ8VD4sXG4gICAgKTogRXNvbHZlTG9jYXRpb248VD4ge1xuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUxvY2F0aW9uPFQ+KHJlY29yZCk7XG4gICAgfVxufVxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWxvY2F0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2xvY2F0aW9ucy9lc29sdmUtbG9jYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRzlDLE9BQU8sRUFDSCxtQkFBbUIsRUFHbkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQVEzQixPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUsvRCxNQUFNLE9BQU8sc0JBQXNCO0lBSG5DO1FBTXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBbVE5QztJQWpRRzs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQ3BCLE9BQStCO1FBRS9CLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNm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TTs7MkZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XG5pbXBvcnQgeyBFc29sdmVDdXN0b21GaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQvY3VzdG9tLWZpZWxkcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZUZpbHRlckZhY3RvcnksXG4gICAgRXNvbHZlRmlsdGVyTGlzdCxcbiAgICBFc29sdmVGaWx0ZXJSZWNvcmRMaXN0LFxuICAgIEVzb2x2ZU11bHRpcGxlU2VsZWN0RmlsdGVyLFxuICAgIEVzb2x2ZVJhbmdlRmlsdGVyLFxuICAgIEVzb2x2ZVNpbmdsZVNlbGVjdEZpbHRlcixcbn0gZnJvbSAnLi4vc2hhcmVkL2ZpbHRlcnMnO1xuXG5pbXBvcnQge1xuICAgIEVzb2x2ZUxvY2F0aW9uRmlsdGVyT3B0aW9ucyxcbiAgICBFc29sdmVMb2NhdGlvbkdlb09wdGlvbnMsXG4gICAgRXNvbHZlTG9jYXRpb25PcHRpb25zLFxuICAgIEVzb2x2ZUxvY2F0aW9uUmVjb3JkLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRXNvbHZlTG9jYXRpb24sIEVzb2x2ZUxvY2F0aW9uTGlzdCB9IGZyb20gJy4vY2xhc3Nlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZUxvY2F0aW9uc1NlcnZpY2U8XG4gICAgVCBleHRlbmRzIEVzb2x2ZUN1c3RvbUZpZWxkcyA9IEVzb2x2ZUN1c3RvbUZpZWxkcyxcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEVzb2x2ZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhIGxpc3Qgb2Ygc3RvY2sgbG9jYXRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBzdG9jayBsb2NhdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tMb2NhdGlvbnMoXG4gICAgICAgIG9wdGlvbnM/OiBFc29sdmVMb2NhdGlvbk9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVMb2NhdGlvbkxpc3Q8VD4+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnBhZ2UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgb3B0aW9ucy5wYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMucm93cykge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcblxuICAgICAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydC5vcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoX3BocmFzZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaF9waHJhc2UnLCBvcHRpb25zLnNlYXJjaF9waHJhc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pc19hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19hY3RpdmUnLCBvcHRpb25zLmlzX2FjdGl2ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc3BhdGNoZXNfc3RvY2spIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFxuICAgICAgICAgICAgICAgICAgICAnZGlzcGF0Y2hlc19zdG9jaycsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGlzcGF0Y2hlc19zdG9jayxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wcm92aW5jZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Byb3ZpbmNlJywgb3B0aW9ucy5wcm92aW5jZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjb3VudHJ5Jywgb3B0aW9ucy5jb3VudHJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJzID0gb3B0aW9ucy5maWx0ZXJzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBFc29sdmVGaWx0ZXJGYWN0b3J5LmNvdmVydEZyb21PYmooZmlsdGVycyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcGFyYW1zID0gRXNvbHZlRmlsdGVyRmFjdG9yeS5jb252ZXJ0VG9IdHRwUGFyYW1zKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldExvY2F0aW9uUmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbnM6IEVzb2x2ZUxvY2F0aW9uPFQ+W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMuZm9yRWFjaCgobG9jYXRpb25SZWNvcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLnB1c2godGhpcy5wcm9jZXNzTG9jYXRpb24obG9jYXRpb25SZWNvcmQpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlTG9jYXRpb25MaXN0KFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz8ucGFnZSA/PyAwLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHN0b2NrIGxvY2F0aW9ucyB1c2luZyB0aGUgYWRkcmVzc19pZCBhcyBwYXJhbWV0ZXIgb3IgdGhlIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUuXG4gICAgICogU2V0IHRoZSBhZGRyZXNzZXNfaWQgdG8gMCBhbmQgdGhlIGdwcyBjb29yZGluYXRlcyBpbiBvcmRlciB0byByZXRyaWV2ZSB0aGUgbG9jYXRpb25zIGxpc3Qgd2hlbiB0aGUgYWRkcmVzcyBpc24ndFxuICAgICAqIHlldCBzYXZlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzZXNfaWQgaWYgc3VwcGxpZWQsIHRoZSBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIG9uIHRoZSBhZGRyZXNzIHdpbGwgYmUgdXNlZC5cbiAgICAgKiBAcGFyYW0gbGF0aXR1ZGUgaWYgc3VwcGxpZWQgYW5kIGFkZHJlc3NfaWQgPiAwLCB0aGUgdmFsdWUgaXMgaWdub3JlZC5cbiAgICAgKiBAcGFyYW0gbG9uZ2l0dWRlIGlmIHN1cHBsaWVkIGFuZCBhZGRyZXNzX2lkID4gMCwgdGhlIHZhbHVlIGlzIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBzdG9jayBsb2NhdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tMb2NhdGlvbnNHZW8oXG4gICAgICAgIGFkZHJlc3Nlc19pZCA9IDAsXG4gICAgICAgIGxhdGl0dWRlID0gMCxcbiAgICAgICAgbG9uZ2l0dWRlID0gMCxcbiAgICAgICAgZGlzcGF0Y2hlc19zdG9jaz86IGJvb2xlYW4sXG4gICAgICAgIGluY2x1ZGVfb25fc3RvcmVfbG9jYXRvcj86IGJvb2xlYW4sXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVMb2NhdGlvbjxUPltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExvY2F0aW9uc0dlb1JlY29yZHMoe1xuICAgICAgICAgICAgYWRkcmVzc2VzX2lkLFxuICAgICAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgICAgICBsb25naXR1ZGUsXG4gICAgICAgICAgICBkaXNwYXRjaGVzX3N0b2NrLFxuICAgICAgICAgICAgaW5jbHVkZV9vbl9zdG9yZV9sb2NhdG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYXRpb25GaWx0ZXJzKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVMb2NhdGlvbkZpbHRlck9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVGaWx0ZXJMaXN0PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBvcHRpb25zLmNvdW50cnkgPz8gJycsXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6IG9wdGlvbnMucHJvdmluY2UgPz8gJycsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBvcHRpb25zLmZpZWxkcy5qb2luKCcsJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZpbHRlclJlY29yZExpc3Q+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbG9jYXRpb24tZmlsdGVycy5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlc3BvbnNlLnJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgRXNvbHZlUmFuZ2VGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5taW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtyZWNvcmQubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVTaW5nbGVTZWxlY3RGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVNdWx0aXBsZVNlbGVjdEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2F0aW9uc0dlb1JlY29yZHMob3B0aW9ucz86IEVzb2x2ZUxvY2F0aW9uR2VvT3B0aW9ucykge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgcGFyYW1zID0gdGhpcy5hcHBlbmRQYXJhbXMob3B0aW9ucywgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTG9jYXRpb25SZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1sb2NhdGlvbnMtZ2VvLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RvY2tMb2NhdGlvbnMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBsb2NhdGlvbiByZWNvcmRzIGZyb20gSFRUUCBwYXJhbXMuXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRMb2NhdGlvblJlY29yZHMoXG4gICAgICAgIHBhcmFtczogSHR0cFBhcmFtcyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUxvY2F0aW9uUmVjb3JkPFQ+W10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUxvY2F0aW9uUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1sb2NhdGlvbnMucGhwYCxcbiAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgc3RvY2sgbG9jYXRpb24gcmVjb3Jkcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmRzIFJlY29yZHMgdG8gcHJvY2Vzc1xuICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHByb2Nlc3NlZCBzdG9jayBsb2NhdGlvbiByZWNvcmRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3RvY2tMb2NhdGlvbnMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZUxvY2F0aW9uUmVjb3JkPFQ+W10sXG4gICAgKTogRXNvbHZlTG9jYXRpb248VD5bXSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uczogRXNvbHZlTG9jYXRpb248VD5bXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgIGxvY2F0aW9ucy5wdXNoKHRoaXMucHJvY2Vzc0xvY2F0aW9uKHJlY29yZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZCBhbmQgY29udmVydHMgaXQgdG8gYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NMb2NhdGlvbihcbiAgICAgICAgcmVjb3JkOiBFc29sdmVMb2NhdGlvblJlY29yZDxUPixcbiAgICApOiBFc29sdmVMb2NhdGlvbjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlTG9jYXRpb248VD4ocmVjb3JkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZFBhcmFtcyhcbiAgICAgICAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICAgICAgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKSxcbiAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWxvY2F0aW9uLWdlby1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9sb2NhdGlvbnMvaW50ZXJmYWNlcy9lc29sdmUtbG9jYXRpb24tZ2VvLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEVzb2x2ZUxvY2F0aW9uR2VvT3B0aW9ucyB7XG4gICAgYWRkcmVzc2VzX2lkPzogbnVtYmVyO1xuICAgIGxhdGl0dWRlPzogbnVtYmVyO1xuICAgIGxvbmdpdHVkZT86IG51bWJlcjtcbiAgICBkaXNwYXRjaGVzX3N0b2NrPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlX29uX3N0b3JlX2xvY2F0b3I/OiBib29sZWFuO1xufVxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './esolve-location-record.interface';
2
2
  export * from './esolve-location-options.interface';
3
3
  export * from './esolve-location-filter-options.interface';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbG9jYXRpb25zL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNENBQTRDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1sb2NhdGlvbi1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWxvY2F0aW9uLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWxvY2F0aW9uLWZpbHRlci1vcHRpb25zLmludGVyZmFjZSc7XG4iXX0=
4
+ export * from './esolve-location-geo-options.interface';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvbG9jYXRpb25zL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWxvY2F0aW9uLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbG9jYXRpb24tb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbG9jYXRpb24tZmlsdGVyLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWxvY2F0aW9uLWdlby1vcHRpb25zLmludGVyZmFjZSc7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ export class EsolveStockItemLocationLevel {
2
+ constructor(record) {
3
+ this.id = 0;
4
+ this.description = '';
5
+ this.code = '';
6
+ this.level = 0;
7
+ if (record) {
8
+ this.id = record.location_id ?? 0;
9
+ this.description = record.description ?? '';
10
+ this.code = record.code ?? '';
11
+ this.level = record.level ?? 0;
12
+ }
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0tbG9jYXRpb24tbGV2ZWwubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svY2xhc3Nlcy9lc29sdmUtc3RvY2staXRlbS1sb2NhdGlvbi1sZXZlbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sNEJBQTRCO0lBTXJDLFlBQVksTUFBb0Q7UUFMekQsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUNmLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUdyQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNvbHZlU3RvY2tJdGVtTG9jYXRpb25MZXZlbFJlY29yZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBFc29sdmVTdG9ja0l0ZW1Mb2NhdGlvbkxldmVsIHtcbiAgICBwdWJsaWMgaWQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgY29kZTogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGxldmVsOiBudW1iZXIgPSAwO1xuXG4gICAgY29uc3RydWN0b3IocmVjb3JkPzogUGFydGlhbDxFc29sdmVTdG9ja0l0ZW1Mb2NhdGlvbkxldmVsUmVjb3JkPikge1xuICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gcmVjb3JkLmxvY2F0aW9uX2lkID8/IDA7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gcmVjb3JkLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5jb2RlID0gcmVjb3JkLmNvZGUgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLmxldmVsID0gcmVjb3JkLmxldmVsID8/IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -19,4 +19,5 @@ export * from './esolve-stock-price.model';
19
19
  export * from './esolve-stock-reviews-report.model';
20
20
  export * from './esolve-stock-transaction-sales.model';
21
21
  export * from './esolve-suggested-stock-item.model';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svY2xhc3Nlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ2xhc3Nlc1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtYWRkaXRpb25hbC1zdG9jay1pbWFnZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1jb2xvdXIubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtZGVwZW5kYW50LWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbGlua2VkLXN0b2NrLWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbWVkaWEtc3RvY2staXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1yZWNpcGUtc3RvY2staXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zZXQtbm90aWZ5LXJlc3VsdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1iYWRnZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1ncm91cC1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWdyb3VwLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWltYWdlLWNvbGxlY3Rpb24ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staW1hZ2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1iYXNlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWl0ZW0tbGlzdC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWxlYWQtdGltZXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stcHJpY2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stcmV2aWV3cy1yZXBvcnQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stdHJhbnNhY3Rpb24tc2FsZXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3VnZ2VzdGVkLXN0b2NrLWl0ZW0ubW9kZWwnO1xuIl19
22
+ export * from './esolve-stock-item-location-level.model';
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svY2xhc3Nlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsMENBQTBDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDbGFzc2VzXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1hZGRpdGlvbmFsLXN0b2NrLWltYWdlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWNvbG91ci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1kZXBlbmRhbnQtaXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1saW5rZWQtc3RvY2staXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1tZWRpYS1zdG9jay1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXJlY2lwZS1zdG9jay1pdGVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXNldC1ub3RpZnktcmVzdWx0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWJhZGdlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWdyb3VwLWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stZ3JvdXAubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staW1hZ2UtY29sbGVjdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pbWFnZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLWJhc2UubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1saXN0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWl0ZW0ubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stbGVhZC10aW1lcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1wcmljZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1yZXZpZXdzLXJlcG9ydC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay10cmFuc2FjdGlvbi1zYWxlcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdWdnZXN0ZWQtc3RvY2staXRlbS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLWxvY2F0aW9uLWxldmVsLm1vZGVsJ1xuIl19
@@ -6,7 +6,7 @@ import { EsolveResponseHandlerService, } from '../shared/response';
6
6
  import { EsolveErrorHandlerService } from '../shared/errors';
7
7
  import { EsolveList } from '../shared/esolve-list.model';
8
8
  import { EsolveFilterFactory, EsolveMultipleSelectFilter, EsolveRangeFilter, EsolveSingleSelectFilter, } from '../shared/filters';
9
- import { EsolveLinkedStockItem, EsolveMediaStockItem, EsolveRecipeStockItem, EsolveSetNotifyResult, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemList, EsolveSuggestedStockItem, } from './classes';
9
+ import { EsolveLinkedStockItem, EsolveMediaStockItem, EsolveRecipeStockItem, EsolveSetNotifyResult, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveSuggestedStockItem, } from './classes';
10
10
  import * as i0 from "@angular/core";
11
11
  export class EsolveStockService {
12
12
  constructor() {
@@ -35,6 +35,26 @@ export class EsolveStockService {
35
35
  return this.processStockItem(stockRecord);
36
36
  }));
37
37
  }
38
+ /**
39
+ * Retrieves the stock record from the eSolve instance using the code.
40
+ *
41
+ * @param code eSolve stock code
42
+ */
43
+ getStockItemLevels(code) {
44
+ const params = new HttpParams({
45
+ fromObject: {
46
+ code,
47
+ },
48
+ });
49
+ return this.getStockLocationLevelsRecords(params).pipe(map((response) => {
50
+ if (response.records === undefined ||
51
+ response.records.length <= 0) {
52
+ throw response;
53
+ }
54
+ const stockLocationLevelRecord = response.records[0];
55
+ return this.processStockLocationLevel(stockLocationLevelRecord);
56
+ }));
57
+ }
38
58
  /**
39
59
  * Retrieves the stock record from the eSolve instance using the SEF name.
40
60
  *
@@ -340,6 +360,14 @@ export class EsolveStockService {
340
360
  }
341
361
  return params;
342
362
  }
363
+ /**
364
+ * Processes the eSolve stock item record and converts it to an object.
365
+ *
366
+ * @param record eSolve stock item record
367
+ */
368
+ processStockLocationLevel(record) {
369
+ return new EsolveStockItemLocationLevel(record);
370
+ }
343
371
  /**
344
372
  * Processes the eSolve stock item record and converts it to an object.
345
373
  *
@@ -404,6 +432,13 @@ export class EsolveStockService {
404
432
  }
405
433
  return items;
406
434
  }
435
+ /**
436
+ * Retrieves stock records from HTTP params.
437
+ * @param params HTTP client parameters
438
+ */
439
+ getStockLocationLevelsRecords(params) {
440
+ return this.http.get(`${this.config.api_url}/get-location-level.php`, { params });
441
+ }
407
442
  /**
408
443
  * Retrieves stock records from HTTP params.
409
444
  * @param params HTTP client parameters
@@ -467,4 +502,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
467
502
  providedIn: 'root',
468
503
  }]
469
504
  }] });
470
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svZXNvbHZlLXN0b2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFFVixVQUFVLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxPQUFPLEVBRUgsNEJBQTRCLEdBRS9CLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFDSCxtQkFBbUIsRUFHbkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLHdCQUF3QixHQUMzQixNQUFNLFdBQVcsQ0FBQzs7QUF3Qm5CLE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFNcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsaUJBQVksR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNqRCxvQkFBZSxH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QUN4RCxFQUFFLE1BQU0sRUFBRSxDQUNiLENBQUM7SUFDTixDQUFDO0lBRU0sU0FBUyxDQUNaLElBQVksRUFDWixpQkFBaUIsR0FBRyxTQUFTO1FBRTdCLE1BQU0sSUFBSSxHQUFHO1lBQ1QsSUFBSTtZQUNKLGlCQUFpQjtTQUNwQixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLElBQUksQ0FDRCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxpQkFBaUIsRUFDdkMsSUFBSSxFQUNKO1lBQ0ksT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFDVixrREFBa0Q7YUFDekQ7WUFDRCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsTUFBTTtTQUNsQixDQUNKO2FBQ0EsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQzNDLGFBQWEsRUFDYixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FDcEQsQ0FDSixFQUNELFVBQVUsQ0FBQyxDQUFDLFFBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQ3hDLFlBQVksRUFDWixRQUFRLENBQ1gsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDOzhHQXJzQlEsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGZixNQUFNOzsyRkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBIdHRwQ2xpZW50LFxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxuICAgIEh0dHBQYXJhbXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcbiAgICBFc29sdmVSZXNwb25zZUhhbmRsZXJTZXJ2aWNlLFxuICAgIEVzb2x2ZVNldFJlc3BvbnNlLFxufSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xuXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9ycyc7XG5cbmltcG9ydCB7IEVzb2x2ZUN1c3RvbUZpZWxkcyB9IGZyb20gJy4uL3NoYXJlZC9jdXN0b20tZmllbGRzJztcbmltcG9ydCB7IEVzb2x2ZUxpc3QgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVGaWx0ZXJGYWN0b3J5LFxuICAgIEVzb2x2ZUZpbHRlckxpc3QsXG4gICAgRXNvbHZlRmlsdGVyUmVjb3JkTGlzdCxcbiAgICBFc29sdmVNdWx0aXBsZVNlbGVjdEZpbHRlcixcbiAgICBFc29sdmVSYW5nZUZpbHRlcixcbiAgICBFc29sdmVTaW5nbGVTZWxlY3RGaWx0ZXIsXG59IGZyb20gJy4uL3NoYXJlZC9maWx0ZXJzJztcblxuaW1wb3J0IHtcbiAgICBFc29sdmVMaW5rZWRTdG9ja0l0ZW0sXG4gICAgRXNvbHZlTWVkaWFTdG9ja0l0ZW0sXG4gICAgRXNvbHZlUmVjaXBlU3RvY2tJdGVtLFxuICAgIEVzb2x2ZVNldE5vdGlmeVJlc3VsdCxcbiAgICBFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbixcbiAgICBFc29sdmVTdG9ja0l0ZW0sXG4gICAgRXNvbHZlU3RvY2tJdGVtTGlzdCxcbiAgICBFc29sdmVTdWdnZXN0ZWRTdG9ja0l0ZW0sXG59IGZyb20gJy4vY2xhc3Nlcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZUxpbmtlZFN0b2NrUmVjb3JkLFxuICAgIEVzb2x2ZU1lZGlhU3RvY2tJdGVtT3B0aW9ucyxcbiAgICBFc29sdmVSZWNpcGVJdGVtUmVjb3JkLFxuICAgIEVzb2x2ZVJlY2lwZVN0b2NrT3B0aW9ucyxcbiAgICBFc29sdmVTdG9ja0Jhc2VSZWNvcmQsXG4gICAgRXNvbHZlU3RvY2tGaWx0ZXJPcHRpb25zLFxuICAgIEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uUmVjb3JkLFxuICAgIEVzb2x2ZVN0b2NrSXRlbUJhc2VPcHRpb25zLFxuICAgIEVzb2x2ZVN0b2NrSXRlbUhpc3RvcnlPcHRpb25zLFxuICAgIEVzb2x2ZVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlU3RvY2tSZWNvcmQsXG4gICAgRXNvbHZlVHJhbnNhY3Rpb25TYWxlc1N0b2NrSXRlbU9wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZU1lZGlhU3RvY2tJdGVtTGlzdCxcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZCxcbiAgICBFc29sdmVTdG9ja1NvcnRGaWVsZCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZVN0b2NrU2VydmljZTxcbiAgICBUIGV4dGVuZHMgRXNvbHZlQ3VzdG9tRmllbGRzID0gRXNvbHZlQ3VzdG9tRmllbGRzLFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2VIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBjb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgZVNvbHZlIHN0b2NrIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtPFQ+PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrUmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBTRUYgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWZfbmFtZSBTRUYgbmFtZSBvZiB0aGUgc3RvY2sgaXRlbVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1Gcm9tU0VGKFxuICAgICAgICBzZWZfbmFtZTogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtPFQ+PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBzZWZfbmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrUmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja1JlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBsaXN0IG9mIHN0b2NrIGZyb20gdGhlIGVTb2x2ZSBpbnN0YW5jZSB1c2luZyBpbmZvIHByb3ZpZGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBTdG9jayBmaWx0ZXIgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9ja0l0ZW1zKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVTdG9ja0l0ZW1PcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtTGlzdDxUPj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wYXJzZUJhc2VTdG9ja0l0ZW1PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmRpc3BsYXlfb25seSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGlzcGxheV9vbmx5Jywgb3B0aW9ucy5kaXNwbGF5X29ubHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaXNfYWN0aXZlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpc19hY3RpdmUnLCBvcHRpb25zLmlzX2FjdGl2ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5jYXRlZ29yeV9pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnY2F0ZWdvcnlfaWQnLCBvcHRpb25zLmNhdGVnb3J5X2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnN1YmNhdGVnb3J5X2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdWJjYXRlZ29yeV9pZCcsIG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbWFudWZhY3R1cmVyc19pZCcsIG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5yYW5nZXNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jhbmdlc19pZCcsIG9wdGlvbnMucmFuZ2VzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNwZWNpYWxzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzcGVjaWFsc19pZCcsIG9wdGlvbnMuc3BlY2lhbHNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudGFnX2lkX2xpc3QgJiYgb3B0aW9ucy50YWdfaWRfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0YWdfaWQnLCBvcHRpb25zLnRhZ19pZF9saXN0LmpvaW4oJywnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy50b3BpY19pZF9saXN0ICYmIG9wdGlvbnMudG9waWNfaWRfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3BpY19pZCcsIG9wdGlvbnMudG9waWNfaWRfbGlzdC5qb2luKCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrSXRlbXM6IEVzb2x2ZVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2goKHN0b2NrUmVjb3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMucHVzaCh0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtTGlzdChcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgK3Jlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhZ2UgPz8gMCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGxpc3Qgb2Ygc3RvY2sgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIGluZm8gcHJvdmlkZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFN0b2NrIGZpbHRlciBvcHRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSXRlbXNUcmFuc2FjdGlvbkhpc3RvcnkoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrSXRlbUhpc3RvcnlPcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtTGlzdDxUPj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wYXJzZUJhc2VTdG9ja0l0ZW1PcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ21hbnVmYWN0dXJlcnNfaWQnLCBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucmFuZ2VzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyYW5nZXNfaWQnLCBvcHRpb25zLnJhbmdlc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5jbGllbnRzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjbGllbnRzX2lkJywgb3B0aW9ucy5jbGllbnRzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrSGlzdG9yeVJlY29yZHMocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvY2tJdGVtczogRXNvbHZlU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMuZm9yRWFjaCgoc3RvY2tSZWNvcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcy5wdXNoKHRoaXMucHJvY2Vzc1N0b2NrSXRlbShzdG9ja1JlY29yZCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVTdG9ja0l0ZW1MaXN0KFxuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLFxuICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFnZSA/PyAwLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25TYWxlc1N1bW1hcnkoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVRyYW5zYWN0aW9uU2FsZXNTdG9ja0l0ZW1PcHRpb25zLFxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2FjdGlvblNhbGVzU3RvY2tJdGVtcyhvcHRpb25zLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25TYWxlc0RldGFpbHMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVRyYW5zYWN0aW9uU2FsZXNTdG9ja0l0ZW1PcHRpb25zLFxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2FjdGlvblNhbGVzU3RvY2tJdGVtcyhvcHRpb25zLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIFN0b2NrIGl0ZW0gY29kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRMaW5rZWRJdGVtcyhcbiAgICAgICAgY29kZTogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVMaW5rZWRTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWxpbmtlZC1pdGVtcy5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGNvZGUgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NMaW5rZWRJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBvbiBhIHJlY2lwZSBmcm9tIHRoZSBlU29sdmUgQVBJXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UmVjaXBlSXRlbXMoXG4gICAgICAgIGNvZGU6IHN0cmluZyxcbiAgICAgICAgb3B0aW9ucz86IEVzb2x2ZVJlY2lwZVN0b2NrT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdPiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnY29kZScsIGNvZGUpO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIG9wdGlvbnMucGFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyb3dzJywgb3B0aW9ucy5yb3dzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLnNvcnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydC5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVJlY2lwZUl0ZW1SZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1yZWNpcGUtaXRlbXMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZWNpcGVJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBsaW5rZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIEZpbHRlciBvcHRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldE1lZGlhTGlua2VkSXRlbXMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtTGlzdDxUPj4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIHJvd3M6IG9wdGlvbnMucm93cyA/PyAwLFxuICAgICAgICAgICAgICAgIHBhZ2U6IG9wdGlvbnMucGFnZSA/PyAwLFxuICAgICAgICAgICAgICAgIHJhbmdlc19pZDogb3B0aW9ucy5yYW5nZXNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBtYW51ZmFjdHVyZXJzX2lkOiBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5X29ubHk6IG9wdGlvbnMuZGlzcGxheV9vbmx5ID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzX2FjdGl2ZTogb3B0aW9ucy5pc19hY3RpdmUgPz8gdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBvcHRpb25zLnNvcnQ7XG5cbiAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc29ydCcsIHNvcnQuZmllbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc29ydC5vcmRlcikge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ29yZGVyJywgc29ydC5vcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5tZWRpYV9pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdtZWRpYV9pZGVudGlmaWVyJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1lZGlhX2lkZW50aWZpZXIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWVkaWFfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ21lZGlhX2lkJywgb3B0aW9ucy5tZWRpYV9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbWVkaWEtbGlua2VkLWl0ZW1zLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucHJvY2Vzc01lZGlhU3RvY2tJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUxpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucm93cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmUgbGlzdCBvZiBzdG9jayBpdGVtcyBzdWdnZXN0ZWQgdG8gYSBzdG9jayBpdGVtIGZyb20gdGhlIGVTb2x2ZSBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIFN0b2NrIGl0ZW0gY29kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdWdnZXN0ZWRJdGVtcyhcbiAgICAgICAgY29kZTogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlU3VnZ2VzdGVkU3RvY2tJdGVtPFQ+W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja0Jhc2VSZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1zdWdnZXN0ZWQtaXRlbXMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBjb2RlIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3VnZ2VzdGVkSXRlbXMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgZnVsbCBpbWFnZSBjb2xsZWN0aW9uIG9mIGEgc3RvY2sgaXRlbVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSW1hZ2VDb2xsZWN0aW9uKFxuICAgICAgICBjb2RlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uUmVjb3JkPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWl0ZW0taW1hZ2UtY29sbGVjdGlvbi5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGNvZGUgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgRXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RvY2tGaWx0ZXJzKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVTdG9ja0ZpbHRlck9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVGaWx0ZXJMaXN0PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogb3B0aW9ucy5jYXRlZ29yeV9pZCA/PyAnJyxcbiAgICAgICAgICAgICAgICBzdWJjYXRlZ29yeV9pZDogb3B0aW9ucy5zdWJjYXRlZ29yeV9pZCA/PyAwLFxuICAgICAgICAgICAgICAgIHJhbmdlc19pZDogb3B0aW9ucy5yYW5nZXNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBtYW51ZmFjdHVyZXJzX2lkOiBvcHRpb25zLm1hbnVmYWN0dXJlcnNfaWQgPz8gMCxcbiAgICAgICAgICAgICAgICBzcGVjaWFsc19pZDogb3B0aW9ucy5zcGVjaWFsc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIGZpZWxkczogb3B0aW9ucy5maWVsZHMuam9pbignLCcpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVGaWx0ZXJSZWNvcmRMaXN0Pj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWl0ZW0tZmlsdGVycy5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlc3BvbnNlLnJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgRXNvbHZlUmFuZ2VGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5taW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICtyZWNvcmQubWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVTaW5nbGVTZWxlY3RGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVNdWx0aXBsZVNlbGVjdEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmxhYmVsICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIubGFiZWwgPSByZWNvcmQubGFiZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUJhc2VTdG9ja0l0ZW1PcHRpb25zPFMgZXh0ZW5kcyBzdHJpbmcgPSBFc29sdmVTdG9ja1NvcnRGaWVsZD4oXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrSXRlbUJhc2VPcHRpb25zPFM+LFxuICAgICkge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5wYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgb3B0aW9ucy5wYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnJvd3MpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcblxuICAgICAgICAgICAgaWYgKHNvcnQuZmllbGQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnNlYXJjaF9waHJhc2UpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaF9waHJhc2UnLCBvcHRpb25zLnNlYXJjaF9waHJhc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZmlsdGVycykge1xuICAgICAgICAgICAgbGV0IGZpbHRlcnMgPSBvcHRpb25zLmZpbHRlcnM7XG5cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBFc29sdmVGaWx0ZXJGYWN0b3J5LmNvdmVydEZyb21PYmooZmlsdGVycyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IEVzb2x2ZUZpbHRlckZhY3RvcnkuY29udmVydFRvSHR0cFBhcmFtcyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZCBhbmQgY29udmVydHMgaXQgdG8gYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NTdG9ja0l0ZW0ocmVjb3JkOiBFc29sdmVTdG9ja1JlY29yZDxUPik6IEVzb2x2ZVN0b2NrSXRlbTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtPFQ+KHJlY29yZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBsaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgTGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NMaW5rZWRJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlTGlua2VkU3RvY2tSZWNvcmQ8VD5bXSxcbiAgICApOiBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD4ocmVjb3JkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSByZWNpcGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjaXBlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NSZWNpcGVJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlUmVjaXBlSXRlbVJlY29yZDxUPltdLFxuICAgICk6IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZVJlY2lwZVN0b2NrSXRlbTxUPihyZWNvcmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhlIGxpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBMaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3Jkc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc01lZGlhU3RvY2tJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlTWVkaWFTdG9ja0l0ZW1SZWNvcmQ8VD5bXSxcbiAgICApOiBFc29sdmVNZWRpYVN0b2NrSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlTWVkaWFTdG9ja0l0ZW08VD4ocmVjb3JkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBzdWdnZXN0ZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgU3VnZ2VzdGVkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NTdWdnZXN0ZWRJdGVtcyhcbiAgICAgICAgcmVjb3JkczogRXNvbHZlU3RvY2tCYXNlUmVjb3JkPFQ+W10sXG4gICAgKTogRXNvbHZlU3VnZ2VzdGVkU3RvY2tJdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtczogRXNvbHZlU3VnZ2VzdGVkU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlU3VnZ2VzdGVkU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBzdG9jayByZWNvcmRzIGZyb20gSFRUUCBwYXJhbXMuXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdG9ja1JlY29yZHMoXG4gICAgICAgIHBhcmFtczogSHR0cFBhcmFtcyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1pdGVtcy5waHBgLFxuICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgc3RvY2sgdHJhbnNhY3Rpb24gaGlzdG9yeSByZWNvcmRzIGZyb20gSFRUUCBwYXJhbXMuXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdG9ja0hpc3RvcnlSZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbXMtdHJhbnNhY3Rpb24taGlzdG9yeS5waHBgLFxuICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zYWN0aW9uU2FsZXNTdG9ja0l0ZW1zKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVUcmFuc2FjdGlvblNhbGVzU3RvY2tJdGVtT3B0aW9ucyxcbiAgICAgICAgc3VtbWFyeT86IGJvb2xlYW4sXG4gICAgKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBhcnNlQmFzZVN0b2NrSXRlbU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubW9udGhzKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtb250aHMnLCBvcHRpb25zLm1vbnRocyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdW1tYXJ5Jywgc3VtbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2FjdGlvblNhbGVzU3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrSXRlbXM6IEVzb2x2ZVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2goKHN0b2NrUmVjb3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMucHVzaCh0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtTGlzdChcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgK3Jlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhZ2UgPz8gMCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2FjdGlvblNhbGVzU3RvY2tSZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbXMtdHJhbnNhY3Rpb24tc2FsZXMucGhwYCxcbiAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE5vdGlmeShcbiAgICAgICAgY29kZTogc3RyaW5nLFxuICAgICAgICBub3RpZmljYXRpb25fdHlwZSA9ICdJblN0b2NrJyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVNldE5vdGlmeVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbl90eXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbm90aWZ5LnBocGAsXG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVNldE5vdGlmeVJlc3VsdChyZXNwb25zZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LW5vdGlmeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
505
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svZXNvbHZlLXN0b2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFFVixVQUFVLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxPQUFPLEVBRUgsNEJBQTRCLEdBRS9CLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFDSCxtQkFBbUIsRUFHbkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1Qix3QkFBd0IsR0FDM0IsTUFBTSxXQUFXLENBQUM7O0FBeUJuQixNQUFNLE9BQU8sa0JBQWtCO0lBSC9CO1FBTXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDakQsb0JBQWUsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQW12QjNFO0lBanZCRzs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLElBQVk7UUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsVUFBVSxFQUFFO2dCQUNSLElBQUk7YUFDUDtTQUNKLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFDSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVM7Z0JBQzlCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDOUIsQ0FBQztnQkFDQyxNQUFNLFFBQVEsQ0FBQztZQUNuQixDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FBQyxJQUFZO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRTtnQkFDUixJQUFJO2FBQ1A7U0FDSixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFDSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVM7Z0JBQzlCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDOUIsQ0FBQztnQkFDQyxNQUFNLFFBQVEsQ0FBQztZQUNuQixDQUFDO1lBRUQsTUFBTSx3QkFBd0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXJELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQ3RCLFFBQWdCO1FBRWhCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRTtnQkFDUixRQUFRO2FBQ1g7U0FDSixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNwQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFeEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUNoQixPQUErQjtRQUUvQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckQsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUM5QixDQUFDO2dCQUNDLE1BQU0sUUFBUSxDQUFDO1lBQ25CLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBeUIsRUFBRSxDQUFDO1lBRTVDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ3JDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksbUJBQW1CLENBQzFCLFVBQVUsRUFDVixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUN2QyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FDcEIsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLCtCQUErQixDQUNsQyxPQUFzQztRQUV0QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckQsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUF5QixFQUFFLENBQUM7WUFFNUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDckMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxtQkFBbUIsQ0FDMUIsVUFBVSxFQUNWLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQ3ZDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUNwQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSwwQkFBMEIsQ0FDN0IsT0FBK0M7UUFFL0MsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSwwQkFBMEIsQ0FDN0IsT0FBK0M7UUFFL0MsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUNqQixJQUFZO1FBRVosT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUU7U0FDbkIsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQ2pCLElBQVksRUFDWixPQUFrQztRQUVsQyxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBRTFCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNO1NBQ1QsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxtQkFBbUIsQ0FDdEIsT0FBb0M7UUFFcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDeEIsVUFBVSxFQUFFO2dCQUNSLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7Z0JBQ3ZCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUM7Z0JBQ2pDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDO2dCQUMvQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLO2dCQUMzQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJO2FBQ3ZDO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBRTFCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNsQixrQkFBa0IsRUFDbEIsT0FBTyxDQUFDLGdCQUFnQixDQUMzQixDQUFDO1FBQ04sQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sNkJBQTZCLEVBQ25EO1lBQ0ksTUFBTTtTQUNULENBQ0o7YUFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUM5QixDQUFDO2dCQUNDLE1BQU0sUUFBUSxDQUFDO1lBQ25CLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTVELE9BQU8sSUFBSSxVQUFVLENBQ2pCLEtBQUssRUFDTCxPQUFPLENBQUMsSUFBSSxFQUNaLE9BQU8sQ0FBQyxJQUFJLEVBQ1osQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FDMUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUNwQixJQUFZO1FBRVosT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTywwQkFBMEIsRUFDaEQ7WUFDSSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUU7U0FDbkIsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx1QkFBdUIsQ0FDMUIsSUFBWTtRQUVaLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sZ0NBQWdDLEVBQ3REO1lBQ0ksTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFO1NBQ25CLENBQ0o7YUFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pDLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksMEJBQTBCLENBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQ25CLENBQUM7WUFFRixPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVNLGVBQWUsQ0FDbEIsT0FBaUM7UUFFakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDMUIsVUFBVSxFQUFFO2dCQUNSLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUU7Z0JBQ3RDLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUM7Z0JBQzNDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUM7Z0JBQ2pDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDO2dCQUMvQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDO2dCQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ25DO1NBQ0osQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FDQSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsRUFDN0M7WUFDSSxNQUFNO1NBQ1QsQ0FDSjthQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUVuQixLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUVsQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQzFCLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixDQUMxQixNQUFNLENBQUMsS0FBSyxFQUNaLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFDWCxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2QsQ0FBQztnQkFDTixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQ2pDLE1BQU0sQ0FBQyxLQUFLLEVBQ1osTUFBTSxDQUFDLE1BQU0sQ0FDaEIsQ0FBQztnQkFDTixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDcEMsTUFBTSxHQUFHLElBQUksMEJBQTBCLENBQ25DLE1BQU0sQ0FBQyxLQUFLLEVBQ1osTUFBTSxDQUFDLE1BQU0sQ0FDaEIsQ0FBQztnQkFDTixDQUFDO2dCQUVELElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO3dCQUN0QixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ2hDLENBQUM7b0JBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVPLHlCQUF5QixDQUM3QixPQUFzQztRQUV0QyxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRTlCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFFMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFFOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQsTUFBTSxHQUFHLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx5QkFBeUIsQ0FBQyxNQUEwQztRQUN4RSxPQUFPLElBQUksNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FBQyxNQUE0QjtRQUNqRCxPQUFPLElBQUksZUFBZSxDQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssa0JBQWtCLENBQ3RCLE9BQXFDO1FBRXJDLE1BQU0sS0FBSyxHQUErQixFQUFFLENBQUM7UUFFN0MsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBcUIsQ0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0IsQ0FDdEIsT0FBb0M7UUFFcEMsTUFBTSxLQUFLLEdBQStCLEVBQUUsQ0FBQztRQUU3QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFxQixDQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHNCQUFzQixDQUMxQixPQUF3QztRQUV4QyxNQUFNLEtBQUssR0FBOEIsRUFBRSxDQUFDO1FBRTVDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQW9CLENBQUksTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0sscUJBQXFCLENBQ3pCLE9BQW1DO1FBRW5DLE1BQU0sS0FBSyxHQUFrQyxFQUFFLENBQUM7UUFFaEQsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSx3QkFBd0IsQ0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUdBOzs7TUFHRTtJQUNNLDZCQUE2QixDQUNsQyxNQUFrQjtRQUVsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNoQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx5QkFBeUIsRUFDL0MsRUFBRSxNQUFNLEVBQUUsQ0FDYixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWUsQ0FDbkIsTUFBa0I7UUFFbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sZ0JBQWdCLEVBQ3RDLEVBQUUsTUFBTSxFQUFFLENBQ2IsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0IsQ0FDMUIsTUFBa0I7UUFFbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sb0NBQW9DLEVBQzFELEVBQUUsTUFBTSxFQUFFLENBQ2IsQ0FBQztJQUNOLENBQUM7SUFFTyw2QkFBNkIsQ0FDakMsT0FBK0MsRUFDL0MsT0FBaUI7UUFFakIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNiLElBQ0ksUUFBUSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUM5QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQzlCLENBQUM7Z0JBQ0MsTUFBTSxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUF5QixFQUFFLENBQUM7WUFFNUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDckMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxtQkFBbUIsQ0FDMUIsVUFBVSxFQUNWLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQ3ZDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUNwQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTywrQkFBK0IsQ0FDbkMsTUFBa0I7UUFFbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sa0NBQWtDLEVBQ3hELEVBQUUsTUFBTSxFQUFFLENBQ2IsQ0FBQztJQUNOLENBQUM7SUFFTSxTQUFTLENBQ1osSUFBWSxFQUNaLGlCQUFpQixHQUFHLFNBQVM7UUFFN0IsTUFBTSxJQUFJLEdBQUc7WUFDVCxJQUFJO1lBQ0osaUJBQWlCO1NBQ3BCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsSUFBSSxDQUNELEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGlCQUFpQixFQUN2QyxJQUFJLEVBQ0o7WUFDSSxPQUFPLEVBQUU7Z0JBQ0wsY0FBYyxFQUNWLGtEQUFrRDthQUN6RDtZQUNELFlBQVksRUFBRSxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1NBQ2xCLENBQ0o7YUFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FDM0MsYUFBYSxFQUNiLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUNwRCxDQUNKLEVBQ0QsVUFBVSxDQUFDLENBQUMsUUFBaUMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FDeEMsWUFBWSxFQUNaLFFBQVEsQ0FDWCxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNWLENBQUM7OEdBeHZCUSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZmLE1BQU07OzJGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEh0dHBDbGllbnQsXG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgSHR0cFBhcmFtcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEVzb2x2ZUdldFJlc3BvbnNlLFxuICAgIEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXG4gICAgRXNvbHZlU2V0UmVzcG9uc2UsXG59IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XG5cbmltcG9ydCB7IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZXJyb3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ3VzdG9tRmllbGRzIH0gZnJvbSAnLi4vc2hhcmVkL2N1c3RvbS1maWVsZHMnO1xuaW1wb3J0IHsgRXNvbHZlTGlzdCB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtbGlzdC5tb2RlbCc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZUZpbHRlckZhY3RvcnksXG4gICAgRXNvbHZlRmlsdGVyTGlzdCxcbiAgICBFc29sdmVGaWx0ZXJSZWNvcmRMaXN0LFxuICAgIEVzb2x2ZU11bHRpcGxlU2VsZWN0RmlsdGVyLFxuICAgIEVzb2x2ZVJhbmdlRmlsdGVyLFxuICAgIEVzb2x2ZVNpbmdsZVNlbGVjdEZpbHRlcixcbn0gZnJvbSAnLi4vc2hhcmVkL2ZpbHRlcnMnO1xuXG5pbXBvcnQge1xuICAgIEVzb2x2ZUxpbmtlZFN0b2NrSXRlbSxcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbSxcbiAgICBFc29sdmVSZWNpcGVTdG9ja0l0ZW0sXG4gICAgRXNvbHZlU2V0Tm90aWZ5UmVzdWx0LFxuICAgIEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uLFxuICAgIEVzb2x2ZVN0b2NrSXRlbSxcbiAgICBFc29sdmVTdG9ja0l0ZW1MaXN0LFxuICAgIEVzb2x2ZVN0b2NrSXRlbUxvY2F0aW9uTGV2ZWwsXG4gICAgRXNvbHZlU3VnZ2VzdGVkU3RvY2tJdGVtLFxufSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVMaW5rZWRTdG9ja1JlY29yZCxcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlUmVjaXBlSXRlbVJlY29yZCxcbiAgICBFc29sdmVSZWNpcGVTdG9ja09wdGlvbnMsXG4gICAgRXNvbHZlU3RvY2tCYXNlUmVjb3JkLFxuICAgIEVzb2x2ZVN0b2NrRmlsdGVyT3B0aW9ucyxcbiAgICBFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvblJlY29yZCxcbiAgICBFc29sdmVTdG9ja0l0ZW1CYXNlT3B0aW9ucyxcbiAgICBFc29sdmVTdG9ja0l0ZW1IaXN0b3J5T3B0aW9ucyxcbiAgICBFc29sdmVTdG9ja0l0ZW1Mb2NhdGlvbkxldmVsUmVjb3JkLFxuICAgIEVzb2x2ZVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlU3RvY2tSZWNvcmQsXG4gICAgRXNvbHZlVHJhbnNhY3Rpb25TYWxlc1N0b2NrSXRlbU9wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZU1lZGlhU3RvY2tJdGVtTGlzdCxcbiAgICBFc29sdmVNZWRpYVN0b2NrSXRlbVJlY29yZCxcbiAgICBFc29sdmVTdG9ja1NvcnRGaWVsZCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZVN0b2NrU2VydmljZTxcbiAgICBUIGV4dGVuZHMgRXNvbHZlQ3VzdG9tRmllbGRzID0gRXNvbHZlQ3VzdG9tRmllbGRzLFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2VIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBjb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgZVNvbHZlIHN0b2NrIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtPFQ+PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHtcbiAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrUmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBzdG9jayByZWNvcmQgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIHRoZSBjb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgZVNvbHZlIHN0b2NrIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtTGV2ZWxzKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8RXNvbHZlU3RvY2tJdGVtTG9jYXRpb25MZXZlbD4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICAgICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b2NrTG9jYXRpb25MZXZlbHNSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrTG9jYXRpb25MZXZlbFJlY29yZCA9IHJlc3BvbnNlLnJlY29yZHNbMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RvY2tMb2NhdGlvbkxldmVsKHN0b2NrTG9jYXRpb25MZXZlbFJlY29yZCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0b2NrIHJlY29yZCBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgdGhlIFNFRiBuYW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlZl9uYW1lIFNFRiBuYW1lIG9mIHRoZSBzdG9jayBpdGVtXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSXRlbUZyb21TRUYoXG4gICAgICAgIHNlZl9uYW1lOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW08VD4+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIHNlZl9uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrUmVjb3JkID0gcmVzcG9uc2UucmVjb3Jkc1swXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGxpc3Qgb2Ygc3RvY2sgZnJvbSB0aGUgZVNvbHZlIGluc3RhbmNlIHVzaW5nIGluZm8gcHJvdmlkZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFN0b2NrIGZpbHRlciBvcHRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b2NrSXRlbXMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrSXRlbU9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW1MaXN0PFQ+PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBhcnNlQmFzZVN0b2NrSXRlbU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZGlzcGxheV9vbmx5KSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkaXNwbGF5X29ubHknLCBvcHRpb25zLmRpc3BsYXlfb25seSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5pc19hY3RpdmUpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX2FjdGl2ZScsIG9wdGlvbnMuaXNfYWN0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNhdGVnb3J5X2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjYXRlZ29yeV9pZCcsIG9wdGlvbnMuY2F0ZWdvcnlfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc3ViY2F0ZWdvcnlfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3N1YmNhdGVnb3J5X2lkJywgb3B0aW9ucy5zdWJjYXRlZ29yeV9pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtYW51ZmFjdHVyZXJzX2lkJywgb3B0aW9ucy5tYW51ZmFjdHVyZXJzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnJhbmdlc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmFuZ2VzX2lkJywgb3B0aW9ucy5yYW5nZXNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc3BlY2lhbHNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NwZWNpYWxzX2lkJywgb3B0aW9ucy5zcGVjaWFsc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy50YWdfaWRfbGlzdCAmJiBvcHRpb25zLnRhZ19pZF9saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RhZ19pZCcsIG9wdGlvbnMudGFnX2lkX2xpc3Quam9pbignLCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRvcGljX2lkX2xpc3QgJiYgb3B0aW9ucy50b3BpY19pZF9saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvcGljX2lkJywgb3B0aW9ucy50b3BpY19pZF9saXN0LmpvaW4oJywnKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdG9ja1JlY29yZHMocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvY2tJdGVtczogRXNvbHZlU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMuZm9yRWFjaCgoc3RvY2tSZWNvcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcy5wdXNoKHRoaXMucHJvY2Vzc1N0b2NrSXRlbShzdG9ja1JlY29yZCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVTdG9ja0l0ZW1MaXN0KFxuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLFxuICAgICAgICAgICAgICAgICAgICArcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhLnRvdGFsX3JlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFnZSA/PyAwLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgbGlzdCBvZiBzdG9jayBmcm9tIHRoZSBlU29sdmUgaW5zdGFuY2UgdXNpbmcgaW5mbyBwcm92aWRlZFxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgU3RvY2sgZmlsdGVyIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJdGVtc1RyYW5zYWN0aW9uSGlzdG9yeShcbiAgICAgICAgb3B0aW9uczogRXNvbHZlU3RvY2tJdGVtSGlzdG9yeU9wdGlvbnMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdG9ja0l0ZW1MaXN0PFQ+PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBhcnNlQmFzZVN0b2NrSXRlbU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbWFudWZhY3R1cmVyc19pZCcsIG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5yYW5nZXNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jhbmdlc19pZCcsIG9wdGlvbnMucmFuZ2VzX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNsaWVudHNfaWQpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NsaWVudHNfaWQnLCBvcHRpb25zLmNsaWVudHNfaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvY2tIaXN0b3J5UmVjb3JkcyhwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdG9ja0l0ZW1zOiBFc29sdmVTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5mb3JFYWNoKChzdG9ja1JlY29yZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdG9ja0l0ZW1zLnB1c2godGhpcy5wcm9jZXNzU3RvY2tJdGVtKHN0b2NrUmVjb3JkKSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVN0b2NrSXRlbUxpc3QoXG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICtyZXNwb25zZS5hZGRpdGlvbmFsX2RhdGEudG90YWxfcmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYWdlID8/IDAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUcmFuc2FjdGlvblNhbGVzU3VtbWFyeShcbiAgICAgICAgb3B0aW9uczogRXNvbHZlVHJhbnNhY3Rpb25TYWxlc1N0b2NrSXRlbU9wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zYWN0aW9uU2FsZXNTdG9ja0l0ZW1zKG9wdGlvbnMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUcmFuc2FjdGlvblNhbGVzRGV0YWlscyhcbiAgICAgICAgb3B0aW9uczogRXNvbHZlVHJhbnNhY3Rpb25TYWxlc1N0b2NrSXRlbU9wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zYWN0aW9uU2FsZXNTdG9ja0l0ZW1zKG9wdGlvbnMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBsaXN0IG9mIHN0b2NrIGl0ZW1zIGxpbmtlZCB0byBhIHN0b2NrIGl0ZW0gZnJvbSB0aGUgZVNvbHZlIEFQSVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldExpbmtlZEl0ZW1zKFxuICAgICAgICBjb2RlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVMaW5rZWRTdG9ja0l0ZW08VD5bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUxpbmtlZFN0b2NrUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtbGlua2VkLWl0ZW1zLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgY29kZSB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0xpbmtlZEl0ZW1zKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBsaXN0IG9mIHN0b2NrIGl0ZW1zIG9uIGEgcmVjaXBlIGZyb20gdGhlIGVTb2x2ZSBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIFN0b2NrIGl0ZW0gY29kZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSZWNpcGVJdGVtcyhcbiAgICAgICAgY29kZTogc3RyaW5nLFxuICAgICAgICBvcHRpb25zPzogRXNvbHZlUmVjaXBlU3RvY2tPcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlUmVjaXBlU3RvY2tJdGVtPFQ+W10+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdjb2RlJywgY29kZSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnBhZ2UpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgb3B0aW9ucy5wYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMucm93cykge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Jvd3MnLCBvcHRpb25zLnJvd3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcblxuICAgICAgICAgICAgICAgIGlmIChzb3J0LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc29ydC5vcmRlcikge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlUmVjaXBlSXRlbVJlY29yZDxUPltdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXJlY2lwZS1pdGVtcy5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy5sZW5ndGggPD0gMFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1JlY2lwZUl0ZW1zKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBsaXN0IG9mIHN0b2NrIGl0ZW1zIGxpbmtlZCB0byBhIHN0b2NrIGl0ZW0gZnJvbSB0aGUgZVNvbHZlIEFQSVxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgRmlsdGVyIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TWVkaWFMaW5rZWRJdGVtcyhcbiAgICAgICAgb3B0aW9uczogRXNvbHZlTWVkaWFTdG9ja0l0ZW1PcHRpb25zLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlTWVkaWFTdG9ja0l0ZW1MaXN0PFQ+PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICAgICAgICBmcm9tT2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgcm93czogb3B0aW9ucy5yb3dzID8/IDAsXG4gICAgICAgICAgICAgICAgcGFnZTogb3B0aW9ucy5wYWdlID8/IDAsXG4gICAgICAgICAgICAgICAgcmFuZ2VzX2lkOiBvcHRpb25zLnJhbmdlc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIG1hbnVmYWN0dXJlcnNfaWQ6IG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlfb25seTogb3B0aW9ucy5kaXNwbGF5X29ubHkgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNfYWN0aXZlOiBvcHRpb25zLmlzX2FjdGl2ZSA/PyB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgY29uc3Qgc29ydCA9IG9wdGlvbnMuc29ydDtcblxuICAgICAgICAgICAgaWYgKHNvcnQuZmllbGQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzb3J0Jywgc29ydC5maWVsZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzb3J0Lm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnb3JkZXInLCBzb3J0Lm9yZGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLm1lZGlhX2lkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ21lZGlhX2lkZW50aWZpZXInLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMubWVkaWFfaWRlbnRpZmllcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5tZWRpYV9pZCkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbWVkaWFfaWQnLCBvcHRpb25zLm1lZGlhX2lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlTWVkaWFTdG9ja0l0ZW1SZWNvcmQ8VD5bXT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1tZWRpYS1saW5rZWQtaXRlbXMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5wcm9jZXNzTWVkaWFTdG9ja0l0ZW1zKHJlc3BvbnNlLnJlY29yZHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5yb3dzLFxuICAgICAgICAgICAgICAgICAgICAgICAgK3Jlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZSBsaXN0IG9mIHN0b2NrIGl0ZW1zIHN1Z2dlc3RlZCB0byBhIHN0b2NrIGl0ZW0gZnJvbSB0aGUgZVNvbHZlIEFQSVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgU3RvY2sgaXRlbSBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFN1Z2dlc3RlZEl0ZW1zKFxuICAgICAgICBjb2RlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVTdWdnZXN0ZWRTdG9ja0l0ZW08VD5bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrQmFzZVJlY29yZDxUPltdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXN1Z2dlc3RlZC1pdGVtcy5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGNvZGUgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdWdnZXN0ZWRJdGVtcyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBmdWxsIGltYWdlIGNvbGxlY3Rpb24gb2YgYSBzdG9jayBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSBTdG9jayBpdGVtIGNvZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvY2tJbWFnZUNvbGxlY3Rpb24oXG4gICAgICAgIGNvZGU6IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVN0b2NrSW1hZ2VDb2xsZWN0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlU3RvY2tJbWFnZUNvbGxlY3Rpb25SZWNvcmQ+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbS1pbWFnZS1jb2xsZWN0aW9uLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgY29kZSB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBFc29sdmVTdG9ja0ltYWdlQ29sbGVjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMsXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdG9ja0ZpbHRlcnMoXG4gICAgICAgIG9wdGlvbnM6IEVzb2x2ZVN0b2NrRmlsdGVyT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUZpbHRlckxpc3Q+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBvcHRpb25zLmNhdGVnb3J5X2lkID8/ICcnLFxuICAgICAgICAgICAgICAgIHN1YmNhdGVnb3J5X2lkOiBvcHRpb25zLnN1YmNhdGVnb3J5X2lkID8/IDAsXG4gICAgICAgICAgICAgICAgcmFuZ2VzX2lkOiBvcHRpb25zLnJhbmdlc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIG1hbnVmYWN0dXJlcnNfaWQ6IG9wdGlvbnMubWFudWZhY3R1cmVyc19pZCA/PyAwLFxuICAgICAgICAgICAgICAgIHNwZWNpYWxzX2lkOiBvcHRpb25zLnNwZWNpYWxzX2lkID8/IDAsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBvcHRpb25zLmZpZWxkcy5qb2luKCcsJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUZpbHRlclJlY29yZExpc3Q+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbS1maWx0ZXJzLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVzcG9uc2UucmVjb3Jkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IG5ldyBFc29sdmVSYW5nZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArcmVjb3JkLm1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5tYXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gbmV3IEVzb2x2ZVNpbmdsZVNlbGVjdEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gbmV3IEVzb2x2ZU11bHRpcGxlU2VsZWN0RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC52YWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmQubGFiZWwgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5sYWJlbCA9IHJlY29yZC5sYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlQmFzZVN0b2NrSXRlbU9wdGlvbnM8UyBleHRlbmRzIHN0cmluZyA9IEVzb2x2ZVN0b2NrU29ydEZpZWxkPihcbiAgICAgICAgb3B0aW9uczogRXNvbHZlU3RvY2tJdGVtQmFzZU9wdGlvbnM8Uz4sXG4gICAgKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnBhZ2UpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCBvcHRpb25zLnBhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucm93cykge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncm93cycsIG9wdGlvbnMucm93cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ID0gb3B0aW9ucy5zb3J0O1xuXG4gICAgICAgICAgICBpZiAoc29ydC5maWVsZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NvcnQnLCBzb3J0LmZpZWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNvcnQub3JkZXIpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdvcmRlcicsIHNvcnQub3JkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoX3BocmFzZSkge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VhcmNoX3BocmFzZScsIG9wdGlvbnMuc2VhcmNoX3BocmFzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5maWx0ZXJzKSB7XG4gICAgICAgICAgICBsZXQgZmlsdGVycyA9IG9wdGlvbnMuZmlsdGVycztcblxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnMpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVycyA9IEVzb2x2ZUZpbHRlckZhY3RvcnkuY292ZXJ0RnJvbU9iaihmaWx0ZXJzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zID0gRXNvbHZlRmlsdGVyRmFjdG9yeS5jb252ZXJ0VG9IdHRwUGFyYW1zKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZFxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc1N0b2NrTG9jYXRpb25MZXZlbChyZWNvcmQ6IEVzb2x2ZVN0b2NrSXRlbUxvY2F0aW9uTGV2ZWxSZWNvcmQpOiBFc29sdmVTdG9ja0l0ZW1Mb2NhdGlvbkxldmVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVTdG9ja0l0ZW1Mb2NhdGlvbkxldmVsKHJlY29yZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmQgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3RvY2tJdGVtKHJlY29yZDogRXNvbHZlU3RvY2tSZWNvcmQ8VD4pOiBFc29sdmVTdG9ja0l0ZW08VD4ge1xuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZVN0b2NrSXRlbTxUPihyZWNvcmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgbGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHMgYW5kIGNvbnZlcnRzIHRoZW0gdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmRzIExpbmtlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzTGlua2VkSXRlbXMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZUxpbmtlZFN0b2NrUmVjb3JkPFQ+W10sXG4gICAgKTogRXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtczogRXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+W10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChuZXcgRXNvbHZlTGlua2VkU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgcmVjaXBlIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHMgYW5kIGNvbnZlcnRzIHRoZW0gdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmRzIFJlY2lwZSBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzUmVjaXBlSXRlbXMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZVJlY2lwZUl0ZW1SZWNvcmQ8VD5bXSxcbiAgICApOiBFc29sdmVSZWNpcGVTdG9ja0l0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBFc29sdmVSZWNpcGVTdG9ja0l0ZW08VD5bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG5ldyBFc29sdmVSZWNpcGVTdG9ja0l0ZW08VD4ocmVjb3JkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBsaW5rZWQgZVNvbHZlIHN0b2NrIGl0ZW0gcmVjb3JkcyBhbmQgY29udmVydHMgdGhlbSB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgTGlua2VkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NNZWRpYVN0b2NrSXRlbXMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZU1lZGlhU3RvY2tJdGVtUmVjb3JkPFQ+W10sXG4gICAgKTogRXNvbHZlTWVkaWFTdG9ja0l0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBFc29sdmVNZWRpYVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZU1lZGlhU3RvY2tJdGVtPFQ+KHJlY29yZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgc3VnZ2VzdGVkIGVTb2x2ZSBzdG9jayBpdGVtIHJlY29yZHMgYW5kIGNvbnZlcnRzIHRoZW0gdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmRzIFN1Z2dlc3RlZCBlU29sdmUgc3RvY2sgaXRlbSByZWNvcmRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzU3VnZ2VzdGVkSXRlbXMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZVN0b2NrQmFzZVJlY29yZDxUPltdLFxuICAgICk6IEVzb2x2ZVN1Z2dlc3RlZFN0b2NrSXRlbTxUPltdIHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEVzb2x2ZVN1Z2dlc3RlZFN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobmV3IEVzb2x2ZVN1Z2dlc3RlZFN0b2NrSXRlbTxUPihyZWNvcmQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cblxuICAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgc3RvY2sgcmVjb3JkcyBmcm9tIEhUVFAgcGFyYW1zLlxuICAgICAqIEBwYXJhbSBwYXJhbXMgSFRUUCBjbGllbnQgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgICBwcml2YXRlIGdldFN0b2NrTG9jYXRpb25MZXZlbHNSZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja0l0ZW1Mb2NhdGlvbkxldmVsUmVjb3JkW10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrSXRlbUxvY2F0aW9uTGV2ZWxSZWNvcmRbXT4+KFxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWxvY2F0aW9uLWxldmVsLnBocGAsXG4gICAgICAgICAgICB7IHBhcmFtcyB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBzdG9jayByZWNvcmRzIGZyb20gSFRUUCBwYXJhbXMuXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdG9ja1JlY29yZHMoXG4gICAgICAgIHBhcmFtczogSHR0cFBhcmFtcyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZVN0b2NrUmVjb3JkPFQ+W10+PihcbiAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1pdGVtcy5waHBgLFxuICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgc3RvY2sgdHJhbnNhY3Rpb24gaGlzdG9yeSByZWNvcmRzIGZyb20gSFRUUCBwYXJhbXMuXG4gICAgICogQHBhcmFtIHBhcmFtcyBIVFRQIGNsaWVudCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdG9ja0hpc3RvcnlSZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbXMtdHJhbnNhY3Rpb24taGlzdG9yeS5waHBgLFxuICAgICAgICAgICAgeyBwYXJhbXMgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zYWN0aW9uU2FsZXNTdG9ja0l0ZW1zKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVUcmFuc2FjdGlvblNhbGVzU3RvY2tJdGVtT3B0aW9ucyxcbiAgICAgICAgc3VtbWFyeT86IGJvb2xlYW4sXG4gICAgKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBhcnNlQmFzZVN0b2NrSXRlbU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubW9udGhzKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdtb250aHMnLCBvcHRpb25zLm1vbnRocyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdW1tYXJ5Jywgc3VtbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2FjdGlvblNhbGVzU3RvY2tSZWNvcmRzKHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmxlbmd0aCA8PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b2NrSXRlbXM6IEVzb2x2ZVN0b2NrSXRlbTxUPltdID0gW107XG5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLmZvckVhY2goKHN0b2NrUmVjb3JkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN0b2NrSXRlbXMucHVzaCh0aGlzLnByb2Nlc3NTdG9ja0l0ZW0oc3RvY2tSZWNvcmQpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlU3RvY2tJdGVtTGlzdChcbiAgICAgICAgICAgICAgICAgICAgc3RvY2tJdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgK3Jlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YS50b3RhbF9yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhZ2UgPz8gMCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUcmFuc2FjdGlvblNhbGVzU3RvY2tSZWNvcmRzKFxuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXMsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVHZXRSZXNwb25zZTxFc29sdmVTdG9ja1JlY29yZDxUPltdPj4oXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtaXRlbXMtdHJhbnNhY3Rpb24tc2FsZXMucGhwYCxcbiAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE5vdGlmeShcbiAgICAgICAgY29kZTogc3RyaW5nLFxuICAgICAgICBub3RpZmljYXRpb25fdHlwZSA9ICdJblN0b2NrJyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVNldE5vdGlmeVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbl90eXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtbm90aWZ5LnBocGAsXG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGh0dHBfcmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VIYW5kbGVyLnZhbGlkYXRlU2luZ2xlSHR0cFJlc3BvbnNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gbmV3IEVzb2x2ZVNldE5vdGlmeVJlc3VsdChyZXNwb25zZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LW5vdGlmeScsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b2NrLWl0ZW0tbG9jYXRpb24tbGV2ZWwtcmVjb3JkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9zdG9jay9pbnRlcmZhY2VzL2Vzb2x2ZS1zdG9jay1pdGVtLWxvY2F0aW9uLWxldmVsLXJlY29yZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXNvbHZlU3RvY2tJdGVtTG9jYXRpb25MZXZlbFJlY29yZCB7XG4gICAgbG9jYXRpb25faWQ/OiBudW1iZXI7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsZXZlbD86IG51bWJlcjtcbn1cbiJdfQ==
@@ -19,4 +19,5 @@ export * from './esolve-stock-linked-category-record.interface';
19
19
  export * from './esolve-stock-record.interface';
20
20
  export * from './esolve-stock-reviews-report-record.interface';
21
21
  export * from './esolve-transaction-sales-stock-item-options.interface';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHlEQUF5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtYWRkaXRpb25hbC1zdG9jay1pbWFnZS1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWNvbG91ci1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLWRlcGVuZGFudC1pdGVtLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbGlua2VkLXN0b2NrLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtbWVkaWEtc3RvY2staXRlbS1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1yZWNpcGUtaXRlbS1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXJlY2lwZS1zdG9jay1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1iYWRnZS1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWJhc2UtcmVjb3JkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1jYXJ0LXBhcmFtZXRlci5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stZmlsdGVyLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWltYWdlLWNvbGxlY3Rpb24tcmVjb3JkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLWJhc2Utb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1oaXN0b3J5LW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWl0ZW0tb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stbGVhZC10aW1lcy1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWxpbmtlZC1jYXRlZ29yeS1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stcmV2aWV3cy1yZXBvcnQtcmVjb3JkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS10cmFuc2FjdGlvbi1zYWxlcy1zdG9jay1pdGVtLW9wdGlvbnMuaW50ZXJmYWNlJztcbiJdfQ==
22
+ export * from './esolve-stock-item-location-level-record.interface';
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvc3RvY2svaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMscURBQXFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1hZGRpdGlvbmFsLXN0b2NrLWltYWdlLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtY29sb3VyLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtZGVwZW5kYW50LWl0ZW0tcmVjb3JkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1saW5rZWQtc3RvY2stcmVjb3JkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1tZWRpYS1zdG9jay1pdGVtLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXJlY2lwZS1pdGVtLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtcmVjaXBlLXN0b2NrLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWJhZGdlLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stYmFzZS1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWNhcnQtcGFyYW1ldGVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1maWx0ZXItb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staW1hZ2UtY29sbGVjdGlvbi1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXN0b2NrLWl0ZW0tYmFzZS1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1pdGVtLWhpc3Rvcnktb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1sZWFkLXRpbWVzLXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stbGlua2VkLWNhdGVnb3J5LXJlY29yZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2stcmVjb3JkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vzb2x2ZS1zdG9jay1yZXZpZXdzLXJlcG9ydC1yZWNvcmQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXNvbHZlLXRyYW5zYWN0aW9uLXNhbGVzLXN0b2NrLWl0ZW0tb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lc29sdmUtc3RvY2staXRlbS1sb2NhdGlvbi1sZXZlbC1yZWNvcmQuaW50ZXJmYWNlJztcbiJdfQ==