@yelon/bis 16.0.2 → 16.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/layout/layout-basic/interface.mjs +2 -7
  2. package/esm2022/layout/layout-basic/layout-basic.component.mjs +83 -54
  3. package/esm2022/layout/layout-nav/index.mjs +1 -2
  4. package/esm2022/layout/layout-nav/layout-nav-application.component.mjs +36 -33
  5. package/esm2022/layout/layout-nav/layout-nav-group.component.mjs +82 -77
  6. package/esm2022/layout/layout-nav/layout-nav-tile.component.mjs +3 -3
  7. package/esm2022/layout/widgets/yunzai-clear-storage.component.mjs +3 -3
  8. package/esm2022/layout/widgets/yunzai-fullscreen.component.mjs +3 -3
  9. package/esm2022/layout/widgets/yunzai-i18n.component.mjs +3 -3
  10. package/esm2022/layout/widgets/yunzai-notify.component.mjs +3 -3
  11. package/esm2022/layout/widgets/yunzai-theme-btn.component.mjs +3 -3
  12. package/esm2022/layout/widgets/yunzai-user.component.mjs +19 -19
  13. package/esm2022/layout/yunzai-act.guard.mjs +12 -12
  14. package/esm2022/layout/yunzai-auth.service.mjs +27 -95
  15. package/esm2022/layout/yunzai-default.interceptor.mjs +8 -16
  16. package/esm2022/layout/yunzai-i18n.service.mjs +15 -16
  17. package/esm2022/layout/yunzai-layout.module.mjs +10 -9
  18. package/esm2022/layout/yunzai-startup.service.mjs +29 -35
  19. package/fesm2022/layout.mjs +290 -336
  20. package/fesm2022/layout.mjs.map +1 -1
  21. package/layout/layout-basic/interface.d.ts +1 -15
  22. package/layout/layout-basic/layout-basic.component.d.ts +3 -6
  23. package/layout/layout-nav/index.d.ts +0 -1
  24. package/layout/layout-nav/layout-nav-application.component.d.ts +2 -4
  25. package/layout/layout-nav/layout-nav-group.component.d.ts +2 -4
  26. package/layout/widgets/yunzai-user.component.d.ts +1 -3
  27. package/layout/yunzai-act.guard.d.ts +1 -3
  28. package/layout/yunzai-auth.service.d.ts +2 -4
  29. package/layout/yunzai-i18n.service.d.ts +1 -3
  30. package/layout/yunzai-layout.module.d.ts +3 -2
  31. package/layout/yunzai-startup.service.d.ts +7 -10
  32. package/package.json +11 -11
  33. package/esm2022/layout/layout-nav/types.mjs +0 -2
  34. package/layout/layout-nav/types.d.ts +0 -15
@@ -89,8 +89,8 @@ class YunzaiThemBtnComponent {
89
89
  this.destroy$.next();
90
90
  this.destroy$.complete();
91
91
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiThemBtnComponent, deps: [{ token: i0.Renderer2 }, { token: i1.YunzaiConfigService }, { token: i2.Platform }, { token: DOCUMENT }, { token: i3.Directionality, optional: true }, { token: YUNZAI_THEME_BTN_KEYS }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: YunzaiThemBtnComponent, selector: "yunzai-theme-btn", inputs: { types: "types", devTips: "devTips", deployUrl: "deployUrl" }, ngImport: i0, template: `
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiThemBtnComponent, deps: [{ token: i0.Renderer2 }, { token: i1.YunzaiConfigService }, { token: i2.Platform }, { token: DOCUMENT }, { token: i3.Directionality, optional: true }, { token: YUNZAI_THEME_BTN_KEYS }], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.8", type: YunzaiThemBtnComponent, selector: "yunzai-theme-btn", inputs: { types: "types", devTips: "devTips", deployUrl: "deployUrl" }, ngImport: i0, template: `
94
94
  <div
95
95
  data-event-id="_nav_theme"
96
96
  class="yunzai-default__nav-item"
@@ -135,7 +135,7 @@ class YunzaiThemBtnComponent {
135
135
  `, isInline: true, dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i6.NzMenuItemDirective, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i7.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i7.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i8.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
136
  }
137
137
  export { YunzaiThemBtnComponent };
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiThemBtnComponent, decorators: [{
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiThemBtnComponent, decorators: [{
139
139
  type: Component,
140
140
  args: [{
141
141
  selector: 'yunzai-theme-btn',
@@ -1,35 +1,35 @@
1
1
  import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
2
2
  import { YA_SERVICE_TOKEN } from '@yelon/auth';
3
- import { WINDOW } from '@yelon/util';
3
+ import { useLocalStorageProjectInfo, useLocalStorageUser, WINDOW } from '@yelon/util';
4
4
  import { mergeBisConfig } from '../bis.config';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "ng-zorro-antd/message";
7
7
  import * as i2 from "@yelon/util";
8
- import * as i3 from "@yelon/cache";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "ng-zorro-antd/core/transition-patch";
11
- import * as i6 from "ng-zorro-antd/menu";
12
- import * as i7 from "ng-zorro-antd/dropdown";
13
- import * as i8 from "ng-zorro-antd/icon";
14
- import * as i9 from "ng-zorro-antd/avatar";
15
- import * as i10 from "@yelon/theme";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "ng-zorro-antd/core/transition-patch";
10
+ import * as i5 from "ng-zorro-antd/menu";
11
+ import * as i6 from "ng-zorro-antd/dropdown";
12
+ import * as i7 from "ng-zorro-antd/icon";
13
+ import * as i8 from "ng-zorro-antd/avatar";
14
+ import * as i9 from "@yelon/theme";
16
15
  class YunzaiUserComponent {
17
16
  constructor(injector, msg, tokenService,
18
17
  // @ts-ignore
19
- configService, cacheService) {
18
+ configService) {
20
19
  this.injector = injector;
21
20
  this.msg = msg;
22
21
  this.tokenService = tokenService;
23
22
  this.configService = configService;
24
- this.cacheService = cacheService;
25
23
  this.icon = '';
26
24
  this.username = '';
27
25
  this.menus = [];
28
26
  this.config = mergeBisConfig(configService);
29
27
  }
30
28
  ngOnInit() {
31
- const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });
32
- const user = this.cacheService.get('_yz_user', { mode: 'none' });
29
+ const [, getProjectInfo] = useLocalStorageProjectInfo();
30
+ const [, getUser] = useLocalStorageUser();
31
+ const projectInfo = getProjectInfo();
32
+ const user = getUser();
33
33
  this.username = user.realname ? user.realname : '未命名';
34
34
  this.icon = user.avatarId
35
35
  ? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
@@ -49,8 +49,8 @@ class YunzaiUserComponent {
49
49
  this.msg.error('该菜单没有配置链接!');
50
50
  }
51
51
  }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i2.YunzaiConfigService }, { token: i3.CacheService }], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.2", type: YunzaiUserComponent, selector: "yunzai-user", ngImport: i0, template: `
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i2.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.8", type: YunzaiUserComponent, selector: "yunzai-user", ngImport: i0, template: `
54
54
  <div
55
55
  class="yunzai-default__nav-item d-flex align-items-center px-sm"
56
56
  data-event-id="_nav_user"
@@ -82,10 +82,10 @@ class YunzaiUserComponent {
82
82
  </div>
83
83
  </div>
84
84
  </nz-dropdown-menu>
85
- `, isInline: true, dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i6.NzMenuItemDirective, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i6.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i7.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i7.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i9.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i5.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i5.NzMenuItemDirective, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i5.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i6.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i7.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i8.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "pipe", type: i9.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
86
  }
87
87
  export { YunzaiUserComponent };
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiUserComponent, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiUserComponent, decorators: [{
89
89
  type: Component,
90
90
  args: [{
91
91
  selector: 'yunzai-user',
@@ -127,5 +127,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImpor
127
127
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NzMessageService }, { type: undefined, decorators: [{
128
128
  type: Inject,
129
129
  args: [YA_SERVICE_TOKEN]
130
- }] }, { type: i2.YunzaiConfigService }, { type: i3.CacheService }]; } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC93aWRnZXRzL3l1bnphaS11c2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsTUFBTSxFQUE2QyxNQUFNLGFBQWEsQ0FBQztBQUdoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUFRL0MsTUFxQ2EsbUJBQW1CO0lBRzlCLFlBQ1UsUUFBa0IsRUFDbEIsR0FBcUIsRUFDSyxZQUEyQjtJQUM3RCxhQUFhO0lBQ0wsYUFBa0MsRUFDbEMsWUFBMEI7UUFMMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNLLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBRXJELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUtwQyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUxyQixJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBTUQsUUFBUTtRQUNOLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDaEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sb0JBQW9CLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0QsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTTtRQUNKLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLENBQUM7SUFDMUYsQ0FBQztJQUVELEVBQUUsQ0FBQyxJQUFZO1FBQ2IsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs4R0F4Q1UsbUJBQW1CLDBFQU1wQixnQkFBZ0I7a0dBTmYsbUJBQW1CLG1EQW5DcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUOztTQUdVLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQXJDL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQU9JLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFlBX1NFUlZJQ0VfVE9LRU4sIElUb2tlblNlcnZpY2UgfSBmcm9tICdAeWVsb24vYXV0aCc7XG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICdAeWVsb24vY2FjaGUnO1xuaW1wb3J0IHsgV0lORE9XLCBZdW56YWlCdXNpbmVzc0NvbmZpZywgWXVuemFpQ29uZmlnU2VydmljZSB9IGZyb20gJ0B5ZWxvbi91dGlsJztcbmltcG9ydCB7IE56TWVzc2FnZVNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4uL2Jpcy5jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJMaW5rIHtcbiAgaWNvbjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dW56YWktdXNlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC1zbVwiXG4gICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl91c2VyXCJcbiAgICAgIG56LWRyb3Bkb3duXG4gICAgICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgICAgIFtuekRyb3Bkb3duTWVudV09XCJ1c2VyTWVudVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInl6LXVzZXItbmFtZVwiPlxuICAgICAgICA8bnotYXZhdGFyIFtuelNyY109XCJpY29uXCIgbnpTaXplPVwic21hbGxcIiBjbGFzcz1cIm1yLXNtXCI+PC9uei1hdmF0YXI+XG4gICAgICAgIHt7IHVzZXJuYW1lIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bnotZHJvcGRvd24tbWVudSAjdXNlck1lbnU9XCJuekRyb3Bkb3duTWVudVwiPlxuICAgICAgPGRpdiBuei1tZW51IGNsYXNzPVwid2lkdGgtc21cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtZXZlbnQtaWQ9XCJfbmF2X3VzZXJcIlxuICAgICAgICAgIFthdHRyLmRhdGEtbmFtZV09XCJtLm5hbWUgfCBpMThuXCJcbiAgICAgICAgICBuei1tZW51LWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbSBvZiBtZW51c1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvKG0udXJsKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBuei1pY29uIFtuelR5cGVdPVwibS5pY29uXCIgY2xhc3M9XCJtci1zbVwiPjwvaT5cbiAgICAgICAgICB7eyBtLm5hbWUgfCBpMThuIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGkgbnotbWVudS1kaXZpZGVyPjwvbGk+XG4gICAgICAgIDxkaXYgZGF0YS1ldmVudC1pZD1cIl9uYXZfdXNlclwiIGRhdGEtbmFtZT1cIuazqOmUgOeZu+W9lVwiIG56LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5cbiAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImxvZ291dFwiIGNsYXNzPVwibXItc21cIj48L2k+XG4gICAgICAgICAge3sgJ2xvZ291dCcgfCBpMThuIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uei1kcm9wZG93bi1tZW51PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBZdW56YWlVc2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBjb25maWc6IFl1bnphaUJ1c2luZXNzQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgbXNnOiBOek1lc3NhZ2VTZXJ2aWNlLFxuICAgIEBJbmplY3QoWUFfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IElUb2tlblNlcnZpY2UsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogWXVuemFpQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VCaXNDb25maWcoY29uZmlnU2VydmljZSk7XG4gIH1cblxuICBpY29uOiBzdHJpbmcgPSAnJztcbiAgdXNlcm5hbWU6IHN0cmluZyA9ICcnO1xuICBtZW51czogVXNlckxpbmtbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHByb2plY3RJbmZvID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfcHJvamVjdF9pbmZvJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICB0aGlzLnVzZXJuYW1lID0gdXNlci5yZWFsbmFtZSA/IHVzZXIucmVhbG5hbWUgOiAn5pyq5ZG95ZCNJztcbiAgICB0aGlzLmljb24gPSB1c2VyLmF2YXRhcklkXG4gICAgICA/IGAke3RoaXMuY29uZmlnLmJhc2VVcmx9L2ZpbGVjZW50ZXIvZmlsZS8ke3VzZXIuYXZhdGFySWR9YFxuICAgICAgOiBgLi9hc3NldHMvdG1wL2ltZy9hdmF0YXIuanBnYDtcbiAgICB0aGlzLm1lbnVzID0gcHJvamVjdEluZm8ucHJvZmlsZUxpc3Q7XG4gIH1cblxuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgdGhpcy50b2tlblNlcnZpY2UuY2xlYXIoKTtcbiAgICB0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9jYXMtcHJveHkvYXBwL2xvZ291dGA7XG4gIH1cblxuICB0byhocmVmOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaHJlZikge1xuICAgICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5vcGVuKGhyZWYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1zZy5lcnJvcign6K+l6I+c5Y2V5rKh5pyJ6YWN572u6ZO+5o6lIScpO1xuICAgIH1cbiAgfVxufVxuIl19
130
+ }] }, { type: i2.YunzaiConfigService }]; } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC93aWRnZXRzL3l1bnphaS11c2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNuQixNQUFNLEVBR1AsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFRL0MsTUFxQ2EsbUJBQW1CO0lBRzlCLFlBQ1UsUUFBa0IsRUFDbEIsR0FBcUIsRUFDSyxZQUEyQjtJQUM3RCxhQUFhO0lBQ0wsYUFBa0M7UUFKbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNLLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBRXJELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUs1QyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUxyQixJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBTUQsUUFBUTtRQUNOLE1BQU0sQ0FBQyxFQUFDLGNBQWMsQ0FBQyxHQUFDLDBCQUEwQixFQUFFLENBQUE7UUFDcEQsTUFBTSxDQUFDLEVBQUMsT0FBTyxDQUFDLEdBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUN0QyxNQUFNLFdBQVcsR0FBRyxjQUFjLEVBQUcsQ0FBQTtRQUNyQyxNQUFNLElBQUksR0FBRyxPQUFPLEVBQUcsQ0FBQTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzRCxDQUFDLENBQUMsNkJBQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBeUIsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTTtRQUNKLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLENBQUM7SUFDMUYsQ0FBQztJQUVELEVBQUUsQ0FBQyxJQUFZO1FBQ2IsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs4R0F6Q1UsbUJBQW1CLDBFQU1wQixnQkFBZ0I7a0dBTmYsbUJBQW1CLG1EQW5DcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUOztTQUdVLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQXJDL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OzBCQU9JLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFlBX1NFUlZJQ0VfVE9LRU4sIElUb2tlblNlcnZpY2UgfSBmcm9tICdAeWVsb24vYXV0aCc7XG5pbXBvcnQge1xuICB1c2VMb2NhbFN0b3JhZ2VQcm9qZWN0SW5mbyxcbiAgdXNlTG9jYWxTdG9yYWdlVXNlcixcbiAgV0lORE9XLFxuICBZdW56YWlCdXNpbmVzc0NvbmZpZyxcbiAgWXVuemFpQ29uZmlnU2VydmljZVxufSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tZXNzYWdlJztcblxuaW1wb3J0IHsgbWVyZ2VCaXNDb25maWcgfSBmcm9tICcuLi9iaXMuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyTGluayB7XG4gIGljb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXVuemFpLXVzZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwieXVuemFpLWRlZmF1bHRfX25hdi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtc21cIlxuICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfdXNlclwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgbnpQbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXG4gICAgICBbbnpEcm9wZG93bk1lbnVdPVwidXNlck1lbnVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ5ei11c2VyLW5hbWVcIj5cbiAgICAgICAgPG56LWF2YXRhciBbbnpTcmNdPVwiaWNvblwiIG56U2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJtci1zbVwiPjwvbnotYXZhdGFyPlxuICAgICAgICB7eyB1c2VybmFtZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI3VzZXJNZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDxkaXYgbnotbWVudSBjbGFzcz1cIndpZHRoLXNtXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl91c2VyXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLW5hbWVdPVwibS5uYW1lIHwgaTE4blwiXG4gICAgICAgICAgbnotbWVudS1pdGVtXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG0gb2YgbWVudXNcIlxuICAgICAgICAgIChjbGljayk9XCJ0byhtLnVybClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgbnotaWNvbiBbbnpUeXBlXT1cIm0uaWNvblwiIGNsYXNzPVwibXItc21cIj48L2k+XG4gICAgICAgICAge3sgbS5uYW1lIHwgaTE4biB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxpIG56LW1lbnUtZGl2aWRlcj48L2xpPlxuICAgICAgICA8ZGl2IGRhdGEtZXZlbnQtaWQ9XCJfbmF2X3VzZXJcIiBkYXRhLW5hbWU9XCLms6jplIDnmbvlvZVcIiBuei1tZW51LWl0ZW0gKGNsaWNrKT1cImxvZ291dCgpXCI+XG4gICAgICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJsb2dvdXRcIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7ICdsb2dvdXQnIHwgaTE4biB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbnotZHJvcGRvd24tbWVudT5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgWXVuemFpVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgY29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG1zZzogTnpNZXNzYWdlU2VydmljZSxcbiAgICBASW5qZWN0KFlBX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBJVG9rZW5TZXJ2aWNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VCaXNDb25maWcoY29uZmlnU2VydmljZSk7XG4gIH1cblxuICBpY29uOiBzdHJpbmcgPSAnJztcbiAgdXNlcm5hbWU6IHN0cmluZyA9ICcnO1xuICBtZW51czogVXNlckxpbmtbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IFssZ2V0UHJvamVjdEluZm9dPXVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvKClcbiAgICBjb25zdCBbLGdldFVzZXJdPXVzZUxvY2FsU3RvcmFnZVVzZXIoKVxuICAgIGNvbnN0IHByb2plY3RJbmZvID0gZ2V0UHJvamVjdEluZm8oKSFcbiAgICBjb25zdCB1c2VyID0gZ2V0VXNlcigpIVxuICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyLnJlYWxuYW1lID8gdXNlci5yZWFsbmFtZSA6ICfmnKrlkb3lkI0nO1xuICAgIHRoaXMuaWNvbiA9IHVzZXIuYXZhdGFySWRcbiAgICAgID8gYCR7dGhpcy5jb25maWcuYmFzZVVybH0vZmlsZWNlbnRlci9maWxlLyR7dXNlci5hdmF0YXJJZH1gXG4gICAgICA6IGAuL2Fzc2V0cy90bXAvaW1nL2F2YXRhci5qcGdgO1xuICAgIHRoaXMubWVudXMgPSBwcm9qZWN0SW5mby5wcm9maWxlTGlzdCBhcyBVc2VyTGlua1tdO1xuICB9XG5cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuYmFzZVVybH0vY2FzLXByb3h5L2FwcC9sb2dvdXRgO1xuICB9XG5cbiAgdG8oaHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGhyZWYpIHtcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykub3BlbihocmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tc2cuZXJyb3IoJ+ivpeiPnOWNleayoeaciemFjee9rumTvuaOpSEnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,14 +1,12 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { deepCopy, log } from '@yelon/util';
2
+ import { deepCopy, log, useLocalStorageUser } from '@yelon/util';
3
3
  import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@yelon/util";
6
- import * as i2 from "@yelon/cache";
7
- import * as i3 from "@angular/router";
6
+ import * as i2 from "@angular/router";
8
7
  class ActGuard {
9
- constructor(configService, cacheService, pathToRegexp, router) {
8
+ constructor(configService, pathToRegexp, router) {
10
9
  this.configService = configService;
11
- this.cacheService = cacheService;
12
10
  this.pathToRegexp = pathToRegexp;
13
11
  this.router = router;
14
12
  this.bis = BUSINESS_DEFAULT_CONFIG;
@@ -17,9 +15,11 @@ class ActGuard {
17
15
  log('act: ');
18
16
  this.bis = mergeBisConfig(this.configService);
19
17
  log('act: config ', this.bis);
20
- const user = this.cacheService.get('_yz_user', { mode: 'none' });
18
+ const [, getUser] = useLocalStorageUser();
19
+ const user = getUser();
21
20
  log('act: user ', user);
22
- this.menus = deepCopy(user.menu).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
21
+ // @ts-ignore
22
+ this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
23
23
  log('act: menus ', this.menus);
24
24
  this.getAllLinks(this.menus, this.links);
25
25
  log('act: links ', this.links);
@@ -95,14 +95,14 @@ class ActGuard {
95
95
  }
96
96
  });
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ActGuard, deps: [{ token: i1.YunzaiConfigService }, { token: i2.CacheService }, { token: i1.PathToRegexpService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
99
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ActGuard, providedIn: 'root' }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: ActGuard, deps: [{ token: i1.YunzaiConfigService }, { token: i1.PathToRegexpService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
99
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: ActGuard, providedIn: 'root' }); }
100
100
  }
101
101
  export { ActGuard };
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ActGuard, decorators: [{
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: ActGuard, decorators: [{
103
103
  type: Injectable,
104
104
  args: [{
105
105
  providedIn: 'root'
106
106
  }]
107
- }], ctorParameters: function () { return [{ type: i1.YunzaiConfigService }, { type: i2.CacheService }, { type: i1.PathToRegexpService }, { type: i3.Router }]; } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFrRSxNQUFNLGFBQWEsQ0FBQztBQUc1RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQUV2RSxNQUdhLFFBQVE7SUFLbkIsWUFDVSxhQUFrQyxFQUNsQyxZQUEwQixFQUMxQixZQUFpQyxFQUNqQyxNQUFjO1FBSGQsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmhCLFFBQUcsR0FBeUIsdUJBQXVCLENBQUM7UUFDcEQsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFDeEIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQVEzQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkUsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFB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R1UsUUFBUTtrSEFBUixRQUFRLGNBRlAsTUFBTTs7U0FFUCxRQUFROzJGQUFSLFFBQVE7a0JBSHBCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgQ2FuQWN0aXZhdGUsXG4gIENhbkFjdGl2YXRlQ2hpbGQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICdAeWVsb24vY2FjaGUnO1xuaW1wb3J0IHsgTWVudSwgVXNlciB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBkZWVwQ29weSwgbG9nLCBZdW56YWlCdXNpbmVzc0NvbmZpZywgWXVuemFpQ29uZmlnU2VydmljZSwgUGF0aFRvUmVnZXhwU2VydmljZSB9IGZyb20gJ0B5ZWxvbi91dGlsJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHLCBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4vYmlzLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjdEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICBwcml2YXRlIGJpczogWXVuemFpQnVzaW5lc3NDb25maWcgPSBCVVNJTkVTU19ERUZBVUxUX0NPTkZJRztcbiAgcHJpdmF0ZSBtZW51czogTnpTYWZlQW55W10gPSBbXTtcbiAgcHJpdmF0ZSBsaW5rczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIHBhdGhUb1JlZ2V4cDogUGF0aFRvUmVnZXhwU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIGxvZygnYWN0OiAnKTtcbiAgICB0aGlzLmJpcyA9IG1lcmdlQmlzQ29uZmlnKHRoaXMuY29uZmlnU2VydmljZSk7XG4gICAgbG9nKCdhY3Q6IGNvbmZpZyAnLCB0aGlzLmJpcyk7XG4gICAgY29uc3QgdXNlcjogVXNlciA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBsb2coJ2FjdDogdXNlciAnLCB1c2VyKTtcbiAgICB0aGlzLm1lbnVzID0gZGVlcENvcHkodXNlci5tZW51KS5maWx0ZXIoXG4gICAgICAobTogTWVudSkgPT4gbS5zeXN0ZW1Db2RlICYmIG0uc3lzdGVtQ29kZSA9PT0gdGhpcy5iaXMuc3lzdGVtQ29kZVxuICAgICkgYXMgTWVudVtdO1xuICAgIGxvZygnYWN0OiBtZW51cyAnLCB0aGlzLm1lbnVzKTtcbiAgICB0aGlzLmdldEFsbExpbmtzKHRoaXMubWVudXMsIHRoaXMubGlua3MpO1xuICAgIGxvZygnYWN0OiBsaW5rcyAnLCB0aGlzLmxpbmtzKTtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlKFxuICAgIF86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlICcsIHN0YXRlKTtcbiAgICBpZiAodGhpcy5wcmVIYW5kbGUoc3RhdGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSBjaGlsZCBwcmVoYW5kbGUgc3VjY2VzcycpO1xuICAgIGxldCBjYW5hY3RpdmF0ZSA9IGZhbHNlO1xuICAgIHRoaXMubGlua3MuZm9yRWFjaCgobGluazogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCByZWdleHA6IFJlZ0V4cCA9IHRoaXMucGF0aFRvUmVnZXhwLnN0cmluZ1RvUmVnZXhwKGxpbmssIG51bGwsIG51bGwpO1xuICAgICAgbG9nKGBhY3Q6ICR7bGlua30gdGVzdCAke3N0YXRlLnVybC5zcGxpdCgnPycpWzBdfWApO1xuICAgICAgaWYgKHJlZ2V4cC50ZXN0KHN0YXRlLnVybC5zcGxpdCgnPycpWzBdKSkge1xuICAgICAgICBjYW5hY3RpdmF0ZSA9IHRydWU7XG4gICAgICAgIGxvZyhgYWN0OiB0ZXN0IHZhbHVlICR7Y2FuYWN0aXZhdGV9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY2FuYWN0aXZhdGUpIHtcbiAgICAgIGxvZyhgYWN0OiB0ZXN0IHN1Y2Vzc2ApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZyhgYWN0OiB0ZXN0IGVycm9yYCk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Rpc3BsYXlJbmRleCddKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgIF86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlIGNoaWxkICcsIHN0YXRlKTtcbiAgICBpZiAodGhpcy5wcmVIYW5kbGUoc3RhdGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSBjaGlsZCBwcmVoYW5kbGUgc3VjY2VzcycpO1xuXG4gICAgbGV0IGNhbmFjdGl2YXRlID0gZmFsc2U7XG4gICAgdGhpcy5saW5rcy5mb3JFYWNoKChsaW5rOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZ2V4cDogUmVnRXhwID0gdGhpcy5wYXRoVG9SZWdleHAuc3RyaW5nVG9SZWdleHAobGluaywgbnVsbCwgbnVsbCk7XG4gICAgICBpZiAocmVnZXhwLnRlc3Qoc3RhdGUudXJsLnNwbGl0KCc/JylbMF0pKSB7XG4gICAgICAgIGxvZyhgYWN0OiAke2xpbmt9IHRlc3QgJHtzdGF0ZS51cmwuc3BsaXQoJz8nKVswXX1gKTtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGNhbmFjdGl2YXRlKSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBzdWNlc3NgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBlcnJvcmApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkaXNwbGF5SW5kZXgnXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJlSGFuZGxlKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXRlLnVybC5pbmNsdWRlcygnZXJyb3InKSB8fFxuICAgICAgc3RhdGUudXJsLmluY2x1ZGVzKCdleGNlcHRpb24nKSB8fFxuICAgICAgc3RhdGUudXJsLmluY2x1ZGVzKCdkaXNwbGF5SW5kZXgnKSB8fFxuICAgICAgc3RhdGUudXJsID09PSAnJyB8fFxuICAgICAgc3RhdGUudXJsID09PSBudWxsIHx8XG4gICAgICBzdGF0ZS51cmwgPT09ICcvJyB8fFxuICAgICAgc3RhdGUudXJsLmluY2x1ZGVzKCdpZnJhbWVQYWdlJylcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsTGlua3MobWVudTogTWVudVtdLCBsaW5rczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBtZW51LmZvckVhY2goKHNpZGVyOiBNZW51KSA9PiB7XG4gICAgICBpZiAoc2lkZXIubGluaykge1xuICAgICAgICBsaW5rcy5wdXNoKHNpZGVyLmxpbmspO1xuICAgICAgfVxuICAgICAgaWYgKHNpZGVyLmNoaWxkcmVuICYmIHNpZGVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nZXRBbGxMaW5rcyhzaWRlci5jaGlsZHJlbiwgbGlua3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
107
+ }], ctorParameters: function () { return [{ type: i1.YunzaiConfigService }, { type: i1.PathToRegexpService }, { type: i2.Router }]; } });
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBWXpDLE9BQU8sRUFDSCxRQUFRLEVBQ1IsR0FBRyxFQUlILG1CQUFtQixFQUN0QixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUMsdUJBQXVCLEVBQUUsY0FBYyxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7O0FBRXJFLE1BR2EsUUFBUTtJQUtqQixZQUNZLGFBQWtDLEVBQ2xDLFlBQWlDLEVBQ2pDLE1BQWM7UUFGZCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQbEIsUUFBRyxHQUF5Qix1QkFBdUIsQ0FBQztRQUNwRCxVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUN4QixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBT3pCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxDQUFBO1FBQ3pDLE1BQU0sSUFBSSxHQUFlLE9BQU8sRUFBRyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEIsYUFBYTtRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNoRCxDQUFDLENB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LFFBQVEsY0FGTCxNQUFNOztTQUVULFFBQVE7MkZBQVIsUUFBUTtrQkFIcEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIENhbkFjdGl2YXRlLFxuICAgIENhbkFjdGl2YXRlQ2hpbGQsXG4gICAgUm91dGVyLFxuICAgIFJvdXRlclN0YXRlU25hcHNob3QsXG4gICAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZW51fSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgICBkZWVwQ29weSxcbiAgICBsb2csXG4gICAgWXVuemFpQnVzaW5lc3NDb25maWcsXG4gICAgWXVuemFpQ29uZmlnU2VydmljZSxcbiAgICBQYXRoVG9SZWdleHBTZXJ2aWNlLFxuICAgIHVzZUxvY2FsU3RvcmFnZVVzZXIsIFl1bnphaVVzZXJcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHtOelNhZmVBbnl9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7QlVTSU5FU1NfREVGQVVMVF9DT05GSUcsIG1lcmdlQmlzQ29uZmlnfSBmcm9tICcuL2Jpcy5jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjdEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xuICAgIHByaXZhdGUgYmlzOiBZdW56YWlCdXNpbmVzc0NvbmZpZyA9IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHO1xuICAgIHByaXZhdGUgbWVudXM6IE56U2FmZUFueVtdID0gW107XG4gICAgcHJpdmF0ZSBsaW5rczogc3RyaW5nW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcGF0aFRvUmVnZXhwOiBQYXRoVG9SZWdleHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIGxvZygnYWN0OiAnKTtcbiAgICAgICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgICAgICBsb2coJ2FjdDogY29uZmlnICcsIHRoaXMuYmlzKTtcbiAgICAgICAgY29uc3QgWywgZ2V0VXNlcl0gPSB1c2VMb2NhbFN0b3JhZ2VVc2VyKClcbiAgICAgICAgY29uc3QgdXNlcjogWXVuemFpVXNlciA9IGdldFVzZXIoKSE7XG4gICAgICAgIGxvZygnYWN0OiB1c2VyICcsIHVzZXIpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMubWVudXMgPSBkZWVwQ29weSh1c2VyLm1lbnUgYXMgYW55IHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAobTogTWVudSkgPT4gbS5zeXN0ZW1Db2RlICYmIG0uc3lzdGVtQ29kZSA9PT0gdGhpcy5iaXMuc3lzdGVtQ29kZVxuICAgICAgICApIGFzIE1lbnVbXTtcbiAgICAgICAgbG9nKCdhY3Q6IG1lbnVzICcsIHRoaXMubWVudXMpO1xuICAgICAgICB0aGlzLmdldEFsbExpbmtzKHRoaXMubWVudXMsIHRoaXMubGlua3MpO1xuICAgICAgICBsb2coJ2FjdDogbGlua3MgJywgdGhpcy5saW5rcyk7XG4gICAgfVxuXG4gICAgY2FuQWN0aXZhdGUoXG4gICAgICAgIF86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICAgICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSAnLCBzdGF0ZSk7XG4gICAgICAgIGlmICh0aGlzLnByZUhhbmRsZShzdGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxvZygnYWN0OiBjYW4gYWN0aXZhdGUgY2hpbGQgcHJlaGFuZGxlIHN1Y2Nlc3MnKTtcbiAgICAgICAgbGV0IGNhbmFjdGl2YXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGlua3MuZm9yRWFjaCgobGluazogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWdleHA6IFJlZ0V4cCA9IHRoaXMucGF0aFRvUmVnZXhwLnN0cmluZ1RvUmVnZXhwKGxpbmssIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgbG9nKGBhY3Q6ICR7bGlua30gdGVzdCAke3N0YXRlLnVybC5zcGxpdCgnPycpWzBdfWApO1xuICAgICAgICAgICAgaWYgKHJlZ2V4cC50ZXN0KHN0YXRlLnVybC5zcGxpdCgnPycpWzBdKSkge1xuICAgICAgICAgICAgICAgIGNhbmFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjYW5hY3RpdmF0ZSkge1xuICAgICAgICAgICAgbG9nKGBhY3Q6IHRlc3Qgc3VjZXNzYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZyhgYWN0OiB0ZXN0IGVycm9yYCk7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Rpc3BsYXlJbmRleCddKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbkFjdGl2YXRlQ2hpbGQoXG4gICAgICAgIF86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICAgICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSBjaGlsZCAnLCBzdGF0ZSk7XG4gICAgICAgIGlmICh0aGlzLnByZUhhbmRsZShzdGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxvZygnYWN0OiBjYW4gYWN0aXZhdGUgY2hpbGQgcHJlaGFuZGxlIHN1Y2Nlc3MnKTtcblxuICAgICAgICBsZXQgY2FuYWN0aXZhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saW5rcy5mb3JFYWNoKChsaW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4cDogUmVnRXhwID0gdGhpcy5wYXRoVG9SZWdleHAuc3RyaW5nVG9SZWdleHAobGluaywgbnVsbCwgbnVsbCk7XG4gICAgICAgICAgICBpZiAocmVnZXhwLnRlc3Qoc3RhdGUudXJsLnNwbGl0KCc/JylbMF0pKSB7XG4gICAgICAgICAgICAgICAgbG9nKGBhY3Q6ICR7bGlua30gdGVzdCAke3N0YXRlLnVybC5zcGxpdCgnPycpWzBdfWApO1xuICAgICAgICAgICAgICAgIGNhbmFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjYW5hY3RpdmF0ZSkge1xuICAgICAgICAgICAgbG9nKGBhY3Q6IHRlc3Qgc3VjZXNzYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZyhgYWN0OiB0ZXN0IGVycm9yYCk7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Rpc3BsYXlJbmRleCddKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZUhhbmRsZShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgc3RhdGUudXJsLmluY2x1ZGVzKCdlcnJvcicpIHx8XG4gICAgICAgICAgICBzdGF0ZS51cmwuaW5jbHVkZXMoJ2V4Y2VwdGlvbicpIHx8XG4gICAgICAgICAgICBzdGF0ZS51cmwuaW5jbHVkZXMoJ2Rpc3BsYXlJbmRleCcpIHx8XG4gICAgICAgICAgICBzdGF0ZS51cmwgPT09ICcnIHx8XG4gICAgICAgICAgICBzdGF0ZS51cmwgPT09IG51bGwgfHxcbiAgICAgICAgICAgIHN0YXRlLnVybCA9PT0gJy8nIHx8XG4gICAgICAgICAgICBzdGF0ZS51cmwuaW5jbHVkZXMoJ2lmcmFtZVBhZ2UnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEFsbExpbmtzKG1lbnU6IE1lbnVbXSwgbGlua3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIG1lbnUuZm9yRWFjaCgoc2lkZXI6IE1lbnUpID0+IHtcbiAgICAgICAgICAgIGlmIChzaWRlci5saW5rKSB7XG4gICAgICAgICAgICAgICAgbGlua3MucHVzaChzaWRlci5saW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzaWRlci5jaGlsZHJlbiAmJiBzaWRlci5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxMaW5rcyhzaWRlci5jaGlsZHJlbiwgbGlua3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,9 +1,8 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { forkJoin, map, mergeAll, mergeMap, of } from 'rxjs';
2
+ import { combineLatest, map, mergeMap, of } from 'rxjs';
3
3
  import { YA_SERVICE_TOKEN } from '@yelon/auth';
4
- import { CacheService } from '@yelon/cache';
5
4
  import { _HttpClient } from '@yelon/theme';
6
- import { log, WINDOW, YunzaiConfigService } from '@yelon/util';
5
+ import { log, useLocalStorageHeader, useLocalStorageProjectInfo, useLocalStorageTenant, useLocalStorageUser, WINDOW, YunzaiConfigService } from '@yelon/util';
7
6
  import { mergeBisConfig } from './bis.config';
8
7
  import * as i0 from "@angular/core";
9
8
  class YunzaiAuthService {
@@ -20,46 +19,19 @@ class YunzaiAuthService {
20
19
  get httpClient() {
21
20
  return this.injector.get(_HttpClient);
22
21
  }
23
- get cacheService() {
24
- return this.injector.get(CacheService);
25
- }
26
22
  askToken() {
27
23
  log('yz.auth.service: ', 'askToken');
28
- // if (this.tokenService.get()?.token) {
29
- // const notCovertToken = this.tokenService.get();
30
- // let convertedToken: ITokenModel;
31
- // if (notCovertToken && notCovertToken['access_token']) {
32
- // convertedToken = {
33
- // token: notCovertToken['access_token'],
34
- // expired: notCovertToken['expires_in'],
35
- // refreshToken: notCovertToken['refresh_token'],
36
- // scope: notCovertToken['scope'],
37
- // tokenType: notCovertToken['token_type']
38
- // };
39
- // return of(convertedToken);
40
- // } else {
41
- // return of(this.tokenService.get()!);
42
- // }
43
- // } else {
44
24
  if (this.config.loginForm) {
45
25
  return this.fetchTokenByUP();
46
26
  }
47
27
  else {
48
28
  return this.fetchTokenByCas();
49
29
  }
50
- // }
51
30
  }
52
31
  fetchTokenByUP() {
53
32
  log('yz.auth.service: ', 'fetchTokenByUP');
54
33
  return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(map((response) => {
55
- const { access_token, expires_in, refresh_token, scope, token_type } = response;
56
- return {
57
- token: access_token,
58
- expired: expires_in,
59
- refreshToken: refresh_token,
60
- tokenType: token_type,
61
- scope
62
- };
34
+ return response;
63
35
  }));
64
36
  }
65
37
  fetchTokenByCas() {
@@ -68,23 +40,9 @@ class YunzaiAuthService {
68
40
  return this.httpClient
69
41
  .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true&timestamp=${new Date().getTime()}`)
70
42
  .pipe(map((response) => {
71
- // 查看缓存中的用户是否与token验证回的用户id相同,如果不同则缓存为过期缓存,进行清除
72
- if (response && response.userId) {
73
- const user = this.cacheService.get('_yz_user', { mode: 'none' });
74
- if (user && user.id && user.id !== response.userId) {
75
- this.cacheService.clear();
76
- }
77
- }
78
43
  switch (response.errcode) {
79
44
  case 2000:
80
- const { access_token, expires_in, refresh_token, scope, token_type } = response.data;
81
- return {
82
- token: access_token,
83
- expired: expires_in,
84
- refreshToken: refresh_token,
85
- tokenType: token_type,
86
- scope
87
- };
45
+ return response.data;
88
46
  case 2001:
89
47
  this.injector.get(WINDOW).location.href = response.msg;
90
48
  throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
@@ -110,65 +68,39 @@ class YunzaiAuthService {
110
68
  log('yz.auth.service: get token->', token);
111
69
  this.configService.set('auth', {
112
70
  token_send_key: 'Authorization',
113
- token_send_template: `${token.tokenType} \${token}`,
71
+ token_send_template: `${token.token_type} \${access_token}`,
114
72
  token_send_place: 'header'
115
73
  });
116
74
  log('yz.auth.service: ', 'set token');
117
75
  this.tokenService.set(token);
118
- return this.cacheInit();
119
- }), mergeAll());
76
+ return of(null);
77
+ }), mergeMap(() => this.cacheInit()));
120
78
  }
121
79
  cacheInit() {
122
80
  log('yz.auth.service: ', 'cacheInit');
123
- const tenant = this.cacheService.get('_yz_tenant', { mode: 'none' });
124
- const user = this.cacheService.get('_yz_user', { mode: 'none' });
125
- const header = this.cacheService.get('_yz_header', { mode: 'none' });
126
- const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
127
- return forkJoin(of(user), of(header), of(project)).pipe(mergeMap(([u, h, p]) => {
128
- let list = [];
129
- // user cache
130
- if (!u || !tenant) {
131
- log('yz.auth.service: ', 'fetch user cache');
132
- list.push(this.httpClient.get(`/auth/user`).pipe(map((user) => {
133
- this.cacheService.set('_yz_tenant', user.tenantId);
134
- this.cacheService.set('_yz_user', user.principal);
135
- })));
136
- }
137
- else {
138
- log('yz.auth.service: ', 'user recache');
139
- list.push(of(() => { }));
140
- }
141
- // header cache
142
- if (!h) {
143
- log('yz.auth.service: ', 'fetch header cache');
144
- list.push(this.httpClient.get(`/auth/allheader/v2`).pipe(map((header) => {
145
- this.cacheService.set('_yz_header', header.data);
146
- })));
147
- }
148
- else {
149
- log('yz.auth.service: ', 'header recache');
150
- list.push(of(() => { }));
151
- }
152
- // project cache
153
- if (!p) {
154
- log('yz.auth.service: ', 'fetch project cache');
155
- list.push(this.httpClient.get(`/app-manager/project/info`).pipe(map((info) => {
156
- this.cacheService.set('_yz_project_info', info.data);
157
- })));
158
- }
159
- else {
160
- log('yz.auth.service: ', 'project recache');
161
- list.push(of(() => { }));
162
- }
163
- return forkJoin(list);
81
+ const [setTenant,] = useLocalStorageTenant();
82
+ const [setUser,] = useLocalStorageUser();
83
+ const [setHeader,] = useLocalStorageHeader();
84
+ const [setProject,] = useLocalStorageProjectInfo();
85
+ return combineLatest([this.httpClient.get(`/auth/user`), this.httpClient.get(`/auth/allheader/v2`), this.httpClient.get(`/app-manager/project/info`)])
86
+ .pipe(map(([user, header, project]) => {
87
+ log('yz.auth.service: ', 'set user');
88
+ setUser(user.principal);
89
+ log('yz.auth.service: ', 'set tenant');
90
+ setTenant(user.tenantId);
91
+ log('yz.auth.service: ', 'set header');
92
+ setHeader(header.data);
93
+ log('yz.auth.service: ', 'set project');
94
+ setProject(project.data);
95
+ return void 0;
164
96
  }));
165
97
  }
166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
167
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiAuthService, providedIn: 'root' }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
99
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiAuthService, providedIn: 'root' }); }
168
100
  }
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: YunzaiAuthService, decorators: [{
101
+ export { YunzaiAuthService };
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImport: i0, type: YunzaiAuthService, decorators: [{
170
103
  type: Injectable,
171
104
  args: [{ providedIn: 'root' }]
172
105
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
173
- export { YunzaiAuthService as YzAuthService, YunzaiAuthService };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUF3QixtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUU5QyxNQUNNLGlCQUFpQjtJQUdyQixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBWSxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElB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QUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxJQUFJLENBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO29CQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBTSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBckxHLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREcsTUFBTTs7MkZBQzFCLGlCQUFpQjtrQkFEdEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBeUxsQyxPQUFPLEVBQUUsaUJBQWlCLElBQUksYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgbWVyZ2VBbGwsIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJVG9rZW5Nb2RlbCwgSVRva2VuU2VydmljZSwgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBfSHR0cENsaWVudCB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBsb2csIFdJTkRPVywgWXVuemFpQnVzaW5lc3NDb25maWcsIFl1bnphaUNvbmZpZ1NlcnZpY2UgfSBmcm9tICdAeWVsb24vdXRpbCc7XG5cbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnLi9iaXMuY29uZmlnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmNsYXNzIFl1bnphaUF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWc6IFl1bnphaUJ1c2luZXNzQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5jb25maWcgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY29uZmlnU2VydmljZSgpOiBZdW56YWlDb25maWdTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoWXVuemFpQ29uZmlnU2VydmljZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCB0b2tlblNlcnZpY2UoKTogSVRva2VuU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFlBX1NFUlZJQ0VfVE9LRU4pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaHR0cENsaWVudCgpOiBfSHR0cENsaWVudCB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KF9IdHRwQ2xpZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhY2hlU2VydmljZSgpOiBDYWNoZVNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChDYWNoZVNlcnZpY2UpO1xuICB9XG5cbiAgYXNrVG9rZW4oKTogT2JzZXJ2YWJsZTxJVG9rZW5Nb2RlbD4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnYXNrVG9rZW4nKTtcbiAgICAvLyBpZiAodGhpcy50b2tlblNlcnZpY2UuZ2V0KCk/LnRva2VuKSB7XG4gICAgLy8gICBjb25zdCBub3RDb3ZlcnRUb2tlbiA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpO1xuICAgIC8vICAgbGV0IGNvbnZlcnRlZFRva2VuOiBJVG9rZW5Nb2RlbDtcbiAgICAvLyAgIGlmIChub3RDb3ZlcnRUb2tlbiAmJiBub3RDb3ZlcnRUb2tlblsnYWNjZXNzX3Rva2VuJ10pIHtcbiAgICAvLyAgICAgY29udmVydGVkVG9rZW4gPSB7XG4gICAgLy8gICAgICAgdG9rZW46IG5vdENvdmVydFRva2VuWydhY2Nlc3NfdG9rZW4nXSxcbiAgICAvLyAgICAgICBleHBpcmVkOiBub3RDb3ZlcnRUb2tlblsnZXhwaXJlc19pbiddLFxuICAgIC8vICAgICAgIHJlZnJlc2hUb2tlbjogbm90Q292ZXJ0VG9rZW5bJ3JlZnJlc2hfdG9rZW4nXSxcbiAgICAvLyAgICAgICBzY29wZTogbm90Q292ZXJ0VG9rZW5bJ3Njb3BlJ10sXG4gICAgLy8gICAgICAgdG9rZW5UeXBlOiBub3RDb3ZlcnRUb2tlblsndG9rZW5fdHlwZSddXG4gICAgLy8gICAgIH07XG4gICAgLy8gICAgIHJldHVybiBvZihjb252ZXJ0ZWRUb2tlbik7XG4gICAgLy8gICB9IGVsc2Uge1xuICAgIC8vICAgICByZXR1cm4gb2YodGhpcy50b2tlblNlcnZpY2UuZ2V0KCkhKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9IGVsc2Uge1xuICAgIGlmICh0aGlzLmNvbmZpZy5sb2dpbkZvcm0pIHtcbiAgICAgIHJldHVybiB0aGlzLmZldGNoVG9rZW5CeVVQKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmZldGNoVG9rZW5CeUNhcygpO1xuICAgIH1cbiAgICAvLyB9XG4gIH1cblxuICBmZXRjaFRva2VuQnlVUCgpOiBPYnNlcnZhYmxlPElUb2tlbk1vZGVsPiB7XG4gICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdmZXRjaFRva2VuQnlVUCcpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChgL2F1dGgvb2F1dGgvdG9rZW4/X2FsbG93X2Fub255bW91cz10cnVlYCwgdGhpcy5jb25maWcubG9naW5Gb3JtKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgYWNjZXNzX3Rva2VuLCBleHBpcmVzX2luLCByZWZyZXNoX3Rva2VuLCBzY29wZSwgdG9rZW5fdHlwZSB9ID0gcmVzcG9uc2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdG9rZW46IGFjY2Vzc190b2tlbixcbiAgICAgICAgICBleHBpcmVkOiBleHBpcmVzX2luLFxuICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICB0b2tlblR5cGU6IHRva2VuX3R5cGUsXG4gICAgICAgICAgc2NvcGVcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGZldGNoVG9rZW5CeUNhcygpOiBPYnNlcnZhYmxlPElUb2tlbk1vZGVsPiB7XG4gICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdmZXRjaFRva2VuQnlDYXMnKTtcbiAgICBjb25zdCB1cmkgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAuZ2V0KGAvY2FzLXByb3h5L2FwcC92YWxpZGF0ZV9mdWxsP2NhbGxiYWNrPSR7dXJpfSZfYWxsb3dfYW5vbnltb3VzPXRydWUmdGltZXN0YW1wPSR7bmV3IERhdGUoKS5nZXRUaW1lKCl9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyDmn6XnnIvnvJPlrZjkuK3nmoTnlKjmiLfmmK/lkKbkuI50b2tlbumqjOivgeWbnueahOeUqOaIt2lk55u45ZCM77yM5aaC5p6c5LiN5ZCM5YiZ57yT5a2Y5Li66L+H5pyf57yT5a2Y77yM6L+b6KGM5riF6ZmkXG4gICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnVzZXJJZCkge1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICAgICAgICAgIGlmICh1c2VyICYmIHVzZXIuaWQgJiYgdXNlci5pZCAhPT0gcmVzcG9uc2UudXNlcklkKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHN3aXRjaCAocmVzcG9uc2UuZXJyY29kZSkge1xuICAgICAgICAgICAgY2FzZSAyMDAwOlxuICAgICAgICAgICAgICBjb25zdCB7IGFjY2Vzc190b2tlbiwgZXhwaXJlc19pbiwgcmVmcmVzaF90b2tlbiwgc2NvcGUsIHRva2VuX3R5cGUgfSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9rZW46IGFjY2Vzc190b2tlbixcbiAgICAgICAgICAgICAgICBleHBpcmVkOiBleHBpcmVzX2luLFxuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgICAgICB0b2tlblR5cGU6IHRva2VuX3R5cGUsXG4gICAgICAgICAgICAgICAgc2NvcGVcbiAgICAgICAgICAgICAgfSBhcyBJVG9rZW5Nb2RlbDtcbiAgICAgICAgICAgIGNhc2UgMjAwMTpcbiAgICAgICAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gcmVzcG9uc2UubXNnO1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkNvb2tpZSBFcnJvcjogQ2FuJ3QgZmluZCBDYXMgQ29va2llLFNvIGp1bXAgdG8gbG9naW4hXCIpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1zZykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UubXNnKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NhcyB1bmtub3duIGVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gRXJyb3I6IENhcyBhdXRoIGV4Y2VwdGlvbiEnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2dpbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2xvZ2luIHdoaXRlIGxvZ2luIGZvcm0tPicsIHRoaXMuY29uZmlnLmxvZ2luRm9ybSk7XG4gICAgcmV0dXJuIHRoaXMuYXNrVG9rZW4oKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodG9rZW4gPT4ge1xuICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogZ2V0IHRva2VuLT4nLCB0b2tlbik7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXQoJ2F1dGgnLCB7XG4gICAgICAgICAgdG9rZW5fc2VuZF9rZXk6ICdBdXRob3JpemF0aW9uJyxcbiAgICAgICAgICB0b2tlbl9zZW5kX3RlbXBsYXRlOiBgJHt0b2tlbi50b2tlblR5cGV9IFxcJHt0b2tlbn1gLFxuICAgICAgICAgIHRva2VuX3NlbmRfcGxhY2U6ICdoZWFkZXInXG4gICAgICAgIH0pO1xuICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3NldCB0b2tlbicpO1xuICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zZXQodG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZUluaXQoKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VBbGwoKVxuICAgICk7XG4gIH1cblxuICBjYWNoZUluaXQoKTogT2JzZXJ2YWJsZTx2b2lkW10+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2NhY2hlSW5pdCcpO1xuICAgIGNvbnN0IHRlbmFudCA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3RlbmFudCcsIHsgbW9kZTogJ25vbmUnIH0pO1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfaGVhZGVyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgY29uc3QgcHJvamVjdCA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3Byb2plY3RfaW5mbycsIHsgbW9kZTogJ25vbmUnIH0pO1xuICAgIHJldHVybiBmb3JrSm9pbihvZih1c2VyKSwgb2YoaGVhZGVyKSwgb2YocHJvamVjdCkpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoW3UsIGgsIHBdKSA9PiB7XG4gICAgICAgIGxldCBsaXN0ID0gW107XG4gICAgICAgIC8vIHVzZXIgY2FjaGVcbiAgICAgICAgaWYgKCF1IHx8ICF0ZW5hbnQpIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoIHVzZXIgY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2goXG4gICAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXV0aC91c2VyYCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el90ZW5hbnQnLCB1c2VyLnRlbmFudElkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el91c2VyJywgdXNlci5wcmluY2lwYWwpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICd1c2VyIHJlY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2gob2Y8YW55PigoKSA9PiB7fSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGhlYWRlciBjYWNoZVxuICAgICAgICBpZiAoIWgpIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoIGhlYWRlciBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL2FsbGhlYWRlci92MmApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoaGVhZGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el9oZWFkZXInLCBoZWFkZXIuZGF0YSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2hlYWRlciByZWNhY2hlJyk7XG4gICAgICAgICAgbGlzdC5wdXNoKG9mPGFueT4oKCkgPT4ge30pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcm9qZWN0IGNhY2hlXG4gICAgICAgIGlmICghcCkge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2ggcHJvamVjdCBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hcHAtbWFuYWdlci9wcm9qZWN0L2luZm9gKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKGluZm86IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnNldCgnX3l6X3Byb2plY3RfaW5mbycsIGluZm8uZGF0YSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3Byb2plY3QgcmVjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChvZjxhbnk+KCgpID0+IHt9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxpc3QpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB7IFl1bnphaUF1dGhTZXJ2aWNlIGFzIFl6QXV0aFNlcnZpY2UsIFl1bnphaUF1dGhTZXJ2aWNlIH07XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUE2QixnQkFBZ0IsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFDSCxHQUFHLEVBQ0gscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLE1BQU0sRUFFTixtQkFBbUIsRUFDdEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGNBQWMsQ0FBQzs7QUFFNUMsTUFDYSxpQkFBaUI7SUFHMUIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQVksYUFBYTtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVksVUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxR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LG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEIsT0FBTyxLQUFLLENBQUMsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FDTCxDQUFBO0lBQ1QsQ0FBQzs4R0F4R1EsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FETCxNQUFNOztTQUNsQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0lUb2tlbk1vZGVsLCBJVG9rZW5TZXJ2aWNlLCBZQV9TRVJWSUNFX1RPS0VOfSBmcm9tICdAeWVsb24vYXV0aCc7XG5pbXBvcnQge19IdHRwQ2xpZW50fSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgICBsb2csXG4gICAgdXNlTG9jYWxTdG9yYWdlSGVhZGVyLFxuICAgIHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvLFxuICAgIHVzZUxvY2FsU3RvcmFnZVRlbmFudCxcbiAgICB1c2VMb2NhbFN0b3JhZ2VVc2VyLFxuICAgIFdJTkRPVyxcbiAgICBZdW56YWlCdXNpbmVzc0NvbmZpZyxcbiAgICBZdW56YWlDb25maWdTZXJ2aWNlXG59IGZyb20gJ0B5ZWxvbi91dGlsJztcblxuaW1wb3J0IHttZXJnZUJpc0NvbmZpZ30gZnJvbSAnLi9iaXMuY29uZmlnJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgWXVuemFpQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgY29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gbWVyZ2VCaXNDb25maWcodGhpcy5jb25maWdTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjb25maWdTZXJ2aWNlKCk6IFl1bnphaUNvbmZpZ1NlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoWXVuemFpQ29uZmlnU2VydmljZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgdG9rZW5TZXJ2aWNlKCk6IElUb2tlblNlcnZpY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoWUFfU0VSVklDRV9UT0tFTik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaHR0cENsaWVudCgpOiBfSHR0cENsaWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChfSHR0cENsaWVudCk7XG4gICAgfVxuXG4gICAgYXNrVG9rZW4oKTogT2JzZXJ2YWJsZTxJVG9rZW5Nb2RlbD4ge1xuICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2Fza1Rva2VuJyk7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5sb2dpbkZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVG9rZW5CeVVQKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFRva2VuQnlDYXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZldGNoVG9rZW5CeVVQKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdmZXRjaFRva2VuQnlVUCcpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoYC9hdXRoL29hdXRoL3Rva2VuP19hbGxvd19hbm9ueW1vdXM9dHJ1ZWAsIHRoaXMuY29uZmlnLmxvZ2luRm9ybSkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZmV0Y2hUb2tlbkJ5Q2FzKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdmZXRjaFRva2VuQnlDYXMnKTtcbiAgICAgICAgY29uc3QgdXJpID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykubG9jYXRpb24uaHJlZik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYC9jYXMtcHJveHkvYXBwL3ZhbGlkYXRlX2Z1bGw/Y2FsbGJhY2s9JHt1cml9Jl9hbGxvd19hbm9ueW1vdXM9dHJ1ZSZ0aW1lc3RhbXA9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVzcG9uc2UuZXJyY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMDAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykubG9jYXRpb24uaHJlZiA9IHJlc3BvbnNlLm1zZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkNvb2tpZSBFcnJvcjogQ2FuJ3QgZmluZCBDYXMgQ29va2llLFNvIGp1bXAgdG8gbG9naW4hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1zZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLm1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLm1zZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignY2FzIHVua25vd24gZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gRXJyb3I6IENhcyBhdXRoIGV4Y2VwdGlvbiEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsb2dpbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdsb2dpbiB3aGl0ZSBsb2dpbiBmb3JtLT4nLCB0aGlzLmNvbmZpZy5sb2dpbkZvcm0pO1xuICAgICAgICByZXR1cm4gdGhpcy5hc2tUb2tlbigpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCh0b2tlbiA9PiB7XG4gICAgICAgICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6IGdldCB0b2tlbi0+JywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXQoJ2F1dGgnLCB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuX3NlbmRfa2V5OiAnQXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIHRva2VuX3NlbmRfdGVtcGxhdGU6IGAke3Rva2VuLnRva2VuX3R5cGV9IFxcJHthY2Nlc3NfdG9rZW59YCxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5fc2VuZF9wbGFjZTogJ2hlYWRlcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3NldCB0b2tlbicpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldCh0b2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuY2FjaGVJbml0KCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY2FjaGVJbml0KCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2NhY2hlSW5pdCcpO1xuICAgICAgICBjb25zdCBbc2V0VGVuYW50LF0gPSB1c2VMb2NhbFN0b3JhZ2VUZW5hbnQoKVxuICAgICAgICBjb25zdCBbc2V0VXNlcixdID0gdXNlTG9jYWxTdG9yYWdlVXNlcigpXG4gICAgICAgIGNvbnN0IFtzZXRIZWFkZXIsXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpXG4gICAgICAgIGNvbnN0IFtzZXRQcm9qZWN0LF0gPSB1c2VMb2NhbFN0b3JhZ2VQcm9qZWN0SW5mbygpXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXV0aC91c2VyYCksIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL2FsbGhlYWRlci92MmApLCB0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXBwLW1hbmFnZXIvcHJvamVjdC9pbmZvYCldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChbdXNlciwgaGVhZGVyLCBwcm9qZWN0XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3NldCB1c2VyJyk7XG4gICAgICAgICAgICAgICAgICAgIHNldFVzZXIodXNlci5wcmluY2lwYWwpXG4gICAgICAgICAgICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnc2V0IHRlbmFudCcpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUZW5hbnQodXNlci50ZW5hbnRJZClcbiAgICAgICAgICAgICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdzZXQgaGVhZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIHNldEhlYWRlcihoZWFkZXIuZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdzZXQgcHJvamVjdCcpO1xuICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0KHByb2plY3QuZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZvaWQgMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgfVxufVxuXG4iXX0=