@nibssplc/cams-sdk-react 1.0.0-rc.7 → 1.0.0-rc.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -4,6 +4,7 @@ var React = require('react');
4
4
  var camsSdk = require('@nibssplc/cams-sdk');
5
5
  var msalReact = require('@azure/msal-react');
6
6
  var msalBrowser = require('@azure/msal-browser');
7
+ var jsxRuntime = require('react/jsx-runtime');
7
8
  var z = require('zod');
8
9
  var inputOtp = require('input-otp');
9
10
  var lucideReact = require('lucide-react');
@@ -17,8 +18,6 @@ var classVarianceAuthority = require('class-variance-authority');
17
18
  var DialogPrimitive = require('@radix-ui/react-dialog');
18
19
  var sonner = require('sonner');
19
20
  var framerMotion = require('framer-motion');
20
- var axios = require('axios');
21
- var https = require('https');
22
21
 
23
22
  function _interopNamespaceDefault(e) {
24
23
  var n = Object.create(null);
@@ -81,7 +80,7 @@ function __rest(s, e) {
81
80
  return t;
82
81
  }
83
82
 
84
- function __awaiter(thisArg, _arguments, P, generator) {
83
+ function __awaiter$1(thisArg, _arguments, P, generator) {
85
84
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
86
85
  return new (P || (P = Promise))(function (resolve, reject) {
87
86
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -91,7 +90,7 @@ function __awaiter(thisArg, _arguments, P, generator) {
91
90
  });
92
91
  }
93
92
 
94
- function __generator(thisArg, body) {
93
+ function __generator$1(thisArg, body) {
95
94
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
96
95
  return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
97
96
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -188,10 +187,10 @@ function useCAMSAuth(options) {
188
187
  }
189
188
  }
190
189
  }, [options.storageKey]);
191
- var login = React.useCallback(function (config) { return __awaiter(_this, void 0, void 0, function () {
190
+ var login = React.useCallback(function (config) { return __awaiter$1(_this, void 0, void 0, function () {
192
191
  var loginConfig, userProfile, err_1, e, isPopupClosedError, restoredToken, userProfile;
193
192
  var _a, _b, _c;
194
- return __generator(this, function (_d) {
193
+ return __generator$1(this, function (_d) {
195
194
  switch (_d.label) {
196
195
  case 0:
197
196
  if (!sessionManagerRef.current)
@@ -239,8 +238,8 @@ function useCAMSAuth(options) {
239
238
  }
240
239
  });
241
240
  }); }, [options.idleTimeout]);
242
- var logout = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
243
- return __generator(this, function (_a) {
241
+ var logout = React.useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
242
+ return __generator$1(this, function (_a) {
244
243
  switch (_a.label) {
245
244
  case 0:
246
245
  if (!sessionManagerRef.current)
@@ -270,11 +269,154 @@ function useCAMSAuth(options) {
270
269
  };
271
270
  }
272
271
 
273
- var setCookie$1 = function (name, value, days) {
272
+ var _a;
273
+ // Crypto polyfill for MSAL browser compatibility
274
+ // Only apply if crypto.subtle is completely missing
275
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
276
+ // Ensure crypto object exists
277
+ if (!window.crypto) {
278
+ window.crypto = {};
279
+ }
280
+ // Polyfill getRandomValues
281
+ if (!window.crypto.getRandomValues) {
282
+ window.crypto.getRandomValues = function (array) {
283
+ var bytes = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
284
+ for (var i = 0; i < bytes.length; i++) {
285
+ bytes[i] = Math.floor(Math.random() * 256);
286
+ }
287
+ return array;
288
+ };
289
+ }
290
+ var sha256_1 = function (data) { return __awaiter(void 0, void 0, void 0, function () {
291
+ var toUint8, bytes, hash, k, ml, msg, dv, high, low, i, w, j, j, s0, s1, a, b, c, d, e, f, g, h, j, S1, ch, temp1, S0, maj, temp2, result, i;
292
+ return __generator(this, function (_a) {
293
+ toUint8 = function (src) {
294
+ if (src instanceof ArrayBuffer)
295
+ return new Uint8Array(src);
296
+ if (ArrayBuffer.isView(src)) {
297
+ var view = src;
298
+ return new Uint8Array(view.buffer, view.byteOffset || 0, view.byteLength);
299
+ }
300
+ throw new TypeError("Unsupported BufferSource");
301
+ };
302
+ bytes = toUint8(data);
303
+ hash = new Uint32Array(8);
304
+ k = new Uint32Array([
305
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
306
+ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
307
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
308
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
309
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
310
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
311
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
312
+ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
313
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
314
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
315
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
316
+ ]);
317
+ hash[0] = 0x6a09e667;
318
+ hash[1] = 0xbb67ae85;
319
+ hash[2] = 0x3c6ef372;
320
+ hash[3] = 0xa54ff53a;
321
+ hash[4] = 0x510e527f;
322
+ hash[5] = 0x9b05688c;
323
+ hash[6] = 0x1f83d9ab;
324
+ hash[7] = 0x5be0cd19;
325
+ ml = bytes.length * 8;
326
+ msg = new Uint8Array(bytes.length + 64 + ((64 - ((bytes.length + 9) % 64)) % 64));
327
+ msg.set(bytes);
328
+ msg[bytes.length] = 0x80;
329
+ dv = new DataView(msg.buffer);
330
+ high = Math.floor(ml / 0x100000000);
331
+ low = ml >>> 0;
332
+ dv.setUint32(msg.length - 8, high, false);
333
+ dv.setUint32(msg.length - 4, low, false);
334
+ for (i = 0; i < msg.length; i += 64) {
335
+ w = new Uint32Array(64);
336
+ for (j = 0; j < 16; j++)
337
+ w[j] = new DataView(msg.buffer).getUint32(i + j * 4, false);
338
+ for (j = 16; j < 64; j++) {
339
+ s0 = ((w[j - 15] >>> 7) | (w[j - 15] << 25)) ^
340
+ ((w[j - 15] >>> 18) | (w[j - 15] << 14)) ^
341
+ (w[j - 15] >>> 3);
342
+ s1 = ((w[j - 2] >>> 17) | (w[j - 2] << 15)) ^
343
+ ((w[j - 2] >>> 19) | (w[j - 2] << 13)) ^
344
+ (w[j - 2] >>> 10);
345
+ w[j] = (w[j - 16] + s0 + w[j - 7] + s1) >>> 0;
346
+ }
347
+ a = hash[0], b = hash[1], c = hash[2], d = hash[3], e = hash[4], f = hash[5], g = hash[6], h = hash[7];
348
+ for (j = 0; j < 64; j++) {
349
+ S1 = ((e >>> 6) | (e << 26)) ^
350
+ ((e >>> 11) | (e << 21)) ^
351
+ ((e >>> 25) | (e << 7));
352
+ ch = (e & f) ^ (~e & g);
353
+ temp1 = (h + S1 + ch + k[j] + w[j]) >>> 0;
354
+ S0 = ((a >>> 2) | (a << 30)) ^
355
+ ((a >>> 13) | (a << 19)) ^
356
+ ((a >>> 22) | (a << 10));
357
+ maj = (a & b) ^ (a & c) ^ (b & c);
358
+ temp2 = (S0 + maj) >>> 0;
359
+ h = g;
360
+ g = f;
361
+ f = e;
362
+ e = (d + temp1) >>> 0;
363
+ d = c;
364
+ c = b;
365
+ b = a;
366
+ a = (temp1 + temp2) >>> 0;
367
+ }
368
+ hash[0] = (hash[0] + a) >>> 0;
369
+ hash[1] = (hash[1] + b) >>> 0;
370
+ hash[2] = (hash[2] + c) >>> 0;
371
+ hash[3] = (hash[3] + d) >>> 0;
372
+ hash[4] = (hash[4] + e) >>> 0;
373
+ hash[5] = (hash[5] + f) >>> 0;
374
+ hash[6] = (hash[6] + g) >>> 0;
375
+ hash[7] = (hash[7] + h) >>> 0;
376
+ }
377
+ result = new Uint8Array(32);
378
+ for (i = 0; i < 8; i++)
379
+ new DataView(result.buffer).setUint32(i * 4, hash[i], false);
380
+ return [2 /*return*/, result.buffer];
381
+ });
382
+ }); };
383
+ // Create the polyfilled subtle object
384
+ var polyfillSubtle = {
385
+ digest: function (algorithm, data) { return __awaiter(void 0, void 0, void 0, function () {
386
+ var alg;
387
+ return __generator(this, function (_a) {
388
+ alg = typeof algorithm === "string"
389
+ ? algorithm
390
+ : algorithm.name;
391
+ if (alg === "SHA-256")
392
+ return [2 /*return*/, sha256_1(data)];
393
+ throw new Error("Unsupported algorithm: ".concat(alg));
394
+ });
395
+ }); },
396
+ };
397
+ // Set the polyfilled subtle object
398
+ window.crypto.subtle = polyfillSubtle;
399
+ // Polyfill randomUUID
400
+ if (!window.crypto.randomUUID) {
401
+ window.crypto.randomUUID =
402
+ function () {
403
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
404
+ var r = (Math.random() * 16) | 0;
405
+ var v = c === "x" ? r : (r & 0x3) | 0x8;
406
+ return v.toString(16);
407
+ });
408
+ };
409
+ }
410
+ console.log("Crypto polyfill applied (native crypto.subtle not available)");
411
+ }
412
+
413
+ var setCookie = function (name, value, days) {
414
+ if (days === void 0) { days = 1; }
274
415
  var expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();
416
+ console.log("Auth Cookie Expires >>>", { name: name, value: value, expires: expires });
275
417
  document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
276
418
  };
277
- var getCookie$1 = function (name) {
419
+ var getCookie = function (name) {
278
420
  var _a;
279
421
  return ((_a = document.cookie
280
422
  .split("; ")
@@ -285,23 +427,26 @@ var getCookie$1 = function (name) {
285
427
  .split("=")[1])
286
428
  : null;
287
429
  };
288
- var deleteCookie$1 = function (name) {
430
+ var deleteCookie = function (name) {
289
431
  document.cookie = name + "=; Max-Age=-99999999; path=/";
290
432
  };
291
433
 
292
434
  function useCAMSMSALAuth(options) {
293
435
  var _this = this;
294
- var storageKey = options.storageKey || "CAMS-MSAL-AUTH-SDK";
295
- var _a = msalReact.useMsal(), instance = _a.instance, inProgress = _a.inProgress, accounts = _a.accounts;
436
+ var optStorageKey = options.storageKey, optScopes = options.scopes, prompt = options.prompt, appCode = options.appCode, ValidateUserEndpoint = options.ValidateUserEndpoint, _a = options.activeCookiePeriod, activeCookiePeriod = _a === void 0 ? 1 : _a;
437
+ var storageKey = optStorageKey || "CAMS-MSAL-AUTH-SDK";
438
+ var _b = msalReact.useMsal(), instance = _b.instance, inProgress = _b.inProgress, accounts = _b.accounts;
296
439
  var account = msalReact.useAccount(accounts[0] || {});
297
- var _b = React.useState(null), error = _b[0], setError = _b[1];
298
- var _c = React.useState(""), idToken = _c[0], setIdToken = _c[1];
299
- var _d = React.useState(""), accessToken = _d[0], setAccessToken = _d[1];
300
- var _e = React.useState(null), mfaAuthenticator = _e[0], setMfaAuthenticator = _e[1];
301
- var _f = React.useState(false), requiresMFA = _f[0], setRequiresMFA = _f[1];
440
+ var _c = React.useState(null), error = _c[0], setError = _c[1];
441
+ var _d = React.useState(""), idToken = _d[0], setIdToken = _d[1];
442
+ var _e = React.useState(""), accessToken = _e[0], setAccessToken = _e[1];
443
+ var _f = React.useState(""), email = _f[0], setEmail = _f[1];
444
+ // const [mfaAuthenticator, setMfaAuthenticator] =
445
+ // useState<CAMSMFAAuthenticator | null>(null);
446
+ var _g = React.useState(false), requiresMFA = _g[0], setRequiresMFA = _g[1];
302
447
  var isLoading = inProgress !== msalBrowser.InteractionStatus.None;
303
448
  var isAuthenticated = !!account && !!accessToken && !requiresMFA;
304
- var scopes = options.scopes || ["openid", "profile", "email"];
449
+ var scopes = optScopes || ["openid", "profile", "email"];
305
450
  var isTokenValid = function (token) {
306
451
  try {
307
452
  var payload = JSON.parse(atob(token.split(".")[1]));
@@ -317,23 +462,17 @@ function useCAMSMSALAuth(options) {
317
462
  if (stored) {
318
463
  try {
319
464
  var _a = JSON.parse(stored), accessToken_1 = _a.accessToken, idToken_1 = _a.idToken, storedRequiresMFA = _a.requiresMFA, storedIsAuthenticated = _a.isAuthenticated;
465
+ // Restore MFA state
320
466
  if (accessToken_1 && isTokenValid(accessToken_1)) {
321
467
  setAccessToken(accessToken_1);
322
468
  setIdToken(idToken_1);
323
- // Restore MFA state
324
- if (storedRequiresMFA && !storedIsAuthenticated) {
325
- var mfaConfig = {
326
- accessToken: accessToken_1,
327
- idToken: idToken_1,
328
- appCode: options.appCode,
329
- provider: "MSAL",
330
- apiEndpoint: options.MFAEndpoint,
331
- };
332
- var authenticator = new camsSdk.CAMSMFAAuthenticator(mfaConfig);
333
- setMfaAuthenticator(authenticator);
334
- setRequiresMFA(true);
335
- }
336
- camsSdk.Logger.debug("App Code", { ">>>": options.appCode });
469
+ setRequiresMFA(storedRequiresMFA);
470
+ camsSdk.Logger.debug("Restored authentication state from storage", {
471
+ accessToken: accessToken_1,
472
+ idToken: idToken_1,
473
+ requiresMFA: storedRequiresMFA,
474
+ isAuthenticated: storedIsAuthenticated,
475
+ });
337
476
  }
338
477
  else {
339
478
  localStorage.removeItem(storageKey);
@@ -347,50 +486,26 @@ function useCAMSMSALAuth(options) {
347
486
  }
348
487
  }
349
488
  }, [accessToken, account, instance, options.storageKey]);
350
- // useEffect(() => {
351
- // const handleRedirect = async () => {
352
- // try {
353
- // const response = await instance.handleRedirectPromise();
354
- // if (response) {
355
- // const account = response.account;
356
- // instance.setActiveA ccount(account);
357
- // const tokenResponse = await instance.acq uireTokenSilent({
358
- // scopes,
359
- // account,
360
- // });
361
- // setToken(tokenResponse.accessToken);
362
- // setAccessToken(tokenResponse.accessToken);
363
- // setIdToken(tokenResponse.idTo ken);
364
- // options.onAuthSuccess?.(tokenR esponse.accessToken);
365
- // if (
366
- // typeof window !== "undefined" &&
367
- // process.env.NODE_ENV !== "test"
368
- // ) {
369
- // window.location.href = options.mfaUrl!;
370
- // }
371
- // }
372
- // } catch (err) {
373
- // console.error("Redirect handling failed:", err);
374
- // }
375
- // };
376
- // handleRedirect();
377
- // }, []);
378
- var login = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
379
- var response, mfaConfig, authenticator, err_1, camsError_1, camsError;
380
- var _a, _b, _c, _d;
381
- return __generator(this, function (_e) {
382
- switch (_e.label) {
489
+ var login = React.useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
490
+ var response, mfaConfig, authenticator, userConfig, err_1, camsError_1, camsError;
491
+ var _a;
492
+ return __generator$1(this, function (_b) {
493
+ switch (_b.label) {
383
494
  case 0:
495
+ if (inProgress !== msalBrowser.InteractionStatus.None) {
496
+ camsSdk.Logger.warn("Authentication already in progress, ignoring duplicate call");
497
+ return [2 /*return*/];
498
+ }
384
499
  setError(null);
385
- _e.label = 1;
500
+ _b.label = 1;
386
501
  case 1:
387
- _e.trys.push([1, 3, , 4]);
502
+ _b.trys.push([1, 4, , 5]);
388
503
  return [4 /*yield*/, instance.loginPopup({
389
504
  scopes: scopes,
390
- prompt: options.prompt || "login",
505
+ prompt: prompt || "login",
391
506
  })];
392
507
  case 2:
393
- response = _e.sent();
508
+ response = _b.sent();
394
509
  console.log("Login Token response:", {
395
510
  accessToken: response.accessToken,
396
511
  idToken: response.idToken,
@@ -400,26 +515,33 @@ function useCAMSMSALAuth(options) {
400
515
  mfaConfig = {
401
516
  accessToken: response.accessToken,
402
517
  idToken: response.idToken,
403
- appCode: options.appCode,
404
518
  provider: "MSAL",
405
- apiEndpoint: options.MFAEndpoint,
519
+ APIAuthEndpoint: ValidateUserEndpoint,
406
520
  };
407
- authenticator = new camsSdk.CAMSMFAAuthenticator(mfaConfig);
408
- setMfaAuthenticator(authenticator);
409
- setRequiresMFA(true);
521
+ authenticator = new camsSdk.CAMSMFAAuthenticator();
522
+ return [4 /*yield*/, authenticator.GetUserMFAConfig(mfaConfig)];
523
+ case 3:
524
+ userConfig = _b.sent();
525
+ camsSdk.Logger.info("MFA Authenticator initialized:", userConfig);
410
526
  // Don't persist as authenticated until MFA is complete
411
- if (typeof window !== "undefined") {
527
+ if (typeof window !== "undefined" && userConfig.isValid) {
412
528
  localStorage.setItem(storageKey, JSON.stringify({
413
529
  isAuthenticated: false,
414
- requiresMFA: true,
530
+ requiresMFA: userConfig.userInfo.isMFAEnabled,
415
531
  accessToken: response.accessToken,
416
532
  idToken: response.idToken,
417
533
  }));
534
+ setEmail(userConfig.userInfo.email);
535
+ setRequiresMFA(userConfig.userInfo.isMFAEnabled);
536
+ }
537
+ return [3 /*break*/, 5];
538
+ case 4:
539
+ err_1 = _b.sent();
540
+ // Handle interaction_in_progress error
541
+ if (err_1.errorCode === "interaction_in_progress") {
542
+ camsSdk.Logger.warn("Interaction already in progress, please wait");
543
+ return [2 /*return*/];
418
544
  }
419
- (_a = options.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(options, response.accessToken);
420
- return [3 /*break*/, 4];
421
- case 3:
422
- err_1 = _e.sent();
423
545
  // Handle user cancellation gracefully
424
546
  if (err_1.errorCode === "user_cancelled") {
425
547
  camsSdk.Logger.error("User cancelled login");
@@ -428,25 +550,28 @@ function useCAMSMSALAuth(options) {
428
550
  }
429
551
  // If popup is blocked
430
552
  if (err_1.errorCode === "popup_window_error" ||
431
- ((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.includes("popup"))) {
553
+ ((_a = err_1.message) === null || _a === void 0 ? void 0 : _a.includes("popup"))) {
432
554
  camsError_1 = new camsSdk.CAMSError(camsSdk.CAMSErrorType.POPUP_BLOCKED, "Popup blocked by browser. Please allow popups and try again.");
433
555
  setError(camsError_1);
434
- (_c = options.onAuthError) === null || _c === void 0 ? void 0 : _c.call(options, camsError_1);
435
556
  return [2 /*return*/];
436
557
  }
437
558
  camsError = new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "Login failed: " + err_1.message || err_1);
438
559
  setError(camsError);
439
- (_d = options.onAuthError) === null || _d === void 0 ? void 0 : _d.call(options, camsError);
440
- return [3 /*break*/, 4];
441
- case 4: return [2 /*return*/];
560
+ return [3 /*break*/, 5];
561
+ case 5: return [2 /*return*/];
442
562
  }
443
563
  });
444
- }); }, [instance, scopes, options]);
445
- var completeMFA = React.useCallback(function (data) { return __awaiter(_this, void 0, void 0, function () {
446
- return __generator(this, function (_a) {
447
- if (!mfaAuthenticator) {
448
- throw new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "MFA Authenticator not initialized");
449
- }
564
+ }); }, [
565
+ instance,
566
+ scopes,
567
+ prompt,
568
+ appCode,
569
+ ValidateUserEndpoint,
570
+ storageKey,
571
+ inProgress,
572
+ ]);
573
+ var completeMFA = React.useCallback(function (data) { return __awaiter$1(_this, void 0, void 0, function () {
574
+ return __generator$1(this, function (_a) {
450
575
  camsSdk.Logger.info("Completed MFA.. Setting State");
451
576
  try {
452
577
  // Update storage with complete authentication BEFORE setting state
@@ -457,7 +582,11 @@ function useCAMSMSALAuth(options) {
457
582
  accessToken: accessToken,
458
583
  idToken: idToken,
459
584
  }));
460
- setCookie$1("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({ type: "AUTH_SUCCESS", userProfile: __assign({}, data) }), 1);
585
+ setCookie("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({
586
+ state: "AUTH_SUCCESS",
587
+ role: data.userInfo.role,
588
+ profile: __assign({}, data),
589
+ }), activeCookiePeriod);
461
590
  setRequiresMFA(false);
462
591
  // Set requiresMFA to false after storage update
463
592
  camsSdk.Logger.debug("MFA completed successfully, storage updated", {
@@ -476,22 +605,21 @@ function useCAMSMSALAuth(options) {
476
605
  }
477
606
  return [2 /*return*/];
478
607
  });
479
- }); }, [mfaAuthenticator, accessToken, idToken, storageKey]);
480
- var sendEmailOTP = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
481
- return __generator(this, function (_a) {
608
+ }); }, [accessToken, idToken, storageKey, activeCookiePeriod]);
609
+ var LoginADCredentials = React.useCallback(function (credentials, appCode, CredentialsAuthEndpoint) { return __awaiter$1(_this, void 0, void 0, function () {
610
+ var authenticator;
611
+ return __generator$1(this, function (_a) {
482
612
  switch (_a.label) {
483
613
  case 0:
484
- if (!mfaAuthenticator) {
485
- return [2 /*return*/, false];
486
- }
487
- return [4 /*yield*/, mfaAuthenticator.sendEmailOTP()];
614
+ authenticator = new camsSdk.CAMSMFAAuthenticator();
615
+ return [4 /*yield*/, authenticator.LoginADCredentials(credentials, CredentialsAuthEndpoint)];
488
616
  case 1: return [2 /*return*/, _a.sent()];
489
617
  }
490
618
  });
491
- }); }, [mfaAuthenticator]);
492
- var logout = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
619
+ }); }, []);
620
+ var logout = React.useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
493
621
  var err_2, camsError;
494
- return __generator(this, function (_a) {
622
+ return __generator$1(this, function (_a) {
495
623
  switch (_a.label) {
496
624
  case 0:
497
625
  _a.trys.push([0, 2, , 3]);
@@ -502,7 +630,6 @@ function useCAMSMSALAuth(options) {
502
630
  setAccessToken("");
503
631
  setIdToken("");
504
632
  setError(null);
505
- setMfaAuthenticator(null);
506
633
  setRequiresMFA(false);
507
634
  if (typeof window !== "undefined") {
508
635
  localStorage.removeItem(storageKey);
@@ -525,14 +652,15 @@ function useCAMSMSALAuth(options) {
525
652
  isAuthenticated: isAuthenticated,
526
653
  isLoading: isLoading,
527
654
  error: error,
655
+ email: email,
528
656
  idToken: idToken,
529
657
  accessToken: accessToken,
530
- appCode: options.appCode,
531
- mfaAuthenticator: mfaAuthenticator,
658
+ appCode: appCode,
532
659
  requiresMFA: requiresMFA,
533
660
  completeMFA: completeMFA,
534
- sendEmailOTP: sendEmailOTP,
661
+ LoginADCredentials: LoginADCredentials,
535
662
  setRequiresMFA: setRequiresMFA,
663
+ activeCookiePeriod: activeCookiePeriod,
536
664
  };
537
665
  }
538
666
 
@@ -575,10 +703,10 @@ function arrayBufferToBase64url(buffer) {
575
703
  * @returns A promise that resolves to a JSON-serializable representation of the PublicKeyCredential.
576
704
  */
577
705
  function register(options) {
578
- return __awaiter(this, void 0, void 0, function () {
706
+ return __awaiter$1(this, void 0, void 0, function () {
579
707
  var createOptions, credential, publicKeyCredential, attestationResponse, transports, err_1;
580
708
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
581
- return __generator(this, function (_k) {
709
+ return __generator$1(this, function (_k) {
582
710
  switch (_k.label) {
583
711
  case 0:
584
712
  _k.trys.push([0, 2, , 3]);
@@ -636,10 +764,10 @@ function register(options) {
636
764
  * @returns A promise that resolves to a JSON-serializable representation of the PublicKeyCredential.
637
765
  */
638
766
  function authenticate(options) {
639
- return __awaiter(this, void 0, void 0, function () {
767
+ return __awaiter$1(this, void 0, void 0, function () {
640
768
  var getOptions, credential, publicKeyCredential, assertionResponse;
641
769
  var _a;
642
- return __generator(this, function (_b) {
770
+ return __generator$1(this, function (_b) {
643
771
  switch (_b.label) {
644
772
  case 0:
645
773
  getOptions = __assign(__assign({}, options), { challenge: base64urlToArrayBuffer(options.challenge), allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(function (cred) { return (__assign(__assign({}, cred), { id: base64urlToArrayBuffer(cred.id) })); }) });
@@ -680,425 +808,6 @@ var useWebAuthn = function () {
680
808
  };
681
809
  };
682
810
 
683
- var jsxRuntime = {exports: {}};
684
-
685
- var reactJsxRuntime_production = {};
686
-
687
- /**
688
- * @license React
689
- * react-jsx-runtime.production.js
690
- *
691
- * Copyright (c) Meta Platforms, Inc. and affiliates.
692
- *
693
- * This source code is licensed under the MIT license found in the
694
- * LICENSE file in the root directory of this source tree.
695
- */
696
-
697
- var hasRequiredReactJsxRuntime_production;
698
-
699
- function requireReactJsxRuntime_production () {
700
- if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
701
- hasRequiredReactJsxRuntime_production = 1;
702
- var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
703
- REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
704
- function jsxProd(type, config, maybeKey) {
705
- var key = null;
706
- void 0 !== maybeKey && (key = "" + maybeKey);
707
- void 0 !== config.key && (key = "" + config.key);
708
- if ("key" in config) {
709
- maybeKey = {};
710
- for (var propName in config)
711
- "key" !== propName && (maybeKey[propName] = config[propName]);
712
- } else maybeKey = config;
713
- config = maybeKey.ref;
714
- return {
715
- $$typeof: REACT_ELEMENT_TYPE,
716
- type: type,
717
- key: key,
718
- ref: void 0 !== config ? config : null,
719
- props: maybeKey
720
- };
721
- }
722
- reactJsxRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
723
- reactJsxRuntime_production.jsx = jsxProd;
724
- reactJsxRuntime_production.jsxs = jsxProd;
725
- return reactJsxRuntime_production;
726
- }
727
-
728
- var reactJsxRuntime_development = {};
729
-
730
- /**
731
- * @license React
732
- * react-jsx-runtime.development.js
733
- *
734
- * Copyright (c) Meta Platforms, Inc. and affiliates.
735
- *
736
- * This source code is licensed under the MIT license found in the
737
- * LICENSE file in the root directory of this source tree.
738
- */
739
-
740
- var hasRequiredReactJsxRuntime_development;
741
-
742
- function requireReactJsxRuntime_development () {
743
- if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;
744
- hasRequiredReactJsxRuntime_development = 1;
745
- "production" !== process.env.NODE_ENV &&
746
- (function () {
747
- function getComponentNameFromType(type) {
748
- if (null == type) return null;
749
- if ("function" === typeof type)
750
- return type.$$typeof === REACT_CLIENT_REFERENCE
751
- ? null
752
- : type.displayName || type.name || null;
753
- if ("string" === typeof type) return type;
754
- switch (type) {
755
- case REACT_FRAGMENT_TYPE:
756
- return "Fragment";
757
- case REACT_PROFILER_TYPE:
758
- return "Profiler";
759
- case REACT_STRICT_MODE_TYPE:
760
- return "StrictMode";
761
- case REACT_SUSPENSE_TYPE:
762
- return "Suspense";
763
- case REACT_SUSPENSE_LIST_TYPE:
764
- return "SuspenseList";
765
- case REACT_ACTIVITY_TYPE:
766
- return "Activity";
767
- }
768
- if ("object" === typeof type)
769
- switch (
770
- ("number" === typeof type.tag &&
771
- console.error(
772
- "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
773
- ),
774
- type.$$typeof)
775
- ) {
776
- case REACT_PORTAL_TYPE:
777
- return "Portal";
778
- case REACT_CONTEXT_TYPE:
779
- return (type.displayName || "Context") + ".Provider";
780
- case REACT_CONSUMER_TYPE:
781
- return (type._context.displayName || "Context") + ".Consumer";
782
- case REACT_FORWARD_REF_TYPE:
783
- var innerType = type.render;
784
- type = type.displayName;
785
- type ||
786
- ((type = innerType.displayName || innerType.name || ""),
787
- (type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"));
788
- return type;
789
- case REACT_MEMO_TYPE:
790
- return (
791
- (innerType = type.displayName || null),
792
- null !== innerType
793
- ? innerType
794
- : getComponentNameFromType(type.type) || "Memo"
795
- );
796
- case REACT_LAZY_TYPE:
797
- innerType = type._payload;
798
- type = type._init;
799
- try {
800
- return getComponentNameFromType(type(innerType));
801
- } catch (x) {}
802
- }
803
- return null;
804
- }
805
- function testStringCoercion(value) {
806
- return "" + value;
807
- }
808
- function checkKeyStringCoercion(value) {
809
- try {
810
- testStringCoercion(value);
811
- var JSCompiler_inline_result = !1;
812
- } catch (e) {
813
- JSCompiler_inline_result = true;
814
- }
815
- if (JSCompiler_inline_result) {
816
- JSCompiler_inline_result = console;
817
- var JSCompiler_temp_const = JSCompiler_inline_result.error;
818
- var JSCompiler_inline_result$jscomp$0 =
819
- ("function" === typeof Symbol &&
820
- Symbol.toStringTag &&
821
- value[Symbol.toStringTag]) ||
822
- value.constructor.name ||
823
- "Object";
824
- JSCompiler_temp_const.call(
825
- JSCompiler_inline_result,
826
- "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
827
- JSCompiler_inline_result$jscomp$0
828
- );
829
- return testStringCoercion(value);
830
- }
831
- }
832
- function getTaskName(type) {
833
- if (type === REACT_FRAGMENT_TYPE) return "<>";
834
- if (
835
- "object" === typeof type &&
836
- null !== type &&
837
- type.$$typeof === REACT_LAZY_TYPE
838
- )
839
- return "<...>";
840
- try {
841
- var name = getComponentNameFromType(type);
842
- return name ? "<" + name + ">" : "<...>";
843
- } catch (x) {
844
- return "<...>";
845
- }
846
- }
847
- function getOwner() {
848
- var dispatcher = ReactSharedInternals.A;
849
- return null === dispatcher ? null : dispatcher.getOwner();
850
- }
851
- function UnknownOwner() {
852
- return Error("react-stack-top-frame");
853
- }
854
- function hasValidKey(config) {
855
- if (hasOwnProperty.call(config, "key")) {
856
- var getter = Object.getOwnPropertyDescriptor(config, "key").get;
857
- if (getter && getter.isReactWarning) return false;
858
- }
859
- return void 0 !== config.key;
860
- }
861
- function defineKeyPropWarningGetter(props, displayName) {
862
- function warnAboutAccessingKey() {
863
- specialPropKeyWarningShown ||
864
- ((specialPropKeyWarningShown = true),
865
- console.error(
866
- "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
867
- displayName
868
- ));
869
- }
870
- warnAboutAccessingKey.isReactWarning = true;
871
- Object.defineProperty(props, "key", {
872
- get: warnAboutAccessingKey,
873
- configurable: true
874
- });
875
- }
876
- function elementRefGetterWithDeprecationWarning() {
877
- var componentName = getComponentNameFromType(this.type);
878
- didWarnAboutElementRef[componentName] ||
879
- ((didWarnAboutElementRef[componentName] = true),
880
- console.error(
881
- "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
882
- ));
883
- componentName = this.props.ref;
884
- return void 0 !== componentName ? componentName : null;
885
- }
886
- function ReactElement(
887
- type,
888
- key,
889
- self,
890
- source,
891
- owner,
892
- props,
893
- debugStack,
894
- debugTask
895
- ) {
896
- self = props.ref;
897
- type = {
898
- $$typeof: REACT_ELEMENT_TYPE,
899
- type: type,
900
- key: key,
901
- props: props,
902
- _owner: owner
903
- };
904
- null !== (void 0 !== self ? self : null)
905
- ? Object.defineProperty(type, "ref", {
906
- enumerable: false,
907
- get: elementRefGetterWithDeprecationWarning
908
- })
909
- : Object.defineProperty(type, "ref", { enumerable: false, value: null });
910
- type._store = {};
911
- Object.defineProperty(type._store, "validated", {
912
- configurable: false,
913
- enumerable: false,
914
- writable: true,
915
- value: 0
916
- });
917
- Object.defineProperty(type, "_debugInfo", {
918
- configurable: false,
919
- enumerable: false,
920
- writable: true,
921
- value: null
922
- });
923
- Object.defineProperty(type, "_debugStack", {
924
- configurable: false,
925
- enumerable: false,
926
- writable: true,
927
- value: debugStack
928
- });
929
- Object.defineProperty(type, "_debugTask", {
930
- configurable: false,
931
- enumerable: false,
932
- writable: true,
933
- value: debugTask
934
- });
935
- Object.freeze && (Object.freeze(type.props), Object.freeze(type));
936
- return type;
937
- }
938
- function jsxDEVImpl(
939
- type,
940
- config,
941
- maybeKey,
942
- isStaticChildren,
943
- source,
944
- self,
945
- debugStack,
946
- debugTask
947
- ) {
948
- var children = config.children;
949
- if (void 0 !== children)
950
- if (isStaticChildren)
951
- if (isArrayImpl(children)) {
952
- for (
953
- isStaticChildren = 0;
954
- isStaticChildren < children.length;
955
- isStaticChildren++
956
- )
957
- validateChildKeys(children[isStaticChildren]);
958
- Object.freeze && Object.freeze(children);
959
- } else
960
- console.error(
961
- "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
962
- );
963
- else validateChildKeys(children);
964
- if (hasOwnProperty.call(config, "key")) {
965
- children = getComponentNameFromType(type);
966
- var keys = Object.keys(config).filter(function (k) {
967
- return "key" !== k;
968
- });
969
- isStaticChildren =
970
- 0 < keys.length
971
- ? "{key: someKey, " + keys.join(": ..., ") + ": ...}"
972
- : "{key: someKey}";
973
- didWarnAboutKeySpread[children + isStaticChildren] ||
974
- ((keys =
975
- 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}"),
976
- console.error(
977
- 'A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />',
978
- isStaticChildren,
979
- children,
980
- keys,
981
- children
982
- ),
983
- (didWarnAboutKeySpread[children + isStaticChildren] = true));
984
- }
985
- children = null;
986
- void 0 !== maybeKey &&
987
- (checkKeyStringCoercion(maybeKey), (children = "" + maybeKey));
988
- hasValidKey(config) &&
989
- (checkKeyStringCoercion(config.key), (children = "" + config.key));
990
- if ("key" in config) {
991
- maybeKey = {};
992
- for (var propName in config)
993
- "key" !== propName && (maybeKey[propName] = config[propName]);
994
- } else maybeKey = config;
995
- children &&
996
- defineKeyPropWarningGetter(
997
- maybeKey,
998
- "function" === typeof type
999
- ? type.displayName || type.name || "Unknown"
1000
- : type
1001
- );
1002
- return ReactElement(
1003
- type,
1004
- children,
1005
- self,
1006
- source,
1007
- getOwner(),
1008
- maybeKey,
1009
- debugStack,
1010
- debugTask
1011
- );
1012
- }
1013
- function validateChildKeys(node) {
1014
- "object" === typeof node &&
1015
- null !== node &&
1016
- node.$$typeof === REACT_ELEMENT_TYPE &&
1017
- node._store &&
1018
- (node._store.validated = 1);
1019
- }
1020
- var React$1 = React,
1021
- REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
1022
- REACT_PORTAL_TYPE = Symbol.for("react.portal"),
1023
- REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
1024
- REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
1025
- REACT_PROFILER_TYPE = Symbol.for("react.profiler");
1026
- var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
1027
- REACT_CONTEXT_TYPE = Symbol.for("react.context"),
1028
- REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
1029
- REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
1030
- REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"),
1031
- REACT_MEMO_TYPE = Symbol.for("react.memo"),
1032
- REACT_LAZY_TYPE = Symbol.for("react.lazy"),
1033
- REACT_ACTIVITY_TYPE = Symbol.for("react.activity"),
1034
- REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"),
1035
- ReactSharedInternals =
1036
- React$1.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
1037
- hasOwnProperty = Object.prototype.hasOwnProperty,
1038
- isArrayImpl = Array.isArray,
1039
- createTask = console.createTask
1040
- ? console.createTask
1041
- : function () {
1042
- return null;
1043
- };
1044
- React$1 = {
1045
- react_stack_bottom_frame: function (callStackForError) {
1046
- return callStackForError();
1047
- }
1048
- };
1049
- var specialPropKeyWarningShown;
1050
- var didWarnAboutElementRef = {};
1051
- var unknownOwnerDebugStack = React$1.react_stack_bottom_frame.bind(
1052
- React$1,
1053
- UnknownOwner
1054
- )();
1055
- var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
1056
- var didWarnAboutKeySpread = {};
1057
- reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
1058
- reactJsxRuntime_development.jsx = function (type, config, maybeKey, source, self) {
1059
- var trackActualOwner =
1060
- 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1061
- return jsxDEVImpl(
1062
- type,
1063
- config,
1064
- maybeKey,
1065
- false,
1066
- source,
1067
- self,
1068
- trackActualOwner
1069
- ? Error("react-stack-top-frame")
1070
- : unknownOwnerDebugStack,
1071
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1072
- );
1073
- };
1074
- reactJsxRuntime_development.jsxs = function (type, config, maybeKey, source, self) {
1075
- var trackActualOwner =
1076
- 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1077
- return jsxDEVImpl(
1078
- type,
1079
- config,
1080
- maybeKey,
1081
- true,
1082
- source,
1083
- self,
1084
- trackActualOwner
1085
- ? Error("react-stack-top-frame")
1086
- : unknownOwnerDebugStack,
1087
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1088
- );
1089
- };
1090
- })();
1091
- return reactJsxRuntime_development;
1092
- }
1093
-
1094
- if (process.env.NODE_ENV === 'production') {
1095
- jsxRuntime.exports = requireReactJsxRuntime_production();
1096
- } else {
1097
- jsxRuntime.exports = requireReactJsxRuntime_development();
1098
- }
1099
-
1100
- var jsxRuntimeExports = jsxRuntime.exports;
1101
-
1102
811
  var CAMSContext$1 = React.createContext(null);
1103
812
  function useCAMSContext$1() {
1104
813
  var context = React.useContext(CAMSContext$1);
@@ -1112,37 +821,19 @@ function ProtectedRoute(_a) {
1112
821
  var children = _a.children, fallback = _a.fallback, redirectTo = _a.redirectTo;
1113
822
  var _b = useCAMSContext$1(), isAuthenticated = _b.isAuthenticated, isLoading = _b.isLoading;
1114
823
  if (isLoading) {
1115
- return fallback || jsxRuntimeExports.jsx("div", { children: "Loading..." });
824
+ return fallback || jsxRuntime.jsx("div", { className: 'h-screen flex items-center justify-center', children: "Loading..." });
1116
825
  }
1117
826
  if (!isAuthenticated) {
1118
827
  if (redirectTo && typeof window !== 'undefined') {
1119
828
  window.location.href = redirectTo;
1120
829
  return null;
1121
830
  }
1122
- return fallback || jsxRuntimeExports.jsx("div", { children: "Access denied. Please log in." });
831
+ return fallback || jsxRuntime.jsx("div", { children: "Access denied. Please log in." });
1123
832
  }
1124
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
833
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1125
834
  }
1126
835
 
1127
836
  var CAMSMSALContext = React.createContext(null);
1128
- var setCookie = function (name, value, days) {
1129
- var expires = new Date(Date.now() + days * 864e5).toUTCString();
1130
- document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
1131
- };
1132
- var getCookie = function (name) {
1133
- var _a;
1134
- return ((_a = document.cookie
1135
- .split("; ")
1136
- .find(function (row) { return row.startsWith(name + "="); })) === null || _a === void 0 ? void 0 : _a.split("=")[1])
1137
- ? decodeURIComponent(document.cookie
1138
- .split("; ")
1139
- .find(function (row) { return row.startsWith(name + "="); })
1140
- .split("=")[1])
1141
- : null;
1142
- };
1143
- var deleteCookie = function (name) {
1144
- document.cookie = name + "=; Max-Age=-99999999; path=/";
1145
- };
1146
837
  var isTokenValid = function (token) {
1147
838
  try {
1148
839
  var payload = JSON.parse(atob(token.split(".")[1]));
@@ -1191,7 +882,7 @@ function CAMSMSALProviderInner(_a) {
1191
882
  localStorage.setItem(auth.storageKey, JSON.stringify({
1192
883
  accessToken: auth.accessToken,
1193
884
  idToken: auth.idToken,
1194
- appCode: auth.appCode
885
+ appCode: auth.appCode,
1195
886
  }));
1196
887
  }
1197
888
  }, [auth.accessToken, auth.idToken, auth.storageKey]);
@@ -1207,8 +898,8 @@ function CAMSMSALProviderInner(_a) {
1207
898
  }
1208
899
  }, [userProfile, profileStorageKey]);
1209
900
  // Enhanced logout that also clears profile
1210
- var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
1211
- return __generator(this, function (_a) {
901
+ var enhancedLogout = function () { return __awaiter$1(_this, void 0, void 0, function () {
902
+ return __generator$1(this, function (_a) {
1212
903
  switch (_a.label) {
1213
904
  case 0: return [4 /*yield*/, auth.logout()];
1214
905
  case 1:
@@ -1222,12 +913,17 @@ function CAMSMSALProviderInner(_a) {
1222
913
  });
1223
914
  }); };
1224
915
  var value = React.useMemo(function () { return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile })); }, [auth, userProfile]);
1225
- return (jsxRuntimeExports.jsx(CAMSMSALContext.Provider, { value: value, children: children }));
916
+ return (jsxRuntime.jsx(CAMSMSALContext.Provider, { value: value, children: children }));
1226
917
  }
1227
918
  function CAMSMSALProvider(props) {
919
+ var _a;
1228
920
  var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
921
+ // Ensure crypto is available before creating MSAL instance
922
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
923
+ throw new Error("Crypto API not available. Polyfill failed to load.");
924
+ }
1229
925
  var instance = msalInstance || new msalBrowser.PublicClientApplication(msalConfig);
1230
- return (jsxRuntimeExports.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSMSALProviderInner, __assign({}, props)) }));
926
+ return (jsxRuntime.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntime.jsx(CAMSMSALProviderInner, __assign({}, props)) }));
1231
927
  }
1232
928
  function useCAMSMSALContext() {
1233
929
  var context = React.useContext(CAMSMSALContext);
@@ -1244,9 +940,9 @@ var ClientOnly = function (_a) {
1244
940
  setHasMounted(true);
1245
941
  }, []);
1246
942
  if (!hasMounted) {
1247
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: fallback });
943
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: fallback });
1248
944
  }
1249
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
945
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1250
946
  };
1251
947
 
1252
948
  var CAMSContext = React.createContext(null);
@@ -1267,15 +963,15 @@ function CAMSProviderCore(props) {
1267
963
  ? __assign(__assign({}, props), { appCode: appCode })
1268
964
  : { appCode: "" });
1269
965
  var msalAuth = useCAMSMSALAuth(mode === "MSAL"
1270
- ? __assign(__assign({}, props), { appCode: appCode })
1271
- : { appCode: "" });
966
+ ? __assign(__assign({}, props), { appCode: appCode, ValidateUserEndpoint: props.ValidateUserEndpoint })
967
+ : { appCode: "", ValidateUserEndpoint: "" });
1272
968
  var auth = mode === "REGULAR" ? regularAuth : msalAuth;
1273
969
  var profileStorageKey = "".concat(auth.storageKey, "-PROFILE");
1274
970
  var getInitialProfile = function () {
1275
971
  if (typeof window === "undefined")
1276
972
  return null;
1277
973
  try {
1278
- var storedProfile = getCookie$1(profileStorageKey);
974
+ var storedProfile = getCookie(profileStorageKey);
1279
975
  return storedProfile ? JSON.parse(storedProfile) : null;
1280
976
  }
1281
977
  catch (_a) {
@@ -1285,7 +981,7 @@ function CAMSProviderCore(props) {
1285
981
  var _a = React.useState(getInitialProfile), userProfile = _a[0], setUserProfile = _a[1];
1286
982
  React.useEffect(function () {
1287
983
  if (typeof window !== "undefined") {
1288
- var storedProfile = getCookie$1(profileStorageKey);
984
+ var storedProfile = getCookie(profileStorageKey);
1289
985
  if (storedProfile) {
1290
986
  try {
1291
987
  setUserProfile(JSON.parse(storedProfile));
@@ -1297,47 +993,41 @@ function CAMSProviderCore(props) {
1297
993
  React.useEffect(function () {
1298
994
  if (typeof window !== "undefined") {
1299
995
  if (userProfile) {
1300
- setCookie$1(profileStorageKey, JSON.stringify(userProfile), 1);
996
+ setCookie(profileStorageKey, JSON.stringify(userProfile), 1);
1301
997
  }
1302
998
  else {
1303
- deleteCookie$1(profileStorageKey);
999
+ deleteCookie(profileStorageKey);
1304
1000
  }
1305
1001
  }
1306
1002
  }, [userProfile, profileStorageKey]);
1307
- var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
1308
- return __generator(this, function (_a) {
1003
+ var enhancedLogout = function () { return __awaiter$1(_this, void 0, void 0, function () {
1004
+ return __generator$1(this, function (_a) {
1309
1005
  switch (_a.label) {
1310
1006
  case 0: return [4 /*yield*/, auth.logout()];
1311
1007
  case 1:
1312
1008
  _a.sent();
1313
1009
  setUserProfile(null);
1314
1010
  if (typeof window !== "undefined") {
1315
- deleteCookie$1(profileStorageKey);
1011
+ deleteCookie(profileStorageKey);
1316
1012
  }
1317
1013
  return [2 /*return*/];
1318
1014
  }
1319
1015
  });
1320
1016
  }); };
1321
- // Handle MFA completion for MSAL mode
1322
1017
  React.useEffect(function () {
1323
1018
  if (mode === "MSAL" &&
1324
1019
  "requiresMFA" in auth &&
1325
1020
  !auth.requiresMFA &&
1326
1021
  auth.isAuthenticated) {
1327
- // MFA completed, extract profile from localStorage
1328
1022
  var storedData = localStorage.getItem(auth.storageKey);
1329
1023
  if (storedData) {
1330
1024
  try {
1331
1025
  var parsed = JSON.parse(storedData);
1332
- console.log("Parsed storage data:", parsed);
1333
1026
  if (parsed.userProfile) {
1334
- console.log("Setting user profile:", parsed.userProfile);
1335
1027
  setUserProfile(parsed.userProfile);
1336
1028
  }
1337
1029
  }
1338
- catch (e) {
1339
- console.error("Error parsing stored data:", e);
1340
- }
1030
+ catch (_a) { }
1341
1031
  }
1342
1032
  }
1343
1033
  }, [
@@ -1348,25 +1038,32 @@ function CAMSProviderCore(props) {
1348
1038
  userProfile,
1349
1039
  ]);
1350
1040
  var value = React.useMemo(function () {
1351
- return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile, authMode: mode }));
1352
- }, [auth, userProfile, mode]);
1353
- return jsxRuntimeExports.jsx(CAMSContext.Provider, { value: value, children: children });
1041
+ auth.logout; var authRest = __rest(auth, ["logout"]);
1042
+ return __assign(__assign({}, authRest), { logout: enhancedLogout, user: userProfile, setUserProfile: setUserProfile, authMode: mode, onAuthSuccess: mode === "MSAL"
1043
+ ? props.onAuthSuccess
1044
+ : undefined, onAuthError: mode === "MSAL" ? props.onAuthError : undefined });
1045
+ }, [auth, userProfile, mode, props]);
1046
+ return jsxRuntime.jsx(CAMSContext.Provider, { value: value, children: children });
1354
1047
  }
1355
1048
  function UnifiedCAMSProvider(props) {
1049
+ var _a;
1356
1050
  // Validate appCode is a valid GUID
1357
1051
  var appCodeValidation = GuidSchema.safeParse(props.appCode);
1358
1052
  if (!appCodeValidation.success) {
1359
- throw new Error("Invalid appCode: ".concat(appCodeValidation.error.issues[0].message));
1053
+ throw new Error("Invalid CAS APP CODE: ".concat(appCodeValidation.error.issues[0].message));
1360
1054
  }
1361
1055
  if (props.mode === "MSAL") {
1362
1056
  var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
1057
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
1058
+ throw new Error("Crypto API not available. Polyfill failed to load.");
1059
+ }
1363
1060
  var instance = msalInstance || new msalBrowser.PublicClientApplication(msalConfig);
1364
- return (jsxRuntimeExports.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
1061
+ return (jsxRuntime.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntime.jsx(CAMSProviderCore, __assign({}, props)) }));
1365
1062
  }
1366
- return (jsxRuntimeExports.jsx(ClientOnly, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
1063
+ return (jsxRuntime.jsx(ClientOnly, { fallback: jsxRuntime.jsx("div", { className: "h-screen flex items-center justify-center", children: "Loading..." }), children: jsxRuntime.jsx(CAMSProviderCore, __assign({}, props)) }));
1367
1064
  }
1368
1065
  // Backward compatibility exports
1369
- var CAMSProvider = function (props) { return (jsxRuntimeExports.jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
1066
+ var CAMSProvider = function (props) { return (jsxRuntime.jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
1370
1067
 
1371
1068
  /** A special constant with type `never` */
1372
1069
  function $constructor(name, initializer, params) {
@@ -1512,30 +1209,30 @@ function cn() {
1512
1209
 
1513
1210
  function InputOTP(_a) {
1514
1211
  var className = _a.className, containerClassName = _a.containerClassName, props = __rest(_a, ["className", "containerClassName"]);
1515
- return (jsxRuntimeExports.jsx(inputOtp.OTPInput, __assign({ "data-slot": "input-otp", containerClassName: cn("flex items-center gap-2 has-disabled:opacity-50", containerClassName), className: cn("disabled:cursor-not-allowed", className) }, props)));
1212
+ return (jsxRuntime.jsx(inputOtp.OTPInput, __assign({ "data-slot": "input-otp", containerClassName: cn("flex items-center gap-2 has-disabled:opacity-50", containerClassName), className: cn("disabled:cursor-not-allowed", className) }, props)));
1516
1213
  }
1517
1214
  function InputOTPGroup(_a) {
1518
1215
  var className = _a.className, props = __rest(_a, ["className"]);
1519
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
1216
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
1520
1217
  }
1521
1218
  function InputOTPSlot(_a) {
1522
1219
  var _b;
1523
1220
  var index = _a.index, className = _a.className, props = __rest(_a, ["index", "className"]);
1524
1221
  var inputOTPContext = React__namespace.useContext(inputOtp.OTPInputContext);
1525
1222
  var _c = (_b = inputOTPContext === null || inputOTPContext === void 0 ? void 0 : inputOTPContext.slots[index]) !== null && _b !== void 0 ? _b : {}, char = _c.char, hasFakeCaret = _c.hasFakeCaret, isActive = _c.isActive;
1526
- return (jsxRuntimeExports.jsxs("div", __assign({ "data-slot": "input-otp-slot", "data-active": isActive, className: cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-12 w-12 items-center justify-center border-y border-r text-lg font-semibold shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]", className) }, props, { children: [char, hasFakeCaret && (jsxRuntimeExports.jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: jsxRuntimeExports.jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] })));
1223
+ return (jsxRuntime.jsxs("div", __assign({ "data-slot": "input-otp-slot", "data-active": isActive, className: cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-12 w-12 items-center justify-center border-y border-r text-lg font-semibold shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]", className) }, props, { children: [char, hasFakeCaret && (jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: jsxRuntime.jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] })));
1527
1224
  }
1528
1225
 
1529
1226
  function Label(_a) {
1530
1227
  var className = _a.className, props = __rest(_a, ["className"]);
1531
- return (jsxRuntimeExports.jsx(LabelPrimitive__namespace.Root, __assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
1228
+ return (jsxRuntime.jsx(LabelPrimitive__namespace.Root, __assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
1532
1229
  }
1533
1230
 
1534
1231
  var Form = reactHookForm.FormProvider;
1535
1232
  var FormFieldContext = React__namespace.createContext({});
1536
1233
  var FormField = function (_a) {
1537
1234
  var props = __rest(_a, []);
1538
- return (jsxRuntimeExports.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsxRuntimeExports.jsx(reactHookForm.Controller, __assign({}, props)) }));
1235
+ return (jsxRuntime.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsxRuntime.jsx(reactHookForm.Controller, __assign({}, props)) }));
1539
1236
  };
1540
1237
  var useFormField = function () {
1541
1238
  var fieldContext = React__namespace.useContext(FormFieldContext);
@@ -1553,17 +1250,17 @@ var FormItemContext = React__namespace.createContext({});
1553
1250
  function FormItem(_a) {
1554
1251
  var className = _a.className, props = __rest(_a, ["className"]);
1555
1252
  var id = React__namespace.useId();
1556
- return (jsxRuntimeExports.jsx(FormItemContext.Provider, { value: { id: id }, children: jsxRuntimeExports.jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
1253
+ return (jsxRuntime.jsx(FormItemContext.Provider, { value: { id: id }, children: jsxRuntime.jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
1557
1254
  }
1558
1255
  function FormLabel(_a) {
1559
1256
  var className = _a.className, props = __rest(_a, ["className"]);
1560
1257
  var _b = useFormField(), error = _b.error, formItemId = _b.formItemId;
1561
- return (jsxRuntimeExports.jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
1258
+ return (jsxRuntime.jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
1562
1259
  }
1563
1260
  function FormControl(_a) {
1564
1261
  var props = __rest(_a, []);
1565
1262
  var _b = useFormField(), error = _b.error, formItemId = _b.formItemId, formDescriptionId = _b.formDescriptionId, formMessageId = _b.formMessageId;
1566
- return (jsxRuntimeExports.jsx(reactSlot.Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
1263
+ return (jsxRuntime.jsx(reactSlot.Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
1567
1264
  ? "".concat(formDescriptionId)
1568
1265
  : "".concat(formDescriptionId, " ").concat(formMessageId), "aria-invalid": !!error }, props)));
1569
1266
  }
@@ -1575,36 +1272,36 @@ function FormMessage(_a) {
1575
1272
  if (!body) {
1576
1273
  return null;
1577
1274
  }
1578
- return (jsxRuntimeExports.jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
1275
+ return (jsxRuntime.jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
1579
1276
  }
1580
1277
 
1581
1278
  function Card(_a) {
1582
1279
  var className = _a.className, props = __rest(_a, ["className"]);
1583
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card", className: cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", className) }, props)));
1280
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card", className: cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", className) }, props)));
1584
1281
  }
1585
1282
  function CardHeader(_a) {
1586
1283
  var className = _a.className, props = __rest(_a, ["className"]);
1587
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-header", className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", className) }, props)));
1284
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-header", className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", className) }, props)));
1588
1285
  }
1589
1286
  function CardTitle(_a) {
1590
1287
  var className = _a.className, props = __rest(_a, ["className"]);
1591
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
1288
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
1592
1289
  }
1593
1290
  function CardDescription(_a) {
1594
1291
  var className = _a.className, props = __rest(_a, ["className"]);
1595
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1292
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1596
1293
  }
1597
1294
  function CardAction(_a) {
1598
1295
  var className = _a.className, props = __rest(_a, ["className"]);
1599
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className) }, props)));
1296
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className) }, props)));
1600
1297
  }
1601
1298
  function CardContent(_a) {
1602
1299
  var className = _a.className, props = __rest(_a, ["className"]);
1603
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
1300
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
1604
1301
  }
1605
1302
  function CardFooter(_a) {
1606
1303
  var className = _a.className, props = __rest(_a, ["className"]);
1607
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
1304
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
1608
1305
  }
1609
1306
 
1610
1307
  var GenericOTPVerifier = function (_a) {
@@ -1619,18 +1316,18 @@ var GenericOTPVerifier = function (_a) {
1619
1316
  resolver: a$1(Schema),
1620
1317
  defaultValues: (_c = {}, _c[fieldName] = "", _c),
1621
1318
  });
1622
- return (jsxRuntimeExports.jsxs(Card, { className: "relative rounded space-y-4 p-0 m-0 py-8 space-x-6", children: [jsxRuntimeExports.jsxs(CardHeader, { className: "flex items-center justify-center flex-col gap-2 mt-2 text-center mb-8", children: [jsxRuntimeExports.jsx("div", { className: "w-16 h-16 bg-gradient-to-br from-lime-400 via-green-500 to-emerald-600 rounded-xl flex items-center justify-center text-white text-2xl mb-6 group-hover:scale-110 transition-transform duration-300", children: jsxRuntimeExports.jsx(lucideReact.RectangleEllipsis, {}) }), jsxRuntimeExports.jsx(CardTitle, { className: "font-bold text-emerald-700 text-2xl", children: "One-Time-Password (OTP)" }), attemptCount > 0 && (jsxRuntimeExports.jsx("div", { className: "text-sm mt-2 ".concat(isMaxAttemptsReached ? "text-red-600" : "text-orange-600"), children: isMaxAttemptsReached
1319
+ return (jsxRuntime.jsxs(Card, { className: "relative rounded space-y-4 p-0 m-0 py-8 space-x-6", children: [jsxRuntime.jsxs(CardHeader, { className: "flex items-center justify-center flex-col gap-2 mt-2 text-center mb-8", children: [jsxRuntime.jsx("div", { className: "w-16 h-16 bg-gradient-to-br from-lime-400 via-green-500 to-emerald-600 rounded-xl flex items-center justify-center text-white text-2xl mb-6 group-hover:scale-110 transition-transform duration-300", children: jsxRuntime.jsx(lucideReact.RectangleEllipsis, {}) }), jsxRuntime.jsx(CardTitle, { className: "font-bold text-emerald-700 text-2xl", children: "One-Time-Password (OTP)" }), attemptCount > 0 && (jsxRuntime.jsx("div", { className: "text-sm mt-2 ".concat(isMaxAttemptsReached ? "text-red-600" : "text-orange-600"), children: isMaxAttemptsReached
1623
1320
  ? "Maximum attempts reached. Please try again later."
1624
- : "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsxRuntimeExports.jsx(CardContent, { className: "space-y-6", children: jsxRuntimeExports.jsx("form", { className: "flex items-center justify-center my-4 ", children: jsxRuntimeExports.jsx(Form, __assign({}, form, { children: jsxRuntimeExports.jsx(FormField, { control: form.control, name: fieldName, render: function () { return (jsxRuntimeExports.jsxs(FormItem, { className: "flex items-center justify-center flex-col gap-y-1 space-y-4", children: [jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(InputOTP, { maxLength: 6, value: value, disabled: isMaxAttemptsReached, onChange: function (authenticationValue) {
1321
+ : "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsxRuntime.jsx(CardContent, { className: "space-y-6", children: jsxRuntime.jsx("form", { className: "flex items-center justify-center my-4 ", children: jsxRuntime.jsx(Form, __assign({}, form, { children: jsxRuntime.jsx(FormField, { control: form.control, name: fieldName, render: function () { return (jsxRuntime.jsxs(FormItem, { className: "flex items-center justify-center flex-col gap-y-1 space-y-4", children: [jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(InputOTP, { maxLength: 6, value: value, disabled: isMaxAttemptsReached, onChange: function (authenticationValue) {
1625
1322
  setValue(authenticationValue);
1626
1323
  if (authenticationValue.length === 6 &&
1627
1324
  !isMaxAttemptsReached) {
1628
1325
  setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
1629
1326
  onChangeOTP(authenticationValue);
1630
1327
  }
1631
- }, pattern: inputOtp.REGEXP_ONLY_DIGITS, children: jsxRuntimeExports.jsx(InputOTPGroup, { className: "gap-3", children: __spreadArray([], Array(6), true).map(function (_, idx) { return (jsxRuntimeExports.jsx(InputOTPSlot, { className: "border border-l-2 ".concat(isMaxAttemptsReached
1328
+ }, pattern: inputOtp.REGEXP_ONLY_DIGITS, children: jsxRuntime.jsx(InputOTPGroup, { className: "gap-3", children: __spreadArray([], Array(6), true).map(function (_, idx) { return (jsxRuntime.jsx(InputOTPSlot, { className: "border border-l-2 ".concat(isMaxAttemptsReached
1632
1329
  ? "opacity-50 cursor-not-allowed"
1633
- : ""), index: idx }, idx + 1)); }) }) }) }), jsxRuntimeExports.jsx(FormMessage, {})] })); } }) })) }) })] }));
1330
+ : ""), index: idx }, idx + 1)); }) }) }) }), jsxRuntime.jsx(FormMessage, {})] })); } }) })) }) })] }));
1634
1331
  };
1635
1332
 
1636
1333
  var OTPAuthenticationImg = "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20500%20500%22%3E%3Cg%20id%3D%22freepik--Floor--inject-87%22%3E%3Cellipse%20id%3D%22freepik--floor--inject-87%22%20cx%3D%22252.61%22%20cy%3D%22347.39%22%20rx%3D%22236.94%22%20ry%3D%22140.58%22%20style%3D%22fill%3A%23f5f5f5%22%3E%3C%2Fellipse%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Shadows--inject-87%22%3E%3Cellipse%20id%3D%22freepik--Shadow--inject-87%22%20cx%3D%22435.94%22%20cy%3D%22370.25%22%20rx%3D%2241.53%22%20ry%3D%2223.98%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fellipse%3E%3Cpath%20id%3D%22freepik--shadow--inject-87%22%20d%3D%22M200.57%2C451.64%2C49.4%2C364.36c-5.74-3.32-5.74-8.74%2C0-12.06L278.92%2C219.81a9.51%2C9.51%2C0%2C0%2C1%2C8.6%2C0L447.9%2C312.4c.68.4.68%2C1%2C0%2C1.42L209.17%2C451.64A9.57%2C9.57%2C0%2C0%2C1%2C200.57%2C451.64Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Clouds--inject-87%22%3E%3Cg%20id%3D%22freepik--clouds--inject-87%22%3E%3Cpath%20d%3D%22M103.23%2C53.2l-9.41%2C5.43c0-.42.08-.84.08-1.25V54.66c0-4.86-3.41-6.82-7.61-4.4a14.77%2C14.77%2C0%2C0%2C0-4.54%2C4.36c-.69-6.1-5.48-8.37-11.29-5-6.29%2C3.63-11.39%2C12.46-11.39%2C19.72v4.08a10.65%2C10.65%2C0%2C0%2C0%2C1%2C4.72l-7.82%2C4.52A9.32%2C9.32%2C0%2C0%2C0%2C48%2C90c0%2C2.69%2C1.89%2C3.78%2C4.22%2C2.44l51-29.46a9.32%2C9.32%2C0%2C0%2C0%2C4.22-7.31C107.45%2C52.94%2C105.56%2C51.85%2C103.23%2C53.2Z%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M160.23%2C63.12l-7.11%2C4.1a7.42%2C7.42%2C0%2C0%2C0%2C.06-.94v-2c0-3.67-2.57-5.15-5.74-3.32A11.14%2C11.14%2C0%2C0%2C0%2C144%2C64.2c-.52-4.6-4.13-6.32-8.52-3.79-4.74%2C2.74-8.59%2C9.41-8.59%2C14.89v3.08a8%2C8%2C0%2C0%2C0%2C.73%2C3.56l-5.9%2C3.41a7.06%2C7.06%2C0%2C0%2C0-3.19%2C5.52c0%2C2%2C1.43%2C2.85%2C3.19%2C1.84l38.5-22.23A7.07%2C7.07%2C0%2C0%2C0%2C163.41%2C65C163.41%2C62.93%2C162%2C62.11%2C160.23%2C63.12Z%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Plants--inject-87%22%3E%3Cg%20id%3D%22freepik--plants--inject-87%22%3E%3Cpath%20d%3D%22M66.33%2C325.21s.74-17.56-5.74-32.3-17-24.94-27.83-27.53-21.34%2C6.13-10.66%2C14.93%2C30.49%2C19.17%2C36%2C46.68Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M66.33%2C325.21s.74-17.56-5.74-32.3-17-24.94-27.83-27.53-21.34%2C6.13-10.66%2C14.93%2C30.49%2C19.17%2C36%2C46.68Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M63.81%2C320.22h.12a.6.6%2C0%2C0%2C0%2C.44-.72C57.24%2C289.08%2C37%2C273.67%2C27.3%2C269.78a.58.58%2C0%2C0%2C0-.77.33.6.6%2C0%2C0%2C0%2C.33.77c9.51%2C3.82%2C29.34%2C18.95%2C36.35%2C48.88A.6.6%2C0%2C0%2C0%2C63.81%2C320.22Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M46%2C352.16c1.65%2C5.32%2C5.67%2C8.22%2C11.12%2C9.28%2C3.47.67%2C9%2C0%2C12-2.17%2C4.08-3%2C5.46-5.2%2C6.31-8.15a49.38%2C49.38%2C0%2C0%2C0%2C1.77-12.06c.1-3-1.52-5.62-2.74-7.35a22.6%2C22.6%2C0%2C0%2C0-2.12-2.35c-.83-.89-1.76-1.66-2.64-2.49a9.56%2C9.56%2C0%2C0%2C1-2.8-4c-.68-2.21%2C0-4.59%2C0-6.9A10.56%2C10.56%2C0%2C0%2C0%2C58.77%2C306a48.74%2C48.74%2C0%2C0%2C0-6.91-1.22c-3.47-.32-7.21.69-10.59-.37s-6.31-2.78-9.77-3.44c-3.62-.69-7.64-.14-10.47%2C2.37a6.52%2C6.52%2C0%2C0%2C0-2.41%2C5.63c.38%2C2.32%2C2.36%2C4%2C4.24%2C5.4s3.93%2C2.92%2C4.55%2C5.18c1.24%2C4.56-4%2C9.14-2.55%2C13.64a7.38%2C7.38%2C0%2C0%2C0%2C4.1%2C4.09%2C47.72%2C47.72%2C0%2C0%2C0%2C4.65%2C1.68%2C18.69%2C18.69%2C0%2C0%2C0%2C2.31.42c2.27.26%2C4.66.78%2C6.37%2C2.43C45%2C344.36%2C44.89%2C348.59%2C46%2C352.16Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M57.31%2C325a.68.68%2C0%2C0%2C0-.17-.21c-10.25-12.92-25.5-18.47-30.59-19.31a.54.54%2C0%2C0%2C0-.61.44.54.54%2C0%2C0%2C0%2C.44.61c4.82.79%2C19%2C5.91%2C29%2C17.71a29%2C29%2C0%2C0%2C0-23%2C3.35.52.52%2C0%2C0%2C0-.12.73.53.53%2C0%2C0%2C0%2C.44.22.57.57%2C0%2C0%2C0%2C.3-.1%2C28.12%2C28.12%2C0%2C0%2C1%2C23.58-2.77c.41.13%2C1.05%2C1.4%2C1.3%2C1.75.48.68.94%2C1.37%2C1.38%2C2.06a44.7%2C44.7%2C0%2C0%2C1%2C2.4%2C4.34%2C43.78%2C43.78%2C0%2C0%2C1%2C1.95%2C4.77c.22.63%2C1%2C4.51%2C1.48%2C4.55a.63.63%2C0%2C0%2C0%2C.59-.51c.32-1.36-.77-3.53-1.22-4.8a44.12%2C44.12%2C0%2C0%2C0-2-4.77A46.14%2C46.14%2C0%2C0%2C0%2C60%2C328.85c-.42-.67-.86-1.32-1.32-2A13.72%2C13.72%2C0%2C0%2C1%2C57.31%2C325Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Device--inject-87%22%3E%3Cg%20id%3D%22freepik--Laptop--inject-87%22%3E%3Cpath%20d%3D%22M62.88%2C357.26c0%2C3.49%2C2.6%2C7.82%2C5.82%2C9.68l126.85%2C73.25a12.88%2C12.88%2C0%2C0%2C0%2C11.66%2C0l223.37-129c3.22-1.85%2C5.83-6.19%2C5.83-9.67s-2.61-7.82-5.83-9.68L303.73%2C218.62a12.86%2C12.86%2C0%2C0%2C0-11.65%2C0L68.7%2C347.58C65.48%2C349.44%2C62.87%2C353.77%2C62.88%2C357.26Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M68.7%2C354.31l126.85%2C73.26a12.94%2C12.94%2C0%2C0%2C0%2C11.66%2C0l223.37-129c3.22-1.86%2C3.22-4.87%2C0-6.73L303.73%2C218.62a12.86%2C12.86%2C0%2C0%2C0-11.65%2C0L68.7%2C347.58C65.48%2C349.44%2C65.48%2C352.45%2C68.7%2C354.31Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M201.38%2C429v12.61a11.84%2C11.84%2C0%2C0%2C1-5.82-1.39L68.7%2C366.94c-3.22-1.86-5.83-6.19-5.83-9.68%2C0-3.27%2C2.3-7.28%2C5.24-9.3-2.61%2C1.87-2.41%2C4.62.59%2C6.35l126.86%2C73.26A11.85%2C11.85%2C0%2C0%2C0%2C201.38%2C429Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M57.41%2C347.79c-3-1.74-2.85-4.68-2.85-8.4V164.18a12.89%2C12.89%2C0%2C0%2C1%2C5.83-10.1l223.37-129c3.22-1.86%2C8.28-1.95%2C11.3-.21s2.85%2C4.69%2C2.85%2C8.4V208.53a12.9%2C12.9%2C0%2C0%2C1-5.82%2C10.09L68.7%2C347.58C65.48%2C349.44%2C60.43%2C349.54%2C57.41%2C347.79Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M297.9%2C33.31c0-3.71-2.61-5.21-5.82-3.37L68.7%2C158.92a11.85%2C11.85%2C0%2C0%2C0-4.12%2C4.35l-8.31-4.83h0a11.88%2C11.88%2C0%2C0%2C1%2C4.12-4.36l223.37-129C287%2C23.26%2C292%2C23.17%2C295%2C24.91S297.9%2C29.6%2C297.9%2C33.31Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M68%2C347.94c-3.21%2C1.5-7.79%2C1.48-10.6-.15-3-1.74-2.85-4.68-2.85-8.4V164.17a11.68%2C11.68%2C0%2C0%2C1%2C1.71-5.73l8.31%2C4.81v0A11.92%2C11.92%2C0%2C0%2C0%2C62.87%2C169V344.22C62.87%2C347.67%2C65.12%2C349.21%2C68%2C347.94Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M71.84%2C165.63%2C287.2%2C41.33c1.93-1.12%2C3.49-.21%2C3.49%2C2v158a7.71%2C7.71%2C0%2C0%2C1-3.49%2C6L71.84%2C331.66c-1.94%2C1.11-3.5.21-3.5-2V171.69A7.72%2C7.72%2C0%2C0%2C1%2C71.84%2C165.63Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M71.84%2C165.63%2C287.2%2C41.33c1.93-1.12%2C3.49-.21%2C3.49%2C2v158a7.71%2C7.71%2C0%2C0%2C1-3.49%2C6L71.84%2C331.66c-1.94%2C1.11-3.5.21-3.5-2V171.69A7.72%2C7.72%2C0%2C0%2C1%2C71.84%2C165.63Z%22%20style%3D%22opacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M84.82%2C347.93%2C292.16%2C228.22a6.44%2C6.44%2C0%2C0%2C1%2C5.83%2C0l3.45%2C1.9c1.61.93%2C1.61%2C2.43%2C0%2C3.36L94.07%2C353.17a6.42%2C6.42%2C0%2C0%2C1-5.82%2C0l-3.42-1.88C83.22%2C350.36%2C83.22%2C348.86%2C84.82%2C347.93Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M101.09%2C357.6%2C308.42%2C237.89a6%2C6%2C0%2C0%2C1%2C5.33-.29l54%2C31.16c1.33.77%2C1.1%2C2.15-.51%2C3.07L160.12%2C391.38a6%2C6%2C0%2C0%2C1-5.33.3l-54.2-31C99.26%2C359.9%2C99.48%2C358.53%2C101.09%2C357.6Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M280.75%2C288.17l6.49-3.75c.28-.16.3-.4.06-.54l-6.22-3.59a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C280.75%2C288.17Zm-9.48-13L264.78%2C279c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C271.27%2C275.2Zm-21%2C12.11-11%2C6.34c-.28.16-.3.41-.06.55l6.22%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l11-6.34c.28-.16.3-.4.06-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C250.3%2C287.31Zm11.48-6.63-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-6.22-3.58A1%2C1%2C0%2C0%2C0%2C261.78%2C280.68Zm-25.47%2C14.7-6.49%2C3.75c-.27.16-.3.4%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C236.31%2C295.38Zm-9.48%2C5.48-6.5%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C226.83%2C300.86Zm24.34%2C14.63%2C6.49-3.75c.28-.15.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C251.17%2C315.49ZM241.68%2C321l6.49-3.75c.28-.16.3-.4.06-.54L242%2C313.09a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.41-.05.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C241.68%2C321Zm-9.49%2C5.48%2C6.49-3.75c.28-.16.31-.4.06-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C232.19%2C326.45Zm-9.48%2C5.48%2C6.49-3.75c.27-.16.3-.4.05-.55L223%2C324.05a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C222.71%2C331.93Zm48.55-38.28%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C271.26%2C293.65ZM260.66%2C310l14.48-8.37c.27-.16.3-.4.05-.54l-15.08-8.71a1%2C1%2C0%2C0%2C0-.94%2C0l-7.49%2C4.33c-.28.16-.3.4-.06.54l8%2C4.61c.24.14.22.39-.06.55l-6%2C3.46c-.28.16-.3.4-.06.54l6.21%2C3.59A1.1%2C1.1%2C0%2C0%2C0%2C260.66%2C310Zm-43.32-3.68-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C217.34%2C306.34Zm-9.49%2C5.48-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C207.85%2C311.82Zm-52.5%2C58.48a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41-.05.55ZM132%2C355.64l-6.5%2C3.75c-.27.16-.3.4%2C0%2C.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C132%2C355.64Zm12%2C11a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.1%2C1.1%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.41%2C0%2C.55Zm26.18%2C5.89%2C6.49-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.74c-.28.16-.3.41-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C170.16%2C372.51ZM159.72%2C378a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4.06-.54L161%2C370.11a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.55Zm-18.29-27.86-6.49%2C3.75c-.27.16-.3.4-.05.55L141.1%2C358a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C141.43%2C350.16Zm47.44-27.39-6.49%2C3.75c-.27.16-.3.4%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C188.87%2C322.77Zm-38%2C21.92-6.49%2C3.74c-.28.16-.3.41-.06.55l6.22%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C150.92%2C344.69Zm47.44-27.39L191.87%2C321c-.28.16-.3.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C198.36%2C317.3Zm-19%2C10.95-6.5%2C3.75c-.27.16-.3.4%2C0%2C.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.31-.4.06-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C179.39%2C328.25Zm-9.49%2C5.48-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C169.9%2C333.73Zm-9.49%2C5.48L153.92%2C343c-.28.16-.3.41-.06.55l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.15.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C160.41%2C339.21Zm43.32%2C3.67%2C6.49-3.75c.28-.15.3-.4.06-.54L204.07%2C335a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C203.73%2C342.88Zm88.51-79.79-6.49%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C292.24%2C263.09Zm-11.48%2C6.63-6.49%2C3.75c-.28.16-.3.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1.07%2C1.07%2C0%2C0%2C0%2C280.76%2C269.72Zm21-12.1-6.49%2C3.74c-.28.16-.3.41-.06.55l6.21%2C3.58a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C301.73%2C257.62Zm-52.44%2C48.71%2C6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C249.29%2C306.33Zm62.87-54.22a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74c.27-.16.3-.41.05-.55ZM213.22%2C337.4l6.49-3.74c.27-.16.3-.41%2C0-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C213.22%2C337.4Zm116.35-67.17%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C329.57%2C270.23Zm-18.36.35%2C6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C311.21%2C270.58ZM321%2C257.23a1%2C1%2C0%2C0%2C0-.94%2C0L313.6%2C261c-.28.16-.3.4-.06.54l6.21%2C3.59a1.1%2C1.1%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.41.05-.55Zm2-1.16%2C15.08%2C8.71a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-15.09-8.71a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75C322.81%2C255.69%2C322.79%2C255.93%2C323%2C256.07Zm-21.91%2C12.15-6.5%2C3.74c-.27.16-.3.41-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C301.12%2C268.22Zm-71.41%2C41.22-6.5%2C3.75c-.27.16-.3.41-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C229.71%2C309.44Zm89.43-33.7a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4-.05.54ZM239.19%2C304l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C239.19%2C304Zm-74.36%2C60.86a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.27-.16.3-.41%2C0-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm-11-11.56L147.31%2C357c-.28.15-.3.4-.06.54l6.22%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C153.8%2C353.27Zm21.47%2C6.05%2C6.49-3.75c.27-.16.3-.41.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C175.27%2C359.32Zm9.48-5.48%2C6.49-3.75c.28-.16.31-.4.06-.54L185.09%2C346a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C184.75%2C353.84Zm9.49-5.48%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C194.24%2C348.36Zm-31-.57-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C163.29%2C347.79Zm9.49-5.48-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C172.78%2C342.31Zm37.95-21.91-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.1%2C1.1%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.16.3-.41%2C0-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C210.73%2C320.4Zm-9.49%2C5.48-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.22-3.58A1%2C1%2C0%2C0%2C0%2C201.24%2C325.88Zm19-11-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C220.22%2C314.92Zm-37.95%2C21.91-6.5%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C182.27%2C336.83Zm9.48-5.47-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C191.75%2C331.36ZM179.64%2C367l6.5-3.74c.27-.16.3-.41.05-.55L180%2C359.16a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C179.64%2C367Zm-50-2.36-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0L116%2C364.87c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74C129.83%2C365.06%2C129.86%2C364.81%2C129.61%2C364.67ZM142%2C367.78l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-10%2C5.77c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l10-5.77C142.2%2C368.16%2C142.22%2C367.92%2C142%2C367.78Zm-21.64-10.19L114.13%2C354a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l8-4.62C120.56%2C358%2C120.59%2C357.73%2C120.34%2C357.59Zm6.13-3.54a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55Zm26.88%2C17.41-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-12.49%2C7.21c-.27.16-.3.4-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0L153.29%2C372C153.57%2C371.84%2C153.59%2C371.6%2C153.35%2C371.46Zm4.38%2C7.71-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-8%2C4.61c-.27.16-.3.41-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l8-4.61C158%2C379.56%2C158%2C379.32%2C157.73%2C379.17ZM197%2C313.33a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.15.3-.4.05-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.74c-.28.16-.3.41-.06.55Zm-19%2C10.95a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.55ZM136%2C348.58a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54Zm51.57-29.78a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0L195%2C315c.27-.16.3-.4%2C0-.54l-6.21-3.59a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55Zm-19%2C11a1%2C1%2C0%2C0%2C0%2C.94%2C0L176%2C326c.28-.16.3-.4.06-.55l-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4%2C0%2C.54Zm-6.16%2C49.8a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-10%2C5.77c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l10-5.76c.28-.16.3-.41.06-.55Zm-7.46-41.94a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm-9.49%2C5.48a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.41.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0L139.29%2C339c-.28.16-.3.4-.06.54Zm192.72-65a1%2C1%2C0%2C0%2C0-.94%2C0l-16%2C9.22c-.28.16-.3.4-.06.55l6.22%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l16-9.23c.27-.16.3-.4.05-.54Zm-21%2C12.11a1%2C1%2C0%2C0%2C0-.94%2C0L309.76%2C294c-.28.16-.31.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.31-.4.06-.54ZM189.13%2C361.56l6.49-3.75c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59A1.07%2C1.07%2C0%2C0%2C0%2C189.13%2C361.56Zm109.08-60.42a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.41.05-.55Zm49.44-28.54a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74c.27-.16.3-.41.05-.55Zm15.7-1.9L348.27%2C262a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.15-.3.4-.05.54L355.86%2C275a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.49-3.75C363.57%2C271.09%2C363.59%2C270.84%2C363.35%2C270.7ZM262.76%2C321.61a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.28.16-.3.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l8-4.61c.28-.16.3-.41.06-.55Zm24-13.84a1%2C1%2C0%2C0%2C0-.94%2C0l-10%2C5.77c-.28.16-.3.4-.06.54L282%2C317.7a1.1%2C1.1%2C0%2C0%2C0%2C.95%2C0l10-5.77c.28-.16.3-.4.06-.55Zm-45.94%2C26.52a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-53.43%2C30.84c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l53.43-30.85c.28-.16.3-.4.06-.54Zm-56.43%2C32.58a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-8%2C4.62c-.28.16-.31.4-.06.54l6.21%2C3.59a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l8-4.62c.28-.16.3-.4.06-.54ZM251.77%2C328a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.62c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l8-4.61c.27-.16.3-.4.05-.54Zm-78.4%2C45.26a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l8-4.61c.27-.16.3-.41.05-.55Zm100.37-57.94a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.27.16-.3.4-.05.54L271%2C324a1%2C1%2C0%2C0%2C0%2C.94%2C0l8-4.61c.28-.16.3-.41.06-.55Zm34-19.61a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54ZM329%2C280.83l6.5-3.75c.27-.16.3-.4.05-.54L329.29%2C273a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C329%2C280.83Zm-38.71%2C1.86%2C6.49-3.75c.27-.15.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.74c-.28.16-.3.41-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C290.24%2C282.69Zm-25.21%2C35%2C19-11c.28-.16.3-.41.06-.55l-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-19%2C10.95c-.28.16-.3.41-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C265%2C317.73Zm53.49-31.39a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.16.3-.4.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm-7.93-5.16%2C6.5-3.74c.27-.16.3-.41.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C310.59%2C281.18Zm-55%2C42%2C6.49-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C255.55%2C323.21Zm42-24.76a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4-.05.54ZM208.11%2C350.6l6.49-3.75c.27-.16.3-.4.05-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0L201%2C346.5c-.28.16-.3.4-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C208.11%2C350.6Zm9.49-5.48%2C6.49-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0L210.5%2C341c-.28.16-.3.41-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C217.6%2C345.12Zm-19%2C11%2C6.49-3.75c.28-.16.3-.4.06-.55L199%2C348.2a1.06%2C1.06%2C0%2C0%2C0-1%2C0L191.52%2C352c-.27.16-.3.4-.05.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C198.62%2C356.08Zm37.95-21.91%2C6.49-3.75c.28-.16.3-.41.06-.55l-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59A1.07%2C1.07%2C0%2C0%2C0%2C236.57%2C334.17Zm-9.49%2C5.47%2C6.49-3.74c.28-.16.31-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0L220%2C335.55c-.28.16-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C227.08%2C339.64Zm19-10.95%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0L239%2C324.59c-.27.16-.3.4-.05.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C246.06%2C328.69Zm51.77-76.21a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-1.66-1a1%2C1%2C0%2C0%2C0-.94%2C0L296.24%2C251c-.28.16-.3.41-.06.55Zm-47.15%2C29.86a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54L252%2C274.43a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.55Zm19-10.95a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54ZM239.09%2C289a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm21.07-12.17a1%2C1%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4%2C0-.54L261.44%2C269a1%2C1%2C0%2C0%2C0-.94%2C0L254%2C272.73c-.28.16-.3.41-.06.55ZM220.11%2C300a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-1%2C0L214%2C295.86c-.28.16-.3.4-.06.54Zm9.49-5.48a1.1%2C1.1%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.16.3-.4.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm49.26-31.07a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-1.65-.95a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.54ZM307.32%2C247a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-1.65-1a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.54Zm13.05%2C7.53a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.31-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4%2C0%2C.54Zm18.07%2C20.81%2C6.49-3.75c.28-.16.31-.4.06-.54l-6.21-3.59a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C338.44%2C275.35ZM288.35%2C258a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-1.66-1a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55Zm-77.72%2C47.5a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41-.05.55Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22238.71%20354.4%20240.04%20355.17%20275.39%20375.57%20338.26%20339.27%20339.57%20338.53%20302.89%20317.35%20238.71%20354.4%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22240.04%20355.17%20275.39%20375.57%20338.26%20339.27%20302.89%20318.86%20240.04%20355.17%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpolygon%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Window--inject-87%22%3E%3Cg%20id%3D%22freepik--window--inject-87%22%3E%3Cg%20id%3D%22freepik--window--inject-87%22%3E%3Cpath%20d%3D%22M90.55%2C340.63a4.12%2C4.12%2C0%2C0%2C1-1.83.56%2C4.63%2C4.63%2C0%2C0%2C1-2.68-.47%2C5%2C5%2C0%2C0%2C1-2.19-4V207.37l4.38%2C2.53V339.28c0%2C1.06.53%2C1.67%2C1.29%2C1.67A2.25%2C2.25%2C0%2C0%2C0%2C90.55%2C340.63Z%22%20style%3D%22fill%3A%23f0f0f0%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C211.68a5.16%2C5.16%2C0%2C0%2C1-2.32%2C4L90.55%2C340.63c-1.28.74-2.33.14-2.33-1.35V194.74l6.42-3.7c1.28-.74%2C3.37-12%2C4.66-12.79l55.59-32.1c1.3-.74%2C4.33%2C7.6%2C5.61%2C6.86L309%2C67.13V211.68Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M307.9%2C69V211.68a4.1%2C4.1%2C0%2C0%2C1-1.79%2C3.1L90%2C339.7a1%2C1%2C0%2C0%2C1-.5.17c-.21%2C0-.21-.56-.21-.59V195.36L95.18%2C192c.93-.54%2C1.51-2.35%2C2.81-7a34.61%2C34.61%2C0%2C0%2C1%2C1.93-5.82L155%2C147.32a25.13%2C25.13%2C0%2C0%2C1%2C1.75%2C2.8c1.5%2C2.64%2C2.34%2C4%2C3.56%2C4a1.38%2C1.38%2C0%2C0%2C0%2C.71-.19L307.9%2C69M155.43%2C147.08h0M100%2C179.1h0m209-112L160.5%2C153a.34.34%2C0%2C0%2C1-.17.05c-1.31%2C0-4-7-5.26-7a.41.41%2C0%2C0%2C0-.18.05L99.3%2C178.25C98%2C179%2C95.92%2C190.3%2C94.64%2C191l-6.42%2C3.7V339.28c0%2C1.06.53%2C1.67%2C1.29%2C1.67a2.1%2C2.1%2C0%2C0%2C0%2C1-.32l216.1-124.91a5.16%2C5.16%2C0%2C0%2C0%2C2.32-4V67.13Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M86%2C201.91A5%2C5%2C0%2C0%2C1%2C83.85%2C198V179.77a5.15%2C5.15%2C0%2C0%2C1%2C2.34-4L302.27%2C50.81a4.38%2C4.38%2C0%2C0%2C1%2C6.7%2C3.87v18.2a5.13%2C5.13%2C0%2C0%2C1-2.32%2C4L90.55%2C201.83A5%2C5%2C0%2C0%2C1%2C86%2C201.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C54.3c-.16-1.2-1.14-1.64-2.3-1L90.55%2C178.25A4.89%2C4.89%2C0%2C0%2C0%2C88.9%2C180l-4.37-2.53a4.78%2C4.78%2C0%2C0%2C1%2C1.65-1.74L302.28%2C50.82A4.34%2C4.34%2C0%2C0%2C1%2C309%2C54.3Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M88.9%2C180a4.73%2C4.73%2C0%2C0%2C0-.68%2C2.29V209.9l-4.38-2.53v-27.6c0-.1%2C0-.19%2C0-.28a4.71%2C4.71%2C0%2C0%2C1%2C.09-.58%2C5.15%2C5.15%2C0%2C0%2C1%2C.59-1.44Z%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C54.68V67.13L160.5%2C153c-1.28.74-2.32.14-2.32-1.35V147c0-1.49-1.05-2.09-2.34-1.35L99.3%2C178.25a5.15%2C5.15%2C0%2C0%2C0-2.34%2C4V187a5.15%2C5.15%2C0%2C0%2C1-2.32%2C4l-6.42%2C3.7V182.29a5.17%2C5.17%2C0%2C0%2C1%2C2.33-4L306.65%2C53.33C307.93%2C52.59%2C309%2C53.19%2C309%2C54.68Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M298.05%2C62.49c1.62-.94%2C2.93-.18%2C2.93%2C1.69a6.47%2C6.47%2C0%2C0%2C1-2.93%2C5.08c-1.62.94-2.94.18-2.94-1.69A6.48%2C6.48%2C0%2C0%2C1%2C298.05%2C62.49Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M287.49%2C68.58c1.62-.94%2C2.93-.18%2C2.93%2C1.69a6.49%2C6.49%2C0%2C0%2C1-2.93%2C5.08c-1.62.93-2.93.18-2.93-1.69A6.47%2C6.47%2C0%2C0%2C1%2C287.49%2C68.58Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M276.93%2C74.66c1.62-.93%2C2.93-.17%2C2.93%2C1.7a6.49%2C6.49%2C0%2C0%2C1-2.93%2C5.08c-1.62.93-2.93.17-2.93-1.7A6.49%2C6.49%2C0%2C0%2C1%2C276.93%2C74.66Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C67.13V82.29L88.22%2C209.9V194.74L93%2C192c1.28-.75%2C1.71-1.88%2C2.33-4L97%2C182.29c.51-2%2C1.05-3.3%2C2.34-4l55.59-32.1c1.3-.74%2C2.3-.82%2C3.29.8l2%2C3.62c.73%2C1.26%2C1.1%2C2%2C2.38%2C1.26Z%22%20style%3D%22fill%3A%23e6e6e6%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%2288.22%20194.74%2088.22%20209.9%2083.84%20207.37%2083.84%20192.22%2088.22%20194.74%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M98.91%2C195.83%2C95.25%2C198l1.4-2.69a.65.65%2C0%2C0%2C0%2C0-.65c-.1-.13-.29%2C0-.41.2l-2%2C3.81v0a.58.58%2C0%2C0%2C0%2C0%2C.14.08.08%2C0%2C0%2C0%2C0%2C0%2C.75.75%2C0%2C0%2C0%2C0%2C.2.43.43%2C0%2C0%2C0%2C0%2C.17l0%2C0a.22.22%2C0%2C0%2C0%2C0%2C.08h0l2%2C1.52a.17.17%2C0%2C0%2C0%2C.19%2C0%2C.53.53%2C0%2C0%2C0%2C.22-.28c.11-.25.1-.53%2C0-.62l-1.4-1.08%2C3.66-2.11a.78.78%2C0%2C0%2C0%2C.3-.62C99.21%2C195.87%2C99.07%2C195.74%2C98.91%2C195.83Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M102%2C194.07l3.66-2.11-1.4-1.07a.61.61%2C0%2C0%2C1%2C0-.63c.11-.25.3-.37.42-.28l2%2C1.53h0a.22.22%2C0%2C0%2C1%2C0%2C.08l0%2C0a.79.79%2C0%2C0%2C1%2C0%2C.17%2C1.5%2C1.5%2C0%2C0%2C1%2C0%2C.2s0%2C0%2C0%2C0a.58.58%2C0%2C0%2C1%2C0%2C.14v0l-2%2C3.82a.62.62%2C0%2C0%2C1-.2.22.16.16%2C0%2C0%2C1-.22%2C0%2C.69.69%2C0%2C0%2C1%2C0-.65l1.4-2.69L102%2C195c-.17.09-.3%2C0-.3-.29A.75.75%2C0%2C0%2C1%2C102%2C194.07Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M114%2C183.53c0-.22-.22-.19-.31.05l-.51%2C1.23c-.85-.1-1.89.74-2.58%2C2.22-.91%2C1.92-.91%2C4.19%2C0%2C5.06a1.3%2C1.3%2C0%2C0%2C0%2C1.64.1%2C4.54%2C4.54%2C0%2C0%2C0%2C1.64-2%2C.6.6%2C0%2C0%2C0%2C0-.64c-.11-.11-.3%2C0-.41.24-.68%2C1.43-1.78%2C2.07-2.46%2C1.42s-.67-2.35%2C0-3.78c.48-1%2C1.18-1.62%2C1.78-1.66l-.38.92c-.1.24%2C0%2C.47.15.37l1.49-1a.52.52%2C0%2C0%2C0%2C.17-.41Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M153.29%2C153.07l1.33-2.82a.85.85%2C0%2C0%2C0%2C0-.88c-.15-.16-.41%2C0-.57.33l-1.33%2C2.82-1.33-1.28c-.16-.16-.42%2C0-.58.33a.88.88%2C0%2C0%2C0%2C0%2C.87l1.34%2C1.29-1.34%2C2.82a.9.9%2C0%2C0%2C0%2C0%2C.88.23.23%2C0%2C0%2C0%2C.29%2C0%2C.81.81%2C0%2C0%2C0%2C.29-.35l1.33-2.82%2C1.33%2C1.28a.22.22%2C0%2C0%2C0%2C.29%2C0%2C.8.8%2C0%2C0%2C0%2C.28-.35.85.85%2C0%2C0%2C0%2C0-.88Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M118.82%2C187v-4.72a5.18%2C5.18%2C0%2C0%2C1%2C2.33-4L293.53%2C78.63c1.29-.74%2C2.33-.14%2C2.33%2C1.35v4.71a5.14%2C5.14%2C0%2C0%2C1-2.33%2C4L121.15%2C188.35C119.87%2C189.09%2C118.82%2C188.49%2C118.82%2C187Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M290.36%2C89.09a.46.46%2C0%2C0%2C1-.21%2C0%2C.62.62%2C0%2C0%2C1-.35-.7l.23-1.92-.9-.64a.69.69%2C0%2C0%2C1-.25-.52%2C1.06%2C1.06%2C0%2C0%2C1%2C.39-.82l1.37-1a.32.32%2C0%2C0%2C0%2C.06-.11l.61-2a.86.86%2C0%2C0%2C1%2C.69-.65.56.56%2C0%2C0%2C1%2C.54.32h0l.51%2C1.1%2C1.16-.45a.54.54%2C0%2C0%2C1%2C.61.14.84.84%2C0%2C0%2C1%2C0%2C1l-1%2C1.86a.36.36%2C0%2C0%2C0%2C0%2C.11l.23%2C1.68a1%2C1%2C0%2C0%2C1-.29.84.64.64%2C0%2C0%2C1-.54.21l-1.12-.14-1.21%2C1.54A.69.69%2C0%2C0%2C1%2C290.36%2C89.09Zm-.66-3.89.89.65a.63.63%2C0%2C0%2C1%2C.24.64l-.15%2C1.27.81-1a.7.7%2C0%2C0%2C1%2C.62-.29l1.11.14a.27.27%2C0%2C0%2C0%2C0-.13L293%2C84.77a1%2C1%2C0%2C0%2C1%2C.12-.6l.87-1.63-.89.34a.55.55%2C0%2C0%2C1-.71-.28l-.41-.86-.54%2C1.78a1%2C1%2C0%2C0%2C1-.34.51l-1.37%2C1.06A.29.29%2C0%2C0%2C0%2C289.7%2C85.2Zm2.31%2C2Zm-1.89-.74Zm1.69-5.2Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3Cg%20style%3D%22opacity%3A0.5%22%3E%3Cpath%20d%3D%22M298.61%2C78.06a.81.81%2C0%2C0%2C1-.7-.41.8.8%2C0%2C0%2C1%2C.29-1.1l6.56-3.78a.8.8%2C0%2C1%2C1%2C.81%2C1.39L299%2C78A.86.86%2C0%2C0%2C1%2C298.61%2C78.06Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M298.61%2C81.85a.81.81%2C0%2C0%2C1-.7-.41.8.8%2C0%2C0%2C1%2C.29-1.1l6.56-3.79a.81.81%2C0%2C0%2C1%2C.81%2C1.4L299%2C81.74A.86.86%2C0%2C0%2C1%2C298.61%2C81.85Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M298.61%2C85.63a.8.8%2C0%2C0%2C1-.41-1.5l6.56-3.79a.81.81%2C0%2C0%2C1%2C.81%2C1.4L299%2C85.53A.85.85%2C0%2C0%2C1%2C298.61%2C85.63Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Shield--inject-87%22%3E%3Cg%20id%3D%22freepik--shield--inject-87%22%3E%3Cpath%20d%3D%22M208.38%2C156.24c-4.59%2C4.12-8.55%2C3.9-11%2C2-2.48%2C4.76-6.44%2C9.55-11%2C10.73L183.72%2C176s1.4%2C1.62%2C1.4%2C5.48a19.26%2C19.26%2C0%2C0%2C1-.64%2C4.8%2C25.41%2C25.41%2C0%2C0%2C0-1.1%2C7.18%2C12.54%2C12.54%2C0%2C0%2C0%2C1.43%2C6.39%2C7.74%2C7.74%2C0%2C0%2C0%2C2.87%2C2.87l-4-2.29a8%2C8%2C0%2C0%2C1-3-3%2C12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.35%2C25.35%2C0%2C0%2C1%2C1.1-7.18%2C19.32%2C19.32%2C0%2C0%2C0%2C.65-4.8c0-3.87-1.41-5.49-1.41-5.49l2.62-7.07c4.58-1.17%2C8.54-6%2C11-10.73%2C2.47%2C1.91%2C6.43%2C2.13%2C11-2Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M194.68%2C156.69l-1.45-.84A6.31%2C6.31%2C0%2C0%2C0%2C194.68%2C156.69Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.8%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M204.25%2C153.86c-3.77%2C3.39-7.12%2C3.84-9.57%2C2.83l2.68%2C1.55c2.47%2C1.9%2C6.43%2C2.12%2C11-2Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.85%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M193.23%2C155.85c-2.48%2C4.77-6.44%2C9.56-11%2C10.73l4.13%2C2.39c4.58-1.18%2C8.54-6%2C11-10.73Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.65%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22182.21%20166.58%20179.59%20173.65%20183.72%20176.04%20186.34%20168.97%20182.21%20166.58%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.55%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M184.81%2C199.89a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.26%2C19.26%2C0%2C0%2C0%2C.64-4.8c0-3.86-1.4-5.48-1.4-5.48l-4.13-2.39s1.41%2C1.62%2C1.41%2C5.49a19.32%2C19.32%2C0%2C0%2C1-.65%2C4.8%2C25.35%2C25.35%2C0%2C0%2C0-1.1%2C7.18%2C12.54%2C12.54%2C0%2C0%2C0%2C1.43%2C6.39%2C8%2C8%2C0%2C0%2C0%2C3%2C3l4%2C2.29A7.74%2C7.74%2C0%2C0%2C1%2C184.81%2C199.89Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M184.81%2C199.89a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.26%2C19.26%2C0%2C0%2C0%2C.64-4.8c0-3.86-1.4-5.48-1.4-5.48l-4.13-2.39s1.41%2C1.62%2C1.41%2C5.49a19.32%2C19.32%2C0%2C0%2C1-.65%2C4.8%2C25.35%2C25.35%2C0%2C0%2C0-1.1%2C7.18%2C12.54%2C12.54%2C0%2C0%2C0%2C1.43%2C6.39%2C8%2C8%2C0%2C0%2C0%2C3%2C3l4%2C2.29A7.74%2C7.74%2C0%2C0%2C1%2C184.81%2C199.89Z%22%20style%3D%22opacity%3A0.05%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M197.36%2C204.74c-6.85.07-10.77-1.74-12.55-4.85a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.24%2C19.24%2C0%2C0%2C0%2C.65-4.79c0-3.87-1.41-5.49-1.41-5.49l2.62-7.07c4.58-1.18%2C8.54-6%2C11-10.73%2C2.47%2C1.91%2C6.43%2C2.12%2C11-2l2.62%2C4a19.87%2C19.87%2C0%2C0%2C0-1.41%2C7.11%2C11.69%2C11.69%2C0%2C0%2C0%2C.65%2C4%2C14%2C14%2C0%2C0%2C1%2C1.09%2C5.92%2C23.71%2C23.71%2C0%2C0%2C1-1.42%2C8C208.13%2C190.57%2C204.21%2C196.9%2C197.36%2C204.74Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M197.36%2C204.74c-6.85.07-10.77-1.74-12.55-4.85a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.24%2C19.24%2C0%2C0%2C0%2C.65-4.79c0-3.87-1.41-5.49-1.41-5.49l2.62-7.07c4.58-1.18%2C8.54-6%2C11-10.73%2C2.47%2C1.91%2C6.43%2C2.12%2C11-2l2.62%2C4a19.87%2C19.87%2C0%2C0%2C0-1.41%2C7.11%2C11.69%2C11.69%2C0%2C0%2C0%2C.65%2C4%2C14%2C14%2C0%2C0%2C1%2C1.09%2C5.92%2C23.71%2C23.71%2C0%2C0%2C1-1.42%2C8C208.13%2C190.57%2C204.21%2C196.9%2C197.36%2C204.74Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.75%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M196.55%2C203c-5.31-.07-8.74-1.39-10.2-4a10.7%2C10.7%2C0%2C0%2C1-1.19-5.51%2C21.92%2C21.92%2C0%2C0%2C1%2C.88-6.1c.05-.22.11-.43.16-.65a20.6%2C20.6%2C0%2C0%2C0%2C.7-5.22%2C12.12%2C12.12%2C0%2C0%2C0-1.21-5.69l2-5.43c4.91-1.7%2C8.46-6.55%2C10.34-9.73a8%2C8%2C0%2C0%2C0%2C3.2.65%2C11.47%2C11.47%2C0%2C0%2C0%2C6.72-2.46l1%2C1.64a22%2C22%2C0%2C0%2C0-1.2%2C6.89%2C13.41%2C13.41%2C0%2C0%2C0%2C.75%2C4.64c.06.15.12.31.17.47a11.72%2C11.72%2C0%2C0%2C1%2C.82%2C4.86%2C22%2C22%2C0%2C0%2C1-1.32%2C7.45C206.48%2C189.91%2C202.55%2C196%2C196.55%2C203Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M196.55%2C203c-5.31-.07-8.74-1.39-10.2-4a10.7%2C10.7%2C0%2C0%2C1-1.19-5.51%2C21.92%2C21.92%2C0%2C0%2C1%2C.88-6.1c.05-.22.11-.43.16-.65a20.6%2C20.6%2C0%2C0%2C0%2C.7-5.22%2C12.12%2C12.12%2C0%2C0%2C0-1.21-5.69l2-5.43c4.91-1.7%2C8.46-6.55%2C10.34-9.73a8%2C8%2C0%2C0%2C0%2C3.2.65%2C11.47%2C11.47%2C0%2C0%2C0%2C6.72-2.46l1%2C1.64a22%2C22%2C0%2C0%2C0-1.2%2C6.89%2C13.41%2C13.41%2C0%2C0%2C0%2C.75%2C4.64c.06.15.12.31.17.47a11.72%2C11.72%2C0%2C0%2C1%2C.82%2C4.86%2C22%2C22%2C0%2C0%2C1-1.32%2C7.45C206.48%2C189.91%2C202.55%2C196%2C196.55%2C203Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M196.55%2C203c-5.31-.07-8.74-1.39-10.2-4a10.7%2C10.7%2C0%2C0%2C1-1.19-5.51%2C21.92%2C21.92%2C0%2C0%2C1%2C.88-6.1c.05-.22.11-.43.16-.65a20.6%2C20.6%2C0%2C0%2C0%2C.7-5.22%2C12.12%2C12.12%2C0%2C0%2C0-1.21-5.69l2-5.43c4.91-1.7%2C8.46-6.55%2C10.34-9.73a8%2C8%2C0%2C0%2C0%2C3.2.65%2C11.47%2C11.47%2C0%2C0%2C0%2C6.72-2.46l1%2C1.64a22%2C22%2C0%2C0%2C0-1.2%2C6.89%2C13.41%2C13.41%2C0%2C0%2C0%2C.75%2C4.64c.06.15.12.31.17.47a11.72%2C11.72%2C0%2C0%2C1%2C.82%2C4.86%2C22%2C22%2C0%2C0%2C1-1.32%2C7.45C206.48%2C189.91%2C202.55%2C196%2C196.55%2C203Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M187.57%2C200.48c1.81%2C1.59%2C4.81%2C2.43%2C9%2C2.48l-2.66-1.52A19.35%2C19.35%2C0%2C0%2C1%2C187.57%2C200.48Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.8%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22207.63%20159.71%20209.01%20160.5%20207.96%20158.87%20207.36%20159.29%20207.63%20159.71%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M207.18%2C171.24a13.41%2C13.41%2C0%2C0%2C1-.75-4.64%2C21.74%2C21.74%2C0%2C0%2C1%2C1.2-6.89l-.27-.42a11.12%2C11.12%2C0%2C0%2C1-6.12%2C2%2C8%2C8%2C0%2C0%2C1-3.2-.65c-1.88%2C3.18-5.43%2C8-10.34%2C9.73l-2%2C5.43a12.12%2C12.12%2C0%2C0%2C1%2C1.21%2C5.69%2C20.6%2C20.6%2C0%2C0%2C1-.7%2C5.22c0%2C.22-.11.43-.16.65a21.92%2C21.92%2C0%2C0%2C0-.88%2C6.1%2C10.7%2C10.7%2C0%2C0%2C0%2C1.19%2C5.51%2C6.05%2C6.05%2C0%2C0%2C0%2C1.73%2C1.88%2C17.87%2C17.87%2C0%2C0%2C0%2C7.08%2C1.27c6-6.95%2C9.93-13%2C11.68-18.14a22%2C22%2C0%2C0%2C0%2C1.33-7.45%2C11.89%2C11.89%2C0%2C0%2C0-.82-4.86C207.29%2C171.55%2C207.23%2C171.39%2C207.18%2C171.24Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M187.7%2C170.41l-2%2C5.43a12.12%2C12.12%2C0%2C0%2C1%2C1.21%2C5.69%2C20.6%2C20.6%2C0%2C0%2C1-.7%2C5.22c0%2C.22-.11.43-.16.65a21.92%2C21.92%2C0%2C0%2C0-.88%2C6.1%2C10.7%2C10.7%2C0%2C0%2C0%2C1.19%2C5.51%2C6.05%2C6.05%2C0%2C0%2C0%2C1.73%2C1.88%2C17.87%2C17.87%2C0%2C0%2C0%2C7.08%2C1.27v-20l2.88-.87V160.68a32.06%2C32.06%2C0%2C0%2C1-2.88%2C4.11A17.6%2C17.6%2C0%2C0%2C1%2C187.7%2C170.41Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20id%3D%22freepik--shadow--inject-87%22%20d%3D%22M202.1%2C174.77a.91.91%2C0%2C0%2C0-.11-.16l0%2C0a1.18%2C1.18%2C0%2C0%2C0-.29-.23l-1-.56a2.25%2C2.25%2C0%2C0%2C0-.55-.21l-.35-.05v-2.85a3.4%2C3.4%2C0%2C0%2C0-1.48-3.1%2C3%2C3%2C0%2C0%2C0-3.13.2%2C8.22%2C8.22%2C0%2C0%2C0-3.66%2C6.59v3.36l-1.92%2C1.1-.16.11-.05%2C0h0a.71.71%2C0%2C0%2C0-.27.53v11.52a.77.77%2C0%2C0%2C0%2C0%2C.15.89.89%2C0%2C0%2C0%2C.37.47l.1.07.47.27.5.28a1.78%2C1.78%2C0%2C0%2C0%2C.61.22%2C2.59%2C2.59%2C0%2C0%2C0%2C1.75-.22l8.73-5a.84.84%2C0%2C0%2C0%2C.49-.68V175A.68.68%2C0%2C0%2C0%2C202.1%2C174.77Zm-8.68-.39a6.37%2C6.37%2C0%2C0%2C1%2C2.72-5%2C1.33%2C1.33%2C0%2C0%2C1%2C1.24-.2%2C1.67%2C1.67%2C0%2C0%2C1%2C.54%2C1.47v3.36l-2.48%2C1.43-2%2C1.17Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--Padlock--inject-87%22%3E%3Cpath%20d%3D%22M203.18%2C175.55a.82.82%2C0%2C0%2C0-.49-.68l-1-.56a2.65%2C2.65%2C0%2C0%2C0-2.36%2C0l-8.73%2C5a.83.83%2C0%2C0%2C0-.49.68h0v11.53h0a.82.82%2C0%2C0%2C0%2C.49.68l1%2C.56a2.61%2C2.61%2C0%2C0%2C0%2C2.37%2C0l8.72-5a.82.82%2C0%2C0%2C0%2C.49-.68h0V175.55Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M191.6%2C181.27l-1-.55a.73.73%2C0%2C0%2C1%2C0-1.37l8.73-5a2.65%2C2.65%2C0%2C0%2C1%2C2.36%2C0l1%2C.56a.71.71%2C0%2C0%2C1%2C0%2C1.36l-8.72%2C5A2.61%2C2.61%2C0%2C0%2C1%2C191.6%2C181.27Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M192.79%2C181.55v11.53a2.43%2C2.43%2C0%2C0%2C1-1.19-.28l-1-.56a.81.81%2C0%2C0%2C1-.49-.68V180a.83.83%2C0%2C0%2C0%2C.49.69l1%2C.55A2.43%2C2.43%2C0%2C0%2C0%2C192.79%2C181.55Z%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M199.14%2C187.26l-2.09%2C1.2.32-3.77a1%2C1%2C0%2C0%2C1-.4-.92%2C2.71%2C2.71%2C0%2C0%2C1%2C1.12-2.16c.63-.35%2C1.13%2C0%2C1.13.86a2.83%2C2.83%2C0%2C0%2C1-.41%2C1.39Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22199.14%20187.26%20197.25%20186.17%20197.05%20188.46%20199.14%20187.26%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M198.09%2C181.61a2.52%2C2.52%2C0%2C0%2C0-1%2C1.28l1.68%2C1h0a2.83%2C2.83%2C0%2C0%2C0%2C.41-1.39C199.22%2C181.64%2C198.72%2C181.26%2C198.09%2C181.61Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M200.82%2C175.81h0V171.2a3.38%2C3.38%2C0%2C0%2C0-1.48-3.1%2C3%2C3%2C0%2C0%2C0-3.12.19%2C8.22%2C8.22%2C0%2C0%2C0-3.67%2C6.59v4.64h0a.47.47%2C0%2C0%2C0%2C.28.38%2C1.48%2C1.48%2C0%2C0%2C0%2C1.33%2C0%2C.45.45%2C0%2C0%2C0%2C.28-.38h0v-4.64a6.37%2C6.37%2C0%2C0%2C1%2C2.72-4.95%2C1.33%2C1.33%2C0%2C0%2C1%2C1.24-.2%2C1.66%2C1.66%2C0%2C0%2C1%2C.54%2C1.47v4.61h0a.45.45%2C0%2C0%2C0%2C.28.38%2C1.48%2C1.48%2C0%2C0%2C0%2C1.33%2C0%2C.45.45%2C0%2C0%2C0%2C.27-.38Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cpath%20d%3D%22M129.34%2C253c.13-.07.23-.08.3%2C0a.69.69%2C0%2C0%2C1%2C.14.25l2.12%2C8.23a.58.58%2C0%2C0%2C1%2C0%2C.2.66.66%2C0%2C0%2C1-.06.27.35.35%2C0%2C0%2C1-.15.18l-1.23.71c-.13.08-.22.09-.28%2C0a.32.32%2C0%2C0%2C1-.1-.18l-.27-1.09L127.26%2C263l-.28%2C1.41a.81.81%2C0%2C0%2C1-.1.3.6.6%2C0%2C0%2C1-.28.29l-1.22.71a.13.13%2C0%2C0%2C1-.16%2C0%2C.28.28%2C0%2C0%2C1-.06-.2%2C1%2C1%2C0%2C0%2C1%2C0-.24l2.12-10.68a2.07%2C2.07%2C0%2C0%2C1%2C.15-.41.69.69%2C0%2C0%2C1%2C.29-.34Zm-1.58%2C7.47%2C1.58-.91-.79-3.15Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M133%2C254a.8.8%2C0%2C0%2C1%2C.08-.33.5.5%2C0%2C0%2C1%2C.19-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v3.79a1.81%2C1.81%2C0%2C0%2C0%2C.18.93c.13.19.33.2.62%2C0a1.37%2C1.37%2C0%2C0%2C0%2C.61-.74%2C3.33%2C3.33%2C0%2C0%2C0%2C.18-1.14V252a.78.78%2C0%2C0%2C1%2C.07-.33.57.57%2C0%2C0%2C1%2C.19-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v7a.8.8%2C0%2C0%2C1-.08.33.46.46%2C0%2C0%2C1-.18.22l-1.13.65a.14.14%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-.34a3.15%2C3.15%2C0%2C0%2C1-.19.43%2C2.27%2C2.27%2C0%2C0%2C1-.27.44%2C3.16%2C3.16%2C0%2C0%2C1-.39.44%2C2.69%2C2.69%2C0%2C0%2C1-.52.38c-.63.36-1.13.38-1.5%2C0a3.12%2C3.12%2C0%2C0%2C1-.57-2.27Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M142%2C253.1a.85.85%2C0%2C0%2C0%2C.09.47c.07.09.18.09.33%2C0l.77-.45a.14.14%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v1.51a.8.8%2C0%2C0%2C1-.08.33.45.45%2C0%2C0%2C1-.19.23l-.92.53a1.81%2C1.81%2C0%2C0%2C1-.83.28.89.89%2C0%2C0%2C1-.64-.21%2C1.53%2C1.53%2C0%2C0%2C1-.41-.7%2C3.73%2C3.73%2C0%2C0%2C1-.15-1.15v-2.52l-.72.42a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24v-1.51a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l.72-.41v-2.45a.8.8%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v2.44l1.1-.63a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v1.51a.73.73%2C0%2C0%2C1-.08.33.44.44%2C0%2C0%2C1-.18.23l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M150%2C251.14a.8.8%2C0%2C0%2C1-.08.33.47.47%2C0%2C0%2C1-.19.22l-1.22.71c-.08%2C0-.14%2C0-.19%2C0a.33.33%2C0%2C0%2C1-.08-.24v-3.8a1.59%2C1.59%2C0%2C0%2C0-.2-.91c-.14-.18-.35-.19-.65%2C0a1.44%2C1.44%2C0%2C0%2C0-.63.76%2C3%2C3%2C0%2C0%2C0-.2%2C1.15v3.79a.8.8%2C0%2C0%2C1-.08.33.5.5%2C0%2C0%2C1-.19.23l-1.22.71a.16.16%2C0%2C0%2C1-.19%2C0%2C.36.36%2C0%2C0%2C1-.08-.24V244.3a.76.76%2C0%2C0%2C1%2C.08-.33.41.41%2C0%2C0%2C1%2C.19-.23l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v3.2a4.51%2C4.51%2C0%2C0%2C1%2C.51-.91%2C2.76%2C2.76%2C0%2C0%2C1%2C.81-.76%2C1.91%2C1.91%2C0%2C0%2C1%2C.86-.29.87.87%2C0%2C0%2C1%2C.67.24%2C1.71%2C1.71%2C0%2C0%2C1%2C.43.81A5.62%2C5.62%2C0%2C0%2C1%2C150%2C247Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M153.07%2C246.71a1.23%2C1.23%2C0%2C0%2C0%2C.09.53.43.43%2C0%2C0%2C0%2C.21.23.38.38%2C0%2C0%2C0%2C.28%2C0%2C1.88%2C1.88%2C0%2C0%2C0%2C.3-.12%2C2%2C2%2C0%2C0%2C0%2C.46-.36%2C2%2C2%2C0%2C0%2C0%2C.29-.42%2C1.37%2C1.37%2C0%2C0%2C1%2C.16-.26.46.46%2C0%2C0%2C1%2C.16-.14l1.27-.73q.21-.12.21.21a2.26%2C2.26%2C0%2C0%2C1-.14.63%2C5.76%2C5.76%2C0%2C0%2C1-.46%2C1%2C6.85%2C6.85%2C0%2C0%2C1-.79%2C1.13%2C4.5%2C4.5%2C0%2C0%2C1-1.16%2C1%2C2.26%2C2.26%2C0%2C0%2C1-1.12.37%2C1.09%2C1.09%2C0%2C0%2C1-.83-.32%2C2%2C2%2C0%2C0%2C1-.51-1%2C6.65%2C6.65%2C0%2C0%2C1-.17-1.6%2C8.85%2C8.85%2C0%2C0%2C1%2C.17-1.71%2C6.57%2C6.57%2C0%2C0%2C1%2C.51-1.57%2C5.63%2C5.63%2C0%2C0%2C1%2C.83-1.33%2C4.26%2C4.26%2C0%2C0%2C1%2C1.12-1%2C2%2C2%2C0%2C0%2C1%2C1.21-.33%2C1.23%2C1.23%2C0%2C0%2C1%2C.82.48%2C2.54%2C2.54%2C0%2C0%2C1%2C.46%2C1.05%2C6.6%2C6.6%2C0%2C0%2C1%2C.14%2C1.36v.42a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23Zm.88-3.38a1.46%2C1.46%2C0%2C0%2C0-.62.73%2C3%2C3%2C0%2C0%2C0-.26%2C1l1.76-1a1.2%2C1.2%2C0%2C0%2C0-.26-.7C154.43%2C243.18%2C154.22%2C243.17%2C154%2C243.33Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M163.15%2C243.54a.8.8%2C0%2C0%2C1-.08.33.42.42%2C0%2C0%2C1-.19.22l-1.22.71a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-3.8a1.51%2C1.51%2C0%2C0%2C0-.2-.91c-.14-.18-.35-.19-.64%2C0a1.42%2C1.42%2C0%2C0%2C0-.64.76%2C3%2C3%2C0%2C0%2C0-.2%2C1.15v3.79a.8.8%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-1.23.71a.15.15%2C0%2C0%2C1-.19%2C0%2C.35.35%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.57.57%2C0%2C0%2C1%2C.19-.23l1.18-.68a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v.35c.05-.13.12-.28.19-.43a3.21%2C3.21%2C0%2C0%2C1%2C.29-.46%2C4.88%2C4.88%2C0%2C0%2C1%2C.38-.43%2C3.38%2C3.38%2C0%2C0%2C1%2C.51-.38%2C2%2C2%2C0%2C0%2C1%2C.86-.29.87.87%2C0%2C0%2C1%2C.67.24%2C1.71%2C1.71%2C0%2C0%2C1%2C.43.81%2C5.2%2C5.2%2C0%2C0%2C1%2C.16%2C1.44Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M167%2C238.67a.92.92%2C0%2C0%2C0%2C.09.48q.1.12.33%2C0l.77-.45c.08%2C0%2C.14%2C0%2C.19%2C0a.33.33%2C0%2C0%2C1%2C.08.24v1.52a.8.8%2C0%2C0%2C1-.08.33.42.42%2C0%2C0%2C1-.19.22l-.92.54a1.94%2C1.94%2C0%2C0%2C1-.83.28.94.94%2C0%2C0%2C1-.64-.22%2C1.49%2C1.49%2C0%2C0%2C1-.41-.69%2C3.84%2C3.84%2C0%2C0%2C1-.15-1.16v-2.52l-.72.42a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24V235.9a.67.67%2C0%2C0%2C1%2C.08-.33.54.54%2C0%2C0%2C1%2C.18-.23l.72-.41v-2.45a.8.8%2C0%2C0%2C1%2C.08-.33.42.42%2C0%2C0%2C1%2C.19-.22l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v2.45l1.1-.64a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v1.52a.8.8%2C0%2C0%2C1-.08.33.46.46%2C0%2C0%2C1-.18.22l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M171.54%2C230.07a.8.8%2C0%2C0%2C1-.08.33.5.5%2C0%2C0%2C1-.19.23l-1.22.71a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-1.51a.8.8%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24Zm0%2C8.62a.8.8%2C0%2C0%2C1-.08.33.45.45%2C0%2C0%2C1-.19.23l-1.22.71c-.08%2C0-.14%2C0-.19%2C0a.33.33%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l1.22-.71a.14.14%2C0%2C0%2C1%2C.19%2C0%2C.3.3%2C0%2C0%2C1%2C.08.24Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M174.7%2C232.85c0%2C.15%2C0%2C.33%2C0%2C.53s0%2C.37%2C0%2C.52a.94.94%2C0%2C0%2C0%2C.27.71c.15.13.36.12.62%2C0a1.47%2C1.47%2C0%2C0%2C0%2C.49-.42%2C2.26%2C2.26%2C0%2C0%2C0%2C.28-.56%2C1.69%2C1.69%2C0%2C0%2C1%2C.11-.27.4.4%2C0%2C0%2C1%2C.17-.19l1.28-.74a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.29.29%2C0%2C0%2C1%2C.07.24%2C5.12%2C5.12%2C0%2C0%2C1-.13.78%2C4.92%2C4.92%2C0%2C0%2C1-.41%2C1.16%2C5.85%2C5.85%2C0%2C0%2C1-.78%2C1.25%2C4.6%2C4.6%2C0%2C0%2C1-1.27%2C1.07%2C2.39%2C2.39%2C0%2C0%2C1-1%2C.35%2C1.31%2C1.31%2C0%2C0%2C1-.83-.21%2C1.72%2C1.72%2C0%2C0%2C1-.56-.77A3.61%2C3.61%2C0%2C0%2C1%2C173%2C235c0-.14%2C0-.34%2C0-.59s0-.45%2C0-.61a6.26%2C6.26%2C0%2C0%2C1%2C.23-1.56%2C6.8%2C6.8%2C0%2C0%2C1%2C.56-1.41%2C6%2C6%2C0%2C0%2C1%2C.83-1.17%2C4.38%2C4.38%2C0%2C0%2C1%2C1-.83%2C2.15%2C2.15%2C0%2C0%2C1%2C1.27-.39%2C1.18%2C1.18%2C0%2C0%2C1%2C.78.34%2C1.45%2C1.45%2C0%2C0%2C1%2C.41.68%2C3%2C3%2C0%2C0%2C1%2C.13.63.66.66%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.28.74a.15.15%2C0%2C0%2C1-.17%2C0%2C.58.58%2C0%2C0%2C1-.11-.15.46.46%2C0%2C0%2C0-.28-.24.7.7%2C0%2C0%2C0-.49.15%2C1.48%2C1.48%2C0%2C0%2C0-.62.68A2.49%2C2.49%2C0%2C0%2C0%2C174.7%2C232.85Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M179.17%2C232.47a4%2C4%2C0%2C0%2C1%2C.5-1.92%2C6.47%2C6.47%2C0%2C0%2C1%2C1.6-1.87l1.14-1a.81.81%2C0%2C0%2C0-.13-.52c-.08-.1-.23-.1-.44%2C0a1.12%2C1.12%2C0%2C0%2C0-.34.3%2C2.1%2C2.1%2C0%2C0%2C0-.18.28%2C1.07%2C1.07%2C0%2C0%2C1-.17.24.86.86%2C0%2C0%2C1-.18.14l-1.24.71c-.07%2C0-.12%2C0-.16%2C0a.25.25%2C0%2C0%2C1%2C0-.21%2C2.75%2C2.75%2C0%2C0%2C1%2C.19-.84%2C6.14%2C6.14%2C0%2C0%2C1%2C.48-1%2C6.5%2C6.5%2C0%2C0%2C1%2C.73-.95%2C4.21%2C4.21%2C0%2C0%2C1%2C.92-.74%2C2.47%2C2.47%2C0%2C0%2C1%2C1-.37%2C1%2C1%2C0%2C0%2C1%2C.72.2%2C1.36%2C1.36%2C0%2C0%2C1%2C.43.7%2C4.13%2C4.13%2C0%2C0%2C1%2C.13%2C1.13v4.54a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24V232a4.52%2C4.52%2C0%2C0%2C1-.58%2C1%2C2.81%2C2.81%2C0%2C0%2C1-.91.79%2C1.58%2C1.58%2C0%2C0%2C1-.75.25.73.73%2C0%2C0%2C1-.54-.18%2C1.15%2C1.15%2C0%2C0%2C1-.34-.55A2.88%2C2.88%2C0%2C0%2C1%2C179.17%2C232.47Zm2.23-.94a1.54%2C1.54%2C0%2C0%2C0%2C.4-.34%2C2.76%2C2.76%2C0%2C0%2C0%2C.32-.49%2C3%2C3%2C0%2C0%2C0%2C.21-.59%2C2.47%2C2.47%2C0%2C0%2C0%2C.08-.6l-.9.72a2.43%2C2.43%2C0%2C0%2C0-.42.5%2C1.09%2C1.09%2C0%2C0%2C0-.16.56q0%2C.28.12.33A.44.44%2C0%2C0%2C0%2C181.4%2C231.53Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M188.06%2C226.51a.8.8%2C0%2C0%2C0%2C.1.48c.06.09.17.09.32%2C0l.78-.45a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v1.51a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-.93.53a1.78%2C1.78%2C0%2C0%2C1-.83.28.9.9%2C0%2C0%2C1-.64-.21%2C1.62%2C1.62%2C0%2C0%2C1-.41-.7%2C3.8%2C3.8%2C0%2C0%2C1-.14-1.15V225.1l-.73.41a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-1.51a.8.8%2C0%2C0%2C1%2C.08-.33.44.44%2C0%2C0%2C1%2C.18-.23l.73-.42v-2.44a.78.78%2C0%2C0%2C1%2C.07-.33.57.57%2C0%2C0%2C1%2C.19-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.35.35%2C0%2C0%2C1%2C.08.24v2.45l1.1-.64a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24v1.51a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M192.36%2C224a1.25%2C1.25%2C0%2C0%2C0%2C.08.53.5.5%2C0%2C0%2C0%2C.21.24.44.44%2C0%2C0%2C0%2C.28%2C0%2C1.34%2C1.34%2C0%2C0%2C0%2C.3-.12%2C1.82%2C1.82%2C0%2C0%2C0%2C.47-.36%2C1.92%2C1.92%2C0%2C0%2C0%2C.28-.42%2C2.24%2C2.24%2C0%2C0%2C1%2C.16-.26.57.57%2C0%2C0%2C1%2C.16-.14l1.27-.73c.15-.08.22%2C0%2C.22.21a2.39%2C2.39%2C0%2C0%2C1-.15.63%2C6.46%2C6.46%2C0%2C0%2C1-.45%2C1%2C6.94%2C6.94%2C0%2C0%2C1-.8%2C1.13%2C4.5%2C4.5%2C0%2C0%2C1-1.16.95%2C2.23%2C2.23%2C0%2C0%2C1-1.12.37%2C1.09%2C1.09%2C0%2C0%2C1-.83-.32%2C2.21%2C2.21%2C0%2C0%2C1-.51-1%2C6.65%2C6.65%2C0%2C0%2C1-.17-1.6%2C8.85%2C8.85%2C0%2C0%2C1%2C.17-1.71%2C7.6%2C7.6%2C0%2C0%2C1%2C.51-1.57%2C5.63%2C5.63%2C0%2C0%2C1%2C.83-1.33%2C4.43%2C4.43%2C0%2C0%2C1%2C1.12-1%2C2%2C2%2C0%2C0%2C1%2C1.22-.33%2C1.23%2C1.23%2C0%2C0%2C1%2C.81.48%2C2.42%2C2.42%2C0%2C0%2C1%2C.46%2C1%2C6%2C6%2C0%2C0%2C1%2C.14%2C1.36v.42a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23Zm.87-3.38a1.46%2C1.46%2C0%2C0%2C0-.62.73%2C3.07%2C3.07%2C0%2C0%2C0-.25%2C1l1.75-1a1.27%2C1.27%2C0%2C0%2C0-.25-.7C193.71%2C220.5%2C193.51%2C220.49%2C193.23%2C220.65Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M202.18%2C223.9a2.63%2C2.63%2C0%2C0%2C1-.1.3.46.46%2C0%2C0%2C1-.19.22l-1.27.74a.13.13%2C0%2C0%2C1-.17%2C0%2C.32.32%2C0%2C0%2C1-.07-.22s0-.07%2C0-.11l.74-3.11-2-5.9a.28.28%2C0%2C0%2C1%2C0-.1.59.59%2C0%2C0%2C1%2C.07-.29.42.42%2C0%2C0%2C1%2C.16-.2l1.28-.74c.08%2C0%2C.14%2C0%2C.18%2C0a.5.5%2C0%2C0%2C1%2C.1.19L202%2C218l1.07-4.52a1.25%2C1.25%2C0%2C0%2C1%2C.1-.29.54.54%2C0%2C0%2C1%2C.18-.23l1.29-.74a.13.13%2C0%2C0%2C1%2C.17%2C0%2C.29.29%2C0%2C0%2C1%2C.07.21.36.36%2C0%2C0%2C1%2C0%2C.11Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M211%2C211.86c0%2C.15%2C0%2C.34%2C0%2C.57s0%2C.43%2C0%2C.58a6.37%2C6.37%2C0%2C0%2C1-.21%2C1.48%2C7.08%2C7.08%2C0%2C0%2C1-.54%2C1.41%2C5.67%2C5.67%2C0%2C0%2C1-.82%2C1.22%2C4.35%2C4.35%2C0%2C0%2C1-1.08.89%2C2.17%2C2.17%2C0%2C0%2C1-1.07.35%2C1.16%2C1.16%2C0%2C0%2C1-.82-.27%2C1.74%2C1.74%2C0%2C0%2C1-.54-.79%2C3.67%2C3.67%2C0%2C0%2C1-.21-1.23c0-.14%2C0-.33%2C0-.57s0-.43%2C0-.58a5.84%2C5.84%2C0%2C0%2C1%2C.2-1.47%2C6.85%2C6.85%2C0%2C0%2C1%2C.54-1.41%2C6.17%2C6.17%2C0%2C0%2C1%2C.83-1.23%2C4.31%2C4.31%2C0%2C0%2C1%2C1.07-.9%2C2.34%2C2.34%2C0%2C0%2C1%2C1.08-.35%2C1.32%2C1.32%2C0%2C0%2C1%2C.83.28%2C1.65%2C1.65%2C0%2C0%2C1%2C.53.79A3.76%2C3.76%2C0%2C0%2C1%2C211%2C211.86ZM207.43%2C215a.94.94%2C0%2C0%2C0%2C.27.73c.15.13.36.11.62%2C0A1.55%2C1.55%2C0%2C0%2C0%2C209%2C215a2.55%2C2.55%2C0%2C0%2C0%2C.27-1.05c0-.15%2C0-.33%2C0-.52s0-.36%2C0-.5a1%2C1%2C0%2C0%2C0-.27-.74.55.55%2C0%2C0%2C0-.63%2C0%2C1.61%2C1.61%2C0%2C0%2C0-.62.69%2C2.55%2C2.55%2C0%2C0%2C0-.27%2C1.05c0%2C.16%2C0%2C.33%2C0%2C.52S207.42%2C214.84%2C207.43%2C215Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M212.33%2C208.15a.67.67%2C0%2C0%2C1%2C.08-.33.46.46%2C0%2C0%2C1%2C.18-.22l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v3.8a1.66%2C1.66%2C0%2C0%2C0%2C.19.92c.12.19.33.2.61%2C0a1.36%2C1.36%2C0%2C0%2C0%2C.61-.74%2C3.33%2C3.33%2C0%2C0%2C0%2C.18-1.14v-3.8a.8.8%2C0%2C0%2C1%2C.08-.33.46.46%2C0%2C0%2C1%2C.18-.22l1.23-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24v7a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.13.65a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24v-.35a4%2C4%2C0%2C0%2C1-.19.43%2C3.68%2C3.68%2C0%2C0%2C1-.28.45%2C3.78%2C3.78%2C0%2C0%2C1-.38.43%2C2.8%2C2.8%2C0%2C0%2C1-.53.39c-.63.36-1.13.37-1.5%2C0a3.13%2C3.13%2C0%2C0%2C1-.56-2.27Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M222.58%2C201.83a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v1.52a.67.67%2C0%2C0%2C1-.08.33.54.54%2C0%2C0%2C1-.18.23l-.89.51a2%2C2%2C0%2C0%2C0-.89%2C1.89v3.69a.8.8%2C0%2C0%2C1-.08.33.5.5%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.14-.65a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v.35a4.78%2C4.78%2C0%2C0%2C1%2C.54-.86%2C2.71%2C2.71%2C0%2C0%2C1%2C.75-.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M226%2C205.42a4%2C4%2C0%2C0%2C1%2C.49-1.92%2C6.63%2C6.63%2C0%2C0%2C1%2C1.6-1.87l1.14-1a.81.81%2C0%2C0%2C0-.13-.52c-.08-.1-.23-.1-.43%2C0a1.17%2C1.17%2C0%2C0%2C0-.35.3%2C2.1%2C2.1%2C0%2C0%2C0-.18.28.83.83%2C0%2C0%2C1-.17.24.86.86%2C0%2C0%2C1-.18.14l-1.24.71a.14.14%2C0%2C0%2C1-.16%2C0%2C.25.25%2C0%2C0%2C1%2C0-.21%2C3.09%2C3.09%2C0%2C0%2C1%2C.19-.84%2C5.13%2C5.13%2C0%2C0%2C1%2C.49-1%2C5.35%2C5.35%2C0%2C0%2C1%2C.73-1%2C3.79%2C3.79%2C0%2C0%2C1%2C.92-.74%2C2.44%2C2.44%2C0%2C0%2C1%2C1-.37%2C1%2C1%2C0%2C0%2C1%2C.72.2%2C1.29%2C1.29%2C0%2C0%2C1%2C.43.7%2C4.1%2C4.1%2C0%2C0%2C1%2C.14%2C1.13v4.54a.8.8%2C0%2C0%2C1-.08.33.57.57%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24V205a4.18%2C4.18%2C0%2C0%2C1-.58%2C1%2C2.94%2C2.94%2C0%2C0%2C1-.91.79%2C1.58%2C1.58%2C0%2C0%2C1-.74.25.75.75%2C0%2C0%2C1-.55-.18%2C1.15%2C1.15%2C0%2C0%2C1-.34-.55A3.25%2C3.25%2C0%2C0%2C1%2C226%2C205.42Zm2.22-.94a1.54%2C1.54%2C0%2C0%2C0%2C.4-.34%2C2.76%2C2.76%2C0%2C0%2C0%2C.32-.49%2C3%2C3%2C0%2C0%2C0%2C.21-.59%2C2.06%2C2.06%2C0%2C0%2C0%2C.08-.6l-.9.72a2.43%2C2.43%2C0%2C0%2C0-.42.5%2C1.09%2C1.09%2C0%2C0%2C0-.16.56q0%2C.28.12.33A.44.44%2C0%2C0%2C0%2C228.25%2C204.48Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M234.13%2C198.53c0%2C.16%2C0%2C.34%2C0%2C.54s0%2C.37%2C0%2C.51a1%2C1%2C0%2C0%2C0%2C.27.72c.15.13.36.12.62%2C0a1.47%2C1.47%2C0%2C0%2C0%2C.49-.42%2C2.26%2C2.26%2C0%2C0%2C0%2C.28-.56%2C2.33%2C2.33%2C0%2C0%2C1%2C.11-.28.42.42%2C0%2C0%2C1%2C.17-.18l1.28-.74a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.29.29%2C0%2C0%2C1%2C.07.24%2C6.05%2C6.05%2C0%2C0%2C1-.53%2C1.94%2C6.64%2C6.64%2C0%2C0%2C1-.79%2C1.25A4.78%2C4.78%2C0%2C0%2C1%2C235%2C202.6a2.48%2C2.48%2C0%2C0%2C1-1%2C.35%2C1.26%2C1.26%2C0%2C0%2C1-.83-.22%2C1.63%2C1.63%2C0%2C0%2C1-.56-.76%2C3.65%2C3.65%2C0%2C0%2C1-.23-1.3c0-.14%2C0-.34%2C0-.59s0-.45%2C0-.61a6.19%2C6.19%2C0%2C0%2C1%2C.23-1.56%2C7.12%2C7.12%2C0%2C0%2C1%2C.56-1.42%2C6.22%2C6.22%2C0%2C0%2C1%2C.83-1.16%2C4.33%2C4.33%2C0%2C0%2C1%2C1-.83%2C2.24%2C2.24%2C0%2C0%2C1%2C1.27-.4%2C1.34%2C1.34%2C0%2C0%2C1%2C.79.34%2C1.55%2C1.55%2C0%2C0%2C1%2C.4.69%2C2.93%2C2.93%2C0%2C0%2C1%2C.13.63.66.66%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.28.73c-.07%2C0-.13%2C0-.17%2C0a.4.4%2C0%2C0%2C1-.11-.14.46.46%2C0%2C0%2C0-.28-.24.73.73%2C0%2C0%2C0-.49.14%2C1.55%2C1.55%2C0%2C0%2C0-.62.69A2.49%2C2.49%2C0%2C0%2C0%2C234.13%2C198.53Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M240.47%2C194.87c0%2C.15%2C0%2C.33%2C0%2C.53s0%2C.37%2C0%2C.52a1%2C1%2C0%2C0%2C0%2C.27.72c.15.12.36.11.62%2C0a1.37%2C1.37%2C0%2C0%2C0%2C.49-.42%2C2%2C2%2C0%2C0%2C0%2C.28-.56%2C1.69%2C1.69%2C0%2C0%2C1%2C.11-.27.46.46%2C0%2C0%2C1%2C.17-.19l1.28-.74a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.29.29%2C0%2C0%2C1%2C.07.24%2C4.81%2C4.81%2C0%2C0%2C1-.12.78%2C6%2C6%2C0%2C0%2C1-.41%2C1.16%2C6.34%2C6.34%2C0%2C0%2C1-.79%2C1.25%2C4.46%2C4.46%2C0%2C0%2C1-1.27%2C1.07%2C2.35%2C2.35%2C0%2C0%2C1-1%2C.35%2C1.31%2C1.31%2C0%2C0%2C1-.83-.21%2C1.74%2C1.74%2C0%2C0%2C1-.56-.76%2C3.71%2C3.71%2C0%2C0%2C1-.23-1.31c0-.14%2C0-.34%2C0-.59s0-.45%2C0-.61a6.26%2C6.26%2C0%2C0%2C1%2C.23-1.56%2C6.8%2C6.8%2C0%2C0%2C1%2C.56-1.41%2C6%2C6%2C0%2C0%2C1%2C.83-1.17%2C4.59%2C4.59%2C0%2C0%2C1%2C1-.83%2C2.16%2C2.16%2C0%2C0%2C1%2C1.27-.39%2C1.22%2C1.22%2C0%2C0%2C1%2C.79.34%2C1.64%2C1.64%2C0%2C0%2C1%2C.41.68%2C2.9%2C2.9%2C0%2C0%2C1%2C.12.63.66.66%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.28.74a.15.15%2C0%2C0%2C1-.17%2C0%2C.58.58%2C0%2C0%2C1-.11-.15.44.44%2C0%2C0%2C0-.28-.24.75.75%2C0%2C0%2C0-.49.14%2C1.67%2C1.67%2C0%2C0%2C0-.62.69A2.49%2C2.49%2C0%2C0%2C0%2C240.47%2C194.87Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M250.36%2C189.11c0%2C.15%2C0%2C.34%2C0%2C.57s0%2C.43%2C0%2C.59a6.28%2C6.28%2C0%2C0%2C1-.21%2C1.47%2C6.64%2C6.64%2C0%2C0%2C1-.54%2C1.41%2C5.43%2C5.43%2C0%2C0%2C1-.82%2C1.22%2C4.14%2C4.14%2C0%2C0%2C1-1.08.89%2C2.17%2C2.17%2C0%2C0%2C1-1.07.35%2C1.23%2C1.23%2C0%2C0%2C1-.83-.26%2C1.9%2C1.9%2C0%2C0%2C1-.53-.8%2C3.91%2C3.91%2C0%2C0%2C1-.22-1.22c0-.15%2C0-.34%2C0-.57s0-.43%2C0-.59a6.36%2C6.36%2C0%2C0%2C1%2C.21-1.47%2C7.08%2C7.08%2C0%2C0%2C1%2C.54-1.41%2C5.77%2C5.77%2C0%2C0%2C1%2C.83-1.23%2C4.31%2C4.31%2C0%2C0%2C1%2C1.07-.9%2C2.2%2C2.2%2C0%2C0%2C1%2C1.08-.34%2C1.31%2C1.31%2C0%2C0%2C1%2C.83.27%2C1.7%2C1.7%2C0%2C0%2C1%2C.53.79A3.76%2C3.76%2C0%2C0%2C1%2C250.36%2C189.11Zm-3.54%2C3.13a1%2C1%2C0%2C0%2C0%2C.27.74c.15.12.36.11.62%2C0a1.63%2C1.63%2C0%2C0%2C0%2C.63-.69%2C2.5%2C2.5%2C0%2C0%2C0%2C.27-1c0-.16%2C0-.34%2C0-.53s0-.35%2C0-.5a1%2C1%2C0%2C0%2C0-.27-.73c-.16-.13-.37-.11-.63%2C0a1.58%2C1.58%2C0%2C0%2C0-.62.68%2C2.55%2C2.55%2C0%2C0%2C0-.27%2C1.05%2C4.27%2C4.27%2C0%2C0%2C0%2C0%2C.52A3.78%2C3.78%2C0%2C0%2C0%2C246.82%2C192.24Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M251.72%2C185.41a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v3.8a1.7%2C1.7%2C0%2C0%2C0%2C.19.93c.12.19.32.2.61%2C0a1.33%2C1.33%2C0%2C0%2C0%2C.61-.74%2C3.33%2C3.33%2C0%2C0%2C0%2C.18-1.14v-3.79a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v7a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-1.13.65a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.07-.24v-.34l-.19.43a3.59%2C3.59%2C0%2C0%2C1-.28.44%2C3.1%2C3.1%2C0%2C0%2C1-.39.43%2C2.71%2C2.71%2C0%2C0%2C1-.52.39c-.63.36-1.13.38-1.5%2C0a3.13%2C3.13%2C0%2C0%2C1-.56-2.27Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M263.62%2C185.52a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24v-3.79a1.63%2C1.63%2C0%2C0%2C0-.2-.92c-.14-.18-.36-.18-.65%2C0a1.55%2C1.55%2C0%2C0%2C0-.64.76%2C3.19%2C3.19%2C0%2C0%2C0-.2%2C1.15v3.8a.78.78%2C0%2C0%2C1-.07.33.53.53%2C0%2C0%2C1-.19.22l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.18-.68a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24v.34c.06-.13.12-.27.2-.43a3.68%2C3.68%2C0%2C0%2C1%2C.28-.45%2C3.16%2C3.16%2C0%2C0%2C1%2C.39-.44%2C2.58%2C2.58%2C0%2C0%2C1%2C.51-.37%2C2.07%2C2.07%2C0%2C0%2C1%2C.86-.3.87.87%2C0%2C0%2C1%2C.66.24%2C1.81%2C1.81%2C0%2C0%2C1%2C.44.82%2C5.67%2C5.67%2C0%2C0%2C1%2C.15%2C1.44Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M267.48%2C180.65a.8.8%2C0%2C0%2C0%2C.1.48c.06.09.17.09.32%2C0l.78-.45a.14.14%2C0%2C0%2C1%2C.18%2C0c.06%2C0%2C.08.12.08.24v1.51a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-.93.53a1.78%2C1.78%2C0%2C0%2C1-.83.28.87.87%2C0%2C0%2C1-.64-.22%2C1.53%2C1.53%2C0%2C0%2C1-.41-.69%2C4.15%2C4.15%2C0%2C0%2C1-.14-1.15v-2.52l-.72.41a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-1.51a.73.73%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l.72-.42v-2.44a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v2.45l1.1-.64a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24V177a.78.78%2C0%2C0%2C1-.07.33.5.5%2C0%2C0%2C1-.19.23l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Code--inject-87%22%3E%3Cg%20id%3D%22freepik--Numbers--inject-87%22%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M165.5%2C265.65a3.72%2C3.72%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.71%2C3.71%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.75%2C3.75%2C0%2C0%2C0-1.68%2C2.92v39.13a3.75%2C3.75%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.71%2C3.71%2C0%2C0%2C0%2C3.37%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.92Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M136.39%2C316.14a3.75%2C3.75%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.13c-.79.3-1.39-.14-1.39-1.1V279.74a3.49%2C3.49%2C0%2C0%2C1%2C.49-1.66l-4.73-2.73a3.36%2C3.36%2C0%2C0%2C0-.5%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M165.45%2C265.17c-.2-.72-.85-.94-1.63-.5l-21%2C12.16a3.34%2C3.34%2C0%2C0%2C0-1.19%2C1.25l-4.73-2.73a3.45%2C3.45%2C0%2C0%2C1%2C1.19-1.26l21-12.15a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.37.79A3.77%2C3.77%2C0%2C0%2C1%2C165.45%2C265.17Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M158.21%2C276.18a.38.38%2C0%2C0%2C1%2C.49%2C0%2C.86.86%2C0%2C0%2C1%2C.2.63v2.59a4%2C4%2C0%2C0%2C1-.1.86c-.07.31-.17.73-.31%2C1.25l-5.9%2C24.38a5.37%2C5.37%2C0%2C0%2C1-.27.8%2C1.17%2C1.17%2C0%2C0%2C1-.47.57l-2.12%2C1.22a.35.35%2C0%2C0%2C1-.48%2C0%2C.8.8%2C0%2C0%2C1-.2-.62%2C2.75%2C2.75%2C0%2C0%2C1%2C.07-.52l5.93-24.43-8%2C4.61a.36.36%2C0%2C0%2C1-.48%2C0%2C.83.83%2C0%2C0%2C1-.21-.63v-2.78a1.94%2C1.94%2C0%2C0%2C1%2C.21-.86%2C1.18%2C1.18%2C0%2C0%2C1%2C.48-.59Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M199.66%2C245.92A3.74%2C3.74%2C0%2C0%2C0%2C198%2C243l-1.37-.79a3.71%2C3.71%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.72%2C3.72%2C0%2C0%2C0-1.68%2C2.91v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.77%2C3.77%2C0%2C0%2C0%2C3.37%2C0L198%2C288a3.75%2C3.75%2C0%2C0%2C0%2C1.68-2.92Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M170.55%2C296.42a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.13c-.79.3-1.4-.14-1.4-1.1V260a3.4%2C3.4%2C0%2C0%2C1%2C.5-1.66L171%2C255.63a3.45%2C3.45%2C0%2C0%2C0-.49%2C1.65Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M199.6%2C245.45c-.19-.72-.85-.95-1.62-.5l-21%2C12.16a3.26%2C3.26%2C0%2C0%2C0-1.19%2C1.25l-4.73-2.73a3.42%2C3.42%2C0%2C0%2C1%2C1.18-1.26l21-12.15a3.75%2C3.75%2C0%2C0%2C1%2C3.36%2C0L198%2C243A3.72%2C3.72%2C0%2C0%2C1%2C199.6%2C245.45Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M181.52%2C263.78a2%2C2%2C0%2C0%2C1%2C.21-.87%2C1.27%2C1.27%2C0%2C0%2C1%2C.48-.59l9.57-5.52a.38.38%2C0%2C0%2C1%2C.49%2C0%2C.86.86%2C0%2C0%2C1%2C.2.63v2.78a2%2C2%2C0%2C0%2C1-.2.86%2C1.33%2C1.33%2C0%2C0%2C1-.49.6l-7.15%2C4.12-.28%2C5.18a7%2C7%2C0%2C0%2C1%2C1.36-1.29q.67-.46%2C1.11-.72a6.64%2C6.64%2C0%2C0%2C1%2C2.65-.94%2C3%2C3%2C0%2C0%2C1%2C2.11.52%2C4.24%2C4.24%2C0%2C0%2C1%2C1.4%2C2%2C10.57%2C10.57%2C0%2C0%2C1%2C.51%2C3.58%2C19.32%2C19.32%2C0%2C0%2C1-.52%2C4.6%2C16.41%2C16.41%2C0%2C0%2C1-1.43%2C3.76%2C12.28%2C12.28%2C0%2C0%2C1-2.13%2C2.91%2C11.93%2C11.93%2C0%2C0%2C1-2.59%2C2%2C7.54%2C7.54%2C0%2C0%2C1-3%2C1.12%2C3.09%2C3.09%2C0%2C0%2C1-2.09-.5%2C3.65%2C3.65%2C0%2C0%2C1-1.24-1.75%2C8.46%2C8.46%2C0%2C0%2C1-.47-2.65%2C1.6%2C1.6%2C0%2C0%2C1%2C.19-.88%2C1.38%2C1.38%2C0%2C0%2C1%2C.49-.58l2.06-1.19a.43.43%2C0%2C0%2C1%2C.46%2C0%2C.77.77%2C0%2C0%2C1%2C.28.53%2C2.49%2C2.49%2C0%2C0%2C0%2C.49%2C1.19%2C1.36%2C1.36%2C0%2C0%2C0%2C.76.46%2C1.88%2C1.88%2C0%2C0%2C0%2C1-.11%2C7%2C7%2C0%2C0%2C0%2C1.12-.53%2C6%2C6%2C0%2C0%2C0%2C2.34-2.57%2C8.29%2C8.29%2C0%2C0%2C0%2C.89-3.84%2C2.86%2C2.86%2C0%2C0%2C0-.89-2.43%2C2.08%2C2.08%2C0%2C0%2C0-2.34.14%2C5.75%2C5.75%2C0%2C0%2C0-1.94%2C1.7c-.18.27-.35.5-.51.71a1.69%2C1.69%2C0%2C0%2C1-.58.51l-2.34%2C1.36a.38.38%2C0%2C0%2C1-.49%2C0%2C.85.85%2C0%2C0%2C1-.2-.62Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M131.29%2C285.37a3.73%2C3.73%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.77%2C3.77%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.73%2C3.73%2C0%2C0%2C0-1.68%2C2.92v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.71%2C3.71%2C0%2C0%2C0%2C3.37%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M102.18%2C335.87a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.14c-.79.3-1.39-.15-1.39-1.11V299.46a3.41%2C3.41%2C0%2C0%2C1%2C.49-1.66l-4.74-2.73a3.49%2C3.49%2C0%2C0%2C0-.49%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M131.23%2C284.89c-.19-.71-.84-.94-1.62-.49l-21%2C12.15a3.29%2C3.29%2C0%2C0%2C0-1.19%2C1.26l-4.73-2.74a3.4%2C3.4%2C0%2C0%2C1%2C1.18-1.25l21-12.16a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.37.8A3.67%2C3.67%2C0%2C0%2C1%2C131.23%2C284.89Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M124%2C295.9a.36.36%2C0%2C0%2C1%2C.48%2C0%2C.86.86%2C0%2C0%2C1%2C.21.63v2.59a4.64%2C4.64%2C0%2C0%2C1-.1.86c-.07.31-.17.73-.31%2C1.26l-5.91%2C24.38a4.67%2C4.67%2C0%2C0%2C1-.26.8%2C1.15%2C1.15%2C0%2C0%2C1-.47.56l-2.12%2C1.22a.36.36%2C0%2C0%2C1-.48%2C0%2C.83.83%2C0%2C0%2C1-.21-.63%2C3.07%2C3.07%2C0%2C0%2C1%2C.08-.51l5.93-24.44-8%2C4.62a.35.35%2C0%2C0%2C1-.48%2C0%2C.8.8%2C0%2C0%2C1-.21-.62v-2.79a2%2C2%2C0%2C0%2C1%2C.21-.86%2C1.22%2C1.22%2C0%2C0%2C1%2C.48-.59Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M256.58%2C213.06a3.72%2C3.72%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.75%2C3.75%2C0%2C0%2C0-3.36%2C0l-21%2C12.15a3.72%2C3.72%2C0%2C0%2C0-1.68%2C2.92v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.69%2C3.69%2C0%2C0%2C0%2C3.36%2C0l21-12.15a3.73%2C3.73%2C0%2C0%2C0%2C1.69-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M227.48%2C263.56a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.14c-.8.3-1.4-.15-1.4-1.11V227.15a3.52%2C3.52%2C0%2C0%2C1%2C.49-1.66L228%2C222.76a3.38%2C3.38%2C0%2C0%2C0-.49%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M256.53%2C212.58c-.2-.71-.85-.94-1.62-.49l-21%2C12.15a3.39%2C3.39%2C0%2C0%2C0-1.18%2C1.25L228%2C222.76a3.42%2C3.42%2C0%2C0%2C1%2C1.19-1.25l21-12.16a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.38.8A3.67%2C3.67%2C0%2C0%2C1%2C256.53%2C212.58Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M245.3%2C238a8.57%2C8.57%2C0%2C0%2C0%2C1-2.49%2C10.56%2C10.56%2C0%2C0%2C0%2C.22-1.93%2C3.61%2C3.61%2C0%2C0%2C0-.64-2.35c-.42-.5-1.13-.47-2.11.1a4.83%2C4.83%2C0%2C0%2C0-2.05%2C2.24%2C12%2C12%2C0%2C0%2C0-.93%2C3.24%2C2.42%2C2.42%2C0%2C0%2C1-.31.95%2C1.42%2C1.42%2C0%2C0%2C1-.46.52l-2%2C1.16a.42.42%2C0%2C0%2C1-.49%2C0c-.15-.11-.21-.33-.19-.66a16.56%2C16.56%2C0%2C0%2C1%2C.58-3.67%2C18.21%2C18.21%2C0%2C0%2C1%2C1.36-3.52%2C15.67%2C15.67%2C0%2C0%2C1%2C2-3%2C9.61%2C9.61%2C0%2C0%2C1%2C2.47-2.11%2C4.73%2C4.73%2C0%2C0%2C1%2C2.78-.8%2C3%2C3%2C0%2C0%2C1%2C1.93%2C1%2C5.15%2C5.15%2C0%2C0%2C1%2C1.13%2C2.17%2C10.52%2C10.52%2C0%2C0%2C1%2C.37%2C2.86c0%2C.65%2C0%2C1.29-.07%2C1.91a11%2C11%2C0%2C0%2C1-.36%2C2%2C20.31%2C20.31%2C0%2C0%2C1-.81%2C2.31%2C31.73%2C31.73%2C0%2C0%2C1-1.43%2C2.88L242.55%2C250l7.08-4.08a.36.36%2C0%2C0%2C1%2C.48%2C0%2C.83.83%2C0%2C0%2C1%2C.21.63v2.78a1.91%2C1.91%2C0%2C0%2C1-.21.86%2C1.38%2C1.38%2C0%2C0%2C1-.48.6l-11.89%2C6.86a.38.38%2C0%2C0%2C1-.49%2C0%2C.86.86%2C0%2C0%2C1-.2-.63v-2.39a3.52%2C3.52%2C0%2C0%2C1%2C.26-1.31%2C6.1%2C6.1%2C0%2C0%2C1%2C.43-.93Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M290.74%2C193.34a3.72%2C3.72%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.77%2C3.77%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.73%2C3.73%2C0%2C0%2C0-1.69%2C2.92v39.14a3.73%2C3.73%2C0%2C0%2C0%2C1.69%2C2.91l1.37.79a3.69%2C3.69%2C0%2C0%2C0%2C3.36%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M261.63%2C243.84a3.73%2C3.73%2C0%2C0%2C0%2C1.69%2C2.91l1.37.79a3.73%2C3.73%2C0%2C0%2C0%2C3.07.14c-.79.3-1.39-.15-1.39-1.11V207.43a3.49%2C3.49%2C0%2C0%2C1%2C.49-1.66L262.13%2C203a3.4%2C3.4%2C0%2C0%2C0-.5%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M290.69%2C192.86c-.2-.71-.85-.94-1.63-.5l-21%2C12.16a3.42%2C3.42%2C0%2C0%2C0-1.19%2C1.25L262.13%2C203a3.34%2C3.34%2C0%2C0%2C1%2C1.19-1.25l21-12.16a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.37.8A3.72%2C3.72%2C0%2C0%2C1%2C290.69%2C192.86Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M284.7%2C213.38c0%2C.49%2C0%2C1%2C0%2C1.63v3.69c0%2C.6%2C0%2C1.15%2C0%2C1.66a32.22%2C32.22%2C0%2C0%2C1-.45%2C4.47%2C17.87%2C17.87%2C0%2C0%2C1-1.17%2C4%2C13.73%2C13.73%2C0%2C0%2C1-2.08%2C3.43%2C11.53%2C11.53%2C0%2C0%2C1-3.15%2C2.62%2C5.93%2C5.93%2C0%2C0%2C1-3.15%2C1%2C2.79%2C2.79%2C0%2C0%2C1-2.08-1%2C6.37%2C6.37%2C0%2C0%2C1-1.17-2.7%2C22.3%2C22.3%2C0%2C0%2C1-.45-4c0-1-.05-2.09-.05-3.36s0-2.4.05-3.42a33.28%2C33.28%2C0%2C0%2C1%2C.45-4.51%2C18.91%2C18.91%2C0%2C0%2C1%2C1.17-4.1%2C14.4%2C14.4%2C0%2C0%2C1%2C2.08-3.49%2C11.25%2C11.25%2C0%2C0%2C1%2C3.15-2.67%2C6.1%2C6.1%2C0%2C0%2C1%2C3.15-1%2C2.74%2C2.74%2C0%2C0%2C1%2C2.08%2C1%2C6.09%2C6.09%2C0%2C0%2C1%2C1.17%2C2.69A22.41%2C22.41%2C0%2C0%2C1%2C284.7%2C213.38Zm-10.26%2C12.7a8%2C8%2C0%2C0%2C0%2C.88%2C3.87c.5.74%2C1.34.77%2C2.53.08a5.72%2C5.72%2C0%2C0%2C0%2C2.54-3%2C15.67%2C15.67%2C0%2C0%2C0%2C.87-4.87c0-1%2C.05-2.12.05-3.33s0-2.29-.05-3.26a7.89%2C7.89%2C0%2C0%2C0-.87-3.86c-.51-.74-1.35-.77-2.54-.09a5.7%2C5.7%2C0%2C0%2C0-2.53%2C3%2C16%2C16%2C0%2C0%2C0-.88%2C4.88c0%2C1-.05%2C2.12-.05%2C3.32S274.41%2C225.11%2C274.44%2C226.08Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M324.9%2C173.62a3.75%2C3.75%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.77%2C3.77%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.72%2C3.72%2C0%2C0%2C0-1.68%2C2.92v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.71%2C3.71%2C0%2C0%2C0%2C3.37%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M295.79%2C224.12a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.14c-.79.3-1.4-.15-1.4-1.11V187.71a3.4%2C3.4%2C0%2C0%2C1%2C.5-1.66l-4.74-2.73a3.49%2C3.49%2C0%2C0%2C0-.49%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M324.84%2C173.14c-.19-.71-.84-.94-1.62-.5l-21%2C12.16a3.34%2C3.34%2C0%2C0%2C0-1.19%2C1.25l-4.73-2.73a3.32%2C3.32%2C0%2C0%2C1%2C1.18-1.25l21-12.16a3.75%2C3.75%2C0%2C0%2C1%2C3.36%2C0l1.38.8A3.67%2C3.67%2C0%2C0%2C1%2C324.84%2C173.14Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M206.5%2C256.14l10-5.79a2.35%2C2.35%2C0%2C0%2C1%2C2.16%2C0l1.9%2C1.1a2.37%2C2.37%2C0%2C0%2C1%2C1.08%2C1.87v2.19a2.4%2C2.4%2C0%2C0%2C1-1.08%2C1.88l-10%2C5.78a2.37%2C2.37%2C0%2C0%2C1-2.17%2C0l-1.89-1.09a2.41%2C2.41%2C0%2C0%2C1-1.09-1.88V258A2.38%2C2.38%2C0%2C0%2C1%2C206.5%2C256.14Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M210.23%2C263.3a2.31%2C2.31%2C0%2C0%2C1-1.83-.13l-1.9-1.09a2.4%2C2.4%2C0%2C0%2C1-1.08-1.88V258a2.27%2C2.27%2C0%2C0%2C1%2C.31-1.07l4.06%2C2.35a2.26%2C2.26%2C0%2C0%2C0-.31%2C1.06v2.2C209.48%2C263.11%2C209.79%2C263.39%2C210.23%2C263.3Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M209.48%2C262.55v-2.19a2.4%2C2.4%2C0%2C0%2C1%2C1.08-1.88l10-5.79c.6-.34%2C1.08-.06%2C1.08.63v2.19a2.4%2C2.4%2C0%2C0%2C1-1.08%2C1.88l-10%2C5.78C210%2C263.52%2C209.48%2C263.24%2C209.48%2C262.55Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Character--inject-87%22%3E%3Cg%20id%3D%22freepik--character--inject-87%22%3E%3Cpath%20id%3D%22freepik--shadow--inject-87%22%20d%3D%22M435.9%2C298.69a12.82%2C12.82%2C0%2C0%2C0-5.32-6.82L400%2C274.21a31.09%2C31.09%2C0%2C0%2C0-5.7-.37c-6.73.21-13.15%2C2.82-19.18%2C5.81-13.69%2C6.81-27.68%2C11.65-40.29%2C20.42-1.6%2C1.12-6%2C3.79-3.48%2C6.53a8.12%2C8.12%2C0%2C0%2C0%2C5.43%2C2.06c4-.31%2C11.9-6.68%2C10.65-4.8a6.84%2C6.84%2C0%2C0%2C0-1.07%2C3.62%2C2.63%2C2.63%2C0%2C0%2C0%2C1.51%2C2.39c1.1.37%2C1.58-1.88%2C2.06-3.15a11.8%2C11.8%2C0%2C0%2C1%2C4.57-5.69%2C15.74%2C15.74%2C0%2C0%2C1%2C10.94-1.91%2C47.11%2C47.11%2C0%2C0%2C1%2C10.78%2C3.48c5.74%2C2.38%2C9.6%2C3.7%2C15.05%2C6.67%2C2.52%2C1.37%2C9.59%2C5.78%2C10%2C6.26.61.73.48%2C5.89.55%2C6.83l.36%2C5.27%2C28.42-16.41a12.62%2C12.62%2C0%2C0%2C0%2C4.85-5.62c0-.23.08-.47.11-.7A31.5%2C31.5%2C0%2C0%2C0%2C435.9%2C298.69Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M414.33%2C332.12c-.8.67-1.72%2C1.46-1.73%2C2.41a9.62%2C9.62%2C0%2C0%2C0%2C2%2C5.65c1.75%2C2.37%2C2.6%2C6.6%2C2.66%2C9.42s-.46%2C9.93%2C2.76%2C13.1%2C11.6%2C5.51%2C12.17.35-7.45-26.16-7.45-26.16Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M418.7%2C336a77.21%2C77.21%2C0%2C0%2C1%2C2.23%2C11.48c.42%2C4.24%2C1.32%2C7.3%2C3.31%2C8.65s5.17%2C1.49%2C4.3-1.46-3.83-17.74-3.83-17.74Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M399.14%2C262.38s15.95%2C9.54%2C23.64%2C14.82%2C15%2C10.43%2C16.22%2C14.14c1.3%2C3.93-.11%2C12.78-1.95%2C21.24s-5.39%2C23.64-5.39%2C23.64l-20-38.48-22.29-18.52Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M409%2C294.89l-19.94-13.61%2C10.09-18.9s14.78%2C8.5%2C25.69%2C15.8c8.84%2C5.91%2C15.16%2C10.51%2C15.21%2C14.37s-1.42%2C17.12-3.63%2C22.62c0%2C0-8.72%2C2.86-16.36-.53Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M409%2C294.89l-19.94-13.61%2C10.09-18.9s14.78%2C8.5%2C25.69%2C15.8c8.84%2C5.91%2C15.16%2C10.51%2C15.21%2C14.37s-1.42%2C17.12-3.63%2C22.62c0%2C0-8.72%2C2.86-16.36-.53Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.6000000000000001%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M426.47%2C302.8c-1.76-5.75-6.94-9.27-11.44-12.78-3.57-2.8-12.17-9.08-15.68-11.67a9.31%2C9.31%2C0%2C0%2C0%2C.61-5.58c-1.88%2C4.93-3.16%2C6.08-3.16%2C6.08l22.39%2C20.89%2C13.54%2C32.05S428.23%2C308.54%2C426.47%2C302.8Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M430.75%2C363.28c-.74.38-.83%2C2.11-.9%2C3.37s-1.16%2C2.8.45%2C4.94%2C4.66%2C2.64%2C6.85%2C5.55%2C5.47%2C8.21%2C12.26%2C9.31%2C11.81-1.37%2C13-3.43-.06-3.91-4.48-6.15c-4.69-2.39-6-3.1-6-3.1Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M437.31%2C349.11s3.69%2C8.83%2C5.86%2C12.86a47.51%2C47.51%2C0%2C0%2C0%2C9.12%2C11.26c.79.76%2C2.56%2C2.14%2C3.21%2C2.75a1.29%2C1.29%2C0%2C0%2C1%2C.05%2C2c-1.32%2C1.53-7.47%2C2.45-11.18.18s-7.57-6.88-9.84-8.77l-3-2.53a2.81%2C2.81%2C0%2C0%2C1-.95-2.6c0-.27.1-.6.15-1%2C.29-2-3.12-10-3.12-10Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M361.41%2C267c-.92%2C5.48-2.66%2C11.07.62%2C17.79%2C3.17%2C6.5%2C12.24%2C11.81%2C22.17%2C16.41%2C8.22%2C3.81%2C20.32%2C9.28%2C22.75%2C10.09s2.8%2C2.2%2C2.89%2C6.67%2C2.32%2C11.6%2C8.12%2C20.23a214.64%2C214.64%2C0%2C0%2C1%2C11.52%2C19.84s7%2C.77%2C10.14-3.58c0%2C0-14.36-47.87-16.89-53.49s-26.14-22.32-26.14-22.32a31.13%2C31.13%2C0%2C0%2C0%2C2.55-16.28Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M399.87%2C309.15s-18-7.58-28.74-14.28c-14.79-9.18-12-18-10.5-27.49l38.51-5c2.27%2C10.32-2.14%2C16.37-2.14%2C16.37l13.75%2C10.38c7.16%2C5.51%2C12%2C8.6%2C13.45%2C13.15s6.11%2C21.7%2C6.11%2C21.7a27.68%2C27.68%2C0%2C0%2C1-17%2C6.09s-3.35-5.43-3.89-9.38.33-7.07-1.29-7.93S404.37%2C311.11%2C399.87%2C309.15Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M399.87%2C309.15s-18-7.58-28.74-14.28c-14.79-9.18-12-18-10.5-27.49l38.51-5c2.27%2C10.32-2.14%2C16.37-2.14%2C16.37l13.75%2C10.38c7.16%2C5.51%2C12%2C8.6%2C13.45%2C13.15s6.11%2C21.7%2C6.11%2C21.7a27.68%2C27.68%2C0%2C0%2C1-17%2C6.09s-3.35-5.43-3.89-9.38.33-7.07-1.29-7.93S404.37%2C311.11%2C399.87%2C309.15Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.6000000000000001%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M385.49%2C212.51a43.09%2C43.09%2C0%2C0%2C1%2C8.49%2C0%2C15.37%2C15.37%2C0%2C0%2C1%2C5.81%2C2.36C404.5%2C218%2C415.5%2C227%2C422.34%2C232.15c0%2C0%2C5.76-2.89%2C9.66-5.27%2C3.49-2.13%2C5.33%2C12-1%2C15.94-6.92%2C4.31-7.83%2C4.3-12.83%2C1.75-5.26-2.68-15.76-9.38-20.09-12.1Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M422.34%2C232.15c-2.33%2C1.41-3.69%2C5.58-3.69%2C5.58s-.41-4.42%2C2.82-6.24Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M444.84%2C216.55h0l-1-.7h0a1.07%2C1.07%2C0%2C0%2C0-1%2C0l-9.92%2C4a3.78%2C3.78%2C0%2C0%2C0-2.05%2C2.42L426%2C244.39a1%2C1%2C0%2C0%2C0%2C.26%2C1.07h0l1.07.73h0a1.08%2C1.08%2C0%2C0%2C0%2C1%2C0l9.92-4a3.81%2C3.81%2C0%2C0%2C0%2C2.05-2.42c1-4.35%2C3.94-17.78%2C4.91-22.13A1%2C1%2C0%2C0%2C0%2C444.84%2C216.55Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M432.91%2C221.27a3.68%2C3.68%2C0%2C0%2C0-1%2C1.7L427%2C245.09a1%2C1%2C0%2C0%2C0%2C.22%2C1.06l-1-.68h0a1%2C1%2C0%2C0%2C1-.26-1.07l4.9-22.13a3.72%2C3.72%2C0%2C0%2C1%2C.92-1.61Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M427%2C245.1%2C431.9%2C223a3.82%2C3.82%2C0%2C0%2C1%2C2.06-2.42l9.92-4c.92-.37%2C1.49.12%2C1.28%2C1.09-1%2C4.35-3.94%2C17.78-4.91%2C22.13a3.81%2C3.81%2C0%2C0%2C1-2.05%2C2.42l-9.92%2C4C427.36%2C246.55%2C426.79%2C246.06%2C427%2C245.1Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M444.05%2C222.64c2-.71%2C3.35%2C1.36%2C3.44%2C5.15s-1.68%2C10.93-7.62%2C9.55c-2.31-.53-4.18-4.2-1.92-6a39%2C39%2C0%2C0%2C0%2C5.24-4.8Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M401.77%2C263.88%2C397.13%2C259l-1.95-5.19-1-9.61c5.36-3.47%2C7.32-10%2C5.2-15.07a33.52%2C33.52%2C0%2C0%2C0-6-9.41c-4.2-4.85-6.3-6.47-7.9-7.25-2.2-.18-3.84-.15-3.84-.15s-9.15.73-12.95%2C1.27a64.19%2C64.19%2C0%2C0%2C0-6.62%2C1.28c2.88%2C4.05%2C4.34%2C11.3%2C2.27%2C17.48a10.22%2C10.22%2C0%2C0%2C1-7.27%2C7.1s.59%2C9.22.93%2C13.84c.55%2C7.33.35%2C13.33%2C1.2%2C23.69%2C8.6%2C3.17%2C22.4.9%2C32.07-4.21C400.79%2C267.79%2C401.77%2C263.88%2C401.77%2C263.88Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M386%2C244.37a15.92%2C15.92%2C0%2C0%2C1-18.13-.63%2C10.89%2C10.89%2C0%2C0%2C0%2C8.9%2C5.57C384.46%2C249.59%2C386%2C244.37%2C386%2C244.37Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M386.13%2C169.17a4.87%2C4.87%2C0%2C0%2C1-1.55-.21%2C28.2%2C28.2%2C0%2C0%2C0-6.1-1.29A22%2C22%2C0%2C0%2C0%2C368.16%2C169a19.31%2C19.31%2C0%2C0%2C0-11.46%2C12.8c-1.78%2C6.62.52%2C12.8%2C4.32%2C17.71%2C2%2C2.57%2C5.64%2C5.07%2C7.09%2C6.08l1.37-1.5a15.38%2C15.38%2C0%2C0%2C0%2C7.53%2C1.63c2.52-.07%2C5%2C.26%2C7.41-.78a10.05%2C10.05%2C0%2C0%2C0%2C5.67-6.32%2C12.51%2C12.51%2C0%2C0%2C1%2C.88-2.76%2C9.73%2C9.73%2C0%2C0%2C1%2C2.24-2.29%2C16.76%2C16.76%2C0%2C0%2C0%2C5.52-10.23%2C6.24%2C6.24%2C0%2C0%2C0-.3-3.51%2C2.91%2C2.91%2C0%2C0%2C0-2.81-1.81%2C12.61%2C12.61%2C0%2C0%2C0%2C1.56-4.11%2C4.33%2C4.33%2C0%2C0%2C0-1.38-4%2C6.05%2C6.05%2C0%2C0%2C0-3.63-.91h-.31c-1.28%2C0-2.57%2C0-3.85%2C0C387.37%2C169.09%2C386.75%2C169.16%2C386.13%2C169.17Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M388.64%2C176.51c2.35%2C1.27%2C5.75%2C5.3%2C5.61%2C17.43-.12%2C10.05-3.33%2C13.26-5%2C14.05s-4.14.67-7.29.27l-.22%2C4.31c7.67%2C5.56%2C9.59%2C12.33%2C2.5%2C11.66-9-.85-16-8.7-16-9.5L368%2C201.25a4.32%2C4.32%2C0%2C0%2C1-5.06-1c-2.3-2.65-3-6.58-1.09-8.7s5.19-1.37%2C6.77.79c0%2C0%2C4.16-.1%2C10.67-4S387.28%2C181.29%2C388.64%2C176.51Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M368.66%2C192.3l-.07%2C4.85h0a3.45%2C3.45%2C0%2C0%2C0%2C3.5-3.4l.08-5.8Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M393%2C187.21l-3-1.14a1.53%2C1.53%2C0%2C0%2C1%2C2-.95A1.67%2C1.67%2C0%2C0%2C1%2C393%2C187.21Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M381.35%2C200.3l4.51.9a2.21%2C2.21%2C0%2C0%2C1-2.62%2C1.84A2.42%2C2.42%2C0%2C0%2C1%2C381.35%2C200.3Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22385.25%20189.42%20385.87%20197.84%20389.97%20196.57%20385.25%20189.42%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M382%2C208.26c-3.32-.3-10.2-2-11.36-4.62a7%2C7%2C0%2C0%2C0%2C2.52%2C3.33c2.1%2C1.66%2C8.72%2C3.67%2C8.72%2C3.67Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M381.81%2C192.38a1.38%2C1.38%2C0%2C1%2C1-1.37-1.37A1.37%2C1.37%2C0%2C0%2C1%2C381.81%2C192.38Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Ccircle%20cx%3D%22390.88%22%20cy%3D%22191.3%22%20r%3D%221.37%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fcircle%3E%3Cpath%20d%3D%22M363.52%2C171.67c-4.75%2C3.3-8%2C7.55-8.95%2C18.69-.72%2C8.51%2C1.21%2C14%2C3.28%2C16.24s10.89%2C7.74%2C14.9%2C4.41a5.86%2C5.86%2C0%2C0%2C1-3.48-3.12%2C18.55%2C18.55%2C0%2C0%2C1-1.21-5.77s-4.08.06-5.72-1.73-3.33-9.42-3-13.18C359.77%2C182.8%2C363.52%2C171.67%2C363.52%2C171.67Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M368.66%2C192.3s-.9-7.6%2C2.46-13%2C9.72-10%2C15-10.14c0%2C0-3.72-2.59-10.16-1.62%2C0%2C0-12.39%2C4.5-9.6%2C23A5.85%2C5.85%2C0%2C0%2C1%2C368.66%2C192.3Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M362.08%2C214.91c-5.49%2C1.41-9.89%2C2.83-11.72%2C8.21-1%2C2.8-2.58%2C32.31-2.77%2C37s-.24%2C29.77-.58%2C30.59c-.7%2C1.7-7.73%2C4.72-10.17%2C6.23a19.74%2C19.74%2C0%2C0%2C0-5.72%2C5.35c-1.09%2C1.68%2C2.7%2C4.38%2C6.15%2C4.15%2C2-.14%2C9.36-5.09%2C12-5.33%2C1.7-.15-1.12%2C2.94-1.22%2C5.37-.08%2C1.76%2C1.52%2C2.3%2C1.93%2C1.31.52-1.24%2C4-5.44%2C5-6.72%2C1.48-1.76%2C3.93-5.42%2C3.93-8.89%2C0-4.48.59-14.91%2C2-29.79%2C1.17-12.48%2C2.14-21.86%2C2.14-21.86A37%2C37%2C0%2C0%2C0%2C366%2C227%2C17.67%2C17.67%2C0%2C0%2C0%2C362.08%2C214.91Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--speech-bubbles--inject-87%22%3E%3Cg%20id%3D%22freepik--speech-bubble--inject-87%22%3E%3Cg%20id%3D%22freepik--speech-bubble--inject-87%22%3E%3Cpath%20d%3D%22M433.88%2C166.3a.52.52%2C0%2C0%2C1-.22-.22L430.89%2C156v-2.64l8.14-3.18v2.63l-1%2C2.85%2C4.84-2.79.29%2C1.63-2.88%2C14.71a.62.62%2C0%2C0%2C1-.88.33Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M433.88%2C166.3a.52.52%2C0%2C0%2C1-.22-.22L430.89%2C156v-2.64l8.14-3.18v2.63l-1%2C2.85%2C4.84-2.79.29%2C1.63-2.88%2C14.71a.62.62%2C0%2C0%2C1-.88.33Z%22%20style%3D%22opacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M442.89%2C152.87l.29%2C1.63-2.88%2C14.71a.6.6%2C0%2C0%2C1-1.09.1l-3.13-10.71.36-2Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M460.76%2C98.78a5.83%2C5.83%2C0%2C0%2C0-2.63-4.56h0a5.83%2C5.83%2C0%2C0%2C0-5.27%2C0l-38.28%2C21.87a5.83%2C5.83%2C0%2C0%2C0-2.63%2C4.56v42.88a5.83%2C5.83%2C0%2C0%2C0%2C2.63%2C4.57h0a5.83%2C5.83%2C0%2C0%2C0%2C5.27%2C0l38.52-22c2.37-1.35%2C2.39-2.71%2C2.39-4.39Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M412%2C163.53a5.83%2C5.83%2C0%2C0%2C0%2C2.63%2C4.57h0a5.9%2C5.9%2C0%2C0%2C0%2C4.82.22c-1.24.47-2.18-.24-2.18-1.75V123.69a5.31%2C5.31%2C0%2C0%2C1%2C.77-2.59l-5.27-3a5.31%2C5.31%2C0%2C0%2C0-.77%2C2.59Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M460.68%2C98c-.31-1.12-1.33-1.47-2.55-.77l-38.28%2C21.87a5.21%2C5.21%2C0%2C0%2C0-1.86%2C2l-5.26-3a5.42%2C5.42%2C0%2C0%2C1%2C1.85-2l38.27-21.87a5.91%2C5.91%2C0%2C0%2C1%2C5.28%2C0h0A5.82%2C5.82%2C0%2C0%2C1%2C460.68%2C98Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.5%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20id%3D%22freepik--Key--inject-87%22%20d%3D%22M427.36%2C129.76a4.51%2C4.51%2C0%2C0%2C1%2C1.7-3.61c.95-.54%2C1.71.19%2C1.71%2C1.64a4.47%2C4.47%2C0%2C0%2C1-1.71%2C3.61C428.12%2C131.94%2C427.36%2C131.21%2C427.36%2C129.76Zm-2.56%2C1.56c0%2C2.84.86%2C4.87%2C2.21%2C5.72l0%2C0%2C.08%2C0%2C.15.09.17.07.17.07.21.06.16%2C0a3%2C3%2C0%2C0%2C0%2C1.12%2C0%2C2.33%2C2.33%2C0%2C0%2C0%2C.36-.08%2C3%2C3%2C0%2C0%2C0%2C.39-.13%2C5.17%2C5.17%2C0%2C0%2C0%2C.72-.34c1.89-1.1%2C3.57-3.47%2C4.63-6.25%2C0-.07.05-.14.07-.21a16.59%2C16.59%2C0%2C0%2C0%2C.6-2l3.18-1.83.63-2.63%2C1.9-1.1%2C1.54%2C1.37%2C1.23-.71%2C1.12-1.91%2C1.95-1.17.74.89%2C2.2-1.28%2C2.24-4.72v-2.47l-16.47%2C9.51a7.32%2C7.32%2C0%2C0%2C0-.58-1.8l-.15-.28c-.11-.19-.22-.36-.34-.53s-.12-.15-.19-.22l-.16-.18-.06%2C0a2.06%2C2.06%2C0%2C0%2C0-.4-.33c-.07-.06-.15-.1-.22-.15l-.1%2C0a3.38%2C3.38%2C0%2C0%2C0-3.36.27c-2.71%2C1.57-5%2C5.76-5.61%2C10A15.6%2C15.6%2C0%2C0%2C0%2C424.8%2C131.32Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--numbers--inject-87%22%3E%3Cpath%20d%3D%22M420.74%2C160a2.9%2C2.9%2C0%2C0%2C1%2C.06-.4l2.37-10.81-2.41%2C1.39c-.12.07-.21%2C0-.26-.05a1.69%2C1.69%2C0%2C0%2C1-.08-.62v-.29a2.62%2C2.62%2C0%2C0%2C1%2C.08-.71.6.6%2C0%2C0%2C1%2C.26-.35l3.88-2.24c.06%2C0%2C.13.11.21.44a3.57%2C3.57%2C0%2C0%2C1%2C.13.92%2C1%2C1%2C0%2C0%2C1%2C0%2C.24L422.44%2C159a.83.83%2C0%2C0%2C1-.21.39%2C2%2C2%2C0%2C0%2C1-.44.33l-.41.24C421%2C160.24%2C420.74%2C160.25%2C420.74%2C160Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M426.46%2C156.72a2.3%2C2.3%2C0%2C0%2C1%2C.07-.4l2.36-10.8-2.41%2C1.39c-.11.07-.2.05-.25-.06a1.44%2C1.44%2C0%2C0%2C1-.08-.61v-.3a2.2%2C2.2%2C0%2C0%2C1%2C.08-.7.62.62%2C0%2C0%2C1%2C.25-.36l3.89-2.24q.09%2C0%2C.21.45a3.93%2C3.93%2C0%2C0%2C1%2C.12.91.9.9%2C0%2C0%2C1%2C0%2C.24l-2.52%2C11.49a.83.83%2C0%2C0%2C1-.21.39%2C1.92%2C1.92%2C0%2C0%2C1-.43.32l-.42.24C426.68%2C156.93%2C426.46%2C156.94%2C426.46%2C156.72Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M432.34%2C153.4c-.38%2C0-.57-.21-.57-.56a2.56%2C2.56%2C0%2C0%2C1%2C.1-.55%2C5.35%2C5.35%2C0%2C0%2C1%2C.25-.74.8.8%2C0%2C0%2C1%2C.26-.42.86.86%2C0%2C0%2C1%2C.24%2C0%2C1.49%2C1.49%2C0%2C0%2C0%2C.48%2C0%2C1.62%2C1.62%2C0%2C0%2C0%2C.61-.22%2C1.71%2C1.71%2C0%2C0%2C0%2C.69-.88%2C3.8%2C3.8%2C0%2C0%2C0%2C.25-1.45%2C2.18%2C2.18%2C0%2C0%2C0-.26-1.29c-.17-.22-.46-.22-.86%2C0l-1.06.61q-.24.14-.33%2C0a.84.84%2C0%2C0%2C1-.09-.49l.22-5.26a1.42%2C1.42%2C0%2C0%2C1%2C.13-.61.79.79%2C0%2C0%2C1%2C.34-.36l3-1.73c.12-.07.21%2C0%2C.26.05a1.69%2C1.69%2C0%2C0%2C1%2C.08.62v.46a1.75%2C1.75%2C0%2C0%2C1-.08.58.57.57%2C0%2C0%2C1-.26.31l-2%2C1.13-.11%2C2.54.17-.09c.81-.47%2C1.43-.53%2C1.86-.19s.64%2C1.22.64%2C2.62A7.5%2C7.5%2C0%2C0%2C1%2C436%2C150a5.89%2C5.89%2C0%2C0%2C1-1%2C1.8%2C4.52%2C4.52%2C0%2C0%2C1-1.25%2C1.1A2.7%2C2.7%2C0%2C0%2C1%2C432.34%2C153.4Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M437.5%2C146.77a1.66%2C1.66%2C0%2C0%2C1-.08-.62V146a2.54%2C2.54%2C0%2C0%2C1%2C.08-.7.53.53%2C0%2C0%2C1%2C.25-.35l1.92-1.11c.11-.07.2-.05.25.06a1.69%2C1.69%2C0%2C0%2C1%2C.08.62v.12a2.54%2C2.54%2C0%2C0%2C1-.08.7.56.56%2C0%2C0%2C1-.25.35l-1.92%2C1.11C437.63%2C146.9%2C437.55%2C146.88%2C437.5%2C146.77Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M441%2C148.09a5.07%2C5.07%2C0%2C0%2C1-.1-.92.69.69%2C0%2C0%2C1%2C0-.28l2.45-6.9a10.11%2C10.11%2C0%2C0%2C0%2C.34-1.14%2C3.84%2C3.84%2C0%2C0%2C0%2C.1-.85c0-.4-.08-.66-.24-.77s-.38-.08-.65.07a2%2C2%2C0%2C0%2C0-.52.45%2C6.48%2C6.48%2C0%2C0%2C0-.49.67%2C1.61%2C1.61%2C0%2C0%2C1-.29.38c-.17.1-.32%2C0-.45-.16a1.19%2C1.19%2C0%2C0%2C1-.2-.66%2C2.5%2C2.5%2C0%2C0%2C1%2C.69-1.56%2C5.64%2C5.64%2C0%2C0%2C1%2C1.52-1.31q1.11-.65%2C1.71-.12a2.55%2C2.55%2C0%2C0%2C1%2C.61%2C1.95%2C8.87%2C8.87%2C0%2C0%2C1-.6%2C3l-1.95%2C5.54%2C2.26-1.31c.13-.07.21%2C0%2C.26.06a1.44%2C1.44%2C0%2C0%2C1%2C.08.61v.3a2.2%2C2.2%2C0%2C0%2C1-.08.7.55.55%2C0%2C0%2C1-.26.36l-4%2C2.32C441.11%2C148.56%2C441%2C148.42%2C441%2C148.09Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M447.28%2C143.54a11.44%2C11.44%2C0%2C0%2C1-.57-4.28%2C17.77%2C17.77%2C0%2C0%2C1%2C.57-4.92%2C4.17%2C4.17%2C0%2C0%2C1%2C1.73-2.6c.77-.45%2C1.35-.24%2C1.73.61a11.36%2C11.36%2C0%2C0%2C1%2C.57%2C4.26%2C17.82%2C17.82%2C0%2C0%2C1-.57%2C4.92%2C4.21%2C4.21%2C0%2C0%2C1-1.73%2C2.61C448.23%2C144.59%2C447.66%2C144.39%2C447.28%2C143.54Zm2.06-1.95a5.89%2C5.89%2C0%2C0%2C0%2C.19-1.34c0-.62.06-1.5.06-2.65s0-2-.06-2.58a3.49%2C3.49%2C0%2C0%2C0-.19-1.12c-.08-.17-.19-.22-.33-.13a.85.85%2C0%2C0%2C0-.34.52%2C7.34%2C7.34%2C0%2C0%2C0-.19%2C1.34c0%2C.62-.06%2C1.51-.06%2C2.65s0%2C2%2C.06%2C2.58a4.18%2C4.18%2C0%2C0%2C0%2C.19%2C1.12c.08.17.2.22.34.14A.9.9%2C0%2C0%2C0%2C449.34%2C141.59Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M453.61%2C141.34a1.83%2C1.83%2C0%2C0%2C1-.91.06c-.25-.06-.37-.26-.37-.6a2.66%2C2.66%2C0%2C0%2C1%2C.09-.54%2C6.41%2C6.41%2C0%2C0%2C1%2C.21-.7.74.74%2C0%2C0%2C1%2C.25-.39.38.38%2C0%2C0%2C1%2C.24%2C0%2C2%2C2%2C0%2C0%2C0%2C.52.1%2C1.23%2C1.23%2C0%2C0%2C0%2C.57-.19%2C1.9%2C1.9%2C0%2C0%2C0%2C.76-.88%2C3.24%2C3.24%2C0%2C0%2C0%2C.28-1.4%2C1.67%2C1.67%2C0%2C0%2C0-.29-1.16c-.2-.18-.51-.14-.95.11l-.39.22c-.12.07-.21.05-.26-.05a1.69%2C1.69%2C0%2C0%2C1-.08-.62V135a2.54%2C2.54%2C0%2C0%2C1%2C.08-.7.59.59%2C0%2C0%2C1%2C.26-.36l.29-.17a2%2C2%2C0%2C0%2C0%2C.79-.85%2C2.49%2C2.49%2C0%2C0%2C0%2C.29-1.21%2C1.46%2C1.46%2C0%2C0%2C0-.21-.91c-.14-.16-.35-.17-.62%2C0a1.58%2C1.58%2C0%2C0%2C0-.48.39%2C3.9%2C3.9%2C0%2C0%2C0-.34.46%2C1%2C1%2C0%2C0%2C1-.22.28c-.11.07-.23%2C0-.36-.26a1.54%2C1.54%2C0%2C0%2C1-.2-.73%2C2%2C2%2C0%2C0%2C1%2C.59-1.27%2C5.5%2C5.5%2C0%2C0%2C1%2C1.41-1.15c.65-.37%2C1.16-.39%2C1.55-.07a2.44%2C2.44%2C0%2C0%2C1%2C.57%2C1.88%2C5.2%2C5.2%2C0%2C0%2C1-.28%2C1.71%2C4.29%2C4.29%2C0%2C0%2C1-.77%2C1.42v.07a1.08%2C1.08%2C0%2C0%2C1%2C1%2C.63%2C3.73%2C3.73%2C0%2C0%2C1%2C.33%2C1.72%2C7.08%2C7.08%2C0%2C0%2C1-.65%2C3.06%2C4.34%2C4.34%2C0%2C0%2C1-1.7%2C2A5.08%2C5.08%2C0%2C0%2C1%2C453.61%2C141.34Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E";
@@ -1662,150 +1359,55 @@ var buttonVariants = classVarianceAuthority.cva("inline-flex items-center justif
1662
1359
  function Button(_a) {
1663
1360
  var className = _a.className, variant = _a.variant, size = _a.size, _b = _a.asChild, asChild = _b === void 0 ? false : _b, props = __rest(_a, ["className", "variant", "size", "asChild"]);
1664
1361
  var Comp = asChild ? reactSlot.Slot : "button";
1665
- return (jsxRuntimeExports.jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
1362
+ return (jsxRuntime.jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
1666
1363
  }
1667
1364
 
1668
1365
  function Dialog(_a) {
1669
1366
  var props = __rest(_a, []);
1670
- return jsxRuntimeExports.jsx(DialogPrimitive__namespace.Root, __assign({ "data-slot": "dialog" }, props));
1367
+ return jsxRuntime.jsx(DialogPrimitive__namespace.Root, __assign({ "data-slot": "dialog" }, props));
1671
1368
  }
1672
1369
  function DialogPortal(_a) {
1673
1370
  var props = __rest(_a, []);
1674
- return jsxRuntimeExports.jsx(DialogPrimitive__namespace.Portal, __assign({ "data-slot": "dialog-portal" }, props));
1371
+ return jsxRuntime.jsx(DialogPrimitive__namespace.Portal, __assign({ "data-slot": "dialog-portal" }, props));
1675
1372
  }
1676
1373
  function DialogOverlay(_a) {
1677
1374
  var className = _a.className, props = __rest(_a, ["className"]);
1678
- return (jsxRuntimeExports.jsx(DialogPrimitive__namespace.Overlay, __assign({ "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className) }, props)));
1375
+ return (jsxRuntime.jsx(DialogPrimitive__namespace.Overlay, __assign({ "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className) }, props)));
1679
1376
  }
1680
1377
  function DialogContent(_a) {
1681
1378
  var className = _a.className, children = _a.children, _b = _a.showCloseButton, showCloseButton = _b === void 0 ? true : _b, props = __rest(_a, ["className", "children", "showCloseButton"]);
1682
- return (jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntimeExports.jsx(DialogOverlay, {}), jsxRuntimeExports.jsxs(DialogPrimitive__namespace.Content, __assign({ "data-slot": "dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props, { children: [children, showCloseButton && (jsxRuntimeExports.jsxs(DialogPrimitive__namespace.Close, { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [jsxRuntimeExports.jsx(lucideReact.XIcon, {}), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
1379
+ return (jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntime.jsx(DialogOverlay, {}), jsxRuntime.jsxs(DialogPrimitive__namespace.Content, __assign({ "data-slot": "dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props, { children: [children, showCloseButton && (jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [jsxRuntime.jsx(lucideReact.XIcon, {}), jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
1683
1380
  }
1684
1381
  function DialogHeader(_a) {
1685
1382
  var className = _a.className, props = __rest(_a, ["className"]);
1686
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
1383
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
1687
1384
  }
1688
1385
  function DialogTitle(_a) {
1689
1386
  var className = _a.className, props = __rest(_a, ["className"]);
1690
- return (jsxRuntimeExports.jsx(DialogPrimitive__namespace.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
1387
+ return (jsxRuntime.jsx(DialogPrimitive__namespace.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
1691
1388
  }
1692
1389
 
1693
- var a="container_f782f4",i="inner_37f4c9",c="bar_409d0f";const r=({size:r=35,color:l="black",speed:d=1,stroke:o=3.5})=>jsxRuntimeExports.jsx("div",{className:a,style:{"--uib-size":r+"px","--uib-color":l,"--uib-speed":d+"s","--uib-stroke":o+"px"},children:jsxRuntimeExports.jsxs("div",{className:i,children:[jsxRuntimeExports.jsx("div",{className:c}),jsxRuntimeExports.jsx("div",{className:c}),jsxRuntimeExports.jsx("div",{className:c}),jsxRuntimeExports.jsx("div",{className:c})]})});
1694
-
1695
- function styleInject(css, ref) {
1696
- if ( ref === void 0 ) ref = {};
1697
- var insertAt = ref.insertAt;
1698
-
1699
- if (typeof document === 'undefined') { return; }
1700
-
1701
- var head = document.head || document.getElementsByTagName('head')[0];
1702
- var style = document.createElement('style');
1703
- style.type = 'text/css';
1704
-
1705
- if (insertAt === 'top') {
1706
- if (head.firstChild) {
1707
- head.insertBefore(style, head.firstChild);
1708
- } else {
1709
- head.appendChild(style);
1710
- }
1711
- } else {
1712
- head.appendChild(style);
1713
- }
1714
-
1715
- if (style.styleSheet) {
1716
- style.styleSheet.cssText = css;
1717
- } else {
1718
- style.appendChild(document.createTextNode(css));
1719
- }
1720
- }
1721
-
1722
- var css_248z = ".container_f782f4 {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: calc(var(--uib-size) * 0.9);\n width: var(--uib-size);\n}\n\n.inner_37f4c9 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: var(--uib-size);\n height: calc(var(--uib-size) * 0.9);\n}\n\n.bar_409d0f {\n width: var(--uib-stroke);\n height: 100%;\n background-color: var(--uib-color);\n transition: background-color 0.3s ease;\n}\n\n.bar_409d0f:nth-child(1) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out calc(var(--uib-speed) * -0.45) infinite;\n}\n\n.bar_409d0f:nth-child(2) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out calc(var(--uib-speed) * -0.3) infinite;\n}\n\n.bar_409d0f:nth-child(3) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out calc(var(--uib-speed) * -0.15) infinite;\n}\n\n.bar_409d0f:nth-child(4) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out infinite;\n}\n\n@keyframes grow_ca6a4e {\n 0%, 100% {\n transform: scaleY(0.3);\n }\n 50% {\n transform: scaleY(1);\n }\n}";
1723
- styleInject(css_248z);
1390
+ var a="container_f782f4",i="inner_37f4c9",c="bar_409d0f";const r=({size:r=35,color:l="black",speed:d=1,stroke:o=3.5})=>jsxRuntime.jsx("div",{className:a,style:{"--uib-size":r+"px","--uib-color":l,"--uib-speed":d+"s","--uib-stroke":o+"px"},children:jsxRuntime.jsxs("div",{className:i,children:[jsxRuntime.jsx("div",{className:c}),jsxRuntime.jsx("div",{className:c}),jsxRuntime.jsx("div",{className:c}),jsxRuntime.jsx("div",{className:c})]})});
1724
1391
 
1725
1392
  var LoadingSpinner = function (_a) {
1726
1393
  var loadingText = _a.loadingText;
1727
- return (jsxRuntimeExports.jsxs("div", { className: "flex flex-col justify-center items-center", children: [jsxRuntimeExports.jsx("script", { type: "module", defer: true, src: "https://cdn.jsdelivr.net/npm/ldrs/dist/auto/waveform.js" }), jsxRuntimeExports.jsx(r, { size: "35", stroke: "3.5", speed: "1", color: "green" }), loadingText && (jsxRuntimeExports.jsx("p", { className: "text-center font-semibold mt-3", children: "Loading..." }))] }));
1394
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-center items-center h-full w-full py-10", children: [jsxRuntime.jsx("script", { type: "module", defer: true, src: "https://cdn.jsdelivr.net/npm/ldrs/dist/auto/waveform.js" }), jsxRuntime.jsx(r, { size: "35", stroke: "3.5", speed: "1", color: "green" }), loadingText && (jsxRuntime.jsx("p", { className: "text-center font-semibold mt-3", children: "Loading..." }))] }));
1728
1395
  };
1729
1396
 
1730
1397
  var AuthSuccessAnimation = function (_a) {
1731
1398
  var onComplete = _a.onComplete;
1732
- return (jsxRuntimeExports.jsxs(framerMotion.motion.div, { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeOut" }, className: "flex flex-col items-center justify-center space-y-6 p-8", onAnimationComplete: onComplete, children: [jsxRuntimeExports.jsx(framerMotion.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsxRuntimeExports.jsx(lucideReact.CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxRuntimeExports.jsxs(framerMotion.motion.div, { initial: { y: 20, opacity: 0 }, animate: { y: 0, opacity: 1 }, transition: { delay: 0.4, duration: 0.5 }, className: "text-center space-y-2", children: [jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-green-600", children: "Authentication Successful!" }), jsxRuntimeExports.jsx("p", { className: "text-gray-600", children: "Redirecting you to the application..." })] }), jsxRuntimeExports.jsx(framerMotion.motion.div, { initial: { width: 0 }, animate: { width: "100%" }, transition: { delay: 0.8, duration: 2 }, className: "h-1 bg-green-500 rounded-full max-w-xs" })] }));
1399
+ return (jsxRuntime.jsxs(framerMotion.motion.div, { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeOut" }, className: "flex flex-col items-center justify-center space-y-6 p-8", onAnimationComplete: onComplete, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsxRuntime.jsx(lucideReact.CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxRuntime.jsxs(framerMotion.motion.div, { initial: { y: 20, opacity: 0 }, animate: { y: 0, opacity: 1 }, transition: { delay: 0.4, duration: 0.5 }, className: "text-center space-y-2", children: [jsxRuntime.jsx("h2", { className: "text-2xl font-bold text-green-600", children: "Authentication Successful!" }), jsxRuntime.jsx("p", { className: "text-gray-600", children: "Redirecting you to the application..." })] }), jsxRuntime.jsx(framerMotion.motion.div, { initial: { width: 0 }, animate: { width: "100%" }, transition: { delay: 0.8, duration: 2 }, className: "h-1 bg-green-500 rounded-full max-w-xs" })] }));
1733
1400
  };
1734
1401
 
1735
- // Function to parse userAgent and generate a device ID
1736
- var GenerateDeviceId = function () {
1737
- var _a;
1738
- if (typeof window === "undefined" || !window.navigator) {
1739
- return "unknown-device";
1740
- }
1741
- var userAgent = window.navigator.userAgent;
1742
- var deviceId = "";
1743
- // Parse browser, version, OS, and device type
1744
- var browserMatch = Array.from(userAgent.matchAll(/(Chrome|Firefox|Safari|Edge|Opera)\/([\d.]+)/gi));
1745
- var osMatch = Array.from(userAgent.matchAll(/\(([^)]+)\)/g));
1746
- var isMobile = /Mobile|Android|iPhone|iPad/i.test(userAgent);
1747
- // Browser info
1748
- if (browserMatch.length > 0) {
1749
- var _b = browserMatch[0], browserName = _b[1], browserVersion = _b[2];
1750
- var majorVersion = browserVersion.split(".")[0];
1751
- deviceId += "".concat(browserName, "-").concat(majorVersion);
1752
- }
1753
- else {
1754
- deviceId += "UnknownBrowser";
1755
- }
1756
- // OS info
1757
- if (osMatch.length > 0) {
1758
- var osInfo = osMatch[0][1]
1759
- .split(";")[0]
1760
- .trim()
1761
- .replace(/[\s/()]/g, "_");
1762
- deviceId += "_".concat(osInfo);
1763
- }
1764
- else {
1765
- deviceId += "_UnknownOS";
1766
- }
1767
- // Device type
1768
- deviceId += isMobile ? "_Mobile" : "_Desktop";
1769
- // Add a simple hash of userAgent for uniqueness
1770
- var hash = btoa(userAgent).slice(0, 8);
1771
- deviceId += "_".concat(hash);
1772
- return (_a = deviceId.replace(/[^a-zA-Z0-9-_]/g, "_")) !== null && _a !== void 0 ? _a : "unknown-device";
1773
- };
1774
- var APIHeaders = {
1775
- "X-DEVICE-ID": GenerateDeviceId(),
1776
- "X-API-VERSION": "1.0",
1777
- };
1778
-
1779
- // Creates an Axios instance with a base URL determined by the environment (production or development).
1780
- var axiosInstance = axios.create({
1781
- httpsAgent: new https.Agent({ rejectUnauthorized: false }),
1782
- headers: __assign({ "Content-Type": "application/json" }, APIHeaders),
1783
- });
1784
- // Intercepts outgoing requests to add authorization token, version header, and timeout settings.
1785
- axiosInstance.interceptors.request.use(function (config) {
1786
- var _a;
1787
- config.timeout = Number((_a = process.env.NEXT_PUBLIC_API_TIMEOUT) !== null && _a !== void 0 ? _a : 605000);
1788
- config.timeoutErrorMessage = "Operation Timed Out"; // Custom error message for timeouts.
1789
- return config; // Returns the modified request configuration.
1790
- }, function (axiosError) {
1791
- var _a, _b;
1792
- // Handles request errors.
1793
- return {
1794
- status: (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status, // Extracts HTTP status from the error response.
1795
- message: axiosError.message, // Extracts the error message.
1796
- data: (_b = axiosError.response) === null || _b === void 0 ? void 0 : _b.data, // Extracts response data from the error.
1797
- };
1798
- });
1799
-
1800
1402
  var MAX_ATTEMPTS = 3;
1801
1403
  var useOTPHandler = function (_a) {
1802
- var provider = _a.provider, accessToken = _a.accessToken, idToken = _a.idToken, appCode = _a.appCode, authenticationType = _a.authenticationType, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
1404
+ var email = _a.email, appCode = _a.appCode, instCode = _a.instCode, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
1803
1405
  var _b = React.useState(false), loading = _b[0], setLoading = _b[1];
1804
1406
  var _c = React.useState(0), attemptCount = _c[0], setAttemptCount = _c[1];
1805
1407
  var _d = React.useState(false), isMaxAttemptsReached = _d[0], setIsMaxAttemptsReached = _d[1];
1806
- var handleSubmitOTP = React.useMemo(function () { return function (authenticationValue) { return __awaiter(void 0, void 0, void 0, function () {
1807
- var currentAttempt, response, error_1, currentAttempt;
1808
- return __generator(this, function (_a) {
1408
+ var handleSubmitOTP = React.useMemo(function () { return function (authenticationValue) { return __awaiter$1(void 0, void 0, void 0, function () {
1409
+ var currentAttempt, authentication, response, error_1, currentAttempt;
1410
+ return __generator$1(this, function (_a) {
1809
1411
  switch (_a.label) {
1810
1412
  case 0:
1811
1413
  if (isMaxAttemptsReached) {
@@ -1820,18 +1422,15 @@ var useOTPHandler = function (_a) {
1820
1422
  setLoading(true);
1821
1423
  currentAttempt = attemptCount + 1;
1822
1424
  setAttemptCount(currentAttempt);
1823
- if (authenticationType === null)
1824
- return [2 /*return*/, false];
1825
- return [4 /*yield*/, axiosInstance.post(MFAEndpoint || "/api/auth/verify-mfa", {
1826
- provider: provider,
1827
- accessToken: accessToken,
1828
- idToken: idToken,
1829
- authenticationType: authenticationType,
1830
- MFACode: authenticationValue,
1425
+ authentication = new camsSdk.CAMSMFAAuthenticator();
1426
+ return [4 /*yield*/, authentication.VerifyMFAOTP({
1831
1427
  appCode: appCode,
1832
- })];
1428
+ instCode: instCode,
1429
+ email: email,
1430
+ MFACode: authenticationValue,
1431
+ }, MFAEndpoint || "")];
1833
1432
  case 2:
1834
- response = (_a.sent()).data;
1433
+ response = _a.sent();
1835
1434
  if (response) {
1836
1435
  onAuthComplete(true, response);
1837
1436
  return [2 /*return*/, true];
@@ -1867,15 +1466,7 @@ var useOTPHandler = function (_a) {
1867
1466
  case 5: return [2 /*return*/];
1868
1467
  }
1869
1468
  });
1870
- }); }; }, [
1871
- accessToken,
1872
- idToken,
1873
- authenticationType,
1874
- onAuthComplete,
1875
- MFAEndpoint,
1876
- attemptCount,
1877
- isMaxAttemptsReached,
1878
- ]);
1469
+ }); }; }, [onAuthComplete, MFAEndpoint, attemptCount, isMaxAttemptsReached]);
1879
1470
  var resetAttempts = React.useCallback(function () {
1880
1471
  setAttemptCount(0);
1881
1472
  setIsMaxAttemptsReached(false);
@@ -1895,23 +1486,19 @@ var useCredentialsHandler = function (onAuthComplete) {
1895
1486
  var _b = React.useState(0), attemptCount = _b[0], setAttemptCount = _b[1];
1896
1487
  var _c = React.useState(false), isMaxAttemptsReached = _c[0], setIsMaxAttemptsReached = _c[1];
1897
1488
  var handleSubmitCredentials = React.useMemo(function () {
1898
- return function (CredAuthEndpoint, credentials, appCode) { return __awaiter(void 0, void 0, void 0, function () {
1899
- var currentAttempt, response, error_2, currentAttempt;
1900
- return __generator(this, function (_a) {
1489
+ return function (CredentialsAuthEndpoint, credentials) { return __awaiter$1(void 0, void 0, void 0, function () {
1490
+ var currentAttempt, authenticator, response, error_2, currentAttempt;
1491
+ return __generator$1(this, function (_a) {
1901
1492
  switch (_a.label) {
1902
1493
  case 0:
1903
1494
  _a.trys.push([0, 2, 3, 4]);
1904
1495
  setLoading(true);
1905
1496
  currentAttempt = attemptCount + 1;
1906
1497
  setAttemptCount(currentAttempt);
1907
- return [4 /*yield*/, axiosInstance.post(CredAuthEndpoint, {
1908
- username: credentials.username,
1909
- password: credentials.password,
1910
- MFACode: credentials.MFACode,
1911
- appCode: appCode,
1912
- })];
1498
+ authenticator = new camsSdk.CAMSMFAAuthenticator();
1499
+ return [4 /*yield*/, authenticator.LoginADCredentials(credentials, CredentialsAuthEndpoint)];
1913
1500
  case 1:
1914
- response = (_a.sent()).data;
1501
+ response = _a.sent();
1915
1502
  if (response) {
1916
1503
  onAuthComplete(true, response);
1917
1504
  return [2 /*return*/, true];
@@ -1934,10 +1521,6 @@ var useCredentialsHandler = function (onAuthComplete) {
1934
1521
  currentAttempt = attemptCount + 1;
1935
1522
  if (currentAttempt >= MAX_ATTEMPTS) {
1936
1523
  setIsMaxAttemptsReached(true);
1937
- onAuthComplete(false, error_2.response.data);
1938
- }
1939
- else {
1940
- onAuthComplete(false, error_2.response.data);
1941
1524
  }
1942
1525
  onAuthComplete(false, error_2.response.data);
1943
1526
  return [2 /*return*/, false];
@@ -1961,63 +1544,33 @@ var useCredentialsHandler = function (onAuthComplete) {
1961
1544
  };
1962
1545
 
1963
1546
  var MFAOptions = function (_a) {
1547
+ var _b, _c, _d, _e, _f;
1964
1548
  var onComplete = _a.onComplete, onAuthFailed = _a.onAuthFailed, MFAEndpoints = _a.MFAEndpoints, usePassKey = _a.usePassKey;
1965
- var _b = React.useState(""), value = _b[0], setValue = _b[1];
1966
- var _c = React.useState(false), otpVisible = _c[0], setOtpVisible = _c[1];
1967
- var _d = React.useState(false), showSuccessAnimation = _d[0], setShowSuccessAnimation = _d[1];
1968
- var _e = React.useState(null), authType = _e[0], setAuthType = _e[1];
1549
+ var _g = React.useState(""), value = _g[0], setValue = _g[1];
1550
+ var _h = React.useState(false), otpVisible = _h[0], setOtpVisible = _h[1];
1551
+ var _j = React.useState(false), showSuccessAnimation = _j[0], setShowSuccessAnimation = _j[1];
1552
+ var _k = React.useState(null), authType = _k[0], setAuthType = _k[1];
1969
1553
  var context = useCAMSContext();
1970
- var _f = context.authMode === "MSAL" && "sendEmailOTP" in context
1554
+ var _l = context.authMode === "MSAL" && "sendEmailOTP" in context
1971
1555
  ? context
1972
- : { sendEmailOTP: null, completeMFA: null, logout: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
1556
+ : { completeMFA: null, logout: function () { return __awaiter$1(void 0, void 0, void 0, function () { return __generator$1(this, function (_a) {
1973
1557
  return [2 /*return*/];
1974
- }); }); } }, sendEmailOTP = _f.sendEmailOTP, completeMFA = _f.completeMFA, logout = _f.logout;
1975
- var accessToken = context.authMode === "MSAL" ? context.accessToken : "";
1976
- var idToken = context.authMode === "MSAL" ? context.idToken : "";
1558
+ }); }); } }, completeMFA = _l.completeMFA, logout = _l.logout;
1559
+ context.authMode === "MSAL" ? context.accessToken : "";
1560
+ context.authMode === "MSAL" ? context.idToken : "";
1977
1561
  var authenticate = useWebAuthn().authenticate;
1978
- var handleFIDOLogin = function () { return __awaiter(void 0, void 0, void 0, function () {
1979
- var options, assertionResponse, error_1;
1980
- return __generator(this, function (_a) {
1981
- switch (_a.label) {
1982
- case 0:
1983
- _a.trys.push([0, 4, , 5]);
1984
- // 1. Fetch authentication challenge from your server
1985
- console.log("Requesting authentication challenge from server...");
1986
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RetrieveAuthChallenge, {})];
1987
- case 1:
1988
- options = (_a.sent()).data;
1989
- console.log("Received challenge:", options);
1990
- // 2. Call the SDK to trigger the browser's passkey authentication UI
1991
- console.log("Calling SDK authenticate function...");
1992
- return [4 /*yield*/, authenticate(__assign(__assign({}, options), { userVerification: "discouraged" }))];
1993
- case 2:
1994
- assertionResponse = _a.sent();
1995
- console.log("Authentication assertion received from client:", assertionResponse);
1996
- // 3. Send the assertion back to the server for verification
1997
- console.log("Sending assertion to server for verification...");
1998
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.AuthChallengeVerify, assertionResponse)];
1999
- case 3:
2000
- _a.sent();
2001
- sonner.toast.success("🔑 Sign-in successful!");
2002
- return [3 /*break*/, 5];
2003
- case 4:
2004
- error_1 = _a.sent();
2005
- console.error("Authentication failed:", error_1);
2006
- sonner.toast.error("❌ Could not sign in.");
2007
- return [3 /*break*/, 5];
2008
- case 5: return [2 /*return*/];
2009
- }
2010
- });
2011
- }); };
2012
- var _g = useOTPHandler({
2013
- accessToken: accessToken || "",
2014
- idToken: idToken || "",
2015
- provider: "MSAL",
1562
+ var authenticator = new camsSdk.CAMSMFAAuthenticator();
1563
+ camsSdk.Logger.debug("User context:", {
1564
+ user: context.user,
1565
+ profile: (_b = context.user) === null || _b === void 0 ? void 0 : _b.profile,
1566
+ email: (_d = (_c = context.user) === null || _c === void 0 ? void 0 : _c.profile) === null || _d === void 0 ? void 0 : _d.email,
1567
+ });
1568
+ var _m = useOTPHandler({
1569
+ email: ((_f = (_e = context.user) === null || _e === void 0 ? void 0 : _e.profile) === null || _f === void 0 ? void 0 : _f.email) || context.email,
2016
1570
  appCode: context.appCode || "",
2017
- authenticationType: authType,
2018
- MFAEndpoint: MFAEndpoints.ValidateMFA,
1571
+ MFAEndpoint: MFAEndpoints.ValidateUserMFA,
2019
1572
  onAuthComplete: function (state, data) {
2020
- console.log("Completed Auth. Handling MFA", state);
1573
+ console.log("Completed Auth. Handling MFA", state, data);
2021
1574
  if (state) {
2022
1575
  // Call completeMFA to update context state
2023
1576
  if (completeMFA && data) {
@@ -2027,11 +1580,11 @@ var MFAOptions = function (_a) {
2027
1580
  });
2028
1581
  }
2029
1582
  setShowSuccessAnimation(true);
2030
- sonner.toast.success(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
1583
+ sonner.toast.success(jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4" }), jsxRuntime.jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
2031
1584
  setTimeout(function () { return onComplete === null || onComplete === void 0 ? void 0 : onComplete(true); }, 2000);
2032
1585
  }
2033
1586
  else {
2034
- sonner.toast.error(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-red-600 bg-red-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(lucideReact.ShieldClose, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: (data === null || data === void 0 ? void 0 : data.message) || "Unable to Validate User. Please try again." })] }));
1587
+ sonner.toast.error(jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-red-600 bg-red-50 p-3 rounded-lg", children: [jsxRuntime.jsx(lucideReact.ShieldClose, { className: "w-4 h-4" }), jsxRuntime.jsx("span", { children: (data === null || data === void 0 ? void 0 : data.message) || "Unable to Validate User. Please try again." })] }));
2035
1588
  if (isMaxAttemptsReached) {
2036
1589
  setTimeout(function () {
2037
1590
  logout().then(function () {
@@ -2042,7 +1595,7 @@ var MFAOptions = function (_a) {
2042
1595
  }
2043
1596
  }
2044
1597
  },
2045
- }), handleSubmitOTP = _g.handleSubmitOTP, loading = _g.loading, setLoading = _g.setLoading, attemptCount = _g.attemptCount, remainingAttempts = _g.remainingAttempts, isMaxAttemptsReached = _g.isMaxAttemptsReached, resetAttempts = _g.resetAttempts;
1598
+ }), handleSubmitOTP = _m.handleSubmitOTP, loading = _m.loading, attemptCount = _m.attemptCount, remainingAttempts = _m.remainingAttempts, isMaxAttemptsReached = _m.isMaxAttemptsReached, resetAttempts = _m.resetAttempts;
2046
1599
  var handleGoBack = function () {
2047
1600
  setAuthType(null);
2048
1601
  setOtpVisible(false);
@@ -2051,55 +1604,36 @@ var MFAOptions = function (_a) {
2051
1604
  };
2052
1605
  // Show success animation if authentication is successful
2053
1606
  if (showSuccessAnimation) {
2054
- return (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntimeExports.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntimeExports.jsx(AuthSuccessAnimation, { onComplete: function () {
1607
+ return (jsxRuntime.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntime.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntime.jsx(AuthSuccessAnimation, { onComplete: function () {
2055
1608
  // Animation completed, can add additional logic here if needed
2056
1609
  } }) }) }));
2057
1610
  }
2058
- var content = jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
1611
+ var content = jsxRuntime.jsx(jsxRuntime.Fragment, {});
2059
1612
  if (!authType) {
2060
- content = (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-600 text-center mb-6", children: "Choose your preferred authentication method:" }), jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntimeExports.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
2061
- var success;
2062
- return __generator(this, function (_a) {
2063
- switch (_a.label) {
2064
- case 0:
2065
- // resetAttempts();
2066
- setAuthType("EmailOTP");
2067
- setOtpVisible(true);
2068
- if (!sendEmailOTP) return [3 /*break*/, 2];
2069
- setLoading(true);
2070
- return [4 /*yield*/, sendEmailOTP()];
2071
- case 1:
2072
- success = _a.sent();
2073
- setLoading(false);
2074
- if (success) {
2075
- sonner.toast.success(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: "OTP sent to your email address" })] }));
2076
- }
2077
- _a.label = 2;
2078
- case 2: return [2 /*return*/];
2079
- }
2080
- });
2081
- }); }, children: [jsxRuntimeExports.jsx(lucideReact.Mail, { className: "w-5 h-5" }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Email OTP" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Send code to your email" })] })] }), jsxRuntimeExports.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all", onClick: function () {
1613
+ content = (jsxRuntime.jsxs("div", { className: "space-y-4", children: [jsxRuntime.jsx("p", { className: "text-sm text-gray-600 text-center mb-6", children: "Choose your preferred authentication method:" }), jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntime.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all", onClick: function () {
2082
1614
  setAuthType("AuthenticatorCode");
2083
1615
  setOtpVisible(true);
2084
- }, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntimeExports.jsx(lucideReact.Shield, {}); } }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Authenticator App" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Use Authenticator App" })] })] }), usePassKey && (jsxRuntimeExports.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all",
1616
+ }, children: [jsxRuntime.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntime.jsx(lucideReact.Shield, {}); } }), jsxRuntime.jsxs("div", { className: "text-left", children: [jsxRuntime.jsx("div", { className: "font-medium", children: "Authenticator App" }), jsxRuntime.jsx("div", { className: "text-sm text-gray-500", children: "Use Authenticator App" })] })] }), usePassKey && (jsxRuntime.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all",
2085
1617
  // onClick={() => {
2086
1618
  // resetAttempts();
2087
1619
  // setAuthType("AuthenticatorCode");
2088
1620
  // setOtpVisible(true);
2089
1621
  // }}
2090
- onClick: handleFIDOLogin, disabled: context.isLoading, children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 48 }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Continue with Passkey" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Passkey" })] })] }))] })] }));
1622
+ onClick: function () {
1623
+ return authenticator.HandleFIDOLogin(MFAEndpoints.RetrieveAuthChallenge, MFAEndpoints.AuthChallengeVerify, authenticate);
1624
+ }, disabled: context.isLoading, children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 48 }), jsxRuntime.jsxs("div", { className: "text-left", children: [jsxRuntime.jsx("div", { className: "font-medium", children: "Continue with Passkey" }), jsxRuntime.jsx("div", { className: "text-sm text-gray-500", children: "Passkey" })] })] }))] })] }));
2091
1625
  }
2092
1626
  else if (authType === "EmailOTP") {
2093
- content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
1627
+ content = (jsxRuntime.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
2094
1628
  setAuthType(null);
2095
1629
  setOtpVisible(false);
2096
1630
  setValue("");
2097
- }, children: jsxRuntimeExports.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntimeExports.jsx(DialogHeader, { className: "w-full", children: jsxRuntimeExports.jsx(DialogTitle, { className: "text-center", children: "Email OTP" }) }), jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "EmailOTP", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntimeExports.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] })] }) }));
1631
+ }, children: jsxRuntime.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntime.jsx(DialogHeader, { className: "w-full", children: jsxRuntime.jsx(DialogTitle, { className: "text-center", children: "Email OTP" }) }), jsxRuntime.jsxs("div", { className: "space-y-6", children: [jsxRuntime.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "EmailOTP", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntime.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] })] }) }));
2098
1632
  }
2099
1633
  else if (authType === "AuthenticatorCode") {
2100
- content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: handleGoBack, children: jsxRuntimeExports.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntimeExports.jsx(DialogHeader, { className: "w-full", children: jsxRuntimeExports.jsx(DialogTitle, { className: "text-center", children: "Authenticator App" }) }), loading ? (jsxRuntimeExports.jsx("div", { className: "p-3 h-full flex justify-center items-center", children: jsxRuntimeExports.jsx(LoadingSpinner, {}) })) : (jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsx(CardDescription, { className: "text-sm text-gray-600 text-center", children: "Enter the 6-digit Code from your Authenticator app" }), jsxRuntimeExports.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "AuthenticatorCode", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntimeExports.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] }))] }) }));
1634
+ content = (jsxRuntime.jsx(Dialog, { open: otpVisible, onOpenChange: handleGoBack, children: jsxRuntime.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntime.jsx(DialogHeader, { className: "w-full", children: jsxRuntime.jsx(DialogTitle, { className: "text-center", children: "Authenticator App" }) }), loading ? (jsxRuntime.jsx("div", { className: "p-3 h-full flex justify-center items-center", children: jsxRuntime.jsx(LoadingSpinner, {}) })) : (jsxRuntime.jsxs("div", { className: "space-y-6", children: [jsxRuntime.jsx(CardDescription, { className: "text-sm text-gray-600 text-center", children: "Enter the 6-digit Code from your Authenticator app" }), jsxRuntime.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "AuthenticatorCode", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntime.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] }))] }) }));
2101
1635
  }
2102
- return (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntimeExports.jsxs(Card, { className: "space-y-6 p-6 rounded-lg shadow-md", children: [jsxRuntimeExports.jsxs(CardHeader, { children: [jsxRuntimeExports.jsx("div", { className: "flex justify-center items", children: jsxRuntimeExports.jsx("img", { src: OTPAuthenticationImg, alt: "NIBSS Logo", width: 365, height: 365 }) }), jsxRuntimeExports.jsx(CardTitle, { className: "text-3xl font-bold mb-6 text-center", children: "Two-Factor Authentication" }), jsxRuntimeExports.jsx(CardTitle, { className: "text-gray-300 text-base -tracking-wide text-center", children: "Your Microsoft account has been validated. Please complete two-factor authentication to continue." })] }), jsxRuntimeExports.jsx(CardContent, { children: content }), jsxRuntimeExports.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
1636
+ return (jsxRuntime.jsx("div", { className: "cams-sdk flex justify-center items-center h-dvh", children: jsxRuntime.jsxs(Card, { className: "space-y-6 p-6 rounded-lg shadow-md", children: [jsxRuntime.jsxs(CardHeader, { children: [jsxRuntime.jsx("div", { className: "flex justify-center items", children: jsxRuntime.jsx("img", { src: OTPAuthenticationImg, alt: "NIBSS Logo", width: 265, height: 265 }) }), jsxRuntime.jsx(CardTitle, { className: "text-3xl font-bold mb-6 text-center", children: "Two-Factor Authentication" }), jsxRuntime.jsx(CardTitle, { className: "text-gray-300 text-base -tracking-wide text-center", children: "Your Microsoft account has been validated. Please complete two-factor authentication to continue." })] }), jsxRuntime.jsx(CardContent, { children: content }), jsxRuntime.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntime.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
2103
1637
  };
2104
1638
 
2105
1639
  var NIBSSLogo = "data:image/svg+xml,%3Csvg%20width%3D%22243%22%20height%3D%2293%22%20viewBox%3D%220%200%20243%2093%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cpath%20d%3D%22M243%200H0V93H243V0Z%22%20fill%3D%22url%28%23pattern0%29%22%2F%3E%3Cdefs%3E%3Cpattern%20id%3D%22pattern0%22%20patternContentUnits%3D%22objectBoundingBox%22%20width%3D%221%22%20height%3D%221%22%3E%3Cuse%20xlink%3Ahref%3D%22%23image0%22%20transform%3D%22scale%280.001%200.0026178%29%22%2F%3E%3C%2Fpattern%3E%3Cimage%20id%3D%22image0%22%20width%3D%221000%22%20height%3D%22544%22%20xlink%3Ahref%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAA%2BgAAAIgCAYAAAAWb0OJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAdo5JREFUeNrs3T%2BP28jeIGrOeSe4F1jg9MFiAWejwd3IiXuym1mOHLr9CazGJjezO1%2FANrC57ehGi5ajG7odOrL8CaxJnL2wJjOwWIwOsOniXNIuzWhoUuKfokhRzwMI7T9qiSxWFetXVaxKEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Cj9IAoAkuXX%2F9ln64zz8Nft5VvC2dfpaZn%2F48u7TQqrB0ZTvSfpjEv46DT9X4ZVZpmV6LaUAEKAD9NNYzxrpd0IwPm34UZuA%2FUP4udDIh0GU8ayDbZa%2B7obyfVazPC90wgEgQAforrF%2BsdVYn3T4dVmj%2Fm36ukkb%2BCupDwct61n5fhSC87aygP0mfV3peANAgA7QrqE%2BCUH5g6T5CHmMYP11CNY18KHb8v4ilPnYsrL7Ki3Dz6Q0AAJ0gGYN9umADmdlNB06Le9l60bE5Dl1AAAAAAAAAAAAAAAAAAAAAOBgLBIHDN6t%2B7efJN9WYx%2B7bAGqKwvKQWE9kC0Cd510vxhcU9ke6s8tJAeAAB0Yc4P8TdLfNml9eW5LJ%2FiuLnifvs4HfqhZkH6Zlt%2BlqwZAE3%2BTBMBAG%2BTZfsafTzA4zzxNz%2F9z%2BprJCfDV9REE50k4xvfKLgBNGUEHhhicv0h%2FPJESX63S1%2FP0dWPqLCdQ9rf3M5%2BGnw%2BOJDjPe5mW2StXFQABOnCsjfNTndJe1Tx9fRCsM4CyWlZGJ%2BFV5m7Bv01HXmavlFcABOjAsTX4JyE4P5calWTPuC6ygD1t%2FN9IDiKVw2zmStZR9vetsnimXLYrq2kZ%2FUUyAAAAAAAAAAAAAAAAAAAAAAAAAADAkbGKO3BQYZ%2Fj98mfex1zGrJtprLV5t9adT5qeZqlP14oT0cp237tpWQAQIAOCM4ZQrD%2BKg1QlpKjUVmapj%2Buk917jjN8vygDAAjQgT4CirMQnNtPmW1ZcPIqC9jTQGUtOfaWo0kIzKdSYxRWIUiX9wH46t8kAXAI%2F%2BE%2F%2F6f%2FT1BBUcyZvi7S1%2F%2BT5pH%2FM32t%2Fte%2F%2Fw%2FByveB%2BVmaNv9v%2Bsd5YtR8TLKOy%2F8jzfPvJAUAGSPowCGCiyfJt%2BdkoYosCH3%2B5d2nlaT4Wn6epT8eJx4NGbN7aX5fSAYAfpQEwAFkgcVzyUANszQwfXnqU3%2FTNLgIf3wlS4zaRBIAAAAAAAAAAAAAAAAAAAAAANus4g5EFxa2st85Q7IKr%2FWXd5%2BWBywLWTk4C%2BXBKuxUsbCiO4AAHSBWQJIFIZ8FIxyBbIX4Ze7vvzb8rLtbf94E5NDEKg3Qf5YMAAJ0gBgBerbf%2BRMpAdDYZRqkzyUDwOn5myQAIgbnE8E5QGuPJAGAAB2graeSAKC1aejwBECADlBfaEzOpARAFOpTAAAAAAAAAAAAAAAAAAAAAAAAAADo0w%2BSAGjj1v3bLxJ7nwN05erLu08vJQPAabDNGtDWhSQA6MwjSQBwOoygA43dun%2F7PP3xUUoAdOofX959WksGgPEzgg60YWQHoHtTSQAgQAfYx%2FR2gO49kAQAp%2BFHSQA0cev%2B7Un6YxVeAHTH9HYAAAAAAAAAAAAAAAAAAAAAODH2QQdqCwvETaQEwMGsv7z7tJQMAONmFXegiReJLdYADmmRvu5JBoBxsw860MS5JAAAAAE60KNb92%2BfJaa3AwCAAB3ondFzAAAQoAMDMJUEAAAQn0XigLrmybfFigA4nLUkAAAAAAAAAAAAAAAAAAAAAIDT8YMkAKq6df92tsXaCykBcHhf3n26JxUAxs0q7kAdF4lt1gAAoBP2QQcAOAJhFhMAAnSAr%2B5IAoDenEkCAAE6gMYhAAAI0AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAADugHSQBUcev%2B7Wn6472UAOjN8y%2FvPj2TDADjZZs1AAAAEKADAFDRWhIACNABAOjfjSQAEKADZM4lAUBvll%2FefVpJBoBx%2B1ESAFUbh%2BnruWQA6K0OBgAAAAAAAAAAAAAAAAAAAABOxA%2BSAKji1v3b0%2FTH9AROdW6lZAAA%2BmAVd6CqLDh%2FOvJzXKfB%2BTOXGgCAPtgHHeBPN5IAAAABOkD%2FXkkCAAAE6AD9Wn1592kpGQAA6Itn0AG%2BaTS9%2Fb%2F%2F1%2F94kf44L%2FivdfrqOuBf%2F5f%2F9j977VRIz%2F%2FZAK7dIk2HReTzOkt%2FPDngOdzN%2Ff0q5rVNzyfLo2cjLLerNJ1Wqq%2BDlfcnI81HdS3TfHfTIh2fScJu6m4QoAOnZJ7dTMfc4Gr4ey%2FS16Sv4CR9%2FdxjYz0L%2Bp4e8bXbZdbjuXXR8fKmx3zadT78rtG%2FVT5%2BCz9XAoHW6TwJ9R1JctkiHfusW4bGui8gQAeaCluPraTEdwFqn0HPJGs09ziC%2BGgAl2HdZiRroOd2M7J8emjTHYF8lrZvs59pvlmrxWp5LAn%2BqHPmR15vDsGy7xlgMFSeQQc47obWeY%2FffTGA848enIeRwj7T9a3AqtM8e52%2Bfk%2Bv83W41uwvE9m09pmUaFfnhPw2lYRfWZQVBOgAowxQ7%2FbUYB%2FKqGwXjbw%2BA5FVBzMCLhTV0uv8OXseOASg7M5D0qh9nWNq%2B59MbwcBOsAoA9S%2BRnqHMHtg1dEUyTFNbxdYVQuaPoYyTTGzML5pPC07dALpLPtm7hETKOcZdKCSW%2FdvP0vG2ft%2F9eXdp5dHGqBmpj1971int%2Ffd8fI68ud53rWaSQjSL1s%2BXzw6aZpkdYzOi%2FblU2dZd%2FUcjIoRdODUNQ3yBjMSEhrQh%2Fy%2BMU9v7zOgXUXeWs2IXX3XtsAaVJkYmnmL3zW9%2Fc96biEZQIAOUGQZVqc%2F1gB149CjW0NosC87Wr1%2B1uM5efZ8GJ6GrbBOnsXh%2FhqcN52WHTpRJ5LwK6PnIEAHiN5QGNrzmIdeKO7iiK%2FdrkZ031NQY5%2BT54abuw754dQ9kQR%2FaLO7glkIf5pLAhCgA8RuKAyt4T491BeFoGUygHPuYgXgBz2eT%2Bzp7dk18txw%2ByD91J8ZFlj%2BWT5vWpTFmST8Vm93NPMJRsUicUDlBkr6WozofLLp7bWnKw50VeyzrBF4oIbPgwGcb%2FRG3gCe147d4SAgiFCukm97pj88xZMfUGfcELxWFqN4KwlAgA5Ekgaz88TUtKEEqEWmB7o%2BQ5g98Laj8%2Bqz4yX2gndGPiPli%2Bz54RNd1MojEn%2BaK4utre2QANWY4g5wfAFqkTtdf8GAZg%2BMbXp71AXvBriI4bE7udW3w7TsqUv%2F1aJp%2BQyLDSqL3wjOQYAOMNoAtcghGtNDmD3QeCXlHde17%2BntFocbtmkIWE%2BJLcHilE%2Bj5396JQlAgA4wxgC1zPkBFrQa6%2FT2Wc%2FnZHu14TuZTo8BdFgNSeNp2WYh%2FMXS4nBQnWfQgUpu3b%2BdNdrGsCr0%2Bsu7T01Xyx56ozW7PouOGu1DmD2wbrqS8h59jnLFnt4%2B5FkexyxL16sTOld56Js29Y1ZCH8yeg4CdKCj4O%2F9CM5jnr4uRxr4TJPuVtofxOrtsT9wANuRxZ7ebkptNyYH3CmhbwLLloGlWQh%2FsU66WTcERssUd%2BDUNJ0i%2FeAIzu1uh589hMZmF6Mws57PKVrDVVDQuenYTzBbsT6xqNlGNrul6WyrrF4xCyHUcbHXDQEBOsB4ZNPbmwZExxD4dDISPJDZA6sWjeVdRjO9XXDeuVMIXM3A%2BFOb2S0WaoyTjiBABxi5RsH5ET3Xexa22Bpjo72L6e19b0cWe0aAoKBbd8d8cuFxj5nL%2FId5w3ScJmYhbGQdqwvJAAJ0gDJjnt6%2BMY3caB%2FKtOkuprf33fEQc3p7FhCcK%2BK0IDjfCs5bTMvWUdZtvQ2jZ5E4oKpsevG9Yz6BL%2B8%2BLRr%2B6jFNHb4T%2BfOGcO5dbdHTZ0AS%2B7lMwVX3xt4BYnr7nxp15oaOMo%2BabNVzkgAE6EB3wW0WTCxO7byPcNuqaeTPG8LsgdcjvK6x93MXXHVvtIt%2BpeVhlpiWvbFqsZ3jTPL9GZzb%2BxyaMcUdYPgBah2TMC09RqN9KNPbb0Z4XWNOb%2B%2F7WXqOnw6eP1kcrv90hJNmBB1gt2OcrjiNFAAOIjiPPQozgI6H2NPbBQW0KQ%2BT5Pi3kFtE%2FKx5w3ScJcc%2FyyJaOraYhQACdEkAUNrgOrbp7Rt3IwXoQ5g98LaDzxzb9PYhdKQ8TF9NOx2ya7F5vvun8OchPu%2B9SMbp6QCO4TIN6OZHno5DmIXws2nlIEAHTsSt%2B7dnyfFOg7z88u5Tk0bLgyM939bBjentx3FOA%2BlEWkYYLbspyX%2BPE6vTd2Yg5Xx97MF5eMxk2vNhLATnIEAHTsskOc5pkKsmwfmAAtQmYlynIZz7PPJU8DFObx9Cp1n0Z01DGmVB2zy9ZtfJMBbfWifjM4QOnjFsxfV4jOUQ6IdF4oCxa9r4O9bp7ZtAtG2QPtbp7X0Heq8jXuMxz3LYDtYvk2Fs1%2FTrCOvHIUxvnx9zAg6kHK5G8IgAIEAHTkTThv2DIz%2FvxtOCB7KX77qjRYYejeicRrmIX4mrAZzrckwVY%2BjEm%2FQdnI9gWvYs6b8z1%2Bg5CNCBE%2FTTER7z8gSnt2%2FcPfbAr4OAJAtGzkd0TkOYVvv2EF8Sgri%2BA%2BRRBejJSB%2BP6MEQyuFLTRQQoAOnZ3KEx9y08Xcxgus1PfKGexfPpc7GEswOoLNh45BTz%2FsMkFdjWoAr5J%2B%2By0OWposjT8dpMoxZCGNcHwFOlkXigEq%2BvPt074RO98EIzuEsa4TXDSoGEvhlDfcugrExTW%2BfDSCPHTow%2BK3Hc10k4zKE%2FPN8BOlocTggOiPoAH8NUMcwvX1j2uB3xjq9Pet0mIzonIYwy%2BHtgb%2Bvz8dsPoysqus7%2F6yTYSz816ZOmQygvlwe%2BywEQIAOcAwBaix3jjTw62J6e9%2FnFXN6e9%2BdDV8DrI4W8dulz3O%2BGUulkOafWWJadgyzkdaVgAAdYFAejOhcpjUb7lmjve%2Fp7cuOnvXtszEdO5gdwrTaPgLWvvLmzcie8R1rJ9yh9V0O17ZWAwE6wKiNbHr714AmnFNVQzj31x1c1773tI%2FdiB7CdXp14LJ53uM1fDuWCiF0wk17PoybY19wL8xCODulMggcjkXigJ1u3b%2BdBQNvjuywL7%2B8%2B9QkKLoY4SXMAptFxfcOYWSti5HZvmdFROt0GEBnQ6arRfx26Wu0cmyjlE8HcAxjWNRsCHXlmPIlsMUIOjD04OaQQd6DEV6%2FacXAb5L0P709%2BsjaAGZFxA5mx9qJMtRrOJpRyoHMEFr1sHZB7HQ8T8xCAAToQI%2BObVT55su7T7WfFx3h9PaNuxXfNxvAsb7tKP%2F2OeIcLRgZUB49dND6tKdrmNUjL0dWl5uW3d7jEyyDgAAdGIIwvf3syA676fTJi5Fexqqj4qa3Dys%2FDjWPLg85chdGK5%2F0dK7zkS0O1%2Ff09iwt58ecgAOahbDQQgEBOnCaHh3Z8a6%2FvPtkevtfnYUgZ18QNOn5OKMHQyOc3j6EkbuDPT8crt91j8Hk87FUAmlaTgdQxm9GsrVa353Wo8mXQDGLxAG7%2FBpex2J1pIFc17LG%2Ba5AcQgdMV1Mb5%2F1HZBEDLCy4Op8ANfpkM8Pv%2BjxnF%2FZWi1%2Bmo4gHXvfWi3pZ4tDQIAODMGXd5%2BencipXoz8%2FO4M%2FPzXHS0c1XdQEnO0eTaE4PxQ09v%2F%2B3%2F9j9c9nnM282E0dV%2Fo3Ok7%2Fyx6WPk%2FdjpOE7MQgAMwxR1gvNPbN6Y7Gp1DmN4ePTgfwIjzcoSrtx9kP%2FCeg%2FPM5cjK%2F2wAxzCGrdWG8IiJ6e0gQAcYtxOY3p6ZhPMcauDXxdTXvoOSmHufD6ETJXPTcVnM8un7nq%2FdyxEuwNV3GV8d%2B17yocOv7%2FvEwtZqcBpMcQdO3exEznNaEmANYUXiLqa%2B9h2UxAxmhzBy19mK5qHz6Ek4zz4X4Mry4ahGKNO0zeq3Sc%2BHMYbR8yHcJ2ytBgJ04BTdun9701g%2BJqsv7z7NjzSQO5S7%2BaBxxNPb%2Bz6v2FuRDWGGx9sOrtE05MshnF%2FW%2BXA5wud7h1C%2FjWEv%2Bb47yVYdrdMBCNCBI5A1lp8e2TE3agAOaGXsQzgfaOO9i1Gh0SwOl%2BbRrDyeDSH%2F7Nuub4%2Bfkm%2BdJmcDLXNXx76IWUn9Nu35MI5%2BL%2FkwC6HvMvg6AQTowMl6fITH3LTxcnFC13WaNjT%2FNbBjWnb0TOWs5%2FOKOdI1lBkeT0dcNp4f%2BzPSA75mYwgszUIADsoiccAfbt2%2FnY1sHduIcja9venI1yNXfVyN9wGMOEfrdDiRBQz7Nh%2FTlmoDyzvLY19wb%2BtRjL7zqK3VQIAOnKhjHD1vNFp5YtPbR3Xt9uh7y7yx7X0%2BZtmK7ZcjPbchPBoxhkXNhnBPtDgcnBhT3IGvwuJwxxgQNG28GJnsOTiPPb19IKOG84ifZYZHdy5HOq19o%2B%2Fp7esRbK02hPpkMba1EQABOlDPvWM74C%2FvPjUN8gQ%2F%2FXrbwWf2PWp4E2sqqhke3QWO6evhCPc6384706T%2F3RnmI0jKWWJxOECADvQY6GYN18UpnKvgZxDGOL09ZqfDY1kkukUIzsf%2BPK9p2eNIx%2FXIZ3kAAnSAP5je3q%2Foix4NZDrqjTw6SFleuzqFYCd0PvZeDjraneGQ6ThN%2Bp%2BF4NlzEKADnAzT2%2FvVxfT22QCCkljT24cQHIwlMM%2BCnJcntAr2bADHYPQ8jrkiDAJ0gNEzvb3%2FoCkNlrqY3t53p8vbEZ3LWALz%2BbGP5B5hYLkawdZq2T2i98UmTzDvAgJ0IHPr%2Fu3r5AhH6768%2B9R0QTtTh%2FsVPTgfSKeL6e39y1a7fp2c6L7RaTmYJf0vavZ8BEk5G8AxWBwOBOjAiQbnk%2BQ4t1ZrEwwZnexXF9Nf%2B87DMae3DyHIOkbZNParE0%2BDvuu2ddLN4o%2BHZhYCIEAHevP0SI%2B70XRi09t7t%2BpoT98xTW9%2FIJs08iR0bpzaM%2Bebui2r16Y9H8bNsae7WQjAEPxNEsBpOuLR868NwYa%2FZ%2Bpwv6JP2wyByaTHc4q2FdJAVqI%2FZln6ZZ2OH9O0PLV0HMKiZmMILM1CAAToQG%2BOdfT8JuzZfoyNr1M37%2BAz%2B76mMRvTM1kkikn6epMG6deh02PUBtKxsxjB1mpDmIVwkusnAH9lijucdiN2cYTH3WgU1vT23i07asD3HdRavX24srxxnpb9eyMPerLz7LsjwtZq0hEQoANttFgF%2FZgbsfSni%2BntFz0HJtG2jNOB1JksTd%2BPPEgfwqJmRz0teyCzEG5srQZkTHEHToXRyX7NO%2FjMvhdUixmUPJZFug3Sx3hiaWA5TfrfJnMMW4LNkv5nIdhaDRCgA6dhAAuJnbroqzsPZMQr5vR2i8N1HKSneebFCM9rCB07L6Vja0c%2FCwEQoAPUYfR8PIHsdkA7lunt00QH0iE8CZ11oxAei%2Bi7Y2c%2Bgq3VLgZQ%2Fjx7DvzBM%2BhwQm7dv32e9D%2BNr6nVl3efVi2COXoKZJNutg0a0%2FR2HUiHk42ij2X9jdkAjmEMgeUQtlabK5qAAB1OLzifpD8%2BHvEpPMyC9Lq%2FZHp778Y6vT1mYKID6XCmWZ2Q5snlCM6l72nZy2NPx4HMQrixtRqwzRR3OB1Pj%2FjY11%2FefWo6Yml0sl9dTG%2Bf9XxOq1iBSRogZOdyJpucVGA7lnxjazXpCAjQgSZu3b89TY57m7F5i981OtmfdUcLH%2FXd6RLznB7IJgc3hjrh0QDK9nwE6dj3fXExktkcQESmuMNpeHrkx99o%2BxnT23sXvQE%2FkP3CX0c6lyFM1f8aJHT0udOB5suzY57mHuq1vtP26Ed9BzILwdZqgAAdTk0YPZ8e8Slki8M1bUib3j6%2Bxues7%2FwYMbCbDaF8pefT2aJpoUMlq3%2BymQJDGrnOjulYRy6HMC17PoL6aQhbq40hHQEBOlBTtvjMvSM%2F%2FqZMbx9HILttTNPbh9CB1Oney2keWIVgbh5Gfq%2BT%2FmdAZO4cY6EayKyLebiuRyvkxVHMxAEE6MCRaTH6fNRMb%2B%2Fd65Fe01jT2ycDCVQPNlU567BJzzvrLHw%2FgHM%2F1rphlpiWHcMQZiG8dJsAilgkDhgr09v7NR9hozrmrIAhBAjLQ4%2BEhu2krhSPoy4Di2NOwDALYdZ3%2FWhrNUCADpwa09vHF%2FjZ%2B3y451MnSM8CvFXP535%2BbIUqDSynSf8j%2F89HUD%2FNBnAMprcDAnTgdJjePr7GZ3pNs4C276m9N5HOZTqQ%2FHlzot%2BdJMe593zfo%2BfrAVy3MaTj8thnIQDd8gw6jNCt%2B7ffHGkD9C%2BNmC%2FvPjWdCjvE6e3L5K8L3k1HnAXnHXxm3%2FuFx5wVMIjF4XqeYvtPNXV1Yc2CISwOtz7ydMzScNLzYbySowEBOpxWcP4kGcf07rctfndo579OG7a%2FFDQWnyXHv0d954HfQJ4ZjTkrYAj5s%2B8ptoue8%2F6xLZ45G8AxjCGw7LtzbG1rNWAfU9xhXMH5ZEQBX6OplAOd3n4zkiChircdfObFsebHgvyZBVp9z27JgoS%2Bpyr3%2FQz4sY0E9z0tezGCrdUmA6hLBOeAAB1OzHVy%2FFPbvwauX959atoYHOL09lcjCRKqBD1dBH5jmt7%2BYADXaQjPEZ8lVA0sZwNIrzGMng9h5wTT2wEBOpyKW%2FdvZyMD05GcTptGzNCmt%2B%2FammtsAXoX09snA7imsfY%2BP0tOePX2nDs9f%2F8xzV7pu9NxNYAZFzHMBlA%2FrrRWAAE6nEZwnjX8r8cU6DUMgIawAFDl4C7intpDYXr7sAOETbA1hHzX9xT3o1ikLjyyM%2B35MI5%2B1NcsBOCYWCQORuDLu0%2FZqOU%2FpMQgpg%2FnzU8k7bt6rrnv0cObka3e3vv%2By2FWxKTnw1gcSbkawtZqY6jD%2Bk7Hla3VgKqMoANjMrTp7VUWVlqNJO2jN%2BJDINf3SOvbEZ1LJ9fpSMvp4MvdQB6JuBnB1mrnAyh7z92eAQE6cFLC9PahLTxVZbRyLAF6FyOzQ1jU6WZE57IcyDOwvY8KH8mzwLPEtOxR5LdkGAszAgJ0gIMa2vT2U2qUdfVc85hGDy0Ol3ztSJsmprcfS2C5OPZ1MsIshNmI6hFAgA5wNIY2vb1qo%2BzDCNI%2B%2Buj5QPazjzW9fQhB6dc8OYBjeDGAYxh8mRtInnmdHL%2FZAI7B9HagFovEwZG6df%2F2dGzn9OXdp0XDxuwQp7e%2FPaHsOO%2FgM8c0vX0Ii8P1PoqXltMnyTCewz%2BGmS1DWNRsnhy%2FIcxCWGmxAAJ0OAFNg9mRGtr09jr7Bh97462r55pNb4%2Br19HQMCPixYjza8y0mgwgzxz96PlAtt20tRpQmynuwBgMbnp7nWD%2ByNO%2Bi%2BntQ5gREWt6%2B2wA59LVFnh1gvP3A8mvxzCzZTaAY5iP4L7Q98yVVZ%2FlDhCgA%2FTV%2BB%2Fi9PZTGjXpoiHf94yImAv8DWF2x03P5fP9gMroMQSefU%2FLnh%2F7tGyzEAABOkB%2Fhja9vdYU2vS9iyNO%2B%2BjPNY9p1eWB7GOdOXiHUXbu6Sub0v5mQMH54gimt88GkF5jCCyHsIbFS7dnoAnPoAPHbmjT209p9PztSK9nrPOaDeBcVofcKit0SjwJAdLQZrYcQ%2BDZ97Ts5ZF3Gg6l7M1trQYI0IGTM9Dp7U2mE6%2BSYWzDVUdX%2B7z3Pr094nOjQ1i9%2FdUBymFWBqfh2s0Gml8Hvyp5eFZ%2FOvb8coB0nA3gvmBxOECADpykoU1vbzpqcowBehfT27M06H319ojnMoQtxdZhT%2B2YJuH1UzjH8yPIr8ewF3Xf07LXtlaLYnnIWSuAAB1gSIY2vf2U9j43vX3YQcLGtWriKEbPh7D2wtEH52EWQt8dRkbPAQE6cHoGOL29zdToD0n%2FU1sPda67PBrReV0opYPxfE9d8v7Iyt8gA8s0HX9PhvfIUR91yFxWAgToMM4A9FxjZ9DBXN4pNcrmHeT3SdL%2FyFes6e1ZsDdRRAdhuStgGshz30Nw02aF%2B4E89z0ERs8BATqM2AsNx6PSZoXo1Qmda5nHIzqvR4rDYFwdQb4bQ2ApHb%2BZSwKgLfugA7TXdlGgYwrQu9q262IA57UYybnwzctd13RA%2B9Qnx5z3B%2FLc9yCC8zazEAAE6ADxvHauzYUG%2FqTn84o1vX2WmOo7iKAz2b9y%2B4Vr9ZXRc%2FcBQIAOVLCWBEdj3uaXI47cDv5cB9zAj9W4fqA4DMLDCtsAPpVMX%2B8zjcu0WQh%2FWB1ZPQ4I0IEGfpUERyH6fuADtuxoCucQpre3nrYvWBmMq33X00J%2B0eqvWWIWQua5JAAE6ADDEGvf7NURnGsX09uHMM041tZqM8VhEAHnywrvs5BfnMDS9PZvsxBuJAMgQAcYQMMs4p63xxCgzzv4zCFMCbd6%2Bzhko%2BaX%2B94UZjrMJFeyaLm12jQxC%2BFrvXhCs6gAATrAoJ3SqEn0qfwDCZRiTW%2FPAhUrWfcny5sPK%2BbRJ5Lrq7YdUzqkvrH3OSBABxhhw2w58HN928FnDuF57Vij56b69huc36sxGiyw%2FNYxNW%2F6y2Yh%2FGFhazVAgA4wnAZuzKD6nwMPgLqYLTCE6e3zSJ9jcbh%2Bg%2FNKZTGseTCRbK07psxC%2BMboOSBABxhpw2zIzzB2Mb19MoCgNsqq9J7FPY7gPDB6%2Fs3Llr8vHb910locDhCgAwwlaI0dLA74XE1vF6wcfXA%2BkE6hIWi1qJlZCH8weg4I0AGGEpyf0HOH645GiYYQ1MY6L0HfwIPzYCbpogSWOqS%2B5cG5ZAAE6ADD0MWI8lBH0KM3Qgey4nms6e1Z0HemSBzuujUMzjMW8vuW75cty64OqQ4e%2BwEQoAM008mCaQNu7L3u4DMfj%2Bi8HigSB7NoGpzrSPnDqxGU3TGkI0CpHyUBQC1djpysBxZExF6pfmMII3CtO1nCVlNGEw%2FjeZoXn7X4fdOyvz2uMm%2F5GTPJ%2BHVrtaVkALpiBB2gntcdfvZy7OeaBrXZ1PZJz%2Be1jLSGgGDlANcqff3SJjgP07KnkrLdqK9ZCAe5BwAYQQeoIRtRXpzQ%2Bc47%2BMwhTJGNNT3VqGx3stkkr1qOmm88lZxRyrP8%2Fu0eMJcMQJeMoANU1%2FXIyZBG0JcdrVQ%2Fluntk6T%2Fhe7GHEj%2BEiM49xjCn3m%2BTXk2C%2BFg9wAAI%2BgANQOHLv1zzA3RsH9y31NkY60hYLGsbsrX88gdQ0PIc0PQdtaIWQiHuQcACNABKloeYO%2FzIa3k3kVDdAgrnsfaIs%2BobBxZmco6g%2BYdlS8dKS0fzTEL4c868QD3AAABOkBFh9hWZyhT3KOvVB8a%2BbMhnFuEc5km%2FS90d%2BxBeRYwvk3z2U1XXxKuk8cQkuR5y983C%2BEb09sBATrAgNyc0Lm%2B7eAzB%2FHseaSOB4tl1Q%2FIs86nD8lht6hynb7Nymlbd5mF8G0G1UIyAAJ0gGGYd7j3%2BV8agSNp0Bd50CJNYqV9rBEw032%2FD8BXW%2Fnn1%2FBzGQKbgz%2B6MaAZG0ddd4VtEc1COMwMKoCvfpAEMExheuZ0BKeyToa3v3ftAMSzhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSLZZg4G5df%2F2m%2FTHmZQATsj6y7tPDyUDAKfuR0kAg3MhCYATcyUJACBJ%2FiYJAIAeLb68%2B%2FRSMgCAAB0A6NelJAAAAToA0K%2FnX959WkkGABCgAwD9yQJzU9sBAAAAAAAAAAAAAAAAAAAAAAAAAIBh%2BkESwLDcun%2F7X1IBGKn5l3ef7HsOACVsswYAHMpzSQAAAnQ4Crfu3z6XCsBIZaPnK8kAAAJ0OBZnkgAYKaPnACBABwB69tLoOQDs96MkgEHJGrBGmYDRBeiSAAAAAAAAAAAAAAAAAAAAAACguh8kAQzHrfu3J%2BmPmZQARsC%2B5wBQk1XcYViyAP2pZACO3DqxcjsA1GYfdAAgtudf3n1aSwYAEKADAP1ZpcG50XMAEKADAD17LgkAQIAOAPRr%2BeXdp7lkAIBmLBIHA2vcpq97kgE4UitJAAAAAAAAAAAAAAAAAAAAAADQ3g%2BSAIbj1v3b5%2BmPF1ICqOht%2Bpp%2Fefdp3UF9dJb%2BuEhfD9LX2Y63Xqbfv3IpAECADmML0Kfpj%2FdSAtgh2%2B3hVfq66SIwL6mbNoH6LPdfL9NjuHJJAECADgJ04JQs0tfzNCBe9FhHnYUg%2FXH6WqfH8ovLAgACdBhrgJ41fn%2BXEsCQAnMAQIAOpxqk%2F0sqAKlV8u35boE5AJyIHyUBDI7GOPAhDcyfSQYAAAAAAAAAAAAAAAAAAAAAgNNkFXcYmLAXOjBu2R7iS8kAAGyzijsMz3tJAOMOztPXQ8kAAOT9TRIAwMFko%2Bb37G0OABQxgg4Ahw3O15ICABCgw3HIGu9nkgFGZZ4G5peSAQDYxRR3GB4LR4HgHAA4QUbQYXiuEiPoMBZWawcAAAAAAAAAAAAAAAAAAAAAoLYfJAHQp1v3bz9Lf%2FyUviZSgyOWLQb3UDIAAAJ0YAyBerZy%2FXn6mqavO%2BHPgnaOIjhPX%2Fes1g4ACNCBMQftWYD%2BNH3NpAYD9ovgHAAQoAOnFKhfJ99G12FI5mlwfikZAAABOnBqgfpFCNTPpAYD8XMaoK8kAwAQw98kAXAs0kDoJguI0teN1GAA5oJzAAAAAAAAAAAAAAAAAAAAAAAAAACAkbLNGjAqt%2B7fzrZhm0kJOvL8y7tPzyQDANAF26wBo5IGT5eJbdjoxjp9vZQMAIAAHaC6LEhfSgYie%2FXl3ae1ZAAABOgAFYUg6p4gnYhWidFzAECADtAqSDfiSQzPjZ4DAF2zSBwwarfu3z5Pf1xICdqwMBwAAAAAAAAAAAAAAAAAAAAAAIdkkTjgpNy6f3uW%2FphICfaxMBwAcGg%2FSgLgxGTB%2BVPJwB7PJQEAcGj2QQdOzcvE3ujstg75BABAgA7QlS%2FvPmXB1yspwQ5XIZ8AAByUZ9CBk3Tr%2Fu3PiWfR%2Bd4iDc7vSQYAoA9G0IFT5RljilxJAgCgL0bQgZN16%2F7tqVRgy%2FrLu09LyQAAAAAAAAAAAAAAAAAAAAAAQN8sEgeQfF0w7jqx7dopev7l3aeFZAAAhuBHSQDw1dv09UYynJSF4BwAGBL7oAOk0kDtJv1xIyVOxjp9XUoGAECADjBMVyFwY%2Fyyqe0ryQAADIln0AG23Lp%2Fe5b%2BuJYSo5ZNbb8nGQAAATrA8IP0F%2BmPcykxWg%2FTAN1MCQAAAAAAAAAAAAAAAAAAAAAABssicQB73Lp%2Fe5L%2BmEiJo7T%2B8u7TUjIAAMfgR0kAsNdZ%2BnoTfnJcLtOXAB0AOAp%2FkwQAu4UR2EspcXReptduLhkAgGNhijtARbfu356lP66lxFGYp8G5ThUA4Kj8myQAqOZ%2F%2Ffv%2FWP6H%2F%2Fyfsmnu%2F7fUGLRFGpw%2FlAwAwLExxR2ghjTwu0p%2FzKXEYGWPIwjOAYCjZIo7QAO37t%2BeSoVhBuhf3n1aSwYAAAAAAAAAAAAAAAAAAAAAAI6ZReIAIrl1%2F%2FYksU%2F6IVx9efdpKRkAAAE6ALuC9PP0x%2Fv0dSY1opunr%2BdpcL6SFACAAB2AKkH6JP3xJn2dS43WsmD8Jn29EpgDAAJ0AJoE6dkI%2Bov0NZMae12lr2zK%2BiS81uHvK0E5ACBAByBWoP4kBOoUe5gG4TeSAQBAgA5wiCA9m%2BqeTXmfSI2%2FyBZ7eykZAAAAAAAAAAAAAAAAAAAAAAAAAAAAGByruAMMwK37t2fJt%2B3YzkZ6itm%2B5ve%2BvPu0drUBAAToAEMP0rPg%2FDp9XYzs1NYhOF%2B6ygAAAnSAYwrUpyFQnwjOAQAE6AD0H6g%2FS388To532vsqfT0UnAMACNABxhCkT5Jvz6Yf27T3m%2FR16ZlzAAABOsDYAvXzIwrSF2lgvnDVAAAAAACAo2MEHeDIhdXfs9H1yQG%2BLpuyfvPl3aeVlAcAEKADUByoZwH6NH3dSV%2Fn4dV2gblleP2afJu6bsE3AAABOgANgvazEKgnIXivEpBno%2BQro%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC39IAkAAACG4%2F%2F6afIi%2FXG%2B4y3r9PX2339bzXd8xiz98Tj3Ocv09WrX7xV8zkX641H6Otv659dFnxG%2B88HWe0uPM33vNBzf5r2r9PU8fe%2Bq4nFN0h9P09dk67uyc1tUOJ%2Fse6%2FS9y5jfa4AHQAAYJwB%2Bvv0x7TCW5dp4PhL7nezgPf9VmC%2BDoH5%2BVYwnAWbD9PfXVfoKHiyFUAnW4HrPP39y633Xqc%2FZhXfmwXJb7beexZe2fHcKwqcc8d1Hs5x8zvrre%2B6LOuAyP3evXzQHYLzj3U%2FN6a%2Fyf4AAACDlAWRP2y%2F0n%2F7R%2Fp6Hv7%2FPIxab9sE56vw%2B%2F9IX19%2FZkFmCDqz4P%2FpniB4shWcZ8Hpz9kr%2B8zwGbMwCr4ZDZ9tBdib926C8lkIjjcdCNfbn5v%2BzF7zEBi%2FqJAub8J75%2BH8tr%2FrOhx7%2FnwutoLzMtc7PvdFOHYBOgAAAEmSjXqnr2choM3c3QpCn4XgPAuUf8mPEIcR4E1w%2F2RPwLkJ%2FOfbI8fhMzd%2Fn%2BZ%2Bzre%2FM%2Fze5r0XWz%2Bz711sPjeM5F9tOg%2BKAuytc8zOL%2Fv%2F9faofPiszXdPtt5%2Flr7ebAX16x0dEtPw%2F1cFn3u2dQ4CdAAAAP6wzgejybdnxTOvyqavp%2F%2F%2BMv1xsxWol1mE93wo%2BL9%2F5v6%2BCu99u%2BM4k1yHwod8x8NWgD3d0UGRTX%2FPpvXfK%2Fjvog6H8xBYZ8f4MPk23T8peV9mWZB2b%2FOdIV35Ub4GAAA4HmEUebYdPIbR8E2wfrPr99MA9OG%2B7wgj4YuS%2F360HXzveOZ7e9R5letQKPrsX8P7J3uObVnwPU%2BSP2cPLHOdB388P56%2B9%2FGeAL2oQ2KZO3YBOgAAwIl5tHnOe0s2ijvdCj7nuQAz2bfIWsvOgesQqK63vrvMi%2FDeVVcLrKXH8zkXON%2FbHgEPq8LPj%2BWCC9ABAACGaVby71kAmo2SX%2B1bib2D4HxzTDtXgd96b%2Faehx0e1iq8NqvUv0m%2F%2B17V7doE6AAAAFSRLVa2GQ3PAtCnIQhdFATnnQbqueD8smxf8DDd%2FMVWcH7Z5Yh%2BtkL91vduVrB%2F0XGngAAdAADgxCy3AuFFGoQuQhB6sQl%2BtwLVZfr%2FmyB5WhZAh%2F9%2FFn7%2FZt9Icy7w%2FToavic4337vvS6D81ygvk6%2FP0uPj8kBVlvvilXcAQAAjkAIdjdbgGV7iz%2FJvWWzONyjPQF3tlBaNso8rRGcr0LAXSU4X%2B4Izjf%2FVvTdd8LP1Y5jyrZhe1Zw7jt%2Fr4LNcRWt1H4e4fMF6AAAACML0udbgfjT3J7hr7aC9%2FOSj8gC881%2B4Dd7vm474P6lbDS8RnCe%2BbUoEA6fsQnaFzuOKXvf09DJkHfRIpDefOe0YH%2F4B%2BHnh66vrynuAAAAx%2BUqBLOb570fhuA9mwZ%2FEwLVj%2Bmfs73Jb8L092kIajdB7NWeRd6eJX%2BOHGfB65PNFPotm9XZn1R47yI7vuz96f%2B9CIHwi%2FTvVyEgfhPOZ7E97T79v%2Fdbx5tN%2Bb9J%2Fy077kl4Lv4qTG%2BfhrTIvG7Q8ZF9RnYus%2BTbQnMPw789CWldpUNDgA4AAHBKsgA2BN9ZQHqR%2FvkiC1zDf2%2BeS88C8Wyk%2BWlBsHxZYduzB1t%2FflLyniwYnyd%2FHc1%2BsuMzF1vH%2BCYE8tvvL1rxfRp%2Bbo9qZwvDvQ%2FB9Cx3fvP03J616Pi4CN%2F5e%2B5zLw%2BxYr4AHQAAYFiyEeBsOvVqR5D%2BMgSQZ9vBawgiH4YR5SzI3p7q%2FiEEsKsKx%2FA2vHbZfM6rCp%2B32DrGbBT859CBMNk6tpcFQfDz8L7tc89mBPwSOga2nw9%2FvWtxvH1pG0bMfw6dDHe3PvfVoRa7%2B0HeBwAAYIhCR0M2Wv7zse5tXodF4gAAABiqbCr8%2FBSCcwAAABisHavRAwAAAAAAAAAAAAAAAAAAwKhF3Wbtv%2F%2FX%2F3j%2BX%2F7b%2F1yeWiKm5z3d%2BusqTYOVrHWQdD%2Bq%2FJblk%2FR4F64cQy4L6Wdl%2B6hOTrEuP8R1SsI%2BteoC5bSj75iE%2FLUawPmqS%2BK1L4%2BqbRny4eSU67osDbq%2BZof4jhFdj6w%2B2l5obpmm3Xqox%2Ftj5M97nybAw64LY%2Fods%2BTPDe0z87IMWue9NRpYF8m3jeunJe%2F5WpmmrywdPqSvm6aZIP2sZxGSbFF2TSp%2BfnbsyyaZOXb65477p%2FR12XOBf7JpcFc4vxfp%2B1%2Bl%2Fz%2Fv%2BJgucpXQX65%2FuOFPI35lJ5%2BffuazHQ2WKp%2B%2FDI2aZQdp%2FKzi9y8PcIPOrvfT9PVLpI%2FM8s51%2Brm%2FdH3zyqdj2TWv%2B949N%2BgnVfNapEbq45BfzwvuE1keeZu%2BXlZN64I6tYnVph4KxziLeNpfP7ugHopdz%2BTTYVG37RE7LSvkveuI5bTMi%2FT1KrRBqgR%2FndXV4fpn9717fdclkdpSSey2TEl9%2FiC0M88K6oyb9PU6%2Fe6bitfzZZu0LyrHRdd7qx55UFLXZWn1etfxxL5G28dZVvd3dd1DumVxwlXHAWdW3h8esmyVtHXWderfgvvOKmbbOKTN5hqcl92LtvLm5l68GEqHR%2BwAPUuQN6Ey7rLH9HE%2BANlxM6rz3n038qc1buabzDcLN6gs4z1vUFE%2BjdW4ifH56Xlk17VOkHmdv1lEbPQOoefrRY3z2zRWlgcoH9Md1%2F5BpBtVWf56FKHBn6VP2U2h1uen6b0KjZpXESvepzW%2F%2F3kXHTNbN%2BhJ9udIjeDzUH9le47e6%2FCmf55Lx1XZNQ8Nz0rv3ZNW73P3g3UX57h1XWYV0jp7PQqd21XqhUcRgqqsvG7y40XE%2B8wmgJgX1ENJhDphVzosGnzmi3wQ1MDziu%2F72knT5YhXCAouQoBe9V5x0VHbYjt%2FD6EuiZnHo3fqhXO4TvZ3an29xun7s3J2mavzVwXnuW7a7to6pu0yclUSwO1L30l4z%2BOiGKGgjm8rnwfOI31%2B1RjiQRK3g7Kr%2BqtKe%2FtpxfcmW22tRYV8vP258617UpvjnTZog07C6yJ8xk1os%2FU68%2BdvES%2FidCtIvw4NlK7ke%2FMWkd5beMNLX59DJTVpeLybnrvP4QZap3LsLDhv%2BPmb0bWP%2B67xZqpdLv3XESulScQ0alpx%2FeVGuKNneLKVF94fsnwU3Exip9mioLKLcXPdVZnWMQnl72PoaItV19X5%2FqzMdHHdn2ylx0Wkz9wc4zQ93usO8%2BmkxjU%2Fq%2FHeWsF57JtwqJM%2BNmggvC%2BqMyuU7yY%2B7Ejbtn7tqJ5ZFQS8bfPEWQfHtavBHrOclnUKtSmDTayHXpd00E5YRb52s1Bn1DnOiyQ3ABI6fm4KOmGaygfn2WzQl9t5LmsL1gx8N22g8z11fOxrFCsPLGtcn%2FOKdXrTdsgs6V7d478I13dfe%2Ben3N9%2Fa9sez74z3OfbpstFaC%2B%2BSHr0t44u4qbHtItMeV715lDnvUU3u3BDebMjg65CcJJ%2F7aqY3tQIEmIV7HUHn39eIdCcVOkoaFApXexopB3SpEbFPSm4QZ11UD6%2Ba3QWjNbEbqys9zSc2zTyizT9%2FE3n4UXk617VNGa9WNCzfTfSR29%2FzixGp0bFQHMZ6b1VgvNVR8H55ruK8sj2PWJZlj97CCrvRr6uyy4a3NvXqqjubDAqHaserPq9F7lAPbbtzrrVAdPg1yOoS2IHSauIdcaspNyvc3VGUTvuoiBN87MnJg06lZMQnOQ7NC%2F31Ktt6rrY7ZIPHXQArKsMMoU2xlmu3Md2qOBx2uL3drVzG9%2FTC9L76wDonmOtG6%2F1HV9EneKerwC%2F9pimmTn2M8JNg6LKGSA0fN%2BUVBjZZ2TP0dzsahBsPUdUdEPKgoSkwpTX%2FPfPw3c3btg0%2BPwsg%2F4Ufk4Kfj8rGM8qZu5WN7WtZ%2Fi2ZVNZXvZUfuqc37Qg7V4k8Z%2Bhr1LpPdwTxOaDyHs1Gs5FDaEmUxtXO8rmvs%2FfLMRVNsUsS%2FebiHVQUbk5D43Ti4J6cRZpuvt1QQAQIz9NCuqrVQdri9zJ%2Ff23SO%2Fdzi%2FnoRF5lisTXT0T%2B6agIZhNgf7uucvQaM43gl83KN9NnnHcrheu9jRe3%2Bf%2BfrmnrltWKPfnuQZm3fM4LwgIYtSVbdOySoN9GvFxlO18%2FrROZ0XXdfXA6pLlnnPLT4nd19ZaR7puk4JAK0vPwkeiQjC%2BPa15mc9%2FWdqGx6q20%2F5xnTIS6qb8Y3APc3n2RUEZepkUPMoZzvM61w56W3AfXewJSM9z9eqiRr68W1Av182HVa%2F73dyfo7ZRwyMFh5o9%2Bvcd7Z3Noms%2FJQVrJuyJEc5r1CO7YoI3OwLpm5DPdq4DFvL7Jl47ixWzDClAL%2BqFz3pMP0R%2B9rLTUZeSBt3mQl1WvbGEBTxuskXBkuLnirJnkfctRvDdTSfyje2nCp%2B%2FyPVS5W8mj3cE6H9v0qje4UlRJ0Hsxk6Liuu3Gmm9KR%2B%2FRX6WbbKv0tuVhwp62pc189yk5e%2FH%2BPzN35%2BVPNeXjShcFC2y07Cu%2B1ByDC9DeuaDtgdJy2etQoM%2Ff63OIq0SXdRw72JtkbMa9XOd9%2FYSnJcs0PSwLJ%2BFhvS95M8R9yrp%2B92ssLbla993hucKt98%2Fr%2Fi5ixrBYd3zaDw7bkeeetvhArf5OuMiifC8ZS54aVvOFx2cf1ld8kvk5%2FB31g%2Fhu1Y78mN%2BGvivB1p5%2FGmd%2Biksvpi952O4xzwsee%2Fz5K8duBdV1z7YCnr%2B8nm5BRonyfeDT5dldUP43nthCvJ5eO9NzWuUtMyvh8jv2%2BV7O%2B2jtVG31mA6lPM99eTmOl7WjBHO6tyHSvJp2QyOecizleqYcD7Z%2Ffh5iDMeh%2BP7tc8Avasp7tuum0yvqRNURnrvJuMXBefZ6MfPTQpzlunS1y8FN%2BMqz4udlQXLHV2zxZ5zyXoBr4qCgooFe9GyUnpaoTI8pDrnV1Y%2BnkaYcr3re35teU6rA%2F9%2B1M8Plf69ggZ8m97nys9DhzojP%2BWwVX1YMpMkSlnYUVd3sbbItEbQPa1z3UuC85uku5HzpKDR9HxfJ1A4lmxE%2BueKDZR8%2Bn%2FosoIr6rDrqJ760LIMNmlI3e24rtpVLu9GvEZPGtYp0y7Pf09d8qbHuqRKfux8cahw%2Fvkg92pf%2FRTqiSww31WX3RTc82YVDy3%2F3PmiYBAhX9fdVOy4uwx1cJPO8fNjuMbh3jPpsI16nXS8MFzTNlfVGKHtfWVHcJ59Ttb5d9mkAzArTyGv%2FxI%2Ba5X06BABehIq40lH3xNlivtWr2E%2B42cXuvU2CWGq%2FyKXyfettNrpDbTJ528vELKjsVRWsNctK6WqDa3BVVx7GlDXERexadvobNvw%2FSlCwznq54dGzE2H133fzeWmYnmp6umOz2j7fOvZnvOOstBTnQUkS9672hMY5IPzbGuchx3PtMk3wqo0WDeduOsDle%2B299tY6df2PO5GaGxPDpGWXTbYQ7ul6crUURdpqtkm7KUu6TD4i9KpUHOG5r57Xr59%2BahiZ89Frrw%2FrFDXva543I22PS1aT6rONW77%2BzU96qqNWjJzrjMlaxotI8QIje8rO4Lz7B7%2FS4xZfpsZH5Hbjf0E6BWCi5g9pnWCyjrvLZqGfhl5ev5lyIjz0MuzqHnTWUUseG0%2Bf9FFwa5RKS27aOxEqLhWO957qPLRttHZtuHbdUOn6ef%2FFum6177Rx5wWHr7%2FSe7Gtv39bVeN3bvFT6SVTSc16pTK7w3PaBYF55cd1wfnXdbXhw4qd3xfrBH7s5bnESMdJrnrtegoDYsa7GeRZk612WZp0nFdPRlgXVKlLbQ%2B0CNz0WYYlsi3XSe7Fukr2Kpu0wZeVyg7XQcyZy3zatd5fV97tHVZb7hLQ%2Bw8GitGaHNfKYvVot7jw2h6r1s5xxpBL8r8y4ILfd0yg1YOKmu%2B96KgAF3F3rc4fP9m%2BsW65wqlzU3tuxtaV4FaSaV0lfu8sx62W2u7FkLRKrPvY1%2FXBo3OKte2TrqsO073Q1egTZ6FnkYsy0VlId84mrb4%2FDt7GnmZJxFWY57WuPFXem%2FJashXXQfnJfmiq3x5qKCyLD%2BsuijHbeupBs8vTg9Yj5Q1zluNqkXYZqnrx5GGWJf0HbwdTGhv5tP80Z7AZ7see3mAwLvpNR7awMF23DEpuj9EeNT3aRJ%2FN4K6ZWPV8Pei3FcKZnh0EqsNRawA%2FbtFBJI%2FR4v%2FcqNq2WNaJ6is8978Md2UTNOIVWke4qbTSaATAuYqjaNJpOPPLww33yzoULERNISKq6ghVPhcdJu9Ygs6KVZtz6tBw%2Fms4wCi6efHCjSaNBRidVbNct%2B%2FCDemfO%2Fzg4j5%2BnVSvDJ828cy6iywuPe9JcH5ZVf1eJV8Gnv%2F2wMHlbHr8V311LplOqza1iM9NNhj3LPa3CuizXAbQF3Sdqp%2B122tqrpow3y3K09RvVSwKviyzqOdkdfRqXKN%2F1nz9%2B%2B0%2FP0Y1%2FBBi%2FKanznXVzv3Q5PfK2in1b6vlDzOM%2B%2FxHn80AXo%2B8683C1kUBVwtekzr3NgrBSvhWCa5z7wcwLXJN0p7f5a3pAK6qViwax9%2FwZSr7NpsbhpvIwYlMSquX%2BukdZhBURSkz0Iv4cEb020bvpEaztE%2FP1Ts%2Bd9dRCo3VW70jxre5PLnkO9IfF5yLtMWyfxdZ0LoBJgXvPd9iyC0zvTOnR0codO3KDifH7A%2BWMUMoPoMKuukfaR6atkyHVYDOa%2B6DfZJ08A0BFSTgV3XvuqSScu6vetn8cusC%2FJD1CAsBEb5a%2Fu04L6ab2c9rPlVTyMv%2Bhf7Gne94HLZvT5WB8x10o%2Faa4UUdNYs99UNFQdaniTfb4F2lYxYrAC9sOEQEj1mj2mdoLJqpZvvkXnV93MHB7qBNtmCrqgH622sgl3gRdm1KSjQ5x3fINqc33lJ%2BSjbd%2FdFw%2BlQbfPMEJ4L7eLz84uqLVo8H1yroRAaXNvXZdUwcMyfw2YmyWZWTv6Rj9r5Z9fz9QWLXG7yS9O1E6J0toYZJ%2Fln8n859JS3ki2CstGqmKtVH3Qhqw4XVmp7Hvnfb%2FJc%2FL59s7tqsLd%2BHKVgR5NVhDRcHyrv9FyXdBH8NXVTcu%2BPPVKaXyzuYpPOJTuCXFW4P94UXIP3HbbBpi3bFm1%2Fv2q5PM%2Bl0TrXAXPe4HPzbYhD3tuatLke7ypPTWZQhXxVtEvKEGK1wQfo07Ib7p4e07qFOeoe6AWrq2YXeyjTJQ79LO%2BqQuXzPpdeu4KNVsFawXTeVcFWH%2Fkb6SGnudc5v9L3hvQrynNvGlTmbRudbRu%2BkwgN56ifH0aa8g2e54doKJTsCVq7x7dkYbirPWWhyYySfSO0DwvO9zypuXBNnem1u94bgvNZLl3udTBVt6qia5vVSR8jbTV6qKCyan5oqu2IZYzHVSZdd3aUNNhf7wngq7guyHfrltf2w4HzzsHrklhtoVhCEFwWpEfr2AttjFXu2lxs5aXtsjCv2Ln5qiQdP8ee7l6UDnU62LtecHlH2%2BBD0rJDrmBQbJ0cdtR4kku3Rc12e1FeaXJfucj93mqsz51v%2BzHSTegvgWS%2BVyPrMQ2NzPPcRcqC9Dr70tapSKu897ve7QH1yOQzcTaFqO52Kq92LPKx96a2NTX4QUEByVzGKtgF3%2Fuiwne9zVUGD5LD9S7WOb%2FJrrTOnvUK5egid32ua5aPtg3qOy07hfKzCh6lx193IaRdz77drXJ8oa7J8sXjgob4vOlz8VUaCnu%2B%2B7Lhojv5BnlRz%2FGHXBDfJCCc7so%2F2Xem55c1rPOrpGePZfxW0IFWtW6u09G6KgnOs39%2F2GNw%2FnUl4%2FS45sn3C3dNwr0u%2B7%2BrFveYSUH5qtsR86HGdZp2FMS2DY4nEQKq84KgqO51eb2nkXhRUEbzdc%2FXXReqBgwFO5rchHz3eGB19RDrkqoB%2FuqA1cZlyM%2FnBXknm4HzPNIztq9zgV7Wnszn0WXV4C%2B7h2bHlnw%2Fo3IzE%2BImqTYS3%2BQaL1rWF1nea7Ig79We%2B0u%2BLr4JddMsF3PUuZ75hfuuQtnpPGPWGekO5ehJQX54WZAHmtxXHlXoIBKgt7jZZs%2Fbfsy9f9NjWvWZ7zo9pVXeOy0I%2BHpXMtrSpMH9vOrn5yqs82T%2F1i2XZYFOhMXK8tN5b0q%2BaxEhjWJUXKsa13JZ40ad%2FflNKDuHaFC3bTgX7XU5qfkZqxqfvx2gnCX7twhbtFzR%2B7zg%2Bv6r4jldNQnOS6bIvywJDhs3%2FIO9z9dn9Wj6uZchXya5Bl%2FVXu06AVZR4%2BpjLk2yfHpvCJ2roTM6SYpX187%2BLZte2rSj5nxffqwSoMfMDw1NW94f2gZlkyplu4J9jcR8wHsTGtc3ucAoS495hePOT0duM5o2iVBXL2vknd86qkvO%2B8xLEeqLLD%2FcS4r3dT4LHUePQnurzbG9zAVPk%2BSvgyDrpHxLtbJjfxY6tV6UdE7F6mBoO5t0WpCu0wbXarmnbF7kOq9WBZ1%2Ble%2FLoe14kWu%2FzA%2BYPb%2B7Txe0Z7NrcycpHsBblsQgtWZQlawhNJTdBToVY4p7pZttKPgPk%2BJFsZ41CFpbBUXhoucXKhjKRZ9E%2Bpxljc%2Bfbr12Bedfr%2BOeiqJOA7wo%2BM1PSb7aUWFu56ezSFNJOw0wapaPaZWV3UumcbXdIq3tVMEmfqsZoGzy7L7vznpy77U8tibntw43qUWD4LxozYddHQxtO6wmez5vu54sWzvhvMH3%2FFrjvfmZWOuhBOfbQXpJWd40DrMRpus6U1gjrgi%2FjJ0f2gbHLaerNnkuPlZaruo22Es6SarOgsh3XL%2BKuJZGE%2F%2Bs8fnLjuqSsxp1SRcBfpQgPX39kpSPrG6e7561%2BY6CTqDttHvepAMgBN%2F3StJt08HQ9tn0n1pe4793Wda3OiS%2BqytDutee5l62NsCBs2ZRe%2Bt97pV1zsxKgvOy%2B3KlumFXu%2FTAs1yOOkCvvF1OqACKGphPK1Q%2BsYOiaD2n2bSzUAk1eT3r6Oa5q%2BEyaVhBZYHGzxU6Mtqk7XcrVe8pjDcNGzsxK65ljbz4YUf5WCXFo%2BWzBuVjUTMPt2r4RtyHfhHx8zeNkp%2FrbBlTo6FQxeZG%2B7nB4j8vkmozSZKWDf%2ByhsNqT8OsqMFXpTFWZ4HFu3vK2lly%2BC0WqzRcs3rp5x2N7llSbx2WzoPKNvnhgEF%2F3cZdlfNqeo2XdRvsJfesvfk3dDw%2FyTVSnzVsr3RaVw%2B4LukiwI9ZZ2T3qF9K0nXzyFub1bzLZny02lY43JN%2BCe3DdUle%2BNgi3w1h4GBfvsrfa1%2B3vC%2Fntxd%2B3sPjW3ca%2Ft7LZHened37yjRWrHZsYkxxr%2FV8SJiKWfTsStbTttyRCSsHOhXfO6mZSfalQdOb%2FocKN50mI3Drmo3eSe5mtQ4V%2BjKp32PVaDGjooXhkv3P63xI%2FjqddHqAclPn%2FGotaLQ17S9%2FI74O0%2F4WHTWm2zZ8i3pQmwTFy4qfvw7nmK9%2F5qGRtexgD%2Fai79q%2B9n9P%2Fnw8pGy64p0q0%2BxDg3yWO9996XmTq1crl4UmC%2FHsWlskNNiq5rVVjfdehY6L89y9YzG0XvXQQMnWl3gVyvO0ID9VXYdlWnCtXzU4pmVX%2BaFhGar7mTEaa38vKMevI1%2F%2BfCP87XY6Zm2d7bTIOvn3dHy3XmxyT10fra5umHeuku9nx8SuS6q2hfqsM76OPIa1Bl4UnF%2FWWZ80eVQrtC0WBW2sywjHndVfz8I6G0%2BT8nU4mizi2fYa5%2BucywafUSeIXOfO8SZXfi%2F21L357YX%2F0g4%2B0CzRojbXvvT5ek%2FaVdYb1g2VB4EF6BFuuOHZlZ9yhXgz9e%2BXksZKnZ7SKkFRvtC36Tm92%2BJ3FxUKxiJysHFWcHOc5ILCsxbfW3uxspKF4aosqJQ%2FvibP3nZ5fpMG5WMeFuzJ3%2BQ25WPVQSXWNsD%2FruEcOc9OCxrVWcfV5%2BT79Sa62okhfy1f71iHYbNoyuPk%2B0WQPlR4lqxoi8EqnTvrre87q9DwL6vHq167ewXXICuD1zsakZPccS9qBhPZ537MlcfrpPpaDYdudK%2B2Gt35RX%2FOKwQhReX71w46oGLkh33aruAe47n4%2FLm97SAtL3IN9kVBwH6eC%2BhvSuqS%2FDoUL1se73nH7YvaeWfrWewu65Iq9ct6IHXGTQimixbeqruQ3q77%2BuuYjweFui7ruH2dfL9CfJOFb4uuceUAv2QRwHnMaxXq9bNcQP6XNKnZIffdAsk9PcI13VGOP2zlp2WNa9LkvnKenKi%2FtcyYbVbAvCoIbCahsVIlKFrFDIoiN9zrWFbIkJ3ugZ7d1Aq24kgKbgyNg7UKv5OfzruoElgU7AFd9P1dV1zLOmld8UZXd6%2FYtg3qtgF%2B24Z37c8PN61XBY2XveUxS8OsJ3rXq01jMDxXmDWgfi7IH0%2F3HNt3C8Ml1Vd%2BzR%2FT3SZ1QtWGargG95LitUWeFJxbnZVhC%2FdSDo2B%2FIjftMpaJn03ukvyw3mFYz%2F0YlZdbfPZ9jwmEToOOn3uuGCbqaL7WKVp7gV7nm%2FWtGij6%2B36GqVvg7pkGuE6tg3wu6wvNveQovUsnjZclyJG%2Baly7Nnn%2FlJU19VpV0a4xoeoN0tny%2BxI5wcl5ztLvt%2Bl4eB5smStkHtbr2fhNa85I6L3NR%2BOSdsR9MaZv0GPaeOteSpm8J9aVEY%2FV8z0z3KV03fbupU1SiMWvF0FJLvxX%2BcavdOaW6RNSm68%2ByrhWUGD%2B18NT7Oz7dbqnF%2BdYKTEZhua%2FMru1%2BH%2FYjaoY29lEvumMikp%2F1ngmh%2BlzsrYvml7F8n3jxHk0%2B8fbRsKoZ7Lj%2FhOyspVycJw2bn%2F3nBrlYuk2vTVxgvxhJH7q4L0fBEey7ipcB3rXPOvsyTCCv7TXKP1ps%2Bt1mrc9%2FI7mmR5%2BNmAGjZtF2bq6jxa%2FX6kfbPrNtg%2FlJSZ1VYeyDoMzwuOJd9xfVlx4aVdutrfvizv%2FNZRXXLWMi8cRbAQRtPXyfeDV1Xuc73VIztWqH8SVnev0kaZtDzeSct2UdV77L62Tzaj4Enudy4L6qbvVtbvKdt11Z7reiBnVNouEteqsFftMa0TtLYIiiYHSO%2F8Xn5v6zRKOyp4q63rMU%2Faj6I3KdgvIp%2FjdCAVV6uGUMjjlwV5OFuU8EXkRmfsrUxWHV%2FT1VYaNRlF3%2Ff%2Fy1gNhXAtlnvSe%2BM6qffs1978WnGk5bxlXs3qjqKRvetcndxmD%2FT8e4vKxpuWKwYfJEgvaHiV7kBxoKAyan6oWidGmK66Gsh57Wqwl80EW%2BxqH4SR%2BPw2SzcR2i9d19VDrEu6CP4OWWdkeWW%2BJ58dovw0qeseVigjVa%2FRh5bX%2BEPM8wt1dn7m57qkDbDK1ffnBe3g%2FMr6fT1y0VVHTpMym%2F%2FuO8mJaBugt14Bs2S64tfMujVVrE7QWjUoWhwwqNsU5EkuALrpoQGx7%2FPzN8ZpzUUpahXsgum8URqBHS6kUadxM217LXfsfPBka2X3tvsCtwoAOlxQqurnvywI1PZ1%2Buyb%2Br2KfKNf7amnivY97Spg6KSxGqZj3hSc53bQ3GaBxd8K8sDzgvN4mgxcaHCvKnba9LFXc%2FTgpcr2pzXvLYsI5xW1AVy1wR68LSunJWuyXEY4vkmXdXWsxn0HdUmV4%2Fww8Grj1b57yAHKT5O6blXwXZOKv36nZV5qu8r%2FPlWmt5el96NcvTHbrhs7XEuniq5GupvcV36reJ8UoO%2FJ%2FMuGBXieFD9jeV2wSvC%2B76naCFgV3Ly63K6naNGndYWC8c9DFrySUfTrLgp2yXTel6HRXfe12lNxxlLnWe0oldyOvWLLykfdm1DsbUxi3%2Fh3fn7JKPrFnk6a13vy0%2Bs9DYW6DfuzCr%2BfL2c3DcvComZnxHc3zhYjtJfJ7rVF6swq2fve0IjJn%2B%2BTjuvyWFYV81SnQWXH%2BSHmecR4Ln7ScVBWucEe6vXtc9ie7fI0%2BX6bpVUH16CLIO2s47rkTcm51P2eOz2UqzaBbtsyeN7j%2BS4j5dfVgX9%2Fn6qzZYrqgumOe%2F9lz9mtq07hJveV7%2BqAA65k36sfYyZ2mwKf7QEZbk4XuYr%2BuqBQ%2FbNGUPTPku9b5Z4ByzzeU8AaKRglXifliz51fQOtclPLP4ueFYhZxdUv6wRrRQvDXTVM4yQX7Fd99jZqsNggrauWj%2ByZ26xBMcv9Vxb45K%2FLry3zRNsAf91xmhcdX9mz6IuS9Jx3UG4a%2F35Yn2L7Pdnzlg8bloWL3M1%2F37Yu04j5NHvuMDvuj0nB2iJJuxkoZe%2FNvi%2B%2Flsl12HptyI3uqs%2FQdh1U7ssPsRq1bc8jxp7VXY%2Bo1Wmwb%2B4f279zsbV693Zd8CzS8U27PP8D1SXTUJe0DSK6fhY%2FdrmctPyIrtaViHUP7yJQzAeEi4jX47zgnr3akZ9vcuvInIdrOst9zssBrKMSfYp7i7qh6Jo9TQ40A6RPbUfQY2f%2Boh7T86TaIgxNAtz8zXMae%2BQlZMr86PmuZ0s6vYEmFWYYtHwWvVKwVrIwXJtew%2Fy1nES4obUNRqNey7Bw4rKgkfGk5fdMWt64u77x752JUDKKPo3Y09q4oRDyYWldGf7%2Fce7X2nQuLUqC9qrXf90yn2b5r2jLs1nJeys1RsveW%2FZMd%2FLnSNsQG9tnNfJU10HlvvwQ6%2FvankeMGXtdnVvtBnuQH1V7kHQwtX1L13sK91mXtF03ZdABerJ726tDBLsHvX%2B2XTA5wiK9%2Bzza0wat0k59nLv3Z%2Fn9%2BQDyWhdrnjSqG8I17zxWG1WA3kUv%2B9aCEvsu3CpSUPSq4N%2BuYwV2IY3yjcRF2bMlXT8fVnOF9ecFAe8sYsHON0JetjnX8D3fLabWQaO60vl1eC3vVShrbRu%2BdX%2B%2F73UT%2FshDBXngaYTr3nZnhad7btKNthjcU48u91zjXTfO1iO0O9ZOqNrAnNRpjIb0KrqJP%2Bk40M5GPN83%2BNV83bTckac6CyoPlR%2BK7g1JP9NVJ7l8s4iYbjEa7NNcG2be8R7ly6HnnQh1Sdu2UOw648X2Iq8t8teHQ5afsP3o54bt4LPc%2FXPZoL6IOmutgw6TtxV%2BJ%2F%2BeJ7nzvOp71lfMWTAR64ayWO088rkPaoHZNiPobW%2B2ZZXxKinuMd0b6NRdrCr837zgvN60DdJDw%2FB9vmJKile0bNQojVBAFjvSZp7UHEWvWrDDdN78lP8YvYaLGkFJ142bTq5llU6sBg26tg3frgOISp%2Ff4Sh644ZC6NSald1sShaGizFi9nZPQLjtThfXb8faIlW%2Bp8kUu6JV3V%2FEvolvN7STbx2wtfJYydobr3sKKg%2BWH5Jm25%2FuSoe6i2F2PaJWu8Fe0pm2fXyxH9Pqeputux3WJfOGdUkfba3CToH09TEEZRd1goFQv%2BTz1%2FxQ5Se02bL2bNWBmr%2FUwbm%2F3zQsT23XxlnGvJb5NmzF%2BmzXud%2B06ZjvsL0Vq55sfF8JaVu0aOT7WPf3MCL%2FcSwBemcrYO7pMV3UOKYqBeaqIANmn%2FOxScM%2BVMLvCyqlr1vK7ekdG8KzvIWBxKbg7qmc9xbssum8kXoN6wQlnQWKXTeEdux80PR72gYArRrOkT%2B%2FKCBsO4reqKEQGjX5xV8WufTN%2F%2F%2FLSDMtFgVl9%2FzQHSxhTYmy%2FBR1gcUdW%2FpcR86Pm2u7PTp%2FXaXBHd7zPvl%2BR495T0HlQfJD2%2FOINGNvMsAG%2B67OmaijaQfaru%2Bsw7rksmFdUqVOXx2gXG3vBz5JKm4vG8pOfibmvM59ok35CYNN2%2FfQyp2eJWsFVB2MabtgcttV%2Fnepu9bE9j2qqMx10RkXq%2F7%2F0NHn1i1zRR3wmyC98Uy5rVlwb5KBbbXYZpG4TlfAzHpM00TLemNnNb6ndiMgLERyr6DnZHPhsxvCq309W6H35UHB8W4H58uaFdK6QSfBrulDdRu981Ax5xfemrco2PnpvMsGC3ZVDUq%2BXpeIvZL58%2Fs1ZoDRoHxMCoLPVc3K6bzl708j5NlNPlhX%2BPxlhfI8z5XDryOcLUYe917LrefMs9fdcAMvWrn9Mhfk5QO155HyxyL9%2FHXuGKYl6dd2ZHOfh7nGaZVr2Wj0I5z3y1zwnC3G86LpApRl%2BbWgbsg6dS%2FL0i%2Fk5euCeuSqzvT2JuWr5jXtYuSpbXAcI%2FA7j1FXlaRlowZ72X0r%2BdaRN49cDs9j5KVk9%2BMYfdUldb%2Bn62fxy67z9n1pFjpNroqC7fB%2FWT2WX%2Fy0yX2iTXC0KGkbX5Xl0a21l74Lzmt0LExaXuOzCu2JfcrWkWjzuMHrgnR51fWe9DV0teZJq7phK1bLz0w%2BC51Gj0O5uNnXsRnywYNQb08i3%2BsGEaC3veFWuSCXoeE7bRgU%2FVrxe5ZZw6ogeNw0aqehsbvMFcS%2Fh0w33dOQu6zYU50vtLOSgH9fZXovRsMrFIhXuSBw14ruOwt2yXTeq4j5pWhl%2FrtJvJX561Rc5wcoH8%2FS8%2F0pl0faPqe1avn7mxHCun5OijvUJgVB7j7PC8pNm1U%2F88fQ5BnCTSfdaiugf1ojUGvaINwub9kN6eWeDpp1B%2Fl0HerX%2FI21Tvmpky%2BfF9x4s63X3sYKGMKKvMvccU5Cw3UV0n7T6L8T3jcp%2BKj5nkDsvODvTcrXD1XeFGG9ha7qw%2FzvZ%2Ffkf%2B35nZe5Tpk7BUF13VlW2XH%2FErPBHtof%2BftWF6Npk4K%2FN8lL%2F6iadw5Yl7Tdsm%2BRdK%2FovvQ1D4a6JDuGf261NcralZcNgrlJy%2Fx5kxTssJT%2B%2B9NcXfdTOO6iuu6m5m4E05Ztk%2Fzvv2h4zZ7l8vmkIP%2B06ZBbRtylIYbos2CKZlxUqL%2BzvPdDQV4sCtI3efw65MtFOO7fcvHhZE%2B89s8BXYeoU9y76nl4mPvsZRfHFBpJuxbgOgsX9unW68mei%2F08qTZyXnb8TdR5LrpKwStaeOtFyXTOfQX7uqBxGvvGeFNwA%2Byj4ur6Wb%2Fthtz2Nf%2FtwOV4EqtzJVbDomRtiWmDZ%2Bdilcssj%2F%2BSqweuC27S88h540NBGpztSd9O6vFw7g8L%2Fq1SWaszFbdkVffMm8iLwFzu6FSabd0nLnYE5%2FvWG7jT8T1hXx0XKz%2B0nVHUJB1%2B23NuTawKGpptG%2Bz59z%2FvaJulGHX1usZsj6HUJVXq9M4fHQn3pcsdx%2FNkq84oald%2BfYSn4YzAtqOilyXXM1%2FXzcrquqTG2ip115MqKZMxLCsE%2FrW28wx5dZVrwx28zVW1bERqozepexc70u%2BXZHen2jSXLzd5c7qnbp8nA9IoQC%2FI%2FOuuVh7camytK1QskzaV0NaFf96yws4u8s9Zr1jNdInRgPitavpUuamVLLxVtLXXzoLd5XTePUFJzO3W6lRcXT%2Frt3197m3l17rf0%2FY5rRgBxKLG51ct00V5q%2Faz6EXPbVZtyIZ6IOugu7fduCjYp7zJTbpuo7%2BscXGwrXdCebna9z0xVpEN3%2FW8oExeRzyfZSh7dY9vFRraVRqsnQSVexo2XeSHtsFbk3RY7jm3Jn6tkmYN2kNvt67Vy46KYIxFUzsZIOmqLqlapx9q3%2BnQCXvZoH2Zne8vLR7XazUqutXOqBusfX22OqvrapaJtjMcYrX5itLpQUnZbXJvfhlhUd9oOpwFM42U9n901mTtqlCWVi2P7Sbcj38e0GMGX%2F3YorAvDlERbyrPMK3pzZ6KdLV9sZpUuqESeRaeY9w8V35RoRJahIJ606SzIhSMRYTkWlT8%2FDoZ8WXBzf1OQafNvkBr%2B%2F%2FfdlQYFgXHcd62EBec37rGtVx1XD6211Go%2B12r3LEuWv5%2BjE6VXZ9f9Vnk7HGH5%2Fl8m12bmvXCpML5fcgd73LPd9zNfeaHLlbmDmlwk3z%2FvNau9P2147z6Mj2mO3saGesY95fwCMid%2FPlnZTlW3bPp1A2zMx4nu2db3IR6bx6jTm8Q%2FDUpzzHzQ9s6sUndFDMdyz4jX0e8bhJwhsfoLhsOdlQ5txjttLc95Z2mdUmVOv2gjfKwfswi1BcXO45%2Fs%2F%2Fz6wj3h7%2FUqU0%2BbxOkh7ru0Z6gaxHKwU3D%2FNw2xjiLUd5L7uP5z27SaZK1GbJ0bDJItUq6jb%2B6%2BOwm7cQqsyWze%2Bl8aw2waYX6YPM4Sfb5i763tdvlh%2BSIRF7wq0mAVnThl0O%2BwJyOPssH1Myr0wNsF9bHeZ0VBOnrQ43Qof5Wlxzd8Re1LVdDG80rS3t1nXvgEeTLoylTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH7AdJAAAAx%2Blfyb%2Bdpz%2Bm6eun9HWe%2B%2B9V%2Bvotfd38kPzvpdQCGO%2FN4F%2B510yqnNT1nxTkgamUqZ2On3Np%2BOxE8krj%2FJL%2B3pvc53wued%2BL3Ps%2BynFf0%2BWs4FpcDPh4pyX5p%2BrrY%2Fq6Vj8x0rL8rOA%2BsuuVvfeJ1INh%2B1ES0KTBVPDPemVPy7k8UFg28gH24ofkfy%2FKGlfpj8kJpGFZYPQoS58IeW%2FZ8n3K7rDTZhrhfLPXLC1zWX57mJbJtWxAGHX%2BS%2BdUmjeeHcmxZ0H20%2FR1VvNXs3tO1nn5ID3XeyO6lrPc%2FXSVnt9cLgdO6ab2JN8rK1VOLxCtMop5YmlSa1ZBycjg2QjT5cWO0ZxJzc8qGv19VvLe%2FPuMGhWX3d8HfrxvWo6g%2F8tMCiqWhY9HctzXkcrCixFdy9HPRuO0%2FE0S0MCd3N8XkuTk3M393ehk%2FZHJfPC%2BGunI3vmO%2F5tF%2BKxFQWOt0vvU30eRLvlysg7HXPbaVxedeySLY72PZcF5Sb15k74u09cv6X3kh%2ByV%2Fvkf6eth%2BpqXfNyTup2kA02TU5mNxgkxxZ0mPiTfFhxREZ6utyEfCH7Kg8flnoD7VDo5pjv%2BL5vm%2FqzNZ5U8QpCl%2B%2FPc%2B9RTf5bdX4%2Bh7IbgIT%2BrJHts5GGF383KYzYFuOj5%2Bgc7ghZOx7SgbTPkQPSiIDjP6rqHRfVguP9kgftN%2BrvZuV2XpMGxlwUdsgBAYePpfW6K3fWe9%2F9%2BAgvEnVeYZjlrkcamK4%2B7TF1UfaRhx2cUTQd%2BL3VPPm8V1U3nAz%2Fmz22OuaQsPBvBtfTIHaNjijtAHPmG0q87GhSTpGBkcIRpMq3wnkct0tio%2BLjdLfi3uuXkuWSkQl0y6Fk2YfR8kvvnec1jfjvSa3nHfYGxMcWdujeJSe4msc7fIMLzQOe5G98i9xnTgptN6R6dYbGtfGN%2FlXyb7rjac8znuWBotf07JZ%2B983jqnO%2FWzfV86%2F%2Bf7fnMsmOqes75311XvZEXnc92mhWkZ1EeyOeTfB7Y7NmaD1KzaeE3DfPm3utY5VrV%2FL6Ns4Jzyb9nO99NCxqHXadPWblbhzRaHaDhtAoB1mw7iM%2FOd1%2F%2BLOnU%2BLVi%2Fl1Web4%2FfMfFvnQvKF%2FLqusH5OuC7cCzSl7cV7YKviMrny%2Brlt0d33melK8nsGhajhoEUbW%2BJ8vX6fHHqkv21sFN07jK7%2B%2B7%2F%2B6oN%2BY7jrcoP65CnbBuUM%2BchWM4L6hnFjXyW9T7R8FnfveIUb5c78pre%2FJIF%2BXhboSAe9007zW4J37X1ir4rqJruAmwF2X5r%2BA4v8truWNZV7y%2FtLo%2FNiyfpZ%2B%2FoyztTB%2FgNAP0%2FBTTNwXvKVwlOKxa%2FX7PdNfr3GfNKuzx%2BWLPMX83lXhr%2F9DfK%2BwZer7n80tXRQ4r3v9eZXplWAX8usIx%2FSuk43mNc35f4xpf75pGF%2FYV3pn%2BBSt3f940Bitcz9%2Br7stc4zq%2BCe%2BNsgPBjr29d70udqTPx630%2Bdg2T%2BYbTRXK3d481TCdPhZch%2Bm%2Bcl8WSFSZ3lny%2BZM9nz2rmu51V%2BuvWbY%2F78v7u6ZzlpSF9zvq7%2BsI6bJdbp9Fzj%2BtV2Avmcp8XZJv6qyO%2FaZo14WiXQtq1iulj74UHN%2F7GvXGiwb15rOa9cybGPVMwXl%2BrHH%2F%2BFxUHvfsJlH4OS3v0b%2FH3DmipA6fNigL73Ov2Y7v%2BFjz%2Bu98fKnBvu0vSsrY51ir1ce8P5a1jyu2Y2c1y%2BfvFrsEdga7Be95U1CxzepUpqGC%2Bti2Ai5pnD1pUMFf7EiTNyXB4PuqjZ6CRnfV16zqzbzFTfZ6T6N5VuH7rxtsDbPvZnhe8zq%2BKWvgNigHFw2u1VnE9Pl935ZsIQ%2FW3aLq91hB%2Bq4t0UrK9r7zqRT41HkecU85LW101zn2kk66Ng3K9yX1zcd99U2N%2BuO8Zv0b%2FZnWqoF1hc95UiFweNF0y7b8tS%2F5vknDztHPuXrjY8G9sk69MWtwbZ9UKOcvYt27Ip3n7%2Fk0r1nOywYLfu9rK7OS438SuX33rEXn0s7gvsH9uuxzztp0jnd5fywZDKqTby9COv0eo20KnE5wXmnkqKBy%2BdigEqzdONwxAlT0%2Bf9qcExnJd%2FxuaAx8bHiSOpZg4ZDlVHE64YB%2Bvtd510SwJ9XGPlqcmO%2B3jOy96%2BG17F146ntaEykPPkiYudFaVDQor6YltUXJdfvWc28%2Bb5qh1nkNPq9yihTKNtt9iue1mgEftz3OVUXxarQQPxcId1i5J8n%2F2qxoOCe0bbJrrqyoIO5cgC7K983uL%2FOIterHxvUNfs6uD62qIsnJZ8bo37c17FcuWOixf0m2uJzJfkw6ihqyXlO2tT1FeuUyp1%2BDTvHJ13fH0vK78cDlE8LXoIA%2FfvKu2Il9ZcpkKEyP6s4Je5zaKhNt24E11UbtHsCqT%2BOZ6uxcVFz5HvSoNE0qdC4uS64wV1XraBLRuT3jUhPKzQ%2Bn5RN59%2FzOflzuwhpN9kx%2FetjjePcnqkx2UqzfdPELlqUhWdbr6Jz3P7%2FWcX0%2BX1z7Sukz%2FsdgefvJcd0XnAen7sYmdk3GlNwjJ%2F3fF7VWTNVZvmclZz3pr453yrf%2B6Z5X1ccBdzk0YuC6%2FWmYrmeNAhezsoC3hrHfV0SzJdNOZ5GyD%2FXbQOdkiD%2FzZ7%2F%2Fxiu%2BVlB2r%2BpeF%2BoXZ72dUDtqTf%2BuE9u3VvfV%2Bh4mFW5H9cMzovqmbIp%2BC86vH%2B8z1277fr4fUlbYPs12XE8v2%2B%2Fp8J5PuuiPs1d%2Fxfh%2B89afMd5w86lz2V14o66tiif7K0Lw%2FXYvk6fC%2FL1X65li%2FvjRdX7455OnM%2B5slblkZT3WzNedrZNRScgQH%2BxL4Da0bv5ZscI9McGI6hvKgbo73fc5M9qNg4%2F1zjfwkC7wnd83NVjveMmMKlwXNOaDcTPFdL9fcVG8c5zK%2BvYKWkU%2Fl5zuuSu3vtJhHJR65nniOnzvmLguW9a3qTNmgU1yujHCp1nFzUajhcV06lqvXC9o476%2F9k79%2BPGcSQOc6%2Fu%2F%2BVGMHQE5kRgOgJrIxg5AssRmI5AngikiUB2BJIjEBWBtBFIG8CVT%2FBBtxy4AXQ3IL%2Fm91WpXDsrUkCj0Q88Q4NpI2bfHgnlRfXrYUZ7M2fal2Gk3IMjJejLlEA00M%2FqgC2ZKZKRVvMdhg2pmfWZeGb0ysBg8ShV7sT3tqF295Rnnck%2B1pKZRe4qG893Y%2Fa0PMYsp3C1wlKbsCvs1jCy6k5jU9h9XxgLHM0%2FBiaDWoGecOqwRoIOAIgFtRPmKO9MMTKseaZkGG%2F2PkYqqROMaq8jRn%2FA2c8oSOwHjIBlmBpkM4PTiWc0OLbHeMkYAJpplr16nOc2U78YSd4bGJgphf1vzgwmK0Yd2txOn%2Bg%2FE82gQyDIq5h6XDLexTmkruEsX%2FWUgaOj0cGFQBDIOcySc7jjMpNcykTdKT19pGF8QodQtdzEQiDHVjOQGenbY6btmwjfyxksaBV%2Bj3V2hafvlYx6zhTtMk8ZZAnEEGNFWSaZfI12S9ycWhWi1e9IwjuKtOda4a%2B3goGZOtdgi7BPzBWDGzmeWRYAgF8%2BQdccDsY5zGqsODCqVS61lpxKOmEE43NlsrXWBIeBBKBltFcrKM%2BcGTQPGA6eG%2FgGbwjwtOeYKbNGE%2FQx3y0NxpfKJFojn0Yrn0SZVMyZ5hkz8Z4wAzbOKp%2B1ds89c5XHWhucxxKHBHvD7bvuCc8No8ytNABPGAxJ%2BUyIcvfrOlbqdcOQyVKQtG6ZJ1evFTZjrfB7c03fFuhhk6N%2Fcm8okN7CoJkNJwaNqiIjNgaYKfrAljFAMxEMdLSMFRGamLB25FczB8efhDYlm39U6slSGp9yblICAPxaybn2cLA2l2ONBPYzjvGWLL30zI43kfpuGTNZw5Q9v562aLWzBJlnJ8uE4G0bSU4mCYMa1RFPm14LZxy0gwwx%2Bcy0yyqpcmUIIDmJDOvKNeq6No0t0Sy3jLx%2FrulLgve3DHtTKW1GlUH3B5pl4krbm%2FJpM5Sp4t4%2BQOm%2FwH6MmHZjqLAZmtnfccQOr4VyDB0mVmr7J9fvcPxYbFCOOkvijeKy0tqcmfBwsaWg74UOwdwqtxOtuTP6GQcTjuYfEw6GzNGnRwX4lPwbIgBMXiSdvxX%2F6dxRT%2BK5BePdriFbZXrm1Pnvbl%2FmRaIcukh9v7tyIbhw%2Fnu3%2F0wFZdgIvtcPws8837tx%2Fvt2X4cNQwc2%2B%2B%2FtYnqy554T%2FO7%2FlD7dsY7cdV73xO%2F7qJS6GXXcxLs7ST%2Fa8yOTfKgZUW5i8uUV7MWC%2Brd9GV09NQH0tdO2NdNGxOzCBaHDkr4Xa%2BsLog%2BaQFQtt34Q6LE3HHvgPrtjPuf%2BfmnLeGr%2FUv1qlUF%2FTjPp4b21Z52wrpWtm6nz77aulPw3HhvUUe90ZW6D68rxUXeM9ovaVY%2FNeFDooNuerp3Z5Rrs1NQz4Is7Zv02ET%2ByIfTclNMkZTv7O4%2F270Lgk5KxvzU9xA9WDo21Q6EE8fkA1f3zrccv3jBs0o2jX%2Fee%2BGrjsaNm8NQk2J39zZWVn8Qu1Zw2fwX%2FyPJ3DHveMfS8lDwDkKCDz88pI7nJZaRizwSTlYCz%2F5EqhEjSYLhjvGaQkGj6kk3KqT1GnDQVIO4CdThjOAZtItBEdIeqx0Nic%2BZwbFL9peTTKX%2BnC%2BjU%2F4PIN7IXZwKZfN9%2F%2BrN0h8GYO4mNiA0QeoK0e2G9KmHyUhUvB8C0Oqq1N1z77cpyYNuRCgpDLI4wwLNj9lfznb8lyVJPLy5se9WpdTU2jxiUqfp22v6uqxvXmZJKn77EEoAm0ocaQhdqocwKom1T6imNPc6E%2BmraxLcqpHTtrE04Tawxfc1k3da5s21819Prsaf%2FXu0%2FLXNwqe77KRuDjZw29OnurS1HGWi7uvfujbXLwcFHW7%2BaiHk4MVdu%2F3iqsIG1IhYQx9gACTr4%2FHAModTx%2BQyO2Ei5TsUzsyk1ZLGE9MX%2FjzlkTwD0mJgk%2BAKv4Oy2L0AM1IGjA6dKmZ8KZW30RJJcNcrAT6q%2FsfeeMtqN9ZzzO6eZ%2B3uqbBpBPafFy9mYq17yyU00mogtqVP6HmMA4BiDIaE2lszWNZGBhX4dxoKEa1PIVpBw5FxRtntf1z9zCtbav3HxcmWOpK6rSPLeOPrXt4cjR%2BengqSyO4JtovTEHWDNruNOHz1T6pIk9mgEbfjsZ%2Fa68tXqSsOUu%2Fnc7J87l67eyCjX59n1fRmMn5wT%2BlC6iffhObsyoHQGIvq4cYM3mbaDVSeCvnZI%2Fs0WxcvACifJANSx%2FSN3oCC1T2vjB%2FAB%2BRdEAJiBDGcpEWu5UYaEjpMYaxJ%2FaX3qHAMSBX%2FJuq%2F%2BvpFX999cJ%2BsGiJ3PGXpWLXCSpNWRZC1ty4vEwZpcTrZRJohS%2BaTSJdgLqiyrSCDpDrZUvYT3jJloxGxJk1jPWPKSuw3c8ql0h7viyO41nnvqsbPPGPtgZsTO958%2FiperkroMA18i%2FUnQ0XUgYTgsuzV1vdx%2Fvto6S%2FTH%2FX9fnDa5cuR7LZCJJgHg2LxTbh0ysclQT7Z%2FEC6F%2Fyl22H9M%2B5%2FYduLI0vS5ecpZD8Rhc2IbY%2FvjdaCMHN1t%2BmVy%2Bo1pw7tYGfafS2szLq2959iJSWCvf8wev4p%2FFMTHOfq0JuYEHxTMoANtwMRJ0FeKd3eZnmlSkmDrFMqIAdXUtyScl9TIDphGekMF63ZEu3QCxCISIDaxcgu2HmgSV2rJK7ctK2VbafrGSpgodUr5xMo%2FtQHRe7YXfb4TydKV1R9uUBKzC78TOiyxC1eR91N9%2B7dMCaX0rANRe9i9mCOij5kE9d4np%2F1z2hlPaXmzBaI2yZkT7WUGH7xniFAHOEVs91%2BBerkrRr77BjYS9p1KbQYnaXB1cGET11ztUmbS8RVXtyT%2B1%2FaDu%2BKf7TexPd%2BH7Tptgp66Oiq26%2FasD1aM0Gv3xmM7JavuqMGCafHPnvnKkR81YHBT0FuRUmaTc%2FpHzVYSrT3X9GnwQcEMOtAkBzvisJtGGlQJ9xBJjdRZSoJOBOM%2FzfJp6pspiBkWzIN%2FPEH1wSlIlldynaFqdoI5q5Fy2uuNplzMxF8yIKFKPJiHLzaR5OA1obYjdJHArSPqNLB1r5TB94ohf25bN0Q5YrYq5%2FLDOuH9waXOVo9viHefmAPLIoMYxwgYz44sS3dPrpGFWYp8GdFT6WqvjrK9Vt5Dpz1aSdszznbRJA1Vkb4tLKuOc5JnoS%2FOukTYzqzf9WbXO6Y%2BcygZgz4SX1XE4rhAvFT3ZN04AzT3CfJ7PqTTbl85KejDcmvlYNJr%2BceGsK8bqa4XuvMhsMT9E4MZdMCBE5hEk%2FhMRoqb5NSR8oV%2BY0B83z3ITVNfr%2BFlBiKHPZOuM5gGHls4ZS2JgPwwUyZpK04gwl3u2kgTOm7CbvVlqAn8NOUuZCe4bzLKZ%2BME178L9K912s6023XGQJsr6x9EXSccGTOD9B3VpxjnRpSeciyEcogFXzdOG58nBoG%2BfumWmxrA%2BpMhl4FCJpp%2B1eU6bKs349nnO9MeDCS%2Bipi1rDw6HZvJ0ySVmmQ3ZRCII3tjh78F7Iw2ea4Fvrjh%2FAajP5LJ5v45k2iuI8luCl8y9annmCbwfXJwiau71ma6B%2Btdh%2Fy67eOXxGDoLsNg0jH9o0ZvcyT1u7c63wAgQQfvB9eYsK40U7yXk%2BRGkxXPzGZBHYjCDMapBDbnSHzNDGwnRL1iiTW1N%2F%2BCCFClcn9UJvHaAaDOeX9NXVtEBOPzIyURpA5EEomzI8rHDUAaZvBhnrly9Cr1dHzVPlIz0LQvz41TD26iwbElKyLJMv89ZfS7SpO8xHTUSZKbQBunLCWP2W%2F3%2F0evOvIcMFmkBozaPcICqEGFKaNcbSE7II60W%2FbWjL687xmJc6OwXzlOlaYGEDnXaob0pQq0q6aeUl%2FMtU1NoTsQjxo4XmXW30thnyL7ahG41cb0Y3dwyQ6w9NvvNrLnu2HIhsMiw2DSMf1jo2hvHBAHomCJ%2BzvFzE7sP3P3E%2Fj%2BmPj%2B0BcEUe%2BmlkEJlvFqgnJNEKG67q0XBMccGbU3kXJE2sNsKKN6ZX87VLYJEVx2jDucXWdhRuCHjuO6i%2Fx2w6yHxlFxZUn93piRnJdHDPilAxKNUmc4v%2FNCP2OnivdmOUrnPdMEu9Ukyjt2FeIiIXihgskbX98z%2F25tLpXUUckLVbYrhswmhG7cRnRgxWwPTiBbKQJ%2B6jC5xRH6VO4Eh5qBjK0UGBb6bTKbgA%2BKHQyX0vaNoqycQ%2BVcm1X64gxCXyqn7t9z6DjXrqbapsBhZbH%2BrloC7hm4Ka29kPZVt49zBoYWAX%2B7K%2FhXPB64YMrYLeuDcjAp1M5a%2F7jr%2B8eEc3dy9OnHAgDwJgm6SbifnE8oQX8iPr4EfUh9PzBQ4H63dJN44jsNo45r55mW8czSeWbMlN3hMyHKX1qZbInvzzyBu7i%2Bveep31l6Bkgaos5P9h0V47cGAVk8cYIOM%2BsT0xU76OO%2Bmzu7Ei2TlQNV%2FrmtY2PLMLBtHKrzMFMfpdqwsf2h6bePRz6N8neGTPlsfb8R0PcmUSYt8c5K8HwVabux1pbYfrv1yGnU06HG2pBtoBwzQd9ufQmD1d9gHbX21Wfrmb6j8chvSMg62DZC%2FZlo7Qjz%2FZS8J8L28fpLZn%2BQ%2BLtGIw%2BNzSOeGTH759bnR6w9XsfKk1DPkuvTKD9m26fu9fsyECOF7GnpiTsmR%2BgPz%2FYnJB9bnpFH9uvYhEDkt58YgzI%2BOz6KxBmu%2FVwz%2B%2FHW6lpFnXZ%2FLP%2FIiY%2BZsmly6TkA4PgJ%2BlwQnNYeY1inJv9EgLHUJPE5klyukQoFVU5iN498d0nVQ1NfQdC27JXLFwhvBclvE5KBMkiYaxIBQfkqQZ%2BIfbYpCaMwoPUG4G8sn6Vtw9Z%2BZ3usgQsbOP4k%2F4xBqW9wgh3wRPqeRIdGwvdvrWxa%2B9fXtycce5MgyzlzUMG1RZy%2BN%2BsnOUr9WWrrmjDwfUha%2BnXdMuo7iNmSgP3lJkkjaX%2BS2AzNAGKgf657Oh7yX8Mc9QzUtUzo%2ByVjoHDZq%2BckYnfLRH2tIrq4JVZCriNlr5i%2FPUqMG9aRvtb2Vn5uhTFszB7NX8M%2FEvZkqZk0OUafBgAcL0F%2FEowMk6O9wuS%2FZX53wnB8a42RYiT1LCPlGSXfCoPymcDRrxXtO1EkCiIHy0gkuUn%2BkjE7OVE68ZFAb0vPaoLQIMw4NWFUBCAvAtwE%2BbQC%2BVQKPQ%2FOJGSQyUzxjtCgUpVqS4R9b%2Buxr80R%2BnbLTCqXAllyVhxpyjsK6H%2BZ0e%2FNM%2FvVRlHXeSCxb5UziQOln5jntKmaAUSFHf6pL%2BWqp9QX%2B1YO%2BvqVcjAvW3IuKDf3MxFOJDSJcUOTUNZtxMbOpLb0GP6REx9nSuqTY07w8cAe9PeZnPsMoG%2B%2FlPRamkbwffe7nCvNVHeZM07qdctCXfdGyc7sATN7%2FTgnAZv3met2QqcYJ9%2F9a%2B%2FgvBU8YsplTkH9qjgtnqrHHedAJ89VeJwr1rgy4ex7PMjs%2BTqkIr5H%2BiAr892K%2B34FsfbrMsiHfTCM1YtzYR2NLE9ynGrvudt1pegbi4LeL%2B47RFK0H7HX93aRPvMsm0AZQ%2B%2BX7M807zoPXLVVJ9gbzl7Ha8E7F1Zf7jxttNGeuP4a1wjZduPeUHDwBecBPV5Efm9D6JnkaipXJo85bUbgGY4dltqZr4EzUzT1lNrHaaTMnfP9lmEnKLtxa%2FvzLpPOPssuoS8c7MulsEydNm7o9bXzQn6K%2FUFXFhHfK9lzfuiLXzP7R058nMOeJ8ec4OOBU9zfJ%2BS1V4HEzDizvzgO1s5A3QoCoVsi2XV5cBwqxwBunHdzjPiCeEd08ME6FHMqqXnezFxcWCNZ9t5r3vXADJx%2BKOpLOTAzKjrtlamfDG%2Fsx5T9MeWuURuQuokTN4EoCR3oPDrwoJDJg%2BPUYgHv4SqWa9vWtdNvFk4AoQ38WIGT1amGGghwgqHXko%2Bp%2B7lNdr7ZclG6buRwnyuIDOjKVPmuS6LtNrlsiQ2%2BW%2BJe30PbLXo284xhA933X%2B%2BfM4dgDW1wVfV0pLO6emiDWLD1qLE3Hlu%2F8PSpr3Z286KnM3079GDLunHsysx%2BvzvYqsx%2B777IjBlcsP32W%2FHzadO7fj36Ntf29TPbnpteH%2BLcXVwSus3lh0IebjzA0ZeVI%2FvYFXI7a2fqnhxdO9PX8c0R6qmxj%2BeePr%2Fx9A1jI%2B6sjz4j7GnfT6%2BOYFP7dv1rz67Xhf8w3E2vL95rr38tXh6OybmOlUrST%2ByKkTNb5r4tPPS5TU9%2BHPtt4rkTIgY46EAXGDDL6R9vlf1Tas%2BzxJwAAPBmaJfKgU%2BpC0Ps2wKJOlQe65BB8Evoj%2FggVACEOlbnPEixZ%2Fe23APeAAAAgJhjWT5lPlkYvHmSzbpqkBEcTyDRXzaAdQ9S4u6jHGPvH1DqXUvsZS0hGfABdHeiPfcCAAAAcJ0KrqL4%2FEEu9%2FTzieZaOvApdahRXgM5xOw5UOpcDV8EPqjuDnJfvwkAAACBOJY0f%2FIEPbRM1A7SzJBYgYhdmEdOem%2B5d5%2BDX16%2Fyr598dyhDN0B71F3K%2Be2EeoucqxCBOAN%2BA0iAJ8pmdv%2Fuen9kzn1%2BQ9I5mMnV%2Fs%2F1LJ2cwjMg%2FNv5kRfapZqak%2FWBr9oArX%2FY5amuwn54aT2v3v%2F9sXqUEno2%2FkxDoACH16%2FjL6EEnCjMyfQHfAOddfsKw8l4LB7AAAAkp3NDLMWn7JdJwn3qeJgG5B6l%2FAMe4dBQLfayB3KNaQEPqBvxbYwAAAAWZzNFifmftq2HSuSKgQXoK9DA8JGhD5r7BsGDL2ae%2FRnieQcvHPdXXp0d45BSQDeFixxB5%2FJ2bgJ%2BTThDlDw%2FtrXJNyH%2B1RN8FDZz8Z%2BJPfugl9Xj4bF%2F7ZDHO6%2FPSRRC%2FuXez85AAd9%2Btb7J2N7Hvr3qAPwTnV3XPx8j3hndXcB6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8V4ABALA3WNLN6D8xAAAAAElFTkSuQmCC%22%2F%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";
@@ -2110,7 +1644,7 @@ var MicrosoftLogo = "data:image/svg+xml,%3Csvg%20width%3D%2225%22%20height%3D%22
2110
1644
 
2111
1645
  var Input = React__namespace.forwardRef(function (_a, ref) {
2112
1646
  var className = _a.className, type = _a.type, props = __rest(_a, ["className", "type"]);
2113
- return (jsxRuntimeExports.jsx("input", __assign({ type: type, className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref }, props)));
1647
+ return (jsxRuntime.jsx("input", __assign({ type: type, className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref }, props)));
2114
1648
  });
2115
1649
  Input.displayName = "Input";
2116
1650
 
@@ -2130,16 +1664,16 @@ var ADLoginModal = function (_a) {
2130
1664
  resolver: a$1(credentialsSchema),
2131
1665
  defaultValues: { username: "", password: "" },
2132
1666
  });
2133
- var handleCredentialsSubmit = function (values) { return __awaiter(void 0, void 0, void 0, function () {
2134
- return __generator(this, function (_a) {
1667
+ var handleCredentialsSubmit = function (values) { return __awaiter$1(void 0, void 0, void 0, function () {
1668
+ return __generator$1(this, function (_a) {
2135
1669
  setCredentials(values);
2136
1670
  setStep("mfa");
2137
1671
  return [2 /*return*/];
2138
1672
  });
2139
1673
  }); };
2140
- var handleMFASubmit = function (code) { return __awaiter(void 0, void 0, void 0, function () {
1674
+ var handleMFASubmit = function (code) { return __awaiter$1(void 0, void 0, void 0, function () {
2141
1675
  var error_1;
2142
- return __generator(this, function (_a) {
1676
+ return __generator$1(this, function (_a) {
2143
1677
  switch (_a.label) {
2144
1678
  case 0:
2145
1679
  setIsLoading(true);
@@ -2150,6 +1684,7 @@ var ADLoginModal = function (_a) {
2150
1684
  username: credentials.username,
2151
1685
  password: credentials.password,
2152
1686
  MFACode: code,
1687
+ appCode: "",
2153
1688
  })];
2154
1689
  case 2:
2155
1690
  _a.sent();
@@ -2175,13 +1710,13 @@ var ADLoginModal = function (_a) {
2175
1710
  form.reset();
2176
1711
  setMfaCode("");
2177
1712
  };
2178
- return (jsxRuntimeExports.jsx(Dialog, { open: open, onOpenChange: handleClose, children: jsxRuntimeExports.jsxs(DialogContent, { className: "min-w-[50vw] max-w-[70vw]", children: [jsxRuntimeExports.jsx(DialogHeader, { children: jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "w-8 h-8 text-[#506f4a]" }), jsxRuntimeExports.jsx(DialogTitle, { className: "text-2xl", children: "Sign in with AD" })] }) }), step === "credentials" ? (jsxRuntimeExports.jsx(Form, __assign({}, form, { children: jsxRuntimeExports.jsxs("form", { onSubmit: form.handleSubmit(handleCredentialsSubmit), className: "space-y-4", children: [jsxRuntimeExports.jsx(FormField, { control: form.control, name: "username", render: function (_a) {
1713
+ return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: handleClose, children: jsxRuntime.jsxs(DialogContent, { className: "min-w-[50vw] max-w-[70vw]", children: [jsxRuntime.jsx(DialogHeader, { children: jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "w-8 h-8 text-[#506f4a]" }), jsxRuntime.jsx(DialogTitle, { className: "text-xl", children: "Sign in with AD Credentials" })] }) }), step === "credentials" ? (jsxRuntime.jsx(Form, __assign({}, form, { children: jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleCredentialsSubmit), className: "space-y-6", children: [jsxRuntime.jsx(FormField, { control: form.control, name: "username", render: function (_a) {
2179
1714
  var field = _a.field;
2180
- return (jsxRuntimeExports.jsxs(FormItem, { children: [jsxRuntimeExports.jsx(FormLabel, { children: "Username" }), jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(Input, __assign({ className: "h-12", placeholder: "Enter your username" }, field)) }), jsxRuntimeExports.jsx(FormMessage, {})] }));
2181
- } }), jsxRuntimeExports.jsx(FormField, { control: form.control, name: "password", render: function (_a) {
1715
+ return (jsxRuntime.jsxs(FormItem, { children: [jsxRuntime.jsx(FormLabel, { children: "Username" }), jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(Input, __assign({ className: "h-12", placeholder: "Enter your username" }, field)) }), jsxRuntime.jsx(FormMessage, {})] }));
1716
+ } }), jsxRuntime.jsx(FormField, { control: form.control, name: "password", render: function (_a) {
2182
1717
  var field = _a.field;
2183
- return (jsxRuntimeExports.jsxs(FormItem, { children: [jsxRuntimeExports.jsx(FormLabel, { children: "Password" }), jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(Input, __assign({ className: "h-12", type: "password", placeholder: "Enter your password" }, field)) }), jsxRuntimeExports.jsx(FormMessage, {})] }));
2184
- } }), jsxRuntimeExports.jsx(Button, { type: "submit", className: "w-full bg-[#506f4a] hover:bg-[#506f4a]/90", children: "Continue" })] }) }))) : (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsx(GenericOTPVerifier, { value: mfaCode, setValue: setMfaCode, setLoading: setIsLoading, isDisabled: isLoading, onChangeOTP: handleMFASubmit, fieldName: "AuthenticatorCode" }), isLoading && (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 text-sm text-muted-foreground", children: [jsxRuntimeExports.jsx(lucideReact.Loader2, { className: "w-4 h-4 animate-spin" }), jsxRuntimeExports.jsx("span", { children: "Verifying..." })] }))] }))] }) }));
1718
+ return (jsxRuntime.jsxs(FormItem, { children: [jsxRuntime.jsx(FormLabel, { children: "Password" }), jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(Input, __assign({ className: "h-12", type: "password", placeholder: "Enter your password" }, field)) }), jsxRuntime.jsx(FormMessage, {})] }));
1719
+ } }), jsxRuntime.jsx(Button, { type: "submit", className: "py-3 w-full bg-[#506f4a] hover:bg-[#506f4a]/90", children: "Continue" })] }) }))) : (jsxRuntime.jsxs("div", { className: "space-y-4", children: [jsxRuntime.jsx(GenericOTPVerifier, { value: mfaCode, setValue: setMfaCode, setLoading: setIsLoading, isDisabled: isLoading, onChangeOTP: handleMFASubmit, fieldName: "AuthenticatorCode" }), isLoading && (jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 text-sm text-muted-foreground", children: [jsxRuntime.jsx(lucideReact.Loader2, { className: "w-4 h-4 animate-spin" }), jsxRuntime.jsx("span", { children: "Verifying..." })] }))] }))] }) }));
2185
1720
  };
2186
1721
 
2187
1722
  var DefaultLoginPage = function (_a) {
@@ -2200,21 +1735,37 @@ var DefaultLoginPage = function (_a) {
2200
1735
  var login = context.login, isLoading = context.isLoading, authMode = context.authMode;
2201
1736
  var _b = React.useState(false), showADModal = _b[0], setShowADModal = _b[1];
2202
1737
  var register = useWebAuthn().register;
2203
- var _c = useCredentialsHandler(function (state, data) { return __awaiter(void 0, void 0, void 0, function () {
2204
- return __generator(this, function (_a) {
1738
+ var authentication = new camsSdk.CAMSMFAAuthenticator();
1739
+ var _c = useCredentialsHandler(function (state, data) { return __awaiter$1(void 0, void 0, void 0, function () {
1740
+ return __generator$1(this, function (_a) {
2205
1741
  console.log(data);
2206
- if (state && data) {
1742
+ if (state && data && data.isValid) {
2207
1743
  context.isAuthenticated = true;
2208
1744
  context.requiresMFA = false;
2209
1745
  context.setUserProfile({
2210
- type: "AUTH_SUCCESS",
2211
- userProfile: __assign({}, data),
1746
+ state: "AUTH_SUCCESS",
1747
+ message: data.message,
1748
+ role: data.userInfo.role,
1749
+ profile: {
1750
+ id: data.userInfo.id,
1751
+ name: data.userInfo.name,
1752
+ email: data.userInfo.email,
1753
+ isMFAEnabled: data.userInfo.isMFAEnabled,
1754
+ tokens: data.tokens,
1755
+ },
2212
1756
  });
2213
1757
  }
1758
+ else {
1759
+ sonner.toast.error("\u274C AD Login failed. ".concat((data === null || data === void 0 ? void 0 : data.message) || 'Unknown error'));
1760
+ }
2214
1761
  return [2 /*return*/];
2215
1762
  });
2216
1763
  }); }), handleSubmitCredentials = _c.handleSubmitCredentials, isCredAuthLoading = _c.loading, setIsCredAuthLoading = _c.setLoading;
2217
1764
  var handleMSALLogin = function () {
1765
+ if (typeof window !== "undefined" && !window.crypto) {
1766
+ sonner.toast.error("Crypto API not available. Please use a modern browser.");
1767
+ return;
1768
+ }
2218
1769
  if (authMode === "MSAL") {
2219
1770
  login();
2220
1771
  }
@@ -2223,53 +1774,21 @@ var DefaultLoginPage = function (_a) {
2223
1774
  console.warn("Regular CAMS login requires configuration");
2224
1775
  }
2225
1776
  };
2226
- var handleRegister = function (data) { return __awaiter(void 0, void 0, void 0, function () {
2227
- var options, attestationResponse, error_1;
2228
- return __generator(this, function (_a) {
2229
- switch (_a.label) {
2230
- case 0:
2231
- _a.trys.push([0, 4, , 5]);
2232
- // 1. Fetch challenge from your server
2233
- console.log("Requesting registration challenge from server...");
2234
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RegisterNewChallenge, __assign({}, data))];
2235
- case 1:
2236
- options = (_a.sent()).data;
2237
- console.log("Received challenge:", options);
2238
- // 2. Call the SDK to trigger the browser's passkey creation UI
2239
- console.log("Calling SDK register function...");
2240
- return [4 /*yield*/, register(options)];
2241
- case 2:
2242
- attestationResponse = _a.sent();
2243
- console.log("Passkey created on client:", attestationResponse);
2244
- // 3. Send the response back to the server for verification
2245
- console.log("Sending attestation to server for verification...");
2246
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RegisterVerify + "?username=".concat(data.username), attestationResponse)];
2247
- case 3:
2248
- _a.sent();
2249
- sonner.toast.success("✅ Registration successful! Passkey created.");
2250
- return [3 /*break*/, 5];
2251
- case 4:
2252
- error_1 = _a.sent();
2253
- console.error("Registration failed:", error_1);
2254
- sonner.toast.error("❌ Could not create passkey.");
2255
- return [3 /*break*/, 5];
2256
- case 5: return [2 /*return*/];
2257
- }
2258
- });
2259
- }); };
2260
- return (jsxRuntimeExports.jsxs("main", { className: "min-h-screen bg-gray-50", children: [jsxRuntimeExports.jsx(framerMotion.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.5 }, children: jsxRuntimeExports.jsx("div", { className: "flex h-screen items-center justify-center", children: jsxRuntimeExports.jsxs(framerMotion.motion.div, { variants: cardVariants, initial: "hidden", animate: "visible", exit: "exit", className: "w-full max-w-md p-6 space-y-4 bg-gray-50 rounded-2xl shadow-2xl --dark:bg-gray-800", children: [jsxRuntimeExports.jsxs(CardHeader, { className: "text-center space-y-3", children: [jsxRuntimeExports.jsx("div", { className: "w-full flex items-center justify-center", children: jsxRuntimeExports.jsx("img", { src: NIBSSLogo, alt: "NIBSS Logo", width: 265, height: 265 }) }), jsxRuntimeExports.jsx(CardTitle, { className: "text-3xl font-bold --text-gray-900 --dark:text-white", children: "NIBSS CAMS" }), jsxRuntimeExports.jsx(CardTitle, { className: "text-gray-500 dark:text-gray-400 font-bold text-lg", children: "Centralized Authentication" })] }), jsxRuntimeExports.jsxs(CardAction, { className: "w-full flex flex-col items-center justify-center text-center text-gray-500 dark:text-gray-400 mb-6", children: [jsxRuntimeExports.jsx("img", { src: AuthLogo, alt: "Auth Logo", width: 365, height: 365 }), "Kindly use the below identity providers to authenticate"] }), jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsxs(Button
1777
+ return (jsxRuntime.jsxs("main", { className: "cams-sdk min-h-screen bg-gray-50", children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.5 }, children: jsxRuntime.jsx("div", { className: "flex h-screen items-center justify-center", children: jsxRuntime.jsxs(framerMotion.motion.div, { variants: cardVariants, initial: "hidden", animate: "visible", exit: "exit", className: "w-full max-w-md p-6 space-y-4 rounded-2xl shadow-2xl", children: [jsxRuntime.jsxs(CardHeader, { className: "text-center space-y-3", children: [jsxRuntime.jsx("div", { className: "w-full flex items-center justify-center", children: jsxRuntime.jsx("img", { src: NIBSSLogo, alt: "NIBSS Logo", width: 225, height: 225 }) }), jsxRuntime.jsx(CardTitle, { className: "text-3xl font-bold", children: "NIBSS CAMS" }), jsxRuntime.jsx(CardTitle, { className: "text-gray-500 dark:text-gray-400 font-bold text-lg", children: "Centralized Authentication" })] }), jsxRuntime.jsxs(CardAction, { className: "w-full flex flex-col items-center justify-center text-center text-gray-500 dark:text-gray-400 mb-8", children: [jsxRuntime.jsx("img", { src: AuthLogo, alt: "Auth Logo", width: 365, height: 365 }), "Use Below Identity Providers To Authenticate"] }), jsxRuntime.jsxs("div", { className: "space-y-4", children: [jsxRuntime.jsxs(Button
2261
1778
  // variant="outline"
2262
1779
  , {
2263
1780
  // variant="outline"
2264
- className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: handleMSALLogin, disabled: isLoading, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftLogo, alt: "Microsoft Logo", width: 35, height: 35 }), jsxRuntimeExports.jsx("span", { className: "ml-2", children: isLoading ? "Logging in..." : "Sign in with Microsoft" })] }), useADLogin && (jsxRuntimeExports.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () { return setShowADModal(true); }, disabled: isLoading, children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntimeExports.jsx("span", { children: isLoading
1781
+ className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: handleMSALLogin, disabled: isLoading, children: [jsxRuntime.jsx("img", { src: MicrosoftLogo, alt: "Microsoft Logo", width: 35, height: 35 }), jsxRuntime.jsx("span", { className: "ml-2", children: isLoading ? "Logging in..." : "Sign in with Microsoft" })] }), useADLogin && (jsxRuntime.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () { return setShowADModal(true); }, disabled: isLoading, children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntime.jsx("span", { children: isLoading
2265
1782
  ? "Logging in..."
2266
- : "Sign in with ActiveDirectory" })] })), usePassKey && (jsxRuntimeExports.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () { return handleRegister(PassKeysRegisterProps); }, disabled: isLoading, children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntimeExports.jsx("span", { children: "Create a Passkey" })] }))] }), jsxRuntimeExports.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }) }, "landing"), jsxRuntimeExports.jsx(ADLoginModal, { open: showADModal, onOpenChange: setShowADModal, isLoading: isCredAuthLoading, setIsLoading: setIsCredAuthLoading, onLogin: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
1783
+ : "Sign in with ActiveDirectory" })] })), usePassKey && (jsxRuntime.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () {
1784
+ return authentication.HandleRegister(MFAEndpoints.RegisterNewChallenge, MFAEndpoints.RegisterVerify +
1785
+ "?username=".concat(PassKeysRegisterProps.username), register, PassKeysRegisterProps);
1786
+ }, disabled: isLoading, children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntime.jsx("span", { children: "Create a Passkey" })] }))] }), jsxRuntime.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntime.jsx("span", { children: "Powered By NIBSS" })] })] }) }) }, "landing"), jsxRuntime.jsx(ADLoginModal, { open: showADModal, onOpenChange: setShowADModal, isLoading: isCredAuthLoading, setIsLoading: setIsCredAuthLoading, onLogin: function (_a) { return __awaiter$1(void 0, [_a], void 0, function (_b) {
2267
1787
  var username = _b.username, password = _b.password, MFACode = _b.MFACode;
2268
- return __generator(this, function (_c) {
1788
+ return __generator$1(this, function (_c) {
2269
1789
  // Implement your AD login logic here
2270
- console.log("AD Login:", { username: username, password: password, MFACode: MFACode });
2271
- // Example: await adLoginService(username, password, mfaCode);
2272
- handleSubmitCredentials(CredentialsAuthEndpoint !== null && CredentialsAuthEndpoint !== void 0 ? CredentialsAuthEndpoint : "/api/auth/validate", { username: username, password: password, MFACode: MFACode }, context.appCode);
1790
+ console.log("AD Login:", { username: username, MFACode: MFACode });
1791
+ handleSubmitCredentials(CredentialsAuthEndpoint, { username: username, password: password, MFACode: MFACode, appCode: context.appCode });
2273
1792
  return [2 /*return*/];
2274
1793
  });
2275
1794
  }); } })] }));
@@ -2277,23 +1796,24 @@ var DefaultLoginPage = function (_a) {
2277
1796
 
2278
1797
  var ErrorFallback = function (_a) {
2279
1798
  var message = _a.message;
2280
- return (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center min-h-screen bg-gray-50", children: jsxRuntimeExports.jsxs("div", { className: "bg-white p-6 rounded-lg shadow-lg border border-red-200 max-w-md", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [jsxRuntimeExports.jsx("svg", { className: "w-6 h-6 text-red-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Configuration Error" })] }), jsxRuntimeExports.jsx("p", { className: "text-red-600", children: message })] }) }));
1799
+ return (jsxRuntime.jsx("div", { className: "flex items-center justify-center min-h-screen bg-gray-50", children: jsxRuntime.jsxs("div", { className: "bg-white p-6 rounded-lg shadow-lg border border-red-200 max-w-md", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [jsxRuntime.jsx("svg", { className: "w-6 h-6 text-red-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Configuration Error" })] }), jsxRuntime.jsx("p", { className: "text-red-600", children: message })] }) }));
2281
1800
  };
2282
1801
 
2283
1802
  var MFAEndpointsSchema = z.object({
2284
- ValidateMFA: z.url("MFAEndpoint must be a valid URL"),
1803
+ ValidateUserMFA: z.url("ValidateUser MFA Endpoint must be a valid URL"),
2285
1804
  RegisterNewChallenge: z.url("MFA RegisterNewChallenge must be a valid URL"),
2286
1805
  RegisterVerify: z.url("MFA RegisterVerify must be a valid URL"),
2287
1806
  RetrieveAuthChallenge: z.url("MFA RetrieveAuthChallenge must be a valid URL"),
2288
1807
  AuthChallengeVerify: z.url("MFA AuthChallengeVerify must be a valid URL"),
2289
1808
  });
2290
1809
  var MFAGate = function (_a) {
2291
- var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? jsxRuntimeExports.jsx(LoadingSpinner, {}) : _b,
1810
+ var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? (jsxRuntime.jsx("div", { className: "h-screen flex items-center justify-center", children: jsxRuntime.jsx(LoadingSpinner, {}) })) : _b,
2292
1811
  // loginComponent: LoginComponent = DefaultLoginPage,
2293
1812
  _c = _a.usePassKey,
2294
1813
  // loginComponent: LoginComponent = DefaultLoginPage,
2295
- usePassKey = _c === void 0 ? false : _c, _d = _a.useADLogin, useADLogin = _d === void 0 ? false : _d, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps, MFAEndpoints = _a.MFAEndpoints;
1814
+ usePassKey = _c === void 0 ? false : _c, _d = _a.useADLogin, useADLogin = _d === void 0 ? false : _d, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps, MFAEndpoints = _a.MFAEndpoints, requiresMFA = _a.requiresMFA, onAuthSuccess = _a.onAuthSuccess, onAuthError = _a.onAuthError;
2296
1815
  var context = useCAMSContext();
1816
+ var _e = React.useState("Loading"), authState = _e[0], setAuthState = _e[1];
2297
1817
  var validatedMFAEndpoints = React.useMemo(function () {
2298
1818
  var parsed = MFAEndpointsSchema.safeParse(MFAEndpoints);
2299
1819
  if (!parsed.success) {
@@ -2303,34 +1823,109 @@ var MFAGate = function (_a) {
2303
1823
  return parsed.data;
2304
1824
  }, [MFAEndpoints]);
2305
1825
  var handleComplete = React.useCallback(function (success) {
2306
- if (!success)
2307
- camsSdk.Logger.error("MFA authentication failed");
2308
- }, []);
2309
- var handleAuthFailed = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
2310
- return __generator(this, function (_a) {
2311
- switch (_a.label) {
2312
- case 0: return [4 /*yield*/, context.logout()];
1826
+ var _a;
1827
+ if (success && context.authMode === "MSAL") {
1828
+ var accessToken = "accessToken" in context ? context.accessToken : "";
1829
+ var idToken = "idToken" in context ? context.idToken : "";
1830
+ if (accessToken && idToken) {
1831
+ var tokens = { accessToken: accessToken, idToken: idToken };
1832
+ onAuthSuccess === null || onAuthSuccess === void 0 ? void 0 : onAuthSuccess(tokens);
1833
+ if ("onAuthSuccess" in context) {
1834
+ (_a = context.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(context, tokens);
1835
+ }
1836
+ }
1837
+ }
1838
+ else if (!success) {
1839
+ camsSdk.Logger.error("MFA authentication failed", { context: context || null });
1840
+ }
1841
+ }, [context, onAuthSuccess]);
1842
+ var handleAuthFailed = React.useCallback(function () { return __awaiter$1(void 0, void 0, void 0, function () {
1843
+ var _a;
1844
+ return __generator$1(this, function (_b) {
1845
+ switch (_b.label) {
1846
+ case 0:
1847
+ if (context.authMode === "MSAL" && context.error) {
1848
+ onAuthError === null || onAuthError === void 0 ? void 0 : onAuthError(context.error);
1849
+ if ("onAuthError" in context) {
1850
+ (_a = context.onAuthError) === null || _a === void 0 ? void 0 : _a.call(context, context.error);
1851
+ }
1852
+ }
1853
+ return [4 /*yield*/, context.logout()];
2313
1854
  case 1:
2314
- _a.sent();
1855
+ _b.sent();
2315
1856
  return [2 /*return*/];
2316
1857
  }
2317
1858
  });
2318
- }); }, [context.logout]);
1859
+ }); }, [context, onAuthError]);
1860
+ React.useEffect(function () {
1861
+ if (context.isLoading) {
1862
+ setAuthState("Loading");
1863
+ return;
1864
+ }
1865
+ if (!context.isAuthenticated) {
1866
+ setAuthState("Unauthenticated");
1867
+ return;
1868
+ }
1869
+ // Small delay to ensure all context updates are processed
1870
+ var timer = setTimeout(function () {
1871
+ var shouldRequireMFA = requiresMFA !== null && requiresMFA !== void 0 ? requiresMFA : ("requiresMFA" in context ? context.requiresMFA : false);
1872
+ var accessToken = "accessToken" in context ? context.accessToken : "";
1873
+ if (shouldRequireMFA && accessToken) {
1874
+ setAuthState("MFA_Required");
1875
+ }
1876
+ else {
1877
+ setAuthState("Authenticated");
1878
+ }
1879
+ }, 50);
1880
+ return function () { return clearTimeout(timer); };
1881
+ }, [
1882
+ context.isLoading,
1883
+ context.isAuthenticated,
1884
+ // context["requiresMFA"],
1885
+ requiresMFA,
1886
+ context,
1887
+ ]);
2319
1888
  if (useADLogin && !CredentialsAuthEndpoint)
2320
- return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
1889
+ return jsxRuntime.jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
2321
1890
  if (!validatedMFAEndpoints)
2322
- return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid MFA Configuration." });
1891
+ return jsxRuntime.jsx(ErrorFallback, { message: "Invalid MFA Configuration." });
2323
1892
  if (context.authMode !== "MSAL")
2324
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
2325
- if (context.isLoading)
2326
- return fallback;
2327
- if (context.requiresMFA) {
2328
- return (jsxRuntimeExports.jsx(MFAOptions, { MFAEndpoints: validatedMFAEndpoints, usePassKey: usePassKey, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
2329
- }
2330
- if (!context.isAuthenticated) {
2331
- return (jsxRuntimeExports.jsx(DefaultLoginPage, { usePassKey: usePassKey, useADLogin: useADLogin, MFAEndpoints: MFAEndpoints, PassKeysRegisterProps: PassKeysRegisterProps, CredentialsAuthEndpoint: CredentialsAuthEndpoint }));
1893
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1894
+ // if (!context.isAuthenticated) {
1895
+ // const shouldRequireMFA =
1896
+ // requiresMFA ?? ("requiresMFA" in context ? context.requiresMFA : false);
1897
+ // const accessToken = "accessToken" in context ? context.accessToken : "";
1898
+ // if (shouldRequireMFA && accessToken) {
1899
+ // return (
1900
+ // <MFAOptions
1901
+ // MFAEndpoints={validatedMFAEndpoints}
1902
+ // usePassKey={usePassKey}
1903
+ // onComplete={handleComplete}
1904
+ // onAuthFailed={handleAuthFailed}
1905
+ // />
1906
+ // );
1907
+ // }
1908
+ // return (
1909
+ // <DefaultLoginPage
1910
+ // usePassKey={usePassKey}
1911
+ // useADLogin={useADLogin}
1912
+ // MFAEndpoints={MFAEndpoints!}
1913
+ // PassKeysRegisterProps={PassKeysRegisterProps}
1914
+ // CredentialsAuthEndpoint={CredentialsAuthEndpoint}
1915
+ // />
1916
+ // );
1917
+ // }
1918
+ switch (authState) {
1919
+ case "Loading":
1920
+ return fallback;
1921
+ case "MFA_Required":
1922
+ return (jsxRuntime.jsx(MFAOptions, { MFAEndpoints: validatedMFAEndpoints, usePassKey: usePassKey, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
1923
+ case "Authenticated":
1924
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1925
+ case "Unauthenticated":
1926
+ default:
1927
+ jsxRuntime.jsx(DefaultLoginPage, { usePassKey: usePassKey, useADLogin: useADLogin, MFAEndpoints: MFAEndpoints, PassKeysRegisterProps: PassKeysRegisterProps, CredentialsAuthEndpoint: CredentialsAuthEndpoint });
2332
1928
  }
2333
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
2334
1929
  };
2335
1930
 
2336
1931
  exports.CAMSMSALProvider = CAMSMSALProvider;