@annalib/anna-cognito-lib 2.2.41 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/{esm2020 → esm2022}/annalib-anna-cognito-lib.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/anna-cognito-lib.module.mjs +91 -91
  3. package/{esm2020 → esm2022}/lib/components/anna-login/anna-login.component.mjs +55 -54
  4. package/{esm2020 → esm2022}/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.mjs +22 -22
  5. package/{esm2020 → esm2022}/lib/components/forgot-password/forgot-password.component.mjs +123 -123
  6. package/{esm2020 → esm2022}/lib/components/password-matching/password-matching.component.mjs +90 -90
  7. package/{esm2020 → esm2022}/lib/components/powered-by-logo-template/powered-by-logo-template.component.mjs +15 -15
  8. package/{esm2020 → esm2022}/lib/components/set-new-password/set-new-password.component.mjs +63 -63
  9. package/{esm2020 → esm2022}/lib/components/sso-login/sso-login.component.mjs +32 -32
  10. package/{esm2020 → esm2022}/lib/components/surewaves-year-logo/surewaves-year-logo.component.mjs +15 -15
  11. package/{esm2020 → esm2022}/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.mjs +78 -78
  12. package/{esm2020 → esm2022}/lib/components/version-and-term-policy/version-and-term-policy.component.mjs +20 -20
  13. package/{esm2020 → esm2022}/lib/config/acl-service.token.mjs +3 -3
  14. package/{esm2020 → esm2022}/lib/config/auth-service.token.mjs +3 -3
  15. package/{esm2020 → esm2022}/lib/config/config-service.token.mjs +3 -3
  16. package/{esm2020 → esm2022}/lib/config/sso-login-service.token.mjs +3 -3
  17. package/esm2022/lib/constants/loginConstant.mjs +55 -0
  18. package/{esm2020 → esm2022}/lib/directives/spinner-button/index.mjs +1 -1
  19. package/{esm2020 → esm2022}/lib/directives/spinner-button/spinner-button.directive.mjs +42 -42
  20. package/{esm2020 → esm2022}/lib/models/auth.model.mjs +23 -23
  21. package/{esm2020 → esm2022}/lib/services/acl.service.mjs +27 -27
  22. package/{esm2020 → esm2022}/lib/services/auth.service.mjs +306 -306
  23. package/{esm2020 → esm2022}/lib/services/config.service.mjs +20 -20
  24. package/{esm2020 → esm2022}/lib/services/sso-login.service.mjs +20 -20
  25. package/{esm2020 → esm2022}/public-api.mjs +28 -28
  26. package/{fesm2020 → fesm2022}/annalib-anna-cognito-lib.mjs +922 -921
  27. package/fesm2022/annalib-anna-cognito-lib.mjs.map +1 -0
  28. package/index.d.ts +5 -5
  29. package/lib/anna-cognito-lib.module.d.ts +21 -21
  30. package/lib/components/anna-login/anna-login.component.d.ts +20 -20
  31. package/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.d.ts +10 -10
  32. package/lib/components/forgot-password/forgot-password.component.d.ts +42 -42
  33. package/lib/components/password-matching/password-matching.component.d.ts +22 -22
  34. package/lib/components/powered-by-logo-template/powered-by-logo-template.component.d.ts +8 -8
  35. package/lib/components/set-new-password/set-new-password.component.d.ts +28 -28
  36. package/lib/components/sso-login/sso-login.component.d.ts +14 -14
  37. package/lib/components/surewaves-year-logo/surewaves-year-logo.component.d.ts +9 -9
  38. package/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.d.ts +32 -32
  39. package/lib/components/version-and-term-policy/version-and-term-policy.component.d.ts +10 -10
  40. package/lib/config/acl-service.token.d.ts +36 -36
  41. package/lib/config/auth-service.token.d.ts +23 -23
  42. package/lib/config/config-service.token.d.ts +13 -13
  43. package/lib/config/sso-login-service.token.d.ts +10 -10
  44. package/lib/constants/loginConstant.d.ts +49 -49
  45. package/lib/directives/spinner-button/index.d.ts +1 -1
  46. package/lib/directives/spinner-button/spinner-button.directive.d.ts +15 -15
  47. package/lib/models/auth.model.d.ts +21 -21
  48. package/lib/services/acl.service.d.ts +11 -11
  49. package/lib/services/auth.service.d.ts +47 -47
  50. package/lib/services/config.service.d.ts +8 -8
  51. package/lib/services/sso-login.service.d.ts +8 -8
  52. package/package.json +7 -13
  53. package/public-api.d.ts +21 -21
  54. package/esm2020/lib/constants/loginConstant.mjs +0 -55
  55. package/fesm2015/annalib-anna-cognito-lib.mjs +0 -1030
  56. package/fesm2015/annalib-anna-cognito-lib.mjs.map +0 -1
  57. package/fesm2020/annalib-anna-cognito-lib.mjs.map +0 -1
@@ -1,24 +1,24 @@
1
- export class AuthenticationData {
2
- constructor(Username, Password) {
3
- this.Username = Username;
4
- this.Password = Password;
5
- }
6
- }
7
- export class UserPoolInformation {
8
- constructor(UserPoolId, ClientId) {
9
- this.UserPoolId = UserPoolId;
10
- this.ClientId = ClientId;
11
- }
12
- }
13
- export class UsernameInfo {
14
- constructor(object) {
15
- this.isUsernameAvailable = object.isUsernameAvailable;
16
- }
17
- }
18
- export class UserState {
19
- constructor(userState) {
20
- this.userStatus = userState;
21
- this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';
22
- }
23
- }
1
+ export class AuthenticationData {
2
+ constructor(Username, Password) {
3
+ this.Username = Username;
4
+ this.Password = Password;
5
+ }
6
+ }
7
+ export class UserPoolInformation {
8
+ constructor(UserPoolId, ClientId) {
9
+ this.UserPoolId = UserPoolId;
10
+ this.ClientId = ClientId;
11
+ }
12
+ }
13
+ export class UsernameInfo {
14
+ constructor(object) {
15
+ this.isUsernameAvailable = object.isUsernameAvailable;
16
+ }
17
+ }
18
+ export class UserState {
19
+ constructor(userState) {
20
+ this.userStatus = userState;
21
+ this.isUserWithTempPassword = userState == 'FORCE_CHANGE_PASSWORD';
22
+ }
23
+ }
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29nbml0by1saWIvc3JjL2xpYi9tb2RlbHMvYXV0aC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQVksUUFBZ0IsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQVksVUFBa0IsRUFBRSxRQUFnQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFZLE1BQXdDO1FBQ2hELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFBWSxTQUFpQjtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxJQUFJLHVCQUF1QixDQUFDO0lBQ3ZFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkRhdGEge1xyXG4gIFVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgUGFzc3dvcmQ6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihVc2VybmFtZTogc3RyaW5nLCBQYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuVXNlcm5hbWUgPSBVc2VybmFtZTtcclxuICAgICAgdGhpcy5QYXNzd29yZCA9IFBhc3N3b3JkO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJQb29sSW5mb3JtYXRpb24ge1xyXG4gIFVzZXJQb29sSWQ6IHN0cmluZztcclxuICBDbGllbnRJZDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFVzZXJQb29sSWQ6IHN0cmluZywgQ2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgICB0aGlzLlVzZXJQb29sSWQgPSBVc2VyUG9vbElkO1xyXG4gICAgICB0aGlzLkNsaWVudElkID0gQ2xpZW50SWQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlcm5hbWVJbmZvIHtcclxuICBpc1VzZXJuYW1lQXZhaWxhYmxlOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKG9iamVjdDogeyBpc1VzZXJuYW1lQXZhaWxhYmxlOiBib29sZWFuIH0pIHtcclxuICAgICAgdGhpcy5pc1VzZXJuYW1lQXZhaWxhYmxlID0gb2JqZWN0LmlzVXNlcm5hbWVBdmFpbGFibGU7XHJcbiAgfVxyXG59IFxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJTdGF0ZSB7XHJcbiAgdXNlclN0YXR1czogc3RyaW5nO1xyXG4gIGlzVXNlcldpdGhUZW1wUGFzc3dvcmQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IodXNlclN0YXRlOiBzdHJpbmcgKSB7XHJcbiAgICAgIHRoaXMudXNlclN0YXR1cyA9IHVzZXJTdGF0ZTtcclxuICAgICAgdGhpcy5pc1VzZXJXaXRoVGVtcFBhc3N3b3JkID0gdXNlclN0YXRlID09ICdGT1JDRV9DSEFOR0VfUEFTU1dPUkQnO1xyXG4gIH1cclxufSJdfQ==
@@ -1,27 +1,27 @@
1
- import { Inject, Injectable } from "@angular/core";
2
- import { ACL_SERVICE_TOKEN } from '../config/acl-service.token';
3
- import * as i0 from "@angular/core";
4
- export class AnnaLibAclService {
5
- constructor(consumingProjectAclService) {
6
- this.consumingProjectAclService = consumingProjectAclService;
7
- }
8
- isUserAuthorisedToAccessPage(url) {
9
- let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];
10
- return this.userGroupsInCognitoJWT.includes(privilegeName);
11
- }
12
- isUserAuthorisedToAccessElement(privilege) {
13
- return this.userGroupsInCognitoJWT.includes(privilege);
14
- }
15
- }
16
- AnnaLibAclServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AnnaLibAclService, deps: [{ token: ACL_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
17
- AnnaLibAclService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AnnaLibAclService, providedIn: "root" });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AnnaLibAclService, decorators: [{
19
- type: Injectable,
20
- args: [{
21
- providedIn: "root",
22
- }]
23
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
24
- type: Inject,
25
- args: [ACL_SERVICE_TOKEN]
26
- }] }]; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvc2VydmljZXMvYWNsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBSzdFLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFBOEMsMEJBQXVDO1FBQXZDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBYTtJQUFHLENBQUM7SUFHekYsNEJBQTRCLENBQUMsR0FBVztRQUNwQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEYsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7OEdBWFEsaUJBQWlCLGtCQUNOLGlCQUFpQjtrSEFENUIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFFZ0IsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJQWNsU2VydmljZSwgQUNMX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi9jb25maWcvYWNsLXNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTGliQWNsU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEFDTF9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdEFjbFNlcnZpY2U6IElBY2xTZXJ2aWNlKSB7fVxyXG5cclxuICAgIHVzZXJHcm91cHNJbkNvZ25pdG9KV1Q6IHN0cmluZ1tdO1xyXG4gICAgaXNVc2VyQXV0aG9yaXNlZFRvQWNjZXNzUGFnZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBwcml2aWxlZ2VOYW1lID0gdGhpcy5jb25zdW1pbmdQcm9qZWN0QWNsU2VydmljZS51cmxUb0NvZ25pdG9Qcml2aWxlZ2VNYXBbdXJsXTtcclxuICAgICAgICByZXR1cm4gdGhpcy51c2VyR3JvdXBzSW5Db2duaXRvSldULmluY2x1ZGVzKHByaXZpbGVnZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVXNlckF1dGhvcmlzZWRUb0FjY2Vzc0VsZW1lbnQocHJpdmlsZWdlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51c2VyR3JvdXBzSW5Db2duaXRvSldULmluY2x1ZGVzKHByaXZpbGVnZSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import { ACL_SERVICE_TOKEN } from '../config/acl-service.token';
3
+ import * as i0 from "@angular/core";
4
+ export class AnnaLibAclService {
5
+ constructor(consumingProjectAclService) {
6
+ this.consumingProjectAclService = consumingProjectAclService;
7
+ }
8
+ isUserAuthorisedToAccessPage(url) {
9
+ let privilegeName = this.consumingProjectAclService.urlToCognitoPrivilegeMap[url];
10
+ return this.userGroupsInCognitoJWT.includes(privilegeName);
11
+ }
12
+ isUserAuthorisedToAccessElement(privilege) {
13
+ return this.userGroupsInCognitoJWT.includes(privilege);
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaLibAclService, deps: [{ token: ACL_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaLibAclService, providedIn: "root" }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AnnaLibAclService, decorators: [{
19
+ type: Injectable,
20
+ args: [{
21
+ providedIn: "root",
22
+ }]
23
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
24
+ type: Inject,
25
+ args: [ACL_SERVICE_TOKEN]
26
+ }] }]; } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvc2VydmljZXMvYWNsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBSzdFLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFBOEMsMEJBQXVDO1FBQXZDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBYTtJQUFHLENBQUM7SUFHekYsNEJBQTRCLENBQUMsR0FBVztRQUNwQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEYsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQzsrR0FYUSxpQkFBaUIsa0JBQ04saUJBQWlCO21IQUQ1QixpQkFBaUIsY0FGZCxNQUFNOzs0RkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFFZ0IsTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJQWNsU2VydmljZSwgQUNMX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi9jb25maWcvYWNsLXNlcnZpY2UudG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTGliQWNsU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEFDTF9TRVJWSUNFX1RPS0VOKSBwdWJsaWMgY29uc3VtaW5nUHJvamVjdEFjbFNlcnZpY2U6IElBY2xTZXJ2aWNlKSB7fVxyXG5cclxuICAgIHVzZXJHcm91cHNJbkNvZ25pdG9KV1Q6IHN0cmluZ1tdO1xyXG4gICAgaXNVc2VyQXV0aG9yaXNlZFRvQWNjZXNzUGFnZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBwcml2aWxlZ2VOYW1lID0gdGhpcy5jb25zdW1pbmdQcm9qZWN0QWNsU2VydmljZS51cmxUb0NvZ25pdG9Qcml2aWxlZ2VNYXBbdXJsXTtcclxuICAgICAgICByZXR1cm4gdGhpcy51c2VyR3JvdXBzSW5Db2duaXRvSldULmluY2x1ZGVzKHByaXZpbGVnZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVXNlckF1dGhvcmlzZWRUb0FjY2Vzc0VsZW1lbnQocHJpdmlsZWdlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51c2VyR3JvdXBzSW5Db2duaXRvSldULmluY2x1ZGVzKHByaXZpbGVnZSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==