@osovitny/anatoly 3.16.15 → 3.16.17

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 (69) hide show
  1. package/esm2022/lib/anatoly.module.mjs +15 -1
  2. package/esm2022/lib/core/interceptors/httpInterceptor.mjs +4 -4
  3. package/esm2022/lib/core/localization/localization.service.mjs +15 -8
  4. package/esm2022/lib/core/localization/utils.mjs +2 -2
  5. package/esm2022/lib/core/logging/globalErrorHandler.mjs +3 -3
  6. package/esm2022/lib/core/logging/logging.service.mjs +2 -2
  7. package/esm2022/lib/core/services/appcontext.service.mjs +14 -2
  8. package/esm2022/lib/core/services/dm.service.mjs +3 -3
  9. package/esm2022/lib/core/services/google-analytics.service.mjs +2 -2
  10. package/esm2022/lib/core/services/starter.service.mjs +9 -4
  11. package/esm2022/lib/iam/b2c/b2c.mjs +43 -0
  12. package/esm2022/lib/iam/b2c/consts.mjs +25 -0
  13. package/esm2022/lib/iam/b2c/index.mjs +21 -0
  14. package/esm2022/lib/iam/configs.mjs +107 -0
  15. package/esm2022/lib/iam/consts.mjs +23 -0
  16. package/esm2022/lib/iam/guards/admin.guard.mjs +47 -0
  17. package/esm2022/lib/iam/guards/authentication.guard.mjs +31 -0
  18. package/esm2022/lib/iam/guards/index.mjs +20 -0
  19. package/esm2022/lib/iam/iam-pages.module.mjs +54 -0
  20. package/esm2022/lib/iam/iam-pages.routes.mjs +45 -0
  21. package/esm2022/lib/iam/iam.module.mjs +100 -0
  22. package/esm2022/lib/iam/index.mjs +18 -0
  23. package/esm2022/lib/iam/pages/signin.page.mjs +40 -0
  24. package/esm2022/lib/iam/pages/signout.page.mjs +40 -0
  25. package/esm2022/lib/iam/pages/signup.page.mjs +39 -0
  26. package/esm2022/lib/iam/redirect.mjs +29 -0
  27. package/esm2022/lib/iam/services/auth.service.mjs +246 -0
  28. package/esm2022/lib/iam/storage.mjs +39 -0
  29. package/esm2022/lib/ui/components/base/base.component.mjs +8 -4
  30. package/esm2022/lib/ui/components/billing/buyaccess-button.component.mjs +2 -2
  31. package/esm2022/lib/ui/components/billing/subscribe-plan-button.component.mjs +3 -3
  32. package/esm2022/lib/ui/components/html-editor/base-html-editor.component.mjs +3 -3
  33. package/esm2022/lib/ui/components/spinners/loading/loading.component.mjs +7 -12
  34. package/esm2022/lib/ui/components/spinners/pagespinner/pagespinner.component.mjs +2 -2
  35. package/esm2022/lib/ui/forms/components/urlslug/urlslug.component.mjs +1 -1
  36. package/esm2022/lib/ui/pipes/filesize.pipe.mjs +2 -2
  37. package/esm2022/lib/ui/pipes/replace-text.pipe.mjs +2 -2
  38. package/esm2022/lib/ui/pipes/safeHtml.pipe.mjs +2 -2
  39. package/esm2022/lib/ui/validation/form-validation-summary.component.mjs +3 -3
  40. package/esm2022/lib/ui/validation/item-validation-summary.component.mjs +4 -4
  41. package/esm2022/lib/ui/validation/validation-summary.component.mjs +3 -3
  42. package/esm2022/public-api.mjs +5 -1
  43. package/fesm2022/osovitny-anatoly.mjs +1074 -142
  44. package/fesm2022/osovitny-anatoly.mjs.map +1 -1
  45. package/lib/anatoly.module.d.ts +4 -2
  46. package/lib/core/localization/localization.service.d.ts +8 -5
  47. package/lib/core/services/appcontext.service.d.ts +2 -0
  48. package/lib/iam/b2c/b2c.d.ts +5 -0
  49. package/lib/iam/b2c/consts.d.ts +6 -0
  50. package/lib/iam/b2c/index.d.ts +2 -0
  51. package/lib/iam/configs.d.ts +5 -0
  52. package/lib/iam/consts.d.ts +3 -0
  53. package/lib/iam/guards/admin.guard.d.ts +13 -0
  54. package/lib/iam/guards/authentication.guard.d.ts +13 -0
  55. package/lib/iam/guards/index.d.ts +2 -0
  56. package/lib/iam/iam-pages.module.d.ts +12 -0
  57. package/lib/iam/iam-pages.routes.d.ts +6 -0
  58. package/lib/iam/iam.module.d.ts +9 -0
  59. package/lib/iam/index.d.ts +1 -0
  60. package/lib/iam/pages/signin.page.d.ts +11 -0
  61. package/lib/iam/pages/signout.page.d.ts +11 -0
  62. package/lib/iam/pages/signup.page.d.ts +11 -0
  63. package/lib/iam/redirect.d.ts +3 -0
  64. package/lib/iam/services/auth.service.d.ts +37 -0
  65. package/lib/iam/storage.d.ts +8 -0
  66. package/lib/ui/components/base/base.component.d.ts +2 -1
  67. package/lib/ui/components/spinners/loading/loading.component.d.ts +3 -4
  68. package/package.json +1 -1
  69. package/public-api.d.ts +3 -0
@@ -0,0 +1,25 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 20 Sep 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ export const PolicyType = {
20
+ signUpSignIn: 'signUpSignIn',
21
+ signUp: 'signUp',
22
+ resetPassword: 'resetPassword',
23
+ editProfile: 'editProfile'
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2lhbS9iMmMvY29uc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixZQUFZLEVBQUUsY0FBYztJQUM1QixNQUFNLEVBQUUsUUFBUTtJQUNoQixhQUFhLEVBQUUsZUFBZTtJQUM5QixXQUFXLEVBQUUsYUFBYTtDQUMzQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcblx0Q3JlYXRlZDpcclxuXHRcdDIwIFNlcCAyMDIzXHJcblxyXG4gIERlc2NyaXB0aW9uOlxyXG4gICAgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50XHJcblxyXG5cdENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNvbnN0IFBvbGljeVR5cGUgPSB7XHJcbiAgc2lnblVwU2lnbkluOiAnc2lnblVwU2lnbkluJyxcclxuICBzaWduVXA6ICdzaWduVXAnLFxyXG4gIHJlc2V0UGFzc3dvcmQ6ICdyZXNldFBhc3N3b3JkJyxcclxuICBlZGl0UHJvZmlsZTogJ2VkaXRQcm9maWxlJ1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 20 Sep 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ export * from './b2c';
20
+ export * from './consts';
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvaWFtL2IyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAyMCBTZXAgMjAyM1xyXG5cclxuICBEZXNjcmlwdGlvbjpcclxuICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vYjJjJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdHMnO1xyXG4iXX0=
@@ -0,0 +1,107 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 2 May 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ import { InteractionType, LogLevel, PublicClientApplication } from '@azure/msal-browser';
20
+ //App
21
+ import { MSALB2C, PolicyType } from './b2c';
22
+ import { MSALApiConfig, MSALB2CConfig, MSALConfig } from './consts';
23
+ import { MSALStorage } from './storage';
24
+ export function MSALInterceptorConfigFactory() {
25
+ let protectedResourceMap = new Map();
26
+ protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);
27
+ return {
28
+ interactionType: InteractionType.Redirect,
29
+ protectedResourceMap
30
+ };
31
+ }
32
+ export function MSALGuardConfigFactory() {
33
+ return {
34
+ interactionType: InteractionType.Redirect,
35
+ authRequest: (authService, state) => {
36
+ let scopes = MSALApiConfig.scopes;
37
+ let redirectTo = state.url;
38
+ /*
39
+ VadimOS: not working for some reason
40
+
41
+ let stateData = {
42
+ redirectTo: redirectTo
43
+ };
44
+ let state64 = Buffer.from(JSON.stringify(stateData)).toString('base64');
45
+ let request: RedirectRequest = {
46
+ scopes: [...scopes],
47
+ state: state64,
48
+ redirectStartPage: redirectTo
49
+ }
50
+ */
51
+ let request = {
52
+ scopes: [...scopes]
53
+ };
54
+ MSALStorage.saveRedirectState(redirectTo, 'MSALGuardConfigFactory.authRequest');
55
+ return request;
56
+ }
57
+ };
58
+ }
59
+ export function MSALInstanceFactory() {
60
+ let authority = MSALConfig.app.auth.authority;
61
+ let configuration = {
62
+ auth: {
63
+ authority: authority,
64
+ clientId: MSALConfig.app.auth.clientId,
65
+ redirectUri: MSALConfig.app.auth.redirectUri,
66
+ postLogoutRedirectUri: MSALConfig.app.auth.postLogoutRedirectUri,
67
+ navigateToLoginRequestUrl: MSALConfig.app.auth.navigateToLoginRequestUrl
68
+ },
69
+ cache: {
70
+ cacheLocation: MSALConfig.app.cache.cacheLocation,
71
+ storeAuthStateInCookie: MSALConfig.app.cache.storeAuthStateInCookie
72
+ },
73
+ system: {
74
+ allowNativeBroker: false,
75
+ loggerOptions: {
76
+ loggerCallback,
77
+ logLevel: MSALConfig.app.system.loggerOptions.logLevel,
78
+ piiLoggingEnabled: false
79
+ }
80
+ }
81
+ };
82
+ if (MSALB2C.isEnabled()) {
83
+ configuration.auth.authority = MSALB2C.getAuthorityByType(PolicyType.signUpSignIn);
84
+ configuration.auth.knownAuthorities = [MSALB2CConfig.authorityDomain];
85
+ }
86
+ return new PublicClientApplication(configuration);
87
+ }
88
+ function loggerCallback(logLevel, message, containsPii) {
89
+ if (containsPii) {
90
+ return;
91
+ }
92
+ switch (logLevel) {
93
+ case LogLevel.Error:
94
+ console.error(message);
95
+ return;
96
+ case LogLevel.Info:
97
+ console.info(message);
98
+ return;
99
+ case LogLevel.Verbose:
100
+ console.debug(message);
101
+ return;
102
+ case LogLevel.Warning:
103
+ console.warn(message);
104
+ return;
105
+ }
106
+ }
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9pYW0vY29uZmlncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFLRixPQUFPLEVBQUUsZUFBZSxFQUE0QixRQUFRLEVBQUUsdUJBQXVCLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFcEksS0FBSztBQUNMLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsSUFBSSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUM1RCxvQkFBb0IsQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRS9FLE9BQU87UUFDTCxlQUFlLEVBQUUsZUFBZSxDQUFDLFFBQVE7UUFDekMsb0JBQW9CO0tBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPO1FBQ0wsZUFBZSxFQUFFLGVBQWUsQ0FBQyxRQUFRO1FBQ3pDLFdBQVcsRUFBRSxDQUFDLFdBQXdCLEVBQUUsS0FBMEIsRUFBd0IsRUFBRTtZQUMxRixJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ2xDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFFM0I7Ozs7Ozs7Ozs7OztjQVlFO1lBRUYsSUFBSSxPQUFPLEdBQW9CO2dCQUM3QixNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUNwQixDQUFBO1lBRUQsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO1lBRWhGLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzlDLElBQUksYUFBYSxHQUFRO1FBQ3ZCLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ3RDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQzVDLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQjtZQUNoRSx5QkFBeUIsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUI7U0FDekU7UUFDRCxLQUFLLEVBQUU7WUFDTCxhQUFhLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUNqRCxzQkFBc0IsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxzQkFBc0I7U0FDcEU7UUFDRCxNQUFNLEVBQUU7WUFDTixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGFBQWEsRUFBRTtnQkFDYixjQUFjO2dCQUNkLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUTtnQkFDdEQsaUJBQWlCLEVBQUUsS0FBSzthQUN6QjtTQUNGO0tBQ0YsQ0FBQTtJQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkYsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN2RTtJQUVELE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsUUFBa0IsRUFBRSxPQUFlLEVBQUUsV0FBb0I7SUFDL0UsSUFBSSxXQUFXLEVBQUU7UUFDZixPQUFPO0tBQ1I7SUFFRCxRQUFRLFFBQVEsRUFBRTtRQUNoQixLQUFLLFFBQVEsQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkIsT0FBTztRQUVULEtBQUssUUFBUSxDQUFDLElBQUk7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixPQUFPO1FBRVQsS0FBSyxRQUFRLENBQUMsT0FBTztZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLE9BQU87UUFFVCxLQUFLLFFBQVEsQ0FBQyxPQUFPO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTztLQUNWO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG5cdENyZWF0ZWQ6XHJcblx0XHQyIE1heSAyMDIzXHJcblxyXG4gIERlc2NyaXB0aW9uOlxyXG4gICAgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50XHJcblxyXG5cdENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1zYWxHdWFyZEF1dGhSZXF1ZXN0LCBNc2FsR3VhcmRDb25maWd1cmF0aW9uLCBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uLCBNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBJbnRlcmFjdGlvblR5cGUsIElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbiwgTG9nTGV2ZWwsIFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uLCBSZWRpcmVjdFJlcXVlc3QgfSBmcm9tICdAYXp1cmUvbXNhbC1icm93c2VyJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IE1TQUxCMkMsIFBvbGljeVR5cGUgfSBmcm9tICcuL2IyYyc7XHJcbmltcG9ydCB7IE1TQUxBcGlDb25maWcsIE1TQUxCMkNDb25maWcsIE1TQUxDb25maWcgfSBmcm9tICcuL2NvbnN0cyc7XHJcbmltcG9ydCB7IE1TQUxTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNU0FMSW50ZXJjZXB0b3JDb25maWdGYWN0b3J5KCk6IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24ge1xyXG4gIGxldCBwcm90ZWN0ZWRSZXNvdXJjZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxzdHJpbmc+PigpO1xyXG4gIHByb3RlY3RlZFJlc291cmNlTWFwLnNldCgnaHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tL3YxLjAvbWUnLCBbJ3VzZXIucmVhZCddKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0LFxyXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VNYXBcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTVNBTEd1YXJkQ29uZmlnRmFjdG9yeSgpOiBNc2FsR3VhcmRDb25maWd1cmF0aW9uIHtcclxuICByZXR1cm4ge1xyXG4gICAgaW50ZXJhY3Rpb25UeXBlOiBJbnRlcmFjdGlvblR5cGUuUmVkaXJlY3QsXHJcbiAgICBhdXRoUmVxdWVzdDogKGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBNc2FsR3VhcmRBdXRoUmVxdWVzdCA9PiB7XHJcbiAgICAgIGxldCBzY29wZXMgPSBNU0FMQXBpQ29uZmlnLnNjb3BlcztcclxuICAgICAgbGV0IHJlZGlyZWN0VG8gPSBzdGF0ZS51cmw7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICBWYWRpbU9TOiBub3Qgd29ya2luZyBmb3Igc29tZSByZWFzb25cclxuXHJcbiAgICAgIGxldCBzdGF0ZURhdGEgPSB7XHJcbiAgICAgICAgcmVkaXJlY3RUbzogcmVkaXJlY3RUb1xyXG4gICAgICB9O1xyXG4gICAgICBsZXQgc3RhdGU2NCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHN0YXRlRGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcclxuICAgICAgbGV0IHJlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCA9IHtcclxuICAgICAgICBzY29wZXM6IFsuLi5zY29wZXNdLFxyXG4gICAgICAgIHN0YXRlOiBzdGF0ZTY0LFxyXG4gICAgICAgIHJlZGlyZWN0U3RhcnRQYWdlOiByZWRpcmVjdFRvXHJcbiAgICAgIH1cclxuICAgICAgKi9cclxuXHJcbiAgICAgIGxldCByZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QgPSB7XHJcbiAgICAgICAgc2NvcGVzOiBbLi4uc2NvcGVzXVxyXG4gICAgICB9XHJcblxyXG4gICAgICBNU0FMU3RvcmFnZS5zYXZlUmVkaXJlY3RTdGF0ZShyZWRpcmVjdFRvLCAnTVNBTEd1YXJkQ29uZmlnRmFjdG9yeS5hdXRoUmVxdWVzdCcpO1xyXG5cclxuICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1TQUxJbnN0YW5jZUZhY3RvcnkoKTogSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uIHtcclxuICBsZXQgYXV0aG9yaXR5ID0gTVNBTENvbmZpZy5hcHAuYXV0aC5hdXRob3JpdHk7XHJcbiAgbGV0IGNvbmZpZ3VyYXRpb246IGFueSA9IHtcclxuICAgIGF1dGg6IHtcclxuICAgICAgYXV0aG9yaXR5OiBhdXRob3JpdHksXHJcbiAgICAgIGNsaWVudElkOiBNU0FMQ29uZmlnLmFwcC5hdXRoLmNsaWVudElkLFxyXG4gICAgICByZWRpcmVjdFVyaTogTVNBTENvbmZpZy5hcHAuYXV0aC5yZWRpcmVjdFVyaSxcclxuICAgICAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBNU0FMQ29uZmlnLmFwcC5hdXRoLnBvc3RMb2dvdXRSZWRpcmVjdFVyaSxcclxuICAgICAgbmF2aWdhdGVUb0xvZ2luUmVxdWVzdFVybDogTVNBTENvbmZpZy5hcHAuYXV0aC5uYXZpZ2F0ZVRvTG9naW5SZXF1ZXN0VXJsXHJcbiAgICB9LFxyXG4gICAgY2FjaGU6IHtcclxuICAgICAgY2FjaGVMb2NhdGlvbjogTVNBTENvbmZpZy5hcHAuY2FjaGUuY2FjaGVMb2NhdGlvbixcclxuICAgICAgc3RvcmVBdXRoU3RhdGVJbkNvb2tpZTogTVNBTENvbmZpZy5hcHAuY2FjaGUuc3RvcmVBdXRoU3RhdGVJbkNvb2tpZVxyXG4gICAgfSxcclxuICAgIHN5c3RlbToge1xyXG4gICAgICBhbGxvd05hdGl2ZUJyb2tlcjogZmFsc2UsXHJcbiAgICAgIGxvZ2dlck9wdGlvbnM6IHtcclxuICAgICAgICBsb2dnZXJDYWxsYmFjayxcclxuICAgICAgICBsb2dMZXZlbDogTVNBTENvbmZpZy5hcHAuc3lzdGVtLmxvZ2dlck9wdGlvbnMubG9nTGV2ZWwsXHJcbiAgICAgICAgcGlpTG9nZ2luZ0VuYWJsZWQ6IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlmIChNU0FMQjJDLmlzRW5hYmxlZCgpKSB7XHJcbiAgICBjb25maWd1cmF0aW9uLmF1dGguYXV0aG9yaXR5ID0gTVNBTEIyQy5nZXRBdXRob3JpdHlCeVR5cGUoUG9saWN5VHlwZS5zaWduVXBTaWduSW4pO1xyXG4gICAgY29uZmlndXJhdGlvbi5hdXRoLmtub3duQXV0aG9yaXRpZXMgPSBbTVNBTEIyQ0NvbmZpZy5hdXRob3JpdHlEb21haW5dO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG5ldyBQdWJsaWNDbGllbnRBcHBsaWNhdGlvbihjb25maWd1cmF0aW9uKTtcclxufVxyXG5cclxuZnVuY3Rpb24gbG9nZ2VyQ2FsbGJhY2sobG9nTGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNvbnRhaW5zUGlpOiBib29sZWFuKSB7XHJcbiAgaWYgKGNvbnRhaW5zUGlpKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBzd2l0Y2ggKGxvZ0xldmVsKSB7XHJcbiAgICBjYXNlIExvZ0xldmVsLkVycm9yOlxyXG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY2FzZSBMb2dMZXZlbC5JbmZvOlxyXG4gICAgICBjb25zb2xlLmluZm8obWVzc2FnZSk7XHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjYXNlIExvZ0xldmVsLlZlcmJvc2U6XHJcbiAgICAgIGNvbnNvbGUuZGVidWcobWVzc2FnZSk7XHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjYXNlIExvZ0xldmVsLldhcm5pbmc6XHJcbiAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,23 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 20 Sep 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ let msalSettings = document.getElementById("msalSettings").getAttribute('data-msalsettings');
20
+ export let MSALConfig = JSON.parse(msalSettings);
21
+ export let MSALApiConfig = MSALConfig?.api;
22
+ export let MSALB2CConfig = MSALConfig?.b2c;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2lhbS9jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsSUFBSSxZQUFZLEdBQXNCLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFFLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFakgsTUFBTSxDQUFDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDakQsTUFBTSxDQUFDLElBQUksYUFBYSxHQUFHLFVBQVUsRUFBRSxHQUFHLENBQUM7QUFDM0MsTUFBTSxDQUFDLElBQUksYUFBYSxHQUFHLFVBQVUsRUFBRSxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuXHRDcmVhdGVkOlxyXG5cdFx0MjAgU2VwIDIwMjNcclxuXHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnRcclxuXHJcblx0Q29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5sZXQgbXNhbFNldHRpbmdzID0gKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibXNhbFNldHRpbmdzXCIpKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbXNhbHNldHRpbmdzJyk7XHJcblxyXG5leHBvcnQgbGV0IE1TQUxDb25maWcgPSBKU09OLnBhcnNlKG1zYWxTZXR0aW5ncyk7XHJcbmV4cG9ydCBsZXQgTVNBTEFwaUNvbmZpZyA9IE1TQUxDb25maWc/LmFwaTtcclxuZXhwb3J0IGxldCBNU0FMQjJDQ29uZmlnID0gTVNBTENvbmZpZz8uYjJjO1xyXG5cclxuIl19
@@ -0,0 +1,47 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 6 Dec 2018
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ //Node
20
+ import { Injectable } from '@angular/core';
21
+ import { of } from 'rxjs';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../services/auth.service";
24
+ export class AdminGuard {
25
+ auth;
26
+ constructor(auth) {
27
+ this.auth = auth;
28
+ }
29
+ isUserAdmin() {
30
+ return of(this.auth.isUserAdmin());
31
+ }
32
+ canActivate(next, state) {
33
+ return this.isUserAdmin();
34
+ }
35
+ canActivateChild(route, state) {
36
+ if (route.component) {
37
+ return this.isUserAdmin();
38
+ }
39
+ return of(true);
40
+ }
41
+ static ɵfac = function AdminGuard_Factory(t) { return new (t || AdminGuard)(i0.ɵɵinject(i1.AuthService)); };
42
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AdminGuard, factory: AdminGuard.ɵfac });
43
+ }
44
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminGuard, [{
45
+ type: Injectable
46
+ }], function () { return [{ type: i1.AuthService }]; }, null); })();
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvaWFtL2d1YXJkcy9hZG1pbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNdEMsTUFBTSxPQUFPLFVBQVU7SUFDRDtJQUFwQixZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ3JDLENBQUM7SUFFTyxXQUFXO1FBQ25CLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQTRCLEVBQUUsS0FBMEI7UUFDbEUsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDeEUsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNCO1FBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztvRUFsQlUsVUFBVTtnRUFBVixVQUFVLFdBQVYsVUFBVTs7dUZBQVYsVUFBVTtjQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDYgRGVjIDIwMThcclxuXHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBZG1pbkd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNVc2VyQWRtaW4oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblx0XHRyZXR1cm4gb2YodGhpcy5hdXRoLmlzVXNlckFkbWluKCkpO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGUobmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmlzVXNlckFkbWluKCk7XHJcbiAgfVxyXG5cclxuICBjYW5BY3RpdmF0ZUNoaWxkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHJvdXRlLmNvbXBvbmVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1VzZXJBZG1pbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvZih0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,31 @@
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import { MsalGuard, MSAL_GUARD_CONFIG } from '@azure/msal-angular';
3
+ import { InteractionType } from "@azure/msal-browser";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@azure/msal-angular";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/router";
8
+ export class AuthenticationGuard extends MsalGuard {
9
+ _msalGuardConfig;
10
+ constructor(msalGuardConfig, msalBroadcastService, authService, location, router) {
11
+ super(msalGuardConfig, msalBroadcastService, authService, location, router);
12
+ this._msalGuardConfig = msalGuardConfig;
13
+ }
14
+ setInteractionType(route) {
15
+ let interactionType = route.data.interactionType;
16
+ this._msalGuardConfig.interactionType = interactionType || InteractionType.Redirect;
17
+ }
18
+ canActivate(route, state) {
19
+ this.setInteractionType(route);
20
+ return super.canActivate(route, state);
21
+ }
22
+ static ɵfac = function AuthenticationGuard_Factory(t) { return new (t || AuthenticationGuard)(i0.ɵɵinject(MSAL_GUARD_CONFIG), i0.ɵɵinject(i1.MsalBroadcastService), i0.ɵɵinject(i1.MsalService), i0.ɵɵinject(i2.Location), i0.ɵɵinject(i3.Router)); };
23
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthenticationGuard, factory: AuthenticationGuard.ɵfac });
24
+ }
25
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthenticationGuard, [{
26
+ type: Injectable
27
+ }], function () { return [{ type: undefined, decorators: [{
28
+ type: Inject,
29
+ args: [MSAL_GUARD_CONFIG]
30
+ }] }, { type: i1.MsalBroadcastService }, { type: i1.MsalService }, { type: i2.Location }, { type: i3.Router }]; }, null); })();
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvaWFtL2d1YXJkcy9hdXRoZW50aWNhdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUF3QixTQUFTLEVBQXVDLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQUl0RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBUztJQUN4QyxnQkFBZ0IsQ0FBeUI7SUFFakQsWUFFRSxlQUF1QyxFQUN2QyxvQkFBMEMsRUFDMUMsV0FBd0IsRUFDeEIsUUFBa0IsRUFDbEIsTUFBYztRQUVkLEtBQUssQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUE2QjtRQUN0RCxJQUFJLGVBQWUsR0FBSSxLQUFLLENBQUMsSUFBWSxDQUFDLGVBQWUsQ0FBQztRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLGVBQWUsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0lBQ3RGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNuRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDOzZFQXZCVSxtQkFBbUIsY0FJcEIsaUJBQWlCO2dFQUpoQixtQkFBbUIsV0FBbkIsbUJBQW1COzt1RkFBbkIsbUJBQW1CO2NBRC9CLFVBQVU7O3NCQUtOLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDE1IE9jdCAyMDIzXHJcblxyXG4gIERlc2NyaXB0aW9uOlxyXG4gICAgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNc2FsQnJvYWRjYXN0U2VydmljZSwgTXNhbEd1YXJkLCBNc2FsR3VhcmRDb25maWd1cmF0aW9uLCBNc2FsU2VydmljZSwgTVNBTF9HVUFSRF9DT05GSUcgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuaW1wb3J0IHsgSW50ZXJhY3Rpb25UeXBlIH0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkd1YXJkIGV4dGVuZHMgTXNhbEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gIHByaXZhdGUgX21zYWxHdWFyZENvbmZpZzogTXNhbEd1YXJkQ29uZmlndXJhdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1TQUxfR1VBUkRfQ09ORklHKVxyXG4gICAgbXNhbEd1YXJkQ29uZmlnOiBNc2FsR3VhcmRDb25maWd1cmF0aW9uLFxyXG4gICAgbXNhbEJyb2FkY2FzdFNlcnZpY2U6IE1zYWxCcm9hZGNhc3RTZXJ2aWNlLFxyXG4gICAgYXV0aFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIHN1cGVyKG1zYWxHdWFyZENvbmZpZywgbXNhbEJyb2FkY2FzdFNlcnZpY2UsIGF1dGhTZXJ2aWNlLCBsb2NhdGlvbiwgcm91dGVyKTtcclxuICAgIHRoaXMuX21zYWxHdWFyZENvbmZpZyA9IG1zYWxHdWFyZENvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW50ZXJhY3Rpb25UeXBlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XHJcbiAgICBsZXQgaW50ZXJhY3Rpb25UeXBlID0gKHJvdXRlLmRhdGEgYXMgYW55KS5pbnRlcmFjdGlvblR5cGU7XHJcbiAgICB0aGlzLl9tc2FsR3VhcmRDb25maWcuaW50ZXJhY3Rpb25UeXBlID0gaW50ZXJhY3Rpb25UeXBlIHx8IEludGVyYWN0aW9uVHlwZS5SZWRpcmVjdDtcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHtcclxuICAgIHRoaXMuc2V0SW50ZXJhY3Rpb25UeXBlKHJvdXRlKTtcclxuICAgIHJldHVybiBzdXBlci5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,20 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ QA
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+
9
+ Created:
10
+ 6 Dec 2018
11
+
12
+ Description:
13
+ Identity and Access Management
14
+
15
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
16
+ </file>
17
+ */
18
+ export * from './admin.guard';
19
+ export * from './authentication.guard';
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvaWFtL2d1YXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztFQWdCRTtBQUVGLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgUUFcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgNiBEZWMgMjAxOFxyXG5cclxuICBEZXNjcmlwdGlvbjpcclxuICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vYWRtaW4uZ3VhcmQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLmd1YXJkJztcclxuXHJcbiJdfQ==
@@ -0,0 +1,54 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 6 Dec 2018
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ //Node
20
+ import { CommonModule } from '@angular/common';
21
+ import { HttpClientModule } from '@angular/common/http';
22
+ import { NgModule } from '@angular/core';
23
+ //Routes
24
+ import { IAMRouterModule, PAGES } from "./iam-pages.routes";
25
+ import * as i0 from "@angular/core";
26
+ import * as i1 from "./pages/signin.page";
27
+ import * as i2 from "./pages/signup.page";
28
+ import * as i3 from "./pages/signout.page";
29
+ import * as i4 from "@angular/router";
30
+ export class AnatolyIAMPagesModule {
31
+ static ɵfac = function AnatolyIAMPagesModule_Factory(t) { return new (t || AnatolyIAMPagesModule)(); };
32
+ static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyIAMPagesModule });
33
+ static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
34
+ HttpClientModule,
35
+ IAMRouterModule] });
36
+ }
37
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnatolyIAMPagesModule, [{
38
+ type: NgModule,
39
+ args: [{
40
+ imports: [
41
+ CommonModule,
42
+ HttpClientModule,
43
+ IAMRouterModule
44
+ ],
45
+ exports: [],
46
+ declarations: [
47
+ ...PAGES
48
+ ],
49
+ providers: []
50
+ }]
51
+ }], null, null); })();
52
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyIAMPagesModule, { declarations: [i1.SignInPage, i2.SignUpPage, i3.SignOutPage], imports: [CommonModule,
53
+ HttpClientModule, i4.RouterModule] }); })();
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLXBhZ2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9pYW0vaWFtLXBhZ2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsUUFBUTtBQUNSLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLHFCQUFxQjsrRUFBckIscUJBQXFCOzREQUFyQixxQkFBcUI7Z0VBWjlCLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZUFBZTs7dUZBVU4scUJBQXFCO2NBZGpDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixnQkFBZ0I7b0JBQ2hCLGVBQWU7aUJBQ2hCO2dCQUNELE9BQU8sRUFBRSxFQUNSO2dCQUNELFlBQVksRUFBRTtvQkFDWixHQUFHLEtBQUs7aUJBQ1Q7Z0JBQ0QsU0FBUyxFQUFFLEVBQ1Y7YUFDRjs7d0ZBQ1kscUJBQXFCLDRFQVo5QixZQUFZO1FBQ1osZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDYgRGVjIDIwMThcclxuXHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vUm91dGVzXHJcbmltcG9ydCB7IElBTVJvdXRlck1vZHVsZSwgUEFHRVMgfSBmcm9tIFwiLi9pYW0tcGFnZXMucm91dGVzXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICBJQU1Sb3V0ZXJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgLi4uUEFHRVNcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFuYXRvbHlJQU1QYWdlc01vZHVsZSB7XHJcbn1cclxuIl19
@@ -0,0 +1,45 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 2 May 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ //Node
20
+ import { RouterModule } from "@angular/router";
21
+ //Pages
22
+ import { SignInPage } from "./pages/signin.page";
23
+ import { SignOutPage } from "./pages/signout.page";
24
+ import { SignUpPage } from "./pages/signup.page";
25
+ const routes = [
26
+ {
27
+ path: "signin",
28
+ component: SignInPage
29
+ },
30
+ {
31
+ path: "signup",
32
+ component: SignUpPage
33
+ },
34
+ {
35
+ path: "signout",
36
+ component: SignOutPage
37
+ }
38
+ ];
39
+ export const IAMRouterModule = RouterModule.forChild(routes);
40
+ export const PAGES = [
41
+ SignInPage,
42
+ SignUpPage,
43
+ SignOutPage
44
+ ];
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLXBhZ2VzLnJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9pYW0vaWFtLXBhZ2VzLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXZELE9BQU87QUFDUCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLFVBQVU7S0FDdEI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLFVBQVU7S0FDdEI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUyxFQUFFLFdBQVc7S0FDdkI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLFVBQVU7SUFDVixVQUFVO0lBQ1YsV0FBVztDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuXHRDcmVhdGVkOlxyXG5cdFx0MiBNYXkgMjAyM1xyXG5cclxuICBEZXNjcmlwdGlvbjpcclxuICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudFxyXG5cclxuXHRDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vUGFnZXNcclxuaW1wb3J0IHsgU2lnbkluUGFnZSB9IGZyb20gXCIuL3BhZ2VzL3NpZ25pbi5wYWdlXCI7XHJcbmltcG9ydCB7IFNpZ25PdXRQYWdlIH0gZnJvbSBcIi4vcGFnZXMvc2lnbm91dC5wYWdlXCI7XHJcbmltcG9ydCB7IFNpZ25VcFBhZ2UgfSBmcm9tIFwiLi9wYWdlcy9zaWdudXAucGFnZVwiO1xyXG5cclxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXHJcbiAge1xyXG4gICAgcGF0aDogXCJzaWduaW5cIixcclxuICAgIGNvbXBvbmVudDogU2lnbkluUGFnZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgcGF0aDogXCJzaWdudXBcIixcclxuICAgIGNvbXBvbmVudDogU2lnblVwUGFnZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgcGF0aDogXCJzaWdub3V0XCIsXHJcbiAgICBjb21wb25lbnQ6IFNpZ25PdXRQYWdlXHJcbiAgfVxyXG5dO1xyXG5cclxuZXhwb3J0IGNvbnN0IElBTVJvdXRlck1vZHVsZSA9IFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpO1xyXG5leHBvcnQgY29uc3QgUEFHRVMgPSBbXHJcbiAgU2lnbkluUGFnZSxcclxuICBTaWduVXBQYWdlLFxyXG4gIFNpZ25PdXRQYWdlXHJcbl07XHJcbiJdfQ==
@@ -0,0 +1,100 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 6 Dec 2018
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ //Node
20
+ import { CommonModule } from '@angular/common';
21
+ import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
22
+ import { NgModule } from '@angular/core';
23
+ import { MsalBroadcastService, MsalInterceptor, MsalModule, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG } from '@azure/msal-angular';
24
+ //App
25
+ import { MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory } from './configs';
26
+ import { AuthenticationGuard, AdminGuard } from './guards';
27
+ import { AuthService } from './services/auth.service';
28
+ import * as i0 from "@angular/core";
29
+ export class AnatolyIAMModule {
30
+ static ɵfac = function AnatolyIAMModule_Factory(t) { return new (t || AnatolyIAMModule)(); };
31
+ static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyIAMModule });
32
+ static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
33
+ {
34
+ provide: HTTP_INTERCEPTORS,
35
+ useClass: MsalInterceptor,
36
+ multi: true
37
+ },
38
+ {
39
+ provide: MSAL_INTERCEPTOR_CONFIG,
40
+ useFactory: MSALInterceptorConfigFactory
41
+ },
42
+ {
43
+ provide: MSAL_GUARD_CONFIG,
44
+ useFactory: MSALGuardConfigFactory
45
+ },
46
+ {
47
+ provide: MSAL_INSTANCE,
48
+ useFactory: MSALInstanceFactory
49
+ },
50
+ MsalService,
51
+ MsalBroadcastService,
52
+ //App
53
+ AuthService,
54
+ AuthenticationGuard,
55
+ AdminGuard
56
+ ], imports: [CommonModule,
57
+ HttpClientModule,
58
+ MsalModule] });
59
+ }
60
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnatolyIAMModule, [{
61
+ type: NgModule,
62
+ args: [{
63
+ imports: [
64
+ CommonModule,
65
+ HttpClientModule,
66
+ MsalModule
67
+ ],
68
+ exports: [],
69
+ declarations: [],
70
+ providers: [
71
+ {
72
+ provide: HTTP_INTERCEPTORS,
73
+ useClass: MsalInterceptor,
74
+ multi: true
75
+ },
76
+ {
77
+ provide: MSAL_INTERCEPTOR_CONFIG,
78
+ useFactory: MSALInterceptorConfigFactory
79
+ },
80
+ {
81
+ provide: MSAL_GUARD_CONFIG,
82
+ useFactory: MSALGuardConfigFactory
83
+ },
84
+ {
85
+ provide: MSAL_INSTANCE,
86
+ useFactory: MSALInstanceFactory
87
+ },
88
+ MsalService,
89
+ MsalBroadcastService,
90
+ //App
91
+ AuthService,
92
+ AuthenticationGuard,
93
+ AdminGuard
94
+ ]
95
+ }]
96
+ }], null, null); })();
97
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyIAMModule, { imports: [CommonModule,
98
+ HttpClientModule,
99
+ MsalModule] }); })();
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9pYW0vaWFtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhLLEtBQUs7QUFDTCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBdUN0RCxNQUFNLE9BQU8sZ0JBQWdCOzBFQUFoQixnQkFBZ0I7NERBQWhCLGdCQUFnQjtpRUEzQmhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxVQUFVLEVBQUUsNEJBQTRCO2FBQ3pDO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsVUFBVSxFQUFFLHNCQUFzQjthQUNuQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixVQUFVLEVBQUUsbUJBQW1CO2FBQ2hDO1lBQ0QsV0FBVztZQUNYLG9CQUFvQjtZQUVwQixLQUFLO1lBQ0wsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixVQUFVO1NBQ1gsWUFqQ0MsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixVQUFVOzt1RkFpQ0QsZ0JBQWdCO2NBckM1QixRQUFRO2VBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osZ0JBQWdCO29CQUNoQixVQUFVO2lCQUNYO2dCQUNELE9BQU8sRUFBRSxFQUNSO2dCQUNELFlBQVksRUFBRSxFQUNiO2dCQUNELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixRQUFRLEVBQUUsZUFBZTt3QkFDekIsS0FBSyxFQUFFLElBQUk7cUJBQ1o7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLHVCQUF1Qjt3QkFDaEMsVUFBVSxFQUFFLDRCQUE0QjtxQkFDekM7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsVUFBVSxFQUFFLHNCQUFzQjtxQkFDbkM7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLFVBQVUsRUFBRSxtQkFBbUI7cUJBQ2hDO29CQUNELFdBQVc7b0JBQ1gsb0JBQW9CO29CQUVwQixLQUFLO29CQUNMLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixVQUFVO2lCQUNYO2FBQ0Y7O3dGQUNZLGdCQUFnQixjQW5DekIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDYgRGVjIDIwMThcclxuXHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSwgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1zYWxCcm9hZGNhc3RTZXJ2aWNlLCBNc2FsSW50ZXJjZXB0b3IsIE1zYWxNb2R1bGUsIE1zYWxTZXJ2aWNlLCBNU0FMX0dVQVJEX0NPTkZJRywgTVNBTF9JTlNUQU5DRSwgTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IE1TQUxHdWFyZENvbmZpZ0ZhY3RvcnksIE1TQUxJbnN0YW5jZUZhY3RvcnksIE1TQUxJbnRlcmNlcHRvckNvbmZpZ0ZhY3RvcnkgfSBmcm9tICcuL2NvbmZpZ3MnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkd1YXJkLCBBZG1pbkd1YXJkIH0gZnJvbSAnLi9ndWFyZHMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIE1zYWxNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICB1c2VDbGFzczogTXNhbEludGVyY2VwdG9yLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IE1TQUxJbnRlcmNlcHRvckNvbmZpZ0ZhY3RvcnlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE1TQUxfR1VBUkRfQ09ORklHLFxyXG4gICAgICB1c2VGYWN0b3J5OiBNU0FMR3VhcmRDb25maWdGYWN0b3J5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBNU0FMX0lOU1RBTkNFLFxyXG4gICAgICB1c2VGYWN0b3J5OiBNU0FMSW5zdGFuY2VGYWN0b3J5XHJcbiAgICB9LFxyXG4gICAgTXNhbFNlcnZpY2UsXHJcbiAgICBNc2FsQnJvYWRjYXN0U2VydmljZSxcclxuXHJcbiAgICAvL0FwcFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBBdXRoZW50aWNhdGlvbkd1YXJkLFxyXG4gICAgQWRtaW5HdWFyZFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFuYXRvbHlJQU1Nb2R1bGUge1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 27 Nov 2023
12
+
13
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
14
+ </file>
15
+ */
16
+ //services
17
+ export * from './services/auth.service';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvaWFtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsVUFBVTtBQUNWLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjcgTm92IDIwMjNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL3NlcnZpY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuIl19
@@ -0,0 +1,40 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 20 Sep 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ //Node
20
+ import { Component } from '@angular/core';
21
+ import { BasePage } from '../../ui/components/base/base.page';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../services/auth.service";
24
+ export class SignInPage extends BasePage {
25
+ auth;
26
+ constructor(auth) {
27
+ super();
28
+ this.auth = auth;
29
+ }
30
+ ngOnInit() {
31
+ this.auth.login().subscribe();
32
+ }
33
+ static ɵfac = function SignInPage_Factory(t) { return new (t || SignInPage)(i0.ɵɵdirectiveInject(i1.AuthService)); };
34
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SignInPage, selectors: [["iam-signin-page"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SignInPage_Template(rf, ctx) { }, encapsulation: 2 });
35
+ }
36
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SignInPage, [{
37
+ type: Component,
38
+ args: [{ selector: 'iam-signin-page', template: "" }]
39
+ }], function () { return [{ type: i1.AuthService }]; }, null); })();
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvaWFtL3BhZ2VzL3NpZ25pbi5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBTTlELE1BQU0sT0FBTyxVQUFXLFNBQVEsUUFBUTtJQUNsQjtJQUFwQixZQUFvQixJQUFpQjtRQUNuQyxLQUFLLEVBQUUsQ0FBQztRQURVLFNBQUksR0FBSixJQUFJLENBQWE7SUFFckMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7b0VBUFUsVUFBVTs2REFBVixVQUFVOzt1RkFBVixVQUFVO2NBSnRCLFNBQVM7MkJBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDIwIFNlcCAyMDIzXHJcblxyXG4gIERlc2NyaXB0aW9uOlxyXG4gICAgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSAnLi4vLi4vdWkvY29tcG9uZW50cy9iYXNlL2Jhc2UucGFnZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lhbS1zaWduaW4tcGFnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25pbi5wYWdlLmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWduSW5QYWdlIGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXV0aC5sb2dpbigpLnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,40 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 20 Sep 2023
12
+
13
+ Description:
14
+ Identity and Access Management
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ //Node
20
+ import { Component } from '@angular/core';
21
+ import { BasePage } from '../../ui/components/base/base.page';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../services/auth.service";
24
+ export class SignOutPage extends BasePage {
25
+ auth;
26
+ constructor(auth) {
27
+ super();
28
+ this.auth = auth;
29
+ }
30
+ ngOnInit() {
31
+ this.auth.logout();
32
+ }
33
+ static ɵfac = function SignOutPage_Factory(t) { return new (t || SignOutPage)(i0.ɵɵdirectiveInject(i1.AuthService)); };
34
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SignOutPage, selectors: [["iam-signout-page"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function SignOutPage_Template(rf, ctx) { }, encapsulation: 2 });
35
+ }
36
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SignOutPage, [{
37
+ type: Component,
38
+ args: [{ selector: 'iam-signout-page', template: "" }]
39
+ }], function () { return [{ type: i1.AuthService }]; }, null); })();
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbm91dC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2lhbS9wYWdlcy9zaWdub3V0LnBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFNOUQsTUFBTSxPQUFPLFdBQVksU0FBUSxRQUFRO0lBQ25CO0lBQXBCLFlBQW9CLElBQWlCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUVyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDckIsQ0FBQztxRUFQVSxXQUFXOzZEQUFYLFdBQVc7O3VGQUFYLFdBQVc7Y0FKdkIsU0FBUzsyQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuXHRDcmVhdGVkOlxyXG5cdFx0MjAgU2VwIDIwMjNcclxuXHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnRcclxuXHJcblx0Q29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi91aS9jb21wb25lbnRzL2Jhc2UvYmFzZS5wYWdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWFtLXNpZ25vdXQtcGFnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25vdXQucGFnZS5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbk91dFBhZ2UgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoOiBBdXRoU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hdXRoLmxvZ291dCgpO1xyXG4gIH1cclxufVxyXG4iXX0=