@nibssplc/cams-sdk-react 0.0.1-beta.8 → 0.0.1-beta.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +239 -104
- package/dist/components/ADLoginModal.d.ts +7 -0
- package/dist/components/AuthFailureAnimation.d.ts +5 -0
- package/dist/components/AuthSuccessAnimation.d.ts +5 -0
- package/dist/components/CAMSMSALProvider.d.ts +16 -0
- package/dist/components/CAMSProvider.d.ts +13 -0
- package/dist/components/ClientOnly.d.ts +6 -0
- package/dist/components/DefaultLoginPage.d.ts +2 -0
- package/dist/components/ErrorFallback.d.ts +5 -0
- package/dist/components/GenericOTP.d.ts +13 -0
- package/dist/components/Loading.d.ts +6 -0
- package/dist/components/MFAGate.d.ts +8 -0
- package/dist/components/MFAOptions.d.ts +7 -0
- package/dist/components/ProtectedRoute.d.ts +7 -0
- package/dist/components/UnifiedCAMSProvider.d.ts +22 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/dialog.d.ts +15 -0
- package/dist/components/ui/form.d.ts +24 -0
- package/dist/components/ui/input-otp.d.ts +11 -0
- package/dist/components/ui/input.d.ts +5 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/context/CAMSContext.d.ts +19 -0
- package/dist/hooks/useCAMSAuth.d.ts +24 -0
- package/dist/hooks/useCAMSMSALAuth.d.ts +30 -0
- package/dist/hooks/useCAMSPopupAuth.d.ts +17 -0
- package/dist/hooks/useOTPHandler.d.ts +17 -0
- package/dist/index.cjs.js +2063 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.esm.js +2024 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/utils/DeviceID.d.ts +1 -0
- package/dist/utils/cookies.d.ts +3 -0
- package/package.json +36 -13
|
@@ -0,0 +1,2024 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import React__default, { useState, useRef, useEffect, useCallback, createContext, useContext, useMemo } from 'react';
|
|
3
|
+
import { CAMSSessionManager, isPopupWindow, CAMSMFAAuthenticator, Logger, CAMSError, CAMSErrorType, initializePopupAuth } from '@nibssplc/cams-sdk';
|
|
4
|
+
export * from '@nibssplc/cams-sdk';
|
|
5
|
+
import { useMsal, useAccount, MsalProvider } from '@azure/msal-react';
|
|
6
|
+
import { InteractionStatus, PublicClientApplication } from '@azure/msal-browser';
|
|
7
|
+
import z$1, { z } from 'zod';
|
|
8
|
+
import { OTPInput, OTPInputContext, REGEXP_ONLY_DIGITS } from 'input-otp';
|
|
9
|
+
import { RectangleEllipsis, XIcon, CheckCircle, Mail, Shield, ShieldCheck, ShieldClose, KeyIcon, Loader2 } from 'lucide-react';
|
|
10
|
+
import { appendErrors, FormProvider, Controller, useFormContext, useFormState, useForm } from 'react-hook-form';
|
|
11
|
+
import { validateFieldsNatively, toNestErrors } from '@hookform/resolvers';
|
|
12
|
+
import { clsx } from 'clsx';
|
|
13
|
+
import { twMerge } from 'tailwind-merge';
|
|
14
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
15
|
+
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
16
|
+
import { cva } from 'class-variance-authority';
|
|
17
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
18
|
+
import { toast } from 'sonner';
|
|
19
|
+
import { motion } from 'framer-motion';
|
|
20
|
+
import axios from 'axios';
|
|
21
|
+
|
|
22
|
+
/******************************************************************************
|
|
23
|
+
Copyright (c) Microsoft Corporation.
|
|
24
|
+
|
|
25
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
26
|
+
purpose with or without fee is hereby granted.
|
|
27
|
+
|
|
28
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
29
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
30
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
31
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
32
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
33
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
34
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
35
|
+
***************************************************************************** */
|
|
36
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
var __assign = function() {
|
|
40
|
+
__assign = Object.assign || function __assign(t) {
|
|
41
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
42
|
+
s = arguments[i];
|
|
43
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
};
|
|
47
|
+
return __assign.apply(this, arguments);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
function __rest(s, e) {
|
|
51
|
+
var t = {};
|
|
52
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
53
|
+
t[p] = s[p];
|
|
54
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
55
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
56
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
57
|
+
t[p[i]] = s[p[i]];
|
|
58
|
+
}
|
|
59
|
+
return t;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
63
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
64
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
65
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
66
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
67
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
68
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function __generator(thisArg, body) {
|
|
73
|
+
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);
|
|
74
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
75
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
76
|
+
function step(op) {
|
|
77
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
78
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
79
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
80
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
81
|
+
switch (op[0]) {
|
|
82
|
+
case 0: case 1: t = op; break;
|
|
83
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
84
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
85
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
86
|
+
default:
|
|
87
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
88
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
89
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
90
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
91
|
+
if (t[2]) _.ops.pop();
|
|
92
|
+
_.trys.pop(); continue;
|
|
93
|
+
}
|
|
94
|
+
op = body.call(thisArg, _);
|
|
95
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
96
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function __spreadArray(to, from, pack) {
|
|
101
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
102
|
+
if (ar || !(i in from)) {
|
|
103
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
104
|
+
ar[i] = from[i];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
111
|
+
var e = new Error(message);
|
|
112
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
function useCAMSAuth(options) {
|
|
116
|
+
var _this = this;
|
|
117
|
+
var _a;
|
|
118
|
+
if (options === void 0) { options = {
|
|
119
|
+
appCode: "",
|
|
120
|
+
loginExpiry: 1,
|
|
121
|
+
storageKey: "CAMS-AUTH-SDK",
|
|
122
|
+
}; }
|
|
123
|
+
var _b = useState(false), isAuthenticated = _b[0], setIsAuthenticated = _b[1];
|
|
124
|
+
var _c = useState(false), isLoading = _c[0], setIsLoading = _c[1];
|
|
125
|
+
var _d = useState(null), error = _d[0], setError = _d[1];
|
|
126
|
+
var _e = useState(""), token = _e[0], setToken = _e[1];
|
|
127
|
+
var _f = useState(null), profile = _f[0], setProfile = _f[1];
|
|
128
|
+
var sessionManagerRef = useRef(null);
|
|
129
|
+
useEffect(function () {
|
|
130
|
+
var _a, _b;
|
|
131
|
+
// Only initialize on client side
|
|
132
|
+
if (typeof window === "undefined")
|
|
133
|
+
return;
|
|
134
|
+
(_a = sessionManagerRef.current) !== null && _a !== void 0 ? _a : (sessionManagerRef.current = new CAMSSessionManager(localStorage, options.storageKey || "CAMS-AUTH-SDK", {
|
|
135
|
+
onAuthSuccess: function (res) {
|
|
136
|
+
var _a;
|
|
137
|
+
setToken(res.userProfile.tokens.Bearer);
|
|
138
|
+
setIsAuthenticated(true);
|
|
139
|
+
setIsLoading(false);
|
|
140
|
+
(_a = options.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(options, res.userProfile.tokens.Bearer);
|
|
141
|
+
},
|
|
142
|
+
onAuthError: function (error) {
|
|
143
|
+
var _a;
|
|
144
|
+
setError(error);
|
|
145
|
+
setIsAuthenticated(false);
|
|
146
|
+
setToken("");
|
|
147
|
+
setProfile(null);
|
|
148
|
+
setIsLoading(false);
|
|
149
|
+
(_a = options.onAuthError) === null || _a === void 0 ? void 0 : _a.call(options, error);
|
|
150
|
+
},
|
|
151
|
+
onTokenExpired: function () {
|
|
152
|
+
var _a;
|
|
153
|
+
setIsAuthenticated(false);
|
|
154
|
+
setToken("");
|
|
155
|
+
setProfile(null);
|
|
156
|
+
(_a = options.onTokenExpired) === null || _a === void 0 ? void 0 : _a.call(options);
|
|
157
|
+
},
|
|
158
|
+
}));
|
|
159
|
+
// Check initial auth state (skip if in popup)
|
|
160
|
+
if (!isPopupWindow()) {
|
|
161
|
+
var initialAuth = sessionManagerRef.current.isAuthenticated();
|
|
162
|
+
setIsAuthenticated(initialAuth);
|
|
163
|
+
if (initialAuth) {
|
|
164
|
+
setToken((_b = sessionManagerRef.current.getAccessToken()) !== null && _b !== void 0 ? _b : "");
|
|
165
|
+
sessionManagerRef.current.getProfile().then(setProfile);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}, [options.storageKey]);
|
|
169
|
+
var login = useCallback(function (config) { return __awaiter(_this, void 0, void 0, function () {
|
|
170
|
+
var loginConfig, userProfile, err_1, e, isPopupClosedError, restoredToken, userProfile;
|
|
171
|
+
var _a, _b, _c;
|
|
172
|
+
return __generator(this, function (_d) {
|
|
173
|
+
switch (_d.label) {
|
|
174
|
+
case 0:
|
|
175
|
+
if (!sessionManagerRef.current)
|
|
176
|
+
return [2 /*return*/];
|
|
177
|
+
setIsLoading(true);
|
|
178
|
+
setError(null);
|
|
179
|
+
_d.label = 1;
|
|
180
|
+
case 1:
|
|
181
|
+
_d.trys.push([1, 4, 8, 9]);
|
|
182
|
+
loginConfig = __assign(__assign({}, config), { idleTimeout: options.idleTimeout });
|
|
183
|
+
return [4 /*yield*/, sessionManagerRef.current.login(loginConfig)];
|
|
184
|
+
case 2:
|
|
185
|
+
_d.sent();
|
|
186
|
+
return [4 /*yield*/, sessionManagerRef.current.getProfile()];
|
|
187
|
+
case 3:
|
|
188
|
+
userProfile = _d.sent();
|
|
189
|
+
setProfile(userProfile);
|
|
190
|
+
return [3 /*break*/, 9];
|
|
191
|
+
case 4:
|
|
192
|
+
err_1 = _d.sent();
|
|
193
|
+
e = err_1;
|
|
194
|
+
isPopupClosedError = ((_a = e === null || e === void 0 ? void 0 : e.message) === null || _a === void 0 ? void 0 : _a.includes("Authentication window was closed")) ||
|
|
195
|
+
(e === null || e === void 0 ? void 0 : e.error) === "Authentication window was closed";
|
|
196
|
+
if (!(isPopupClosedError && sessionManagerRef.current.isAuthenticated())) return [3 /*break*/, 6];
|
|
197
|
+
restoredToken = (_b = sessionManagerRef.current.getAccessToken()) !== null && _b !== void 0 ? _b : "";
|
|
198
|
+
setToken(restoredToken);
|
|
199
|
+
setIsAuthenticated(true);
|
|
200
|
+
return [4 /*yield*/, sessionManagerRef.current.getProfile()];
|
|
201
|
+
case 5:
|
|
202
|
+
userProfile = _d.sent();
|
|
203
|
+
setProfile(userProfile);
|
|
204
|
+
(_c = options.onAuthSuccess) === null || _c === void 0 ? void 0 : _c.call(options, restoredToken);
|
|
205
|
+
return [3 /*break*/, 7];
|
|
206
|
+
case 6:
|
|
207
|
+
setError(err_1);
|
|
208
|
+
setIsAuthenticated(false);
|
|
209
|
+
setToken("");
|
|
210
|
+
setProfile(null);
|
|
211
|
+
_d.label = 7;
|
|
212
|
+
case 7: return [3 /*break*/, 9];
|
|
213
|
+
case 8:
|
|
214
|
+
setIsLoading(false);
|
|
215
|
+
return [7 /*endfinally*/];
|
|
216
|
+
case 9: return [2 /*return*/];
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}); }, [options.idleTimeout]);
|
|
220
|
+
var logout = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
221
|
+
return __generator(this, function (_a) {
|
|
222
|
+
switch (_a.label) {
|
|
223
|
+
case 0:
|
|
224
|
+
if (!sessionManagerRef.current)
|
|
225
|
+
return [2 /*return*/];
|
|
226
|
+
return [4 /*yield*/, sessionManagerRef.current.logout()];
|
|
227
|
+
case 1:
|
|
228
|
+
_a.sent();
|
|
229
|
+
setIsAuthenticated(false);
|
|
230
|
+
setToken("");
|
|
231
|
+
setProfile(null);
|
|
232
|
+
setError(null);
|
|
233
|
+
return [2 /*return*/];
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}); }, []);
|
|
237
|
+
return {
|
|
238
|
+
login: login,
|
|
239
|
+
logout: logout,
|
|
240
|
+
isAuthenticated: isAuthenticated,
|
|
241
|
+
isLoading: isLoading,
|
|
242
|
+
error: error,
|
|
243
|
+
token: token,
|
|
244
|
+
profile: profile,
|
|
245
|
+
loginExpiry: (_a = options.loginExpiry) !== null && _a !== void 0 ? _a : 1,
|
|
246
|
+
appCode: options.appCode,
|
|
247
|
+
storageKey: options.storageKey || "CAMS-AUTH-SDK",
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
var setCookie$1 = function (name, value, days) {
|
|
252
|
+
var expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();
|
|
253
|
+
document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
|
|
254
|
+
};
|
|
255
|
+
var getCookie$1 = function (name) {
|
|
256
|
+
var _a;
|
|
257
|
+
return ((_a = document.cookie
|
|
258
|
+
.split("; ")
|
|
259
|
+
.find(function (row) { return row.startsWith(name + "="); })) === null || _a === void 0 ? void 0 : _a.split("=")[1])
|
|
260
|
+
? decodeURIComponent(document.cookie
|
|
261
|
+
.split("; ")
|
|
262
|
+
.find(function (row) { return row.startsWith(name + "="); })
|
|
263
|
+
.split("=")[1])
|
|
264
|
+
: null;
|
|
265
|
+
};
|
|
266
|
+
var deleteCookie$1 = function (name) {
|
|
267
|
+
document.cookie = name + "=; Max-Age=-99999999; path=/";
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
function useCAMSMSALAuth(options) {
|
|
271
|
+
var _this = this;
|
|
272
|
+
var storageKey = options.storageKey || "CAMS-MSAL-AUTH-SDK";
|
|
273
|
+
var _a = useMsal(), instance = _a.instance, inProgress = _a.inProgress, accounts = _a.accounts;
|
|
274
|
+
var account = useAccount(accounts[0] || {});
|
|
275
|
+
var _b = useState(null), error = _b[0], setError = _b[1];
|
|
276
|
+
var _c = useState(""), idToken = _c[0], setIdToken = _c[1];
|
|
277
|
+
var _d = useState(""), accessToken = _d[0], setAccessToken = _d[1];
|
|
278
|
+
var _e = useState(null), mfaAuthenticator = _e[0], setMfaAuthenticator = _e[1];
|
|
279
|
+
var _f = useState(false), requiresMFA = _f[0], setRequiresMFA = _f[1];
|
|
280
|
+
var isLoading = inProgress !== InteractionStatus.None;
|
|
281
|
+
var isAuthenticated = !!account && !!accessToken && !requiresMFA;
|
|
282
|
+
var scopes = options.scopes || ["openid", "profile", "email"];
|
|
283
|
+
var isTokenValid = function (token) {
|
|
284
|
+
try {
|
|
285
|
+
var payload = JSON.parse(atob(token.split(".")[1]));
|
|
286
|
+
return payload.exp * 1000 > Date.now();
|
|
287
|
+
}
|
|
288
|
+
catch (_a) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
useEffect(function () {
|
|
293
|
+
if (typeof window !== "undefined" && !accessToken) {
|
|
294
|
+
var stored = localStorage.getItem(storageKey);
|
|
295
|
+
if (stored) {
|
|
296
|
+
try {
|
|
297
|
+
var _a = JSON.parse(stored), accessToken_1 = _a.accessToken, idToken_1 = _a.idToken, storedRequiresMFA = _a.requiresMFA, storedIsAuthenticated = _a.isAuthenticated;
|
|
298
|
+
if (accessToken_1 && isTokenValid(accessToken_1)) {
|
|
299
|
+
setAccessToken(accessToken_1);
|
|
300
|
+
setIdToken(idToken_1);
|
|
301
|
+
// Restore MFA state
|
|
302
|
+
if (storedRequiresMFA && !storedIsAuthenticated) {
|
|
303
|
+
var mfaConfig = {
|
|
304
|
+
accessToken: accessToken_1,
|
|
305
|
+
idToken: idToken_1,
|
|
306
|
+
appCode: options.appCode,
|
|
307
|
+
provider: "MSAL",
|
|
308
|
+
apiEndpoint: options.MFAEndpoint,
|
|
309
|
+
};
|
|
310
|
+
var authenticator = new CAMSMFAAuthenticator(mfaConfig);
|
|
311
|
+
setMfaAuthenticator(authenticator);
|
|
312
|
+
setRequiresMFA(true);
|
|
313
|
+
}
|
|
314
|
+
Logger.debug("App Code", { ">>>": options.appCode });
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
localStorage.removeItem(storageKey);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch (_b) { }
|
|
321
|
+
}
|
|
322
|
+
else if (account) {
|
|
323
|
+
// Storage cleared but MSAL account exists - clear MSAL state
|
|
324
|
+
instance.logoutRedirect().catch(function () { });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}, [accessToken, account, instance, options.storageKey]);
|
|
328
|
+
// useEffect(() => {
|
|
329
|
+
// const handleRedirect = async () => {
|
|
330
|
+
// try {
|
|
331
|
+
// const response = await instance.handleRedirectPromise();
|
|
332
|
+
// if (response) {
|
|
333
|
+
// const account = response.account;
|
|
334
|
+
// instance.setActiveA ccount(account);
|
|
335
|
+
// const tokenResponse = await instance.acq uireTokenSilent({
|
|
336
|
+
// scopes,
|
|
337
|
+
// account,
|
|
338
|
+
// });
|
|
339
|
+
// setToken(tokenResponse.accessToken);
|
|
340
|
+
// setAccessToken(tokenResponse.accessToken);
|
|
341
|
+
// setIdToken(tokenResponse.idTo ken);
|
|
342
|
+
// options.onAuthSuccess?.(tokenR esponse.accessToken);
|
|
343
|
+
// if (
|
|
344
|
+
// typeof window !== "undefined" &&
|
|
345
|
+
// process.env.NODE_ENV !== "test"
|
|
346
|
+
// ) {
|
|
347
|
+
// window.location.href = options.mfaUrl!;
|
|
348
|
+
// }
|
|
349
|
+
// }
|
|
350
|
+
// } catch (err) {
|
|
351
|
+
// console.error("Redirect handling failed:", err);
|
|
352
|
+
// }
|
|
353
|
+
// };
|
|
354
|
+
// handleRedirect();
|
|
355
|
+
// }, []);
|
|
356
|
+
var login = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
357
|
+
var response, mfaConfig, authenticator, err_1, camsError_1, camsError;
|
|
358
|
+
var _a, _b, _c, _d;
|
|
359
|
+
return __generator(this, function (_e) {
|
|
360
|
+
switch (_e.label) {
|
|
361
|
+
case 0:
|
|
362
|
+
setError(null);
|
|
363
|
+
_e.label = 1;
|
|
364
|
+
case 1:
|
|
365
|
+
_e.trys.push([1, 3, , 4]);
|
|
366
|
+
return [4 /*yield*/, instance.loginPopup({
|
|
367
|
+
scopes: scopes,
|
|
368
|
+
prompt: options.prompt || "login",
|
|
369
|
+
})];
|
|
370
|
+
case 2:
|
|
371
|
+
response = _e.sent();
|
|
372
|
+
console.log("Login Token response:", {
|
|
373
|
+
accessToken: response.accessToken,
|
|
374
|
+
idToken: response.idToken,
|
|
375
|
+
});
|
|
376
|
+
setAccessToken(response.accessToken);
|
|
377
|
+
setIdToken(response.idToken);
|
|
378
|
+
mfaConfig = {
|
|
379
|
+
accessToken: response.accessToken,
|
|
380
|
+
idToken: response.idToken,
|
|
381
|
+
appCode: options.appCode,
|
|
382
|
+
provider: "MSAL",
|
|
383
|
+
apiEndpoint: options.MFAEndpoint,
|
|
384
|
+
};
|
|
385
|
+
authenticator = new CAMSMFAAuthenticator(mfaConfig);
|
|
386
|
+
setMfaAuthenticator(authenticator);
|
|
387
|
+
setRequiresMFA(true);
|
|
388
|
+
// Don't persist as authenticated until MFA is complete
|
|
389
|
+
if (typeof window !== "undefined") {
|
|
390
|
+
localStorage.setItem(storageKey, JSON.stringify({
|
|
391
|
+
isAuthenticated: false,
|
|
392
|
+
requiresMFA: true,
|
|
393
|
+
accessToken: response.accessToken,
|
|
394
|
+
idToken: response.idToken,
|
|
395
|
+
}));
|
|
396
|
+
}
|
|
397
|
+
(_a = options.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(options, response.accessToken);
|
|
398
|
+
return [3 /*break*/, 4];
|
|
399
|
+
case 3:
|
|
400
|
+
err_1 = _e.sent();
|
|
401
|
+
// Handle user cancellation gracefully
|
|
402
|
+
if (err_1.errorCode === "user_cancelled") {
|
|
403
|
+
Logger.error("User cancelled login");
|
|
404
|
+
setError(null); // Don't treat cancellation as an error
|
|
405
|
+
return [2 /*return*/];
|
|
406
|
+
}
|
|
407
|
+
// If popup is blocked
|
|
408
|
+
if (err_1.errorCode === "popup_window_error" ||
|
|
409
|
+
((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.includes("popup"))) {
|
|
410
|
+
camsError_1 = new CAMSError(CAMSErrorType.POPUP_BLOCKED, "Popup blocked by browser. Please allow popups and try again.");
|
|
411
|
+
setError(camsError_1);
|
|
412
|
+
(_c = options.onAuthError) === null || _c === void 0 ? void 0 : _c.call(options, camsError_1);
|
|
413
|
+
return [2 /*return*/];
|
|
414
|
+
}
|
|
415
|
+
camsError = new CAMSError(CAMSErrorType.API_VALIDATION_ERROR, "Login failed: " + err_1.message || err_1);
|
|
416
|
+
setError(camsError);
|
|
417
|
+
(_d = options.onAuthError) === null || _d === void 0 ? void 0 : _d.call(options, camsError);
|
|
418
|
+
return [3 /*break*/, 4];
|
|
419
|
+
case 4: return [2 /*return*/];
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
}); }, [instance, scopes, options]);
|
|
423
|
+
var completeMFA = useCallback(function (data) { return __awaiter(_this, void 0, void 0, function () {
|
|
424
|
+
return __generator(this, function (_a) {
|
|
425
|
+
if (!mfaAuthenticator) {
|
|
426
|
+
throw new CAMSError(CAMSErrorType.API_VALIDATION_ERROR, "MFA Authenticator not initialized");
|
|
427
|
+
}
|
|
428
|
+
Logger.info("Completed MFA.. Setting State");
|
|
429
|
+
try {
|
|
430
|
+
// Update storage with complete authentication BEFORE setting state
|
|
431
|
+
if (typeof window !== "undefined") {
|
|
432
|
+
localStorage.setItem(storageKey, JSON.stringify({
|
|
433
|
+
isAuthenticated: true,
|
|
434
|
+
requiresMFA: false,
|
|
435
|
+
accessToken: accessToken,
|
|
436
|
+
idToken: idToken,
|
|
437
|
+
}));
|
|
438
|
+
setCookie$1("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({ type: "AUTH_SUCCESS", userProfile: __assign({}, data) }), 1);
|
|
439
|
+
setRequiresMFA(false);
|
|
440
|
+
// Set requiresMFA to false after storage update
|
|
441
|
+
Logger.debug("MFA completed successfully, storage updated", {
|
|
442
|
+
accessToken: accessToken,
|
|
443
|
+
idToken: idToken,
|
|
444
|
+
isAuthenticated: true,
|
|
445
|
+
requiresMFA: false,
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
Logger.debug("MFA completed successfully, requiresMFA set to false");
|
|
449
|
+
return [2 /*return*/, data];
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
setError(error);
|
|
453
|
+
throw error;
|
|
454
|
+
}
|
|
455
|
+
return [2 /*return*/];
|
|
456
|
+
});
|
|
457
|
+
}); }, [mfaAuthenticator, accessToken, idToken, storageKey]);
|
|
458
|
+
var sendEmailOTP = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
459
|
+
return __generator(this, function (_a) {
|
|
460
|
+
switch (_a.label) {
|
|
461
|
+
case 0:
|
|
462
|
+
if (!mfaAuthenticator) {
|
|
463
|
+
return [2 /*return*/, false];
|
|
464
|
+
}
|
|
465
|
+
return [4 /*yield*/, mfaAuthenticator.sendEmailOTP()];
|
|
466
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
}); }, [mfaAuthenticator]);
|
|
470
|
+
var logout = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
471
|
+
var err_2, camsError;
|
|
472
|
+
return __generator(this, function (_a) {
|
|
473
|
+
switch (_a.label) {
|
|
474
|
+
case 0:
|
|
475
|
+
_a.trys.push([0, 2, , 3]);
|
|
476
|
+
Logger.info("Logging User Out");
|
|
477
|
+
return [4 /*yield*/, instance.logoutRedirect()];
|
|
478
|
+
case 1:
|
|
479
|
+
_a.sent();
|
|
480
|
+
setAccessToken("");
|
|
481
|
+
setIdToken("");
|
|
482
|
+
setError(null);
|
|
483
|
+
setMfaAuthenticator(null);
|
|
484
|
+
setRequiresMFA(false);
|
|
485
|
+
if (typeof window !== "undefined") {
|
|
486
|
+
localStorage.removeItem(storageKey);
|
|
487
|
+
}
|
|
488
|
+
return [3 /*break*/, 3];
|
|
489
|
+
case 2:
|
|
490
|
+
err_2 = _a.sent();
|
|
491
|
+
camsError = new CAMSError(CAMSErrorType.API_VALIDATION_ERROR, "Logout failed: " + err_2);
|
|
492
|
+
setError(camsError);
|
|
493
|
+
return [3 /*break*/, 3];
|
|
494
|
+
case 3: return [2 /*return*/];
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
}); }, [instance, storageKey]);
|
|
498
|
+
return {
|
|
499
|
+
login: login,
|
|
500
|
+
logout: logout,
|
|
501
|
+
storageKey: storageKey,
|
|
502
|
+
isAuthenticated: isAuthenticated,
|
|
503
|
+
isLoading: isLoading,
|
|
504
|
+
error: error,
|
|
505
|
+
idToken: idToken,
|
|
506
|
+
accessToken: accessToken,
|
|
507
|
+
appCode: options.appCode,
|
|
508
|
+
mfaAuthenticator: mfaAuthenticator,
|
|
509
|
+
requiresMFA: requiresMFA,
|
|
510
|
+
completeMFA: completeMFA,
|
|
511
|
+
sendEmailOTP: sendEmailOTP,
|
|
512
|
+
setRequiresMFA: setRequiresMFA,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Hook for handling authentication in popup windows
|
|
518
|
+
* This should be used by the popup app to complete authentication
|
|
519
|
+
*/
|
|
520
|
+
function useCAMSPopupAuth(options) {
|
|
521
|
+
if (options === void 0) { options = {}; }
|
|
522
|
+
var _a = options.storageKey, storageKey = _a === void 0 ? "CAMS-SDK" : _a, targetOrigin = options.targetOrigin, onAuthComplete = options.onAuthComplete, onAuthError = options.onAuthError;
|
|
523
|
+
useEffect(function () {
|
|
524
|
+
if (typeof window === "undefined" || !isPopupWindow())
|
|
525
|
+
return;
|
|
526
|
+
// Initialize popup auth handler
|
|
527
|
+
initializePopupAuth(targetOrigin);
|
|
528
|
+
// Set up global handlers for the popup app
|
|
529
|
+
var globalHandlers = window.__CAMS_POPUP_AUTH__;
|
|
530
|
+
if (globalHandlers) {
|
|
531
|
+
var originalCompleteAuth_1 = globalHandlers.completeAuth;
|
|
532
|
+
var originalErrorAuth_1 = globalHandlers.errorAuth;
|
|
533
|
+
globalHandlers.completeAuth = function (profile) {
|
|
534
|
+
onAuthComplete === null || onAuthComplete === void 0 ? void 0 : onAuthComplete(profile);
|
|
535
|
+
originalCompleteAuth_1(profile);
|
|
536
|
+
};
|
|
537
|
+
globalHandlers.errorAuth = function (error) {
|
|
538
|
+
onAuthError === null || onAuthError === void 0 ? void 0 : onAuthError(error);
|
|
539
|
+
originalErrorAuth_1(error);
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
}, [targetOrigin, onAuthComplete, onAuthError]);
|
|
543
|
+
var completeAuth = useCallback(function (profile) {
|
|
544
|
+
if (!isPopupWindow()) {
|
|
545
|
+
console.warn("completeAuth called outside of popup window");
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
var sessionManager = new CAMSSessionManager(localStorage, storageKey);
|
|
549
|
+
sessionManager.completePopupAuth(profile, targetOrigin);
|
|
550
|
+
}, [storageKey, targetOrigin]);
|
|
551
|
+
var errorAuth = useCallback(function (error) {
|
|
552
|
+
if (!isPopupWindow()) {
|
|
553
|
+
console.warn("errorAuth called outside of popup window");
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
var sessionManager = new CAMSSessionManager(localStorage, storageKey);
|
|
557
|
+
sessionManager.errorPopupAuth(error, targetOrigin);
|
|
558
|
+
}, [storageKey, targetOrigin]);
|
|
559
|
+
return {
|
|
560
|
+
completeAuth: completeAuth,
|
|
561
|
+
errorAuth: errorAuth,
|
|
562
|
+
isPopup: isPopupWindow(),
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
var jsxRuntime = {exports: {}};
|
|
567
|
+
|
|
568
|
+
var reactJsxRuntime_production = {};
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* @license React
|
|
572
|
+
* react-jsx-runtime.production.js
|
|
573
|
+
*
|
|
574
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
575
|
+
*
|
|
576
|
+
* This source code is licensed under the MIT license found in the
|
|
577
|
+
* LICENSE file in the root directory of this source tree.
|
|
578
|
+
*/
|
|
579
|
+
|
|
580
|
+
var hasRequiredReactJsxRuntime_production;
|
|
581
|
+
|
|
582
|
+
function requireReactJsxRuntime_production () {
|
|
583
|
+
if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
|
|
584
|
+
hasRequiredReactJsxRuntime_production = 1;
|
|
585
|
+
var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
|
|
586
|
+
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
|
|
587
|
+
function jsxProd(type, config, maybeKey) {
|
|
588
|
+
var key = null;
|
|
589
|
+
void 0 !== maybeKey && (key = "" + maybeKey);
|
|
590
|
+
void 0 !== config.key && (key = "" + config.key);
|
|
591
|
+
if ("key" in config) {
|
|
592
|
+
maybeKey = {};
|
|
593
|
+
for (var propName in config)
|
|
594
|
+
"key" !== propName && (maybeKey[propName] = config[propName]);
|
|
595
|
+
} else maybeKey = config;
|
|
596
|
+
config = maybeKey.ref;
|
|
597
|
+
return {
|
|
598
|
+
$$typeof: REACT_ELEMENT_TYPE,
|
|
599
|
+
type: type,
|
|
600
|
+
key: key,
|
|
601
|
+
ref: void 0 !== config ? config : null,
|
|
602
|
+
props: maybeKey
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
reactJsxRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
|
|
606
|
+
reactJsxRuntime_production.jsx = jsxProd;
|
|
607
|
+
reactJsxRuntime_production.jsxs = jsxProd;
|
|
608
|
+
return reactJsxRuntime_production;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
var reactJsxRuntime_development = {};
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* @license React
|
|
615
|
+
* react-jsx-runtime.development.js
|
|
616
|
+
*
|
|
617
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
618
|
+
*
|
|
619
|
+
* This source code is licensed under the MIT license found in the
|
|
620
|
+
* LICENSE file in the root directory of this source tree.
|
|
621
|
+
*/
|
|
622
|
+
|
|
623
|
+
var hasRequiredReactJsxRuntime_development;
|
|
624
|
+
|
|
625
|
+
function requireReactJsxRuntime_development () {
|
|
626
|
+
if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;
|
|
627
|
+
hasRequiredReactJsxRuntime_development = 1;
|
|
628
|
+
"production" !== process.env.NODE_ENV &&
|
|
629
|
+
(function () {
|
|
630
|
+
function getComponentNameFromType(type) {
|
|
631
|
+
if (null == type) return null;
|
|
632
|
+
if ("function" === typeof type)
|
|
633
|
+
return type.$$typeof === REACT_CLIENT_REFERENCE
|
|
634
|
+
? null
|
|
635
|
+
: type.displayName || type.name || null;
|
|
636
|
+
if ("string" === typeof type) return type;
|
|
637
|
+
switch (type) {
|
|
638
|
+
case REACT_FRAGMENT_TYPE:
|
|
639
|
+
return "Fragment";
|
|
640
|
+
case REACT_PROFILER_TYPE:
|
|
641
|
+
return "Profiler";
|
|
642
|
+
case REACT_STRICT_MODE_TYPE:
|
|
643
|
+
return "StrictMode";
|
|
644
|
+
case REACT_SUSPENSE_TYPE:
|
|
645
|
+
return "Suspense";
|
|
646
|
+
case REACT_SUSPENSE_LIST_TYPE:
|
|
647
|
+
return "SuspenseList";
|
|
648
|
+
case REACT_ACTIVITY_TYPE:
|
|
649
|
+
return "Activity";
|
|
650
|
+
}
|
|
651
|
+
if ("object" === typeof type)
|
|
652
|
+
switch (
|
|
653
|
+
("number" === typeof type.tag &&
|
|
654
|
+
console.error(
|
|
655
|
+
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
|
|
656
|
+
),
|
|
657
|
+
type.$$typeof)
|
|
658
|
+
) {
|
|
659
|
+
case REACT_PORTAL_TYPE:
|
|
660
|
+
return "Portal";
|
|
661
|
+
case REACT_CONTEXT_TYPE:
|
|
662
|
+
return (type.displayName || "Context") + ".Provider";
|
|
663
|
+
case REACT_CONSUMER_TYPE:
|
|
664
|
+
return (type._context.displayName || "Context") + ".Consumer";
|
|
665
|
+
case REACT_FORWARD_REF_TYPE:
|
|
666
|
+
var innerType = type.render;
|
|
667
|
+
type = type.displayName;
|
|
668
|
+
type ||
|
|
669
|
+
((type = innerType.displayName || innerType.name || ""),
|
|
670
|
+
(type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"));
|
|
671
|
+
return type;
|
|
672
|
+
case REACT_MEMO_TYPE:
|
|
673
|
+
return (
|
|
674
|
+
(innerType = type.displayName || null),
|
|
675
|
+
null !== innerType
|
|
676
|
+
? innerType
|
|
677
|
+
: getComponentNameFromType(type.type) || "Memo"
|
|
678
|
+
);
|
|
679
|
+
case REACT_LAZY_TYPE:
|
|
680
|
+
innerType = type._payload;
|
|
681
|
+
type = type._init;
|
|
682
|
+
try {
|
|
683
|
+
return getComponentNameFromType(type(innerType));
|
|
684
|
+
} catch (x) {}
|
|
685
|
+
}
|
|
686
|
+
return null;
|
|
687
|
+
}
|
|
688
|
+
function testStringCoercion(value) {
|
|
689
|
+
return "" + value;
|
|
690
|
+
}
|
|
691
|
+
function checkKeyStringCoercion(value) {
|
|
692
|
+
try {
|
|
693
|
+
testStringCoercion(value);
|
|
694
|
+
var JSCompiler_inline_result = !1;
|
|
695
|
+
} catch (e) {
|
|
696
|
+
JSCompiler_inline_result = true;
|
|
697
|
+
}
|
|
698
|
+
if (JSCompiler_inline_result) {
|
|
699
|
+
JSCompiler_inline_result = console;
|
|
700
|
+
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
|
701
|
+
var JSCompiler_inline_result$jscomp$0 =
|
|
702
|
+
("function" === typeof Symbol &&
|
|
703
|
+
Symbol.toStringTag &&
|
|
704
|
+
value[Symbol.toStringTag]) ||
|
|
705
|
+
value.constructor.name ||
|
|
706
|
+
"Object";
|
|
707
|
+
JSCompiler_temp_const.call(
|
|
708
|
+
JSCompiler_inline_result,
|
|
709
|
+
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
|
710
|
+
JSCompiler_inline_result$jscomp$0
|
|
711
|
+
);
|
|
712
|
+
return testStringCoercion(value);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
function getTaskName(type) {
|
|
716
|
+
if (type === REACT_FRAGMENT_TYPE) return "<>";
|
|
717
|
+
if (
|
|
718
|
+
"object" === typeof type &&
|
|
719
|
+
null !== type &&
|
|
720
|
+
type.$$typeof === REACT_LAZY_TYPE
|
|
721
|
+
)
|
|
722
|
+
return "<...>";
|
|
723
|
+
try {
|
|
724
|
+
var name = getComponentNameFromType(type);
|
|
725
|
+
return name ? "<" + name + ">" : "<...>";
|
|
726
|
+
} catch (x) {
|
|
727
|
+
return "<...>";
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
function getOwner() {
|
|
731
|
+
var dispatcher = ReactSharedInternals.A;
|
|
732
|
+
return null === dispatcher ? null : dispatcher.getOwner();
|
|
733
|
+
}
|
|
734
|
+
function UnknownOwner() {
|
|
735
|
+
return Error("react-stack-top-frame");
|
|
736
|
+
}
|
|
737
|
+
function hasValidKey(config) {
|
|
738
|
+
if (hasOwnProperty.call(config, "key")) {
|
|
739
|
+
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
|
740
|
+
if (getter && getter.isReactWarning) return false;
|
|
741
|
+
}
|
|
742
|
+
return void 0 !== config.key;
|
|
743
|
+
}
|
|
744
|
+
function defineKeyPropWarningGetter(props, displayName) {
|
|
745
|
+
function warnAboutAccessingKey() {
|
|
746
|
+
specialPropKeyWarningShown ||
|
|
747
|
+
((specialPropKeyWarningShown = true),
|
|
748
|
+
console.error(
|
|
749
|
+
"%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)",
|
|
750
|
+
displayName
|
|
751
|
+
));
|
|
752
|
+
}
|
|
753
|
+
warnAboutAccessingKey.isReactWarning = true;
|
|
754
|
+
Object.defineProperty(props, "key", {
|
|
755
|
+
get: warnAboutAccessingKey,
|
|
756
|
+
configurable: true
|
|
757
|
+
});
|
|
758
|
+
}
|
|
759
|
+
function elementRefGetterWithDeprecationWarning() {
|
|
760
|
+
var componentName = getComponentNameFromType(this.type);
|
|
761
|
+
didWarnAboutElementRef[componentName] ||
|
|
762
|
+
((didWarnAboutElementRef[componentName] = true),
|
|
763
|
+
console.error(
|
|
764
|
+
"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."
|
|
765
|
+
));
|
|
766
|
+
componentName = this.props.ref;
|
|
767
|
+
return void 0 !== componentName ? componentName : null;
|
|
768
|
+
}
|
|
769
|
+
function ReactElement(
|
|
770
|
+
type,
|
|
771
|
+
key,
|
|
772
|
+
self,
|
|
773
|
+
source,
|
|
774
|
+
owner,
|
|
775
|
+
props,
|
|
776
|
+
debugStack,
|
|
777
|
+
debugTask
|
|
778
|
+
) {
|
|
779
|
+
self = props.ref;
|
|
780
|
+
type = {
|
|
781
|
+
$$typeof: REACT_ELEMENT_TYPE,
|
|
782
|
+
type: type,
|
|
783
|
+
key: key,
|
|
784
|
+
props: props,
|
|
785
|
+
_owner: owner
|
|
786
|
+
};
|
|
787
|
+
null !== (void 0 !== self ? self : null)
|
|
788
|
+
? Object.defineProperty(type, "ref", {
|
|
789
|
+
enumerable: false,
|
|
790
|
+
get: elementRefGetterWithDeprecationWarning
|
|
791
|
+
})
|
|
792
|
+
: Object.defineProperty(type, "ref", { enumerable: false, value: null });
|
|
793
|
+
type._store = {};
|
|
794
|
+
Object.defineProperty(type._store, "validated", {
|
|
795
|
+
configurable: false,
|
|
796
|
+
enumerable: false,
|
|
797
|
+
writable: true,
|
|
798
|
+
value: 0
|
|
799
|
+
});
|
|
800
|
+
Object.defineProperty(type, "_debugInfo", {
|
|
801
|
+
configurable: false,
|
|
802
|
+
enumerable: false,
|
|
803
|
+
writable: true,
|
|
804
|
+
value: null
|
|
805
|
+
});
|
|
806
|
+
Object.defineProperty(type, "_debugStack", {
|
|
807
|
+
configurable: false,
|
|
808
|
+
enumerable: false,
|
|
809
|
+
writable: true,
|
|
810
|
+
value: debugStack
|
|
811
|
+
});
|
|
812
|
+
Object.defineProperty(type, "_debugTask", {
|
|
813
|
+
configurable: false,
|
|
814
|
+
enumerable: false,
|
|
815
|
+
writable: true,
|
|
816
|
+
value: debugTask
|
|
817
|
+
});
|
|
818
|
+
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
|
819
|
+
return type;
|
|
820
|
+
}
|
|
821
|
+
function jsxDEVImpl(
|
|
822
|
+
type,
|
|
823
|
+
config,
|
|
824
|
+
maybeKey,
|
|
825
|
+
isStaticChildren,
|
|
826
|
+
source,
|
|
827
|
+
self,
|
|
828
|
+
debugStack,
|
|
829
|
+
debugTask
|
|
830
|
+
) {
|
|
831
|
+
var children = config.children;
|
|
832
|
+
if (void 0 !== children)
|
|
833
|
+
if (isStaticChildren)
|
|
834
|
+
if (isArrayImpl(children)) {
|
|
835
|
+
for (
|
|
836
|
+
isStaticChildren = 0;
|
|
837
|
+
isStaticChildren < children.length;
|
|
838
|
+
isStaticChildren++
|
|
839
|
+
)
|
|
840
|
+
validateChildKeys(children[isStaticChildren]);
|
|
841
|
+
Object.freeze && Object.freeze(children);
|
|
842
|
+
} else
|
|
843
|
+
console.error(
|
|
844
|
+
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
|
|
845
|
+
);
|
|
846
|
+
else validateChildKeys(children);
|
|
847
|
+
if (hasOwnProperty.call(config, "key")) {
|
|
848
|
+
children = getComponentNameFromType(type);
|
|
849
|
+
var keys = Object.keys(config).filter(function (k) {
|
|
850
|
+
return "key" !== k;
|
|
851
|
+
});
|
|
852
|
+
isStaticChildren =
|
|
853
|
+
0 < keys.length
|
|
854
|
+
? "{key: someKey, " + keys.join(": ..., ") + ": ...}"
|
|
855
|
+
: "{key: someKey}";
|
|
856
|
+
didWarnAboutKeySpread[children + isStaticChildren] ||
|
|
857
|
+
((keys =
|
|
858
|
+
0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}"),
|
|
859
|
+
console.error(
|
|
860
|
+
'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} />',
|
|
861
|
+
isStaticChildren,
|
|
862
|
+
children,
|
|
863
|
+
keys,
|
|
864
|
+
children
|
|
865
|
+
),
|
|
866
|
+
(didWarnAboutKeySpread[children + isStaticChildren] = true));
|
|
867
|
+
}
|
|
868
|
+
children = null;
|
|
869
|
+
void 0 !== maybeKey &&
|
|
870
|
+
(checkKeyStringCoercion(maybeKey), (children = "" + maybeKey));
|
|
871
|
+
hasValidKey(config) &&
|
|
872
|
+
(checkKeyStringCoercion(config.key), (children = "" + config.key));
|
|
873
|
+
if ("key" in config) {
|
|
874
|
+
maybeKey = {};
|
|
875
|
+
for (var propName in config)
|
|
876
|
+
"key" !== propName && (maybeKey[propName] = config[propName]);
|
|
877
|
+
} else maybeKey = config;
|
|
878
|
+
children &&
|
|
879
|
+
defineKeyPropWarningGetter(
|
|
880
|
+
maybeKey,
|
|
881
|
+
"function" === typeof type
|
|
882
|
+
? type.displayName || type.name || "Unknown"
|
|
883
|
+
: type
|
|
884
|
+
);
|
|
885
|
+
return ReactElement(
|
|
886
|
+
type,
|
|
887
|
+
children,
|
|
888
|
+
self,
|
|
889
|
+
source,
|
|
890
|
+
getOwner(),
|
|
891
|
+
maybeKey,
|
|
892
|
+
debugStack,
|
|
893
|
+
debugTask
|
|
894
|
+
);
|
|
895
|
+
}
|
|
896
|
+
function validateChildKeys(node) {
|
|
897
|
+
"object" === typeof node &&
|
|
898
|
+
null !== node &&
|
|
899
|
+
node.$$typeof === REACT_ELEMENT_TYPE &&
|
|
900
|
+
node._store &&
|
|
901
|
+
(node._store.validated = 1);
|
|
902
|
+
}
|
|
903
|
+
var React = React__default,
|
|
904
|
+
REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
|
|
905
|
+
REACT_PORTAL_TYPE = Symbol.for("react.portal"),
|
|
906
|
+
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
|
|
907
|
+
REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
|
|
908
|
+
REACT_PROFILER_TYPE = Symbol.for("react.profiler");
|
|
909
|
+
var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
|
|
910
|
+
REACT_CONTEXT_TYPE = Symbol.for("react.context"),
|
|
911
|
+
REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
|
|
912
|
+
REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
|
|
913
|
+
REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"),
|
|
914
|
+
REACT_MEMO_TYPE = Symbol.for("react.memo"),
|
|
915
|
+
REACT_LAZY_TYPE = Symbol.for("react.lazy"),
|
|
916
|
+
REACT_ACTIVITY_TYPE = Symbol.for("react.activity"),
|
|
917
|
+
REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"),
|
|
918
|
+
ReactSharedInternals =
|
|
919
|
+
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
|
|
920
|
+
hasOwnProperty = Object.prototype.hasOwnProperty,
|
|
921
|
+
isArrayImpl = Array.isArray,
|
|
922
|
+
createTask = console.createTask
|
|
923
|
+
? console.createTask
|
|
924
|
+
: function () {
|
|
925
|
+
return null;
|
|
926
|
+
};
|
|
927
|
+
React = {
|
|
928
|
+
react_stack_bottom_frame: function (callStackForError) {
|
|
929
|
+
return callStackForError();
|
|
930
|
+
}
|
|
931
|
+
};
|
|
932
|
+
var specialPropKeyWarningShown;
|
|
933
|
+
var didWarnAboutElementRef = {};
|
|
934
|
+
var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(
|
|
935
|
+
React,
|
|
936
|
+
UnknownOwner
|
|
937
|
+
)();
|
|
938
|
+
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
|
939
|
+
var didWarnAboutKeySpread = {};
|
|
940
|
+
reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
|
|
941
|
+
reactJsxRuntime_development.jsx = function (type, config, maybeKey, source, self) {
|
|
942
|
+
var trackActualOwner =
|
|
943
|
+
1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
|
944
|
+
return jsxDEVImpl(
|
|
945
|
+
type,
|
|
946
|
+
config,
|
|
947
|
+
maybeKey,
|
|
948
|
+
false,
|
|
949
|
+
source,
|
|
950
|
+
self,
|
|
951
|
+
trackActualOwner
|
|
952
|
+
? Error("react-stack-top-frame")
|
|
953
|
+
: unknownOwnerDebugStack,
|
|
954
|
+
trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
|
|
955
|
+
);
|
|
956
|
+
};
|
|
957
|
+
reactJsxRuntime_development.jsxs = function (type, config, maybeKey, source, self) {
|
|
958
|
+
var trackActualOwner =
|
|
959
|
+
1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
|
960
|
+
return jsxDEVImpl(
|
|
961
|
+
type,
|
|
962
|
+
config,
|
|
963
|
+
maybeKey,
|
|
964
|
+
true,
|
|
965
|
+
source,
|
|
966
|
+
self,
|
|
967
|
+
trackActualOwner
|
|
968
|
+
? Error("react-stack-top-frame")
|
|
969
|
+
: unknownOwnerDebugStack,
|
|
970
|
+
trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
|
|
971
|
+
);
|
|
972
|
+
};
|
|
973
|
+
})();
|
|
974
|
+
return reactJsxRuntime_development;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
if (process.env.NODE_ENV === 'production') {
|
|
978
|
+
jsxRuntime.exports = requireReactJsxRuntime_production();
|
|
979
|
+
} else {
|
|
980
|
+
jsxRuntime.exports = requireReactJsxRuntime_development();
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
var jsxRuntimeExports = jsxRuntime.exports;
|
|
984
|
+
|
|
985
|
+
var CAMSContext$1 = createContext(null);
|
|
986
|
+
function useCAMSContext$1() {
|
|
987
|
+
var context = useContext(CAMSContext$1);
|
|
988
|
+
if (!context) {
|
|
989
|
+
throw new Error('useCAMSContext must be used within a CAMSProvider');
|
|
990
|
+
}
|
|
991
|
+
return context;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
function ProtectedRoute(_a) {
|
|
995
|
+
var children = _a.children, fallback = _a.fallback, redirectTo = _a.redirectTo;
|
|
996
|
+
var _b = useCAMSContext$1(), isAuthenticated = _b.isAuthenticated, isLoading = _b.isLoading;
|
|
997
|
+
if (isLoading) {
|
|
998
|
+
return fallback || jsxRuntimeExports.jsx("div", { children: "Loading..." });
|
|
999
|
+
}
|
|
1000
|
+
if (!isAuthenticated) {
|
|
1001
|
+
if (redirectTo && typeof window !== 'undefined') {
|
|
1002
|
+
window.location.href = redirectTo;
|
|
1003
|
+
return null;
|
|
1004
|
+
}
|
|
1005
|
+
return fallback || jsxRuntimeExports.jsx("div", { children: "Access denied. Please log in." });
|
|
1006
|
+
}
|
|
1007
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
var CAMSMSALContext = createContext(null);
|
|
1011
|
+
var setCookie = function (name, value, days) {
|
|
1012
|
+
var expires = new Date(Date.now() + days * 864e5).toUTCString();
|
|
1013
|
+
document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
|
|
1014
|
+
};
|
|
1015
|
+
var getCookie = function (name) {
|
|
1016
|
+
var _a;
|
|
1017
|
+
return ((_a = document.cookie
|
|
1018
|
+
.split("; ")
|
|
1019
|
+
.find(function (row) { return row.startsWith(name + "="); })) === null || _a === void 0 ? void 0 : _a.split("=")[1])
|
|
1020
|
+
? decodeURIComponent(document.cookie
|
|
1021
|
+
.split("; ")
|
|
1022
|
+
.find(function (row) { return row.startsWith(name + "="); })
|
|
1023
|
+
.split("=")[1])
|
|
1024
|
+
: null;
|
|
1025
|
+
};
|
|
1026
|
+
var deleteCookie = function (name) {
|
|
1027
|
+
document.cookie = name + "=; Max-Age=-99999999; path=/";
|
|
1028
|
+
};
|
|
1029
|
+
var isTokenValid = function (token) {
|
|
1030
|
+
try {
|
|
1031
|
+
var payload = JSON.parse(atob(token.split(".")[1]));
|
|
1032
|
+
return payload.exp * 1000 > Date.now();
|
|
1033
|
+
}
|
|
1034
|
+
catch (_a) {
|
|
1035
|
+
return false;
|
|
1036
|
+
}
|
|
1037
|
+
};
|
|
1038
|
+
function CAMSMSALProviderInner(_a) {
|
|
1039
|
+
var _this = this;
|
|
1040
|
+
var children = _a.children, authOptions = __rest(_a, ["children"]);
|
|
1041
|
+
var auth = useCAMSMSALAuth(authOptions);
|
|
1042
|
+
var profileStorageKey = "".concat(auth.storageKey, "-PROFILE");
|
|
1043
|
+
var getInitialProfile = function () {
|
|
1044
|
+
if (typeof window === "undefined") {
|
|
1045
|
+
return null;
|
|
1046
|
+
}
|
|
1047
|
+
try {
|
|
1048
|
+
var storedProfile = getCookie(profileStorageKey);
|
|
1049
|
+
return storedProfile ? JSON.parse(storedProfile) : null;
|
|
1050
|
+
}
|
|
1051
|
+
catch (_a) {
|
|
1052
|
+
return null;
|
|
1053
|
+
}
|
|
1054
|
+
};
|
|
1055
|
+
var _b = useState(getInitialProfile), userProfile = _b[0], setUserProfile = _b[1];
|
|
1056
|
+
// Load profile from storage on mount
|
|
1057
|
+
useEffect(function () {
|
|
1058
|
+
if (typeof window !== "undefined") {
|
|
1059
|
+
// const storedProfile = localStorage.get Item(profileStorageKey);
|
|
1060
|
+
var storedProfile = getCookie(profileStorageKey);
|
|
1061
|
+
if (storedProfile) {
|
|
1062
|
+
try {
|
|
1063
|
+
setUserProfile(JSON.parse(storedProfile));
|
|
1064
|
+
}
|
|
1065
|
+
catch (_a) { }
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
}, [profileStorageKey]);
|
|
1069
|
+
// Persist tokens and profile
|
|
1070
|
+
useEffect(function () {
|
|
1071
|
+
if (auth.accessToken &&
|
|
1072
|
+
isTokenValid(auth.accessToken) &&
|
|
1073
|
+
typeof window !== "undefined") {
|
|
1074
|
+
localStorage.setItem(auth.storageKey, JSON.stringify({
|
|
1075
|
+
accessToken: auth.accessToken,
|
|
1076
|
+
idToken: auth.idToken,
|
|
1077
|
+
appCode: auth.appCode
|
|
1078
|
+
}));
|
|
1079
|
+
}
|
|
1080
|
+
}, [auth.accessToken, auth.idToken, auth.storageKey]);
|
|
1081
|
+
// Persist profile separately
|
|
1082
|
+
useEffect(function () {
|
|
1083
|
+
if (typeof window !== "undefined") {
|
|
1084
|
+
if (userProfile) {
|
|
1085
|
+
setCookie(profileStorageKey, JSON.stringify(userProfile), 1); // Store for 1 day
|
|
1086
|
+
}
|
|
1087
|
+
else {
|
|
1088
|
+
deleteCookie(profileStorageKey);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
}, [userProfile, profileStorageKey]);
|
|
1092
|
+
// Enhanced logout that also clears profile
|
|
1093
|
+
var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1094
|
+
return __generator(this, function (_a) {
|
|
1095
|
+
switch (_a.label) {
|
|
1096
|
+
case 0: return [4 /*yield*/, auth.logout()];
|
|
1097
|
+
case 1:
|
|
1098
|
+
_a.sent();
|
|
1099
|
+
setUserProfile(null);
|
|
1100
|
+
if (typeof window !== "undefined") {
|
|
1101
|
+
deleteCookie(profileStorageKey);
|
|
1102
|
+
}
|
|
1103
|
+
return [2 /*return*/];
|
|
1104
|
+
}
|
|
1105
|
+
});
|
|
1106
|
+
}); };
|
|
1107
|
+
var value = useMemo(function () { return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile })); }, [auth, userProfile]);
|
|
1108
|
+
return (jsxRuntimeExports.jsx(CAMSMSALContext.Provider, { value: value, children: children }));
|
|
1109
|
+
}
|
|
1110
|
+
function CAMSMSALProvider(props) {
|
|
1111
|
+
var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
|
|
1112
|
+
var instance = msalInstance || new PublicClientApplication(msalConfig);
|
|
1113
|
+
return (jsxRuntimeExports.jsx(MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSMSALProviderInner, __assign({}, props)) }));
|
|
1114
|
+
}
|
|
1115
|
+
function useCAMSMSALContext() {
|
|
1116
|
+
var context = useContext(CAMSMSALContext);
|
|
1117
|
+
if (!context) {
|
|
1118
|
+
throw new Error("useCAMSMSALContext must be used within a CAMSMSALProvider");
|
|
1119
|
+
}
|
|
1120
|
+
return context;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
var ClientOnly = function (_a) {
|
|
1124
|
+
var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? null : _b;
|
|
1125
|
+
var _c = useState(false), hasMounted = _c[0], setHasMounted = _c[1];
|
|
1126
|
+
useEffect(function () {
|
|
1127
|
+
setHasMounted(true);
|
|
1128
|
+
}, []);
|
|
1129
|
+
if (!hasMounted) {
|
|
1130
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: fallback });
|
|
1131
|
+
}
|
|
1132
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
|
|
1133
|
+
};
|
|
1134
|
+
|
|
1135
|
+
var CAMSContext = createContext(null);
|
|
1136
|
+
function useCAMSContext() {
|
|
1137
|
+
var context = useContext(CAMSContext);
|
|
1138
|
+
if (!context) {
|
|
1139
|
+
throw new Error("useCAMSContext must be used within a UnifiedCAMSProvider");
|
|
1140
|
+
}
|
|
1141
|
+
return context;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
var GuidSchema = z.uuid("appCode must be a valid GUID");
|
|
1145
|
+
function CAMSProviderCore(props) {
|
|
1146
|
+
var _this = this;
|
|
1147
|
+
var children = props.children, mode = props.mode, appCode = props.appCode;
|
|
1148
|
+
// Always call both hooks to satisfy Rules of Hooks
|
|
1149
|
+
var regularAuth = useCAMSAuth(mode === "REGULAR"
|
|
1150
|
+
? __assign(__assign({}, props), { appCode: appCode })
|
|
1151
|
+
: { appCode: "" });
|
|
1152
|
+
var msalAuth = useCAMSMSALAuth(mode === "MSAL"
|
|
1153
|
+
? __assign(__assign({}, props), { appCode: appCode })
|
|
1154
|
+
: { appCode: "" });
|
|
1155
|
+
var auth = mode === "REGULAR" ? regularAuth : msalAuth;
|
|
1156
|
+
var profileStorageKey = "".concat(auth.storageKey, "-PROFILE");
|
|
1157
|
+
var getInitialProfile = function () {
|
|
1158
|
+
if (typeof window === "undefined")
|
|
1159
|
+
return null;
|
|
1160
|
+
try {
|
|
1161
|
+
var storedProfile = getCookie$1(profileStorageKey);
|
|
1162
|
+
return storedProfile ? JSON.parse(storedProfile) : null;
|
|
1163
|
+
}
|
|
1164
|
+
catch (_a) {
|
|
1165
|
+
return null;
|
|
1166
|
+
}
|
|
1167
|
+
};
|
|
1168
|
+
var _a = useState(getInitialProfile), userProfile = _a[0], setUserProfile = _a[1];
|
|
1169
|
+
useEffect(function () {
|
|
1170
|
+
if (typeof window !== "undefined") {
|
|
1171
|
+
var storedProfile = getCookie$1(profileStorageKey);
|
|
1172
|
+
if (storedProfile) {
|
|
1173
|
+
try {
|
|
1174
|
+
setUserProfile(JSON.parse(storedProfile));
|
|
1175
|
+
}
|
|
1176
|
+
catch (_a) { }
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
}, [profileStorageKey]);
|
|
1180
|
+
useEffect(function () {
|
|
1181
|
+
if (typeof window !== "undefined") {
|
|
1182
|
+
if (userProfile) {
|
|
1183
|
+
setCookie$1(profileStorageKey, JSON.stringify(userProfile), 1);
|
|
1184
|
+
}
|
|
1185
|
+
else {
|
|
1186
|
+
deleteCookie$1(profileStorageKey);
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
}, [userProfile, profileStorageKey]);
|
|
1190
|
+
var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1191
|
+
return __generator(this, function (_a) {
|
|
1192
|
+
switch (_a.label) {
|
|
1193
|
+
case 0: return [4 /*yield*/, auth.logout()];
|
|
1194
|
+
case 1:
|
|
1195
|
+
_a.sent();
|
|
1196
|
+
setUserProfile(null);
|
|
1197
|
+
if (typeof window !== "undefined") {
|
|
1198
|
+
deleteCookie$1(profileStorageKey);
|
|
1199
|
+
}
|
|
1200
|
+
return [2 /*return*/];
|
|
1201
|
+
}
|
|
1202
|
+
});
|
|
1203
|
+
}); };
|
|
1204
|
+
// Handle MFA completion for MSAL mode
|
|
1205
|
+
useEffect(function () {
|
|
1206
|
+
if (mode === "MSAL" &&
|
|
1207
|
+
"requiresMFA" in auth &&
|
|
1208
|
+
!auth.requiresMFA &&
|
|
1209
|
+
auth.isAuthenticated) {
|
|
1210
|
+
// MFA completed, extract profile from localStorage
|
|
1211
|
+
var storedData = localStorage.getItem(auth.storageKey);
|
|
1212
|
+
console.log("MFA Complete - Checking for profile:", storedData);
|
|
1213
|
+
if (storedData) {
|
|
1214
|
+
try {
|
|
1215
|
+
var parsed = JSON.parse(storedData);
|
|
1216
|
+
console.log("Parsed storage data:", parsed);
|
|
1217
|
+
if (parsed.userProfile) {
|
|
1218
|
+
console.log("Setting user profile:", parsed.userProfile);
|
|
1219
|
+
setUserProfile(parsed.userProfile);
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
catch (e) {
|
|
1223
|
+
console.error("Error parsing stored data:", e);
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
}, [
|
|
1228
|
+
mode,
|
|
1229
|
+
"requiresMFA" in auth ? auth.requiresMFA : false,
|
|
1230
|
+
auth.isAuthenticated,
|
|
1231
|
+
auth.storageKey,
|
|
1232
|
+
userProfile,
|
|
1233
|
+
]);
|
|
1234
|
+
var value = useMemo(function () {
|
|
1235
|
+
return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile, authMode: mode }));
|
|
1236
|
+
}, [auth, userProfile, mode]);
|
|
1237
|
+
return jsxRuntimeExports.jsx(CAMSContext.Provider, { value: value, children: children });
|
|
1238
|
+
}
|
|
1239
|
+
function UnifiedCAMSProvider(props) {
|
|
1240
|
+
// Validate appCode is a valid GUID
|
|
1241
|
+
var appCodeValidation = GuidSchema.safeParse(props.appCode);
|
|
1242
|
+
if (!appCodeValidation.success) {
|
|
1243
|
+
throw new Error("Invalid appCode: ".concat(appCodeValidation.error.issues[0].message));
|
|
1244
|
+
}
|
|
1245
|
+
if (props.mode === "MSAL") {
|
|
1246
|
+
var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
|
|
1247
|
+
var instance = msalInstance || new PublicClientApplication(msalConfig);
|
|
1248
|
+
return (jsxRuntimeExports.jsx(MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
|
|
1249
|
+
}
|
|
1250
|
+
return (jsxRuntimeExports.jsx(ClientOnly, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
|
|
1251
|
+
}
|
|
1252
|
+
// Backward compatibility exports
|
|
1253
|
+
var CAMSProvider = function (props) { return (jsxRuntimeExports.jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
|
|
1254
|
+
|
|
1255
|
+
/** A special constant with type `never` */
|
|
1256
|
+
function $constructor(name, initializer, params) {
|
|
1257
|
+
function init(inst, def) {
|
|
1258
|
+
var _a;
|
|
1259
|
+
Object.defineProperty(inst, "_zod", {
|
|
1260
|
+
value: inst._zod ?? {},
|
|
1261
|
+
enumerable: false,
|
|
1262
|
+
});
|
|
1263
|
+
(_a = inst._zod).traits ?? (_a.traits = new Set());
|
|
1264
|
+
inst._zod.traits.add(name);
|
|
1265
|
+
initializer(inst, def);
|
|
1266
|
+
// support prototype modifications
|
|
1267
|
+
for (const k in _.prototype) {
|
|
1268
|
+
if (!(k in inst))
|
|
1269
|
+
Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });
|
|
1270
|
+
}
|
|
1271
|
+
inst._zod.constr = _;
|
|
1272
|
+
inst._zod.def = def;
|
|
1273
|
+
}
|
|
1274
|
+
// doesn't work if Parent has a constructor with arguments
|
|
1275
|
+
const Parent = params?.Parent ?? Object;
|
|
1276
|
+
class Definition extends Parent {
|
|
1277
|
+
}
|
|
1278
|
+
Object.defineProperty(Definition, "name", { value: name });
|
|
1279
|
+
function _(def) {
|
|
1280
|
+
var _a;
|
|
1281
|
+
const inst = params?.Parent ? new Definition() : this;
|
|
1282
|
+
init(inst, def);
|
|
1283
|
+
(_a = inst._zod).deferred ?? (_a.deferred = []);
|
|
1284
|
+
for (const fn of inst._zod.deferred) {
|
|
1285
|
+
fn();
|
|
1286
|
+
}
|
|
1287
|
+
return inst;
|
|
1288
|
+
}
|
|
1289
|
+
Object.defineProperty(_, "init", { value: init });
|
|
1290
|
+
Object.defineProperty(_, Symbol.hasInstance, {
|
|
1291
|
+
value: (inst) => {
|
|
1292
|
+
if (params?.Parent && inst instanceof params.Parent)
|
|
1293
|
+
return true;
|
|
1294
|
+
return inst?._zod?.traits?.has(name);
|
|
1295
|
+
},
|
|
1296
|
+
});
|
|
1297
|
+
Object.defineProperty(_, "name", { value: name });
|
|
1298
|
+
return _;
|
|
1299
|
+
}
|
|
1300
|
+
class $ZodAsyncError extends Error {
|
|
1301
|
+
constructor() {
|
|
1302
|
+
super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
const globalConfig = {};
|
|
1306
|
+
function config(newConfig) {
|
|
1307
|
+
return globalConfig;
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
// functions
|
|
1311
|
+
function jsonStringifyReplacer(_, value) {
|
|
1312
|
+
if (typeof value === "bigint")
|
|
1313
|
+
return value.toString();
|
|
1314
|
+
return value;
|
|
1315
|
+
}
|
|
1316
|
+
const captureStackTrace = ("captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { });
|
|
1317
|
+
function unwrapMessage(message) {
|
|
1318
|
+
return typeof message === "string" ? message : message?.message;
|
|
1319
|
+
}
|
|
1320
|
+
function finalizeIssue(iss, ctx, config) {
|
|
1321
|
+
const full = { ...iss, path: iss.path ?? [] };
|
|
1322
|
+
// for backwards compatibility
|
|
1323
|
+
if (!iss.message) {
|
|
1324
|
+
const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??
|
|
1325
|
+
unwrapMessage(ctx?.error?.(iss)) ??
|
|
1326
|
+
unwrapMessage(config.customError?.(iss)) ??
|
|
1327
|
+
unwrapMessage(config.localeError?.(iss)) ??
|
|
1328
|
+
"Invalid input";
|
|
1329
|
+
full.message = message;
|
|
1330
|
+
}
|
|
1331
|
+
// delete (full as any).def;
|
|
1332
|
+
delete full.inst;
|
|
1333
|
+
delete full.continue;
|
|
1334
|
+
if (!ctx?.reportInput) {
|
|
1335
|
+
delete full.input;
|
|
1336
|
+
}
|
|
1337
|
+
return full;
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
const initializer = (inst, def) => {
|
|
1341
|
+
inst.name = "$ZodError";
|
|
1342
|
+
Object.defineProperty(inst, "_zod", {
|
|
1343
|
+
value: inst._zod,
|
|
1344
|
+
enumerable: false,
|
|
1345
|
+
});
|
|
1346
|
+
Object.defineProperty(inst, "issues", {
|
|
1347
|
+
value: def,
|
|
1348
|
+
enumerable: false,
|
|
1349
|
+
});
|
|
1350
|
+
inst.message = JSON.stringify(def, jsonStringifyReplacer, 2);
|
|
1351
|
+
Object.defineProperty(inst, "toString", {
|
|
1352
|
+
value: () => inst.message,
|
|
1353
|
+
enumerable: false,
|
|
1354
|
+
});
|
|
1355
|
+
};
|
|
1356
|
+
const $ZodError = $constructor("$ZodError", initializer);
|
|
1357
|
+
const $ZodRealError = $constructor("$ZodError", initializer, { Parent: Error });
|
|
1358
|
+
|
|
1359
|
+
const _parse = (_Err) => (schema, value, _ctx, _params) => {
|
|
1360
|
+
const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
|
|
1361
|
+
const result = schema._zod.run({ value, issues: [] }, ctx);
|
|
1362
|
+
if (result instanceof Promise) {
|
|
1363
|
+
throw new $ZodAsyncError();
|
|
1364
|
+
}
|
|
1365
|
+
if (result.issues.length) {
|
|
1366
|
+
const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));
|
|
1367
|
+
captureStackTrace(e, _params?.callee);
|
|
1368
|
+
throw e;
|
|
1369
|
+
}
|
|
1370
|
+
return result.value;
|
|
1371
|
+
};
|
|
1372
|
+
const parse = /* @__PURE__*/ _parse($ZodRealError);
|
|
1373
|
+
const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {
|
|
1374
|
+
const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };
|
|
1375
|
+
let result = schema._zod.run({ value, issues: [] }, ctx);
|
|
1376
|
+
if (result instanceof Promise)
|
|
1377
|
+
result = await result;
|
|
1378
|
+
if (result.issues.length) {
|
|
1379
|
+
const e = new (params?.Err ?? _Err)(result.issues.map((iss) => finalizeIssue(iss, ctx, config())));
|
|
1380
|
+
captureStackTrace(e, params?.callee);
|
|
1381
|
+
throw e;
|
|
1382
|
+
}
|
|
1383
|
+
return result.value;
|
|
1384
|
+
};
|
|
1385
|
+
const parseAsync = /* @__PURE__*/ _parseAsync($ZodRealError);
|
|
1386
|
+
|
|
1387
|
+
function t(r,e){try{var o=r();}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(".");if(!n[a])if("unionErrors"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code};}else n[a]={message:i,type:s};if("unionErrors"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=appendErrors(a,e,n,s,f?[].concat(f,t.message):t.message);}r.shift();}return n}function i$1(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(".");if(!n[a])if("invalid_union"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code};}else n[a]={message:i,type:s};if("invalid_union"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=appendErrors(a,e,n,s,f?[].concat(f,t.message):t.message);}r.shift();}return n}function a$1(o,a,u){if(void 0===u&&(u={}),function(r){return "_def"in r&&"object"==typeof r._def&&"typeName"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o["sync"===u.mode?"parse":"parseAsync"](n,a)).then(function(e){return c.shouldUseNativeValidation&&validateFieldsNatively({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return {values:{},errors:toNestErrors(s(r.errors,!c.shouldUseNativeValidation&&"all"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return "_zod"in r&&"object"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve(("sync"===u.mode?parse:parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&validateFieldsNatively({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof $ZodError}(r))return {values:{},errors:toNestErrors(i$1(r.issues,!f.shouldUseNativeValidation&&"all"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error("Invalid input: not a Zod schema")}
|
|
1388
|
+
|
|
1389
|
+
function cn() {
|
|
1390
|
+
var inputs = [];
|
|
1391
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1392
|
+
inputs[_i] = arguments[_i];
|
|
1393
|
+
}
|
|
1394
|
+
return twMerge(clsx(inputs));
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
function InputOTP(_a) {
|
|
1398
|
+
var className = _a.className, containerClassName = _a.containerClassName, props = __rest(_a, ["className", "containerClassName"]);
|
|
1399
|
+
return (jsxRuntimeExports.jsx(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)));
|
|
1400
|
+
}
|
|
1401
|
+
function InputOTPGroup(_a) {
|
|
1402
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1403
|
+
return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
|
|
1404
|
+
}
|
|
1405
|
+
function InputOTPSlot(_a) {
|
|
1406
|
+
var _b;
|
|
1407
|
+
var index = _a.index, className = _a.className, props = __rest(_a, ["index", "className"]);
|
|
1408
|
+
var inputOTPContext = React.useContext(OTPInputContext);
|
|
1409
|
+
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;
|
|
1410
|
+
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" }) }))] })));
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
function Label(_a) {
|
|
1414
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1415
|
+
return (jsxRuntimeExports.jsx(LabelPrimitive.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)));
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
var Form = FormProvider;
|
|
1419
|
+
var FormFieldContext = React.createContext({});
|
|
1420
|
+
var FormField = function (_a) {
|
|
1421
|
+
var props = __rest(_a, []);
|
|
1422
|
+
return (jsxRuntimeExports.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsxRuntimeExports.jsx(Controller, __assign({}, props)) }));
|
|
1423
|
+
};
|
|
1424
|
+
var useFormField = function () {
|
|
1425
|
+
var fieldContext = React.useContext(FormFieldContext);
|
|
1426
|
+
var itemContext = React.useContext(FormItemContext);
|
|
1427
|
+
var getFieldState = useFormContext().getFieldState;
|
|
1428
|
+
var formState = useFormState({ name: fieldContext.name });
|
|
1429
|
+
var fieldState = getFieldState(fieldContext.name, formState);
|
|
1430
|
+
if (!fieldContext) {
|
|
1431
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
1432
|
+
}
|
|
1433
|
+
var id = itemContext.id;
|
|
1434
|
+
return __assign({ id: id, name: fieldContext.name, formItemId: "".concat(id, "-form-item"), formDescriptionId: "".concat(id, "-form-item-description"), formMessageId: "".concat(id, "-form-item-message") }, fieldState);
|
|
1435
|
+
};
|
|
1436
|
+
var FormItemContext = React.createContext({});
|
|
1437
|
+
function FormItem(_a) {
|
|
1438
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1439
|
+
var id = React.useId();
|
|
1440
|
+
return (jsxRuntimeExports.jsx(FormItemContext.Provider, { value: { id: id }, children: jsxRuntimeExports.jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
|
|
1441
|
+
}
|
|
1442
|
+
function FormLabel(_a) {
|
|
1443
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1444
|
+
var _b = useFormField(), error = _b.error, formItemId = _b.formItemId;
|
|
1445
|
+
return (jsxRuntimeExports.jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
|
|
1446
|
+
}
|
|
1447
|
+
function FormControl(_a) {
|
|
1448
|
+
var props = __rest(_a, []);
|
|
1449
|
+
var _b = useFormField(), error = _b.error, formItemId = _b.formItemId, formDescriptionId = _b.formDescriptionId, formMessageId = _b.formMessageId;
|
|
1450
|
+
return (jsxRuntimeExports.jsx(Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
|
|
1451
|
+
? "".concat(formDescriptionId)
|
|
1452
|
+
: "".concat(formDescriptionId, " ").concat(formMessageId), "aria-invalid": !!error }, props)));
|
|
1453
|
+
}
|
|
1454
|
+
function FormMessage(_a) {
|
|
1455
|
+
var _b;
|
|
1456
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1457
|
+
var _c = useFormField(), error = _c.error, formMessageId = _c.formMessageId;
|
|
1458
|
+
var body = error ? String((_b = error === null || error === void 0 ? void 0 : error.message) !== null && _b !== void 0 ? _b : "") : props.children;
|
|
1459
|
+
if (!body) {
|
|
1460
|
+
return null;
|
|
1461
|
+
}
|
|
1462
|
+
return (jsxRuntimeExports.jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
function Card(_a) {
|
|
1466
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1467
|
+
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)));
|
|
1468
|
+
}
|
|
1469
|
+
function CardHeader(_a) {
|
|
1470
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1471
|
+
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)));
|
|
1472
|
+
}
|
|
1473
|
+
function CardTitle(_a) {
|
|
1474
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1475
|
+
return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
|
|
1476
|
+
}
|
|
1477
|
+
function CardDescription(_a) {
|
|
1478
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1479
|
+
return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
|
|
1480
|
+
}
|
|
1481
|
+
function CardAction(_a) {
|
|
1482
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1483
|
+
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)));
|
|
1484
|
+
}
|
|
1485
|
+
function CardContent(_a) {
|
|
1486
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1487
|
+
return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
|
|
1488
|
+
}
|
|
1489
|
+
function CardFooter(_a) {
|
|
1490
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1491
|
+
return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
var GenericOTPVerifier = function (_a) {
|
|
1495
|
+
var _b, _c;
|
|
1496
|
+
var value = _a.value, setValue = _a.setValue, setLoading = _a.setLoading, onChangeOTP = _a.onChangeOTP, _d = _a.fieldName, fieldName = _d === void 0 ? "EmailOTP" : _d, _e = _a.attemptCount, attemptCount = _e === void 0 ? 0 : _e, _f = _a.remainingAttempts, remainingAttempts = _f === void 0 ? 3 : _f, _g = _a.isMaxAttemptsReached, isMaxAttemptsReached = _g === void 0 ? false : _g;
|
|
1497
|
+
var Schema = z.object((_b = {},
|
|
1498
|
+
_b[fieldName] = z.string().min(6, {
|
|
1499
|
+
message: "One Time Password must be 6 characters.",
|
|
1500
|
+
}),
|
|
1501
|
+
_b));
|
|
1502
|
+
var form = useForm({
|
|
1503
|
+
resolver: a$1(Schema),
|
|
1504
|
+
defaultValues: (_c = {}, _c[fieldName] = "", _c),
|
|
1505
|
+
});
|
|
1506
|
+
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(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
|
|
1507
|
+
? "Maximum attempts reached. Please try again later."
|
|
1508
|
+
: "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) {
|
|
1509
|
+
setValue(authenticationValue);
|
|
1510
|
+
if (authenticationValue.length === 6 &&
|
|
1511
|
+
!isMaxAttemptsReached) {
|
|
1512
|
+
setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
|
|
1513
|
+
onChangeOTP(authenticationValue);
|
|
1514
|
+
}
|
|
1515
|
+
}, pattern: 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
|
|
1516
|
+
? "opacity-50 cursor-not-allowed"
|
|
1517
|
+
: ""), index: idx }, idx + 1)); }) }) }) }), jsxRuntimeExports.jsx(FormMessage, {})] })); } }) })) }) })] }));
|
|
1518
|
+
};
|
|
1519
|
+
|
|
1520
|
+
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";
|
|
1521
|
+
|
|
1522
|
+
var MicrosoftAuthenticatorImg = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3Csvg%20fill%3D%22%23228BE6%22%20version%3D%221.1%22%20baseProfile%3D%22basic%22%20id%3D%22%26%23x421%3B%26%23x43B%3B%26%23x43E%3B%26%23x439%3B_1%22%20%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2050%2050%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20marker-start%3D%22none%22%20marker-end%3D%22none%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A2%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A79.8403%3B%22%20d%3D%22%20M25.001%2C48.001c-9.877%2C0-19-14.025-19-26c0-7.007%2C7.025-9%2C19-9c11.975%2C0%2C19%2C1.993%2C19%2C9C44.001%2C33.975%2C34.878%2C48.001%2C25.001%2C48.001z%22%20%2F%3E%3Cpath%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A2%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A79.8403%3B%22%20d%3D%22%20M12.009%2C14.495c0.235-6.781%2C5.185-12.495%2C12.992-12.495c7.805%2C0%2C12.756%2C5.713%2C12.991%2C12.495%22%2F%3E%3Cpath%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A2%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A79.8403%3B%22%20d%3D%22%20M17.205%2C13.394c0.761-3.087%2C3.597-6.393%2C7.796-6.393c4.197%2C0%2C7.033%2C3.307%2C7.795%2C6.393%22%2F%3E%3Cpath%20marker-start%3D%22none%22%20marker-end%3D%22none%22%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A2%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A79.8403%3B%22%20d%3D%22%20M24.995%2C17.011c3.304%2C0%2C5.987%2C2.681%2C5.987%2C5.984c0%2C3.303-2.683%2C5.984-5.987%2C5.984c-3.304%2C0-5.987-2.681-5.987-5.984%20C19.009%2C19.693%2C21.691%2C17.011%2C24.995%2C17.011z%22%2F%3E%3Cpath%20style%3D%22fill%3Anone%3Bstroke%3A%23000000%3Bstroke-width%3A2%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A79.8403%3B%22%20d%3D%22%20M37.017%2C41.054c-2.4-4.805-6.885-8.041-12.016-8.041c-5.133%2C0-9.617%2C3.235-12.017%2C8.04%22%2F%3E%3C%2Fsvg%3E";
|
|
1523
|
+
|
|
1524
|
+
var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
|
|
1525
|
+
variants: {
|
|
1526
|
+
variant: {
|
|
1527
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
1528
|
+
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
1529
|
+
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
1530
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
1531
|
+
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
1532
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
1533
|
+
},
|
|
1534
|
+
size: {
|
|
1535
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
1536
|
+
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
1537
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
1538
|
+
icon: "size-9",
|
|
1539
|
+
},
|
|
1540
|
+
},
|
|
1541
|
+
defaultVariants: {
|
|
1542
|
+
variant: "default",
|
|
1543
|
+
size: "default",
|
|
1544
|
+
},
|
|
1545
|
+
});
|
|
1546
|
+
function Button(_a) {
|
|
1547
|
+
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"]);
|
|
1548
|
+
var Comp = asChild ? Slot : "button";
|
|
1549
|
+
return (jsxRuntimeExports.jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
function Dialog(_a) {
|
|
1553
|
+
var props = __rest(_a, []);
|
|
1554
|
+
return jsxRuntimeExports.jsx(DialogPrimitive.Root, __assign({ "data-slot": "dialog" }, props));
|
|
1555
|
+
}
|
|
1556
|
+
function DialogPortal(_a) {
|
|
1557
|
+
var props = __rest(_a, []);
|
|
1558
|
+
return jsxRuntimeExports.jsx(DialogPrimitive.Portal, __assign({ "data-slot": "dialog-portal" }, props));
|
|
1559
|
+
}
|
|
1560
|
+
function DialogOverlay(_a) {
|
|
1561
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1562
|
+
return (jsxRuntimeExports.jsx(DialogPrimitive.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)));
|
|
1563
|
+
}
|
|
1564
|
+
function DialogContent(_a) {
|
|
1565
|
+
var className = _a.className, children = _a.children, _b = _a.showCloseButton, showCloseButton = _b === void 0 ? true : _b, props = __rest(_a, ["className", "children", "showCloseButton"]);
|
|
1566
|
+
return (jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntimeExports.jsx(DialogOverlay, {}), jsxRuntimeExports.jsxs(DialogPrimitive.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.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(XIcon, {}), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
|
|
1567
|
+
}
|
|
1568
|
+
function DialogHeader(_a) {
|
|
1569
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1570
|
+
return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
|
|
1571
|
+
}
|
|
1572
|
+
function DialogTitle(_a) {
|
|
1573
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
1574
|
+
return (jsxRuntimeExports.jsx(DialogPrimitive.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
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})]})});
|
|
1578
|
+
|
|
1579
|
+
function styleInject(css, ref) {
|
|
1580
|
+
if ( ref === void 0 ) ref = {};
|
|
1581
|
+
var insertAt = ref.insertAt;
|
|
1582
|
+
|
|
1583
|
+
if (typeof document === 'undefined') { return; }
|
|
1584
|
+
|
|
1585
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
1586
|
+
var style = document.createElement('style');
|
|
1587
|
+
style.type = 'text/css';
|
|
1588
|
+
|
|
1589
|
+
if (insertAt === 'top') {
|
|
1590
|
+
if (head.firstChild) {
|
|
1591
|
+
head.insertBefore(style, head.firstChild);
|
|
1592
|
+
} else {
|
|
1593
|
+
head.appendChild(style);
|
|
1594
|
+
}
|
|
1595
|
+
} else {
|
|
1596
|
+
head.appendChild(style);
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
if (style.styleSheet) {
|
|
1600
|
+
style.styleSheet.cssText = css;
|
|
1601
|
+
} else {
|
|
1602
|
+
style.appendChild(document.createTextNode(css));
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
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}";
|
|
1607
|
+
styleInject(css_248z);
|
|
1608
|
+
|
|
1609
|
+
var LoadingSpinner = function (_a) {
|
|
1610
|
+
var loadingText = _a.loadingText;
|
|
1611
|
+
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..." }))] }));
|
|
1612
|
+
};
|
|
1613
|
+
|
|
1614
|
+
var AuthSuccessAnimation = function (_a) {
|
|
1615
|
+
var onComplete = _a.onComplete;
|
|
1616
|
+
return (jsxRuntimeExports.jsxs(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(motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsxRuntimeExports.jsx(CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxRuntimeExports.jsxs(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(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" })] }));
|
|
1617
|
+
};
|
|
1618
|
+
|
|
1619
|
+
// Function to parse userAgent and generate a device ID
|
|
1620
|
+
var GenerateDeviceId = function () {
|
|
1621
|
+
var _a;
|
|
1622
|
+
if (typeof window === "undefined" || !window.navigator) {
|
|
1623
|
+
return "unknown-device";
|
|
1624
|
+
}
|
|
1625
|
+
var userAgent = window.navigator.userAgent;
|
|
1626
|
+
var deviceId = "";
|
|
1627
|
+
// Parse browser, version, OS, and device type
|
|
1628
|
+
var browserMatch = Array.from(userAgent.matchAll(/(Chrome|Firefox|Safari|Edge|Opera)\/([\d.]+)/ig));
|
|
1629
|
+
var osMatch = Array.from(userAgent.matchAll(/\(([^)]+)\)/g));
|
|
1630
|
+
var isMobile = /Mobile|Android|iPhone|iPad/i.test(userAgent);
|
|
1631
|
+
// Browser info
|
|
1632
|
+
if (browserMatch.length > 0) {
|
|
1633
|
+
var _b = browserMatch[0], browserName = _b[1], browserVersion = _b[2];
|
|
1634
|
+
var majorVersion = browserVersion.split(".")[0];
|
|
1635
|
+
deviceId += "".concat(browserName, "-").concat(majorVersion);
|
|
1636
|
+
}
|
|
1637
|
+
else {
|
|
1638
|
+
deviceId += "UnknownBrowser";
|
|
1639
|
+
}
|
|
1640
|
+
// OS info
|
|
1641
|
+
if (osMatch.length > 0) {
|
|
1642
|
+
var osInfo = osMatch[0][1]
|
|
1643
|
+
.split(";")[0]
|
|
1644
|
+
.trim()
|
|
1645
|
+
.replace(/[\s/()]/g, "_");
|
|
1646
|
+
deviceId += "_".concat(osInfo);
|
|
1647
|
+
}
|
|
1648
|
+
else {
|
|
1649
|
+
deviceId += "_UnknownOS";
|
|
1650
|
+
}
|
|
1651
|
+
// Device type
|
|
1652
|
+
deviceId += isMobile ? "_Mobile" : "_Desktop";
|
|
1653
|
+
// Add a simple hash of userAgent for uniqueness
|
|
1654
|
+
var hash = btoa(userAgent).slice(0, 8);
|
|
1655
|
+
deviceId += "_".concat(hash);
|
|
1656
|
+
return (_a = deviceId.replace(/[^a-zA-Z0-9-_]/g, "_")) !== null && _a !== void 0 ? _a : "unknown-device";
|
|
1657
|
+
};
|
|
1658
|
+
|
|
1659
|
+
var useOTPHandler = function (_a) {
|
|
1660
|
+
var provider = _a.provider, accessToken = _a.accessToken, idToken = _a.idToken, appCode = _a.appCode, authenticationType = _a.authenticationType, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
|
|
1661
|
+
var _b = useState(false), loading = _b[0], setLoading = _b[1];
|
|
1662
|
+
var _c = useState(0), attemptCount = _c[0], setAttemptCount = _c[1];
|
|
1663
|
+
var _d = useState(false), isMaxAttemptsReached = _d[0], setIsMaxAttemptsReached = _d[1];
|
|
1664
|
+
var MAX_ATTEMPTS = 3;
|
|
1665
|
+
var handleSubmitOTP = useMemo(function () { return function (authenticationValue) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1666
|
+
var currentAttempt, response, error_1, currentAttempt;
|
|
1667
|
+
return __generator(this, function (_a) {
|
|
1668
|
+
switch (_a.label) {
|
|
1669
|
+
case 0:
|
|
1670
|
+
if (isMaxAttemptsReached) {
|
|
1671
|
+
onAuthComplete(false, {
|
|
1672
|
+
message: "Maximum attempts reached",
|
|
1673
|
+
});
|
|
1674
|
+
return [2 /*return*/, false];
|
|
1675
|
+
}
|
|
1676
|
+
_a.label = 1;
|
|
1677
|
+
case 1:
|
|
1678
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
1679
|
+
setLoading(true);
|
|
1680
|
+
currentAttempt = attemptCount + 1;
|
|
1681
|
+
setAttemptCount(currentAttempt);
|
|
1682
|
+
if (authenticationType === null)
|
|
1683
|
+
return [2 /*return*/, false];
|
|
1684
|
+
return [4 /*yield*/, axios.post(MFAEndpoint || "/api/auth/verify-mfa", {
|
|
1685
|
+
provider: provider,
|
|
1686
|
+
accessToken: accessToken,
|
|
1687
|
+
idToken: idToken,
|
|
1688
|
+
authenticationType: authenticationType,
|
|
1689
|
+
MFACode: authenticationValue,
|
|
1690
|
+
appCode: appCode,
|
|
1691
|
+
}, {
|
|
1692
|
+
headers: {
|
|
1693
|
+
"X-Device-ID": GenerateDeviceId(),
|
|
1694
|
+
},
|
|
1695
|
+
timeout: 605000,
|
|
1696
|
+
})];
|
|
1697
|
+
case 2:
|
|
1698
|
+
response = (_a.sent()).data;
|
|
1699
|
+
if (response) {
|
|
1700
|
+
onAuthComplete(true, response);
|
|
1701
|
+
return [2 /*return*/, true];
|
|
1702
|
+
}
|
|
1703
|
+
else {
|
|
1704
|
+
if (currentAttempt >= MAX_ATTEMPTS) {
|
|
1705
|
+
setIsMaxAttemptsReached(true);
|
|
1706
|
+
onAuthComplete(false, {
|
|
1707
|
+
message: "Maximum attempts reached",
|
|
1708
|
+
});
|
|
1709
|
+
}
|
|
1710
|
+
else {
|
|
1711
|
+
onAuthComplete(false, response.response.data);
|
|
1712
|
+
}
|
|
1713
|
+
return [2 /*return*/, false];
|
|
1714
|
+
}
|
|
1715
|
+
case 3:
|
|
1716
|
+
error_1 = _a.sent();
|
|
1717
|
+
console.error(error_1);
|
|
1718
|
+
currentAttempt = attemptCount + 1;
|
|
1719
|
+
if (currentAttempt >= MAX_ATTEMPTS) {
|
|
1720
|
+
setIsMaxAttemptsReached(true);
|
|
1721
|
+
onAuthComplete(false, error_1.response.data);
|
|
1722
|
+
}
|
|
1723
|
+
else {
|
|
1724
|
+
onAuthComplete(false, error_1.response.data);
|
|
1725
|
+
}
|
|
1726
|
+
onAuthComplete(false, error_1.response.data);
|
|
1727
|
+
return [2 /*return*/, false];
|
|
1728
|
+
case 4:
|
|
1729
|
+
setLoading(false);
|
|
1730
|
+
return [7 /*endfinally*/];
|
|
1731
|
+
case 5: return [2 /*return*/];
|
|
1732
|
+
}
|
|
1733
|
+
});
|
|
1734
|
+
}); }; }, [
|
|
1735
|
+
accessToken,
|
|
1736
|
+
idToken,
|
|
1737
|
+
authenticationType,
|
|
1738
|
+
onAuthComplete,
|
|
1739
|
+
MFAEndpoint,
|
|
1740
|
+
attemptCount,
|
|
1741
|
+
isMaxAttemptsReached,
|
|
1742
|
+
]);
|
|
1743
|
+
var resetAttempts = useCallback(function () {
|
|
1744
|
+
setAttemptCount(0);
|
|
1745
|
+
setIsMaxAttemptsReached(false);
|
|
1746
|
+
}, []);
|
|
1747
|
+
return {
|
|
1748
|
+
handleSubmitOTP: handleSubmitOTP,
|
|
1749
|
+
loading: loading,
|
|
1750
|
+
setLoading: setLoading,
|
|
1751
|
+
attemptCount: attemptCount,
|
|
1752
|
+
isMaxAttemptsReached: isMaxAttemptsReached,
|
|
1753
|
+
resetAttempts: resetAttempts,
|
|
1754
|
+
remainingAttempts: MAX_ATTEMPTS - attemptCount,
|
|
1755
|
+
};
|
|
1756
|
+
};
|
|
1757
|
+
|
|
1758
|
+
var MFAOptions = function (_a) {
|
|
1759
|
+
var _b = _a === void 0 ? {} : _a, onComplete = _b.onComplete, onAuthFailed = _b.onAuthFailed, MFAEndpoint = _b.MFAEndpoint;
|
|
1760
|
+
var _c = useState(""), value = _c[0], setValue = _c[1];
|
|
1761
|
+
var _d = useState(false), otpVisible = _d[0], setOtpVisible = _d[1];
|
|
1762
|
+
var _e = useState(false), showSuccessAnimation = _e[0], setShowSuccessAnimation = _e[1];
|
|
1763
|
+
var _f = useState(null), authType = _f[0], setAuthType = _f[1];
|
|
1764
|
+
var context = useCAMSContext();
|
|
1765
|
+
var _g = context.authMode === "MSAL" && "sendEmailOTP" in context
|
|
1766
|
+
? context
|
|
1767
|
+
: { sendEmailOTP: null, completeMFA: null, logout: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
1768
|
+
return [2 /*return*/];
|
|
1769
|
+
}); }); } }, sendEmailOTP = _g.sendEmailOTP, completeMFA = _g.completeMFA, logout = _g.logout;
|
|
1770
|
+
var accessToken = context.authMode === "MSAL" ? context.accessToken : "";
|
|
1771
|
+
var idToken = context.authMode === "MSAL" ? context.idToken : "";
|
|
1772
|
+
var _h = useOTPHandler({
|
|
1773
|
+
accessToken: accessToken || "",
|
|
1774
|
+
idToken: idToken || "",
|
|
1775
|
+
provider: "MSAL",
|
|
1776
|
+
appCode: context.appCode || "",
|
|
1777
|
+
authenticationType: authType,
|
|
1778
|
+
MFAEndpoint: MFAEndpoint,
|
|
1779
|
+
onAuthComplete: function (state, data) {
|
|
1780
|
+
console.log("Completed Auth. Handling MFA", state);
|
|
1781
|
+
if (state) {
|
|
1782
|
+
// Call completeMFA to update context state
|
|
1783
|
+
if (completeMFA && data) {
|
|
1784
|
+
console.log("IN Complete MFA Block. Handling MFA", data);
|
|
1785
|
+
completeMFA(data).catch(function (error) {
|
|
1786
|
+
console.error("Failed to complete MFA:", error);
|
|
1787
|
+
});
|
|
1788
|
+
}
|
|
1789
|
+
setShowSuccessAnimation(true);
|
|
1790
|
+
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(ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
|
|
1791
|
+
setTimeout(function () { return onComplete === null || onComplete === void 0 ? void 0 : onComplete(true); }, 2000);
|
|
1792
|
+
}
|
|
1793
|
+
else {
|
|
1794
|
+
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(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." })] }));
|
|
1795
|
+
if (isMaxAttemptsReached) {
|
|
1796
|
+
setTimeout(function () {
|
|
1797
|
+
logout().then(function () {
|
|
1798
|
+
onAuthFailed === null || onAuthFailed === void 0 ? void 0 : onAuthFailed();
|
|
1799
|
+
onComplete === null || onComplete === void 0 ? void 0 : onComplete(false);
|
|
1800
|
+
});
|
|
1801
|
+
}, 3000);
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
},
|
|
1805
|
+
}), handleSubmitOTP = _h.handleSubmitOTP, loading = _h.loading, setLoading = _h.setLoading, attemptCount = _h.attemptCount, remainingAttempts = _h.remainingAttempts, isMaxAttemptsReached = _h.isMaxAttemptsReached, resetAttempts = _h.resetAttempts;
|
|
1806
|
+
var handleGoBack = function () {
|
|
1807
|
+
setAuthType(null);
|
|
1808
|
+
setOtpVisible(false);
|
|
1809
|
+
setValue("");
|
|
1810
|
+
resetAttempts();
|
|
1811
|
+
};
|
|
1812
|
+
// Show success animation if authentication is successful
|
|
1813
|
+
if (showSuccessAnimation) {
|
|
1814
|
+
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 () {
|
|
1815
|
+
// Animation completed, can add additional logic here if needed
|
|
1816
|
+
} }) }) }));
|
|
1817
|
+
}
|
|
1818
|
+
var content = jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
|
|
1819
|
+
if (!authType) {
|
|
1820
|
+
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 () {
|
|
1821
|
+
var success;
|
|
1822
|
+
return __generator(this, function (_a) {
|
|
1823
|
+
switch (_a.label) {
|
|
1824
|
+
case 0:
|
|
1825
|
+
resetAttempts();
|
|
1826
|
+
setAuthType("EmailOTP");
|
|
1827
|
+
setOtpVisible(true);
|
|
1828
|
+
if (!sendEmailOTP) return [3 /*break*/, 2];
|
|
1829
|
+
setLoading(true);
|
|
1830
|
+
return [4 /*yield*/, sendEmailOTP()];
|
|
1831
|
+
case 1:
|
|
1832
|
+
success = _a.sent();
|
|
1833
|
+
setLoading(false);
|
|
1834
|
+
if (success) {
|
|
1835
|
+
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(ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: "OTP sent to your email address" })] }));
|
|
1836
|
+
}
|
|
1837
|
+
_a.label = 2;
|
|
1838
|
+
case 2: return [2 /*return*/];
|
|
1839
|
+
}
|
|
1840
|
+
});
|
|
1841
|
+
}); }, children: [jsxRuntimeExports.jsx(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 () {
|
|
1842
|
+
resetAttempts();
|
|
1843
|
+
setAuthType("AuthenticatorCode");
|
|
1844
|
+
setOtpVisible(true);
|
|
1845
|
+
}, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntimeExports.jsx(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" })] })] })] })] }));
|
|
1846
|
+
}
|
|
1847
|
+
else if (authType === "EmailOTP") {
|
|
1848
|
+
content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
|
|
1849
|
+
setAuthType(null);
|
|
1850
|
+
setOtpVisible(false);
|
|
1851
|
+
setValue("");
|
|
1852
|
+
}, 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" })] })] }) }));
|
|
1853
|
+
}
|
|
1854
|
+
else if (authType === "AuthenticatorCode") {
|
|
1855
|
+
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" })] }))] }) }));
|
|
1856
|
+
}
|
|
1857
|
+
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(ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
|
|
1858
|
+
};
|
|
1859
|
+
|
|
1860
|
+
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";
|
|
1861
|
+
|
|
1862
|
+
var AuthLogo = "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20750%20500%22%3E%3Cg%20id%3D%22freepik--Floor--inject-208%22%3E%3Cpolygon%20points%3D%2250.72%20429.73%20131.79%20429.49%20212.86%20429.4%20375%20429.24%20537.14%20429.4%20618.21%20429.49%20699.28%20429.73%20618.21%20429.98%20537.14%20430.07%20375%20430.23%20212.86%20430.06%20131.79%20429.98%2050.72%20429.73%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpolygon%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Plant--inject-208%22%3E%3Cpath%20d%3D%22M97.46%2C343.63c-7.25-14.9-19.93-22.54-34.22-18.32s-16.5%2C24.16-5.84%2C29.19%2C21.34-9.66%2C27-12.68S97.46%2C343.63%2C97.46%2C343.63Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M104.47%2C383.28c0-1.8-.1-3.59-.17-5.39-.12-3.58-.24-7.17-.38-10.75-.24-6.56-1-13-3.66-19a29.57%2C29.57%2C0%2C0%2C0-11.5-13.25%2C24.4%2C24.4%2C0%2C0%2C0-6-2.6%2C14.11%2C14.11%2C0%2C0%2C0-7-3.88%2C28.81%2C28.81%2C0%2C0%2C0-10.06-.25c-.12%2C0-.11.2%2C0%2C.19a24%2C24%2C0%2C0%2C1%2C9.51.68A19.61%2C19.61%2C0%2C0%2C1%2C79%2C330.48a18.07%2C18.07%2C0%2C0%2C1%2C2.22%2C1.4%2C20.62%2C20.62%2C0%2C0%2C0-8.74.09%2C19.54%2C19.54%2C0%2C0%2C0-3%2C1%2C9.14%2C9.14%2C0%2C0%2C0-2.38-.21%2C14.06%2C14.06%2C0%2C0%2C0-3.09.45%2C23.11%2C23.11%2C0%2C0%2C0-5.88%2C2.56c-.11.06%2C0%2C.22.1.16a22.17%2C22.17%2C0%2C0%2C1%2C5.73-2.16%2C19.79%2C19.79%2C0%2C0%2C1%2C3-.43%2C15.14%2C15.14%2C0%2C0%2C1%2C1.65%2C0%2C19%2C19%2C0%2C0%2C0-9.25%2C9.21c-.05.11.12.2.17.09a17.37%2C17.37%2C0%2C0%2C1%2C11.78-9.44c.31-.08.63-.12%2C1-.18a14.36%2C14.36%2C0%2C0%2C0-.15%2C1.44q-.15%2C1.08-.36%2C2.16A36.4%2C36.4%2C0%2C0%2C1%2C70.46%2C341a32.94%2C32.94%2C0%2C0%2C1-1.73%2C4.23%2C20.66%2C20.66%2C0%2C0%2C1-2.41%2C4.08c-.09.1.07.22.15.11.86-1.35%2C1.85-2.59%2C2.64-4a30.8%2C30.8%2C0%2C0%2C0%2C1.94-4.16%2C28.84%2C28.84%2C0%2C0%2C0%2C1.27-4.47c.16-.8.28-1.61.38-2.42a6.11%2C6.11%2C0%2C0%2C0%2C.09-1.48%2C19.55%2C19.55%2C0%2C0%2C1%2C5.07-.1c-.63%2C3.55-1.31%2C7.25-3.31%2C10.34-.06.1.11.2.17.09a41.7%2C41.7%2C0%2C0%2C0%2C2.46-5.08%2C19.29%2C19.29%2C0%2C0%2C0%2C1.22-5.29%2C23.33%2C23.33%2C0%2C0%2C1%2C8.39%2C2.81A27.7%2C27.7%2C0%2C0%2C1%2C98%2C347.89a45.85%2C45.85%2C0%2C0%2C1%2C4.14%2C17.52c.48%2C7.61.58%2C15.27%2C1.34%2C22.86%2C0%2C.5.83.66.93.1A26.22%2C26.22%2C0%2C0%2C0%2C104.47%2C383.28Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M87.73%2C333.66a8.52%2C8.52%2C0%2C0%2C0-1.65-1.52%2C22.85%2C22.85%2C0%2C0%2C0-1.84-1.4%2C13.69%2C13.69%2C0%2C0%2C0-4.12-1.91c-.11%2C0-.16.16%2C0%2C.18a11.1%2C11.1%2C0%2C0%2C1%2C4.06%2C2%2C21.69%2C21.69%2C0%2C0%2C1%2C1.75%2C1.42%2C11.23%2C11.23%2C0%2C0%2C0%2C1.67%2C1.41A.13.13%2C0%2C0%2C0%2C87.73%2C333.66Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M64.6%2C339.06a42.83%2C42.83%2C0%2C0%2C0-3.32%2C4.39%2C26.6%2C26.6%2C0%2C0%2C0-2.48%2C4.91c0%2C.05.07.08.09%2C0a58%2C58%2C0%2C0%2C1%2C5.85-9.2C64.81%2C339.09%2C64.68%2C339%2C64.6%2C339.06Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M80.19%2C337.58a11.08%2C11.08%2C0%2C0%2C1-.82%2C2.7A17.83%2C17.83%2C0%2C0%2C1%2C78%2C342.67a.05.05%2C0%2C0%2C0%2C.08.06%2C9.69%2C9.69%2C0%2C0%2C0%2C2.3-5.1C80.39%2C337.51%2C80.21%2C337.46%2C80.19%2C337.58Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M103.46%2C344s10.26-12.9%2C30.07-8.33c18.82%2C4.35%2C27.51%2C38.86%2C8.49%2C43s-15.67-27.81-22.6-33.23C114.33%2C341.45%2C107%2C342.31%2C103.46%2C344Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M148.82%2C354.52a38.7%2C38.7%2C0%2C0%2C0-4.08-3.13%2C17.88%2C17.88%2C0%2C0%2C0-4.35-2.17%2C26.39%2C26.39%2C0%2C0%2C0-2.58-3.32%2C25.69%2C25.69%2C0%2C0%2C0-6-4.76%2C5.65%2C5.65%2C0%2C0%2C1%2C.59%2C0%2C29.9%2C29.9%2C0%2C0%2C1%2C3.14%2C0%2C17.77%2C17.77%2C0%2C0%2C1%2C6.12%2C1.52.09.09%2C0%2C0%2C0%2C.08-.17%2C27.61%2C27.61%2C0%2C0%2C0-6.11-1.84%2C16.82%2C16.82%2C0%2C0%2C0-3.09-.27c-.55%2C0-1.11.05-1.66.1l-.32%2C0a26.25%2C26.25%2C0%2C0%2C0-5.71-2.1l.55-.15a26.48%2C26.48%2C0%2C0%2C1%2C2.94-.48%2C22.57%2C22.57%2C0%2C0%2C1%2C5.92.09c.12%2C0%2C.16-.17%2C0-.19a37.48%2C37.48%2C0%2C0%2C0-6-.24%2C24.89%2C24.89%2C0%2C0%2C0-5%2C.64%2C27.13%2C27.13%2C0%2C0%2C0-3.61-.41c-6.91-.29-14.44%2C2.29-18.69%2C8S96%2C358.89%2C95.22%2C365.74a152.14%2C152.14%2C0%2C0%2C0-.76%2C28.78c0%2C.57.84.47.86-.07.26-8.14.54-16.28%2C1.32-24.39.36-3.76.76-7.53%2C1.39-11.25a32.91%2C32.91%2C0%2C0%2C1%2C2.73-9.26%2C16.84%2C16.84%2C0%2C0%2C1%2C6.68-7.18%2C22.63%2C22.63%2C0%2C0%2C1%2C9.47-2.92%2C25.27%2C25.27%2C0%2C0%2C1%2C8.88.84%2C6%2C6%2C0%2C0%2C0-.05%2C1.75%2C10%2C10%2C0%2C0%2C0%2C.44%2C2.16%2C10.91%2C10.91%2C0%2C0%2C0%2C.83%2C1.92c.36.68.82%2C1.29%2C1.23%2C1.94.07.1.23%2C0%2C.16-.11a9%2C9%2C0%2C0%2C1-1.54-3.9%2C17.38%2C17.38%2C0%2C0%2C1-.24-2c0-.51%2C0-1%2C0-1.53a26%2C26%2C0%2C0%2C1%2C8.64%2C4.56c.49.39%2C1%2C.8%2C1.41%2C1.21a9.6%2C9.6%2C0%2C0%2C0-1.68%2C2.07%2C18.87%2C18.87%2C0%2C0%2C0-1.76%2C3.13%2C27%2C27%2C0%2C0%2C0-1.84%2C6.89c0%2C.12.17.16.19%2C0a20%2C20%2C0%2C0%2C1%2C2.25-6.53%2C26.65%2C26.65%2C0%2C0%2C1%2C1.76-2.9c.33-.48.68-1%2C1-1.41.19-.24.4-.49.59-.76a27.4%2C27.4%2C0%2C0%2C1%2C5.62%2C7.91l0%2C0a13.4%2C13.4%2C0%2C0%2C0-2.32%2C3.34%2C31.75%2C31.75%2C0%2C0%2C0-1.86%2C4%2C68.41%2C68.41%2C0%2C0%2C0-2.36%2C8.07c0%2C.12.16.16.19%2C0a33%2C33%2C0%2C0%2C1%2C2.81-7.95c.59-1.25%2C1.21-2.47%2C1.87-3.67a33.05%2C33.05%2C0%2C0%2C0%2C1.86-3.47%2C25.44%2C25.44%2C0%2C0%2C1%2C2.26%2C9.18c0%2C.12.2.1.19%2C0A32%2C32%2C0%2C0%2C0%2C141%2C350.13c1.21.52%2C2.43%2C1%2C3.59%2C1.64a19.75%2C19.75%2C0%2C0%2C1%2C4.12%2C2.9C148.79%2C354.75%2C148.92%2C354.6%2C148.82%2C354.52Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M134.3%2C355.25c-.59%2C2-1.34%2C3.86-1.88%2C5.83a22.52%2C22.52%2C0%2C0%2C0-.87%2C5.82%2C0%2C0%2C0%2C0%2C0%2C.09%2C0%2C56.48%2C56.48%2C0%2C0%2C1%2C2.84-11.6A.1.1%2C0%2C1%2C0%2C134.3%2C355.25Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M146.85%2C350.4a10.84%2C10.84%2C0%2C0%2C0-2.63-1.87%2C18.78%2C18.78%2C0%2C0%2C0-3-1.07c-.12%2C0-.16.15%2C0%2C.18a11.82%2C11.82%2C0%2C0%2C1%2C2.92%2C1.2%2C23.26%2C23.26%2C0%2C0%2C1%2C2.7%2C1.66A.06.06%2C0%2C0%2C0%2C146.85%2C350.4Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M113.22%2C326.77s1.89-23.16%2C19.11-30.67c14.39-6.27%2C22.62%2C9.89%2C12.45%2C19.78C136.56%2C323.88%2C123.37%2C320.27%2C113.22%2C326.77Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M141.6%2C300.58a73.46%2C73.46%2C0%2C0%2C0-7.66%2C3.63%2C56.3%2C56.3%2C0%2C0%2C0-6%2C4c.29-.59.53-1.2.82-1.77a29.24%2C29.24%2C0%2C0%2C1%2C1.47-2.62%2C24.15%2C24.15%2C0%2C0%2C1%2C3.79-4.8c.09-.09%2C0-.22-.14-.13a37.55%2C37.55%2C0%2C0%2C0-4%2C4.64%2C27.48%2C27.48%2C0%2C0%2C0-1.64%2C2.63%2C10.33%2C10.33%2C0%2C0%2C0-1.16%2C2.66l-.19.14a56.36%2C56.36%2C0%2C0%2C0-8.22%2C8c0-.23.09-.45.15-.66.33-1.13.67-2.25%2C1.05-3.37a28.39%2C28.39%2C0%2C0%2C1%2C3.11-6.76c.07-.1-.1-.19-.17-.09a54%2C54%2C0%2C0%2C0-3.6%2C6.59%2C24.41%2C24.41%2C0%2C0%2C0-1.19%2C3.43%2C13.57%2C13.57%2C0%2C0%2C0-.56%2C2.32c-.75.95-1.49%2C1.91-2.19%2C2.9-7.39%2C10.53-11.1%2C23.26-12%2C36a108.61%2C108.61%2C0%2C0%2C0-.19%2C11.41%2C69.83%2C69.83%2C0%2C0%2C0%2C1%2C11.46c0%2C.24.42.16.41-.07-.08-3.35-.43-6.68-.5-10s.06-6.72.33-10.06a93.74%2C93.74%2C0%2C0%2C1%2C3.75-19.71%2C70.55%2C70.55%2C0%2C0%2C1%2C8.76-18.53c.73-.15%2C1.45-.35%2C2.16-.53.86-.22%2C1.72-.44%2C2.58-.68a25.82%2C25.82%2C0%2C0%2C0%2C4.8-1.76c.11-.06%2C0-.22-.1-.16a15.47%2C15.47%2C0%2C0%2C1-4.87%2C1.68c-1.35.27-2.75.44-4.1.75a64%2C64%2C0%2C0%2C1%2C4-5.26%2C30%2C30%2C0%2C0%2C0%2C9.8-.73%2C39.84%2C39.84%2C0%2C0%2C0%2C5-1.57c1.73-.66%2C3.36-1.51%2C5.06-2.23a.09.09%2C0%2C1%2C0-.08-.17%2C28.45%2C28.45%2C0%2C0%2C1-9.93%2C3.25%2C60.23%2C60.23%2C0%2C0%2C1-9.29.77c1.22-1.4%2C2.49-2.77%2C3.84-4%2C4.52-4.31%2C9.89-8.27%2C15.85-10.33C141.77%2C300.72%2C141.71%2C300.54%2C141.6%2C300.58Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M127.58%2C300.66a25.81%2C25.81%2C0%2C0%2C0-2.11%2C3.08%2C17%2C17%2C0%2C0%2C0-1.52%2C3.6s0%2C.06.07%2C0c.57-1.13%2C1.06-2.31%2C1.64-3.44a17.1%2C17.1%2C0%2C0%2C1%2C2.06-3.13C127.8%2C300.69%2C127.66%2C300.56%2C127.58%2C300.66Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M143.6%2C308.37a18%2C18%2C0%2C0%2C1-3.54%2C1.47%2C34.6%2C34.6%2C0%2C0%2C1-3.59%2C1c-.06%2C0%2C0%2C.11%2C0%2C.1a17.63%2C17.63%2C0%2C0%2C0%2C3.73-.82%2C31%2C31%2C0%2C0%2C0%2C3.48-1.56C143.8%2C308.48%2C143.7%2C308.31%2C143.6%2C308.37Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M99.83%2C322.6c-.11%2C1-2.61-8.41-17.17-16.76-13.23-7.59-29-27.33-16-39.8C77.08%2C256%2C104.66%2C277.92%2C99.83%2C322.6Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M109.85%2C376.56a258.6%2C258.6%2C0%2C0%2C0-2.31-29.28%2C131.75%2C131.75%2C0%2C0%2C0-6.15-26.21q-1.64-4.59-3.67-9a21%2C21%2C0%2C0%2C0-.06-3.46c-.07-1.49-.2-3-.34-4.45s-.29-2.95-.46-4.43-.49-2.94-.55-4.41a.1.1%2C0%2C1%2C0-.19%2C0%2C30.62%2C30.62%2C0%2C0%2C1%2C.53%2C4.68c.11%2C1.43.19%2C2.86.23%2C4.29s0%2C2.87%2C0%2C4.3c0%2C.52%2C0%2C1.07%2C0%2C1.62-1.37-2.89-2.83-5.74-4.42-8.52%2C1-6-.3-12.35-1.53-18.25%2C0-.12-.21-.06-.18.06a51.49%2C51.49%2C0%2C0%2C1%2C1%2C9.35c0%2C2.48-.06%2C5-.07%2C7.44-.35-.59-.7-1.19-1.06-1.77q-2.82-4.63-6-9a13.78%2C13.78%2C0%2C0%2C0-.14-4.3%2C33%2C33%2C0%2C0%2C0-1-4.71c-.47-1.54-1-3-1.62-4.54s-1.47-3-2.07-4.52c-.06-.13-.25%2C0-.18.08a21.82%2C21.82%2C0%2C0%2C1%2C1.83%2C4.57%2C43.7%2C43.7%2C0%2C0%2C1%2C1.19%2C4.53c.31%2C1.53.56%2C3.07.77%2C4.61.15%2C1%2C.24%2C2.09.41%2C3.13a111.07%2C111.07%2C0%2C0%2C0-10.19-11.87c-.09-.09-.21.05-.13.14a134.45%2C134.45%2C0%2C0%2C1%2C14.8%2C20.14l.47.81c-.8-.5-1.72-.9-2.48-1.32Q84%2C295%2C81.89%2C293.89t-4.13-2.26c-.71-.39-1.4-.8-2.12-1.17a16.93%2C16.93%2C0%2C0%2C1-2.47-1.37c-.11-.08-.23.09-.11.15%2C1.4.77%2C2.64%2C1.92%2C4%2C2.78s2.75%2C1.71%2C4.16%2C2.5c2.59%2C1.44%2C5.4%2C2.48%2C8%2C4q2.66%2C4.65%2C4.9%2C9.51c-1.55-1-3.12-1.94-4.73-2.83-1-.58-2.06-1.15-3.11-1.7a15.46%2C15.46%2C0%2C0%2C1-2.94-1.78c-.09-.07-.21.06-.13.14a27.09%2C27.09%2C0%2C0%2C0%2C5.6%2C3.89c1.87%2C1.1%2C3.76%2C2.15%2C5.71%2C3.11q2.33%2C5.12%2C4.21%2C10.42c6.13%2C17.36%2C8.38%2C35.78%2C9.46%2C54.08.32%2C5.46.48%2C10.91.55%2C16.37s-.22%2C10.91-.21%2C16.36c0%2C.16.27.2.29%2C0%2C.66-4.83.77-9.75%2C1-14.63S110%2C381.52%2C109.85%2C376.56Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M83.39%2C298a71.71%2C71.71%2C0%2C0%2C1-7.74-4%2C79.13%2C79.13%2C0%2C0%2C1-7.34-4.67s-.09%2C0%2C0%2C.07a61.4%2C61.4%2C0%2C0%2C0%2C7%2C4.93%2C69.78%2C69.78%2C0%2C0%2C0%2C8%2C3.84C83.41%2C298.2%2C83.5%2C298%2C83.39%2C298Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M87.61%2C278.37c-.21-.85-.48-1.68-.77-2.5a.08.08%2C0%2C0%2C0%2C0-.1c-.18-.47-.38-.94-.57-1.4a1%2C1%2C0%2C0%2C0-.07-.17c0-.09-.07-.18-.11-.27s0%2C0%2C0%2C0%2C.09.32.14.48a1.62%2C1.62%2C0%2C0%2C0%2C.08.27%2C69.16%2C69.16%2C0%2C0%2C1%2C2.16%2C9.89.09.09%2C0%2C0%2C0%2C.17%2C0A33.55%2C33.55%2C0%2C0%2C0%2C87.61%2C278.37Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22125.24%20380.08%20124.2%20392.4%20121.02%20429.97%2086.94%20429.97%2083.76%20392.4%2082.72%20380.08%20125.24%20380.08%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22125.24%20380.08%20124.2%20392.4%2083.76%20392.4%2082.72%20380.08%20125.24%20380.08%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpolygon%3E%3Crect%20x%3D%2279.38%22%20y%3D%22375.14%22%20width%3D%2249.2%22%20height%3D%2211.82%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Frect%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Device--inject-208%22%3E%3Crect%20x%3D%22100.32%22%20y%3D%22409.73%22%20width%3D%22549.35%22%20height%3D%2220.01%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Frect%3E%3Crect%20x%3D%22321.45%22%20y%3D%22409.73%22%20width%3D%22107.1%22%20height%3D%228.14%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Frect%3E%3Crect%20x%3D%22157.09%22%20y%3D%22118.19%22%20width%3D%22435.82%22%20height%3D%22291.53%22%20style%3D%22fill%3A%23dbdbdb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22160.26%22%20y%3D%22121.75%22%20width%3D%22429.49%22%20height%3D%22284.42%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Frect%3E%3Crect%20x%3D%22179.27%22%20y%3D%22140.03%22%20width%3D%22391.45%22%20height%3D%22247.86%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Frect%3E%3Crect%20x%3D%22179.27%22%20y%3D%22140.03%22%20width%3D%22391.45%22%20height%3D%229.54%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M188.25%2C144.8a1.81%2C1.81%2C0%2C1%2C1-1.8-1.81A1.8%2C1.8%2C0%2C0%2C1%2C188.25%2C144.8Z%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M195.62%2C144.8a1.81%2C1.81%2C0%2C1%2C1-1.8-1.81A1.8%2C1.8%2C0%2C0%2C1%2C195.62%2C144.8Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M203%2C144.8a1.81%2C1.81%2C0%2C1%2C1-1.8-1.81A1.8%2C1.8%2C0%2C0%2C1%2C203%2C144.8Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22179.27%22%20y%3D%22149.57%22%20width%3D%22385.29%22%20height%3D%2253.09%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Frect%3E%3Crect%20x%3D%22564.57%22%20y%3D%22149.57%22%20width%3D%226.16%22%20height%3D%22211.18%22%20style%3D%22fill%3A%23dbdbdb%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M567.64%2C222.78h0a1.59%2C1.59%2C0%2C0%2C1-1.59-1.59v-68.8a1.6%2C1.6%2C0%2C0%2C1%2C1.59-1.59h0a1.59%2C1.59%2C0%2C0%2C1%2C1.59%2C1.59v68.8A1.59%2C1.59%2C0%2C0%2C1%2C567.64%2C222.78Z%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22464.67%22%20y%3D%22159.87%22%20width%3D%2282.91%22%20height%3D%2211.07%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M547.69%2C171.05H464.55V159.76h83.14Zm-82.91-.23h82.68V160H464.78Z%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22536.39%22%20y%3D%22159.76%22%20width%3D%2211.3%22%20height%3D%2211.3%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M545.55%2C168.51l-1%2C.77-1.9-2.5-.69-.91a1.8%2C1.8%2C0%2C0%2C0%2C.4-.23%2C1.64%2C1.64%2C0%2C0%2C0%2C.52-.68l.74%2C1Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M543.54%2C162.62a2.79%2C2.79%2C0%2C1%2C0-.91%2C4.16%2C2%2C2%2C0%2C0%2C0%2C.39-.25%2C3%2C3%2C0%2C0%2C0%2C.58-.6A2.79%2C2.79%2C0%2C0%2C0%2C543.54%2C162.62Zm-1.2%2C3a1.8%2C1.8%2C0%2C0%2C1-.4.23%2C1.67%2C1.67%2C0%2C1%2C1%2C.71-2.57%2C1.69%2C1.69%2C0%2C0%2C1%2C.21%2C1.66A1.64%2C1.64%2C0%2C0%2C1%2C542.34%2C165.64Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22466.98%22%20y%3D%22162.05%22%20width%3D%220.59%22%20height%3D%226.72%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Frect%3E%3Crect%20x%3D%22224.5%22%20y%3D%22159.87%22%20width%3D%22225.53%22%20height%3D%2211.07%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M450.15%2C171.05H224.39V159.76H450.15Zm-225.53-.23h225.3V160H224.62Z%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22226.82%22%20y%3D%22162.05%22%20width%3D%220.59%22%20height%3D%226.72%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Frect%3E%3Cpolygon%20points%3D%22203.62%20169.19%20199.59%20165.48%20203.61%20161.62%20204.24%20162.27%20200.91%20165.47%20204.23%20168.53%20203.62%20169.19%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22213.34%20161.62%20217.38%20165.33%20213.35%20169.19%20212.73%20168.53%20216.06%20165.34%20212.73%20162.28%20213.34%20161.62%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpolygon%3E%3Crect%20x%3D%22332.13%22%20y%3D%22293.99%22%20width%3D%2244.66%22%20height%3D%2247.49%22%20transform%3D%22translate%28708.92%20635.47%29%20rotate%28180%29%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M338.29%2C304.38A5.62%2C5.62%2C0%2C1%2C0%2C342.7%2C300%2C5.63%2C5.63%2C0%2C0%2C0%2C338.29%2C304.38Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22332.13%22%20y%3D%22331.25%22%20width%3D%2244.66%22%20height%3D%2210.23%22%20style%3D%22fill%3A%23dbdbdb%22%3E%3C%2Frect%3E%3Cpolygon%20points%3D%22346.88%20331.29%20376.79%20331.25%20361.85%20312.83%20346.88%20331.29%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22332.13%20331.29%20358.69%20331.29%20345.41%20319.27%20332.13%20331.29%22%20style%3D%22fill%3A%23dbdbdb%22%3E%3C%2Fpolygon%3E%3Crect%20x%3D%22197.04%22%20y%3D%22217.2%22%20width%3D%2287.82%22%20height%3D%2267.38%22%20transform%3D%22translate%28481.89%20501.77%29%20rotate%28180%29%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M205.78%2C231.93a8%2C8%2C0%2C1%2C0%2C6.26-6.26A8%2C8%2C0%2C0%2C0%2C205.78%2C231.93Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22226.01%20270.06%20284.85%20270.06%20255.43%20233.79%20226.01%20270.06%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22197.04%20270.06%20249.22%20270.06%20223.13%20246.44%20197.04%20270.06%22%20style%3D%22fill%3A%23dbdbdb%22%3E%3C%2Fpolygon%3E%3Crect%20x%3D%22197.04%22%20y%3D%22270.06%22%20width%3D%2287.82%22%20height%3D%2214.52%22%20style%3D%22fill%3A%23dbdbdb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22196.44%22%20y%3D%22293.99%22%20width%3D%2246.5%22%20height%3D%223.91%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Frect%3E%3Crect%20x%3D%22196.44%22%20y%3D%22303.07%22%20width%3D%22124.56%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22196.44%22%20y%3D%22311.67%22%20width%3D%22124.56%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22196.44%22%20y%3D%22320.28%22%20width%3D%22124.56%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22196.44%22%20y%3D%22328.89%22%20width%3D%22124.56%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22196.44%22%20y%3D%22337.49%22%20width%3D%22124.56%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22217.2%22%20width%3D%2248.49%22%20height%3D%223.91%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22226.27%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22234.88%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22243.49%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22252.09%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22269.31%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22277.91%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22286.52%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22295.13%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22312.34%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22320.95%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22329.55%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22391.78%22%20y%3D%22338.16%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22226.27%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22234.88%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22217.67%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22243.49%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22252.09%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22260.7%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22269.31%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22286.52%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22295.13%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22303.73%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22312.34%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22477.08%22%20y%3D%22320.95%22%20width%3D%2270.61%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22217.2%22%20width%3D%2246.5%22%20height%3D%2210.47%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22234.88%22%20width%3D%2278.29%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22243.49%22%20width%3D%2278.29%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22252.09%22%20width%3D%2278.29%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22260.7%22%20width%3D%2278.29%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22272.15%22%20width%3D%2278.29%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22298.51%22%20y%3D%22280.75%22%20width%3D%2278.29%22%20height%3D%223.91%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Frect%3E%3Crect%20x%3D%22179.27%22%20y%3D%22140.03%22%20width%3D%22391.45%22%20height%3D%22247.86%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.7000000000000001%22%3E%3C%2Frect%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Lockpad--inject-208%22%3E%3Cpath%20d%3D%22M394.93%2C241v16.85h-6.08V241c0-8.18-6.21-14.83-13.85-14.83s-13.85%2C6.65-13.85%2C14.83v16.85h-6.08V241c0-11.72%2C8.94-21.24%2C19.93-21.24S394.93%2C229.24%2C394.93%2C241Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22355.07%20241.89%20361.14%20242.13%20361.14%20257.81%20355.07%20257.81%20355.07%20241.89%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22394.93%20243.51%20394.93%20257.81%20388.86%20257.81%20388.86%20243.26%20394.93%20243.51%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpolygon%3E%3Crect%20x%3D%22347.28%22%20y%3D%22245.17%22%20width%3D%2255.45%22%20height%3D%2250.3%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Frect%3E%3Crect%20x%3D%22375%22%20y%3D%22245.17%22%20width%3D%2227.72%22%20height%3D%2250.3%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Frect%3E%3Cpath%20d%3D%22M377.34%2C272.16l2.33%2C11h-9.85l2.32-11a4.93%2C4.93%2C0%2C1%2C1%2C5.2%2C0Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22375.17%20175.07%20377.29%20180.12%20382.75%20180.58%20378.6%20184.16%20379.85%20189.49%20375.17%20186.65%20370.48%20189.49%20371.73%20184.16%20367.59%20180.58%20373.04%20180.12%20375.17%20175.07%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22333.2%20186.23%20337.56%20189.54%20342.51%20187.21%20340.71%20192.38%20344.46%20196.37%20338.99%20196.26%20336.35%20201.06%20334.76%20195.81%20329.39%20194.79%20333.88%20191.66%20333.2%20186.23%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22302.43%20216.88%20307.86%20217.56%20310.98%20213.07%20312.01%20218.44%20317.25%20220.03%20312.46%20222.67%20312.57%20228.14%20308.58%20224.39%20303.41%20226.19%20305.73%20221.24%20302.43%20216.88%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22291.1%20258.8%20296.15%20256.68%20296.61%20251.22%20300.19%20255.37%20305.52%20254.12%20302.68%20258.8%20305.52%20263.49%20300.19%20262.24%20296.61%20266.38%20296.15%20260.93%20291.1%20258.8%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22302.26%20300.77%20305.57%20296.41%20303.24%20291.46%20308.41%20293.25%20312.4%20289.51%20312.29%20294.98%20317.08%20297.62%20311.85%20299.21%20310.82%20304.58%20307.69%20300.09%20302.26%20300.77%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22332.91%20331.54%20333.59%20326.11%20329.1%20322.99%20334.47%20321.96%20336.06%20316.72%20338.7%20321.51%20344.17%20321.4%20340.43%20325.39%20342.22%20330.56%20337.27%20328.24%20332.91%20331.54%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22374.83%20342.87%20372.71%20337.82%20367.25%20337.36%20371.4%20333.78%20370.15%20328.45%20374.83%20331.29%20379.52%20328.45%20378.27%20333.78%20382.41%20337.36%20376.96%20337.82%20374.83%20342.87%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22416.8%20331.71%20412.44%20328.4%20407.49%20330.73%20409.29%20325.56%20405.54%20321.57%20411.01%20321.68%20413.65%20316.88%20415.24%20322.13%20420.61%20323.15%20416.12%20326.28%20416.8%20331.71%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22447.57%20301.06%20442.14%20300.38%20439.02%20304.87%20437.99%20299.5%20432.75%20297.91%20437.54%20295.27%20437.43%20289.8%20441.42%20293.55%20446.59%20291.75%20444.27%20296.7%20447.57%20301.06%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22458.9%20259.14%20453.85%20261.26%20453.39%20266.71%20449.81%20262.57%20444.48%20263.82%20447.32%20259.14%20444.48%20254.45%20449.81%20255.7%20453.39%20251.56%20453.85%20257.01%20458.9%20259.14%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22447.74%20217.17%20444.43%20221.53%20446.76%20226.48%20441.59%20224.68%20437.6%20228.43%20437.71%20222.96%20432.92%20220.32%20438.15%20218.73%20439.18%20213.36%20442.31%20217.85%20447.74%20217.17%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22417.09%20186.4%20416.41%20191.83%20420.9%20194.95%20415.53%20195.98%20413.94%20201.22%20411.3%20196.43%20405.83%20196.54%20409.57%20192.55%20407.78%20187.38%20412.73%20189.7%20417.09%20186.4%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpolygon%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Shield--inject-208%22%3E%3Ccircle%20cx%3D%22234.05%22%20cy%3D%22341.07%22%20r%3D%2250.04%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Fcircle%3E%3Cpath%20d%3D%22M234.05%2C396.08a55%2C55%2C0%2C1%2C1%2C55-55A55.08%2C55.08%2C0%2C0%2C1%2C234.05%2C396.08Zm0-109a54%2C54%2C0%2C1%2C0%2C54%2C54A54.07%2C54.07%2C0%2C0%2C0%2C234.05%2C287.06Z%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M265.58%2C325.17s-4.46%2C35.73-11.79%2C43.77c-8.81%2C9.64-15.2%2C8.23-18.75%2C13.21h0c-3.56-5-9.95-3.56-18.76-13.21-7.34-8-11.79-43.77-11.79-43.77%2C19.33-9.39%2C30.55-19.9%2C30.55-19.9h0C235.38%2C305.6%2C246.56%2C315.93%2C265.58%2C325.17Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M235%2C305.28v76.87h0c-3.56-5-9.95-3.56-18.76-13.21-7.34-8-11.79-43.77-11.79-43.77%2C19.33-9.39%2C30.55-19.9%2C30.55-19.9Z%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M209.22%2C328.05s3.77%2C30.18%2C10%2C37c7.44%2C8.16%2C12.84%2C7%2C15.85%2C11.17%2C3-4.2%2C8.4-3%2C15.85-11.17%2C6.19-6.79%2C9.95-37%2C9.95-37-16.32-7.93-25.8-16.82-25.8-16.82S225.55%2C320.12%2C209.22%2C328.05Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M260.84%2C328.05s-3.77%2C30.18-10%2C37c-7.44%2C8.15-12.83%2C7-15.84%2C11.15V311.24C235.32%2C311.52%2C244.76%2C320.24%2C260.84%2C328.05Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M240.65%2C337.56v4.69H239v-4.69a3.86%2C3.86%2C0%2C1%2C0-7.71%2C0v4.69h-1.69v-4.69a5.56%2C5.56%2C0%2C1%2C1%2C11.09%2C0Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M227.39%2C338.73v14h15.43v-14Zm9%2C10.58h-2.74l.65-3.07a1.37%2C1.37%2C0%2C1%2C1%2C2.09-1.16%2C1.37%2C1.37%2C0%2C0%2C1-.64%2C1.16Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Character--inject-208%22%3E%3Cpath%20d%3D%22M550.61%2C239.9c11.27%2C5%2C18.18%2C25.7%2C10.24%2C44.53-7.23%2C17.12-27.25%2C26.46-39%2C22.25-12.49-4.46-16.34-18.22-10.72-26.49%2C5.44-8%2C14.43-10.39%2C16.83-17.68%2C1.15-3.49-.11-9.57%2C1.36-14.8C531%2C241.88%2C541.56%2C235.85%2C550.61%2C239.9Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M534.44%2C307.86a37.47%2C37.47%2C0%2C0%2C0%2C16.83-8.28%2C41.54%2C41.54%2C0%2C0%2C0%2C11.07-15.27%2C35.65%2C35.65%2C0%2C0%2C0%2C2.81-18.62%2C35.16%2C35.16%2C0%2C0%2C0-7.36-17.23%2C37%2C37%2C0%2C0%2C1%2C6.79%2C17.3%2C34.56%2C34.56%2C0%2C0%2C1-.26%2C9.31%2C38.23%2C38.23%2C0%2C0%2C1-2.68%2C8.94%2C44.92%2C44.92%2C0%2C0%2C1-4.54%2C8.16%2C40.32%2C40.32%2C0%2C0%2C1-13.92%2C12.28A35.9%2C35.9%2C0%2C0%2C1%2C534.44%2C307.86Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M509.18%2C282.45a18.57%2C18.57%2C0%2C0%2C1%2C3.07-4.92%2C25.07%2C25.07%2C0%2C0%2C1%2C4.24-3.93c1.58-1.14%2C3.14-2.33%2C4.65-3.58a25.5%2C25.5%2C0%2C0%2C0%2C4.15-4.22%2C17.3%2C17.3%2C0%2C0%2C0%2C1.6-2.54%2C11.33%2C11.33%2C0%2C0%2C0%2C.88-2.87%2C48.88%2C48.88%2C0%2C0%2C0%2C.48-5.87%2C22.88%2C22.88%2C0%2C0%2C1%2C.94-5.7%2C16%2C16%2C0%2C0%2C1%2C2.71-5.12%2C15%2C15%2C0%2C0%2C0-3%2C5%2C22.49%2C22.49%2C0%2C0%2C0-1.17%2C5.78c-.2%2C2-.23%2C3.9-.59%2C5.78a10.43%2C10.43%2C0%2C0%2C1-.86%2C2.69%2C15.46%2C15.46%2C0%2C0%2C1-1.55%2C2.39c-2.29%2C3.08-5.51%2C5.36-8.54%2C7.79A25%2C25%2C0%2C0%2C0%2C512%2C277.3%2C17.5%2C17.5%2C0%2C0%2C0%2C509.18%2C282.45Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M631.84%2C420.37c-.58-2.26-36.24-56.62-38.85-57.8-.3-.15-18.64%2C11.13-18.64%2C11.13-.78.91-33.57-8.36-33.57-8.36l-3%2C40.11%2C60.68%2C2.79s7.87%2C5.36%2C15.09%2C9.79c0%2C0%2C0%2C0%2C0%2C0a93.62%2C93.62%2C0%2C0%2C0%2C9.53%2C5.45C626%2C424.46%2C632.44%2C422.62%2C631.84%2C420.37Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M623.06%2C423.47c-1.15-.37-5.08-2.69-9.52-5.44%2C0%2C0%2C0%2C0%2C0%2C0-7.22-4.42-15.08-9.79-15.08-9.79l-13.51-.62L566.1%2C372.13c4.58%2C1.13%2C8%2C1.86%2C8.26%2C1.56%2C0%2C0%2C18.33-11.27%2C18.63-11.12%2C2.61%2C1.18%2C38.27%2C55.54%2C38.85%2C57.8S626%2C424.46%2C623.06%2C423.47Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M632.2%2C420.47c-.62-2.32-36.46-56.67-39.14-57.88-1-.46-9.93%2C4.25-18.71%2C11.11l23.15%2C35s22.6%2C14%2C25.67%2C15S632.81%2C422.78%2C632.2%2C420.47Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M629.51%2C421.12c-6.23-9-30.52-45.7-36-55%2C0-.08%2C0-.11%2C0%2C0%2C6.38%2C8.75%2C30.37%2C45.68%2C36.1%2C55C629.78%2C421.22%2C629.64%2C421.31%2C629.51%2C421.12Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M618.91%2C421.5a8.78%2C8.78%2C0%2C0%2C1-1.37-6.92%2C8.48%2C8.48%2C0%2C0%2C1%2C3.53-5.24s.12.06.07.11a10.12%2C10.12%2C0%2C0%2C0-2.11%2C12A.07.07%2C0%2C0%2C1%2C618.91%2C421.5Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M600.3%2C411c-2.45-3.61-3.95-8.69-2.47-12.92.06-.16.29-.08.31.06a60.66%2C60.66%2C0%2C0%2C0%2C2.65%2C12.63A.27.27%2C0%2C0%2C1%2C600.3%2C411Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M603.26%2C413.05c-2.46-3.61-4-8.69-2.47-12.92.06-.16.29-.08.3.07a60.72%2C60.72%2C0%2C0%2C0%2C2.66%2C12.62A.27.27%2C0%2C0%2C1%2C603.26%2C413.05Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M606.21%2C415.14c-2.45-3.61-4-8.69-2.47-12.92.06-.16.29-.08.31.07a60.06%2C60.06%2C0%2C0%2C0%2C2.65%2C12.62A.27.27%2C0%2C0%2C1%2C606.21%2C415.14Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M609.16%2C417.23c-2.45-3.61-3.95-8.68-2.46-12.92%2C0-.16.29-.08.3.07A60.59%2C60.59%2C0%2C0%2C0%2C609.66%2C417%2C.28.28%2C0%2C0%2C1%2C609.16%2C417.23Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M586.38%2C374.11c-2.68-4.09%2C3.68-8.28%2C6.37-4.17S589.08%2C378.22%2C586.38%2C374.11Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M598.32%2C417.5c1.25-3.64.87-7.69.95-11.47a.53.53%2C0%2C0%2C0-.73-.46.11.11%2C0%2C0%2C0-.18-.05%2C23%2C23%2C0%2C0%2C0-7.14%2C9.47c-.83%2C2.18-.8%2C5.49%2C1.95%2C6.33S597.6%2C419.63%2C598.32%2C417.5Zm-2.9%2C2.16c-4.21%2C2.26-3.52-3.33-2.84-4.92a25.31%2C25.31%2C0%2C0%2C1%2C1.58-2.95%2C67.82%2C67.82%2C0%2C0%2C1%2C4.05-5.62c-.16%2C1.85-.15%2C3.71-.24%2C5.56C597.87%2C414%2C597.73%2C418.42%2C595.42%2C419.66Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M587.5%2C394.11c-2.19%2C1.85-.92%2C4.91.72%2C6.58a22.9%2C22.9%2C0%2C0%2C0%2C10.3%2C5.87.12.12%2C0%2C0%2C0%2C.15-.11.54.54%2C0%2C0%2C0%2C.48-.72c-1.57-3.43-2.83-7.31-5.41-10.16C592.23%2C393.91%2C589.57%2C392.35%2C587.5%2C394.11Zm8.2%2C6.9c.82%2C1.67%2C1.54%2C3.37%2C2.42%2C5a66.05%2C66.05%2C0%2C0%2C1-5.94-3.55%2C25.27%2C25.27%2C0%2C0%2C1-2.62-2.09c-1.26-1.19-4.1-6.05.65-5.64C592.84%2C395%2C594.73%2C399%2C595.7%2C401Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M550.92%2C356.84s-51-23.5-73.73-23.28c-27.08.26-48.2%2C32.36-15.05%2C55.61C491.44%2C409.72%2C584%2C408.44%2C584%2C408.44l-21.53-38.87a197.65%2C197.65%2C0%2C0%2C0-59-11.09l46.67%2C9.6Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M550%2C364.57c-4-1-8.07-1.72-12.13-2.46s-8.2-1.41-12.32-2a244.83%2C244.83%2C0%2C0%2C0-24.77-2.56c-.77%2C0-1.55-.06-2.33-.09l-.5-.16c-.39-.12-.78-.25-1.17-.35-.74-.19-1.49-.35-2.23-.52-1.55-.34-3.11-.62-4.65-1a.07.07%2C0%2C0%2C0-.05.14c1.55.45%2C3.06%2C1%2C4.6%2C1.46l1.34.38c-3.05-.05-6.09%2C0-9.14.05-.1%2C0-.11.15%2C0%2C.15%2C4.14%2C0%2C8.29.29%2C12.42.64s8.19.71%2C12.27%2C1.22c8.25%2C1%2C16.48%2C2.33%2C24.67%2C3.75%2C4.6.8%2C9.2%2C1.69%2C13.84%2C2.19A.41.41%2C0%2C0%2C0%2C550%2C364.57Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M574.54%2C406.66c-1.32-2.47-2.41-5.08-3.6-7.62s-2.39-5.09-3.59-7.63c-2.4-5.07-11.06-22.16-12-23.37a.09.09%2C0%2C0%2C0-.16.08c.37%2C1.3%2C5.74%2C12.6%2C7%2C15.12%2C2.48%2C5%2C5.11%2C10%2C7.7%2C15%2C.74%2C1.42%2C1.5%2C2.83%2C2.26%2C4.25s1.55%2C2.81%2C2.23%2C4.26C574.45%2C406.82%2C574.59%2C406.75%2C574.54%2C406.66Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M454%2C419.84c.67-2.24%2C38.46-55.15%2C41.11-56.22.3-.14%2C18.18%2C11.85%2C18.18%2C11.85.75.95%2C33.88-7%2C33.88-7l1.45%2C40.2-60.75.39s-8.07%2C5-15.46%2C9.18h0a89.26%2C89.26%2C0%2C0%2C1-9.74%2C5.06C459.68%2C424.15%2C453.35%2C422.06%2C454%2C419.84Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M462.69%2C423.28a86.67%2C86.67%2C0%2C0%2C0%2C9.73-5.06h0c7.39-4.13%2C15.46-9.19%2C15.46-9.19l13.52-.08%2C20.21-34.72c-4.62.95-8.07%2C1.54-8.31%2C1.24%2C0%2C0-17.87-12-18.18-11.85-2.65%2C1.07-40.44%2C54-41.11%2C56.21S459.68%2C424.15%2C462.69%2C423.28Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M453.68%2C419.92c.71-2.3%2C38.68-55.18%2C41.4-56.28%2C1-.43%2C9.75%2C4.63%2C18.25%2C11.83l-24.52%2C34.07s-23.13%2C13.08-26.24%2C14S453%2C422.21%2C453.68%2C419.92Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M456.34%2C420.68c6.58-8.71%2C32.31-44.46%2C38.15-53.57.05-.07%2C0-.11-.05%2C0-6.71%2C8.49-32.15%2C44.44-38.24%2C53.5C456.07%2C420.76%2C456.2%2C420.86%2C456.34%2C420.68Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M466.91%2C421.47a8.78%2C8.78%2C0%2C0%2C0%2C1.65-6.85%2C8.48%2C8.48%2C0%2C0%2C0-3.32-5.38c-.05%2C0-.12.06-.07.1a10.13%2C10.13%2C0%2C0%2C1%2C1.63%2C12.05C466.76%2C421.47%2C466.86%2C421.54%2C466.91%2C421.47Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M485.93%2C411.68c2.59-3.51%2C4.29-8.53%2C3-12.81%2C0-.17-.28-.1-.3.05a60.84%2C60.84%2C0%2C0%2C1-3.15%2C12.51A.27.27%2C0%2C0%2C0%2C485.93%2C411.68Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M482.89%2C413.65c2.6-3.51%2C4.3-8.52%2C3-12.81-.05-.17-.29-.09-.31.05a60.05%2C60.05%2C0%2C0%2C1-3.15%2C12.51A.27.27%2C0%2C0%2C0%2C482.89%2C413.65Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M479.86%2C415.63c2.59-3.52%2C4.3-8.53%2C3-12.82%2C0-.17-.29-.09-.31.05a60.68%2C60.68%2C0%2C0%2C1-3.15%2C12.51A.28.28%2C0%2C0%2C0%2C479.86%2C415.63Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M476.82%2C417.6c2.6-3.52%2C4.3-8.53%2C3-12.82-.05-.16-.28-.09-.31.06a60.21%2C60.21%2C0%2C0%2C1-3.15%2C12.51A.27.27%2C0%2C0%2C0%2C476.82%2C417.6Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M501.29%2C375.41c2.85-4-3.35-8.42-6.2-4.42S498.44%2C379.41%2C501.29%2C375.41Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M492.64%2C422.31c2.78-.73%2C2.95-4%2C2.2-6.25a23%2C23%2C0%2C0%2C0-6.76-9.74c-.07-.06-.14%2C0-.18%2C0a.54.54%2C0%2C0%2C0-.75.43c-.06%2C3.78-.6%2C7.82.49%2C11.5C488.28%2C420.45%2C490%2C423%2C492.64%2C422.31Zm-4.41-9.77c0-1.86.06-3.71%2C0-5.56a67.76%2C67.76%2C0%2C0%2C1%2C3.82%2C5.77%2C24.61%2C24.61%2C0%2C0%2C1%2C1.47%2C3c.61%2C1.62%2C1.08%2C7.23-3%2C4.81C488.2%2C419.24%2C488.24%2C414.76%2C488.23%2C412.54Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M493.09%2C396.56c-2.69%2C2.75-4.1%2C6.57-5.81%2C9.94a.54.54%2C0%2C0%2C0%2C.46.73.11.11%2C0%2C0%2C0%2C.14.12%2C22.88%2C22.88%2C0%2C0%2C0%2C10.53-5.45c1.7-1.61%2C3.1-4.61%2C1-6.55S494.66%2C395%2C493.09%2C396.56Zm3.56-.69c4.77-.22%2C1.73%2C4.53.43%2C5.66a22.82%2C22.82%2C0%2C0%2C1-2.7%2C2%2C67.53%2C67.53%2C0%2C0%2C1-6.08%2C3.32c.94-1.6%2C1.74-3.27%2C2.62-4.91C492%2C400%2C494%2C396%2C496.65%2C395.87Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M548.71%2C356.07s51.38-15.7%2C78.85-12.53c26.9%2C3.1%2C38.07%2C36.77%2C11.92%2C55.15-28.55%2C20.07-136.38%2C13.52-136.38%2C13.52L526%2C370.91s36.67-8.79%2C70.15-8.59l-47%2C7.74Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M524.43%2C373.57a.72.72%2C0%2C0%2C0%2C.05-.21l0-.17c0-.13.07-.26.1-.39.07-.28.16-.54.25-.81s.21-.52.32-.78a6.65%2C6.65%2C0%2C0%2C1%2C.43-.73s0%2C0%2C.06-.05l0%2C0%2C.06%2C0%2C.06%2C0c4-.87%2C31.49-5.57%2C35.58-6.15s8.25-1.09%2C12.39-1.55a248.52%2C248.52%2C0%2C0%2C1%2C24.84-1.59H601c.16-.06.34-.09.51-.14.39-.11.78-.22%2C1.18-.3.75-.17%2C1.5-.3%2C2.25-.43%2C1.56-.29%2C3.13-.5%2C4.69-.83.09%2C0%2C.13.12%2C0%2C.14-1.56.39-3.09.89-4.66%2C1.28l-1.35.32c3.05.08%2C6.09.23%2C9.14.42.09%2C0%2C.1.15%2C0%2C.15-4.14-.13-8.3%2C0-12.44.14s-8.21.39-12.3.74c-8.29.7-16.56%2C1.68-24.81%2C2.77-4.62.61-32.61%2C5.49-37.26%2C5.82h-.06a3%2C3%2C0%2C0%2C1-.12.32c-.12.26-.24.51-.38.76s-.25.49-.39.72l-.22.34-.11.17a1.88%2C1.88%2C0%2C0%2C0-.12.18C524.54%2C373.74%2C524.38%2C373.67%2C524.43%2C373.57Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M511.68%2C409.5c1.42-2.41%2C2.62-5%2C3.91-7.47l3.89-7.48c2.59-5%2C11.93-21.7%2C12.87-22.88%2C0-.08.18%2C0%2C.15.09-.42%2C1.28-6.23%2C12.35-7.57%2C14.82-2.68%2C4.94-5.51%2C9.79-8.29%2C14.67-.79%2C1.4-1.62%2C2.77-2.42%2C4.16s-1.67%2C2.75-2.4%2C4.17A.08.08%2C0%2C0%2C1%2C511.68%2C409.5Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M535.92%2C282.34c-22.59%2C12.18-43.74%2C26.89-47.6%2C36.94-2.43%2C6.33.35%2C15.64%2C3%2C22.46%2C1.29%2C3.32%2C30.82-6.84%2C29.09-10.23-4.19-8.18-5.65-11.49-5.65-11.49.43-.89%2C25-22.89%2C31.85-32.75C556.14%2C273.54%2C545.8%2C277%2C535.92%2C282.34Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M511.55%2C315.09a8.4%2C8.4%2C0%2C0%2C1%2C2.3%2C2.49%2C7.65%2C7.65%2C0%2C0%2C1%2C1.2%2C3.17c-.68-.93-1.24-1.85-1.83-2.77S512.06%2C316.12%2C511.55%2C315.09Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M503.31%2C300.57l16.91%2C16.09s21.62-19.74%2C27.81-30.41%2C1.47-11.58-11.1-5.37S503.31%2C300.57%2C503.31%2C300.57Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M503.31%2C300.57l16.91%2C16.09s21.62-19.74%2C27.81-30.41%2C1.47-11.58-11.1-5.37S503.31%2C300.57%2C503.31%2C300.57Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M523.62%2C312.33a167.28%2C167.28%2C0%2C0%2C1-14.93-14.42c-.06-.06.05-.15.11-.09%2C1.26%2C1.34%2C9.09%2C8.3%2C14.94%2C14.42C523.81%2C312.31%2C523.7%2C312.4%2C523.62%2C312.33Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M548%2C286.24c-6.18%2C10.67-27.8%2C30.42-27.8%2C30.42l-5.86-5.57%2C36-33.21C551.25%2C279.17%2C550.54%2C281.89%2C548%2C286.24Z%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M529.15%2C313.82l-4.65%2C27.06s21%2C12.08%2C56.45%2C1.19c0%2C0-6.06-43.9-19.55-59.07-6.75-7.59-14.84-7.17-20.08-2-1.32%2C1.29-12.25%2C14.66-14%2C22.48C525.75%2C310.35%2C529.15%2C313.82%2C529.15%2C313.82Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M529.15%2C313.82%2C526.08%2C325l15.85-4.82L579%2C325s-4.13-26.8-17.62-42c-6.75-7.59-14.84-7.17-20.08-2-1.32%2C1.29-12.25%2C14.66-14%2C22.48C525.75%2C310.35%2C529.15%2C313.82%2C529.15%2C313.82Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M538.08%2C312.85a50.38%2C50.38%2C0%2C0%2C1%2C7.26.46c1.19.18%2C2.37.42%2C3.54.68.59.13%2C1.18.24%2C1.77.35a7.4%2C7.4%2C0%2C0%2C0%2C1.87.16%2C0%2C0%2C0%2C0%2C1%2C0%2C.09%2C11.73%2C11.73%2C0%2C0%2C1-1.77.14%2C11.12%2C11.12%2C0%2C0%2C1-1.73-.15c-1.21-.17-2.41-.4-3.62-.58-2.44-.38-4.88-.75-7.34-.95A.1.1%2C0%2C0%2C1%2C538.08%2C312.85Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M532.34%2C315.58a54.57%2C54.57%2C0%2C0%2C1%2C5.94-.89c1-.08%2C2-.11%2C3-.12l1.43%2C0c.53%2C0%2C1%2C.1%2C1.58.11.06%2C0%2C.06.08%2C0%2C.08-.5%2C0-1%2C.1-1.49.14l-1.49.11-3%2C.23c-2%2C.13-4%2C.28-6%2C.48A.08.08%2C0%2C0%2C1%2C532.34%2C315.58Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M540.45%2C321.55s-2%2C5.27-6.72%2C6.7c0%2C0-.69-4.78.7-6.66.69-.94%2C4.39-2%2C4.94-1.42A8.46%2C8.46%2C0%2C0%2C1%2C540.45%2C321.55Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M540.45%2C321.55s-2%2C5.27-6.72%2C6.7c0%2C0-.69-4.78.7-6.66.69-.94%2C4.39-2%2C4.94-1.42A8.46%2C8.46%2C0%2C0%2C1%2C540.45%2C321.55Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M540.45%2C321.55a12.84%2C12.84%2C0%2C0%2C1-2.53%2C4.19%2C10.09%2C10.09%2C0%2C0%2C1-1.87%2C1.64%2C9.39%2C9.39%2C0%2C0%2C1-2.25%2C1.1l-.26.09%2C0-.28a17.27%2C17.27%2C0%2C0%2C1-.16-3.52%2C6.07%2C6.07%2C0%2C0%2C1%2C1-3.43%2C4.53%2C4.53%2C0%2C0%2C1%2C1.59-.87%2C11.37%2C11.37%2C0%2C0%2C1%2C1.71-.46%2C5.15%2C5.15%2C0%2C0%2C1%2C.88-.09%2C1.26%2C1.26%2C0%2C0%2C1%2C.89.21A7.34%2C7.34%2C0%2C0%2C1%2C540.45%2C321.55Zm0%2C0a9.34%2C9.34%2C0%2C0%2C0-1.12-1.31%2C1.14%2C1.14%2C0%2C0%2C0-.77-.11%2C8.22%2C8.22%2C0%2C0%2C0-.84.15%2C10%2C10%2C0%2C0%2C0-1.63.52%2C4.35%2C4.35%2C0%2C0%2C0-1.41.83%2C5.76%2C5.76%2C0%2C0%2C0-.86%2C3.16%2C23.1%2C23.1%2C0%2C0%2C0%2C.14%2C3.43l-.3-.19a9%2C9%2C0%2C0%2C0%2C2.15-1%2C10.33%2C10.33%2C0%2C0%2C0%2C1.86-1.51A14.89%2C14.89%2C0%2C0%2C0%2C540.45%2C321.55Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M540.45%2C321.55a8.77%2C8.77%2C0%2C0%2C0-1.07-1.38l-.09-.06-.12-.05h-.11a5.23%2C5.23%2C0%2C0%2C0-2.09.27%2C11.69%2C11.69%2C0%2C0%2C0%2C.9%2C2%2C3.15%2C3.15%2C0%2C0%2C0%2C1.67%2C1A11%2C11%2C0%2C0%2C0%2C540.45%2C321.55Z%22%20style%3D%22fill%3A%23050400%3Bopacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M541%2C321.73s3.7%2C5.78%2C7%2C7.25c0%2C0%2C1.47-3.67-.12-6.8-.71-1.4-5.74-2.91-6.18-2.2A6.69%2C6.69%2C0%2C0%2C0%2C541%2C321.73Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M541%2C321.73s3.7%2C5.78%2C7%2C7.25c0%2C0%2C1.47-3.67-.12-6.8-.71-1.4-5.74-2.91-6.18-2.2A6.69%2C6.69%2C0%2C0%2C0%2C541%2C321.73Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M541%2C321.73a41.44%2C41.44%2C0%2C0%2C0%2C3.2%2C3.92A19.92%2C19.92%2C0%2C0%2C0%2C546%2C327.4a8.85%2C8.85%2C0%2C0%2C0%2C2%2C1.37l-.31.13a10.71%2C10.71%2C0%2C0%2C0%2C.59-3.77%2C7.39%2C7.39%2C0%2C0%2C0-.31-1.87%2C5.63%2C5.63%2C0%2C0%2C0-.34-.89%2C1.62%2C1.62%2C0%2C0%2C0-.57-.66%2C10.81%2C10.81%2C0%2C0%2C0-3.49-1.57%2C8.09%2C8.09%2C0%2C0%2C0-1-.21%2C1.69%2C1.69%2C0%2C0%2C0-.9%2C0A5.62%2C5.62%2C0%2C0%2C0%2C541%2C321.73Zm0%2C0a5.48%2C5.48%2C0%2C0%2C1%2C.68-1.87%2C1.68%2C1.68%2C0%2C0%2C1%2C1-.15%2C6.39%2C6.39%2C0%2C0%2C1%2C1%2C.16%2C10.76%2C10.76%2C0%2C0%2C1%2C3.69%2C1.5%2C2.15%2C2.15%2C0%2C0%2C1%2C.71.81%2C6.37%2C6.37%2C0%2C0%2C1%2C.38.94%2C8%2C8%2C0%2C0%2C1%2C.35%2C2%2C10.11%2C10.11%2C0%2C0%2C1-.64%2C4l-.08.23-.23-.11a9.35%2C9.35%2C0%2C0%2C1-2.14-1.47%2C18.18%2C18.18%2C0%2C0%2C1-1.77-1.85A30.62%2C30.62%2C0%2C0%2C1%2C541%2C321.73Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M541.85%2C323a4%2C4%2C0%2C0%2C0%2C1.6-1.58%2C3.27%2C3.27%2C0%2C0%2C0%2C.25-1.4c-1-.26-1.89-.32-2.06%2C0a6.75%2C6.75%2C0%2C0%2C0-.68%2C1.75S541.29%2C322.25%2C541.85%2C323Z%22%20style%3D%22fill%3A%23050400%3Bopacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M542.65%2C320.18a2.23%2C2.23%2C0%2C1%2C0-1.82%2C2.57A2.23%2C2.23%2C0%2C0%2C0%2C542.65%2C320.18Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M542.65%2C320.18a2.1%2C2.1%2C0%2C1%2C0-.4%2C1.64A2.14%2C2.14%2C0%2C0%2C0%2C542.65%2C320.18Zm0%2C0a2.35%2C2.35%2C0%2C0%2C1-3.61%2C2.37%2C2.34%2C2.34%2C0%2C0%2C1-1-1.57%2C2.35%2C2.35%2C0%2C1%2C1%2C4.64-.8Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M539.73%2C328.48a3.36%2C3.36%2C0%2C0%2C1%2C1.79%2C2.21%2C4.88%2C4.88%2C0%2C0%2C1%2C.22%2C1.46%2C5.37%2C5.37%2C0%2C0%2C1-.13%2C1.48%2C2.28%2C2.28%2C0%2C0%2C1-.33.76%2C1.09%2C1.09%2C0%2C0%2C1-.85.49%2C1%2C1%2C0%2C0%2C1-.88-.45%2C1.78%2C1.78%2C0%2C0%2C1-.27-.79%2C3.79%2C3.79%2C0%2C0%2C1%2C.17-1.47%2C2.58%2C2.58%2C0%2C0%2C1%2C.74-1.23%2C2.9%2C2.9%2C0%2C0%2C0-.4%2C1.3%2C4.07%2C4.07%2C0%2C0%2C0%2C.06%2C1.31c.2.94.88.79%2C1-.1a7.15%2C7.15%2C0%2C0%2C0%2C0-2.61%2C5.13%2C5.13%2C0%2C0%2C0-.4-1.26A2.92%2C2.92%2C0%2C0%2C0%2C539.73%2C328.48Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M564.82%2C282.5c28.37%2C20.65%2C53.07%2C49.53%2C50.88%2C58.83-2.31%2C9.83-21.53%2C21.08-38.62%2C23.58-3.5.51-14.74-25-11.16-26.27%2C2.78-1%2C15.45-4.78%2C17-6.55%2C1-1.23-19.14-28.7-25.78-43.11C550.13%2C273.9%2C557.23%2C277%2C564.82%2C282.5Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M573.13%2C337.75s-10.68%2C1.23-17.63%2C2.37c-3.88.64-10.43%2C2.32-13.07%2C4.09-3.94%2C2.65-18.73%2C16.24-15.51%2C19.9%2C2.91%2C3.31%2C7.15-2.07%2C7.15-2.07s-5.19%2C5.44-1.29%2C7.84%2C8.78-5.12%2C8.78-5.12-5.91%2C5.39-1.5%2C7.55c3.82%2C1.88%2C10.34-6.2%2C10.34-6.2s-6.82%2C5-3.09%2C7.29c4.12%2C2.54%2C15.41-8.34%2C15.41-8.34%2C9.18.89%2C14.81.18%2C21.23-1.73C585.13%2C363%2C573.13%2C337.75%2C573.13%2C337.75Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M540%2C366.57l1.24-1.71a31.6%2C31.6%2C0%2C0%2C1%2C2.51-3.25c.89-1%2C1.83-1.95%2C2.8-2.87s2.15-1.85%2C3.14-2.85a.08.08%2C0%2C1%2C1%2C.11.11%2C37.59%2C37.59%2C0%2C0%2C0-2.81%2C3.1c-.9%2C1-1.78%2C2.08-2.67%2C3.12s-1.79%2C2-2.68%2C3c-.44.49-.87%2C1-1.29%2C1.52a10.71%2C10.71%2C0%2C0%2C1-1.23%2C1.45.06.06%2C0%2C0%2C1-.09-.07A8.34%2C8.34%2C0%2C0%2C1%2C540%2C366.57Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M533%2C363.2a55.32%2C55.32%2C0%2C0%2C1%2C4.53-6.14%2C37.76%2C37.76%2C0%2C0%2C1%2C5.57-5.23.08.08%2C0%2C0%2C1%2C.11.11c-1.68%2C1.93-3.38%2C3.83-5.08%2C5.74-.84.93-4.48%2C5.28-4.92%2C5.69C533.11%2C363.46%2C533%2C363.31%2C533%2C363.2Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M546.43%2C369.92a53.64%2C53.64%2C0%2C0%2C1%2C4.37-5.7%2C50.84%2C50.84%2C0%2C0%2C1%2C5.67-4.65c.08%2C0%2C.18.05.11.12-1.77%2C1.68-3.56%2C3.34-5.24%2C5.11-.82.86-3.9%2C4.49-4.75%2C5.24C546.51%2C370.11%2C546.39%2C370%2C546.43%2C369.92Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M596.41%2C308l-21.15%2C14.17S559%2C297.89%2C554.75%2C286.33s.51-11.66%2C11.84-3.41S596.41%2C308%2C596.41%2C308Z%22%20style%3D%22fill%3A%23506F4A%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M591.51%2C305a172.73%2C172.73%2C0%2C0%2C1-17.6%2C12.27c-.08%2C0-.15-.07-.08-.12%2C1.61-1%2C10.22-7.55%2C17.59-12.28C591.51%2C304.83%2C591.58%2C305%2C591.51%2C305Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M576.61%2C321.21a12.89%2C12.89%2C0%2C0%2C0-1.28.7c-2.44-4.06-2-3.13-4.46-7.16l-3.64-5.94c-1.25-2.06-2.4-4.22-3.77-6.21%2C0-.06-.12%2C0-.1.06.86%2C2%2C2%2C3.87%2C3%2C5.76-.23-.29-.44-.59-.68-.86-.53-.62-1.06-1.24-1.55-1.9-.07-.1-.24%2C0-.17.1.47.63.88%2C1.28%2C1.3%2C1.94s.86%2C1.3%2C1.32%2C1.93.93%2C1.19%2C1.41%2C1.76l.18.22c.67%2C1.18%2C1.32%2C2.37%2C2%2C3.54a59.47%2C59.47%2C0%2C0%2C0%2C4.95%2C7.23%2C12.23%2C12.23%2C0%2C0%2C0%2C1.53-1.05C576.74%2C321.28%2C576.67%2C321.2%2C576.61%2C321.21Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M579.6%2C333.89q-3.37%2C1.33-6.76%2C2.6T566%2C339H566c-1.94.21-3.87.49-5.81.74s-3.87.56-5.79.9-3.84.69-5.74%2C1.16a19.7%2C19.7%2C0%2C0%2C0-5.46%2C2%2C11%2C11%2C0%2C0%2C1%2C2.57-1.43%2C27.86%2C27.86%2C0%2C0%2C1%2C2.78-1c1.89-.54%2C3.8-1%2C5.73-1.39s3.87-.69%2C5.81-1%2C3.89-.5%2C5.84-.7h-.07q3.42-1.17%2C6.87-2.27T579.6%2C333.89Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M554.82%2C279.55c-.32%2C1.51-4.14%2C8.28-8.77%2C8-2.37-.16-2.15-8.5-2.15-8.5l-.1-.62-1.36-8.63%2C11.9-6.54S554.91%2C279.12%2C554.82%2C279.55Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M554.55%2C269.16a17.57%2C17.57%2C0%2C0%2C1-10.75%2C9.25l-1.37-8.63%2C11.92-6.55S554.45%2C265.94%2C554.55%2C269.16Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M529.68%2C259.69c1.08%2C15.31%2C10.37%2C16.39%2C13.67%2C16.16%2C3-.22%2C13.17-1.33%2C13.68-16.66s-6.95-19.68-13.83-19.55S528.61%2C244.39%2C529.68%2C259.69Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M533.07%2C257.72c.35-.1.65-.25%2C1-.38a1.69%2C1.69%2C0%2C0%2C0%2C.93-.58.55.55%2C0%2C0%2C0-.1-.66%2C1.37%2C1.37%2C0%2C0%2C0-1.37-.1%2C2%2C2%2C0%2C0%2C0-1.12.89A.58.58%2C0%2C0%2C0%2C533.07%2C257.72Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M542.91%2C256.22c-.37%2C0-.7%2C0-1.06-.05a1.73%2C1.73%2C0%2C0%2C1-1.07-.26.55.55%2C0%2C0%2C1-.11-.66%2C1.35%2C1.35%2C0%2C0%2C1%2C1.27-.52%2C2%2C2%2C0%2C0%2C1%2C1.34.49A.58.58%2C0%2C0%2C1%2C542.91%2C256.22Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M541.51%2C260.37c0-.05.09%2C0%2C.09.08.11%2C1%2C.41%2C2.21%2C1.4%2C2.42%2C0%2C0%2C0%2C.06%2C0%2C.06C541.83%2C262.93%2C541.45%2C261.37%2C541.51%2C260.37Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M542.28%2C259.16c1.65-.36%2C2.24%2C3%2C.72%2C3.29S540.9%2C259.46%2C542.28%2C259.16Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M543%2C259.22c.32.13.66.41%2C1%2C.38s.65-.43.86-.81c0%2C0%2C0%2C0%2C.06%2C0a1.21%2C1.21%2C0%2C0%2C1-.67%2C1.54c-.6.2-1.15-.28-1.42-.89C542.77%2C259.35%2C542.84%2C259.16%2C543%2C259.22Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M535.67%2C261.18s-.07.06-.06.1c.22%2C1%2C.3%2C2.23-.57%2C2.75%2C0%2C0%2C0%2C.06%2C0%2C.05C536.17%2C263.71%2C536%2C262.11%2C535.67%2C261.18Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M534.55%2C260.27c-1.67.18-1.19%2C3.52.36%2C3.36S536%2C260.13%2C534.55%2C260.27Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M533.89%2C260.59c-.24.22-.45.58-.77.64s-.68-.24-1-.55c0%2C0-.06%2C0%2C0%2C0%2C.07.64.38%2C1.27%2C1%2C1.31s.91-.58%2C1-1.23C534.1%2C260.67%2C534%2C260.51%2C533.89%2C260.59Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M543.61%2C268.18c-.12.33-.2.74-.53.93a2.55%2C2.55%2C0%2C0%2C1-1.12.25s-.05.05%2C0%2C.07a1.38%2C1.38%2C0%2C0%2C0%2C1.44-.06%2C1.12%2C1.12%2C0%2C0%2C0%2C.34-1.19C543.71%2C268.12%2C543.63%2C268.13%2C543.61%2C268.18Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M538.18%2C265.57s.12%2C1.57.27%2C2.29a3.94%2C3.94%2C0%2C0%2C0%2C3.53-2c0-.07-.08-.13-.13-.07a5.26%2C5.26%2C0%2C0%2C1-2.94%2C1.56c-.09-.19-.1-2.7-.22-2.68a6.33%2C6.33%2C0%2C0%2C0-1.56.72c-.33-3.27-.14-6.56-.52-9.81a.1.1%2C0%2C0%2C0-.2%2C0%2C52.64%2C52.64%2C0%2C0%2C0%2C.12%2C10.58C536.56%2C266.61%2C537.92%2C265.76%2C538.18%2C265.57Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M539.42%2C267.58a3.74%2C3.74%2C0%2C0%2C0%2C1.75.8%2C1.71%2C1.71%2C0%2C0%2C0%2C1-.17c.68-.37.55-1%2C.28-1.58a4.07%2C4.07%2C0%2C0%2C0-.54-.81A4.91%2C4.91%2C0%2C0%2C1%2C539.42%2C267.58Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M541.17%2C268.38a1.71%2C1.71%2C0%2C0%2C0%2C1-.17c.68-.37.55-1%2C.28-1.58A1.76%2C1.76%2C0%2C0%2C0%2C541.17%2C268.38Z%22%20style%3D%22fill%3A%23ff9abb%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M556.11%2C260.21c-2.8.77-4.47-5.65-4.47-5.65s-12.43-.29-14.9-10a16.86%2C16.86%2C0%2C0%2C1-7.1%2C10.37s-1.15-10.89%2C7.13-14.24c0%2C0%2C10.09-5.42%2C17.31%2C2.16S558%2C259.69%2C556.11%2C260.21Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M554.68%2C260.53s2.56-5.25%2C4.89-4.41.93%2C8.09-1.44%2C9.43a2.6%2C2.6%2C0%2C0%2C1-3.65-.84Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M559.12%2C258.19a0%2C0%2C0%2C1%2C1%2C0%2C.06c-1.65%2C1-2.32%2C2.78-2.71%2C4.59a1.45%2C1.45%2C0%2C0%2C1%2C2.06-.73.06.06%2C0%2C0%2C1%2C0%2C.11%2C1.59%2C1.59%2C0%2C0%2C0-1.65.82%2C7.6%2C7.6%2C0%2C0%2C0-.61%2C1.54c-.06.17-.36.13-.32-.06v0C555.48%2C262.23%2C556.74%2C258.8%2C559.12%2C258.19Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M557.75%2C265a.65.65%2C0%2C0%2C1-1.3-.14.65.65%2C0%2C1%2C1%2C1.3.14Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M536.6%2C243.82a10.84%2C10.84%2C0%2C0%2C0%2C1.19%2C4.43%2C11.31%2C11.31%2C0%2C0%2C0%2C2.87%2C3.65%2C7.9%2C7.9%2C0%2C0%2C0%2C.94.7l.48.34c.16.1.34.19.51.28.35.18.69.37%2C1%2C.53l1.09.4.55.19.56.13%2C1.13.25c.76.1%2C1.53.16%2C2.29.21-.74-.21-1.49-.33-2.22-.54l-1.07-.34-.54-.17-.51-.23c-.34-.15-.68-.31-1-.45s-.65-.37-1-.55l-.48-.27-.45-.33a8.26%2C8.26%2C0%2C0%2C1-.88-.68%2C12.54%2C12.54%2C0%2C0%2C1-2.85-3.38%2C12.94%2C12.94%2C0%2C0%2C1-1-2A12.29%2C12.29%2C0%2C0%2C1%2C536.6%2C243.82Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M533.57%2C359.48c-3%2C1.71-6.56-5.92-6.56-5.92a6.28%2C6.28%2C0%2C0%2C1-1.7%2C3.93c-1.86%2C1.8-5.5-.33-5.5-.33a7.81%2C7.81%2C0%2C0%2C1-2.45%2C3.86c-2%2C1.55-5.94-.08-5.94-.08a6.81%2C6.81%2C0%2C0%2C1-4.29%2C2c-4.37.2-8.16-5.29-10.61-8.75s-6.14-15.59-7.08-17.83l22.1-15.9s15.39%2C12.41%2C17.69%2C16.9C531.17%2C341.17%2C538.07%2C356.86%2C533.57%2C359.48Z%22%20style%3D%22fill%3A%20rgb%28173%2C%2099%2C%2089%29%3B%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M527.06%2C353.45c-1.1-4.5-3.27-8.74-5.41-12.81a.08.08%2C0%2C0%2C0-.14.08c2.17%2C4%2C3.33%2C8.71%2C5.34%2C12.81A.11.11%2C0%2C0%2C0%2C527.06%2C353.45Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M520.05%2C356.88a12.07%2C12.07%2C0%2C0%2C0-1.43-2.82c-.57-1-1.16-1.92-1.76-2.87q-1.82-2.83-3.76-5.58c-.06-.08-.2%2C0-.14.08%2C1.2%2C1.88%2C2.37%2C3.79%2C3.49%2C5.73.56%2C1%2C1.11%2C1.94%2C1.66%2C2.92a14%2C14%2C0%2C0%2C0%2C1.66%2C2.69A.17.17%2C0%2C0%2C0%2C520.05%2C356.88Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M511.37%2C360.86a8.5%2C8.5%2C0%2C0%2C0-1.41-2.48c-.57-.85-1.14-1.7-1.69-2.56-1.12-1.71-2.24-3.43-3.29-5.18-.05-.08-.19%2C0-.14.08%2C1.06%2C1.78%2C2.1%2C3.58%2C3.18%2C5.36.53.87%2C1.07%2C1.74%2C1.61%2C2.61a8.11%2C8.11%2C0%2C0%2C0%2C1.66%2C2.23S511.38%2C360.9%2C511.37%2C360.86Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Crect%20x%3D%22495.92%22%20y%3D%22367.26%22%20width%3D%2279.5%22%20height%3D%223.57%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Frect%3E%3Cpolygon%20points%3D%22557.82%20367.26%20558.47%20370.82%20495.92%20370.82%20495.92%20367.26%20557.82%20367.26%22%20style%3D%22fill%3A%23a6a6a6%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22555.01%20370.82%20487.51%20370.82%20481.89%20324.97%20549.39%20324.97%20555.01%20370.82%22%20style%3D%22fill%3A%23c7c7c7%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M522.56%2C347.9a4%2C4%2C0%2C0%2C1-4%2C4.11%2C4.2%2C4.2%2C0%2C0%2C1-4.18-4.11%2C4%2C4%2C0%2C0%2C1%2C4-4.11A4.2%2C4.2%2C0%2C0%2C1%2C522.56%2C347.9Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fsvg%3E";
|
|
1863
|
+
|
|
1864
|
+
var MicrosoftLogo = "data:image/svg+xml,%3Csvg%20width%3D%2225%22%20height%3D%2225%22%20viewBox%3D%220%200%2025%2025%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20id%3D%22microsoft_svgrepo.com%22%3E%3Cpath%20id%3D%22Vector%22%20d%3D%22M20.75%2013.25H13.25V20.75H20.75V13.25Z%22%20fill%3D%22%23FEBA08%22%2F%3E%3Cpath%20id%3D%22Vector_2%22%20d%3D%22M11.75%2013.25H4.25V20.75H11.75V13.25Z%22%20fill%3D%22%2305A6F0%22%2F%3E%3Cpath%20id%3D%22Vector_3%22%20d%3D%22M20.75%204.25H13.25V11.75H20.75V4.25Z%22%20fill%3D%22%2380BC06%22%2F%3E%3Cpath%20id%3D%22Vector_4%22%20d%3D%22M11.75%204.25H4.25V11.75H11.75V4.25Z%22%20fill%3D%22%23F25325%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E";
|
|
1865
|
+
|
|
1866
|
+
var Input = React.forwardRef(function (_a, ref) {
|
|
1867
|
+
var className = _a.className, type = _a.type, props = __rest(_a, ["className", "type"]);
|
|
1868
|
+
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)));
|
|
1869
|
+
});
|
|
1870
|
+
Input.displayName = "Input";
|
|
1871
|
+
|
|
1872
|
+
var credentialsSchema = z.object({
|
|
1873
|
+
username: z.string().min(1, "Username is required"),
|
|
1874
|
+
password: z.string().min(1, "Password is required"),
|
|
1875
|
+
});
|
|
1876
|
+
var ADLoginModal = function (_a) {
|
|
1877
|
+
var open = _a.open, onOpenChange = _a.onOpenChange, onLogin = _a.onLogin;
|
|
1878
|
+
var _b = useState("credentials"), step = _b[0], setStep = _b[1];
|
|
1879
|
+
var _c = useState({ username: "", password: "" }), credentials = _c[0], setCredentials = _c[1];
|
|
1880
|
+
var _d = useState(""), mfaCode = _d[0], setMfaCode = _d[1];
|
|
1881
|
+
var _e = useState(false), isLoading = _e[0], setIsLoading = _e[1];
|
|
1882
|
+
var form = useForm({
|
|
1883
|
+
resolver: a$1(credentialsSchema),
|
|
1884
|
+
defaultValues: { username: "", password: "" },
|
|
1885
|
+
});
|
|
1886
|
+
var handleCredentialsSubmit = function (values) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1887
|
+
return __generator(this, function (_a) {
|
|
1888
|
+
setCredentials(values);
|
|
1889
|
+
setStep("mfa");
|
|
1890
|
+
return [2 /*return*/];
|
|
1891
|
+
});
|
|
1892
|
+
}); };
|
|
1893
|
+
var handleMFASubmit = function (code) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1894
|
+
var error_1;
|
|
1895
|
+
return __generator(this, function (_a) {
|
|
1896
|
+
switch (_a.label) {
|
|
1897
|
+
case 0:
|
|
1898
|
+
setIsLoading(true);
|
|
1899
|
+
_a.label = 1;
|
|
1900
|
+
case 1:
|
|
1901
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
1902
|
+
return [4 /*yield*/, onLogin(credentials.username, credentials.password, code)];
|
|
1903
|
+
case 2:
|
|
1904
|
+
_a.sent();
|
|
1905
|
+
onOpenChange(false);
|
|
1906
|
+
setStep("credentials");
|
|
1907
|
+
form.reset();
|
|
1908
|
+
setMfaCode("");
|
|
1909
|
+
return [3 /*break*/, 5];
|
|
1910
|
+
case 3:
|
|
1911
|
+
error_1 = _a.sent();
|
|
1912
|
+
console.error("AD login failed:", error_1);
|
|
1913
|
+
return [3 /*break*/, 5];
|
|
1914
|
+
case 4:
|
|
1915
|
+
setIsLoading(false);
|
|
1916
|
+
return [7 /*endfinally*/];
|
|
1917
|
+
case 5: return [2 /*return*/];
|
|
1918
|
+
}
|
|
1919
|
+
});
|
|
1920
|
+
}); };
|
|
1921
|
+
var handleClose = function () {
|
|
1922
|
+
onOpenChange(false);
|
|
1923
|
+
setStep("credentials");
|
|
1924
|
+
form.reset();
|
|
1925
|
+
setMfaCode("");
|
|
1926
|
+
};
|
|
1927
|
+
return (jsxRuntimeExports.jsx(Dialog, { open: open, onOpenChange: handleClose, children: jsxRuntimeExports.jsxs(DialogContent, { className: "sm:max-w-md", children: [jsxRuntimeExports.jsx(DialogHeader, { children: jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(KeyIcon, { className: "w-5 h-5 text-[#506f4a]" }), jsxRuntimeExports.jsx(DialogTitle, { 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) {
|
|
1928
|
+
var field = _a.field;
|
|
1929
|
+
return (jsxRuntimeExports.jsxs(FormItem, { children: [jsxRuntimeExports.jsx(FormLabel, { children: "Username" }), jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(Input, __assign({ placeholder: "Enter your username" }, field)) }), jsxRuntimeExports.jsx(FormMessage, {})] }));
|
|
1930
|
+
} }), jsxRuntimeExports.jsx(FormField, { control: form.control, name: "password", render: function (_a) {
|
|
1931
|
+
var field = _a.field;
|
|
1932
|
+
return (jsxRuntimeExports.jsxs(FormItem, { children: [jsxRuntimeExports.jsx(FormLabel, { children: "Password" }), jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(Input, __assign({ type: "password", placeholder: "Enter your password" }, field)) }), jsxRuntimeExports.jsx(FormMessage, {})] }));
|
|
1933
|
+
} }), 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(Loader2, { className: "w-4 h-4 animate-spin" }), jsxRuntimeExports.jsx("span", { children: "Verifying..." })] }))] }))] }) }));
|
|
1934
|
+
};
|
|
1935
|
+
|
|
1936
|
+
var DefaultLoginPage = function () {
|
|
1937
|
+
var context = useCAMSContext();
|
|
1938
|
+
var login = context.login, isLoading = context.isLoading, authMode = context.authMode;
|
|
1939
|
+
var _a = useState(false), showADModal = _a[0], setShowADModal = _a[1];
|
|
1940
|
+
var handleLogin = function () {
|
|
1941
|
+
if (authMode === "MSAL") {
|
|
1942
|
+
login();
|
|
1943
|
+
}
|
|
1944
|
+
else {
|
|
1945
|
+
// For regular mode, you'd need to provide CAMSConfig
|
|
1946
|
+
console.warn("Regular CAMS login requires configuration");
|
|
1947
|
+
}
|
|
1948
|
+
};
|
|
1949
|
+
var cardVariants = {
|
|
1950
|
+
hidden: { opacity: 0, scale: 0.8, y: 50 },
|
|
1951
|
+
visible: {
|
|
1952
|
+
opacity: 1,
|
|
1953
|
+
scale: 1,
|
|
1954
|
+
y: 0,
|
|
1955
|
+
transition: { type: "spring", duration: 0.6 },
|
|
1956
|
+
},
|
|
1957
|
+
exit: { opacity: 0, scale: 0.8, y: -50, transition: { duration: 0.3 } },
|
|
1958
|
+
};
|
|
1959
|
+
return (jsxRuntimeExports.jsxs("main", { className: "min-h-screen bg-gray-50", children: [jsxRuntimeExports.jsx(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(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-4", 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
|
|
1960
|
+
// variant="outline"
|
|
1961
|
+
, {
|
|
1962
|
+
// variant="outline"
|
|
1963
|
+
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: handleLogin, disabled: isLoading, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftLogo, alt: "Microsoft Logo", width: 35, height: 35 }), jsxRuntimeExports.jsx("span", { children: isLoading ? "Logging in..." : "Sign in with Microsoft" })] }), jsxRuntimeExports.jsxs(Button
|
|
1964
|
+
// variant="outline"
|
|
1965
|
+
, {
|
|
1966
|
+
// variant="outline"
|
|
1967
|
+
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(KeyIcon, {}), jsxRuntimeExports.jsx("span", { children: isLoading ? "Logging in..." : "Sign in with AD" })] })] }), jsxRuntimeExports.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntimeExports.jsx(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, onLogin: function (username, password, mfaCode) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1968
|
+
return __generator(this, function (_a) {
|
|
1969
|
+
// Implement your AD login logic here
|
|
1970
|
+
console.log("AD Login:", { username: username, password: password, mfaCode: mfaCode });
|
|
1971
|
+
return [2 /*return*/];
|
|
1972
|
+
});
|
|
1973
|
+
}); } })] }));
|
|
1974
|
+
};
|
|
1975
|
+
|
|
1976
|
+
var ErrorFallback = function (_a) {
|
|
1977
|
+
var message = _a.message;
|
|
1978
|
+
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 })] }) }));
|
|
1979
|
+
};
|
|
1980
|
+
|
|
1981
|
+
var MFAEndpointUrlSchema = z$1.url("MFAEndpoint must be a valid URL");
|
|
1982
|
+
var MFAGate = function (_a) {
|
|
1983
|
+
var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? jsxRuntimeExports.jsx(LoadingSpinner, {}) : _b, _c = _a.loginComponent, LoginComponent = _c === void 0 ? DefaultLoginPage : _c, MFAEndpoint = _a.MFAEndpoint;
|
|
1984
|
+
var context = useCAMSContext();
|
|
1985
|
+
var validatedMFAEndpoint = useMemo(function () {
|
|
1986
|
+
var parsed = MFAEndpointUrlSchema.safeParse(MFAEndpoint);
|
|
1987
|
+
if (!parsed.success) {
|
|
1988
|
+
Logger.error("Invalid MFAEndpoint", parsed.error);
|
|
1989
|
+
return null;
|
|
1990
|
+
}
|
|
1991
|
+
return parsed.data;
|
|
1992
|
+
}, [MFAEndpoint]);
|
|
1993
|
+
var handleComplete = useCallback(function (success) {
|
|
1994
|
+
if (!success)
|
|
1995
|
+
Logger.error("MFA authentication failed");
|
|
1996
|
+
}, []);
|
|
1997
|
+
var handleAuthFailed = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1998
|
+
return __generator(this, function (_a) {
|
|
1999
|
+
switch (_a.label) {
|
|
2000
|
+
case 0: return [4 /*yield*/, context.logout()];
|
|
2001
|
+
case 1:
|
|
2002
|
+
_a.sent();
|
|
2003
|
+
return [2 /*return*/];
|
|
2004
|
+
}
|
|
2005
|
+
});
|
|
2006
|
+
}); }, [context.logout]);
|
|
2007
|
+
Logger.debug("MFA Endpoint >>>", { MFAEndpoint: MFAEndpoint });
|
|
2008
|
+
if (!validatedMFAEndpoint)
|
|
2009
|
+
return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid MFA configuration." });
|
|
2010
|
+
if (context.authMode !== "MSAL")
|
|
2011
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
|
|
2012
|
+
if (context.isLoading)
|
|
2013
|
+
return fallback;
|
|
2014
|
+
if (context.requiresMFA) {
|
|
2015
|
+
return (jsxRuntimeExports.jsx(MFAOptions, { MFAEndpoint: validatedMFAEndpoint, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
|
|
2016
|
+
}
|
|
2017
|
+
if (!context.isAuthenticated) {
|
|
2018
|
+
return jsxRuntimeExports.jsx(LoginComponent, {});
|
|
2019
|
+
}
|
|
2020
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
|
|
2021
|
+
};
|
|
2022
|
+
|
|
2023
|
+
export { CAMSMSALProvider, CAMSProvider, ClientOnly, DefaultLoginPage as LoginButton, MFAGate, MFAOptions, ProtectedRoute, UnifiedCAMSProvider, useCAMSAuth, useCAMSContext, useCAMSMSALAuth, useCAMSMSALContext, useCAMSPopupAuth };
|
|
2024
|
+
//# sourceMappingURL=index.esm.js.map
|