bx-rest 0.0.11 → 0.0.13

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.
package/README.md CHANGED
@@ -2,23 +2,11 @@
2
2
 
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.0.0.
4
4
 
5
- ## Code scaffolding
5
+ ## Info
6
6
 
7
- Run `ng generate component component-name --project bx-rest` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project bx-rest`.
8
- > Note: Don't forget to add `--project bx-rest` or else it will be added to the default project in your `angular.json` file.
7
+ This is a test package and it doesn't work
9
8
 
10
- ## Build
9
+ ## Plan
11
10
 
12
- Run `ng build bx-rest` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build bx-rest`, go to the dist folder `cd dist/bx-rest` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test bx-rest` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
11
+ Make it work, and for this you need to throw the settings when it is requested
12
+
@@ -2,8 +2,16 @@ import { of, take } from 'rxjs';
2
2
  import { first, map, mergeMap, tap } from 'rxjs/operators';
3
3
  import clone from 'just-clone';
4
4
  import compare from 'just-compare';
5
+ import HttpBXServices from '../../services/http/HttpBX';
5
6
  import { loadAll, saveArr, saveIDLoadedDepartment, saveSelf } from '../../store/users';
7
+ // import DateTrace from 'bx-rest/services/api/trace/metods/date'
8
+ import SnackBarService from '../../services/snack-bar/snack-bar.service';
6
9
  import { $get, $list, $search, $update, $user } from '../../consts/part-name-metods';
10
+ import { Injectable } from '@angular/core';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@ngrx/store";
13
+ import * as i2 from "../../services/map/rest/user";
14
+ import * as i3 from "@angular/common";
7
15
  export class BXRestUser {
8
16
  constructor(http, snackBar,
9
17
  // private img: ImgServices,
@@ -260,4 +268,12 @@ export class BXRestUser {
260
268
  return this.http.get(this.url.admin).pipe(map(v => this.http.mapResult(v)));
261
269
  }
262
270
  }
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QvdXNlci91c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBTWxDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBYyxNQUFNLG1CQUFtQixDQUFBO0FBUWxHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFHcEYsTUFBTSxPQUFPLFVBQVU7SUF1Qm5CLFlBQ1ksSUFBb0IsRUFDcEIsUUFBeUI7SUFDbEMsNEJBQTRCO0lBQzNCLCtCQUErQjtJQUN2QixLQUFtQyxFQUNuQyxPQUFpQyxFQUNqQyxRQUFrQjtRQU5sQixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUd6QixVQUFLLEdBQUwsS0FBSyxDQUE4QjtRQUNuQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQUNqQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBN0I5QixRQUFHLEdBQUc7WUFDRixLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQ3ZCLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDbEIsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztZQUN4QixNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUs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SSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQTtTQUN2QjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO1NBQ3ZDO1FBRUQsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDdEQsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFBO1NBQzlCO0lBQ0wsQ0FBQztJQUVELDBCQUEwQjtRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF3QyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ3JGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25DLENBQUE7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXlCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNuQyxDQUFBO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRha2UgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgbWVyZ2VNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnXG5pbXBvcnQgeyBpQlhHZXRQYXJhbSB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvZ2V0J1xuaW1wb3J0IEh0dHBCWFNlcnZpY2VzIGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvSHR0cEJYJ1xuaW1wb3J0IFVzZXJGaWx0ZXJTZWFyY2ggZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdXNlci9Vc2VyRmlsdGVyU2VhcmNoJ1xuLy8gaW1wb3J0IEltZ1NlcnZpY2VzIGZyb20gJ2J4LXJlc3Qvc2VydmljZXMvYXBpL2JpdHJpeC9jdXN0b20vaW1nJ1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCB7IGxvYWRBbGwsIHNhdmVBcnIsIHNhdmVJRExvYWRlZERlcGFydG1lbnQsIHNhdmVTZWxmLCBzdG9yZVVzZXJzIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlcnMnXG5pbXBvcnQgeyBpQ3VzdG9tVXNlckZpZWxkSW5mbyB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvQ3VzdG9tVXNlckZpZWxkSW5mbydcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQml0cml4QXBpVXNlck1hcFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFwL3Jlc3QvdXNlcidcbi8vIGltcG9ydCBEYXRlVHJhY2UgZnJvbSAnYngtcmVzdC9zZXJ2aWNlcy9hcGkvdHJhY2UvbWV0b2RzL2RhdGUnXG5pbXBvcnQgU25hY2tCYXJTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSdcbmltcG9ydCBpSHR0cEFuc3dlckJYIGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvaHR0cEFuc3dlckJYJ1xuaW1wb3J0IHsgaUJYUmVzdFVzZXIsIGlCWFJlc3RVc2VySHR0cCwgaUJYUmVzdFVzZXJIdHRwRmllbGQgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXInXG5pbXBvcnQgeyAkZ2V0LCAkbGlzdCwgJHNlYXJjaCwgJHVwZGF0ZSwgJHVzZXIgfSBmcm9tICcuLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldG9kcydcbmltcG9ydCB7IFVzZXJGaWx0ZXIgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXJGaWx0ZXInXG5cbmV4cG9ydCBjbGFzcyBCWFJlc3RVc2VyIHtcbiAgICB1cmwgPSB7XG4gICAgICAgIGFkbWluOiBbJHVzZXIsICdhZG1pbiddLFxuICAgICAgICBnZXQ6IFskdXNlciwgJGdldF0sXG4gICAgICAgIHNlbGY6IFskdXNlciwgJ2N1cnJlbnQnXSxcbiAgICAgICAgdXBkYXRlOiBbJHVzZXIsICR1cGRhdGVdLFxuICAgICAgICBzZWFyY2g6IFskdXNlciwgJHNlYXJjaF0sXG4gICAgICAgIGFjY2VzczogWyR1c2VyLCAnYWNjZXNzJ10sIC8vIFUxIC0g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBIGlkID0xXG4gICAgICAgIC8vIEFVIC0g0LLRgdC1INCw0LLRgtC+0YDQuNC30L7QstCw0L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C4XG4gICAgICAgIC8vIEQxIC0g0L/QvtC00YDQsNC30LTQtdC70LXQvdC40LUg0YEgaWQ9MVxuICAgICAgICAvLyBHMSAtINCz0YDRg9C/0L/QsCDRgSBpZD0xXG4gICAgICAgIGZpZWxkczogWyR1c2VyLCAnZmllbGRzJ10sXG4gICAgICAgIHVzZXJmaWVsZDoge1xuICAgICAgICAgICAgbGlzdDogWyR1c2VyLCAndXNlcmZpZWxkJywgJGxpc3RdXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWY6IHsgcGFyYW1zOiB7IEFDVElWRTogMSwgc3RhcnQ6IDAgfSB9ID0ge1xuICAgICAgICBwYXJhbXM6IHtBQ1RJVkU6IDEsIHN0YXJ0OiAwfVxuICAgIH1cblxuICAgIHVzZXIkOiBPYnNlcnZhYmxlPHN0b3JlVXNlcnM+XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQlhTZXJ2aWNlcyxcbiAgICAgICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgIC8vIHByaXZhdGUgaW1nOiBJbWdTZXJ2aWNlcyxcbiAgICAgICAgLy9wcml2YXRlIGRhdGVUcmFjZTogRGF0ZVRyYWNlLFxuICAgICAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTx7IHVzZXJzOiBzdG9yZVVzZXJzIH0+LFxuICAgICAgICBwcml2YXRlIHVzZXJNYXA6IEJpdHJpeEFwaVVzZXJNYXBTZXJ2aWNlcyxcbiAgICAgICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGVcbiAgICApIHtcbiAgICAgICAgdGhpcy51c2VyJCA9IHRoaXMuc3RvcmUuc2VsZWN0KCd1c2VycycpXG4gICAgfVxuXG4gICAgZ2V0KHBhcmFtczogaUJYR2V0UGFyYW0gPSB7fSk6IE9ic2VydmFibGU8aUh0dHBBbnN3ZXJCWDxpQlhSZXN0VXNlckh0dHBbXT4gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IGNvcHlQYXJhbXMgPSBjbG9uZShwYXJhbXMpXG4gICAgICAgIHRoaXMuc2V0RGVmUGFyYW0oY29weVBhcmFtcylcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGlIdHRwQW5zd2VyQlg8aUJYUmVzdFVzZXJIdHRwW10+IHwgdW5kZWZpbmVkPlxuICAgICAgICAodGhpcy51cmwuZ2V0LCBjb3B5UGFyYW1zLCAn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5JylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgJiYgdi5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUFyclVzZXIodi5yZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgIH1cblxuICAgIGdldE9uZVBhZ2UocGFnZTogbnVtYmVyID0gMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoe3N0YXJ0OiAocGFnZSAtIDEpICogNTB9KS5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXMgPSB0aGlzLmh0dHAubWFwUmVzdWx0KHYpXG4gICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzLm1hcChyID0+IHRoaXMudXNlck1hcC5IdHRwVG9CWChyKSkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRCeUlEKGlkOiBudW1iZXIsIHJlbG9hZCA9IHRydWUpOiBPYnNlcnZhYmxlPGlCWFJlc3RVc2VyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ5SURzKFtpZF0sIHJlbG9hZCkucGlwZShtYXAodiA9PiAodiAmJiB2Lmxlbmd0aCkgPyB2WzBdIDogdW5kZWZpbmVkKSlcbiAgICB9XG5cbiAgICBnZXRCeUlEcyhpZHM6IG51bWJlcltdLCByZWxvYWQgPSB0cnVlKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlcltdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlkcyA9IEFycmF5LmZyb20obmV3IFNldChpZHMpKVxuICAgICAgICByZXR1cm4gdGhpcy51c2VyJC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1lcmdlTWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaW5kID0gdi5kYXRhLmZpbHRlcihpID0+IGlkcy5pbmNsdWRlcyhpLklEKSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmQgJiYgZmluZC5sZW5ndGggPT09IGlkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmaW5kKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFsbCh7SUQ6IGlkcywgQUNUSVZFOiAyfSkucGlwZShtYXAodiA9PiAodiAmJiB2Lmxlbmd0aCkgPyB2IDogdW5kZWZpbmVkKSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRTZWxmKHVwZGF0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh1cGRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGZIdHRwKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVzZXIkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAodiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHYuc2VsZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHYuc2VsZilcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGZIdHRwKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlbGZIdHRwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cD4+XG4gICAgICAgICh0aGlzLnVybC5zZWxmLCB7fSwgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L/QvtC70YPRh9C40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodiAmJiB2LnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlck1hcC5IdHRwVG9CWCh2LnJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzYXZlU2VsZih7c2VsZjogdn0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgYWNjZXNzKGFjY2Vzczogc3RyaW5nW10sIHRleHRFcnJvciA9ICfQndC1INGD0LTQsNC70L7RgdGMINC/0L7Qu9GD0YfQuNGC0Ywg0L/RgNCw0LLQsCcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxib29sZWFuPiB8IHVuZGVmaW5lZD4odGhpcy51cmwuYWNjZXNzLCB7QUNDRVNTOiBhY2Nlc3N9LCB0ZXh0RXJyb3IpLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiB0aGlzLmh0dHAubWFwUmVzdWx0KHYpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0QnlEZXBhcnRtZW50KGlkOiBudW1iZXJbXSB8IG51bWJlcik6IE9ic2VydmFibGU8aUJYUmVzdFVzZXIgW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgaWRzOiBudW1iZXJbXSA9ICh0eXBlb2YgaWQgPT09ICdudW1iZXInKSA/IFtpZF0gOiBpZFxuICAgICAgICByZXR1cm4gdGhpcy51c2VyJC5waXBlKFxuICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgIG1lcmdlTWFwKFxuICAgICAgICAgICAgICAgIHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodi5sb2FkLmFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGNsb25lKHYuZGF0YS5maWx0ZXIoaSA9PiBpZHMuZmluZChpZCA9PiBpLlVGX0RFUEFSVE1FTlQuaW5jbHVkZXMoaWQpKSkpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHMuZXZlcnkoaSA9PiB2LmxvYWQuZGVwYXJ0bWVudC5pbmNsdWRlcyhpKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjbG9uZSh2LmRhdGEuZmlsdGVyKGkgPT4gaWRzLmZpbmQoaWQgPT4gaS5VRl9ERVBBUlRNRU5ULmluY2x1ZGVzKGlkKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGwoe1VGX0RFUEFSVE1FTlQ6IGlkc30pLnBpcGUodGFwKF8gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzYXZlSURMb2FkZWREZXBhcnRtZW50KHtpZDogaWRzfSkpXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRBbGwocGFyYW1zOiBpQlhHZXRQYXJhbSA9IHt9KTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlciBbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBjbG9uZSh0aGlzLmRlZi5wYXJhbXMpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzYXZlQWxsVXNlciA9IGNvbXBhcmUocGFyYW1zLCB0aGlzLmRlZi5wYXJhbXMpXG4gICAgICAgIHJldHVybiB0aGlzLnVzZXIkLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWVyZ2VNYXAodiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHYubG9hZC5hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmUodGhpcy5kZWYucGFyYW1zLCBwYXJhbXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY2xvbmUodi5kYXRhKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVuZEFycmF5KHBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgJiYgdi5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2wgPSBjbG9uZSh2LnJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlQXJyVXNlcihjbClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAodiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHYgJiYgdi5sZW5ndGggJiYgc2F2ZUFsbFVzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChsb2FkQWxsKHtsb2FkOiB0cnVlfSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmFtcy5zdGFydCA9IHRoaXMuZGVmLnBhcmFtcy5zdGFydFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldEFsbEJ5UGVyc29uYWxCaXJ0aGRheShkYXk6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCwgbW9udGg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCwgY2hlY2tXZWVrZW5kID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC50aW1lTm93T25TZXJ2ZXIoKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRheVNlbnQgPSAoZGF5KSA/IGRheSA6IGRhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGRhdGUuZ2V0RnVsbFllYXIoKSArIDFcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vbnRoU2VudCA9IChtb250aCkgPyBtb250aCA6IGRhdGUuZ2V0TW9udGgoKSArIDFcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFycjogc3RyaW5nW10gPSBBcnJheS5mcm9tKEFycmF5KDIwMCkua2V5cygpKS5tYXAoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydC0tXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoc3RhcnQsIG1vbnRoU2VudCAtIDEsIGRheVNlbnQpLCAnWVlZWS1NTS1kZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJlcykgPyByZXMgOiAnJ1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiDQo9C/0YDQvtGB0YLQuNGC0YxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrV2Vla2VuZCAmJiBkYXRlLmdldERheSgpID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGRhdGUuZ2V0RnVsbFllYXIoKSArIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LmZyb20oQXJyYXkoMjAwKS5rZXlzKCkpLm1hcChfID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoc3RhcnQsIG1vbnRoU2VudCAtIDEsIGRheVNlbnQgLSAxKSwgJ1lZWVktTU0tZGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJlcykgPyByZXMgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGRhdGUuZ2V0RnVsbFllYXIoKSArIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LmZyb20oQXJyYXkoMjAwKS5rZXlzKCkpLm1hcChfID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0obmV3IERhdGUoc3RhcnQsIG1vbnRoU2VudCAtIDEsIGRheVNlbnQgLSAyKSwgJ1lZWVktTU0tZGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHJlcykgPyByZXMgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsKHtQRVJTT05BTF9CSVJUSERBWTogYXJyfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci53YXJuaW5nKCfQndC1INGD0LTQsNC70L7RgdGMINC/0L7Qu9GD0YfQuNGC0Ywg0LLRgNC10LzRjyDRgdC10YDQstC10YDQsCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBzYXZlQXJyVXNlcih1c2VyczogaUJYUmVzdFVzZXJIdHRwW10pIHtcbiAgICAgICAgbGV0IHJlc3VsdDogaUJYUmVzdFVzZXIgW10gPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IHVzZXIgb2YgdXNlcnMpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMudXNlck1hcC5IdHRwVG9CWCh1c2VyKSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNhdmVBcnIoe2FycjogcmVzdWx0fSkpXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHNlYXJjaChwYXJhbXM6IHN0cmluZyB8IFVzZXJGaWx0ZXJTZWFyY2gpOiBPYnNlcnZhYmxlPGlCWFJlc3RVc2VyIFtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW1zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcGFyYW1zID0ge0ZJTkQ6IHBhcmFtc31cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBhcmFtcy5BQ1RJVkUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcGFyYW1zLkFDVElWRSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPj4odGhpcy51cmwuc2VhcmNoLCBwYXJhbXMsICfQodC10YDQstC10YAg0L3QtSDQvtGC0LLQtdGH0LDQtdGCINC90LAg0LfQsNC/0YDQvtGBINC/0L7QuNGB0LrQsCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHYucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBSZXN1bHQgPSB0aGlzLmh0dHAubWFwUmVzdWx0KHYpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUFyclVzZXIobWFwUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgIH1cblxuICAgIGZpZWxkcygpOiBPYnNlcnZhYmxlPGlCWFJlc3RVc2VySHR0cEZpZWxkIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGlIdHRwQW5zd2VyQlg8aUJYUmVzdFVzZXJIdHRwRmllbGQ+Pih0aGlzLnVybC5maWVsZHMpLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiB0aGlzLmh0dHAubWFwUmVzdWx0KHYpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgdXBkYXRlKHVzZXI6IGlCWFJlc3RVc2VyLCBmaWVsZFVwZGF0ZTogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGlIdHRwQW5zd2VyQlg8aUJYUmVzdFVzZXJIdHRwW10+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChmaWVsZFVwZGF0ZSAmJiBmaWVsZFVwZGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBzZW5kRGF0YTogYW55ID0ge1xuICAgICAgICAgICAgICAgIElEOiB1c2VyLklELFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdXNlckJYID0gdGhpcy51c2VyTWFwLkJYdG9IdHRwKHVzZXIpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXJCWFtmaWVsZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZERhdGFbZmllbGRdID0gdXNlckJYW2ZpZWxkXVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuZXJyb3IoJ9Ce0LTQvdC+INC40Lcg0YPQutCw0LfQsNC90L3Ri9GFINC/0L7Qu9C10Lkg0L7RgtC/0YDQsNCy0LvQtdC90L4g0L3QtSDQstC10YDQvdC+JylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy51cmwudXBkYXRlLCBzZW5kRGF0YSwgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L7QsdC90L7QstC40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YEgSUQnICsgdXNlci5JRClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuZXJyb3IoJ9Cd0LUg0YPQutCw0LfQsNC90L4g0L3QuCDQvtC00L3QviDQv9C+0LvQtSDQtNC70Y8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8nKVxuICAgICAgICAgICAgcmV0dXJuIG9mKHt9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RW5kQXJyYXkocGFyYW1zOiBVc2VyRmlsdGVyID0ge30pOiBPYnNlcnZhYmxlPGlIdHRwQW5zd2VyQlg8aUJYUmVzdFVzZXJIdHRwW10+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldChwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLnJlc3VsdCAmJiB0eXBlb2YgaXRlbXMucmVzdWx0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnN0YXJ0ID0gaXRlbXMubmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW5kQXJyYXkocGFyYW1zKS5waXBlKG1hcCh2RW5kID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodkVuZCAmJiBpdGVtcy5yZXN1bHQgJiYgdkVuZC5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IFsuLi5pdGVtcy5yZXN1bHQsIC4uLnZFbmQucmVzdWx0XX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChpdGVtcykgPyBpdGVtcyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGl0ZW1zKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvLyBnZXRVcmxDb21wcmVzc2VkSW1hZ2UodXJsOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgLy8gICAgIHJldHVybiB0aGlzLmltZy5nZXRVcmxDb21wcmVzc2VkKHVybCwgd2lkdGgsIGhlaWdodClcbiAgICAvLyB9XG5cbiAgICBzZXREZWZQYXJhbShwYXJhbXM6IGlCWEdldFBhcmFtKSB7XG4gICAgICAgIGlmICghcGFyYW1zLmhhc093blByb3BlcnR5KCdBQ1RJVkUnKSkge1xuICAgICAgICAgICAgcGFyYW1zLkFDVElWRSA9IHRoaXMuZGVmLnBhcmFtcy5BQ1RJVkVcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zLkFDVElWRSAmJiBwYXJhbXMuQUNUSVZFID09PSAyKSB7XG4gICAgICAgICAgICBkZWxldGUgcGFyYW1zLkFDVElWRVxuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyYW1zLmhhc093blByb3BlcnR5KCdzdGFydCcpKSB7XG4gICAgICAgICAgICBwYXJhbXMuc3RhcnQgPSB0aGlzLmRlZi5wYXJhbXMuc3RhcnRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMuVUZfREVQQVJUTUVOVCAmJiAhcGFyYW1zLlVGX0RFUEFSVE1FTlQubGVuZ3RoKSB7XG4gICAgICAgICAgICBkZWxldGUgcGFyYW1zLlVGX0RFUEFSVE1FTlRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEluZm9BYm91dEN1c3RvbUZpZWxkc0JYKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGlDdXN0b21Vc2VyRmllbGRJbmZvW10+Pih0aGlzLnVybC51c2VyZmllbGQubGlzdCkucGlwZShcbiAgICAgICAgICAgIG1hcCh2ID0+IHRoaXMuaHR0cC5tYXBSZXN1bHQodikpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBpdElzQWRtaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGlIdHRwQW5zd2VyQlg8Ym9vbGVhbj4+KHRoaXMudXJsLmFkbWluKS5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gdGhpcy5odHRwLm1hcFJlc3VsdCh2KSlcbiAgICAgICAgKVxuICAgIH1cbn1cbiJdfQ==
271
+ BXRestUser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestUser, deps: [{ token: HttpBXServices }, { token: SnackBarService }, { token: i1.Store }, { token: i2.BitrixApiUserMapServices }, { token: i3.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
272
+ BXRestUser.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestUser, providedIn: 'root' });
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BXRestUser, decorators: [{
274
+ type: Injectable,
275
+ args: [{
276
+ providedIn: 'root'
277
+ }]
278
+ }], ctorParameters: function () { return [{ type: HttpBXServices }, { type: SnackBarService }, { type: i1.Store }, { type: i2.BitrixApiUserMapServices }, { type: i3.DatePipe }]; } });
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QvdXNlci91c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBRWxDLE9BQU8sY0FBYyxNQUFNLDRCQUE0QixDQUFBO0FBSXZELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBYyxNQUFNLG1CQUFtQixDQUFBO0FBSWxHLGlFQUFpRTtBQUNqRSxPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUd4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXBGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7O0FBSzFDLE1BQU0sT0FBTyxVQUFVO0lBdUJuQixZQUNZLElBQW9CLEVBQ3BCLFFBQXlCO0lBQ2xDLDRCQUE0QjtJQUMzQiwrQkFBK0I7SUFDdkIsS0FBbUMsRUFDbkMsT0FBaUMsRUFDakMsUUFBa0I7UUFObEIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFHekIsVUFBSyxHQUFMLEtBQUssQ0FBOEI7UUFDbkMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTdCOUIsUUFBRyxHQUFHO1lBQ0YsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFF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QU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7MERBbEJNLGNBQWMsWUFTZCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRha2UgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgbWVyZ2VNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnXG5pbXBvcnQgeyBpQlhHZXRQYXJhbSB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvZ2V0J1xuaW1wb3J0IEh0dHBCWFNlcnZpY2VzIGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvSHR0cEJYJ1xuaW1wb3J0IFVzZXJGaWx0ZXJTZWFyY2ggZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdXNlci9Vc2VyRmlsdGVyU2VhcmNoJ1xuLy8gaW1wb3J0IEltZ1NlcnZpY2VzIGZyb20gJ2J4LXJlc3Qvc2VydmljZXMvYXBpL2JpdHJpeC9jdXN0b20vaW1nJ1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSdcbmltcG9ydCB7IGxvYWRBbGwsIHNhdmVBcnIsIHNhdmVJRExvYWRlZERlcGFydG1lbnQsIHNhdmVTZWxmLCBzdG9yZVVzZXJzIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlcnMnXG5pbXBvcnQgeyBpQ3VzdG9tVXNlckZpZWxkSW5mbyB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXIvQ3VzdG9tVXNlckZpZWxkSW5mbydcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQml0cml4QXBpVXNlck1hcFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFwL3Jlc3QvdXNlcidcbi8vIGltcG9ydCBEYXRlVHJhY2UgZnJvbSAnYngtcmVzdC9zZXJ2aWNlcy9hcGkvdHJhY2UvbWV0b2RzL2RhdGUnXG5pbXBvcnQgU25hY2tCYXJTZXJ2aWNlIGZyb20gJy4uLy4uL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSdcbmltcG9ydCBpSHR0cEFuc3dlckJYIGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvaHR0cEFuc3dlckJYJ1xuaW1wb3J0IHsgaUJYUmVzdFVzZXIsIGlCWFJlc3RVc2VySHR0cCwgaUJYUmVzdFVzZXJIdHRwRmllbGQgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXInXG5pbXBvcnQgeyAkZ2V0LCAkbGlzdCwgJHNlYXJjaCwgJHVwZGF0ZSwgJHVzZXIgfSBmcm9tICcuLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldG9kcydcbmltcG9ydCB7IFVzZXJGaWx0ZXIgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC91c2VyL3VzZXJGaWx0ZXInXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQlhSZXN0VXNlciB7XG4gICAgdXJsID0ge1xuICAgICAgICBhZG1pbjogWyR1c2VyLCAnYWRtaW4nXSxcbiAgICAgICAgZ2V0OiBbJHVzZXIsICRnZXRdLFxuICAgICAgICBzZWxmOiBbJHVzZXIsICdjdXJyZW50J10sXG4gICAgICAgIHVwZGF0ZTogWyR1c2VyLCAkdXBkYXRlXSxcbiAgICAgICAgc2VhcmNoOiBbJHVzZXIsICRzZWFyY2hdLFxuICAgICAgICBhY2Nlc3M6IFskdXNlciwgJ2FjY2VzcyddLCAvLyBVMSAtINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSBpZCA9MVxuICAgICAgICAvLyBBVSAtINCy0YHQtSDQsNCy0YLQvtGA0LjQt9C+0LLQsNC90L3Ri9C1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuFxuICAgICAgICAvLyBEMSAtINC/0L7QtNGA0LDQt9C00LXQu9C10L3QuNC1INGBIGlkPTFcbiAgICAgICAgLy8gRzEgLSDQs9GA0YPQv9C/0LAg0YEgaWQ9MVxuICAgICAgICBmaWVsZHM6IFskdXNlciwgJ2ZpZWxkcyddLFxuICAgICAgICB1c2VyZmllbGQ6IHtcbiAgICAgICAgICAgIGxpc3Q6IFskdXNlciwgJ3VzZXJmaWVsZCcsICRsaXN0XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVmOiB7IHBhcmFtczogeyBBQ1RJVkU6IDEsIHN0YXJ0OiAwIH0gfSA9IHtcbiAgICAgICAgcGFyYW1zOiB7QUNUSVZFOiAxLCBzdGFydDogMH1cbiAgICB9XG5cbiAgICB1c2VyJDogT2JzZXJ2YWJsZTxzdG9yZVVzZXJzPlxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cEJYU2VydmljZXMsXG4gICAgICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAvLyBwcml2YXRlIGltZzogSW1nU2VydmljZXMsXG4gICAgICAgIC8vcHJpdmF0ZSBkYXRlVHJhY2U6IERhdGVUcmFjZSxcbiAgICAgICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8eyB1c2Vyczogc3RvcmVVc2VycyB9PixcbiAgICAgICAgcHJpdmF0ZSB1c2VyTWFwOiBCaXRyaXhBcGlVc2VyTWFwU2VydmljZXMsXG4gICAgICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXNlciQgPSB0aGlzLnN0b3JlLnNlbGVjdCgndXNlcnMnKVxuICAgIH1cblxuICAgIGdldChwYXJhbXM6IGlCWEdldFBhcmFtID0ge30pOiBPYnNlcnZhYmxlPGlIdHRwQW5zd2VyQlg8aUJYUmVzdFVzZXJIdHRwW10+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBjb3B5UGFyYW1zID0gY2xvbmUocGFyYW1zKVxuICAgICAgICB0aGlzLnNldERlZlBhcmFtKGNvcHlQYXJhbXMpXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPiB8IHVuZGVmaW5lZD5cbiAgICAgICAgKHRoaXMudXJsLmdldCwgY29weVBhcmFtcywgJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L/QvtC70YPRh9C40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuScpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAodiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHYucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVBcnJVc2VyKHYucmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRPbmVQYWdlKHBhZ2U6IG51bWJlciA9IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KHtzdGFydDogKHBhZ2UgLSAxKSAqIDUwfSkucGlwZShcbiAgICAgICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5odHRwLm1hcFJlc3VsdCh2KVxuICAgICAgICAgICAgICAgIHJldHVybiAocmVzKSA/IHJlcy5tYXAociA9PiB0aGlzLnVzZXJNYXAuSHR0cFRvQlgocikpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0QnlJRChpZDogbnVtYmVyLCByZWxvYWQgPSB0cnVlKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUlEcyhbaWRdLCByZWxvYWQpLnBpcGUobWFwKHYgPT4gKHYgJiYgdi5sZW5ndGgpID8gdlswXSA6IHVuZGVmaW5lZCkpXG4gICAgfVxuXG4gICAgZ2V0QnlJRHMoaWRzOiBudW1iZXJbXSwgcmVsb2FkID0gdHJ1ZSk6IE9ic2VydmFibGU8aUJYUmVzdFVzZXJbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQoaWRzKSlcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlciQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtZXJnZU1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmluZCA9IHYuZGF0YS5maWx0ZXIoaSA9PiBpZHMuaW5jbHVkZXMoaS5JRCkpXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5kICYmIGZpbmQubGVuZ3RoID09PSBpZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmluZClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGwoe0lEOiBpZHMsIEFDVElWRTogMn0pLnBpcGUobWFwKHYgPT4gKHYgJiYgdi5sZW5ndGgpID8gdiA6IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0U2VsZih1cGRhdGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxmSHR0cCgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyJC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodiAmJiB2LnNlbGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2LnNlbGYpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxmSHR0cCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTZWxmSHR0cCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxpQlhSZXN0VXNlckh0dHA+PlxuICAgICAgICAodGhpcy51cmwuc2VsZiwge30sICfQndC1INGD0LTQsNC70L7RgdGMINC/0L7Qu9GD0YfQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYgJiYgdi5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVzZXJNYXAuSHR0cFRvQlgodi5yZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2F2ZVNlbGYoe3NlbGY6IHZ9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgIH1cblxuICAgIGFjY2VzcyhhY2Nlc3M6IHN0cmluZ1tdLCB0ZXh0RXJyb3IgPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMINC/0YDQsNCy0LAnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGlIdHRwQW5zd2VyQlg8Ym9vbGVhbj4gfCB1bmRlZmluZWQ+KHRoaXMudXJsLmFjY2Vzcywge0FDQ0VTUzogYWNjZXNzfSwgdGV4dEVycm9yKS5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gdGhpcy5odHRwLm1hcFJlc3VsdCh2KSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldEJ5RGVwYXJ0bWVudChpZDogbnVtYmVyW10gfCBudW1iZXIpOiBPYnNlcnZhYmxlPGlCWFJlc3RVc2VyIFtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSAodHlwZW9mIGlkID09PSAnbnVtYmVyJykgPyBbaWRdIDogaWRcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlciQucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtZXJnZU1hcChcbiAgICAgICAgICAgICAgICB2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYubG9hZC5hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjbG9uZSh2LmRhdGEuZmlsdGVyKGkgPT4gaWRzLmZpbmQoaWQgPT4gaS5VRl9ERVBBUlRNRU5ULmluY2x1ZGVzKGlkKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaWRzLmV2ZXJ5KGkgPT4gdi5sb2FkLmRlcGFydG1lbnQuaW5jbHVkZXMoaSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY2xvbmUodi5kYXRhLmZpbHRlcihpID0+IGlkcy5maW5kKGlkID0+IGkuVUZfREVQQVJUTUVOVC5pbmNsdWRlcyhpZCkpKSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsKHtVRl9ERVBBUlRNRU5UOiBpZHN9KS5waXBlKHRhcChfID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goc2F2ZUlETG9hZGVkRGVwYXJ0bWVudCh7aWQ6IGlkc30pKVxuICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0QWxsKHBhcmFtczogaUJYR2V0UGFyYW0gPSB7fSk6IE9ic2VydmFibGU8aUJYUmVzdFVzZXIgW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCkge1xuICAgICAgICAgICAgcGFyYW1zID0gY2xvbmUodGhpcy5kZWYucGFyYW1zKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2F2ZUFsbFVzZXIgPSBjb21wYXJlKHBhcmFtcywgdGhpcy5kZWYucGFyYW1zKVxuICAgICAgICByZXR1cm4gdGhpcy51c2VyJC5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1lcmdlTWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2LmxvYWQuYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJlKHRoaXMuZGVmLnBhcmFtcywgcGFyYW1zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGNsb25lKHYuZGF0YSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmRBcnJheShwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICYmIHYucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNsID0gY2xvbmUodi5yZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZUFyclVzZXIoY2wpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2ICYmIHYubGVuZ3RoICYmIHNhdmVBbGxVc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobG9hZEFsbCh7bG9hZDogdHJ1ZX0pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXJhbXMuc3RhcnQgPSB0aGlzLmRlZi5wYXJhbXMuc3RhcnRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRBbGxCeVBlcnNvbmFsQmlydGhkYXkoZGF5OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsIG1vbnRoOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsIGNoZWNrV2Vla2VuZCA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAudGltZU5vd09uU2VydmVyKCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKGRhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXlTZW50ID0gKGRheSkgPyBkYXkgOiBkYXRlLmdldERhdGUoKVxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb250aFNlbnQgPSAobW9udGgpID8gbW9udGggOiBkYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnI6IHN0cmluZ1tdID0gQXJyYXkuZnJvbShBcnJheSgyMDApLmtleXMoKSkubWFwKF8gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQtLVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKHN0YXJ0LCBtb250aFNlbnQgLSAxLCBkYXlTZW50KSwgJ1lZWVktTU0tZGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzog0KPQv9GA0L7RgdGC0LjRgtGMXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1dlZWtlbmQgJiYgZGF0ZS5nZXREYXkoKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5BcnJheS5mcm9tKEFycmF5KDIwMCkua2V5cygpKS5tYXAoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKHN0YXJ0LCBtb250aFNlbnQgLSAxLCBkYXlTZW50IC0gMSksICdZWVlZLU1NLWRkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAxXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5BcnJheS5mcm9tKEFycmF5KDIwMCkua2V5cygpKS5tYXAoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKHN0YXJ0LCBtb250aFNlbnQgLSAxLCBkYXlTZW50IC0gMiksICdZWVlZLU1NLWRkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChyZXMpID8gcmVzIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFsbCh7UEVSU09OQUxfQklSVEhEQVk6IGFycn0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIud2FybmluZygn0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMINCy0YDQtdC80Y8g0YHQtdGA0LLQtdGA0LAnKVxuICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgc2F2ZUFyclVzZXIodXNlcnM6IGlCWFJlc3RVc2VySHR0cFtdKSB7XG4gICAgICAgIGxldCByZXN1bHQ6IGlCWFJlc3RVc2VyIFtdID0gW11cbiAgICAgICAgZm9yIChjb25zdCB1c2VyIG9mIHVzZXJzKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnVzZXJNYXAuSHR0cFRvQlgodXNlcikpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzYXZlQXJyKHthcnI6IHJlc3VsdH0pKVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICBzZWFyY2gocGFyYW1zOiBzdHJpbmcgfCBVc2VyRmlsdGVyU2VhcmNoKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlciBbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHtGSU5EOiBwYXJhbXN9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuQUNUSVZFICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHBhcmFtcy5BQ1RJVkUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxpQlhSZXN0VXNlckh0dHBbXT4+KHRoaXMudXJsLnNlYXJjaCwgcGFyYW1zLCAn0KHQtdGA0LLQtdGAINC90LUg0L7RgtCy0LXRh9Cw0LXRgiDQvdCwINC30LDQv9GA0L7RgSDQv9C+0LjRgdC60LAnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodiAmJiB2LnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwUmVzdWx0ID0gdGhpcy5odHRwLm1hcFJlc3VsdCh2KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVBcnJVc2VyKG1hcFJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICB9XG5cbiAgICBmaWVsZHMoKTogT2JzZXJ2YWJsZTxpQlhSZXN0VXNlckh0dHBGaWVsZCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cEZpZWxkPj4odGhpcy51cmwuZmllbGRzKS5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gdGhpcy5odHRwLm1hcFJlc3VsdCh2KSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHVwZGF0ZSh1c2VyOiBpQlhSZXN0VXNlciwgZmllbGRVcGRhdGU6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoZmllbGRVcGRhdGUgJiYgZmllbGRVcGRhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgc2VuZERhdGE6IGFueSA9IHtcbiAgICAgICAgICAgICAgICBJRDogdXNlci5JRCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVzZXJCWCA9IHRoaXMudXNlck1hcC5CWHRvSHR0cCh1c2VyKVxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZFVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmICh1c2VyQlhbZmllbGRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbmREYXRhW2ZpZWxkXSA9IHVzZXJCWFtmaWVsZF1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLmVycm9yKCfQntC00L3QviDQuNC3INGD0LrQsNC30LDQvdC90YvRhSDQv9C+0LvQtdC5INC+0YLQv9GA0LDQstC70LXQvdC+INC90LUg0LLQtdGA0L3QvicpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMudXJsLnVwZGF0ZSwgc2VuZERhdGEsICfQndC1INGD0LTQsNC70L7RgdGMINC+0LHQvdC+0LLQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGBIElEJyArIHVzZXIuSUQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLmVycm9yKCfQndC1INGD0LrQsNC30LDQvdC+INC90Lgg0L7QtNC90L4g0L/QvtC70LUg0LTQu9GPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPJylcbiAgICAgICAgICAgIHJldHVybiBvZih7fSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEVuZEFycmF5KHBhcmFtczogVXNlckZpbHRlciA9IHt9KTogT2JzZXJ2YWJsZTxpSHR0cEFuc3dlckJYPGlCWFJlc3RVc2VySHR0cFtdPiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQocGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5yZXN1bHQgJiYgdHlwZW9mIGl0ZW1zLnJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zdGFydCA9IGl0ZW1zLm5leHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVuZEFycmF5KHBhcmFtcykucGlwZShtYXAodkVuZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZFbmQgJiYgaXRlbXMucmVzdWx0ICYmIHZFbmQucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBbLi4uaXRlbXMucmVzdWx0LCAuLi52RW5kLnJlc3VsdF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXRlbXMpID8gaXRlbXMgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihpdGVtcylcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLy8gZ2V0VXJsQ29tcHJlc3NlZEltYWdlKHVybDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5pbWcuZ2V0VXJsQ29tcHJlc3NlZCh1cmwsIHdpZHRoLCBoZWlnaHQpXG4gICAgLy8gfVxuXG4gICAgc2V0RGVmUGFyYW0ocGFyYW1zOiBpQlhHZXRQYXJhbSkge1xuICAgICAgICBpZiAoIXBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnQUNUSVZFJykpIHtcbiAgICAgICAgICAgIHBhcmFtcy5BQ1RJVkUgPSB0aGlzLmRlZi5wYXJhbXMuQUNUSVZFXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5BQ1RJVkUgJiYgcGFyYW1zLkFDVElWRSA9PT0gMikge1xuICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5BQ1RJVkVcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnc3RhcnQnKSkge1xuICAgICAgICAgICAgcGFyYW1zLnN0YXJ0ID0gdGhpcy5kZWYucGFyYW1zLnN0YXJ0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyYW1zLlVGX0RFUEFSVE1FTlQgJiYgIXBhcmFtcy5VRl9ERVBBUlRNRU5ULmxlbmd0aCkge1xuICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5VRl9ERVBBUlRNRU5UXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbmZvQWJvdXRDdXN0b21GaWVsZHNCWCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8aUh0dHBBbnN3ZXJCWDxpQ3VzdG9tVXNlckZpZWxkSW5mb1tdPj4odGhpcy51cmwudXNlcmZpZWxkLmxpc3QpLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiB0aGlzLmh0dHAubWFwUmVzdWx0KHYpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgaXRJc0FkbWluKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxpSHR0cEFuc3dlckJYPGJvb2xlYW4+Pih0aGlzLnVybC5hZG1pbikucGlwZShcbiAgICAgICAgICAgIG1hcCh2ID0+IHRoaXMuaHR0cC5tYXBSZXN1bHQodikpXG4gICAgICAgIClcbiAgICB9XG59XG4iXX0=