@devsym/graph-toolkit-react 1.0.0-next.8 → 1.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/AGENTS.md +10 -0
  2. package/CONTRIBUTING.md +64 -0
  3. package/README.md +257 -0
  4. package/dist/components/People/People.d.ts +16 -0
  5. package/dist/components/People/People.d.ts.map +1 -0
  6. package/dist/components/People/People.types.d.ts +103 -0
  7. package/dist/components/People/People.types.d.ts.map +1 -0
  8. package/dist/components/People/index.d.ts +6 -0
  9. package/dist/components/People/index.d.ts.map +1 -0
  10. package/dist/components/PeoplePicker/PeoplePicker.d.ts +24 -0
  11. package/dist/components/PeoplePicker/PeoplePicker.d.ts.map +1 -0
  12. package/dist/components/PeoplePicker/PeoplePicker.types.d.ts +92 -0
  13. package/dist/components/PeoplePicker/PeoplePicker.types.d.ts.map +1 -0
  14. package/dist/components/PeoplePicker/index.d.ts +6 -0
  15. package/dist/components/PeoplePicker/index.d.ts.map +1 -0
  16. package/dist/components/Person/Person.d.ts.map +1 -1
  17. package/dist/components/Person/Person.types.d.ts +48 -0
  18. package/dist/components/Person/Person.types.d.ts.map +1 -1
  19. package/dist/components/Person/index.d.ts +1 -1
  20. package/dist/components/Person/index.d.ts.map +1 -1
  21. package/dist/hooks/usePeopleList.d.ts +74 -0
  22. package/dist/hooks/usePeopleList.d.ts.map +1 -0
  23. package/dist/hooks/usePeopleSearch.d.ts +42 -0
  24. package/dist/hooks/usePeopleSearch.d.ts.map +1 -0
  25. package/dist/hooks/usePersonData.d.ts.map +1 -1
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -1
  29. package/dist/index.mjs +1618 -631
  30. package/dist/providers/IPersonDataProvider.d.ts +62 -1
  31. package/dist/providers/IPersonDataProvider.d.ts.map +1 -1
  32. package/dist/providers/MockProvider.d.ts +3 -2
  33. package/dist/providers/MockProvider.d.ts.map +1 -1
  34. package/dist/providers/MsalBrowserProvider.d.ts +12 -0
  35. package/dist/providers/MsalBrowserProvider.d.ts.map +1 -1
  36. package/dist/utils/graph.d.ts +17 -0
  37. package/dist/utils/graph.d.ts.map +1 -1
  38. package/docs/assets/readme/banner.jpg +0 -0
  39. package/docs/assets/readme/banner.png +0 -0
  40. package/docs/assets/readme/provider-flow.svg +76 -0
  41. package/package.json +17 -15
  42. package/readme.md +0 -417
package/dist/index.mjs CHANGED
@@ -1,632 +1,1619 @@
1
- import { jsx as v } from "react/jsx-runtime";
2
- import { Persona as z } from "@fluentui/react-components";
3
- import { createContext as de, useCallback as X, useSyncExternalStore as we, useMemo as F, useContext as q, useState as pe, useEffect as je } from "react";
4
- import { Client as He } from "@microsoft/microsoft-graph-client";
5
- const Ie = "graph-toolkit-person-cache", x = "personData", he = 1, ye = 3600 * 1e3, Je = 3600 * 1e3, De = 300 * 1e3, V = {
6
- enabled: !0,
7
- userTtlMs: ye,
8
- photoTtlMs: Je,
9
- presenceTtlMs: De
10
- }, m = () => typeof window < "u" && typeof window.indexedDB < "u", N = (t) => new Promise((e, n) => {
11
- t.onsuccess = () => e(t.result), t.onerror = () => n(t.error);
12
- }), Z = () => new Promise((t, e) => {
13
- if (!m()) {
14
- e(new Error("IndexedDB unavailable"));
15
- return;
16
- }
17
- const n = window.indexedDB.open(Ie, he);
18
- n.onupgradeneeded = () => {
19
- const s = n.result;
20
- s.objectStoreNames.contains(x) || s.createObjectStore(x);
21
- }, n.onsuccess = () => t(n.result), n.onerror = () => e(n.error);
22
- }), Oe = (t) => `person:${t.trim().toLowerCase()}`, K = (t, e) => t ? Date.now() - t < e : !1, xe = async (t) => {
23
- if (!m())
24
- return null;
25
- let e = null;
26
- try {
27
- e = await Z();
28
- const s = e.transaction(x, "readonly").objectStore(x);
29
- return await N(s.get(t)) ?? null;
30
- } catch {
31
- return null;
32
- } finally {
33
- e?.close();
34
- }
35
- }, fe = async (t, e) => {
36
- if (!m())
37
- return;
38
- let n = null;
39
- try {
40
- n = await Z();
41
- const r = n.transaction(x, "readwrite").objectStore(x);
42
- await N(r.put(e, t));
43
- } catch {
44
- return;
45
- } finally {
46
- n?.close();
47
- }
48
- }, R = de({
49
- provider: null,
50
- state: "Loading",
51
- personCacheOptions: V
52
- }), Ze = ({
53
- provider: t,
54
- children: e,
55
- personCacheOptions: n
56
- }) => {
57
- const s = X(
58
- () => t?.getState?.() ?? "Loading",
59
- [t]
60
- ), r = X(
61
- (u) => (t.onStateChanged?.(u), () => {
62
- const J = t;
63
- typeof J.removeStateChangedHandler == "function" && J.removeStateChangedHandler(u);
64
- }),
65
- [t]
66
- ), c = we(r, s, s), l = F(
67
- () => ({
68
- ...V,
69
- ...n ?? {}
70
- }),
71
- [n]
72
- ), i = F(
73
- () => ({
74
- provider: t,
75
- state: c,
76
- personCacheOptions: l
77
- }),
78
- [t, c, l]
79
- );
80
- return /* @__PURE__ */ v(R.Provider, { value: i, children: e });
81
- }, _ = () => {
82
- const { provider: t } = q(R);
83
- return t;
84
- }, $ = () => {
85
- const { state: t } = q(R);
86
- return t;
87
- }, Ge = () => {
88
- const { personCacheOptions: t } = q(R);
89
- return t;
90
- }, Ce = (t) => He.init({
91
- authProvider: async (e) => {
92
- try {
93
- const n = await t.getAccessToken();
94
- e(null, n);
95
- } catch (n) {
96
- e(n, null);
97
- }
98
- }
99
- }), Te = (t) => {
100
- const e = t.trim().split(" ");
101
- return e.length === 1 ? e[0].substring(0, 2).toUpperCase() : (e[0][0] + e[e.length - 1][0]).toUpperCase();
102
- }, Qe = () => {
103
- const t = _(), e = $();
104
- return F(() => !t || e !== "SignedIn" ? null : Ce(t), [t, e]);
105
- }, Ee = (t) => typeof t == "object" && t !== null && typeof t.getPersonData == "function", b = [
106
- "id",
107
- "displayName",
108
- "jobTitle",
109
- "mail",
110
- "department",
111
- "officeLocation",
112
- "userPrincipalName"
113
- ], Me = async (t) => {
114
- if (!t)
115
- return null;
116
- if (typeof t == "string")
117
- return t;
118
- const e = t instanceof Blob ? t : t instanceof ArrayBuffer ? new Blob([t]) : null;
119
- return e ? new Promise((n, s) => {
120
- const r = new FileReader();
121
- r.onloadend = () => n(typeof r.result == "string" ? r.result : null), r.onerror = () => s(r.error), r.readAsDataURL(e);
122
- }) : null;
123
- }, Re = (t) => {
124
- const e = Qe(), n = _(), s = $(), r = Ge(), { userId: c, userPrincipalName: l, fetchPresence: i = !1, fetchPhoto: u = !0, selectFields: J } = t, h = [
125
- .../* @__PURE__ */ new Set([
126
- ...b,
127
- ...(J ?? []).map((A) => A.trim()).filter((A) => A.length > 0 && /^[a-zA-Z0-9_./]+$/.test(A))
128
- ])
129
- ].join(","), [U, P] = pe({
130
- user: null,
131
- presence: null,
132
- photoUrl: null,
133
- loading: !0,
134
- error: null
135
- });
136
- return je(() => {
137
- let A = !1;
138
- const Q = h.split(",").filter((B) => !b.includes(B));
139
- return (async () => {
140
- const B = c || l;
141
- if (Ee(n)) {
142
- try {
143
- const a = await n.getPersonData({
144
- identifier: B,
145
- fetchPresence: i,
146
- fetchPhoto: u,
147
- selectFields: Q.length > 0 ? Q : void 0
148
- });
149
- A || P({
150
- user: a.user,
151
- presence: a.presence,
152
- photoUrl: a.photoUrl,
153
- loading: !1,
154
- error: null
155
- });
156
- } catch (a) {
157
- A || P({
158
- user: null,
159
- presence: null,
160
- photoUrl: null,
161
- loading: !1,
162
- error: a
163
- });
164
- }
165
- return;
166
- }
167
- if (s !== "SignedIn") {
168
- A || P({
169
- user: null,
170
- presence: null,
171
- photoUrl: null,
172
- loading: !1,
173
- error: s === "SignedOut" ? null : new Error("Provider not signed in")
174
- });
175
- return;
176
- }
177
- if (!e) {
178
- A || P((a) => ({ ...a, loading: !0 }));
179
- return;
180
- }
181
- if (!B) {
182
- A || P({
183
- user: null,
184
- presence: null,
185
- photoUrl: null,
186
- loading: !1,
187
- error: null
188
- });
189
- return;
190
- }
191
- const D = Oe(B), o = r.enabled ? await xe(D) : null, O = !!(o?.user && K(o.userCachedAt, r.userTtlMs)), f = !!(o?.presenceCachedAt && K(o.presenceCachedAt, r.presenceTtlMs)), G = !!(o?.photoCachedAt && K(o.photoCachedAt, r.photoTtlMs));
192
- if (O && (!i || f) && (!u || G)) {
193
- A || P({
194
- user: o?.user ?? null,
195
- presence: i ? o?.presence ?? null : null,
196
- photoUrl: u ? o?.photoUrl ?? null : null,
197
- loading: !1,
198
- error: null
199
- });
200
- return;
201
- }
202
- try {
203
- P((H) => ({ ...H, loading: !0, error: null }));
204
- const a = B.toLowerCase() === "me", y = Date.now();
205
- let C = !1, w = !1, p = !1, d = O ? o?.user ?? null : null;
206
- if (d || (d = await e.api(a ? "/me" : `/users/${B}`).select(h).get(), C = !0), A) return;
207
- let j = null, g = null;
208
- if (i) {
209
- if (f)
210
- j = o?.presence ?? null;
211
- else if (d?.id) {
212
- try {
213
- j = await e.api(a ? "/me/presence" : `/users/${d.id}/presence`).get();
214
- } catch (H) {
215
- console.warn("Failed to fetch presence:", H);
216
- }
217
- w = !0;
218
- }
219
- }
220
- if (u) {
221
- if (G)
222
- g = o?.photoUrl ?? null;
223
- else if (d?.id) {
224
- try {
225
- const H = await e.api(a ? "/me/photo/$value" : `/users/${d.id}/photo/$value`).get();
226
- g = await Me(H);
227
- } catch (H) {
228
- console.warn("Failed to fetch photo:", H);
229
- }
230
- p = !0;
231
- }
232
- }
233
- const S = {
234
- ...o ?? {}
235
- };
236
- C && d && (S.user = d, S.userCachedAt = y), i && (w || f) && (S.presence = w ? j : o?.presence, S.presenceCachedAt = w ? y : o?.presenceCachedAt), u && (p || G) && (S.photoUrl = p ? g : o?.photoUrl, S.photoCachedAt = p ? y : o?.photoCachedAt), r.enabled && (C || w || p) && S.user && await fe(D, S), A || P({
237
- user: d,
238
- presence: j,
239
- photoUrl: g,
240
- loading: !1,
241
- error: null
242
- });
243
- } catch (a) {
244
- A || P({
245
- user: null,
246
- presence: null,
247
- photoUrl: null,
248
- loading: !1,
249
- error: a
250
- });
251
- }
252
- })(), () => {
253
- A = !0;
254
- };
255
- }, [e, n, s, c, l, i, u, r, h]), U;
256
- }, Ue = (t) => {
257
- switch (t?.toLowerCase()) {
258
- case "available":
259
- case "availableidle":
260
- return "available";
261
- case "away":
262
- case "berightback":
263
- return "away";
264
- case "busy":
265
- case "busyidle":
266
- case "donotdisturb":
267
- return "busy";
268
- default:
269
- return "offline";
270
- }
271
- }, Ke = {
272
- avatar: [void 0, void 0, void 0, void 0],
273
- oneline: ["displayName", void 0, void 0, void 0],
274
- twolines: ["displayName", "jobTitle", void 0, void 0],
275
- threelines: ["displayName", "jobTitle", "department", void 0],
276
- fourlines: ["displayName", "jobTitle", "department", "officeLocation,mail"]
277
- }, ee = /* @__PURE__ */ new Set(["presenceActivity", "presenceAvailability"]), ve = /* @__PURE__ */ new Set(["email", ...ee]), Y = (t) => t?.split(",").map((e) => e.trim()).filter(Boolean) ?? [], I = (t) => {
278
- if (t != null) {
279
- if (typeof t == "string")
280
- return t || void 0;
281
- if (typeof t == "number" || typeof t == "boolean")
282
- return String(t);
283
- if (Array.isArray(t)) {
284
- const e = t.map((n) => I(n)).filter((n) => !!n);
285
- return e.length > 0 ? e.join(", ") : void 0;
286
- }
287
- }
288
- }, Fe = (t) => I(t.mail) ?? I(t.email) ?? I(t.userPrincipalName), E = (t, e) => {
289
- const n = Y(e);
290
- for (const s of n)
291
- switch (s) {
292
- case "mail":
293
- case "email": {
294
- const r = Fe(t);
295
- if (r)
296
- return r;
297
- break;
298
- }
299
- default: {
300
- const r = I(t[s]);
301
- if (r)
302
- return r;
303
- }
304
- }
305
- }, qe = (t, e, n) => ({ line: t, person: e, text: n }), T = (t, e, n, s) => s ? s(qe(t, e, n)) : n, M = (t, e, n) => n ?? Ke[t][e - 1], me = (t) => [...new Set(t.flatMap((e) => Y(e)))].filter((e) => !ve.has(e)), _e = ({
306
- userId: t,
307
- userPrincipalName: e,
308
- email: n,
309
- personDetails: s,
310
- view: r = "oneline",
311
- showPresence: c = !1,
312
- line1Property: l,
313
- line2Property: i,
314
- line3Property: u,
315
- line4Property: J,
316
- renderLine1: h,
317
- renderLine2: U,
318
- renderLine3: P,
319
- renderLine4: A,
320
- fetchImage: Q = !0,
321
- ...k
322
- }) => {
323
- const B = r === "avatar" ? void 0 : M(r, 1, l), D = r === "avatar" ? void 0 : M(r, 2, i), o = r === "threelines" || r === "fourlines" ? M(r, 3, u) : void 0, O = r === "fourlines" ? M(r, 4, J) : void 0, f = [B, D, o, O].some((Se) => Y(Se).some((Pe) => ee.has(Pe))), { user: G, presence: a, photoUrl: y, loading: C } = Re({
324
- userId: s ? void 0 : t || e || n,
325
- fetchPresence: c || f,
326
- fetchPhoto: Q,
327
- selectFields: me([
328
- B,
329
- D,
330
- o,
331
- O
332
- ])
333
- }), w = s || G;
334
- if (C)
335
- return /* @__PURE__ */ v(
336
- z,
337
- {
338
- ...k,
339
- name: k.name ?? "Loading..."
340
- }
341
- );
342
- if (!w)
343
- return null;
344
- const p = w.displayName || "Unknown User", d = Te(p), j = w, g = {
345
- ...j,
346
- email: n ?? I(j.email),
347
- presenceActivity: a?.activity ?? I(j.presenceActivity),
348
- presenceAvailability: a?.availability ?? I(j.presenceAvailability)
349
- }, S = E(g, B), H = E(g, D), te = E(g, o), ne = E(g, O), re = B && S !== p || h ? T(1, g, S, h) : k.primaryText, se = T(2, g, H, U), ce = T(3, g, te, P), oe = T(4, g, ne, A), ae = c && a ? {
350
- status: Ue(a.availability)
351
- } : void 0, Ae = k.presence ?? ae, ie = k.avatar ?? {
352
- image: y ? { src: y } : void 0,
353
- initials: y ? void 0 : d
354
- }, le = k.name ?? p, ge = k.primaryText ?? re, ue = k.secondaryText ?? se, ke = k.tertiaryText ?? ce, Be = k.quaternaryText ?? oe;
355
- return /* @__PURE__ */ v(
356
- z,
357
- {
358
- ...k,
359
- name: le,
360
- primaryText: ge,
361
- avatar: ie,
362
- presence: Ae,
363
- secondaryText: ue,
364
- tertiaryText: ke,
365
- quaternaryText: Be
366
- }
367
- );
368
- }, Ye = "data:image/jpeg;base64,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";
369
- class Le {
370
- state = "SignedOut";
371
- listeners = [];
372
- constructor(e) {
373
- e?.autoSignIn && (this.state = "SignedIn");
374
- }
375
- getAccessToken() {
376
- return this.state !== "SignedIn" ? Promise.reject(new Error("Not signed in")) : Promise.resolve("mock-token");
377
- }
378
- async getPersonData(e) {
379
- const n = "Adele Vance", s = e.identifier && e.identifier !== "me" ? e.identifier : "adelev@contoso.com", r = {
380
- id: "00000000-0000-0000-0000-000000000000",
381
- displayName: n,
382
- userPrincipalName: s,
383
- jobTitle: "Product Manager",
384
- department: "Marketing",
385
- officeLocation: "19/3106",
386
- mail: "adelev@contoso.com"
387
- }, c = {
388
- availability: "Available",
389
- activity: "Available",
390
- id: r.id,
391
- odataType: "#microsoft.graph.presence"
392
- };
393
- return {
394
- user: r,
395
- presence: e.fetchPresence ? c : null,
396
- photoUrl: e.fetchPhoto ? Ye : null
397
- };
398
- }
399
- async login() {
400
- this.state = "SignedIn", this.emit();
401
- }
402
- async logout() {
403
- this.state = "SignedOut", this.emit();
404
- }
405
- getState() {
406
- return this.state;
407
- }
408
- onStateChanged(e) {
409
- this.listeners.push(e);
410
- }
411
- removeStateChangedHandler(e) {
412
- this.listeners = this.listeners.filter((n) => n !== e);
413
- }
414
- emit() {
415
- for (const e of this.listeners)
416
- try {
417
- e();
418
- } catch {
419
- }
420
- }
421
- }
422
- const $e = () => new Le({ autoSignIn: !0 });
423
- function We(t) {
424
- return `See https://aka.ms/msal.js.errors#${t} for details`;
425
- }
426
- class L extends Error {
427
- constructor(e, n, s) {
428
- const r = n || (e ? We(e) : ""), c = r ? `${e}: ${r}` : e;
429
- super(c), Object.setPrototypeOf(this, L.prototype), this.errorCode = e || "", this.errorMessage = r || "", this.subError = s || "", this.name = "AuthError";
430
- }
431
- setCorrelationId(e) {
432
- this.correlationId = e;
433
- }
434
- }
435
- class W extends L {
436
- constructor(e, n, s, r, c, l, i, u) {
437
- super(e, n, s), Object.setPrototypeOf(this, W.prototype), this.timestamp = r || "", this.traceId = c || "", this.correlationId = l || "", this.claims = i || "", this.name = "InteractionRequiredAuthError", this.errorNo = u;
438
- }
439
- }
440
- class et {
441
- msalInstance;
442
- defaultScopes;
443
- account = null;
444
- state = "Loading";
445
- listeners = [];
446
- constructor(e, n) {
447
- this.msalInstance = e, this.defaultScopes = n;
448
- }
449
- async initialize() {
450
- await this.msalInstance.initialize(), await this.msalInstance.handleRedirectPromise();
451
- const e = this.msalInstance.getActiveAccount(), n = this.msalInstance.getAllAccounts();
452
- this.account = e ?? n[0] ?? null, this.account ? (this.msalInstance.setActiveAccount(this.account), this.setState("SignedIn")) : this.setState("SignedOut");
453
- }
454
- async login() {
455
- const e = { scopes: this.defaultScopes }, n = await this.msalInstance.loginPopup(e);
456
- this.account = n.account, this.account && this.msalInstance.setActiveAccount(this.account), this.setState("SignedIn");
457
- }
458
- async logout() {
459
- const e = this.msalInstance.getActiveAccount() ?? this.account ?? void 0;
460
- await this.msalInstance.logoutPopup({ account: e }), this.account = null, this.setState("SignedOut");
461
- }
462
- async getAccessToken(e) {
463
- const n = e && e.length > 0 ? e : this.defaultScopes, s = this.msalInstance.getActiveAccount() ?? this.account;
464
- if (!s)
465
- throw new Error("No active account. User must sign in first.");
466
- const r = {
467
- scopes: n,
468
- account: s
469
- };
470
- try {
471
- return (await this.msalInstance.acquireTokenSilent(r)).accessToken;
472
- } catch (c) {
473
- if (c instanceof W) {
474
- const l = {
475
- scopes: n,
476
- account: s
477
- };
478
- return (await this.msalInstance.acquireTokenPopup(l)).accessToken;
479
- }
480
- throw c;
481
- }
482
- }
483
- getState() {
484
- return this.state;
485
- }
486
- onStateChanged(e) {
487
- this.listeners.push(e);
488
- }
489
- removeStateChangedHandler(e) {
490
- this.listeners = this.listeners.filter((n) => n !== e);
491
- }
492
- setState(e) {
493
- this.state = e, this.emit();
494
- }
495
- emit() {
496
- for (const e of this.listeners)
497
- try {
498
- e();
499
- } catch {
500
- }
501
- }
502
- }
503
- const ze = 6e4;
504
- function tt(t) {
505
- const e = t.fetchFn ?? fetch;
506
- return async ({
507
- ssoToken: n,
508
- scopes: s
509
- }) => {
510
- const r = await e(t.endpoint, {
511
- method: "POST",
512
- headers: {
513
- Authorization: `Bearer ${n}`,
514
- "Content-Type": "application/json"
515
- },
516
- body: JSON.stringify({ scopes: s })
517
- }), c = await r.json().catch(() => ({ error: r.statusText || "Token exchange failed" }));
518
- if (!r.ok) {
519
- const l = c?.error || c?.message || r.statusText;
520
- throw new Error(`Backend token exchange failed: ${l}`);
521
- }
522
- if (!c?.accessToken)
523
- throw new Error("Backend token exchange response did not include accessToken.");
524
- return {
525
- accessToken: c.accessToken,
526
- expiresAt: c.expiresAt
527
- };
528
- };
529
- }
530
- class nt {
531
- defaultScopes;
532
- getTeamsSsoTokenFn;
533
- exchangeForGraphTokenFn;
534
- refreshSkewMs;
535
- state = "SignedOut";
536
- listeners = [];
537
- tokenCache = /* @__PURE__ */ new Map();
538
- constructor(e) {
539
- if (!e.defaultScopes || e.defaultScopes.length === 0)
540
- throw new Error("TeamsHostedProvider requires at least one default scope.");
541
- this.defaultScopes = [...new Set(e.defaultScopes)], this.getTeamsSsoTokenFn = e.getTeamsSsoToken, this.exchangeForGraphTokenFn = e.exchangeForGraphToken, this.refreshSkewMs = e.refreshSkewMs ?? ze;
542
- }
543
- async login() {
544
- try {
545
- await this.getAccessToken(), this.setState("SignedIn");
546
- } catch (e) {
547
- throw this.clearCache(), this.setState("SignedOut"), e;
548
- }
549
- }
550
- async logout() {
551
- this.clearCache(), this.setState("SignedOut");
552
- }
553
- async getAccessToken(e) {
554
- const n = this.normalizeScopes(e), s = this.buildScopeKey(n), r = this.tokenCache.get(s);
555
- if (r && this.isTokenValid(r))
556
- return r.accessToken;
557
- const c = await this.getTeamsSsoTokenFn(n);
558
- if (!c)
559
- throw new Error("Teams SSO token acquisition returned empty token.");
560
- const l = await this.exchangeForGraphTokenFn({
561
- ssoToken: c,
562
- scopes: n
563
- }), i = this.normalizeExchangedToken(l);
564
- return this.tokenCache.set(s, i), this.setState("SignedIn"), i.accessToken;
565
- }
566
- getState() {
567
- return this.state;
568
- }
569
- onStateChanged(e) {
570
- this.listeners.push(e);
571
- }
572
- removeStateChangedHandler(e) {
573
- this.listeners = this.listeners.filter((n) => n !== e);
574
- }
575
- normalizeScopes(e) {
576
- const n = e && e.length > 0 ? e : this.defaultScopes, s = [...new Set(n.filter(Boolean))];
577
- if (s.length === 0)
578
- throw new Error("At least one scope is required to request a Graph token.");
579
- return s;
580
- }
581
- buildScopeKey(e) {
582
- return [...e].sort().join(" ");
583
- }
584
- isTokenValid(e) {
585
- return e.expiresAtMs ? Date.now() + this.refreshSkewMs < e.expiresAtMs : !0;
586
- }
587
- normalizeExchangedToken(e) {
588
- if (typeof e == "string") {
589
- if (!e)
590
- throw new Error("Graph token exchange returned empty access token.");
591
- return { accessToken: e };
592
- }
593
- if (!e.accessToken)
594
- throw new Error("Graph token exchange returned empty access token.");
595
- return {
596
- accessToken: e.accessToken,
597
- expiresAtMs: this.toEpochMs(e.expiresAt)
598
- };
599
- }
600
- toEpochMs(e) {
601
- if (e)
602
- return e instanceof Date ? e.getTime() : e;
603
- }
604
- clearCache() {
605
- this.tokenCache.clear();
606
- }
607
- setState(e) {
608
- this.state !== e && (this.state = e, this.emit());
609
- }
610
- emit() {
611
- for (const e of this.listeners)
612
- try {
613
- e();
614
- } catch {
615
- }
616
- }
617
- }
618
- export {
619
- Ze as GraphProvider,
620
- Le as MockProvider,
621
- et as MsalBrowserProvider,
622
- _e as Person,
623
- nt as TeamsHostedProvider,
624
- tt as createBackendTokenExchange,
625
- $e as createMockSignedInProvider,
626
- Ee as isPersonDataProvider,
627
- Qe as useGraphClient,
628
- Ge as usePersonCacheOptions,
629
- Re as usePersonData,
630
- _ as useProvider,
631
- $ as useProviderState
1
+ import * as e from "react";
2
+ import { createContext as t, useCallback as n, useContext as r, useEffect as i, useMemo as a, useRef as o, useState as s, useSyncExternalStore as c } from "react";
3
+ import { Avatar as l, AvatarGroup as u, AvatarGroupItem as d, AvatarGroupPopover as f, InteractionTag as p, InteractionTagPrimary as m, InteractionTagSecondary as h, Persona as g, Skeleton as _, SkeletonItem as v, Spinner as y, TagPicker as b, TagPickerControl as x, TagPickerGroup as ee, TagPickerInput as te, TagPickerList as S, TagPickerOption as ne } from "@fluentui/react-components";
4
+ import { jsx as C, jsxs as w } from "react/jsx-runtime";
5
+ import { Client as T } from "@microsoft/microsoft-graph-client";
6
+ //#region src/utils/personCache.ts
7
+ var re = "graph-toolkit-person-cache", E = "personData", D = 1, O = {
8
+ enabled: !0,
9
+ userTtlMs: 3600 * 1e3,
10
+ photoTtlMs: 3600 * 1e3,
11
+ presenceTtlMs: 300 * 1e3
12
+ }, k = () => typeof window < "u" && window.indexedDB !== void 0, A = (e) => new Promise((t, n) => {
13
+ e.onsuccess = () => t(e.result), e.onerror = () => n(e.error);
14
+ }), j = () => new Promise((e, t) => {
15
+ if (!k()) {
16
+ t(/* @__PURE__ */ Error("IndexedDB unavailable"));
17
+ return;
18
+ }
19
+ let n = window.indexedDB.open(re, D);
20
+ n.onupgradeneeded = () => {
21
+ let e = n.result;
22
+ e.objectStoreNames.contains(E) || e.createObjectStore(E);
23
+ }, n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
24
+ }), M = (e) => `person:${e.trim().toLowerCase()}`, N = (e, t) => e ? Date.now() - e < t : !1, P = async (e) => {
25
+ if (!k()) return null;
26
+ let t = null;
27
+ try {
28
+ return t = await j(), await A(t.transaction(E, "readonly").objectStore(E).get(e)) ?? null;
29
+ } catch {
30
+ return null;
31
+ } finally {
32
+ t?.close();
33
+ }
34
+ }, F = async (e, t) => {
35
+ if (!k()) return;
36
+ let n = null;
37
+ try {
38
+ n = await j(), await A(n.transaction(E, "readwrite").objectStore(E).put(t, e));
39
+ } catch {
40
+ return;
41
+ } finally {
42
+ n?.close();
43
+ }
44
+ }, I = t({
45
+ provider: null,
46
+ state: "Loading",
47
+ personCacheOptions: O
48
+ }), L = ({ provider: e, children: t, personCacheOptions: r }) => {
49
+ let i = n(() => e?.getState?.() ?? "Loading", [e]), o = c(n((t) => (e.onStateChanged?.(t), () => {
50
+ let n = e;
51
+ typeof n.removeStateChangedHandler == "function" && n.removeStateChangedHandler(t);
52
+ }), [e]), i, i), s = a(() => ({
53
+ ...O,
54
+ ...r ?? {}
55
+ }), [r]), l = a(() => ({
56
+ provider: e,
57
+ state: o,
58
+ personCacheOptions: s
59
+ }), [
60
+ e,
61
+ o,
62
+ s
63
+ ]);
64
+ return /* @__PURE__ */ C(I.Provider, {
65
+ value: l,
66
+ children: t
67
+ });
68
+ }, R = () => {
69
+ let { provider: e } = r(I);
70
+ return e;
71
+ }, z = () => {
72
+ let { state: e } = r(I);
73
+ return e;
74
+ }, ie = () => {
75
+ let { personCacheOptions: e } = r(I);
76
+ return e;
77
+ }, ae = (e) => T.init({ authProvider: async (t) => {
78
+ try {
79
+ t(null, await e.getAccessToken());
80
+ } catch (e) {
81
+ t(e, null);
82
+ }
83
+ } }), oe = (e) => {
84
+ if (!e) return "";
85
+ let t = e.trim().split(" ");
86
+ return t.length === 1 ? t[0].substring(0, 2).toUpperCase() : (t[0][0] + t[t.length - 1][0]).toUpperCase();
87
+ }, B = async (e) => {
88
+ if (!e) return null;
89
+ if (typeof e == "string") return e;
90
+ let t = e instanceof Blob ? e : e instanceof ArrayBuffer ? new Blob([e]) : null;
91
+ return t ? new Promise((e, n) => {
92
+ let r = new FileReader();
93
+ r.onloadend = () => e(typeof r.result == "string" ? r.result : null), r.onerror = () => n(r.error), r.readAsDataURL(t);
94
+ }) : null;
95
+ }, V = (e) => encodeURIComponent(e.trim()), H = () => {
96
+ let e = R(), t = z();
97
+ return a(() => !e || t !== "SignedIn" ? null : ae(e), [e, t]);
98
+ }, U = (e) => typeof e == "object" && !!e && typeof e.getPersonData == "function", W = (e) => typeof e == "object" && !!e && typeof e.searchPeople == "function", se = [
99
+ "id",
100
+ "displayName",
101
+ "jobTitle",
102
+ "mail",
103
+ "department",
104
+ "officeLocation",
105
+ "userPrincipalName"
106
+ ], ce = (e) => {
107
+ let t = H(), n = R(), r = z(), a = ie(), { userId: o, userPrincipalName: c, fetchPresence: l = !1, fetchPhoto: u = !0, selectFields: d } = e, f = [...new Set([...se, ...(d ?? []).map((e) => e.trim()).filter((e) => e.length > 0 && /^[a-zA-Z0-9_./]+$/.test(e))])].join(","), [p, m] = s({
108
+ user: null,
109
+ presence: null,
110
+ photoUrl: null,
111
+ loading: !0,
112
+ error: null
113
+ });
114
+ return i(() => {
115
+ let e = !1, i = f.split(",").filter((e) => !se.includes(e));
116
+ return (async () => {
117
+ let s = o || c;
118
+ if (U(n)) {
119
+ try {
120
+ let t = await n.getPersonData({
121
+ identifier: s,
122
+ fetchPresence: l,
123
+ fetchPhoto: u,
124
+ selectFields: i.length > 0 ? i : void 0
125
+ });
126
+ e || m({
127
+ user: t.user,
128
+ presence: t.presence,
129
+ photoUrl: t.photoUrl,
130
+ loading: !1,
131
+ error: null
132
+ });
133
+ } catch (t) {
134
+ e || m({
135
+ user: null,
136
+ presence: null,
137
+ photoUrl: null,
138
+ loading: !1,
139
+ error: t
140
+ });
141
+ }
142
+ return;
143
+ }
144
+ if (r !== "SignedIn") {
145
+ e || m({
146
+ user: null,
147
+ presence: null,
148
+ photoUrl: null,
149
+ loading: !1,
150
+ error: r === "SignedOut" ? null : /* @__PURE__ */ Error("Provider not signed in")
151
+ });
152
+ return;
153
+ }
154
+ if (!t) {
155
+ e || m((e) => ({
156
+ ...e,
157
+ loading: !0
158
+ }));
159
+ return;
160
+ }
161
+ if (!s) {
162
+ e || m({
163
+ user: null,
164
+ presence: null,
165
+ photoUrl: null,
166
+ loading: !1,
167
+ error: null
168
+ });
169
+ return;
170
+ }
171
+ let d = M(s), p = a.enabled ? await P(d) : null, h = !!(p?.user && N(p.userCachedAt, a.userTtlMs)), g = !!(p?.presenceCachedAt && N(p.presenceCachedAt, a.presenceTtlMs)), _ = !!(p?.photoCachedAt && N(p.photoCachedAt, a.photoTtlMs));
172
+ if (h && (!l || g) && (!u || _)) {
173
+ e || m({
174
+ user: p?.user ?? null,
175
+ presence: l ? p?.presence ?? null : null,
176
+ photoUrl: u ? p?.photoUrl ?? null : null,
177
+ loading: !1,
178
+ error: null
179
+ });
180
+ return;
181
+ }
182
+ try {
183
+ m((e) => ({
184
+ ...e,
185
+ loading: !0,
186
+ error: null
187
+ }));
188
+ let n = s.toLowerCase() === "me", r = Date.now(), i = !1, o = !1, c = !1, v = h ? p?.user ?? null : null;
189
+ if (v || (v = await t.api(n ? "/me" : `/users/${V(s)}`).select(f).get(), i = !0), e) return;
190
+ let y = null, b = null;
191
+ if (l) {
192
+ if (g) y = p?.presence ?? null;
193
+ else if (v?.id) {
194
+ try {
195
+ y = await t.api(n ? "/me/presence" : `/users/${V(v.id)}/presence`).get();
196
+ } catch (e) {
197
+ console.warn("Failed to fetch presence:", e);
198
+ }
199
+ o = !0;
200
+ }
201
+ }
202
+ if (u) {
203
+ if (_) b = p?.photoUrl ?? null;
204
+ else if (v?.id) {
205
+ try {
206
+ b = await B(await t.api(n ? "/me/photo/$value" : `/users/${V(v.id)}/photo/$value`).get());
207
+ } catch (e) {
208
+ console.warn("Failed to fetch photo:", e);
209
+ }
210
+ c = !0;
211
+ }
212
+ }
213
+ let x = { ...p ?? {} };
214
+ i && v && (x.user = v, x.userCachedAt = r), l && (o || g) && (x.presence = o ? y : p?.presence, x.presenceCachedAt = o ? r : p?.presenceCachedAt), u && (c || _) && (x.photoUrl = c ? b : p?.photoUrl, x.photoCachedAt = c ? r : p?.photoCachedAt), a.enabled && (i || o || c) && x.user && await F(d, x), e || m({
215
+ user: v,
216
+ presence: y,
217
+ photoUrl: b,
218
+ loading: !1,
219
+ error: null
220
+ });
221
+ } catch (t) {
222
+ e || m({
223
+ user: null,
224
+ presence: null,
225
+ photoUrl: null,
226
+ loading: !1,
227
+ error: t
228
+ });
229
+ }
230
+ })(), () => {
231
+ e = !0;
232
+ };
233
+ }, [
234
+ t,
235
+ n,
236
+ r,
237
+ o,
238
+ c,
239
+ l,
240
+ u,
241
+ a,
242
+ f
243
+ ]), p;
244
+ }, le = (e) => {
245
+ switch (e?.toLowerCase()) {
246
+ case "available":
247
+ case "availableidle": return "available";
248
+ case "away":
249
+ case "berightback": return "away";
250
+ case "busy":
251
+ case "busyidle":
252
+ case "donotdisturb": return "busy";
253
+ default: return "offline";
254
+ }
255
+ }, ue = {
256
+ avatar: [
257
+ void 0,
258
+ void 0,
259
+ void 0,
260
+ void 0
261
+ ],
262
+ oneline: [
263
+ "displayName",
264
+ void 0,
265
+ void 0,
266
+ void 0
267
+ ],
268
+ twolines: [
269
+ "displayName",
270
+ "jobTitle",
271
+ void 0,
272
+ void 0
273
+ ],
274
+ threelines: [
275
+ "displayName",
276
+ "jobTitle",
277
+ "department",
278
+ void 0
279
+ ],
280
+ fourlines: [
281
+ "displayName",
282
+ "jobTitle",
283
+ "department",
284
+ "officeLocation,mail"
285
+ ]
286
+ }, de = new Set(["presenceActivity", "presenceAvailability"]), fe = new Set(["email", ...de]), pe = 16, me = 12, he = {
287
+ 1: "8rem",
288
+ 2: "6rem",
289
+ 3: "5rem",
290
+ 4: "7rem"
291
+ }, ge = (e) => e?.split(",").map((e) => e.trim()).filter(Boolean) ?? [], G = (e) => {
292
+ if (e != null) {
293
+ if (typeof e == "string") return e || void 0;
294
+ if (typeof e == "number" || typeof e == "boolean") return String(e);
295
+ if (Array.isArray(e)) {
296
+ let t = e.map((e) => G(e)).filter((e) => !!e);
297
+ return t.length > 0 ? t.join(", ") : void 0;
298
+ }
299
+ }
300
+ }, _e = (e) => G(e.mail) ?? G(e.email) ?? G(e.userPrincipalName), K = (e, t) => {
301
+ let n = ge(t);
302
+ for (let t of n) switch (t) {
303
+ case "mail":
304
+ case "email": {
305
+ let t = _e(e);
306
+ if (t) return t;
307
+ break;
308
+ }
309
+ default: {
310
+ let n = G(e[t]);
311
+ if (n) return n;
312
+ }
313
+ }
314
+ }, ve = (e, t, n) => ({
315
+ line: e,
316
+ person: t,
317
+ text: n
318
+ }), q = (e, t, n, r) => r ? r(ve(e, t, n)) : n, J = (e) => /* @__PURE__ */ C(_, { children: /* @__PURE__ */ C(v, {
319
+ size: e === 1 ? pe : me,
320
+ style: {
321
+ width: he[e],
322
+ maxWidth: "100%"
323
+ }
324
+ }) }), ye = (e, t, n) => n ?? ue[e][t - 1], be = (e) => {
325
+ switch (e) {
326
+ case "avatar": return 0;
327
+ case "oneline": return 1;
328
+ case "twolines": return 2;
329
+ case "threelines": return 3;
330
+ default: return 4;
331
+ }
332
+ }, Y = (e, t) => t <= be(e), xe = (e) => [...new Set(e.flatMap((e) => ge(e)))].filter((e) => !fe.has(e)), Se = ({ userId: e, userPrincipalName: t, email: n, personDetails: r, view: o = "oneline", showPresence: s = !1, line1Property: c, line2Property: l, line3Property: u, line4Property: d, renderLine1: f, renderLine2: p, renderLine3: m, renderLine4: h, fetchImage: _ = !0, onUpdated: v, ...y }) => {
333
+ let b = o === "avatar", x = Y(o, 1) ? ye(o, 1, c) : void 0, ee = Y(o, 2) ? ye(o, 2, l) : void 0, te = Y(o, 3) ? ye(o, 3, u) : void 0, S = Y(o, 4) ? ye(o, 4, d) : void 0, ne = [
334
+ x,
335
+ ee,
336
+ te,
337
+ S
338
+ ].some((e) => ge(e).some((e) => de.has(e))), { user: w, presence: T, photoUrl: re, loading: E, error: D } = ce({
339
+ userId: r ? void 0 : e || t || n,
340
+ fetchPresence: s || ne,
341
+ fetchPhoto: _,
342
+ selectFields: xe([
343
+ x,
344
+ ee,
345
+ te,
346
+ S
347
+ ])
348
+ }), O = r || w, k = O || null, A = a(() => k ? {
349
+ ...k,
350
+ email: n ?? G(k.email),
351
+ presenceActivity: T?.activity ?? G(k.presenceActivity),
352
+ presenceAvailability: T?.availability ?? G(k.presenceAvailability)
353
+ } : null, [
354
+ n,
355
+ T?.activity,
356
+ T?.availability,
357
+ k
358
+ ]);
359
+ if (i(() => {
360
+ if (!(!v || E)) {
361
+ if (r && A) {
362
+ v({
363
+ trigger: "personDetailsChanged",
364
+ person: A,
365
+ loading: !1,
366
+ error: D
367
+ });
368
+ return;
369
+ }
370
+ if (D) {
371
+ v({
372
+ trigger: "personLoadFailed",
373
+ person: null,
374
+ loading: !1,
375
+ error: D
376
+ });
377
+ return;
378
+ }
379
+ A && v({
380
+ trigger: "personLoaded",
381
+ person: A,
382
+ loading: !1,
383
+ error: null
384
+ });
385
+ }
386
+ }, [
387
+ D,
388
+ E,
389
+ v,
390
+ r,
391
+ A
392
+ ]), E) return /* @__PURE__ */ C(g, {
393
+ ...y,
394
+ name: b ? void 0 : y.name,
395
+ primaryText: b || !Y(o, 1) ? void 0 : y.primaryText === void 0 ? J(1) : y.primaryText,
396
+ secondaryText: b || !Y(o, 2) ? void 0 : y.secondaryText === void 0 ? J(2) : y.secondaryText,
397
+ tertiaryText: b || !Y(o, 3) ? void 0 : y.tertiaryText === void 0 ? J(3) : y.tertiaryText,
398
+ quaternaryText: b || !Y(o, 4) ? void 0 : y.quaternaryText === void 0 ? J(4) : y.quaternaryText
399
+ });
400
+ if (!O) return null;
401
+ let j = A ?? k, M = O.displayName || "Unknown User", N = oe(M), P = K(j, x), F = K(j, ee), I = K(j, te), L = K(j, S), R = Y(o, 1) ? x && P !== M || f ? q(1, j, P, f) : y.primaryText : void 0, z = Y(o, 2) ? q(2, j, F, p) : void 0, ie = Y(o, 3) ? q(3, j, I, m) : void 0, ae = Y(o, 4) ? q(4, j, L, h) : void 0, B = s && T ? { status: le(T.availability) } : void 0, V = y.presence ?? B, H = (typeof j.photoUrl == "string" && j.photoUrl.length > 0 ? j.photoUrl : void 0) ?? re ?? void 0, U = y.avatar ?? {
402
+ image: H ? { src: H } : void 0,
403
+ initials: H ? void 0 : N,
404
+ name: M
405
+ }, W = b ? void 0 : y.name ?? M, se = b ? void 0 : y.primaryText ?? R, ue = b ? void 0 : y.secondaryText ?? z, fe = b ? void 0 : y.tertiaryText ?? ie, pe = b ? void 0 : y.quaternaryText ?? ae;
406
+ return /* @__PURE__ */ C(g, {
407
+ ...y,
408
+ name: W,
409
+ primaryText: se,
410
+ avatar: U,
411
+ presence: V,
412
+ secondaryText: ue,
413
+ tertiaryText: fe,
414
+ quaternaryText: pe
415
+ });
416
+ }, Ce = [
417
+ "id",
418
+ "displayName",
419
+ "mail",
420
+ "userPrincipalName",
421
+ "jobTitle",
422
+ "department"
423
+ ], we = new Set(Ce), Te = 10, Ee = /^[a-zA-Z0-9_./]+$/, De = "asc", Oe = (e) => ({
424
+ id: e.id ?? e.userPrincipalName ?? e.mail ?? "unknown-user",
425
+ givenName: e.givenName ?? null,
426
+ surname: e.surname ?? null,
427
+ displayName: e.displayName ?? null,
428
+ mail: e.mail ?? null,
429
+ userPrincipalName: e.userPrincipalName ?? null,
430
+ jobTitle: e.jobTitle ?? null,
431
+ department: e.department ?? null
432
+ }), ke = (e, t) => ({
433
+ ...e,
434
+ presenceActivity: t?.activity ?? null,
435
+ presenceAvailability: t?.availability ?? null
436
+ }), Ae = (e) => e.id ?? e.userPrincipalName ?? e.mail ?? void 0, je = (e) => e.userPrincipalName ?? e.mail ?? e.id ?? void 0, Me = (e) => Array.from(new Set((e ?? []).map((e) => e.trim()).filter(Boolean))), Ne = (e) => Array.from(new Set((e ?? []).map((e) => e.trim()).filter((e) => e.length > 0 && Ee.test(e)))), Pe = (e, t) => {
437
+ let n = [...Ce, ...Ne(e)];
438
+ return (t === "givenName" || t === "surname") && n.push(t), Array.from(new Set(n));
439
+ }, Fe = (e) => {
440
+ let t = e.filter((e) => !we.has(e));
441
+ return t.length > 0 ? t : void 0;
442
+ }, Ie = (e, t) => {
443
+ let n = e[t];
444
+ return typeof n == "string" && n.trim().length > 0 ? n : e.displayName ?? e.mail ?? e.userPrincipalName ?? e.id;
445
+ }, Le = (e, t, n = De) => {
446
+ if (!t) return e;
447
+ let r = new Intl.Collator(void 0, {
448
+ sensitivity: "base",
449
+ numeric: !0
450
+ }), i = n === "desc" ? -1 : 1;
451
+ return e.map((e, t) => ({
452
+ person: e,
453
+ index: t
454
+ })).sort((e, n) => {
455
+ let a = r.compare(Ie(e.person, t), Ie(n.person, t));
456
+ return a === 0 ? e.index - n.index : a * i;
457
+ }).map((e) => e.person);
458
+ }, Re = (e) => {
459
+ let t = H(), n = R(), r = z(), o = JSON.stringify(e?.people ?? null), c = JSON.stringify(Me(e?.userIds)), l = JSON.stringify(Ne(e?.selectFields).filter((e) => !we.has(e))), u = a(() => {
460
+ if (o !== "null") return JSON.parse(o);
461
+ }, [o]), d = a(() => JSON.parse(c), [c]), f = a(() => JSON.parse(l), [l]), p = a(() => Pe(f, e?.sortBy), [f, e?.sortBy]), m = a(() => Fe(p), [p]), h = a(() => e?.groupId?.trim(), [e?.groupId]), g = e?.maxPeople ?? Te, _ = e?.showPresence ?? !1, v = e?.sortBy, y = e?.sortDirection ?? De, [b, x] = s({
462
+ people: [],
463
+ loading: !0,
464
+ error: null
465
+ });
466
+ return i(() => {
467
+ let e = !1, i = async (e) => {
468
+ if (U(n)) {
469
+ let t = await n.getPersonData({
470
+ identifier: e,
471
+ fetchPresence: _,
472
+ fetchPhoto: !0,
473
+ selectFields: m
474
+ });
475
+ return t.user ? {
476
+ ...Oe(t.user),
477
+ photoUrl: t.photoUrl,
478
+ presenceActivity: t.presence?.activity ?? null,
479
+ presenceAvailability: t.presence?.availability ?? null
480
+ } : null;
481
+ }
482
+ if (r !== "SignedIn" || !t) return null;
483
+ let i = e.toLowerCase() === "me", a = await t.api(i ? "/me" : `/users/${V(e)}`).select(p.join(",")).get(), o = null, s = null;
484
+ if (_ && a.id) try {
485
+ o = await t.api(i ? "/me/presence" : `/users/${V(a.id)}/presence`).get();
486
+ } catch {
487
+ o = null;
488
+ }
489
+ if (a.id) try {
490
+ s = await B(await t.api(i ? "/me/photo/$value" : `/users/${V(a.id)}/photo/$value`).get());
491
+ } catch {
492
+ s = null;
493
+ }
494
+ return {
495
+ ...Oe(a),
496
+ photoUrl: s,
497
+ presenceActivity: o?.activity ?? null,
498
+ presenceAvailability: o?.availability ?? null
499
+ };
500
+ }, a = async (e, t = Ae) => (await Promise.all(e.map(async (e) => {
501
+ let n = t(e);
502
+ if (!n) return _ ? ke(e, null) : e;
503
+ let r = _ && !e.presenceAvailability && !e.presenceActivity, a = !e.photoUrl;
504
+ if (!r && !a) return e;
505
+ try {
506
+ let t = await i(n);
507
+ return t ? {
508
+ ...e,
509
+ photoUrl: e.photoUrl ?? t.photoUrl,
510
+ presenceActivity: e.presenceActivity ?? t.presenceActivity,
511
+ presenceAvailability: e.presenceAvailability ?? t.presenceAvailability
512
+ } : e;
513
+ } catch {
514
+ return e;
515
+ }
516
+ }))).filter((e) => !!e.id);
517
+ return (async () => {
518
+ if (e || x((e) => ({
519
+ ...e,
520
+ loading: !0,
521
+ error: null
522
+ })), u) {
523
+ let t = _ || u.some((e) => !e.photoUrl) ? await a(u, je) : u;
524
+ e || x({
525
+ people: Le(t, v, y),
526
+ loading: !1,
527
+ error: null
528
+ });
529
+ return;
530
+ }
531
+ if (d.length > 0) {
532
+ let t = (await Promise.allSettled(d.map((e) => i(e)))).flatMap((e) => e.status === "fulfilled" && e.value ? [e.value] : []);
533
+ e || x({
534
+ people: Le(t, v, y),
535
+ loading: !1,
536
+ error: null
537
+ });
538
+ return;
539
+ }
540
+ if (!W(n) && r !== "SignedIn") {
541
+ e || x({
542
+ people: [],
543
+ loading: !1,
544
+ error: null
545
+ });
546
+ return;
547
+ }
548
+ try {
549
+ let i = [];
550
+ h ? t && r === "SignedIn" && (i = ((await t.api(`/groups/${V(h)}/members/microsoft.graph.user`).select(p.join(",")).top(g).get()).value ?? []).map(Oe)) : W(n) ? i = (await n.searchPeople("", g)).map((e) => ({
551
+ ...e,
552
+ presenceActivity: null,
553
+ presenceAvailability: null
554
+ })) : t && r === "SignedIn" && (i = ((await t.api("/users").select(p.join(",")).top(g).get()).value ?? []).map(Oe)), (_ || i.some((e) => !e.photoUrl)) && (i = await a(i)), e || x({
555
+ people: Le(i, v, y),
556
+ loading: !1,
557
+ error: null
558
+ });
559
+ } catch (t) {
560
+ e || x({
561
+ people: [],
562
+ loading: !1,
563
+ error: t
564
+ });
565
+ }
566
+ })(), () => {
567
+ e = !0;
568
+ };
569
+ }, [
570
+ u,
571
+ o,
572
+ t,
573
+ h,
574
+ g,
575
+ n,
576
+ m,
577
+ r,
578
+ p,
579
+ _,
580
+ v,
581
+ y,
582
+ d
583
+ ]), b;
584
+ }, ze = 3, Be = 10, Ve = (e) => {
585
+ switch (e?.toLowerCase()) {
586
+ case "available":
587
+ case "availableidle": return "available";
588
+ case "away":
589
+ case "berightback": return "away";
590
+ case "busy":
591
+ case "busyidle":
592
+ case "donotdisturb": return "busy";
593
+ case "offline":
594
+ case "presenceunknown": return "offline";
595
+ default: return;
596
+ }
597
+ }, He = (e) => e.displayName ?? e.mail ?? e.userPrincipalName ?? e.id, Ue = (e) => {
598
+ let t = He(e), n = Ve(e.presenceAvailability);
599
+ return /* @__PURE__ */ C(d, {
600
+ name: t,
601
+ avatar: {
602
+ name: t,
603
+ image: e.photoUrl ? { src: e.photoUrl } : void 0,
604
+ badge: n ? { status: n } : void 0,
605
+ color: "colorful"
606
+ }
607
+ }, e.id);
608
+ }, We = ({ people: e, userIds: t, selectFields: n, sortBy: r, sortDirection: a, groupId: o, showMax: s = ze, showPresence: c = !1, layout: l = "stack", size: d = 32, onUpdated: p, ...m }) => {
609
+ let { people: h, loading: g, error: _ } = Re({
610
+ people: e,
611
+ userIds: t,
612
+ selectFields: n,
613
+ sortBy: r,
614
+ sortDirection: a,
615
+ groupId: o,
616
+ maxPeople: Math.max(Be, s + 5),
617
+ showPresence: c
618
+ });
619
+ if (i(() => {
620
+ if (!p || g) return;
621
+ let t = "peopleLoaded";
622
+ _ ? t = "peopleLoadFailed" : e && (t = "peopleChanged"), p({
623
+ trigger: t,
624
+ people: h,
625
+ loading: !1,
626
+ error: _
627
+ });
628
+ }, [
629
+ _,
630
+ g,
631
+ p,
632
+ e,
633
+ h
634
+ ]), g) return /* @__PURE__ */ C(y, { size: "tiny" });
635
+ if (h.length === 0) return null;
636
+ let v = Math.max(0, s), b = h.slice(0, v), x = h.slice(v);
637
+ return /* @__PURE__ */ w(u, {
638
+ layout: l,
639
+ size: d,
640
+ ...m,
641
+ children: [b.map(Ue), x.length > 0 && /* @__PURE__ */ C(f, {
642
+ count: x.length,
643
+ children: x.map(Ue)
644
+ })]
645
+ });
646
+ }, Ge = typeof window > "u" ? global : window, Ke = "@griffel/";
647
+ function qe(e, t) {
648
+ return Ge[Symbol.for(Ke + e)] || (Ge[Symbol.for(Ke + e)] = t), Ge[Symbol.for(Ke + e)];
649
+ }
650
+ var Je = /* @__PURE__ */ qe("DEBUG_RESET_CLASSES", {}), X = /* @__PURE__ */ qe("DEFINITION_LOOKUP_TABLE", {}), Z = "data-make-styles-bucket", Ye = "data-priority", Xe = process.env.NODE_ENV === "production" ? 10 : 18;
651
+ //#endregion
652
+ //#region node_modules/@emotion/hash/dist/emotion-hash.esm.js
653
+ function Ze(e) {
654
+ for (var t = 0, n, r = 0, i = e.length; i >= 4; ++r, i -= 4) n = e.charCodeAt(r) & 255 | (e.charCodeAt(++r) & 255) << 8 | (e.charCodeAt(++r) & 255) << 16 | (e.charCodeAt(++r) & 255) << 24, n = (n & 65535) * 1540483477 + ((n >>> 16) * 59797 << 16), n ^= n >>> 24, t = (n & 65535) * 1540483477 + ((n >>> 16) * 59797 << 16) ^ (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16);
655
+ switch (i) {
656
+ case 3: t ^= (e.charCodeAt(r + 2) & 255) << 16;
657
+ case 2: t ^= (e.charCodeAt(r + 1) & 255) << 8;
658
+ case 1: t ^= e.charCodeAt(r) & 255, t = (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16);
659
+ }
660
+ return t ^= t >>> 13, t = (t & 65535) * 1540483477 + ((t >>> 16) * 59797 << 16), ((t ^ t >>> 15) >>> 0).toString(36);
661
+ }
662
+ //#endregion
663
+ //#region node_modules/@griffel/core/runtime/utils/hashSequence.esm.js
664
+ function Qe(e) {
665
+ let t = e.length;
666
+ if (t === 7) return e;
667
+ for (let n = t; n < 7; n++) e += "0";
668
+ return e;
669
+ }
670
+ function $e(e, t, n = []) {
671
+ return process.env.NODE_ENV === "production" ? "___" + Qe(Ze(e + t)) : "___" + Qe(Ze(e + t)) + "_" + Qe(Ze(n.join("")));
672
+ }
673
+ //#endregion
674
+ //#region node_modules/@griffel/core/runtime/reduceToClassNameForSlots.esm.js
675
+ function et(e, t) {
676
+ let n = "", r = "";
677
+ for (let i in e) {
678
+ let a = e[i];
679
+ if (a === 0) {
680
+ r += i + " ";
681
+ continue;
682
+ }
683
+ let o = Array.isArray(a), s = t === "rtl" ? (o ? a[1] : a) + " " : (o ? a[0] : a) + " ";
684
+ n += s, r += s;
685
+ }
686
+ return [n.slice(0, -1), r.slice(0, -1)];
687
+ }
688
+ function tt(e, t) {
689
+ let n = {};
690
+ for (let r in e) {
691
+ let [i, a] = et(e[r], t);
692
+ if (a === "") {
693
+ n[r] = "";
694
+ continue;
695
+ }
696
+ let o = $e(a, t), s = o + (i === "" ? "" : " " + i);
697
+ X[o] = [e[r], t], n[r] = s;
698
+ }
699
+ return n;
700
+ }
701
+ //#endregion
702
+ //#region node_modules/@griffel/core/mergeClasses.esm.js
703
+ var nt = {};
704
+ function rt() {
705
+ let e = null, t = "", n = "", r = Array(arguments.length), i = "";
706
+ for (let e = 0; e < arguments.length; e++) {
707
+ let a = arguments[e];
708
+ if (typeof a == "string" && a !== "") {
709
+ let o = a.indexOf("___");
710
+ if (o === -1) process.env.NODE_ENV !== "production" && a.split(" ").forEach((e) => {
711
+ e.startsWith("r") && Je[e] && (i ? console.error(`mergeClasses(): a passed string contains multiple classes produced by makeResetStyles (${a} & ${t}, this will lead to non-deterministic behavior. Learn more:https://griffel.js.org/react/api/make-reset-styles#limitations
712
+ Source string: ${a}`) : i = e);
713
+ }), t += a + " ";
714
+ else {
715
+ let i = a.substr(o, Xe);
716
+ o > 0 && (t += a.slice(0, o)), n += i, r[e] = i;
717
+ }
718
+ process.env.NODE_ENV !== "production" && a.indexOf("___", o + 1) !== -1 && console.error(`mergeClasses(): a passed string contains multiple identifiers of atomic classes (classes that start with "___"), it's possible that passed classes were concatenated in a wrong way. Source string: ${a}`);
719
+ }
720
+ }
721
+ if (n === "") return t.slice(0, -1);
722
+ let a = nt[n];
723
+ if (a !== void 0) return t + a;
724
+ let o = [];
725
+ for (let t = 0; t < arguments.length; t++) {
726
+ let n = r[t];
727
+ if (n) {
728
+ let r = X[n];
729
+ r ? (o.push(r[0]), process.env.NODE_ENV !== "production" && e !== null && e !== r[1] && console.error(`mergeClasses(): a passed string contains an identifier (${n}) that has different direction (dir="${r[1] ? "rtl" : "ltr"}") setting than other classes. This is not supported. Source string: ${arguments[t]}`), e = r[1]) : process.env.NODE_ENV !== "production" && console.error(`mergeClasses(): a passed string contains an identifier (${n}) that does not match any entry in cache. Source string: ${arguments[t]}`);
730
+ }
731
+ }
732
+ let s = Object.assign.apply(Object, [{}].concat(o)), [c, l] = et(s, e), u = $e(l, e, r), d = u + " " + c;
733
+ return nt[n] = d, X[u] = [s, e], t + d;
734
+ }
735
+ //#endregion
736
+ //#region node_modules/@griffel/core/devtools/store.esm.js
737
+ var it = {}, at = /* @__PURE__ */ new Set(), Q = {
738
+ getChildrenSequences: (e) => {
739
+ let t = Object.keys(nt).find((t) => nt[t].startsWith(e));
740
+ return t ? t.split("___").filter((e) => e.length).map((e) => "___" + e) : [];
741
+ },
742
+ addCSSRule: (e) => {
743
+ at.add(e);
744
+ },
745
+ addSequenceDetails: (e, t) => {
746
+ Object.entries(e).forEach(([e, n]) => {
747
+ it[n.substring(0, Xe)] = {
748
+ slotName: e,
749
+ sourceURL: t
750
+ };
751
+ });
752
+ },
753
+ getCSSRules: () => Array.from(at),
754
+ getSequenceDetails: (e) => it[e]
755
+ };
756
+ //#endregion
757
+ //#region node_modules/@griffel/core/devtools/utils.esm.js
758
+ function ot(e, t) {
759
+ return Array.isArray(e) ? t === "rtl" ? e[1] : e[0] : e || "";
760
+ }
761
+ function st(e, t, n, r) {
762
+ let i = e[0], a = e[1];
763
+ return Object.entries(i).map(([e, i]) => {
764
+ let o = ot(i, a), s;
765
+ if (n && t) {
766
+ let i = n.find(({ className: e }) => e === o);
767
+ !i && t[0][e] ? s = ot(t[0][e], t[1]) : i && t[0][e] ? s = r && r.filter(({ debugClassNames: e }) => e.filter(({ className: e }) => e === o).length > 0).length > 0 ? i.className : i.overriddenBy : (!i && !t[0][e] || i && !t[0][e]) && (s = void 0);
768
+ }
769
+ return {
770
+ className: o,
771
+ overriddenBy: s
772
+ };
773
+ });
774
+ }
775
+ //#endregion
776
+ //#region node_modules/@griffel/core/devtools/getAtomicDebugSequenceTree.esm.js
777
+ function ct(e, t) {
778
+ let n = X[e];
779
+ if (n === void 0) return;
780
+ let r = st(n, t ? X[t.sequenceHash] : void 0, t?.debugClassNames, t?.children), i = {
781
+ sequenceHash: e,
782
+ direction: n[1],
783
+ children: [],
784
+ debugClassNames: r
785
+ };
786
+ return Q.getChildrenSequences(i.sequenceHash).reverse().forEach((e) => {
787
+ let t = ct(e, i);
788
+ t && i.children.push(t);
789
+ }), i.children.length || (i.rules = {}, i.debugClassNames.forEach(({ className: t }) => {
790
+ let n = Q.getSequenceDetails(e);
791
+ n && (i.slot = n.slotName, i.sourceURL = n.sourceURL);
792
+ let r = Q.getCSSRules().find((e) => e.includes(t));
793
+ i.rules[t] = r;
794
+ })), i;
795
+ }
796
+ //#endregion
797
+ //#region node_modules/@griffel/core/devtools/getResetDebugSequence.esm.js
798
+ function lt(e) {
799
+ if (Je[e] === void 0) return;
800
+ let t = {
801
+ sequenceHash: e,
802
+ direction: "ltr",
803
+ children: [],
804
+ debugClassNames: [{ className: e }]
805
+ };
806
+ t.rules = {}, t.slot = "makeResetStyles()";
807
+ let [{ className: n }] = t.debugClassNames, r = Q.getCSSRules().filter((e) => e.includes(`.${n}`));
808
+ return t.rules[n] = r.join(""), t;
809
+ }
810
+ //#endregion
811
+ //#region node_modules/@griffel/core/devtools/mergeDebugSequence.esm.js
812
+ function ut(e, t) {
813
+ let n = e ? ct(e) : void 0, r = t ? lt(t) : void 0;
814
+ if (!(!n && !r)) return n ? r ? {
815
+ sequenceHash: n.sequenceHash + r.sequenceHash,
816
+ direction: n.direction,
817
+ children: [n, r],
818
+ debugClassNames: [...n.debugClassNames, ...r.debugClassNames]
819
+ } : n : r;
820
+ }
821
+ //#endregion
822
+ //#region node_modules/@griffel/core/devtools/injectDevTools.esm.js
823
+ function dt(e) {
824
+ let t = e.defaultView;
825
+ if (!t || t.__GRIFFEL_DEVTOOLS__) return;
826
+ let n = { getInfo: (e) => {
827
+ let t, n;
828
+ for (let r of e.classList) r.startsWith("___") && (t = r), Je[r] && (n = r);
829
+ return ut(t, n);
830
+ } };
831
+ Object.defineProperty(t, "__GRIFFEL_DEVTOOLS__", {
832
+ configurable: !1,
833
+ enumerable: !1,
834
+ get() {
835
+ return n;
836
+ }
837
+ });
838
+ }
839
+ //#endregion
840
+ //#region node_modules/@griffel/core/devtools/isDevToolsEnabled.esm.js
841
+ var ft = /* @__PURE__ */ (() => {
842
+ try {
843
+ return !!(typeof window < "u" && window.sessionStorage?.getItem("__GRIFFEL_DEVTOOLS__"));
844
+ } catch {
845
+ return !1;
846
+ }
847
+ })();
848
+ //#endregion
849
+ //#region node_modules/@griffel/core/runtime/utils/normalizeCSSBucketEntry.esm.js
850
+ function pt(e) {
851
+ if (!Array.isArray(e)) return [e];
852
+ if (process.env.NODE_ENV !== "production" && e.length > 2) throw Error("CSS Bucket contains an entry with greater than 2 items, please report this to https://github.com/microsoft/griffel/issues");
853
+ return e;
854
+ }
855
+ //#endregion
856
+ //#region node_modules/@griffel/core/renderer/createIsomorphicStyleSheet.esm.js
857
+ function mt(e, t, n, r) {
858
+ let i = [];
859
+ if (r[Z] = t, r[Ye] = String(n), e) for (let t in r) e.setAttribute(t, r[t]);
860
+ function a(t) {
861
+ return e?.sheet ? e.sheet.insertRule(t, e.sheet.cssRules.length) : i.push(t);
862
+ }
863
+ return {
864
+ elementAttributes: r,
865
+ insertRule: a,
866
+ element: e,
867
+ bucketName: t,
868
+ cssRules() {
869
+ return e?.sheet ? Array.from(e.sheet.cssRules).map((e) => e.cssText) : i;
870
+ }
871
+ };
872
+ }
873
+ var ht = /* @__PURE__ */ [
874
+ "r",
875
+ "d",
876
+ "l",
877
+ "v",
878
+ "w",
879
+ "f",
880
+ "i",
881
+ "h",
882
+ "a",
883
+ "s",
884
+ "k",
885
+ "t",
886
+ "m",
887
+ "c"
888
+ ].reduce((e, t, n) => (e[t] = n, e), {});
889
+ function gt(e, t, n) {
890
+ return (e === "m" ? e + t : e) + n;
891
+ }
892
+ function _t(e, t, n, r, i = {}) {
893
+ let a = e === "m", o = i.m ?? "0", s = i.p ?? 0, c = gt(e, o, s);
894
+ if (!r.stylesheets[c]) {
895
+ let l = t && t.createElement("style"), u = mt(l, e, s, Object.assign({}, r.styleElementAttributes, a && { media: o }));
896
+ r.stylesheets[c] = u, t?.head && l && t.head.insertBefore(l, yt(t, n, e, r, i));
897
+ }
898
+ return r.stylesheets[c];
899
+ }
900
+ function vt(e, t, n) {
901
+ return t + (n.m ?? "") === e.getAttribute(Z) + (e.media ?? "");
902
+ }
903
+ function yt(e, t, n, r, i = {}) {
904
+ let a = ht[n], o = i.m ?? "", s = i.p ?? 0, c = (e) => a - ht[e.getAttribute(Z)], l = e.head.querySelectorAll(`[${Z}]`);
905
+ if (n === "m") {
906
+ let t = e.head.querySelectorAll(`[${Z}="${n}"]`);
907
+ t.length && (l = t, c = (e) => r.compareMediaQueries(o, e.media));
908
+ }
909
+ let u = (e) => vt(e, n, i) ? s - Number(e.getAttribute("data-priority")) : c(e), d = l.length, f = d - 1;
910
+ for (; f >= 0;) {
911
+ let e = l.item(f);
912
+ if (u(e) > 0) return e.nextSibling;
913
+ f--;
914
+ }
915
+ return d > 0 ? l.item(0) : t ? t.nextSibling : null;
916
+ }
917
+ //#endregion
918
+ //#region node_modules/@griffel/core/renderer/safeInsertRule.esm.js
919
+ var bt = /* @__PURE__ */ RegExp(`:(${/* @__PURE__ */ [
920
+ "-moz-placeholder",
921
+ "-moz-focus-inner",
922
+ "-moz-focusring",
923
+ "-ms-input-placeholder",
924
+ "-moz-read-write",
925
+ "-moz-read-only"
926
+ ].join("|")})`);
927
+ function xt(e, t) {
928
+ try {
929
+ e.insertRule(t);
930
+ } catch (e) {
931
+ process.env.NODE_ENV !== "production" && !bt.test(t) && console.error(`There was a problem inserting the following rule: "${t}"`, e);
932
+ }
933
+ }
934
+ //#endregion
935
+ //#region node_modules/@griffel/core/renderer/createDOMRenderer.esm.js
936
+ var St = 0, Ct = (e, t) => e < t ? -1 : e > t ? 1 : 0;
937
+ function wt(e = typeof document > "u" ? void 0 : document, t = {}) {
938
+ let { classNameHashSalt: n, unstable_filterCSSRule: r, insertionPoint: i, styleElementAttributes: a, compareMediaQueries: o = Ct } = t, s = {
939
+ classNameHashSalt: n,
940
+ insertionCache: {},
941
+ stylesheets: {},
942
+ styleElementAttributes: Object.freeze(a),
943
+ compareMediaQueries: o,
944
+ id: `d${St++}`,
945
+ insertCSSRules(t) {
946
+ for (let n in t) {
947
+ let a = t[n];
948
+ for (let t = 0, o = a.length; t < o; t++) {
949
+ let [o, c] = pt(a[t]), l = _t(n, e, i || null, s, c);
950
+ s.insertionCache[o] || (s.insertionCache[o] = n, process.env.NODE_ENV !== "production" && ft && Q.addCSSRule(o), r ? r(o) && xt(l, o) : xt(l, o));
951
+ }
952
+ }
953
+ }
954
+ };
955
+ return e && process.env.NODE_ENV !== "production" && ft && dt(e), s;
956
+ }
957
+ //#endregion
958
+ //#region node_modules/@griffel/core/devtools/react-render-tracker/stackTrace.esm.js
959
+ var Tt = "<unknown>";
960
+ function Et(e) {
961
+ return At(e) || Nt(e) || Ft(e);
962
+ }
963
+ var Dt = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)?\)?\s*$/i, Ot = /^\s*at ()((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)\s*$/i, kt = /\((\S*)\)/;
964
+ function At(e) {
965
+ let t = Dt.exec(e) || Ot.exec(e);
966
+ if (!t) return null;
967
+ let n = t[2], r = n && n.indexOf("native") === 0, i = n && n.indexOf("eval") === 0, a = kt.exec(n);
968
+ return i && a != null && (n = a[1]), {
969
+ loc: r ? null : t[2],
970
+ name: t[1] || Tt
971
+ };
972
+ }
973
+ var jt = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)\s*$/i, Mt = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
974
+ function Nt(e) {
975
+ let t = jt.exec(e);
976
+ if (!t) return null;
977
+ let n = t[3], r = n && n.indexOf(" > eval") > -1, i = Mt.exec(n);
978
+ return r && i != null && (n = i[1]), {
979
+ loc: t[3],
980
+ name: t[1] || Tt
981
+ };
982
+ }
983
+ var Pt = /^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?)\s*$/i;
984
+ function Ft(e) {
985
+ let t = Pt.exec(e);
986
+ return t ? {
987
+ loc: t[3],
988
+ name: t[1] || Tt
989
+ } : null;
990
+ }
991
+ //#endregion
992
+ //#region node_modules/@griffel/core/devtools/getSourceURLfromError.esm.js
993
+ function It() {
994
+ let e = Lt(String((/* @__PURE__ */ Error()).stack).split("\n"));
995
+ return e === void 0 ? void 0 : Et(e)?.loc;
996
+ }
997
+ function Lt(e) {
998
+ for (let t = e.length - 1; t >= 0; --t) if (e[t].includes("at getSourceURLfromError")) return e[t + 3];
999
+ }
1000
+ //#endregion
1001
+ //#region node_modules/@griffel/core/insertionFactory.esm.js
1002
+ var Rt = () => {
1003
+ let e = {};
1004
+ return function(t, n) {
1005
+ e[t.id] === void 0 && (t.insertCSSRules(n), e[t.id] = !0);
1006
+ };
1007
+ };
1008
+ //#endregion
1009
+ //#region node_modules/@griffel/core/__styles.esm.js
1010
+ function zt(e, t, n = Rt) {
1011
+ let r = n(), i = null, a = null, o;
1012
+ process.env.NODE_ENV !== "production" && ft && (o = It());
1013
+ function s(n) {
1014
+ let { dir: s, renderer: c } = n, l = s === "ltr";
1015
+ l ? i === null && (i = tt(e, s)) : a === null && (a = tt(e, s)), r(c, t);
1016
+ let u = l ? i : a;
1017
+ return process.env.NODE_ENV !== "production" && ft && Q.addSequenceDetails(u, o), u;
1018
+ }
1019
+ return s;
1020
+ }
1021
+ //#endregion
1022
+ //#region node_modules/@griffel/react/utils/canUseDOM.esm.js
1023
+ function Bt() {
1024
+ return typeof window < "u" && !!(window.document && window.document.createElement);
1025
+ }
1026
+ //#endregion
1027
+ //#region node_modules/@griffel/react/useInsertionEffect.esm.js
1028
+ var Vt = e.useInsertionEffect ? e.useInsertionEffect : void 0, Ht = () => {
1029
+ let e = {};
1030
+ return function(t, n) {
1031
+ if (Vt && Bt()) {
1032
+ Vt(() => {
1033
+ t.insertCSSRules(n);
1034
+ }, [t, n]);
1035
+ return;
1036
+ }
1037
+ e[t.id] === void 0 && (t.insertCSSRules(n), e[t.id] = !0);
1038
+ };
1039
+ }, Ut = /* @__PURE__ */ e.createContext(/* @__PURE__ */ wt());
1040
+ function Wt() {
1041
+ return e.useContext(Ut);
1042
+ }
1043
+ //#endregion
1044
+ //#region node_modules/@griffel/react/TextDirectionContext.esm.js
1045
+ var Gt = /* @__PURE__ */ e.createContext("ltr");
1046
+ function Kt() {
1047
+ return e.useContext(Gt);
1048
+ }
1049
+ //#endregion
1050
+ //#region node_modules/@griffel/react/__styles.esm.js
1051
+ function qt(e, t) {
1052
+ let n = zt(e, t, Ht);
1053
+ return function() {
1054
+ return n({
1055
+ dir: Kt(),
1056
+ renderer: Wt()
1057
+ });
1058
+ };
1059
+ }
1060
+ //#endregion
1061
+ //#region node_modules/@fluentui/react-icons/lib/contexts/IconDirectionContext.js
1062
+ var Jt = e.createContext(void 0), Yt = {};
1063
+ Jt.Provider;
1064
+ var Xt = () => e.useContext(Jt) ?? Yt, Zt = qt({
1065
+ root: {
1066
+ mc9l5x: "f1w7gpdv",
1067
+ Bg96gwp: "fez10in"
1068
+ },
1069
+ rtl: { Bz10aip: "f13rod7r" }
1070
+ }, { d: [
1071
+ ".f1w7gpdv{display:inline;}",
1072
+ ".fez10in{line-height:0;}",
1073
+ ".f13rod7r{transform:scaleX(-1);}"
1074
+ ] }), Qt = (e, t) => {
1075
+ let { filled: n, title: r, primaryFill: i = "currentColor", ...a } = e, o = {
1076
+ ...a,
1077
+ fill: i
1078
+ }, s = Zt(), c = Xt();
1079
+ return o.className = rt(s.root, t?.flipInRtl && c?.textDirection === "rtl" && s.rtl, o.className), r && (o["aria-label"] = r), !o["aria-label"] && !o["aria-labelledby"] ? o["aria-hidden"] = !0 : o.role = "img", o;
1080
+ }, $t = qt({ root: { B8gzw0y: "f1dd5bof" } }, { m: [["@media (forced-colors: active){.f1dd5bof{forced-color-adjust:auto;}}", { m: "(forced-colors: active)" }]] }), en = "fui-Icon", tn = /* @__PURE__ */ ((t, n, r, i) => {
1081
+ let a = n === "1em" ? "20" : n, o = e.forwardRef((t, o) => {
1082
+ let s = $t(), c = Qt(t, { flipInRtl: i?.flipInRtl }), l = {
1083
+ ...c,
1084
+ className: rt(en, c.className, s.root),
1085
+ ref: o,
1086
+ width: n,
1087
+ height: n,
1088
+ viewBox: `0 0 ${a} ${a}`,
1089
+ xmlns: "http://www.w3.org/2000/svg"
1090
+ };
1091
+ return typeof r == "string" ? e.createElement("svg", {
1092
+ ...l,
1093
+ dangerouslySetInnerHTML: { __html: r }
1094
+ }) : e.createElement("svg", l, ...r.map((t) => e.createElement("path", {
1095
+ d: t,
1096
+ fill: l.fill
1097
+ })));
1098
+ });
1099
+ return o.displayName = t, o;
1100
+ })("SearchRegular", "1em", ["M13.73 14.44a6.5 6.5 0 1 1 .7-.7l3.42 3.4a.5.5 0 0 1-.63.77l-.07-.06-3.42-3.41Zm-.71-.71A5.54 5.54 0 0 0 15 9.5a5.5 5.5 0 1 0-1.98 4.23Z"]), nn = "id,displayName,mail,userPrincipalName,jobTitle,department", rn = (e) => e.trim().replace(/"/g, "").trim(), an = (e, t) => {
1101
+ let n = H(), r = R(), a = z(), o = t?.minChars ?? 1, c = t?.maxResults ?? 10, l = t?.loadInitialResults ?? !1, [u, d] = s([]), [f, p] = s(!1);
1102
+ return i(() => {
1103
+ let t = rn(e), i = l && e.length === 0;
1104
+ if (!i && (!t || t.length < o)) {
1105
+ d([]), p(!1);
1106
+ return;
1107
+ }
1108
+ let s = !1, u = async () => {
1109
+ p(!0);
1110
+ try {
1111
+ if (W(r)) {
1112
+ let e = await r.searchPeople(i ? "" : t, c);
1113
+ s || d(e);
1114
+ } else if (a === "SignedIn" && n) {
1115
+ let e;
1116
+ e = i ? (await n.api("/users").select(nn).top(c).get()).value ?? [] : (await n.api("/users").header("ConsistencyLevel", "eventual").search(`"displayName:${t}" OR "mail:${t}" OR "userPrincipalName:${t}"`).select(nn).top(c).get()).value ?? [], s || d(e);
1117
+ } else s || d([]);
1118
+ } catch {
1119
+ s || d([]);
1120
+ } finally {
1121
+ s || p(!1);
1122
+ }
1123
+ };
1124
+ if (i) return u(), () => {
1125
+ s = !0;
1126
+ };
1127
+ let f = setTimeout(() => {
1128
+ u();
1129
+ }, 300);
1130
+ return () => {
1131
+ s = !0, clearTimeout(f);
1132
+ };
1133
+ }, [
1134
+ e,
1135
+ n,
1136
+ r,
1137
+ a,
1138
+ o,
1139
+ c,
1140
+ l
1141
+ ]), {
1142
+ results: u,
1143
+ loading: f
1144
+ };
1145
+ }, on = "__no_results__", sn = 50, cn = (e, t, n, r) => e.filter((e) => !t.includes(e.id) && !n.includes(e.id)).slice(0, r), ln = (e) => e.displayName || e.mail || e.userPrincipalName || e.id, un = (e) => e.mail ?? e.userPrincipalName ?? void 0, dn = ({ person: e, size: t, photoUrl: n }) => /* @__PURE__ */ C(l, {
1146
+ name: e.displayName ?? void 0,
1147
+ image: n ? { src: n } : void 0,
1148
+ initials: n ? void 0 : oe(e.displayName ?? void 0),
1149
+ size: t
1150
+ }), fn = ({ person: e, size: t }) => {
1151
+ let { photoUrl: n } = ce({
1152
+ userId: e.id,
1153
+ fetchPhoto: !0
1154
+ });
1155
+ return /* @__PURE__ */ C(dn, {
1156
+ person: e,
1157
+ size: t,
1158
+ photoUrl: n
1159
+ });
1160
+ }, pn = ({ person: e, size: t }) => e.photoUrl ? /* @__PURE__ */ C(dn, {
1161
+ person: e,
1162
+ size: t,
1163
+ photoUrl: e.photoUrl
1164
+ }) : /* @__PURE__ */ C(fn, {
1165
+ person: e,
1166
+ size: t
1167
+ }), mn = ({ selectedPeople: e, defaultSelectedPeople: t, onSelectionChange: r, placeholder: c = "Search for people...", maxPeople: l, searchMinChars: u = 1, maxSearchResults: d = 10, excludeUserIds: f = [], appearance: g, size: _, disabled: v, onUpdated: y }) => {
1168
+ let T = e !== void 0, [re, E] = s(t ?? []), D = T ? e : re, [O, k] = s(""), [A, j] = s(!1), M = a(() => Array.from(new Set(f)), [f]), { results: N, loading: P } = an(O, {
1169
+ minChars: u,
1170
+ maxResults: Math.min(d + M.length, sn),
1171
+ loadInitialResults: A
1172
+ }), F = a(() => {
1173
+ let e = /* @__PURE__ */ new Map();
1174
+ for (let t of D) e.set(t.id, t);
1175
+ for (let t of N) e.set(t.id, t);
1176
+ return e;
1177
+ }, [D, N]), I = a(() => D.map((e) => e.id), [D]), L = a(() => cn(N, I, M, d), [
1178
+ N,
1179
+ I,
1180
+ M,
1181
+ d
1182
+ ]), R = n((e, t) => {
1183
+ let n = t.selectedOptions.filter((e) => e !== on).map((e) => F.get(e)).filter((e) => e !== void 0), i = cn(N, n.map((e) => e.id), M, d);
1184
+ T || E(n), r?.(n), y?.({
1185
+ trigger: "selectionChanged",
1186
+ searchQuery: "",
1187
+ selectedPeople: n,
1188
+ searchResults: i,
1189
+ loading: P
1190
+ }), k("");
1191
+ }, [
1192
+ T,
1193
+ d,
1194
+ r,
1195
+ y,
1196
+ F,
1197
+ P,
1198
+ N,
1199
+ M
1200
+ ]), z = n((e) => {
1201
+ k(e.target.value);
1202
+ }, []), ie = n(() => {
1203
+ j(!0);
1204
+ }, []), ae = n(() => {
1205
+ j(!1);
1206
+ }, []), oe = l !== void 0 && D.length >= l, B = o(!0);
1207
+ return i(() => {
1208
+ if (!y || P) return;
1209
+ let e = B.current && O.length === 0 && L.length === 0;
1210
+ B.current = !1, !e && y({
1211
+ trigger: "searchResultsUpdated",
1212
+ searchQuery: O,
1213
+ selectedPeople: D,
1214
+ searchResults: L,
1215
+ loading: !1
1216
+ });
1217
+ }, [
1218
+ D,
1219
+ L,
1220
+ y,
1221
+ P,
1222
+ O
1223
+ ]), /* @__PURE__ */ w(b, {
1224
+ onOptionSelect: R,
1225
+ selectedOptions: I,
1226
+ appearance: g,
1227
+ size: _,
1228
+ disabled: v,
1229
+ children: [/* @__PURE__ */ w(x, {
1230
+ expandIcon: /* @__PURE__ */ C(tn, {}),
1231
+ children: [/* @__PURE__ */ C(ee, { children: D.map((e) => /* @__PURE__ */ w(p, {
1232
+ value: e.id,
1233
+ shape: "rounded",
1234
+ children: [/* @__PURE__ */ C(m, {
1235
+ hasSecondaryAction: !0,
1236
+ media: /* @__PURE__ */ C(pn, {
1237
+ person: e,
1238
+ size: 16
1239
+ }),
1240
+ children: ln(e)
1241
+ }), /* @__PURE__ */ C(h, { "aria-label": `Remove ${ln(e)}` })]
1242
+ }, e.id)) }), !oe && /* @__PURE__ */ C(te, {
1243
+ value: O,
1244
+ onChange: z,
1245
+ onFocus: ie,
1246
+ onBlur: ae,
1247
+ placeholder: D.length === 0 ? c : void 0,
1248
+ disabled: v
1249
+ })]
1250
+ }), /* @__PURE__ */ w(S, { children: [O.length >= u && !P && L.length === 0 && /* @__PURE__ */ C(ne, {
1251
+ value: on,
1252
+ text: "No people found",
1253
+ style: {
1254
+ pointerEvents: "none",
1255
+ color: "var(--colorNeutralForegroundDisabled)"
1256
+ },
1257
+ children: "No people found"
1258
+ }), L.map((e) => /* @__PURE__ */ C(ne, {
1259
+ value: e.id,
1260
+ media: /* @__PURE__ */ C(pn, {
1261
+ person: e,
1262
+ size: 32
1263
+ }),
1264
+ secondaryContent: un(e),
1265
+ children: ln(e)
1266
+ }, e.id))] })]
1267
+ });
1268
+ }, hn = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAEXARgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9LlT0XNSiInGeh7VMsJJ6AVMtvjr+NAFVYQwIIB+tNNjmMhPlIOQCOK0lhA7U/YP0qXFPdDM9EZIyXBBH5VaSAEAgVZ8vKkEcHtThDtAwccYxQk11AhEQHpT/ACwB0yKmWMDr1pFUZ4OAO1UIiIC4yACeneniIkdf0pWQcZ6dakAwuKAGCL1NJt5wB0p6gjqc1HJIIwWYhVAJJJwAB6mk2lqwHFQBUU0ywxsxZVCgkljgAD1PavCvH37WPhrSC1n4bZ/El+JDGz2kZMCYGSRIcK/OB8pPJ9q+ePiV8YPFHj6Ror14LKwDbja/aCGcKSQGXcTnBwdoXJHtx51TGwi+WGrO6nhJzV3oj7Qh+LngyW7+zr4n0sS5ZcPcqoypAIDEgEgkcZ+ldKmr2UkAnW7gaA4xIJFKnPTBz3r8tda129tMlVtJoidzLKFJZcE5G7qDkjpkZxzg1NoXj2KK1EqxSW1ptA8vJRAM/eJJAGe/TpjjgUniJwinJamiwsZStFn6d6t4isNGERvLhYRK21c9zgnt24PNYz/FDw8q5GoxHgnJIQEDqQWIB/Amvzjufi/ZPKxOp2s5jUKTEssoTOAQHXjnoQCcelYs/wAVpIZnMa2csGT5bC6nV0IPUoUwvvzxxyQax+s16j91WRp9UhFe87n6bWfxM0K6mCfb4EYsVBMqjnjrzx1H5j61vpq1pKqYuYgHUOp3gAqehBzyPcV+V0vjC71OzmMejS6hOo8wQwTq6EgAkEg7kbCAYxgnAUnOKm0T48y+E5vmvdZ8JyF9m1roxqjrgkFd6kkg5HJJHUda3pzrr4mYTo07+6z9Qry2FwheIq6nnKkEfp9Ky7aMxSsCDn0r4i8M/tHa5Bbi5h8SNcWRVVinCkK+OMlgBkgZBJBJxya9o8G/tASXUiC/EOoRORme0OHUkEjKk4IJ4BHU4/GpVJLeOhn7Lsz6CUZYADvWjaR7VAxXNaHr9trVtFd2kongcZDgg/mO1dRbSh1BHp6V005xktDnkuV2e5KwAx24pQMHGeD6ikI3EHt71Iilj1963IAxY4PP4Uzy89uKnC4bPahcGgCsYx0B/SoprNJ4mR1yrAgg81e2A9ajx6c+uKTSaswPk79ovwDe6bFNdW6tPaZLbQCSo/qBXyxqc0gtnCk8Cv008c6TFqGizxzxiWJlIYHt718OfEf4ZNpGpzy2i77RySQAPlPoR2+tRhqipydOXyMKsG/eR4z4PstWutQke2Zgd3IA5wM161Po/jHUNHeLTGaG52nbI2QAexPrWz8GfCkR1Bg8Y2lgDkDivq/w94Is4bVT5QOR6CuDGNzqWSudVD3Y3ufHnwH8GfEbSNbeTxVqb34ZyVAXaoHYACivtyPwvaW7b1hUHHoKK814epLWx1qokjrVQA9KcEPYfrUqpx6GngYr6U4SPy/T9aVlwBgc+1SU0sAM9aAG/dIJNOYkYxScknp+IpdoIFACk4GetIpB6DFKBgUtAEZDN1x7U4jgAmnU12CjJOKTdlcCtd3kNhbyTzyJDDGpZ5JCAqgckk9hX5/ftGftXz/E7UJ/Dnhu4ex8LQODLchmU3gAIxICOEznCk/MRkggVa/bQ/aZufF1xN8P/CM91BZJKFv7+0+9ctgAQqc4CgnLBgQTtyAAQflfTvDhsZEje3htLRHLSNPMpLMQcsWIJztAGcjAAAA5B8TEV/a6Rdl+Z7OFw/LaUlqepaDfLMVU3JlUqcrFGzRhRgYbewznJHAPf2ql4qvTCIXittKREUiRhApkKg8nAIyAuCTggE9qzB4lQwz2umvZRMkRXZ5y+ZLwQCdzL1JJyDgAHGe/nnizXdRtrtpJIZCpLKuFhdVJY9DGeflwAAARnk1z4aleTk1ax3V5WiknuatzqTarO6MkLSIGklhtmAByRkkDt68dMcjGaktpLW1tzeaxLjZhszxkKh7MCXO3gkAYxjnGTuPK3Iv7fSYAsUqedmU2yy7F4xh5nOD1OQMhQCD1wawNWlskuIp9U1HSVvX/ANXFh7mcZPJRQrhOnJXGcHJOK2qPnla5lBKCO6vviFpL3CiOC1ljYhQ08zkMMcAlkAIGeuOcnryRLpXiDw3q0jwXdpaWzEBR9kKqycFQQDtOR86gDnBIAIry5b3w7NMyp4hgS7xsXc0kIUknJDAZJAycnIB5PcCUeHTqMUM0DWuuWBG1porgNIgI5yeuOmUIXAwQTgAdFOKikjCTbZ6tcaPqnh21XUfDt89xaQs7G3WUzIgIIyu4h4ickFVKhfUA4Gzo3jpPE9rNY6qsS3cSiRlulIZoydofIIJwWCkgkYKkADAPk+i69q3gG6TUbS+l1XRQTDJG0ivNbMpwUcE4JBwCrcFSCCGJr1G3/szxvY/arKLaSpYwW0+CMghpId3BGGOUPIwCAMAHo06HO/My9U8LW2ialJPbXB0S7mbcLixaSMTY5BOMbiM9ASeTuGciug8H/EPUvBP2ObU43ntBcCNdSsIw6DIXhyAhjORn5uuDhcDNY+m+JZNHmGheJQmp2MgPk3rAA4AxySMg4wPmBIOA2Vwwrailz4P1C2XSp99vdPI8UEqs0VwwADIOWGQBzGAGwQUYgYrRq6szPVbH2V8A/jTp2qX0RstTD2+4LJLGApQk4AkjA6nnkDBxwcg19j6VdRX9tHNGANyg/IQQcjqCOCD2P8jxX5D+CvElumrXF3p1nJaaxbE7bRWjU3CsPlEcqrlgygkhh/DwSRkfaX7P3x4jiWSw1SVwkDRqwdgJYlcZUugwFIOAwAAJzgdAcEvYyutmKa9ovNH1oF46EfWnqMDmq2najBqVussEqSxsMhkOQRVs8iu9SUldM4ndaMQ5ycdKB8oJP6U6iqENDg9jTGGGyOlS1G6ZUgEgnjIpMDB8T6mltZSoxGSCOe9eD+JtIFy0skQ3DktGepHt/hXtfiPTZPKczDzYD/F3U+/p9a8+1Xw/NICtuDL6bRzXi1Kk41XKSNuROOh534G0iO01bfbjAJ5T0Of88V9IaIB9kiBHOK4Hwd4DkS6Fzcr5UueBjGee9eqWtgkMQGOQMDHat6d6s+foQlyKzIZo8jIHaippYyikdV6UV1yWo1axabKgdwKduyRgcHvTI3Ei5BDD1FSDGOK6E01dGYgBGcnNKAB0GKWimAUUUUAFFFFADGOB6V80ftfftGH4a6BLoHh+/jtPENwn+k3zkCPToWBIYnqZWH3UUEj7xwAA3q/xr+LmmfBzwPea3qEyLOFKWsLdZZCOOOu0Zycc4GBkkA/jp8VPiHqPjjxDe63qVzevd3UrzI0Ue5YBITiQ5YfM45IUgkABSqKCfIxdfmfsYPfc9PCUL/vZrRHQaR4y0LSLe91JUvtakVR5811kIsZIUlIwrYUnkszMQATwucWbLxJoGvyz3GnaXptyFWW2BkiMNzA5UkwOHLA8AkKXQEBiMgEL4ddR3thdDUrJ7+S+kGCzFbeOUAAOAhYblIOCA7ZAyRnmtzwzqMtjdKZXmhedBG1pqEQlguVB4TeBjIxjaeeCRnJrnVKKV7nf7WTdrHdeJoEtra5kbSrZ7FGJBSR18lxgMrRjkMDj7oYjAI4wTQ0DRpPFWpWcUDSyRALwD5pGSoPJwSACpwwBAI6YNVJbG7lnCabJPLZsvlG2nmabaAc+XuOWIA4AkBZcHa2CCfYvhp4EuNO0K7vfswLyRFSsigAggKQePQnODyMjjmrqVFThuOlSlVntoeYeNtU0yXV3hT7dfiECMpp0Y27xwdrEE4AAAOMck4IOawp/Dh0u3NxefDma2hlG6Q373U0pTg5kcDauRjKZyOpUYAr0bxPqXiHTImjttRuYmfcgWxCwqqgnJLZAGWByeTjnBJ58jzd/bHnuJ9XvWYEmW4uJTFnHOSzhe/OMn6g5rmhLm1N6lPl0YDxD4CmU2c6S6VMhJkAuwsQyQABGobcB6kKfYYNWzplrHeRXfh7XgmCrLbyM6soKgjBK7SDkk4YdeQRyblt4q8IcWGqwRRIeFuXJiiDHr+8AKknj+IDg/MBxWH4q8AppWn/2zoy2iaOwTMtrO9uVHIBcGRoZFwABIGZc8HBxnti/kcE42Ortnur2+ykUVhrzBQ0UrEWupp0wCDiOQDcF3YLA4GTjFC1ubnQca3oTz2RhkMF5p94uVVxtDRSLwVIJBDAEgNnGMAcVD4k1fR4gmoxMLRzhbgAsvPQl0PynGcFDkdcHFeg+GPEB8SykoEuddiiAMeQV1e0UEYB6GVQQVLKDyVIUsC3UkrXOdy6HbJq2lePtHd5RIkRdYrpV2s+nynIRnBGCpOcHAwcZA4ApW19FoZk8K+Jx9t0m6ULHKFcFcHCTRHn5l6gBuMEAkZA4KaSTwlq1rqulSlLaTd9nmcEqUH+sglUj5lAyCCCQAc7gGI9lhtdB+JXheIurxW5kRZI1Us2nXBwQxIOTE46kdQGYsTg1d9CLHm3imK88PC90e9f+1Dbxi9sZY1AF1AuA8iPnJYKSWQnA2ggEcH0X4SfEuDxDLpEF3fLDqcdu9kLuYAzLCZfkDuc71DMmN5ZCwAYKWVhz0mmXN/Bc+GNXgvLDU9NbzLe6ALGHIykkbDAZcnBAyCTgqA5A4DXdLvNDlspjFFFdISHhTMlvIxzny3YkhJFOcEgAMw425odmhLT0P1Q+AHxakBTRtZkijlhBRyFKBCCFJK/wjJAIBIGQQcEE/TCnPFflr8DPiwnjazsYhem31i2G+287LT4UCKRGP/LRgUYnOCykggMFNffnwY+IJ8V6HFbXTKmoQKFliDbipHBIJ5K5yASOOAeoAypT5Jcr6kVoXXMj1CikByM0tegcYUUUUARTxLNEyOAysCCD3rHfQIrQiSBSCOq+3tW7SEZ61jOlGe6KTa2KVlbBRu45HHFW8EHrwacABS1cYqCshNtu7GEBwR3op23rjgmirEfi98Dv+Cp3xJ+HwtrLxbaReMNLjAQztiG6AHckDaxx6gE+tfoP8Ev2/wD4UfGgw2ttrqaRq7gZ0/Ux5EhJ7AnhvwJr8SBoF01qSEOMenWubuIJrW5IYFHU5B6EH1rijGLf7t2JvKO+qP6bbW9hu4lkhkWRGGQwOQanzx1r+fr4LftmfFr4JXMQ0XxFcahpiEbtM1QtPAw7gZO5fwIx6Gv0G+CH/BWTwT4qFvYePdPn8I6gwCm7wZrVj67gMqPqMD1q1UlB2mtAUoyP0BormPBHxF8NfEbSo9R8Na3Y61ZOARNZTrIvPqQTj8a6bIreMlNXTKE61HNIsMbOxChQSST0AqQtiviL/goF+1nYeAfDd54E0LVgPEN1tjvltiTJBEy7irHgDIKkgHJBIOBknGvW9lHzextSpOrLlPm79tL9oa2+LHxXTTtNlN3oWlh4kAyonYAnI6YXcU5PJ3Z4wBXzT4uvYntTezMWsIiVLSDct1MCTJKScDGcAA5+VVyDggcHqniCe3kkuC7LO4MhJPKgAlc+5Y5x6AdM4q18SNWWTS9B0KBVVbaNIpGxzJMfnmY+oLnAB6AEY5NeVCi1JX3Z7bqx5Wo7I1NEgn1K3i1K7lg06wuyxjS4XzZZVBIyQSqgZ74z25IOPZfBfw4g1SyRVM0RlAO+KEIjAgZ3qhIwQRzgg8ZJBwMb4HeDl8d+KrWIQtcOFVo4sbUhgXKqxPJwAMYA5POckk/oJ4P+HWnaNaII4g7kAPJyTIR1Jx789M9TmvLxeMVKXKkethMF7SHPLY8Z+HfwNtNP8uWd5b07RhMAjA5AwDkAcYGQABwAAAPbLXwrbR6U9oYoyjLtAAGVGMZBHt78V1FvoUEYIjiVFGAQowD7n1rQt7MCPYFJB7Acfy/WvHliJ1X7zPajSp0l7qPH9b+DdpqDOG5AjymwAYP94Z79D7ZPYkV4745/Zegv0kcl3kb5llBLtk9c568/z719ivYmQEjOVPBA5znnH4Csq+0uKTcDGDuyCCMY+mf8a6qc5rWLM5RhPRo/NLxL+zrfWsswtopDImQybiHx1z2HTHQD3HeuV8NWetfC7WndLe8gs58i5t5ZBJA3UB2QDkgnqpUkEgEbjX6NeJ/AsGqLK6KfMwBHNkK6gHIwR159c14b4w+Gal5ba7hOxwQJAoCsPoe/Xg59ia9Kni5fDI82rgIvWG586aroFnqltdanpUksNoQxvdJmkLJAAMs0RCB2jAy21iSgBONoBrzq7srvwtLHq2jT/aLPeJIpLaRJXhkGSBlSRyN2D3BYMCCwPulz4RvPB+orcwmRIkIZLiJSWjIOQ2TkEZ4IPHJPRmrznxNomn6Fr0Wt2FpDa6Zqk3kXdlGCRbXBJ8xRnICOoDRkYwRIBnZk+tSqqSueDWoODs0dVZapZ+LNAl1yKIPYakFfVbaFgDa3AIC3aA8bXJAcHBDhXJxJ8q+FbyXwZrhhEwtlkCNDI2fs043kAYOSuQ8gIIwCCflZTu4b4Q61d6JqGsaJAVXUIZjNZxyKGjeZdyvEwPBWVQYyOn78nsK9BW30y702Pa0x8M6koNu8pJayl3L8rk5OVIAY4zgRsdxYA9SevKzk5XujvvG3h658TaZaa9oUUttr+iR+XdWhkMTSWuMqwIBVgpyD1BRiCOFzlRWFh8QNEkmltJYpYYjFqVmV2TJGG5kjGQBLGzZBBIPzDrKAdH4a65d6XrMWkahL5epWUhFrdM2A+AQY3wcsjbwCQTtLK5AVnzqeKtGPhHxHb+K9PQx6ZcSiPUbFMYgVhtIxg4A5XHIUlRgBOcnLlZduZHitjaal8PPEWm3NnMGniuZXjuo2IiuVVYXR9v3lVgT6EN5iclAD+gXwt+IMsn2bxDp0cgvY0EtzZ5G6aI48xQBgBhgAgYGVDDrg/GPj3SH0y7MqSLJ9jvjqEYUfNG2ZDIvPJinjcygAkZhYYG9QfWPg344TSvEkmm7gLURi4gHONrOUwPowdTjOCASDkAZVNuY0hFNcrP1E0LVI9Z0y1vIiSk0ayDPBAIBGR2OCMitD1rx/4Z+Kv7M1y30aZibLUNPt7uzkOMBhGquM9ecKep5I7tXsAIK130KntIJ9UeXUg4SsOooorpMgooooAKKKKACiiigD8MLTwVEsB3IG49K5zWvhraahKZPJwc4yK9cjhQxkggnHSohbK3AwT6V8rGpOLuj3XRjJWZ5NY/C20iwTCCR2IzV2X4R2F8hRocFu6jGK9Pgsy7BQuOcCuh0nRgpV5Bz2BGabrTve5Cw0LWseT/D/AMEeNfhPryav4F8S6l4fvlIP+iznyn6cPGQVcY7EGv1P+EvxS8a6boelab8Q5dL1DxNJbpcXS6cvktbxkAjzFyQWOT0CgkEAdK+bfg14Ji1XX4NTuokews5VYRupInlBysYA+8Tjp9M8Zr6hhtBF4gOrfaY/7Ca2kumlIBDkqMEtgAgAHqTjA7EAcNfMK0GlB2KhgqabbW5S/aH/AGl7P4V/Dye903y5fEV7bTPpsFwCY1CqSbiQj/lmvBPI3cKCCwNfiT478bT+I9f1G/u7uXUr64nee4urhtzSOzbizHnLE8kDvgYwK+of20PjDcarpsmpXIU6h4oA+yWTl0+yaKjk26sFIINw4MxwRlUjHvXxJJremKu19Nn44Jiu8DPcgMrEH8a9XBOriV7arr2CvGnhkqcNG9y3ZTHUNVgRj5ieYJZWbjcF5Ix2BAwM+vviotT1P+0NcidSZAkhIwOCQeoHYE5x9ayn1oOjxWVulnG4G47y7sPQsf5DFeqfs5/DyPxf4xgkuV8y2tirMG6Ek8D+Z/OvUqNUoupLojmoxdeapR3bPuH9kH4XTeF/B1vq15FjUdSRZJFP3kRQAin8Oo9sV9W6dATCjAAZ5APJBx2rjPB9mllaQxQgJFCqquBjAA447cCu0tLry41U/MFOSowSDnnHFfm9Sq6tVzZ+jKn7KmqcS7tIyCTkjjOOcVZhjjVQcFT09OaoXDKpLAHB5G0Efr/nFVkv2jJwzOueASDj2qoySdjFxclobEihWwCSp7E8H8+3TpVW5CsCApY8E8k/16VS/tEHuAMc5J/x5qCTUy4CKU3ZzlowAfp7V6FOSRHs5LUdcRK4ACBccY69Ppk1g6zo0F+jq8aOCOoHIP1+ma2ROqoQQhbHJTH6nt9P51RvrhAhwQSwIBJ4/Sum8WtTOzvoeM+NPBdmttIqRIgCk/KO9fKni7QI3u9f0WX5GmjXbuO1FYlTFKCem1ghbuVEgBwxFfaPiiQSRvtAD4IGcjj6nivkn4vacs/iF2jAdZ1S1kAXg+Zvj/Q7DnHeuzDzs0jjxlNSp3tqjwXRZ54/HMN2Ha3uZpDcDcNpEnmCM5HYh0Y4PoDXo2k6xYaRr17oGpMLbwz4iCzxSkHGmzuqvHIDydiklWXGCsTHBOc+fX05XVYNUA3STW5lBI5Lt5kcjHPczQzsMcYK962vE0i6poiyEAyabdG1LDghW3SQknHQEXQyQeDjqa9pO7R8slZM9TtJ9Rht3s7+IRazoMhiJyTIAucgkZDBVJIxkFMnDBgD6fqfiG28TeGo7uTZ9k1PFtextgKjZzE7YJO0AhGfODxjkg15J4M15vFekaU4ljttatohaJcy4InjiKgI/YtENhBOcpIQeRmt/RtdXw6+padeWjx2jqbqJI0OU2kCaEDoSqPIwBzkquQQwBUrNeaKjo79GR+KL7+zLuFDFHdzWkS2zwXBwtykICFCRyGdHUgjhWhBAO0A9F4a0cWOradcWspMNjdNGZidvnW8oUBuTw24BwM8MVHTJGZ8RtKSwlldAJ5LSaOQyeWCWj3EKe5YFGc7hncVZuAyitbwJfm8tbqC58tXgupYJFVCrSRkFkfheUZCxyepJwTnNTe8SkkpH2PpF7cp4DtL+0f/AImXhqYOBjO+AHcUIB4+UtgDoY19q+ofDurwa7o9lqFrJ5tvcxLLG/HIIz2+v86+XvhFqxe2gkAWVJRJG2WADqcMM8DJIwM9CVYcgnPrXwn11dCu38MzMi2Kkvpc2AqtGSzCPgAZAJAzg/KwIyCTnhZ+znZ7MwxMLrToeuUUgORS17h5YUUUUAFFFFABRRRQB+Eo8d7Or/rSx+PAZMK/PbmuCGntJj5yK09M8PNJJu3Njucda+YbifR2Z6fp/jOKNQ7uCxwTnnmu5+HN/L478VWWkwyrHEwMlxNgnyokBZ24B5wMDPGSM14kmhklQJCCSAB7k19l/CH4RQeFvg2LDxLbR+GNT8QXt1pH9oLe/Zr+5EsUTQRW0m4YY8sCpIwhLA4Irmr1VThotWaRjeSuemaJLYzX+m2mkWAmaNZYLK4ciNoikTyTFCwwZAq8Iql8bmbAGBd+NniA6P4A0HwbFqLwRauzQahdggTW1gqNJOwC4+YoGXIHU4A6V5X8BfBXiDxT+0T4g1DVNOm8NfDzwlpsum+HdOhA8iSJy0ZuDMSxk3gSSMSxLPKCxJUk5Hxc8Y2DeKvG/ihospp+njTLQrIQouCxWMAYILA7SVI/5Y5PXNfP1U+dRTvfc9LDx5pNzWkT4V/af8XXHij4l6s8zhjDK0SxqwZIo1wkcQPcKiqoPoox1wPDrkFSAxIyMn8a9M8eaQ8WoQqRunucyOxOSST0J9QD+lcJ4i057W9lG0hQQgHpgAj9CK+/wijTpRgux8xi7yqSlYztPiFzcqgysS/MzHk8df8A9VfbH7FvhNDp9zqcy4MsmEUDI4wByeuMn9a+OdAtiIpHIwZMKvuB1P4nFfof+ybpgtfhtpDLH/r41l3EYPODmuDNqjjQaXU9TJKaliFJ9D6Z0SQqgjLHAHJHB6f4V0kN2u04OTjkAnJPfkD/APXXM2cDvs2kgHnaF4PPp0rorSzlZBgNj0247dwOn618BZ3PvZtW1LAvGdQMnOM4yR+P/wBaqc0+UOHGOmeo9OB36Y5q79iZGXIJycgE/hkkj8e3eoLhsE7yV2jqTwfXHpXRG5jp0M97gouAMHswPAP0Bzgf5FRs5fO3aw6EjkfTBB5p7pvBYDI7Fj+fTr1+lJGjKeXBJ5K55Hrj2rqi+4p+QZcKDkE88sRx6gAdOMfn+dW9DzRtkoAc8kkBfxwK1EGFIDMX77snP/6vw60j2kZAMjKACcEYAz3+v+FdSd9EcrdtzhtXsXMThQu4rgEqTx7YP9TXzD8T7F4dTuVMS79rFWPOHVgynGfVSPXn1r681u6tIYGLyqqdCWbaMZ9Bx+PHXHFfMHxS1bQr3VpIrG9jublWDBEJbkHIG45DHIAIzjnpXXRTTucdecZQa6nzZ4p0swaVKU4FrqV3CCFyfKmAuYAOxGEnx6FiKo+GLoatqGo6ZIQo1ixESscf65DvhbJ6HcGUn0b3wev8XWTt4e8QxwkC4t4IL+GQE5zDJ5Xp18u6Q/QGvKnvjaXMN7APJFtMHVcYwrgMgHbIJA9Pl9BivoKequfKTXLJnUeCvE9zo91cQrLLDNFIJkVcgkqcEY9kLE55PlhT1Br3LV3i8T6DHd28cn9p2/72SKBARdokQEgAB5cRbTtyQ6gOPmDY8I8URpDqeneJbYmO0vCs0hUkeXJnEoB9M5JHXDE85r034d+JIXWBLt3tEeQRy3EDbWs7lQdkqEYIKsMjkAhyCQCQbmtFJEQbvym5qGqmbwXbXjM85sVWyneFgS9uWAjkJPJACbB6bTjGDWXa+MZ9Nk0yaCXN1PGxV5QfLeRY9sYcgghTkZPbIJwSAeovtPSU3c72y29tPEYdYtIlzEiscG7iQYwocB3VeFAY7V5VfG0eW1jt7a5Pl3OlalJZzhv+WTFjgHHQEqoBHU59iIhaSaLk2mj7z+A/jyO60i2eKUm2lAdIpyQUOc4OTwFD4PUEq2RgjHvsN7J/ZRvrSYw32mTpIhnAYruYkBwCOCxAbkffY8Zr4H/Zn1VJtLv7JJJYL20cXVuVYFQgIR8DH3QGVWAPKsGHAJP2p4K8TQNopuGtmdHiW2ktJfllKnlojkYYhVwpBwcgY6gcclytmklzo+prC7jvrOG4iP7qZFkTPHBGRx+NWcc1wvwnumfw4IBdpe2sLAWs4+88LAMhb0ODgjAwQRXdV7tKaqQUkeHOPJJxFooorcgKKKKACiiigD+f22j/AHi+nWursIAsKkDt1xXAJqJUgg1t6dr7BQpPPbmvl+Vn0nMjv9A0x9W8RaZYxI0ktxdRRKgGSxaRQAPfmvtjwB4y0f4s+CLzQLGxeKOPxRc2enX935c4jm+xmdLhi6fKH8u4wACVBUAjIx4N+w14Ym8T/Fv+357EXWmaFAZTLIfljuHO2LjqSMsehxjJxxX2F8FfhbonhbxH4k1XSNLbRbW/mguP7KDiS3jkWOVVuICCSokjuHVlzgMjAcEV5GKlFz9n1KcpJKSWxBJpdv8ABT4N6lcmK3tLtohAixQrDucYitowAcKBkEA8Ak9K+Nv2iLeHRPCeleHLZxc3sUTajqU6cq1xJkKoPU7QGGT1yPSvrz48a5HrHjHwxot9hdA0qSXW9TR1BEphjLQq2QQQXPQA5IHfFfEnjzWz4lg1bV52yJppChAyHQLORj2+QEeuRXDQSlXundI9ekpKi3Ldnz54jsTeapvI8wwyMc9RgM24AE/3Spx7isX4heGPsaI0qny50EkTY6OqFHGenJGfwrub7Tng1TWLSVM7lE6r0JxI6nB4wSEIwe/503xRcW2u+GrnT9ztLsM8EgXJDKAc4PTIxkDrz15r6uE3Fpo8icFJSR8+wQvYNZy9UZmXPJ5DAY9OmK/Tj9mq0hj+FvhYgBEXToZHJOMDYMknjgYJ59K/N2+QXNjNGp2zwSDzIwOjYBSQezAYPoQT3FfoR+z1CniD9n7wikrEQXFsYJWQDOI3KlSDxgkd+oHvWGa+/Si33OjJ7QqyS7HoniT9ozwp4JuWgeZLsRErJLDKCFIJGCACeuOuPXpVjRf2tPA2p3AtHu57K5YZCXEQCsfQMCQfYjgg5yawfFXhzwnZ2JgfTbfDIA5MYJYgY+Y4xwPcV8qfED4faBZ37y2F81soyBFHNgID6A5AHPQYryKGHoVVZ3ue3iKlel7ys0foNpvxU0LVtO8631KGWPIBdCMLnpn0Hv096tt4ht7oMVcN6EYIHtn/APXX5s+C7xtClkig1mZN4KuquQrdcEAHAIJPIwa928B/EO7tZ4op7nfHgDduBBI4B4Awex7EY9KdXAuF+R3KoYtTspLU+pDq8TlmyoBPIBOPr16+9QNqqDIRgBuBypzken/1jXF6TrR1C2DhgpJGcjJPr+npUWs609nGMgpg42gknPJz0/Tn8O/DGm72PSbVrmx4i+Idt4ct5XlddqIXwTyMY4475Pp+FfOvxL/an1iCN4tIgdXxgEAkngYCk8ZycnjsBwc0zx3rf9pXUi+azjcSctxkjBBAIzwfw59xXmXiDUrTTUMt26KgBJeTBI+npXuUKEYpOSuzxMRVk21F2OfvPGfj34kXAFzfXclucjEs7MvOQfkyQefUkehq3ovw4u9NvVu5552IyXdmK7QepAHA6DAx0B71Vs/iS/yppWkXtzHjIaGA4YeoJABHuM1FdfGG7icx3Gk3Nsp4O9QSM9CcZxXovnatFWR5C9mn70rs60WPn3yQXIwLoPaSggY2zRtESPpuDA9AYl45FeKXelCyma0uB5bQtJaSh1LDAIKE4GQCHA9cN1zjHp03iCLUfDsGpwkywQ5MmGwdhAD4I7qybu4GM4J60fiNo9vq9mmvwl5YLkBLgRLwTkCRQQeGBcOuBkBoxyxAGtFtaM5K8U9Vsc54IvIp4LnwtqU8bRysDbyykhUkHCFiQPlYYUkdMKR04dYC68O6jPpF0CsbOAVuRhhgFSsg4yVJZSRwUbJwAormHieQ/O2LyBgDOoIDqRlZMDJAYHOOqkkcEha9A0bU4PGekG31Bli1a2UJJKxCiWPKiMsSMAhgAGJ284OVJI6np6HKtbd0ep+EdbuHt7MLLImpWbYS4yCSxICNkdQ2ChByCwzx1Pn3xF0SKDXZNQsD5FtqlmpdMAIrxhVAABHMMoixnBMUkJC4DkzaFqcmgE2V+i4yyxXEpwoYDBjlJGVBAxk8qwVskbidLxfcK1ndyKiXMsarrKWcjCMsFDLcEkkZDo0isinLBkAGAAOaKcJG8vej5ok+Cfiq28CeJ9G1PUS8WnanKYHgkKskcbHypnORjaAy85wFAbJKhT98rIlnYWz3MTgWU4j1JIsA26SAESAHkFcR5HIGHPPWvzh8PQJqOvSy3a/2lo2oqdSWKYAL5MVvmSA4I2ljEIDjAyVJBUrn7U+C/wARn8aaVYvPeBNR1mzaK72/K6XSyMPMwBgZdwwOAMFgAAtZV463QU3dH1x8Ftbe2vp9GuZBMZoBd2kqY2yRZwSMe5B4456DIB9hH86+JvAfxNt9I1PwhcCb7O8OpranbIfKEcwlWVQCOEJh3bTgqyKOdvP2ymCoI5B712YGd4uHY4MXC01LuOooor0zhCiiigAooooA/nM849N1XrNzGuQcemayUjaSYAZyfSt3SdPlvLy2tIwTLcSLAg6csQB+prxWlFHtJNuyP0H/AGHNBt/CmmaRbmJJ9W8TWV7qd7MSQ1rHFJbw28WcY+b7QXIJHIxzjA+lvg5d3mleGLS0v1TdaWyRiOGIKsUWWESZAAJCJkgDALHGAAT5R+zno76t8NNJ1aw0xdK1K/0668uVZSVTz73fCdhGdoVw5/3MDGK991Mx2vhfVZLBE3x/uVzgKGwFA7ZABHHofevjq1SXPKS31/A9HkjdQ9D5a+NNzeX2u3axyvBPrIewdmQqILYSF5ZgwIBG1CATgDIGOlfL+qX9rqFhZW8MLLFM0jIqnJEINxGhBHfaVOe+Qa+gv2kLqDS9IeSOKWR7cxaBatI7LHukjEk7EA5fEMVuADgZeQ9K+Xbm+jt76OUQnyooFEK7uPLUISPrhGHuc+lGXq65j2qztFRRyPiq+iXX7qWBgyyxTfPnJwDMcEHp98Yz2APIOTxuu6nLYawriVgqNGxGOOQNw+mC351Yu5nu9SJySzRqrKGIBJKkkjHQBcHP94+tcxr12bnU7twSyC4CjPooIPtz1r6qnG9keDUdk2c7rcg03WTLEfMiaMRSqeNxDlWX8do57HBr7t/ZvaaH4DaZLaOxAMzKwHbzXIOMHkgivhHxTgxXRJ2ypMxB9SzbsfkV/Wv0G/Ylji1b4LaRbyxgxgzRsvPzYkbJ459vwrDNHy4eMvM6Mp1xMo+R4z8YvHms2kstpBcxGbPMe7BHAJJGeABg5P614naHUPEAvLqUanq8FrE0lw9uxgih2kkljgkggDGCDk4x0B/QD4yfs26DrWiXN/DYQyyhSxikUyFzkYALHA6k5wTgYBBOa5vw/wCD/Cn/AArnVfCl7ZnSLW/iMbT28YYRzZG1gMhiA2DhiPQHoayweKoctmdONw+IqNyi7nw3qOmXOniG5WxvLBLiIzxRR3yzyoodl/eJu3KcoTgjJBUgYYE9r4G8R6mgIuFknRNrC4jUhlUjIYjuCO4A69O9eyz/ALP2mXGovq32nQrTXriF7U3qXM8qMAoXcsIjHJXGASCfXvXdL+zz9uvtDOlajaaYumQRxQ3UgdZ5kUAHMRQ7lIBBDADJ4PHPTXxNGMdzkwmFxLlzSjZHY/AiSXxbpRaUETwYVsDIcEHBx6EfqK7bx/4PNppNzLKj8KSMNjgD8D17/lXWfCPwJa+HJrn7NEIkbaoTGOAOR34BJ+ldr4/0iK90qWBgNkqkEHg45z714FN+0qc8dj6GUnBKD3Pzs1wyQ3Mk8qElidseOT2Ax+FcPqugahf6xBClkmp69cMBa6cxBSAZH7yTrjjPJBA+uCfs+b4XWF48riHMuQqvjJTkcj3+tc3Z/BHw74E1U32nwajHqO4sLu6uld5Sck7sICwBJHJOAMdhXsOvTg1dXR5fsJ1LpOzPjr4j/DLxP4F1XU49YuL26uhp0c4t9J4JLltoAYfMilWBI5JBIzgA8HD4P126u4UAniuZLM3YgnX50UbVAOO+GAGRwRjjmvvnxpaJ4nW3l1W0tr27t4pIYLp52gljLAHGQULLkZ2EkZ5GCc15vrPhhFgkFpBZ2EkyLHOloWmlcqcghgWYj/ZZ9vXjk13QxlNrRHkyy2tGfvPQ8D+EN5dsbvSLyBGLs7BJQACCB97B4UsoBOeRJ1wCa39A2eG5bnRdUR59DuBiQOCWSMhlWTABO5QSrYGQASBkAj1fw18EZD5uqPGbQsDtZwC7NzyRwAM/wj8a5vxjoRaGSRU8qe1JaeNRuZABgyjjJXgbsc4IYg/Njk+sJ1HynZ9UlCC5loeWeK/CE3h/Uxp0ssQnSPz7G/LjybqB8NguDjawOc5wrMT92QsvPW01xpt+jNGYLyAmN0mQZwRh4n4yykZ4PUd8gV6pp2oWOo6U2ga6u20Rt1oxYBoCx+dQ3OFBYMAcqdzAghsjl/F/g+TSyTqP720VhDDq8cZyvAxFcKMkMAVKsSdylSC3C16cJqSPKnTcXdGlYapO0dtcWyTX9m22GIDDyRuBtNvNgAkjOFY8kFQCxyo6HR7D7fpsF3o1x9rFi3nwxox85cDLRAA5YlSSMgkgn5cEmvNND1O78N3OZCtxbTrtnQykhozxuVwAflOBwSRnK4I59F0PVrI3UWp3Jgt7kSCObU4pVRmJyVacR4BLAj5iGQk8FiSBTSsZqT7F7S/DMFvN4qtoZlGn3awLEHKqEjbbvcAHCsojQMowGOOAACN/4D+I77TL69064GL23n3ywM2Hb5wwnQHncqliR1yxOMscd1c+FL/UrO01TTY2nnSZPLkgbcHWWFw7I4IDBTKcA4OFOdoYY8o8B3k1j8SNMknB327Np0qlSplRiEAwACCAfQEmNuBkAYys00aR0aseteMdWu9A+JmlCOJo7DVtUh1O3lU5jlDMWmHA+WQEuGweQwJAJJP6ieCdaHiDw1YXgYO7RKrlQQCwGCQD057V+Y+labL44+KfhrTkdrm00YgXSEAr5ZR3VgCck7icnjHl4ydxFfp54Ps/sPh+0j2CMlN5VRgAt82MZOMZx1qcK26tl2IxiSpq+5u0UUV7Z44UUUUAFFFFAH8+Gm6GkrZKZI5ru/hrpttpfxF8KXtxAssEGrWkskbMVBAmUnJHQAc/hWXosSb+nU4+legeBvB03jbxHp+kWLGOe5k5lX/ligyWkJ7bVBP1A9a8maXK7nrKTT03P0O+AOg3dv8AC7Rp3Jj1VtLhsnM6oHWSKV1kB2Ko3KQRwAM4OO1d9r9msGlxwK4Aa5+1MxYBQgbfuYdMLgDPTIBrH8JamzeIl0yCyS3sv7JGoRTAgN5z3D+fHsAwMEAkjGCcY6VtePY1uPD9/FCd0k9sYHGQPLjfO5ufRQ2Ov0NfDYhL2cpbXPSpNupFPc+FPj08+pWOlWtxcw/bJrq81YxqxURxy5KF8jGQpYAkZO0DGAM/K2tau2J7hCQbmQpBGeSsanI49Tgfix4r6N/aS1SysdQtZ42V5fsKBo441Vk+U7YwMAfcKZJ6ndnIHPyRqGpPLJLKCBKQAFXJCDGcAnqAAcnuST7V2ZdBumux7WKkouxR1DUDYvNdHDeUON38TDoPpnBOf4QR3rn4YljhDvudVwzD1xgseeuTgfVqsXBS+YPKxjsYWydvWVuyqOp5/TJ71B4hvhBbiAxkXDkPJGCMRKDlVx3PfngEDg9vp6cdonz1SS1k9kcprBaRgj8PIHnbjpk5H5DNfoN+wRqSz/CaGIcmC9uIyvcEsGwffDD86/PqAJd3qwyE4kOZ5QThI1ySB64A6nqQK+wP+CfnisPpninTZMLJHqIvAhOMLKmOB6Ax1hmsHLCO3Q6MmmljEn9o/Q+0tLfVbAxTgOki4KtyfSuD8Q/B8NIz2s8QTOUFxAspUZ6ZIzj2zXQ6PrI2IC4DEE56c11NletMgwocdeRxjPNfD05tPTc+yqwlBt9Dxiw+Ed6JsNqcqoTu8u1jWIHtyVGSMAdPeu/03wjaeE7DaifvTydxycHnJJySfrXcNtiQ7cA+qjBFctrtwDII92cjAOcEDkdK6KlSVtWZ025ys9jQ8IyD5MAE9Se2c881d8Uzr9nKkHJ5+Y9ePy/WofC1qIpTkcAD/wDXn61a8QwC4VwCc9QMZ7c16GD2dzlr61dDzPcba8KkZBJJOc8ntn2rqtPsYNWtBFcxLITxhgDg/T06fnXG61OdKvMvgrtIOQegwTW34U8Z2F6qpFMGdSBt3YOfp/n9K3qWjr0HGLnstR+o/CnR7h2c2qAEZGxmU/oRVO3+HOl6aRMLOBXC8NJ8+OvODnnp2rtv7WiZTkqwJxnP4c81l6neRsGTIQkEjPIGfUf5/KuKU9NGbwpuT1R5v4zjjt7eRIsYwRtzgD6YP+cV8w+OJZbC9e6UlfLfcGU85HcHPXHvX0p4wiEkUgHLZAB7cg/p3/Kvm34qKIIZSmSwJJA/H1q8NfmudOIhH2Vmjz7UdP07xIol05oYJW+WWyDBUYkEZiOPkc5zsOFJ4BHRcvRPG1z4OuRpmvxyT6cy+UtwUDMq5ICuCQGTk8MRg7gGUFifNPFOs3en3plsLh4psYGB8rgn7pU5BBPHII59ga6bw18UNO8ZIll4hiWG6ZAyT5J3AjBIP3sggggENgcFhwPqqdOSipHw1WpHncb6nocngDSNft3u9ElhKEkmKFy0LkA5TBw0bgA/KSpAOQQoDHn7zwRPpLy2UsRnYQOI2YZ8+2zudHAAyygFgVC5wCcAAthvpGqeDrwaj4cvZGQAKYhtbehOQpU/JIoPIUgeykgV6b4E+Ktl4lWO01CwcXsZWWS0iYkyMpA822LElJRgkq2Q4G0nkGrlOSRzqMZPXcufs8eKHjuL/wAO3lxJLbTW4lt5JGJLmJZJQpY4w6r9oAYAEi2k5ANekeLPDaa7JB4nsnd9XsLqG7uYGwZJEjLBlI4ZnjUjDlclEUHaS4HlN/og8KeIZr/QL+CeySWDX9Gu9pMaI4DHKsBkLIDuBJGyafIwrFfaPh/qsB+IMV1bW5j069i3RicNL5c1uQ00EhOTuCmEiQ5LLAuQDnbjJt+8mOKtoz0b9mLweNB8Q3d7dwLcS3V3JbvnIYIJCUAzyQSuDnnnvkmv0AtYhDAiL0VQAK+C/g/4ifTPiR4n0uTZKbLWpoolYjmF3LoMHjlcEE5zxjqK+5PDGqx6vpFvOjbiVAJxg+xx2yOa0wjSqNPdnPjU3GLWxsUUUV7Z5IUUUUAFFFFAH4K6XL5cgHUZ5A6/hX2F+yt4Si0CC71y/h3m/ZbeKUHG212tK7j1DLHggc/MAeeK+L/CUT6rq0EBbEZy0jc/Kigs5/AA191/s1Wer+Ifhtpl2oJg1OWZzHIQUgt2vIrdVG7gfJC4wME5JwSa+Xx9RqlZdT3aEUpJs+i/hRoiadoNjczTO95btdiaQOWEhvJVuHbnkBWJCjGACRz1rpPGN1Do+jatPjdM0SwEEYziPd1OMAg4yDwfxrI8HwW+neNde0152FzcYdIUUmMQrtMZBPc73PGQRgZG3FbPiCGG+g1aa7iaT7JbByFBIYlCOB1zgAHGBgj3r5Wu5Sp6b/8AA1O2mkqyfQ/Nn4geCdS8c2/jnWZ2Eg0fEU7QklGlZj8iHJBAAJyDgBR1zmvlvWRHayiG43KgOBDHgs5xxkjoBgHoSevTmv0YXw3qVx8OPH8ayGL7Z4lIuo7siXbHHawhw7KAMlsEEZIBII4IH54eMdLludQEcEbKl1KTGgzuYFsYx1PUDHqK9DK6l3yN6I9XGq8eZIyrdZLp5rmKSGJLKIyz3IyIrKPOBjP8TEgDqzEgD1rktQM+qKfsymG1djmRmBZySeTgkk+wyB3Jxmum8Y3ltYW0Hhq0lza2snm3jKcG6uwMHcf7sYJUA5wdxAORWBOzy2hkKeXEg2qirjj1PsOw6DI4r62mrJS7nzVV3vG5iyBYmMUXO4fM/TcAc4HtyD74r2T9krxSPCnxY+zO22DVLdoMMQAZFO9D9cBx+NeOyQlbhAB23L9Tzj9cfhWxp11c6RPZ6rp8gS+tJhMhA5DKQQPbOCD361pWgqtNwfVGWGqOjXjUXRn63aBrkc8SNxuGCVIBOOmPrXX2OvAkbSeOgPp3zxXzV8N/iBba1pFneiTEFzCs0XIJAYAgfUdPqK9WsvEsUUIctIWPHAyc9eoxj/69fm9WjKnNrsfq8XCtBSXU9On19LNSzHAHAKjjJ9a5vTL6XVvENzK+Ps8ERK8feYkAZPT1/KufGry3xCAgPjIBJHU/Wtmezv7HRXewEb3oUMI5GIWQD+HIGQSM4J4zge4na1zFxjDRbnp/h6ZfLBPBxxkYOatalJCsRJdd2OFzyeO1eF+HvjfpupWJnS5EM65SWBxhkcHlT3BB/Sqeu/HCysrOVxMJXQE/eGMcnk+nr6fSvWw8pRtHlOCeHu3O+h1PjK6t7S6gMxRtzEFTzxyf89a8+0+yGu+ItROnMEktEVtqNgMDng4H05/x48A134u+J/GniFm04KInbaskykDHsMjA9B1PUkdK+gfg9Y/8I7aIJpXnuJ1LTzMOXY4yeOwwAMcAAV6NWjL2bcjkhXiprk6HTWPiq5tEEVzCYnj4LZ4P1xipLzxT9ojeXCkDhQrZzj3P86p+KRCrvMgVSTn5QAB6dv5VwGtapLbwttfeSeSSDn8/avEhTu7HuRqRaTsa+ua4pST5hg5ONw5xn+lfP3xU1RDDOEwDjkAgn8P1rrNa8STJE5JIJHZs4HYcmvHfF+oy3bybiCpJyc5IGOcmvYw9FRd2edi6ycXFHh3jUgB8gsCOB3/z/hWHp0DSWMPysJZG3RMrHLEdVIOQSQuRjGSCOSRXWatpD65rUNhEQu9iXduFRB1JP6fXAqTVNHie/RYEMenWcZRCcEsQBk5HfIyPTnrmvooVFGKifB1qbnUclshfB/jiS1UW1zcFbMEZlYDMBJxnBOChzkjOAQSNpII1tZuTp1+t5FGbS7iKmUW7EHIwwlRvUgBwwAJAOQCDXnEClpp5Sp+SCV5UA++AACR64bBI9s8jOOg0nVJL3TYdOuy0skDC1gkJyzxschQT2APXsGGB1qpwT1RFOf2ZH0to+sReI/DcUl2/2W9MshSeFDmGchJWYAA8F/MYgA4DMACcV2XgLxLd+H9Wt9XFsDPaJHBeaVvUJcCSRYyyPkqpIRxHKSVy6gn5gZvG/hldS3Xh5wHP2klLqEDpv3Rk8Z5zGJAB1LbR3Oev0TXX0y/OoW0VtdwQPMBZyksshaRnMakEEAq5b5SOVLDBAYcMFa6OuetmfSptQviC08U+HpG1C0nnNtJcIpUCNQrQhzzghBGQeQwIIPOR9afCDxihlfTJZNpXCqHIJx2ORxg5BB7gjjkV8Q/Dw2tis+mWOoaglkpS7spFUS3dmjAZBQDbNCeBJGUAyFcAcE/Qng3V9TSKzurm1ivmgACX2ichkHpDIS2QMEKCzck4GcVnJ+zmpLoS4e0g4s+vVOV9adwRXJ+CPHGneKLNEhvFa/jUCa3cbJAemSp5wcE8ZHoa6zINfQU6kakVJHgTg4NxaFooorUkKKKKAPw/+DngqXW18S+Wxj2aVKjS4yIkb/WMfTCK5zX3b8F/DksHhTQdV07zZNCg8Lzabb6JFLki5ju5Jg5XIBeVIyFY9GDDPPPyF8Hb4+H/AAP4hvYkW4vLvUdO0xbcgnzYZDKZl/4EqFf+BCvqbXPFT/AOOH7Otxa2vhwQW0SnJN2iWLXNw5BGGX95sA/vk98GvicZJufL0PooxvTi09T3X4d+Ih4um07VcpdHyJYPtMSBVlVZAI5hgkASRsr7MnbuKgkqwHXuUgvri2uCH+1QExxkcuFGGHp3Hvz7V4v8N5dE8D+PPE2gaAyadpF9qNpe6YgnaW0lhlEUzyQqcNG0puZVwCyloSwAwwPsfiNmXTf7RhXzLiydpogse8uACGQADOSM9OcgV5rgoRklutf8wi22vM8Q1/wxF4b8QeINOtwpubm7k1mCCIbXukaAZIJ+UnerrweMjOASa/O7xro0WjWcc9qZPOt0kMDuCCC7Haw9MLg47EDtX6D/AB4t5fGWkafe+GjL/bWmwG4t5IJMEo4AcZHOBuHspAyCrEH4P+JmsjVfFt7/AGhbG2lDLGY0iMRLqirudBkDcFUnBIJJIOCAOLBaVW47H0msqC59z5oHh2W4vUiVdjM2055wASSSe3Udau31qjwPFEoMQQ7NuT8oGQTnuQc+vPtXol/oS2s0ywHcLlQu7gHawO4g+oUOPTpXM6DpU19Pd+aAUUhQFPIUgg59OSeevGO2K+2jW5le+x85Kiou3c4EW+61Lkb/AC8gjJGQc4/PBrcgs0nkidQUJQRyt1RsDIYjGRkHg5PORioSiHUr2AEiIkQxkjHzA5Ax9Mn8aXRrtoYdRsmBJYeQSCeok3D/ANBOD2IFdLk2ro5FFJn0D8BtVkm8LtbB8mwuniCH+FSSwGO2CSPwr37R9WdlRWAJxjIPbv8AWvln4G6wNO8SXFtIVEWoEjGTjzFXIwPUjd+INfTujKjKqYwSMDA5J7Hn/wDXXzOLglNto+3y+q3RSudxoeu21rcRoWjXGCxA5Y84Gc4P4YNehQ67HcwgrkgqBxjgngH3r5v8Tapc+F1acb3ViSABkjHp71d8F/tG+FtL0U3HiOa80+VWKostoyq4GOQ5AU8+/avPlhnNc0TvlWSkovcl+MXwsuE1CfW9I3QSy/NKsYwCfcHIOTk9OCeK8A8S3utxqIJpjs3gPGFwGAOSD3/Cvetc/bA8PyxGHStKgkBB2z3swP4gA4P515hqvxl0zX76SaXTtOe5zvBWMDnP3tobGeK9fBe1irVY7HFiKDmrwlY7T4aeEbmW1trxrZwxwV3jAx0JHH1r2vTrG4tIIwkbBsbhngAfhXyrL8f77R5tkWv+W+MrFFMCAPQKuSOnTHFC/tD+OL2Ux6VNql85bIKREL36l8ADkc4r0J05VEcUKSpfaPo3xLc3ttLI7l0jI5bAAAHpn/6/SvPZ7iXVdRMVtceYcElSSRgdf8+9c5ZyfEXx9YiLxBqZsLV+TBa4MpGOhkwMD6DI9a7rwT4Jg8NRGYszOF2jJJwPrg5Oa86pTjSXmdVKrKbstjkNZ0OTYdxwTzknHFeWeLIUg84liEUElj1J9Bx717l4qnQM7gAKBwQc/nXivipodSujZAEH5pGcdAqqST+Y57DPNa0paXMsQm07Hm+l2xkeWaUNHFOTGASC0uDjAHXAIJJ6E8AHDY6bxBplta+G3srZAt253yAjLZOSVA6EgYJ75J9CBiaeZU1W7vXUI8A2woSCqE4VFHbjkk+gOT2N/Q71bi6fV7gF0jxHaQq2WlyRmTB6FmJCgnqQSOK6ZXbuuh4aSs0+p57qvh1tKYBt6uVByp2sFU5JB7fMo5wcEHvVyw8OSHQYtWdFiIjKogXAaRgyhgOg4UHGBjaDwCBXW6nocviG53xRC7e6nigjWIlEkkYgIkYwCF+4AcEhQMAkgj0fxP4XtYdOsNIgKSRwCGAvEoWJ5ZApIA9CMAcg7SCfvAnV15JJdTGNBOTaWiKfha3fw34NjvYsRTi3eSNCucMqAoe/AYA+gx09ee1vzrO9SzslktTa3DRW5WMunm+YwAZCDhDujUEEjErnBBJr07SbIzWetpE6TG1ulEceAQWRQOMju4Uc9QhJBwAeENvZ6nqEGlSSyaYL+KWbT70nBjDK726SIefMiwFBBIwXAOGUVtRad2zGqnokdZ4F+JbWtjp0ksUksSx+Zay2rbnjKMAUB3Ak4JjxnJxAMckV9YfD74pabqbKLl2sbwxoHaQlWcMRtJBwsoIPGRuHIIJ5Pwjr2jyaZJNPHFBBZ6kP7Q2xtuthJIDFcKqHBCrMjptwrbMA4ya774Z69qMD6cNPuZldLcQrayySM3Iz5ZBBDDGCOoYE9MECa0E1dDpSezP0o8M6lZBzc6pZLeWuGLahbAiSDHVsjDg4wSw5AwCcAV7XpNzugTZci7hP+rmyCSOwJHBPvx788n5P+DXi4WanRtVuQmqWkiAys6soDjMZB7A5C4OMcDAzk/RHhi+BsbjYQskRWQKCfmjY4wfcMHAPoB24rnw9Z0Z8r1Rz4mmpLmR33UUtVrWcTID0OORjvVmvpIvmSaPGatuFFFFWI/Kn9nDwza+KNP1mzLEzade6ZrAhUAh4o52ilY+gUTISfTNe8/tSaA914Xu7q4gu9RfT1dHsoZArSW1zMjK+epClEjOASA3pmvlT9mrx9e+FPHXmWSeZPe6fd2axMAVlYxmRFIJAILxoOvfvX6D/APCLWXxKufDvi+3doZDpSxIiyKySW86qzo4A6qyqQegK+5x8NjFKNe6Po6MrQSexyPw/8GX+qaf8O7/VZls5/DMIilsY1DLMDbfugxbJBi3zAEHPzdcZB9i8PnbpUJMjOJMsSWyc5JBJ9exxxx6YpINGis7Z4vJBQ5RE9Qc5JPuDyevNThY7O1yQsUUYAAOAAB/TivOScZc0jVuL0ifKfx+8Pz/Djx5aapZzTQaHrJYFY32i2uOpweytksVIxlSOhAHyt8XUfW9XudR1ZBBqYBLXMR2iUgnnHQA+g4Gcjjp9cftDa4njqxngA/0G2YmN8/MzAHkY+hP418e+Mtem8RXESElCUUlyAQ6hQMkcY47euK58I4zneK6n0bUo0Uqm555Bbyy2E0TbzIznyyTwRtBIzzjIxz0BHPBNWbfRjboVgRUE0RVn24KOcglj16ndjsCO+a1rDSgrKADEVUyAopBJOVORjpnHI5HGffc8SWZi8OQ2hT/SZWWaeeNvmJBG0H2BJz3yD1wK99TtZHmOne77Hzb49Sey1uRYHkVSVmOCRuPGSR7Ekc9MfWoriB211pYlwl5CJyFGeeQ3T3z+ddb8YLJLPX9Mu4oyH2FZVYg8kbufXIYj3wazpdOWzls9oKiFQg3ZywIUgfoD9TXrRmuSNjx3TvORHpOpyaJdpNbnbcWtysq7uRlVBAz6EAj8a+wfAfiW08R6Pa3sD5EqgleTtbHI+oNfG8bh47mfAmiafeCeDgBh1HfIPrjHvXovw18fReBdUsIruYwaXfAIWmb5YpQQASeAAQRk47g1w4ml7VaLU9bBVlSk1J6M+tba2iv50MsSzgHgZGenvXU3/hXTtZ0I2zWELIy48uRAykdj3H4Y6VzHhfWYp2jwFwcEHgbs84Oa9JspBMoCANwDjIIHrzXzlSUoNWdmj6mKjJXR87658OPCmjXKtP4ds7ZlJ3o8YaGTnqDjg+x/AVRl+Fvw8u4hOdOs7bcAGSNSw3YBO3JPqfp+Wfe/Ffg5tXgceX5u4cL1wO56fzzXkuo/AfVXuy9tbNIGOQBnGPcYwP5V6FDEtr3panQ6kFHllTTOPt/C3hbSZhDpek2+8niVYwz8HjA5A+p7V2Xh/SQ0iAwRpGpB8qNQATjuR1P+Hetjw5+z9qNoRNPKtsCeYgCePrgZr0K28CxaXGqDJdRy/AH0A9a6pYq6spHnztJ2ULI5L7KLdMx4RhgAAA9ff1qC/vHs4ChGYwCCSOPqe/Wuku7aKGRwI2QjucZz0/D/AOtXG+JpvJicOcc+v4Vz6yabIilHY838X64yo6ByBnPTHNeZ6dfbvENwZNrF4JFXdzgnDAD67SOvc12Xi26ihjcthjz83GM+1eS3mqC01WKdQCysDtPPAOc/lkfia6odkY1leLubiaG8fhQTkfNcNDhiTwGjk4HucEjoTk+tU4NPSa4soW3pAY0ZmUcKnRyDxnClxzg5963I9T+3eEL+E7BLYyx5BO0MqHYuD1yBIvJ4x16VetIbHXNL06USG2S4YxyGQAMhYMmCAeoYtuweOuASAN7tLU8Rxu9CPwjbMmt3F45Es4DJbRhQVjEgDscH+7HG6jj7zluCMnqIgW1LRiQHCxT6q6g5BcnCjJ4GFUdTwR15FUNHsm0Xxitzev5bw3VvMrLu2tE8TRyDIAAIUM3UggE+td/4k8PNaCNrbdBe29lc2sSxocMFAdWwDzkmM4B4UseseDmmm1fqUlyxZQ+Ghtm04CaBpbK/Mh3kgZJViRuBJBYJIFYHJZcjJINc38TvAV/4dl0iOZzP4TmuyLXUYym1FMm+3uQS67BgGF14IaKMnaDGTlfCjx0PB+qwW1yqJot2QZo7UNJFbTLIWEqoQNuCMmM5GF+U5Cxt7NceNbvwDaNDPaWOoeEL9zIrXCNNYyoxKEgjPlspKIwwCCknYrnqTdOWiujilFVFvqjw7wxe3FpZXmj6zI95pk90t1Fd24Qi1uHADxkMcESZQFWAxtQkqpJre8L2MWg6m2oFvsWo2c4S6WEsLcZKsJxGQCEYFGxgGIk5U4JTv7r4c+Ab2+n1PToNY8N3tvH5Fxpmn3kNwkkPUqkcqgMpByAWIAAIC9Km1P4YWuoaLaeIfB2s3V/c2qKJobvCvewgk5DLiN2CuQSpZWz8xAJNbOUZGUYuLPYtG1Oz8SXOn63b3It7mRRZTsh3QvIBkK+BhWO3gk4JXGDkZ+qvBV7L9ksRyjzDyTyCCEkUhvU5V2x6d+ma+G/hNZXmkXTwSF7rRtQj2BJmJK7SN8Lg5YMoIZGzkELnHOfszwAs1taWEMRDiGSViC2d2djFfUnggZ7gelebXfJJMqS54s9ltWBZsAgEk4A6dz+pq924rJtLgFSR846H16fzxWnG4ZePWvqKE1KCsz52as9SSiiiukg/Hj4CeEZrzxHZaquI4rG7t4llZcqJpG2j2+VdzY9QK+/v2fZ9O0/4c6LpOm3L3tvpkBtVupUKtMquwJIOCME8A9iMcGvl74KaBBN4R0rw5cia0S8nGv3GpxsFFu8U0axxNnqrqjg45AB9ePpv4LSRv4A057a0+ywzNLNGnJYrLIzljnnktnPf6V8Jjq1p3R9LSp3hqemmUSM6Af6oAsQfboD9Oa8f+LPxCL3TaPaSeXFEAbidD94npGvucjJr07xLKdL0Vkt2CySbY0PTLEgEn17n8K8G8XafFpHhvUdTEYknlIgtmLZKEsd8h9SSD9BXgYyu7ql1PWy+jFv2jXoed65qY1VooThIoo5XAUnCKqMQSD1JYHn/AGa+aNesF1FoI0byzKhL4BACliMg5+vvxxXvl9I6aBrl3jMsdssEQIIIyMHHrxx9SfWvKNTso1vLaLcAY7VQ5yAAoOCw/DtjuPw68HFQPXrvmVjJ0eJ576wuVURGUSWuJOSZAMgn3IAbGOrCqniC2I8KX4Qn7TptrBOoyCyqDllJz1IJ+pJ960Di50m3mjCqY7x7iArwX5ByR7gD8wO1N8R2+LvxbIQPImtCylcnMZVMDPfB7DoQfWvST2OBx/E8z+LWmRahpFhdkYV1jYuB0BiIz78Y/HNcN4vuhb6hHFgh1gRgB1Hy5x+len+Pg8nhGJH25SKBl3AZ5jzjHUZGPzryLxvGbfxbe24IZraNYD1GCAqnj6hzn3r1qF5JXPIrrld11KGnwv8A2DGgBIWIsxGflJJGfxJ/lR4miF3YJbMM70AUH++oIIx6nAx7gVsW9uFtoIEJCFtzKT97AAGfb/H3OcPxRcmHYQAd0uF6HBByD+YrWEnKorGU4pU3c7L4JfH668Gm00XxDKZLEkLb3UhJMK9lfvt6YPbvx0+7vAfje01uwt5Y5UcEA5U5GOMH6V+UWpAzTOq/fQkYzwQTkY79xn3Pvx3/AMIvjprfwrvFiMkl7pLE7rVzloueShPTr0PB9jzU4zLlXXPDRm+AzV0GqdX4T9cNMu7e4jDAA4znBzg9eBWkL6JCULArjnKgjp1z+NfJHgD9pPS9ZskuLW73h1+ePOChB6EHkHNdvN8X7SeNQLnbuwSWYYH64r5d4apCVmj7KFSnUipJ6M+gjeWzKVDqT3XGBj8BXNa9qtnbjPmLG2SQvGTx3rxyT4zQRQkeaHBGAE9O2cVy2qfEoXSSysWYtkqrHPvkmt4UpN66EuKeqZ6Rr3iOK1DPJKgyc4JGcde3PevGPGPjJJ5SEI7krjI/PvXK+JviRHMzJ5+/H8ERDHPuRwPxNed6v4iutSDKhMKNnJzlj7Z7fQfnXoRh5GEnGO7JfFPiFp5XQSGWT0zwPr/hXHNlpi7khicliOc9j+H9KvG3LZIBz69qRbYtwBn6DOK64RSPNqzcnrsWdL1FLTUrlJSPs8xeKUDkFGBUkHoeDkZ7qPxu6PqP9mTT6fdy5s5j5MoILAZOUkQ9xn0PIK9wKwrpFiJDryo4Yk8fUDt+o7DsYhM1zEbZhvnjQmONyB5sYBJCP/eU8jsRn0Bq3Htscnu9dz1zUri41jSodft42uZdPAg1K0iYEuhIYuhGCAdokUN8u5CGABOPafB8sHjbw/aW73PlX8MYa0vVGPnAISTB6qw3Aqw6kKQSpA+WPBHjyLw/qREl7iAL5UsVxhCYyM7XzwwBxgjLDpgYBr1fwd4gbwNrQu9PeG58P3mFW3WQFELEkqcHAwASrKQSAMHg55JJxaTXzNFFSu4u9zifiVazeHdXvTd6bHBd2s7CQRyyROFGSMvtYOgGWIGZVyecKCev+GPxoAs50OybT5VSPUrHUJUUiRysSz7jhPmyilwMEmMlciQ17D42+GuifGnSoda0y5Ol+I4ECi4iYf6RGAQiSoThiM/KxAIYYzglT4Bf/DbW/AOvwR6paJpUocxy3NmALW6jkyhDlgpiLKWG0KOcD5mGR1xqwqRt1RwypSpy1Wh61N4O8O+JdPkGlFtEmtG+zyKsRT7K4UrGjxMCYlywI3M8W0KrPGMGvN73W/EXwhvLWOeC60+adjbRzOjCJA21isqNnzFJBUo2THuYglShkr6JrOs6TeWX9myXBcyCygnlJaC6TzCfsl1BggbcFAcB9m4oQVCnvPGMkvxJ+Gq6zpekXl0bW5ubLWtElG43VvtdobiJ1Xh43iKLKq7kEzRkGNDENLbN7HJJtNpbo73wF4pjubgXlv5lutxIokWRt6EDAVT1O+MkLkkllYEElsD6/wDhZ4qi1BrFGXy3hkxIsnDoSrDJ9QegPevg79lrw4moeNX0DVZ3Nhq1i0ljdshiEk0QJEbqwwsqocMoyDjcpKkMfoXwdrOo+HtXfTNRjktdZ05441a5zmWIEKMt0cEEYIOckDBJBrycRP33DqjthTU6dz7VgLiEvEgbaxO3JGQCQcH1x+daVjc+duOCAcNyCDg9sHkHjkduK5bwRqq6tpAcMSA5UhjyDk5z7jOD7g10SkxTkkcjB5POfXPTkZr2sJUfJGSenU+arw5ZuLNdW3CiobZw4OOmTjjiiveTT1OI/PPwlqJ8Sa/4S0yyiePRreP7RHHgZnHmzFDIeDljsIXoBk9eR9aeFtPg0XTxaoSTFGmQBkDIIAHsAOnpivFPgj4at9N0xbl7H7I8+wRwhy4WGKMJlQSSqltxAJJAwc5OB7HpdudP1O9WZmZ7g4jQ8fdBO4DoAQ2M+1fmNeo/bbaI+ugr0t9WW/EyLJLavMwWFA0hJOBkKTn9K43x14eW88FJA0SwsYBIxHBCjBBHHUk5P0rt/FFm82mSTpjKrlVboQQQQfwNYviHUDd+HbrZtWI2ysoJyNpXaRn2OcjOa8nEK1SV99zsw02lDl2PkHxMTovgVvM3F55CyDqWwMDPv8ufxFeLeJdRNpd3EYkXfHHHa7zzjCgZB9jk/hXq/wASdUI1E2wcm1022DAsMfvCVI59OAT+PvXzhDqra7qZhcmISyNPITk7VyTnHcAfrivawqbjc9Sq7adzsbAvHp9jFIQhJLvlvuhjlc++1AfXkVd1Vjd+GdYcBnKRG12E5yXIdDkdCQQPoRWJrF9/ZsQVPmkUCWSHBBDOVCLg9CFC8Z7HPFadjvtrXRLCcF3u1W4u2YkFliVTuwepJSPjqQx7V3JXS8zlldPQ5j4rW6WM8NkTyLpImRTnlWEYHsNoOfavFvEwfVfH/iCQsFifUJNg7kBjye/Tufeu/wDiTr8d14kIhlZnjv40GFBCttUZPOeozyM8muI0m3juvFWpu7bYzPJI+4Y2oCSxHbouB+NetRTjFtnkVmpzSNRbEvsbOAsXmAYycEgDP4sP59q4z4gWr2VraEmMHJkYFgCT0AA7gZJ49RXo2nyfa4HvXTG+GNAvdckED8hj8a8++JkTX0lqinew3Kp6A4z3/A4+gqqD/epdiMQv3TOKu7ch0lwCSoB3HAPygHPtVB1Lj12gAZ6Eev4Vsa6GBSPbyuAQO3AH9Ki06z+03SRSZJGS2ByBjoP8969tP3bs8JxvKx0nw6lJa5t8srxsGBBwRnPTHPUV6VDq2q2SDZeyMgHAbDcfiCa8y+H8wHjEWzkg3KMoDdcjkD8gRXs76O4j+6Dxg+leLimo1dep9Pl7cqKs9UUodc1KYAtdkEdCFUY+nHFPZrm85nuZZRjAWRiQPw6Uv9mtG5xwT+Rq3BbvnGMnHYVxrXY9eLe0mU/7PA/hxjGMDvUUtlsBzxnoB3roBp8hUEAgZ6kYqWLQWkkBPzHucfyrRLqyJS6I5mLT3uSo2lQO2OatJom0EAHH0ru7Dw4ONoySOSRwB/n1qa90pIkIxk45AH603NJWRnyNu7PI9dsTAQcZwpPBB71yMNzLHcnamYY5AysDyr54K56Hg5GRkAjjGR6P4rtvKVwQd3IAAyMHvXHW2lk3C4GCDuww6kdD6/lW1OaSdzjrQd1YdrmlW80MU7wZllXgBtrYHUZIIyAQCOCARniqPhDxVe+Hr5IgzT2c3yy21wSUIJIC4wCpHByCDwDwQK6dtIZNP3uGaBG3MCBg5GOM9Twfyx71gRWCpcO5IJYhGZgcFcnDE464J59jnk5OanFxcXqdDoVEo1dj6L8E/EC30SxSe3umTTgCY7hmIWM5+eFiAdjLwwDAgqTjoQPY9D+LWk6iEg1WM3SDPlXVsoMqBhggrg5UgnIKspGMV8ReFfFd94V1RJrYpLYzOyXEM5LW84BBAfGSpByA4+ZQSccA16hCbY2sOs6YZG0CYeTJFcp+90q5728xBAkQknDEcEkqyncrczoWd07GrrRas43Pp3X/AAj4H8beGU0vStSXSkW6N3GdPjNsPOAIIKAHb1J45BYnGCRXP6F8EdT0DS3m1rxNJqNtJKqy6ncQGZpB5ZQJMSV81WJCtvXJXKltpKnxGK/jjg3ShkuYckgthlAOAwAxn04CkE5xnNafgbx1q9rq5jh1Ofy5Y/Lkjdi8TIQQdykkEnGDxxgjg5zfNKmrN3RwujGo7x0PSfCnh/Ufgn8V9GuWvVlsJbiOZ7QgLFqMLHGUDZYyxZJBGWBYAMVJB9T/AGpNXstGv/DvizT2mma7YxXVrAw86NsZiYgggFWGVHJJGMYBI8m8UyHWtH8P232aIwWxnBguFZgCjKUEZJ3AAtJgYIwB2wB6ZpV5Pf8Ag3QLDTovtN9ZyAxb1iykIBUxuXbcFwAMxkEjr1Nc9WKqSjUe5nCLp3SZ9Efs5+OYvE2hRYSaLdGjHzZQ4YdA4IABXnGR1AwQCGA9xHzgFW3kKDk8EYPTp74r5i+GV5B4Q1K3zpS6VG5/f2zRkFXchSyyAAOrEgncC2eST1r6UtZd0asDjjIwTyD/ADP+FdeDqWbhbQ8jG0rS5+5fs5dpYE5O7sMf55/nRWfb3yxXrwiRS4UPtHXbnGcemT1or3sPXjKHoeTKDvseK+FreeRJLpCiRi2ijQAAGQsrO7HPQHIwMdAK3U1Nri5CuymS0lwrMASUJI59skHjkDNZ/wAMbiLVfCUUkUqvKLaNDIqklgwDLkHnIyQO/Y9Kwrya4tvEyRBNyb1B25zG+CSpPoQ6YHsPSvzuSc67tsfUQaVPXdHqk1u2p6EyqCkq8rkd1PTB+hFeO/FPX7fw54a1SMOC6tiOMHlw4yFz9Tz6AV7JpV3HHaJEcjKgbW65I55r5O+PvimP+27q1eXzIdOaRic4VskFRjHPJ7noK58XCMpwa3OzL03OSex84fFDVni095JX/fXpZpCMAAdgB64AH4n0ryzwxGli17qEqF1cCTGQBtJBWMe5OPcAfWtvxJfP4n1KWWR8WqA7BnqM4GPryc9h71i3M6JcvCC3kW4DOVABJOAAOSS2BgemR759aguWHKehUalK502gaZL4k8SWgnJeOItf30jDKjAOBn0AwPx47mm6x4o83+19TRVCHNnFIWJRSVKqoAxkhSSQOmV+tLr+pT+HPDttoFkCNc1jEtysbZMUIycHsAAScnqD715xrmqImpaBYWjudKsQJzITkSStIxllIPUY2kZ6hR05rtoQc3d7HHiKnJGy3OVv5Eu/EbvE5cHUFk8t252pIQ3J4JO4HsTg9aks7M51Y4O+4gmGGGGyTtP49Rj61zuhs95PK5I3BlkB9GZypH0O/P0FdZZ3kdtcSrPLst8kCResYY8HpnAJBx9K9Wfu6I8mHve8zW0K7Dabc7VyYmMgPsASPyOK8+8QxzXcumowcmMIpKgkh1bJGOuSCf1rtrKJ7K5njeUIJDtkDKQY3wcZxkYOcZ7gg5wRUt94ZttcRrW5ljtp3G0M7YjkJ6HORg9ueD2rCE1Tnd7G86bqQ5VueR3LCRJZiR5m/JBGOpJyM9gQR+NVdNeU6hFKoKRIwLM38XfHvXoN38CtbspRJKitBkurRDH1I5OQc9BwfbrVC/8ADU+m27LEhwAQTjJH1yBjPpj8TXprEUrWi9zzo4Sq3zSVrHJ+Hp3tPFthcjlo5w+fUZ/wr7E0nQ49U09LiPaQ6gjHIORmvkfSYA2v2cI2Z387GCkH0wcZ+nvX2J8GrsXmkR2rlC8P7s5447Hr1P8ASvJzSVuWSPdyeOsoM5690E28rK67fTIGBSQ6QVfAX6kjivXPEHhlZIwwXGehI4P0PauXfRnhcjYxA7AcH8q8ylX5ke7UoWexz1npvmMCRnPGOa3bHRcqDtySOP8APetOysWJGAQOuMAD881u2lmYyoxyT1OOPcmuh1WZqijIh0cKoPTA5PX9BWdq9ikYJzkgkgEcfl/jXcT2rLEOAAOSc8fhXJa6fmY4J9FHH/66hTuzT2aSPIPElj515g4IJ6Y6n3qOHwu8kluEXdJIeWxwABkk+wz+ldvbeGpdSvzJKhLZ+VM8AZ6n04rUvLRLWJ2QAEgqCB264/z7VhicUqEUk9Wd2WZU8wr2fwrc848SpBBarZqMxJ8uU4JIHJ6Hjufr75rjLNI5GntJonicqxjliAYOcA4IJAHODkEZwcj09Av9La5kcDODweeCc5/HmqDeEiY8gYK4K8dD65qKNaMI6vVn0ePy2VdpU1ZI8nuVjtJ5UB8oudqttKkZznJycA5x29zitLwz4lvvDWpq8Nx9nn2COUBtsVzGQp8uVTxxyQSBgnJOc56bXPDi3G9QBDN2VjjnOcg5wR7E1xGpWl7ZrseFpXQ+Wu8jBOMAAjqMA/5Ir2qVWNRH5/i8HUw0tUehw+MLTVLeeKeKOybI2g5RoWIwAHGRyAME5VgAMKcV1XwwQRN9mku0QRXBBYqy70O3IIIBBPAwTjqPc+HSLr+iNZtYxMHuQQsayngDbnk9vUHjHBru/BnibUYL8PND9rtpVVZTKwJUjGSMrgAEDBA9T16VOlzK8dUed7V05clRWZ71r0d5DOlpLqcdpEq7ollkw0iMgBkUnKtgh+MDpjHy4Gp4Rs5FlgnbxJKigj/SAXO8ZyQASAx6YKrxznNcvo3iqS/kWxt5EuS5aQWjM0s8RIOdisCCpHIBJxnAq1pb+ILzWtjytpUCAKPtEDJMQOBu3bQOOykj3PWmqUnFJI53OPM7s+wvhVr97PaC0u9ZTUYDkQtcW5DxHBx0AyPUHg5HSvo3wfLfTaUiXc1u0iDbmI/KxA4IPUDPbtyK/PjQtB8V/a7KfRvGKWCRNukhuSzCQHORg7lHB4OD7g19J+EfipqXhDSprnxHHbW5jKwG9gDXMDKWP70IgLqMZDAgAHGDjFYqEqMlNrQ5K0VVjyp6nuerRta+JdIuBuUytNayIMbdrIXBH0aIYP8AtEc9ivMPh18Vbz4xeK0l02xM3hjTHcjV3LRC4nA2hVXaAygZJIODux25KwpznOUnTjpc4atNU7RnvYX4aQHQfCzK20BZmkG7ghSMqD2ADFh7ACpbe2/tLxZemX5LG9ihnjGAQsqjBP5AA+2Kf4TuodTsLd1CNGitG8akEBQSACfUEYB9vXNZ/h3WI572ZTIco3mW5dcsoKqCrfUjIxwD7V4kG/aSk1oj1JRTiktzc8c68vh/RUlMgjfcVBz1wpOM9s9PWvhH4oeI5Nc1e8lLkG4lc4wDubgEkDqADn6n2r6V/ac8Wf2d4LiiibMs13HHGQDljgkge/J5r5S8SxxWl3vfLC2hWMMp5eQjcxHp8zEfhWdlKfOj2cLHkp67s821uQWOYgBlCZJGxjAUcIMc9epz1qt4I0A6vqJu7pFWwskF9ciVtsbSEny42bsvGSOpGcDJqrqMc+tXIigw7O5ChuQOeMjpgYJyf5ms7xx4pktrFPDulzsbO0YyXEgIBuJzjcxx1x0APQDAxzn1qUW1ZbhOSWpS8ceLomvdVg053vr+8YJe6oRtaUE48qIfwRjAHHJySeBiuV1aTy9LikUl5ZLfyFYHA3ElCAPQKDz7g5qvOvyRXBJKoHdiSeSRhT9Rg/jj1rWv9PFt4ct5JsByqGNexyoJz6dR9ST+PrQSgkkeVNubbZzOjabLHpN7PEhdodrZAIGeQpPoCBn3C1s3VukUCSODseICUEYxjC5PuCFNWtE8Qm1tJ9GjhikTVYkmnLAFowrARgHqCQGJ9QwqnrF8PstxEvJ27gp5G0HGPqTg0ScnKzQoRio3TIvD2vw2N+YL5PNTAHmM2Sq9lx0ZRk4ycjPGQSD6LotsLuBp7WWGa3ByyrjaM9MEYAyDwCFJ54IFeO2NzFcKpcJhyQcqWxj8yMeo9a6bStL1GylF7ZBw6gAeRIAfqrD19OpFKtTj3szpwnNN2WqPcfDGsWulyiKO68g4BKnJRe/RckH6qR6kV02p31heWr3NzpSXcRHN1abZSAepBXI+uQD7V4VHqlzdRKL+x811wPN8oofxxgA/TB46mliub+ylE+kXssNyvKrL8wJ9MkfzHbrXnqmlLc9uVJqNzq7/AETwzrN0LuwtLG6uUJAEa+XMpA6HBGePQ59sVa8B+Ko/DXiApLZmKFyFlj/iXtuweCPoea5HR9Yu9dvpxqOn/ZNQQhTLHwJlxnJB4b8STnnOOK37uFb20SR3BKkhZSMtC4xgNznB9Se/4lVtuWTuZ4da88VY+qrBrbVdNgmgk3xSICrAkqQR24/TqCKxL3Ro2kYMAT2Cg4z6D3+tZfwP1I3/AIaeKeXZLHKFKKehOM4P1yenevUbjwml0hfezseBgA/gQOteGr05NXPevFpX6nmP9mGF+QAAcAkDP/1617GzUlQCEyOCe30ro5fB7tkgEAHqVBx7Y6irWg+HANSRCAOeSF4rR1rLUXJHczbvRSLQsApDcjaQcCuE1LRyt0Qq7nORuIz+Fe4eJLRLe0ZFUYUdccdPX2rhtN8PC6vJLq8b7PbRAvJKxJIUZJ49MVpGtZXbFyc60W5x02mJpOlYIxcXGQARyqDqT+gFcjqkZcYXkdMV22v3o1G9mmRCkWAsanqqjoD7nOT7k1z01qJGzjI/+vXzlevKrU5+iP0zKcLHCUOW2r3OXi0n5slT1/OrX9l7VwBkYrfjsMc4wfWpRY8jg/nWTrSb3PWSpx6Hn2u+CF1hQwdoXXoyYJ/HNUNP+GKRujXEvmgHJ+UDOSM5/LtivUlsFJPy8VI1gPLPy46Dp710Rx1aMeVSsjiqYTC1J88oJnneu+Eo7u8sIYYcokEzFhgbACgJGO2CcD1xnpWxD8PE063cWsIO0HnA6gkHBHXv6V22mWq/8JTptsVUi5t7mM7iMcCM9D14Bra0uI3N3r0bqg+z38kcbEkfuwqgDjOSWDcDt+VfY5ZWl9VUnr/w5+N8SUof2lNRVlp+SOS+EXwu+zazcatKxQo22NffvjngV7+l0FgSKRFcrwpdQwx7ZFZvhXRjpekxo2Q7jcwB4BOSff8A/VWo8SREOzbQByc8qOo/E/1Fe7SlJq9z4+pFc1gxZXS7JLCISkfLJbqEbPQkgcfpU1lpUkSnzrlooxyUTAI9Qew7dBWTP4pigbyoVwexGMnr1PUimx6pNNhicEngA4A+n+c+tdSknozkcWtUeiaB4rvfDCqum6jMsakE28p3xN0BJU8Z6cj86K4caj5R/vHpnGDjHeitVGHY5JRbZ6b4X1VdFd54IPKi8zMoIIWRSWGACTghhgg9CD6ilgEcN9LJbrsjdsqpAJ5AP5CuB03XXuL37PPO7RSW4SaQjCtIhGyQDsSoUnHByfrW7fayIrTdE+CIzzngADk/jxX59V/d8zb1Z9FRjztaHkf7THidL3WPDWmROQIp2nlUHlSowOB9c/hXkvjOzkuPNljVgHAEagHso6j6k/lVn4m6u9x41gmEm5oyQC38IIA/Hkk1JfO1zosFyGDBowQQc8tkEHHX5sj2OK0ow5aaZ6V0nyroeWXsY0S3leIhrh0dQwONox/MgH9a87SwcGIsN7uGDDJOWB6H6+vvXp2r2JutV1KJSCI4yisSDg+WcHH1zXJw2Bk0mZY/nmtSk4GeShAVwM+hAr1qdorzOGo23bocjfaTxHZqN8E7gKRkHPBwfQg4/KtbxuY7rXNP01spbIHM8uMKiKCTn3wBgdzWvDZ+brdkyx+dbyzCQ4PKkck/gRVLx1pAfSrkji8vpPMEgJ+SHGVB5zliMn2A9a64TTauYShdO25554fv1vX1fVUTaiK5jXH3QMBVH0BA/CorW7e4gunDYTGA5GQCOTj2xXQeAtKifw5r8U4SIPGFLKpJGZFBJz9Bmsqy8O3rXNxYSRNFFbkRtnABBOcjHByPTjBrplOKcrszo0qlTljFXbMnS9H+1SC5IbbDkx4zgg8Eg9yf6V1Wlve28g2SyjAABU5P0zXR6H4S2W6owxGp4GOOK1p9BjhU7RgkZOBj6159XFxnJrc+5wGSzhBNqxlpr97CABO8pxgseCT6AjBx9awdc164aPHmOX5JJdww78c4/wA9K1NRsHQNgEY9ua5LWI2aR8HG5SBxnk1VKMZNMWZU3QptRWpueDNfS+0RLm5nN2Q8hJlUEbcjAGeemRz7VoJrTwXiCPiHcWk+YkEN0Udc4GASc9MHIyKoaH4Qe20cE/JGQGJ9fr712/h34X6l4pmtwIWt7JVzI7KNxQHoMjjPQD8frFZ01Ju+h4OHjUcYrqey/AeynfWruVARbfai208DjgHv1GD+NfU1hYmRc4J6EAEg/WvIPg74JfS9Mkll4ldi5AUDkknH617docRWFFIBIGDk9Mda8WraT06HrO8dxJNJGMvkHsRwfrms/SdNWTU55h8yRDbknPPftWrrN6tvGqIclsgcZ/GvNvib8UovhpoawWpRtavFLRCQ8RL0MreozwBjk9ux8xv3rLU7cPRqV2oQWrOg8c3djpdq93qdzHZWan5pJyAD7AHqT6DrXl+qeOLfxHYfZtI8pdMBBYrIGeUg8biCQBnBx7DJ7V4h4l8A/FH4p+GL7xO99bT2brK9va3V5IlzeJGcOY4wCu0HIAYjJGBnANfNvh7xVrfhDUl1DRruS0l43R4JjcejoeCPyI7EV6sMrqYmk2p2Z2LG4XL6qjKPO1v5fI+3508xSDxz3HX/ADmoo7Uemeeted/DP49aR41ENhq3l6NrZwvlyN+6mPqjHjJ9Dg+xHJ9Y8njOMDgg+tfLYihVws3CqrH3WHxlPE01UoyumVFtMAcDrnpT1tgBgjiriQkkAVIIgMdz0ric2bOoyiLbJ9M9KWWILExx2zV0Q9M54HpxTZowYJAORjp6c1PMTz6oi0Swabxx4ckGRsNyCR2BhP8AUD9K2Phtbf2r4g8U7jut4dWuAd3TIKnGfTk8e5zSeFod3ivTecCNZnPPOPLK/wDs1bnwn0+Oz8PX12EYT6lqN3eszAE4MzKn/jqqcc9c+1fd5VNfU0n3PyfiJXzBy8jrbmaCBWc4ESjOTjkD0x/nivNvFvjV5blbC1JZ2PIQZIHTJP8AWtjx74iXSLCW4eTywQQeuCfp9eOnSuJ+HWivq0h1W7BaSZiUDDPBPBHp3/OvpYPljzPY+Na5pcqOr0HQmEYmnPmOQMljng4B98e1bMgW1XBHHTA6D3z3FWpGEUZCgAKPfjH6iseeUyzttHy5IAzkjv2pwk5O7HNJKyJmkklBw2FAPK9CPXPWiq5ySepGcYPQev4cfjRXYpOxxuKudFpfm+SiXex5w3l5QYB6D9OPz9qytU1x54rm2wY7e1BSRgclsdB9OBRRXwlbWTue3htEj5o8QaqdZ8XPMFKxI68k8scEEn2xjj2rpvDGoxX/AIenhUfLa3JUEjkq7lj27MrfXdmiivRSXszS/vnL36ImtXL9C7DdkZ56fzrzjTNZNr4j2MmLcSGGQA5JV+OPocGiiumkk3qY1XZGj8Pbh5/Emr6LOwJtFkdZSM7VJ24/I9qzfHGppF4khbG2K5O5VA4AUAKAO2FAH5+1FFdPKuYxUny/MqeGvC0091rcNsQtrcWpljlJA2OGD4x6YBHSu/8A+EZU6FaXsiq8ibYZJBwTgcZHfjiiivIxVWfNy3Ptspw1OCjUS1uQC6hadYIRlwMBQMDH1NSTW4KAsPTiiiuN6SVj9Hpe9DUwdXtlEROOxOa45dGGoajE3yi3jYmRyOuOeB+X5UUV61B6HxmepJL1PdvBug2WqTafYRQiS5cb90gAVFGMnHc8jivonw54Mhgs8bAqcAdCT6k+5oorzq7fMjxcOkoXO/0zT4bOABQFCjqB1NTpctFgLg85yRjt7UUVxSbSLSu9SpeTKqT3938sNvG0r7RkhQMnA79DXxb401XUviBr+oatIVjWeRvLLn7qKcKgA6AAD07elFFc8JOM00fYZJSjJTk1qe5/A7xPp2o+AUuNWjKaV4W0pk1h0LF0ELvKojUcN5rSIc87SvI6EfFt1a2+tXl/KLWO1WSd5VQEsIldztQHqcZAyfQEkcmiivrISapJo8TA4am8fXTV1f8A4In/AAp+9u5VUiI7snaWBxjse2fpx9ep1tJ+Jvjr4QzxW15HHrWjldwtrqUF0TBOVkBJHbgg9e1FFZ0ZLGS9lXSkjPPoLKYwq4L3G9z2X4f/ALQvhbx5KLOP7TpupgBntJ4iwHHJDLkY/HNeooQ0avjcrDgjj/69FFfHZvg6WExHJS20PbybGVcdhFWrb6kiorADP1/z+FNnjxE2B2H86KK+f7Hsp6ou+GQyeJIiTgraXBGeey9unTNdJ4BVU8C6HKiECa1jcjOfmYbjnJ6ndn0zRRX3eUa4aPqz8z4g/wB8l6I8l+MF3JrPirRdBjkKG7nBYdPlyPwP0J9fY16xpGnx6XYJHEAscfyKAMDAAGMenTnrRRX1Fd2jGJ8hRV+Zkd/cMqlCWB4J6Hg1RjUuQBgp9PT6/wCFFFOGiRnLqZHifxCmkxwWkY3XNw2xCwPfuT+FFFFd8djjluf/2Q==", $ = [
1269
+ {
1270
+ id: "00000000-0000-0000-0000-000000000001",
1271
+ givenName: "Adele",
1272
+ surname: "Vance",
1273
+ displayName: "Adele Vance",
1274
+ mail: "adelev@contoso.com",
1275
+ userPrincipalName: "adelev@contoso.com",
1276
+ jobTitle: "Product Manager",
1277
+ department: "Marketing"
1278
+ },
1279
+ {
1280
+ id: "00000000-0000-0000-0000-000000000002",
1281
+ givenName: "Alex",
1282
+ surname: "Wilber",
1283
+ displayName: "Alex Wilber",
1284
+ mail: "alexw@contoso.com",
1285
+ userPrincipalName: "alexw@contoso.com",
1286
+ jobTitle: "Marketing Assistant",
1287
+ department: "Marketing"
1288
+ },
1289
+ {
1290
+ id: "00000000-0000-0000-0000-000000000003",
1291
+ givenName: "Diego",
1292
+ surname: "Siciliani",
1293
+ displayName: "Diego Siciliani",
1294
+ mail: "diegosi@contoso.com",
1295
+ userPrincipalName: "diegosi@contoso.com",
1296
+ jobTitle: "HR Manager",
1297
+ department: "Human Resources"
1298
+ },
1299
+ {
1300
+ id: "00000000-0000-0000-0000-000000000004",
1301
+ givenName: "Grady",
1302
+ surname: "Archie",
1303
+ displayName: "Grady Archie",
1304
+ mail: "gradya@contoso.com",
1305
+ userPrincipalName: "gradya@contoso.com",
1306
+ jobTitle: "Accountant",
1307
+ department: "Finance"
1308
+ },
1309
+ {
1310
+ id: "00000000-0000-0000-0000-000000000005",
1311
+ givenName: "Henrietta",
1312
+ surname: "Mueller",
1313
+ displayName: "Henrietta Mueller",
1314
+ mail: "henriettam@contoso.com",
1315
+ userPrincipalName: "henriettam@contoso.com",
1316
+ jobTitle: "Graphic Designer",
1317
+ department: "Creative"
1318
+ },
1319
+ {
1320
+ id: "00000000-0000-0000-0000-000000000006",
1321
+ givenName: "Isaiah",
1322
+ surname: "Langer",
1323
+ displayName: "Isaiah Langer",
1324
+ mail: "isaiahl@contoso.com",
1325
+ userPrincipalName: "isaiahl@contoso.com",
1326
+ jobTitle: "Sales Rep",
1327
+ department: "Sales"
1328
+ },
1329
+ {
1330
+ id: "00000000-0000-0000-0000-000000000007",
1331
+ givenName: "Johanna",
1332
+ surname: "Lorenz",
1333
+ displayName: "Johanna Lorenz",
1334
+ mail: "johannal@contoso.com",
1335
+ userPrincipalName: "johannal@contoso.com",
1336
+ jobTitle: "Research Lead",
1337
+ department: "R&D"
1338
+ },
1339
+ {
1340
+ id: "00000000-0000-0000-0000-000000000008",
1341
+ givenName: "Joni",
1342
+ surname: "Sherman",
1343
+ displayName: "Joni Sherman",
1344
+ mail: "jonis@contoso.com",
1345
+ userPrincipalName: "jonis@contoso.com",
1346
+ jobTitle: "Paralegal",
1347
+ department: "Legal"
1348
+ },
1349
+ {
1350
+ id: "00000000-0000-0000-0000-000000000009",
1351
+ givenName: "Lee",
1352
+ surname: "Gu",
1353
+ displayName: "Lee Gu",
1354
+ mail: "leeg@contoso.com",
1355
+ userPrincipalName: "leeg@contoso.com",
1356
+ jobTitle: "Director",
1357
+ department: "Engineering"
1358
+ },
1359
+ {
1360
+ id: "00000000-0000-0000-0000-000000000010",
1361
+ givenName: "Megan",
1362
+ surname: "Bowen",
1363
+ displayName: "Megan Bowen",
1364
+ mail: "meganb@contoso.com",
1365
+ userPrincipalName: "meganb@contoso.com",
1366
+ jobTitle: "Marketing Manager",
1367
+ department: "Marketing"
1368
+ }
1369
+ ].map((e) => ({
1370
+ ...e,
1371
+ photoUrl: hn
1372
+ })), gn = class {
1373
+ state = "SignedOut";
1374
+ listeners = [];
1375
+ constructor(e) {
1376
+ e?.autoSignIn && (this.state = "SignedIn");
1377
+ }
1378
+ getAccessToken() {
1379
+ return this.state === "SignedIn" ? Promise.resolve("mock-token") : Promise.reject(/* @__PURE__ */ Error("Not signed in"));
1380
+ }
1381
+ async getPersonData(e) {
1382
+ let t = e.identifier?.trim(), n = t?.toLowerCase(), r = n && n !== "me" ? $.find((e) => e.id.toLowerCase() === n || e.mail?.toLowerCase() === n || e.userPrincipalName?.toLowerCase() === n || e.displayName?.toLowerCase() === n) : $[0], i = r ?? $[0], a = r || !t || t === "me" ? i.userPrincipalName : t, o = {
1383
+ id: i.id,
1384
+ givenName: i.givenName,
1385
+ surname: i.surname,
1386
+ displayName: i.displayName,
1387
+ userPrincipalName: a,
1388
+ jobTitle: i.jobTitle,
1389
+ department: i.department,
1390
+ officeLocation: "19/3106",
1391
+ mail: i.mail
1392
+ }, s = {
1393
+ availability: "Available",
1394
+ activity: "Available",
1395
+ id: o.id,
1396
+ odataType: "#microsoft.graph.presence"
1397
+ };
1398
+ return {
1399
+ user: o,
1400
+ presence: e.fetchPresence ? s : null,
1401
+ photoUrl: e.fetchPhoto ? hn : null
1402
+ };
1403
+ }
1404
+ async searchPeople(e, t = 10) {
1405
+ let n = e.trim();
1406
+ if (!n) return $.slice(0, t);
1407
+ let r = n.toLowerCase();
1408
+ return $.filter((e) => e.displayName?.toLowerCase().includes(r) || e.mail?.toLowerCase().includes(r) || e.userPrincipalName?.toLowerCase().includes(r)).slice(0, t);
1409
+ }
1410
+ async login() {
1411
+ this.state = "SignedIn", this.emit();
1412
+ }
1413
+ async logout() {
1414
+ this.state = "SignedOut", this.emit();
1415
+ }
1416
+ getState() {
1417
+ return this.state;
1418
+ }
1419
+ onStateChanged(e) {
1420
+ this.listeners.push(e);
1421
+ }
1422
+ removeStateChangedHandler(e) {
1423
+ this.listeners = this.listeners.filter((t) => t !== e);
1424
+ }
1425
+ emit() {
1426
+ for (let e of this.listeners) try {
1427
+ e();
1428
+ } catch {}
1429
+ }
1430
+ }, _n = () => new gn({ autoSignIn: !0 });
1431
+ //#endregion
1432
+ //#region node_modules/@azure/msal-common/dist-browser/error/AuthError.mjs
1433
+ function vn(e) {
1434
+ return `See https://aka.ms/msal.js.errors#${e} for details`;
1435
+ }
1436
+ var yn = class e extends Error {
1437
+ constructor(t, n, r) {
1438
+ let i = n || (t ? vn(t) : ""), a = i ? `${t}: ${i}` : t;
1439
+ super(a), Object.setPrototypeOf(this, e.prototype), this.errorCode = t || "", this.errorMessage = i || "", this.subError = r || "", this.name = "AuthError";
1440
+ }
1441
+ setCorrelationId(e) {
1442
+ this.correlationId = e;
1443
+ }
1444
+ }, bn = class e extends yn {
1445
+ constructor(t, n, r, i, a, o, s, c) {
1446
+ super(t, n, r), Object.setPrototypeOf(this, e.prototype), this.timestamp = i || "", this.traceId = a || "", this.correlationId = o || "", this.claims = s || "", this.name = "InteractionRequiredAuthError", this.errorNo = c;
1447
+ }
1448
+ }, xn = class extends Error {
1449
+ constructor(e) {
1450
+ super(e), this.name = "RedirectInProgressError";
1451
+ }
1452
+ }, Sn = class {
1453
+ msalInstance;
1454
+ defaultScopes;
1455
+ account = null;
1456
+ state = "Loading";
1457
+ listeners = [];
1458
+ constructor(e, t) {
1459
+ this.msalInstance = e, this.defaultScopes = t;
1460
+ }
1461
+ async initialize() {
1462
+ await this.msalInstance.initialize();
1463
+ let e = await this.msalInstance.handleRedirectPromise();
1464
+ if (e?.account) {
1465
+ this.account = e.account, this.msalInstance.setActiveAccount(this.account), this.setState("SignedIn");
1466
+ return;
1467
+ }
1468
+ let t = this.msalInstance.getActiveAccount(), n = this.msalInstance.getAllAccounts();
1469
+ this.account = t ?? n[0] ?? null, this.account ? (this.msalInstance.setActiveAccount(this.account), this.setState("SignedIn")) : this.setState("SignedOut");
1470
+ }
1471
+ async login() {
1472
+ let e = { scopes: this.defaultScopes };
1473
+ await this.msalInstance.loginRedirect(e);
1474
+ }
1475
+ async logout() {
1476
+ let e = this.msalInstance.getActiveAccount() ?? this.account ?? void 0;
1477
+ this.account = null, this.msalInstance.setActiveAccount(null), this.setState("SignedOut"), await this.msalInstance.logoutRedirect({ account: e });
1478
+ }
1479
+ async getAccessToken(e) {
1480
+ let t = e && e.length > 0 ? e : this.defaultScopes, n = this.msalInstance.getActiveAccount() ?? this.account;
1481
+ if (!n) throw Error("No active account. User must sign in first.");
1482
+ let r = {
1483
+ scopes: t,
1484
+ account: n
1485
+ };
1486
+ try {
1487
+ return (await this.msalInstance.acquireTokenSilent(r)).accessToken;
1488
+ } catch (e) {
1489
+ if (e instanceof bn) {
1490
+ let e = {
1491
+ scopes: t,
1492
+ account: n
1493
+ };
1494
+ throw await this.msalInstance.acquireTokenRedirect(e), new xn("Redirecting for interactive token acquisition.");
1495
+ }
1496
+ throw e;
1497
+ }
1498
+ }
1499
+ getState() {
1500
+ return this.state;
1501
+ }
1502
+ onStateChanged(e) {
1503
+ this.listeners.push(e);
1504
+ }
1505
+ removeStateChangedHandler(e) {
1506
+ this.listeners = this.listeners.filter((t) => t !== e);
1507
+ }
1508
+ setState(e) {
1509
+ this.state = e, this.emit();
1510
+ }
1511
+ emit() {
1512
+ for (let e of this.listeners) try {
1513
+ e();
1514
+ } catch {}
1515
+ }
1516
+ }, Cn = 6e4;
1517
+ function wn(e) {
1518
+ let t = e.fetchFn ?? fetch;
1519
+ return async ({ ssoToken: n, scopes: r }) => {
1520
+ let i = await t(e.endpoint, {
1521
+ method: "POST",
1522
+ headers: {
1523
+ Authorization: `Bearer ${n}`,
1524
+ "Content-Type": "application/json"
1525
+ },
1526
+ body: JSON.stringify({ scopes: r })
1527
+ }), a = await i.json().catch(() => ({ error: i.statusText || "Token exchange failed" }));
1528
+ if (!i.ok) {
1529
+ let e = a?.error || a?.message || i.statusText;
1530
+ throw Error(`Backend token exchange failed: ${e}`);
1531
+ }
1532
+ if (!a?.accessToken) throw Error("Backend token exchange response did not include accessToken.");
1533
+ return {
1534
+ accessToken: a.accessToken,
1535
+ expiresAt: a.expiresAt
1536
+ };
1537
+ };
1538
+ }
1539
+ var Tn = class {
1540
+ defaultScopes;
1541
+ getTeamsSsoTokenFn;
1542
+ exchangeForGraphTokenFn;
1543
+ refreshSkewMs;
1544
+ state = "SignedOut";
1545
+ listeners = [];
1546
+ tokenCache = /* @__PURE__ */ new Map();
1547
+ constructor(e) {
1548
+ if (!e.defaultScopes || e.defaultScopes.length === 0) throw Error("TeamsHostedProvider requires at least one default scope.");
1549
+ this.defaultScopes = [...new Set(e.defaultScopes)], this.getTeamsSsoTokenFn = e.getTeamsSsoToken, this.exchangeForGraphTokenFn = e.exchangeForGraphToken, this.refreshSkewMs = e.refreshSkewMs ?? Cn;
1550
+ }
1551
+ async login() {
1552
+ try {
1553
+ await this.getAccessToken(), this.setState("SignedIn");
1554
+ } catch (e) {
1555
+ throw this.clearCache(), this.setState("SignedOut"), e;
1556
+ }
1557
+ }
1558
+ async logout() {
1559
+ this.clearCache(), this.setState("SignedOut");
1560
+ }
1561
+ async getAccessToken(e) {
1562
+ let t = this.normalizeScopes(e), n = this.buildScopeKey(t), r = this.tokenCache.get(n);
1563
+ if (r && this.isTokenValid(r)) return r.accessToken;
1564
+ let i = await this.getTeamsSsoTokenFn(t);
1565
+ if (!i) throw Error("Teams SSO token acquisition returned empty token.");
1566
+ let a = await this.exchangeForGraphTokenFn({
1567
+ ssoToken: i,
1568
+ scopes: t
1569
+ }), o = this.normalizeExchangedToken(a);
1570
+ return this.tokenCache.set(n, o), this.setState("SignedIn"), o.accessToken;
1571
+ }
1572
+ getState() {
1573
+ return this.state;
1574
+ }
1575
+ onStateChanged(e) {
1576
+ this.listeners.push(e);
1577
+ }
1578
+ removeStateChangedHandler(e) {
1579
+ this.listeners = this.listeners.filter((t) => t !== e);
1580
+ }
1581
+ normalizeScopes(e) {
1582
+ let t = e && e.length > 0 ? e : this.defaultScopes, n = [...new Set(t.filter(Boolean))];
1583
+ if (n.length === 0) throw Error("At least one scope is required to request a Graph token.");
1584
+ return n;
1585
+ }
1586
+ buildScopeKey(e) {
1587
+ return [...e].sort().join(" ");
1588
+ }
1589
+ isTokenValid(e) {
1590
+ return e.expiresAtMs ? Date.now() + this.refreshSkewMs < e.expiresAtMs : !0;
1591
+ }
1592
+ normalizeExchangedToken(e) {
1593
+ if (typeof e == "string") {
1594
+ if (!e) throw Error("Graph token exchange returned empty access token.");
1595
+ return { accessToken: e };
1596
+ }
1597
+ if (!e.accessToken) throw Error("Graph token exchange returned empty access token.");
1598
+ return {
1599
+ accessToken: e.accessToken,
1600
+ expiresAtMs: this.toEpochMs(e.expiresAt)
1601
+ };
1602
+ }
1603
+ toEpochMs(e) {
1604
+ if (e) return e instanceof Date ? e.getTime() : e;
1605
+ }
1606
+ clearCache() {
1607
+ this.tokenCache.clear();
1608
+ }
1609
+ setState(e) {
1610
+ this.state !== e && (this.state = e, this.emit());
1611
+ }
1612
+ emit() {
1613
+ for (let e of this.listeners) try {
1614
+ e();
1615
+ } catch {}
1616
+ }
632
1617
  };
1618
+ //#endregion
1619
+ export { L as GraphProvider, gn as MockProvider, Sn as MsalBrowserProvider, We as People, mn as PeoplePicker, Se as Person, xn as RedirectInProgressError, Tn as TeamsHostedProvider, wn as createBackendTokenExchange, _n as createMockSignedInProvider, W as isPeopleSearchProvider, U as isPersonDataProvider, H as useGraphClient, Re as usePeopleList, an as usePeopleSearch, ie as usePersonCacheOptions, ce as usePersonData, R as useProvider, z as useProviderState };